diff options
| author | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-03-30 19:30:21 +0100 |
|---|---|---|
| committer | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-03-30 19:30:21 +0100 |
| commit | cc55da0c4afbd128cf58d1cd4862e30bfceba56d (patch) | |
| tree | 51f203ec14b74591d1c222f39cbf509e1f197dee | |
| parent | 0ec53b228800300992ba1c53c2f089a435d4970c (diff) | |
| download | python-setuptools-git-cc55da0c4afbd128cf58d1cd4862e30bfceba56d.tar.gz | |
Separate vendoring script and code generator for pyproject validations
| -rw-r--r-- | setuptools/_vendor/vendored.txt | 1 | ||||
| -rw-r--r-- | tools/generate_validation_code.py | 32 | ||||
| -rw-r--r-- | tools/vendored.py | 38 | ||||
| -rw-r--r-- | tox.ini | 7 |
4 files changed, 39 insertions, 39 deletions
diff --git a/setuptools/_vendor/vendored.txt b/setuptools/_vendor/vendored.txt index 798e2bab..b08b0d6f 100644 --- a/setuptools/_vendor/vendored.txt +++ b/setuptools/_vendor/vendored.txt @@ -11,4 +11,3 @@ typing_extensions==4.0.1 # required for importlib_resources and _metadata on older Pythons zipp==3.7.0 tomli==2.0.1 -# validate-pyproject[all]==0.6.1 # Special handling in tools/vendored, don't uncomment or remove diff --git a/tools/generate_validation_code.py b/tools/generate_validation_code.py new file mode 100644 index 00000000..5792110d --- /dev/null +++ b/tools/generate_validation_code.py @@ -0,0 +1,32 @@ +import string +import subprocess +import sys +from tempfile import TemporaryDirectory + +from pathlib import Path + + +def generate_pyproject_validation(dest: Path): + """ + Generates validation code for ``pyproject.toml`` based on JSON schemas and the + ``validate-pyproject`` library. + """ + cmd = [ + sys.executable, + "-m", + "validate_pyproject.vendoring", + f"--output-dir={dest}", + "--enable-plugins", + "setuptools", + "distutils", + "--very-verbose" + ] + subprocess.check_call(cmd) + print(f"Validation code generated at: {dest}") + + +def main(): + generate_pyproject_validation(Path("setuptools/config/_validate_pyproject")) + + +__name__ == '__main__' and main() diff --git a/tools/vendored.py b/tools/vendored.py index dc1b0c07..cd15adbf 100644 --- a/tools/vendored.py +++ b/tools/vendored.py @@ -1,9 +1,6 @@ import re import sys -import string import subprocess -import venv -from tempfile import TemporaryDirectory from path import Path @@ -140,7 +137,6 @@ def update_pkg_resources(): def update_setuptools(): vendor = Path('setuptools/_vendor') install(vendor) - install_validate_pyproject(vendor) rewrite_packaging(vendor / 'packaging', 'setuptools.extern') rewrite_jaraco_text(vendor / 'jaraco/text', 'setuptools.extern') rewrite_jaraco(vendor / 'jaraco', 'setuptools.extern') @@ -150,38 +146,4 @@ def update_setuptools(): rewrite_nspektr(vendor / "nspektr", 'setuptools.extern') -def install_validate_pyproject(vendor): - """``validate-pyproject`` can be vendorized to remove all dependencies""" - req = next( - (x for x in (vendor / "vendored.txt").lines() if 'validate-pyproject' in x), - "validate-pyproject[all]" - ) - - pkg, _, _ = req.strip(string.whitespace + "#").partition("#") - pkg = pkg.strip() - - opts = {} - if sys.version_info[:2] >= (3, 10): - opts["ignore_cleanup_errors"] = True - - with TemporaryDirectory(**opts) as tmp: - env_builder = venv.EnvBuilder(with_pip=True) - env_builder.create(tmp) - context = env_builder.ensure_directories(tmp) - venv_python = getattr(context, 'env_exec_cmd', context.env_exe) - - subprocess.check_call([venv_python, "-m", "pip", "install", pkg]) - cmd = [ - venv_python, - "-m", - "validate_pyproject.vendoring", - f"--output-dir={vendor / '_validate_pyproject' !s}", - "--enable-plugins", - "setuptools", - "distutils", - "--very-verbose" - ] - subprocess.check_call(cmd) - - __name__ == '__main__' and update_vendored() @@ -65,6 +65,13 @@ deps = commands = python -m tools.vendored +[testenv:generate-validation-code] +skip_install = True +deps = + validate-pyproject[all]==0.6.1 +commands = + python -m tools.generate_validation_code + [testenv:release] skip_install = True deps = |
