summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-30 19:30:21 +0100
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-30 19:30:21 +0100
commitcc55da0c4afbd128cf58d1cd4862e30bfceba56d (patch)
tree51f203ec14b74591d1c222f39cbf509e1f197dee
parent0ec53b228800300992ba1c53c2f089a435d4970c (diff)
downloadpython-setuptools-git-cc55da0c4afbd128cf58d1cd4862e30bfceba56d.tar.gz
Separate vendoring script and code generator for pyproject validations
-rw-r--r--setuptools/_vendor/vendored.txt1
-rw-r--r--tools/generate_validation_code.py32
-rw-r--r--tools/vendored.py38
-rw-r--r--tox.ini7
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()
diff --git a/tox.ini b/tox.ini
index 22c796ff..1b105d5d 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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 =