in tools/wheelmaker.py [0:0]
def main() -> None:
arguments = parse_args()
if arguments.input_file:
input_files = [i.split(";") for i in arguments.input_file]
else:
input_files = []
if arguments.input_file_list:
for input_file in arguments.input_file_list:
with open(input_file) as _file:
input_file_list = _file.read().splitlines()
for _input_file in input_file_list:
input_files.append(_input_file.split(";"))
all_files = get_files_to_package(input_files)
# Sort the files for reproducible order in the archive.
all_files = sorted(all_files.items())
strip_prefixes = [p for p in arguments.strip_path_prefix]
if arguments.volatile_status_file and arguments.stable_status_file:
version = resolve_version_stamp(
arguments.version,
arguments.volatile_status_file,
arguments.stable_status_file,
)
else:
version = arguments.version
with WheelMaker(
name=arguments.name,
version=version,
build_tag=arguments.build_tag,
python_tag=arguments.python_tag,
abi=arguments.abi,
platform=arguments.platform,
outfile=arguments.out,
strip_path_prefixes=strip_prefixes,
) as maker:
for package_filename, real_filename in all_files:
maker.add_file(package_filename, real_filename)
maker.add_wheelfile()
description = None
if arguments.description_file:
if sys.version_info[0] == 2:
with open(arguments.description_file, "rt") as description_file:
description = description_file.read()
else:
with open(
arguments.description_file, "rt", encoding="utf-8"
) as description_file:
description = description_file.read()
extra_requires = collections.defaultdict(list)
if arguments.extra_requires:
for extra in arguments.extra_requires:
req, option = extra.rsplit(";", 1)
extra_requires[option].append(req)
classifiers = arguments.classifier or []
python_requires = arguments.python_requires or ""
requires = arguments.requires or []
extra_headers = arguments.header or []
maker.add_metadata(
extra_headers=extra_headers,
description=description,
classifiers=classifiers,
python_requires=python_requires,
requires=requires,
extra_requires=extra_requires,
)
if arguments.entry_points_file:
maker.add_file(
maker.distinfo_path("entry_points.txt"), arguments.entry_points_file
)
maker.add_recordfile()
# Since stamping may otherwise change the target name of the
# wheel, the canonical name (with stamps resolved) is written
# to a file so consumers of the wheel can easily determine
# the correct name.
arguments.name_file.write_text(maker.wheelname())