Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def fuse_wheels(to_wheel, from_wheel, out_wheel):
""" Fuse `from_wheel` into `to_wheel`, write to `out_wheel`
Parameters
---------
to_wheel : str
filename of wheel to fuse into
from_wheel : str
filename of wheel to fuse from
out_wheel : str
filename of new wheel from fusion of `to_wheel` and `from_wheel`
"""
to_wheel, from_wheel, out_wheel = [
abspath(w) for w in (to_wheel, from_wheel, out_wheel)]
with InTemporaryDirectory():
zip2dir(to_wheel, 'to_wheel')
zip2dir(from_wheel, 'from_wheel')
fuse_trees('to_wheel', 'from_wheel')
rewrite_record('to_wheel')
dir2zip('to_wheel', out_wheel)
relative_path = relpath(path, bdist_dir)
if skip(relative_path):
hash = ''
size = ''
else:
with open(path, 'rb') as f:
data = f.read()
digest = hashlib.sha256(data).digest()
hash = 'sha256=' + native(urlsafe_b64encode(digest))
size = len(data)
path_for_record = relpath(
path, bdist_dir).replace(psep, '/')
writer.writerow((path_for_record, hash, size))
class InWheel(InTemporaryDirectory):
""" Context manager for doing things inside wheels
On entering, you'll find yourself in the root tree of the wheel. If you've
asked for an output wheel, then on exit we'll rewrite the wheel record and
pack stuff up for you.
"""
def __init__(self, in_wheel, out_wheel=None, ret_self=False):
""" Initialize in-wheel context manager
Parameters
----------
in_wheel : str
filename of wheel to unpack and work inside
out_wheel : None or str:
filename of wheel to write after exiting. If None, don't write and
discard
def __enter__(self):
self._pwd = os.getcwd()
os.chdir(self.name)
return super(InTemporaryDirectory, self).__enter__()