Skip to content

Commit

Permalink
fix setup.py (#221)
Browse files Browse the repository at this point in the history
  • Loading branch information
JarryShaw committed Nov 3, 2024
1 parent b95378d commit 3fd7d10
Showing 1 changed file with 105 additions and 64 deletions.
169 changes: 105 additions & 64 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,134 +7,175 @@
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from typing import Any
from distutils.cmd import Command
from typing import Any, Type

if sys.version_info[0] <= 2:
raise OSError("PyPCAPKit does not support Python 2!")

try:
from setuptools import setup
from setuptools.command.bdist_wheel import bdist_wheel
from setuptools.command.build_py import build_py
from setuptools.command.develop import develop
from setuptools.command.install import install
from setuptools.command.sdist import sdist
except ImportError:
raise ImportError("setuptools is required to install PyPCAPKit!")

# get logger
logger = logging.getLogger('pcapkit.setup')
formatter = logging.Formatter(fmt='[%(levelname)s] %(asctime)s - %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p')
logger = logging.getLogger("pcapkit.setup")
formatter = logging.Formatter(
fmt="[%(levelname)s] %(asctime)s - %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p"
)
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(formatter)
logger.addHandler(handler)


def get_long_description() -> 'str':
def get_long_description() -> "str":
"""Extract description from README.rst, for PyPI's usage."""
with open('README.rst', encoding='utf-8') as file:
with open("README.rst", encoding="utf-8") as file:
long_description = file.read()
return long_description


def refactor(path: 'str') -> 'None':
def refactor(path: "str") -> "None":
"""Refactor code."""
import subprocess # nosec: B404

if sys.version_info < (3, 6):
try:
subprocess.check_call( # nosec
[sys.executable, '-m', 'f2format', '--no-archive', path]
[sys.executable, "-m", "f2format", "--no-archive", path]
)
except subprocess.CalledProcessError as error:
logger.error('Failed to perform assignment expression backport compiling. '
'Please consider manually install `bpc-f2format` and try again.')
logger.error(
"Failed to perform assignment expression backport compiling. "
"Please consider manually install `bpc-f2format` and try again."
)
sys.exit(error.returncode)

if sys.version_info < (3, 8):
try:
subprocess.check_call( # nosec
[sys.executable, '-m', 'walrus', '--no-archive', path]
[sys.executable, "-m", "walrus", "--no-archive", path]
)
except subprocess.CalledProcessError as error:
logger.error('Failed to perform assignment expression backport compiling. '
'Please consider manually install `bpc-walrus` and try again.')
logger.error(
"Failed to perform assignment expression backport compiling. "
"Please consider manually install `bpc-walrus` and try again."
)
sys.exit(error.returncode)

try:
subprocess.check_call( # nosec
[sys.executable, '-m', 'poseur', '--no-archive', path]
[sys.executable, "-m", "poseur", "--no-archive", path]
)
except subprocess.CalledProcessError as error:
logger.error('Failed to perform assignment expression backport compiling. '
'Please consider manually install `bpc-poseur` and try again.')
logger.error(
"Failed to perform assignment expression backport compiling. "
"Please consider manually install `bpc-poseur` and try again."
)
sys.exit(error.returncode)


class pcapkit_sdist(sdist):
"""Modified sdist to run PyBPC conversion."""
cmdclass = {} # type: dict[str, Type[Command]]

try:
from setuptools.command.sdist import sdist

class pcapkit_sdist(sdist):
"""Modified sdist to run PyBPC conversion."""

def make_release_tree(
self, base_dir: "str", *args: "Any", **kwargs: "Any"
) -> "None":
super(pcapkit_sdist, self).make_release_tree(base_dir, *args, **kwargs)
logger.info("running sdist")

# PyBPC compatibility enforcement
refactor(os.path.join(base_dir, "pcapkit"))

def make_release_tree(self, base_dir: 'str', *args: 'Any', **kwargs: 'Any') -> 'None':
super(pcapkit_sdist, self).make_release_tree(base_dir, *args, **kwargs)
logger.info('running sdist')
cmdclass["sdist"] = pcapkit_sdist
except ImportError:
logger.warning(
"setuptools version is too old to support PyBPC conversion in sdist."
)

# PyBPC compatibility enforcement
refactor(os.path.join(base_dir, 'pcapkit'))
try:
from setuptools.command.build_py import build_py

class pcapkit_build_py(build_py):
"""Modified build_py to run PyBPC conversion."""

class pcapkit_build_py(build_py):
"""Modified build_py to run PyBPC conversion."""
def build_package_data(self) -> "None":
super(pcapkit_build_py, self).build_package_data()
logger.info("running build_py")

def build_package_data(self) -> 'None':
super(pcapkit_build_py, self).build_package_data()
logger.info('running build_py')
# PyBPC compatibility enforcement
refactor(os.path.join(self.build_lib, "pcapkit"))

# PyBPC compatibility enforcement
refactor(os.path.join(self.build_lib, 'pcapkit'))
cmdclass["build_py"] = pcapkit_build_py
except ImportError:
logger.warning(
"setuptools version is too old to support PyBPC conversion in build_py."
)

try:
from setuptools.command.develop import develop

class pcapkit_develop(develop):
"""Modified develop to run PyBPC conversion."""
class pcapkit_develop(develop):
"""Modified develop to run PyBPC conversion."""

def run(self) -> 'None': # type: ignore[override]
super(pcapkit_develop, self).run()
logger.info('running develop')
def run(self) -> "None": # type: ignore[override]
super(pcapkit_develop, self).run()
logger.info("running develop")

# PyBPC compatibility enforcement
refactor(os.path.join(self.install_lib, 'pcapkit'))
# PyBPC compatibility enforcement
refactor(os.path.join(self.install_lib, "pcapkit"))

cmdclass["develop"] = pcapkit_develop
except ImportError:
logger.warning(
"setuptools version is too old to support PyBPC conversion in develop."
)

class pcapkit_install(install):
"""Modified install to run PyBPC conversion."""
try:
from setuptools.command.install import install

def run(self) -> 'None':
super(pcapkit_install, self).run()
logger.info('running install')
class pcapkit_install(install):
"""Modified install to run PyBPC conversion."""

# PyBPC compatibility enforcement
refactor(os.path.join(self.install_lib, 'pcapkit')) # type: ignore[arg-type]
def run(self) -> "None":
super(pcapkit_install, self).run()
logger.info("running install")

# PyBPC compatibility enforcement
refactor(os.path.join(self.install_lib, "pcapkit")) # type: ignore[arg-type]

class pcapkit_bdist_wheel(bdist_wheel):
"""Modified bdist_wheel to run PyBPC conversion."""
cmdclass["install"] = pcapkit_install
except ImportError:
logger.warning(
"setuptools version is too old to support PyBPC conversion in install."
)

def run(self) -> 'None':
super(pcapkit_bdist_wheel, self).run()
logger.info('running bdist_wheel')
try:
from setuptools.command.bdist_wheel import bdist_wheel

# PyBPC compatibility enforcement
refactor(os.path.join(self.dist_dir, 'pcapkit')) # type: ignore[arg-type]
class pcapkit_bdist_wheel(bdist_wheel):
"""Modified bdist_wheel to run PyBPC conversion."""

def run(self) -> "None":
super(pcapkit_bdist_wheel, self).run()
logger.info("running bdist_wheel")

# PyBPC compatibility enforcement
refactor(os.path.join(self.dist_dir, "pcapkit")) # type: ignore[arg-type]

cmdclass["bdist_wheel"] = pcapkit_bdist_wheel
except ImportError:
logger.warning(
"setuptools version is too old to support PyBPC conversion in bdist_wheel."
)

setup(
cmdclass={
'sdist': pcapkit_sdist,
'build_py': pcapkit_build_py,
'develop': pcapkit_develop,
'install': pcapkit_install,
'bdist_wheel': pcapkit_bdist_wheel,
},
cmdclass=cmdclass,
long_description=get_long_description(),
long_description_content_type='text/x-rst',
long_description_content_type="text/x-rst",
)

0 comments on commit 3fd7d10

Please sign in to comment.