Source code for skbuild.command.bdist_wheel
"""This module defines custom implementation of ``bdist_wheel`` setuptools
command."""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
from wheel.wheelfile import WheelFile
else:
try:
from setuptools.command.bdist_wheel import WheelFile # type: ignore[attr-defined]
from setuptools.command.bdist_wheel import bdist_wheel as _bdist_wheel
except ImportError:
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
from wheel.wheelfile import WheelFile
from .._version import version as skbuild_version
from ..utils import distribution_hide_listing
from . import set_build_base_mixin
[docs]
class bdist_wheel(set_build_base_mixin, _bdist_wheel): # type: ignore[misc]
"""Custom implementation of ``bdist_wheel`` setuptools command."""
[docs]
def run(self, *args: object, **kwargs: object) -> None:
"""Handle --hide-listing option."""
old_write_files = WheelFile.write_files
def update_write_files(wheelfile_self: bdist_wheel, base_dir: str) -> None:
with distribution_hide_listing(self.distribution) as hide_listing:
if hide_listing:
zip_filename = wheelfile_self.filename
print(f"creating {zip_filename!r} and adding {base_dir!r} to it", flush=True)
old_write_files(wheelfile_self, base_dir)
WheelFile.distribution = self.distribution
WheelFile.write_files = update_write_files
try:
super().run(*args, **kwargs)
finally:
WheelFile.write_files = old_write_files
del WheelFile.distribution
[docs]
def write_wheelfile(self, wheelfile_base: str, _: None = None) -> None:
"""Write ``skbuild <version>`` as a wheel generator.
See `PEP-0427 <https://www.python.org/dev/peps/pep-0427/#file-contents>`_ for more details.
"""
generator = f"skbuild {skbuild_version}"
super().write_wheelfile(wheelfile_base, generator)