MCPcopy
hub / github.com/django/django / extract

Method extract

django/utils/archive.py:174–204  ·  view source on GitHub ↗
(self, to_path)

Source from the content-addressed store, hash-verified

172 self._archive.list(*args, **kwargs)
173
174 def extract(self, to_path):
175 members = self._archive.getmembers()
176 leading = self.has_leading_dir(x.name for x in members)
177 for member in members:
178 name = member.name
179 if leading:
180 name = self.split_leading_dir(name)[1]
181 filename = self.target_filename(to_path, name)
182 if member.isdir():
183 if filename:
184 os.makedirs(filename, exist_ok=True)
185 else:
186 try:
187 extracted = self._archive.extractfile(member)
188 except (KeyError, AttributeError) as exc:
189 # Some corrupt tar files seem to produce this
190 # (specifically bad symlinks)
191 print(
192 "In the tar file %s the member %s is invalid: %s"
193 % (name, member.name, exc)
194 )
195 else:
196 dirname = os.path.dirname(filename)
197 if dirname:
198 os.makedirs(dirname, exist_ok=True)
199 with open(filename, "wb") as outfile:
200 shutil.copyfileobj(extracted, outfile)
201 self._copy_permissions(member.mode, filename)
202 finally:
203 if extracted:
204 extracted.close()
205
206 def close(self):
207 self._archive.close()

Callers

nothing calls this directly

Calls 5

has_leading_dirMethod · 0.80
split_leading_dirMethod · 0.80
target_filenameMethod · 0.80
_copy_permissionsMethod · 0.80
closeMethod · 0.45

Tested by

no test coverage detected