Mercurial > hgrepos > Python > libs > ConfigMix
view setup.py @ 654:0d6673d06c2c
Add support for using "tomllib" (in Python's stdlib since 3.11) and "tomli" TOML packages.
They are preferred if they are found to be installed.
But note that the declared dependency for the "toml" extra nevertheless
is the "toml" package. Because it is available for all supported Python
versions.
So use Python 3.11+ or install "tomli" manually if you want to use the
alternate packages.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 19 May 2022 22:10:59 +0200 |
| parents | 87db5a732797 |
| children | 453c6e2820d1 |
line wrap: on
line source
#!/usr/bin/env python # -*- coding: utf-8 -*- """Extra custom params: --only-pure Build a pure-Python Wheel --windows-cross-pack Pack with a pre-built Windows "_speedups.pyd". Most likely "-p win_amd64" is needed also. """ from __future__ import print_function, absolute_import import re import os import platform import shutil import sys try: from setuptools import setup except ImportError: from distutils.core import setup PROJECT_NAME = "ConfigMix" if (sys.version_info[0] < 2) or \ ((sys.version_info[0] == 2) and (sys.version_info[1] < 6)): raise ValueError("Need at least Python 2.6") pkg_root = os.path.dirname(__file__) _version_re = re.compile(br"^\s*__version__\s*=\s*(\"|')(.*)\1\s*(#.*)?$", re.MULTILINE) with open(os.path.join(pkg_root, "configmix", "__init__.py"), "rb") as vf: version = _version_re.search(vf.read()).group(2).decode("utf-8") with open(os.path.join(pkg_root, "README.txt"), "rt") as rf: long_description = rf.read() aws_requirements = [ "requests", ] yaml_requirements = [ "PyYAML>=3.0,<6", ] toml_requirements = [ "toml>=0.10", ] all_requirements = [] all_requirements.extend(aws_requirements) all_requirements.extend(yaml_requirements) all_requirements.extend(toml_requirements) cmdclass = {} ext_modules = None setup_extra_kwds = {} windows_cross_pack = False try: wcp_idx = sys.argv.index("--windows-cross-pack") except ValueError: wcp_idx = None else: del sys.argv[wcp_idx] try: pure_only_idx = sys.argv.index("--pure-only") except ValueError: pure_only_idx = None else: del sys.argv[pure_only_idx] # # Otherwise some cached package_data would be used. # But our package data differs between "standard" builds and # builds with "--windows-cross-pack". # if os.path.isdir(PROJECT_NAME + ".egg-info"): print("removing `%s.egg-info'" % (PROJECT_NAME,)) shutil.rmtree(PROJECT_NAME + ".egg-info") if pure_only_idx is None: if wcp_idx is None: # # The C-extension uses multi-phase module initialization # (PEP 489) which is PY 3.5+. # if (platform.python_implementation() == "CPython" and (sys.version_info[0] > 3 or (sys.version_info[0] == 3 and sys.version_info[1] >= 5))): # The stable API for Python 3.7+ is used if sys.version_info[0] == 3 and sys.version_info[1] < 7: py_limited_api = False else: py_limited_api = True if py_limited_api: define_macros = [("Py_LIMITED_API", "0x03070000")] else: define_macros = [] try: from setuptools import Extension except ImportError: from distutils.core import Extension ext_modules = [ Extension( name="configmix._speedups", sources=["configmix/_speedups.c"], define_macros=define_macros, py_limited_api=py_limited_api, optional=True ), ] if py_limited_api: # # Build a wheel that is properly named using the stable API # try: import wheel.bdist_wheel except ImportError: pass else: class BDistWheel(wheel.bdist_wheel.bdist_wheel): def finalize_options(self): # Synchronize this with Py_LIMITED_API self.py_limited_api = 'cp37' super().finalize_options() cmdclass["bdist_wheel"] = BDistWheel else: if not os.path.isfile("configmix/_speedups.pyd"): raise RuntimeError("no _speedups.pyd found") setup_extra_kwds["package_data"] = { "configmix": ["*.pyd"] } ext_modules = [] py_limited_api = True if py_limited_api: # # Build a wheel that is properly named using the stable API # try: import wheel.bdist_wheel except ImportError: pass else: class BDistWheel(wheel.bdist_wheel.bdist_wheel): def finalize_options(self): # # Synchronize this with Py_LIMITED_API and with the # external build of _speedups.pyd. # Also use the --plat-name (-p) for tagging the Wheel # properly (e.g. -p win_amd64). # self.py_limited_api = 'cp37' super().finalize_options() cmdclass["bdist_wheel"] = BDistWheel from setuptools.dist import Distribution # # Force a binary package. An empty ext_modules does not do this always. # Tested with wheel v0.29.0 # class BinaryDistribution(Distribution): """Distribution which always forces a binary package with platform name """ def has_ext_modules(foo): return True setup_extra_kwds["distclass"] = BinaryDistribution else: # # pure # pass if ext_modules is not None: setup_extra_kwds["ext_modules"] = ext_modules setup_extra_kwds["zip_safe"] = False else: setup_extra_kwds["zip_safe"] = True if cmdclass: setup_extra_kwds["cmdclass"] = cmdclass setup( name=PROJECT_NAME, version=version, author="Franz Glasner", license='BSD 3-Clause "New" or "Revised" License', url="https://pypi.dom66.de/simple/configmix/", description="Library for extended configuration files", long_description=long_description, long_description_content_type="text/x-rst", packages=["configmix", "configmix.extras"], # # Use non-automatic explicit package_data instead # (or MANIFEST.in for sdist) # include_package_data=False, platforms="any", classifiers=[ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], python_requires=">=2.6", extras_require={ "aws": aws_requirements, # noqa: E241 "toml": toml_requirements, "yaml": yaml_requirements, "all": all_requirements, # noqa: E241 }, tests_require=all_requirements, **setup_extra_kwds )
