mirror of
https://github.com/kristoferssolo/School.git
synced 2025-10-21 20:10:38 +00:00
95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
import os
|
|
import warnings
|
|
|
|
import setuptools
|
|
|
|
from . import _get_version
|
|
from .config import _read_dist_name_from_setup_cfg
|
|
from .config import Configuration
|
|
from .utils import do
|
|
from .utils import iter_entry_points
|
|
from .utils import trace
|
|
|
|
|
|
def _warn_on_old_setuptools(_version=setuptools.__version__):
|
|
if int(_version.split(".")[0]) < 45:
|
|
warnings.warn(
|
|
RuntimeWarning(
|
|
f"""
|
|
ERROR: setuptools=={_version} is used in combination with setuptools_scm>=6.x
|
|
|
|
Your build configuration is incomplete and previously worked by accident!
|
|
|
|
|
|
This happens as setuptools is unable to replace itself when a activated build dependency
|
|
requires a more recent setuptools version
|
|
(it does not respect "setuptools>X" in setup_requires).
|
|
|
|
|
|
setuptools>=31 is required for setup.cfg metadata support
|
|
setuptools>=42 is required for pyproject.toml configuration support
|
|
|
|
Suggested workarounds if applicable:
|
|
- preinstalling build dependencies like setuptools_scm before running setup.py
|
|
- installing setuptools_scm using the system package manager to ensure consistency
|
|
- migrating from the deprecated setup_requires mechanism to pep517/518
|
|
and using a pyproject.toml to declare build dependencies
|
|
which are reliably pre-installed before running the build tools
|
|
"""
|
|
)
|
|
)
|
|
|
|
|
|
_warn_on_old_setuptools()
|
|
|
|
|
|
def version_keyword(dist: setuptools.Distribution, keyword, value):
|
|
if not value:
|
|
return
|
|
if value is True:
|
|
value = {}
|
|
if getattr(value, "__call__", None):
|
|
value = value()
|
|
assert (
|
|
"dist_name" not in value
|
|
), "dist_name may not be specified in the setup keyword "
|
|
|
|
trace(
|
|
"version keyword",
|
|
vars(dist.metadata),
|
|
)
|
|
dist_name = dist.metadata.name # type: str | None
|
|
if dist_name is None:
|
|
dist_name = _read_dist_name_from_setup_cfg()
|
|
config = Configuration(dist_name=dist_name, **value)
|
|
dist.metadata.version = _get_version(config)
|
|
|
|
|
|
def find_files(path=""):
|
|
for ep in iter_entry_points("setuptools_scm.files_command"):
|
|
command = ep.load()
|
|
if isinstance(command, str):
|
|
# this technique is deprecated
|
|
res = do(ep.load(), path or ".").splitlines()
|
|
else:
|
|
res = command(path)
|
|
if res:
|
|
return res
|
|
return []
|
|
|
|
|
|
def infer_version(dist: setuptools.Distribution):
|
|
trace(
|
|
"finalize hook",
|
|
vars(dist.metadata),
|
|
)
|
|
dist_name = dist.metadata.name
|
|
if not os.path.isfile("pyproject.toml"):
|
|
return
|
|
try:
|
|
config = Configuration.from_file(dist_name=dist_name)
|
|
except LookupError as e:
|
|
trace(e)
|
|
else:
|
|
dist.metadata.version = _get_version(config)
|