Going further:
* _code_to_hash_pyc takes a code object in (not the source code itself) https://github.com/python/cpython/blob/843c27765652e2322011fb3e5d88f4837de38c06/Lib/importlib/_bootstrap_external.py#L608-L616
* MAGIC_NUMBER is the same across different invocations and other transformations are static;
* _code_to_hash_pyc uses `marshal` to dump bytes of a code object and those bytes contain a dynamic tmp path: data.extend(marshal.dumps(code))
(Pdb) '/tmp/pip-unpacked-wheel-' in str(marshal.dumps(code)) True
(Pdb) marshal.dumps(code) b'\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00@\x00\x00\x00s\x84\x01\x00\x00d\x00Z\x00d\x01d\x02l\x01m\x02Z\x02\x01\x00d\x01d\x03l\x03m\x04Z\x04m\x05Z\x05\x01\x00d\x01d\x04l\x06m\x07Z\x07\x01\x00d\x01d\x05l\x08m\tZ\t\x01\x00d\x01d\x06l\nZ\nd\x01d\x06l\x0bZ\x0bd\x01d\x06l\x0cZ\x0cd\x01d\x06l\rZ\rd\x01d\x06l\x0eZ\x0ed\x01d\x06l\x0fZ\x0fd\x01d\x07l\x10m\x11Z\x11\x01\x00d\x01d\x08l\x12m\x13Z\x13m\x14Z\x14m\x15Z\x15\x01\x00d\x01d\tl\x12m\x16Z\x16\x01\x00d\x01d\nl\x17m\x18Z\x18\x01\x00d\x01d\x0bl\x19m\x1aZ\x1am\x1bZ\x1b\x01\x00z\x1cd\x01d\x0cl\x1cm\x1dZ\x1dm\x1eZ\x1e\x01\x00d\rd\x0e\x84\x00Z\x1fW\x00n,\x04\x00e k\nr\xf8\x01\x00\x01\x00\x01\x00d\x01d\x0fl!m"Z"m\x1eZ\x1e\x01\x00d\x10d\x0e\x84\x00Z\x1fY\x00n\x02X\x00d\x11d\x12\x84\x00Z#d\x13d\x14\x84\x00Z$d\x15d\x16\x84\x00Z%G\x00d\x17d\x18\x84\x00d\x18e\x1a\x83\x03Z&e\'\xa0(d\x19\xa0)\xa1\x00\xa1\x01Z*d\x1ad\x1b\x84\x00Z+d\x1cd\x1d\x84\x00Z,d\x1ed\x1f\x84\x00Z-d d!d"\x9c\x02Z.d#d$\x84\x00Z/d%d&\x84\x00Z0d\'d(\x84\x00Z1d)d*d+d,g\x04Z2d1d/d0\x84\x01Z3d\x06S\x00)2z6setuptools.command.bdist_egg\n\nBuild .egg distributions\xe9\x00\x00\x00\x00)\x01\xda\x13DistutilsSetupError)\x02\xda\x0bremove_tree\xda\x06mkpath)\x01\xda\x03log)\x01\xda\x08CodeTypeN)\x01\xda\x03six)\x03\xda\x12get_build_platform\xda\x0cDistribution\xda\x10ensure_directory)\x01\xda\nEntryPoint)\x01\xda\x07Library)\x02\xda\x07Command\xda\x1cSetuptoolsDeprecationWarning)\x02\xda\x08get_path\xda\x12get_python_versionc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00C\x00\x00\x00s\x08\x00\x00\x00t\x00d\x01\x83\x01S\x00)\x02N\xda\x07purelib)\x01r\x0f\x00\x00\x00\xa9\x00r\x12\x00\x00\x00r\x12\x00\x00\x00\xfa@/tmp/pip-unpacked-wheel-1fei0ikx/setuptools/command/bdist_egg.py # ...
This is where the variability in contents is coming from.
Going further:
* _code_to_hash_pyc takes a code object in (not the source code itself) /github. com/python/ cpython/ blob/843c277656 52e2322011fb3e5 d88f4837de38c06 /Lib/importlib/ _bootstrap_ external. py#L608- L616
https:/
* MAGIC_NUMBER is the same across different invocations and other transformations are static;
* _code_to_hash_pyc uses `marshal` to dump bytes of a code object and those bytes contain a dynamic tmp path: extend( marshal. dumps(code) )
data.
(Pdb) '/tmp/pip- unpacked- wheel-' in str(marshal. dumps(code) )
True
(Pdb) marshal.dumps(code) x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x08\x00\ x00\x00@ \x00\x00\ x00s\x84\ x01\x00\ x00d\x00Z\ x00d\x01d\ x02l\x01m\ x02Z\x02\ x01\x00d\ x01d\x03l\ x03m\x04Z\ x04m\x05Z\ x05\x01\ x00d\x01d\ x04l\x06m\ x07Z\x07\ x01\x00d\ x01d\x05l\ x08m\tZ\ t\x01\x00d\ x01d\x06l\ nZ\nd\x01d\ x06l\x0bZ\ x0bd\x01d\ x06l\x0cZ\ x0cd\x01d\ x06l\rZ\ rd\x01d\ x06l\x0eZ\ x0ed\x01d\ x06l\x0fZ\ x0fd\x01d\ x07l\x10m\ x11Z\x11\ x01\x00d\ x01d\x08l\ x12m\x13Z\ x13m\x14Z\ x14m\x15Z\ x15\x01\ x00d\x01d\ tl\x12m\ x16Z\x16\ x01\x00d\ x01d\nl\ x17m\x18Z\ x18\x01\ x00d\x01d\ x0bl\x19m\ x1aZ\x1am\ x1bZ\x1b\ x01\x00z\ x1cd\x01d\ x0cl\x1cm\ x1dZ\x1dm\ x1eZ\x1e\ x01\x00d\ rd\x0e\ x84\x00Z\ x1fW\x00n, \x04\x00e k\nr\xf8\ x01\x00\ x01\x00\ x01\x00d\ x01d\x0fl! m"Z"m\x1eZ\ x1e\x01\ x00d\x10d\ x0e\x84\ x00Z\x1fY\ x00n\x02X\ x00d\x11d\ x12\x84\ x00Z#d\ x13d\x14\ x84\x00Z$ d\x15d\ x16\x84\ x00Z%G\ x00d\x17d\ x18\x84\ x00d\x18e\ x1a\x83\ x03Z&e\ '\xa0(d\ x19\xa0) \xa1\x00\ xa1\x01Z* d\x1ad\ x1b\x84\ x00Z+d\ x1cd\x1d\ x84\x00Z, d\x1ed\ x1f\x84\ x00Z-d d!d"\x9c\ x02Z.d# d$\x84\ x00Z/d% d&\x84\ x00Z0d\ 'd(\x84\ x00Z1d) d*d+d,g\ x04Z2d1d/ d0\x84\ x01Z3d\ x06S\x00) 2z6setuptools. command. bdist_egg\ n\nBuild .egg distributions\ xe9\x00\ x00\x00\ x00)\x01\ xda\x13Distutil sSetupError) \x02\xda\ x0bremove_ tree\xda\ x06mkpath) \x01\xda\ x03log) \x01\xda\ x08CodeTypeN) \x01\xda\ x03six) \x03\xda\ x12get_ build_platform\ xda\x0cDistribu tion\xda\ x10ensure_ directory) \x01\xda\ nEntryPoint) \x01\xda\ x07Library) \x02\xda\ x07Command\ xda\x1cSetuptoo lsDeprecationWa rning)\ x02\xda\ x08get_ path\xda\ x12get_ python_ versionc\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x02\x00\ x00\x00C\ x00\x00\ x00s\x08\ x00\x00\ x00t\x00d\ x01\x83\ x01S\x00) \x02N\xda\ x07purelib) \x01r\x0f\ x00\x00\ x00\xa9\ x00r\x12\ x00\x00\ x00r\x12\ x00\x00\ x00\xfa@ /tmp/pip- unpacked- wheel-1fei0ikx/ setuptools/ command/ bdist_egg. py
b'\xe3\
# ...
This is where the variability in contents is coming from.