aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py')
-rw-r--r--.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py b/.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py
new file mode 100644
index 00000000..e42f28ff
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py
@@ -0,0 +1,109 @@
+from inspect import cleandoc
+
+import pytest
+from jaraco import path
+
+from setuptools.config.pyprojecttoml import apply_configuration
+from setuptools.dist import Distribution
+from setuptools.warnings import SetuptoolsWarning
+
+
+def test_dynamic_dependencies(tmp_path):
+ files = {
+ "requirements.txt": "six\n # comment\n",
+ "pyproject.toml": cleandoc(
+ """
+ [project]
+ name = "myproj"
+ version = "1.0"
+ dynamic = ["dependencies"]
+
+ [build-system]
+ requires = ["setuptools", "wheel"]
+ build-backend = "setuptools.build_meta"
+
+ [tool.setuptools.dynamic.dependencies]
+ file = ["requirements.txt"]
+ """
+ ),
+ }
+ path.build(files, prefix=tmp_path)
+ dist = Distribution()
+ dist = apply_configuration(dist, tmp_path / "pyproject.toml")
+ assert dist.install_requires == ["six"]
+
+
+def test_dynamic_optional_dependencies(tmp_path):
+ files = {
+ "requirements-docs.txt": "sphinx\n # comment\n",
+ "pyproject.toml": cleandoc(
+ """
+ [project]
+ name = "myproj"
+ version = "1.0"
+ dynamic = ["optional-dependencies"]
+
+ [tool.setuptools.dynamic.optional-dependencies.docs]
+ file = ["requirements-docs.txt"]
+
+ [build-system]
+ requires = ["setuptools", "wheel"]
+ build-backend = "setuptools.build_meta"
+ """
+ ),
+ }
+ path.build(files, prefix=tmp_path)
+ dist = Distribution()
+ dist = apply_configuration(dist, tmp_path / "pyproject.toml")
+ assert dist.extras_require == {"docs": ["sphinx"]}
+
+
+def test_mixed_dynamic_optional_dependencies(tmp_path):
+ """
+ Test that if PEP 621 was loosened to allow mixing of dynamic and static
+ configurations in the case of fields containing sub-fields (groups),
+ things would work out.
+ """
+ files = {
+ "requirements-images.txt": "pillow~=42.0\n # comment\n",
+ "pyproject.toml": cleandoc(
+ """
+ [project]
+ name = "myproj"
+ version = "1.0"
+ dynamic = ["optional-dependencies"]
+
+ [project.optional-dependencies]
+ docs = ["sphinx"]
+
+ [tool.setuptools.dynamic.optional-dependencies.images]
+ file = ["requirements-images.txt"]
+ """
+ ),
+ }
+
+ path.build(files, prefix=tmp_path)
+ pyproject = tmp_path / "pyproject.toml"
+ with pytest.raises(ValueError, match="project.optional-dependencies"):
+ apply_configuration(Distribution(), pyproject)
+
+
+def test_mixed_extras_require_optional_dependencies(tmp_path):
+ files = {
+ "pyproject.toml": cleandoc(
+ """
+ [project]
+ name = "myproj"
+ version = "1.0"
+ optional-dependencies.docs = ["sphinx"]
+ """
+ ),
+ }
+
+ path.build(files, prefix=tmp_path)
+ pyproject = tmp_path / "pyproject.toml"
+
+ with pytest.warns(SetuptoolsWarning, match=".extras_require. overwritten"):
+ dist = Distribution({"extras_require": {"hello": ["world"]}})
+ dist = apply_configuration(dist, pyproject)
+ assert dist.extras_require == {"docs": ["sphinx"]}