diff --git a/doc-source/api/pyproject-parser.rst b/doc-source/api/pyproject-parser.rst index 3fecf59..52d13e2 100644 --- a/doc-source/api/pyproject-parser.rst +++ b/doc-source/api/pyproject-parser.rst @@ -16,7 +16,7 @@ Parser for ``pyproject.toml``. :autosummary-sections: Data .. autoattrs:: pyproject_parser.PyProject - :exclude-members: __ge__,__gt__,__le__,__lt__,__ne__ + :exclude-members: __ge__,__gt__,__le__,__lt__,__ne__,__repr__,__eq__ :no-autosummary: .. autoclass:: pyproject_parser.PyProjectTomlEncoder diff --git a/doc-source/api/type_hints.rst b/doc-source/api/type_hints.rst index d93775e..6b28808 100644 --- a/doc-source/api/type_hints.rst +++ b/doc-source/api/type_hints.rst @@ -2,5 +2,5 @@ :mod:`pyproject_parser.type_hints` =================================== -.. autosummary-widths:: 1/5 +.. autosummary-widths:: 1/3 .. automodule:: pyproject_parser.type_hints diff --git a/pyproject_parser/__init__.py b/pyproject_parser/__init__.py index ab8fee1..7890ad8 100644 --- a/pyproject_parser/__init__.py +++ b/pyproject_parser/__init__.py @@ -63,11 +63,12 @@ # this package from pyproject_parser.classes import License, Readme, _NormalisedName -from pyproject_parser.parsers import BuildSystemParser, PEP621Parser +from pyproject_parser.parsers import BuildSystemParser, DependencyGroupsParser, PEP621Parser from pyproject_parser.type_hints import ( # noqa: F401 Author, BuildSystemDict, ContentTypes, + DependencyGroupsDict, ProjectDict, _PyProjectAsTomlDict ) @@ -239,23 +240,29 @@ class PyProject: :param build_system: - .. autosummary-widths:: 23/64 + .. versionchanged:: 0.13.0 Added ``dependency_groups`` and ``dependency_groups_table_parser`` properties. + + .. autosummary-widths:: 4/10 .. autoclasssumm:: PyProject :autosummary-sections: Methods - :autosummary-exclude-members: __ge__,__gt__,__le__,__lt__,__ne__,__init__ + :autosummary-exclude-members: __ge__,__gt__,__le__,__lt__,__ne__,__init__,__repr__,__eq__ .. latex:clearpage:: + .. autosummary-widths:: 1/2 + .. autoclasssumm:: PyProject :autosummary-sections: Attributes - .. latex:vspace:: 10px """ #: Represents the :pep:`build-system table <518#build-system-table>` defined in :pep:`517` and :pep:`518`. build_system: Optional[BuildSystemDict] = attr.ib(default=None) + #: Represents the :pep:`dependency groups table <735#specification>` defined in :pep:`735`. + dependency_groups: Optional[DependencyGroupsDict] = attr.ib(default=None) + #: Represents the :pep621:`project table ` defined in :pep:`621`. project: Optional[ProjectDict] = attr.ib(default=None) @@ -268,6 +275,14 @@ class PyProject: to parse the :pep:`build-system table <518#build-system-table>` with. """ + dependency_groups_table_parser: ClassVar[DependencyGroupsParser] = DependencyGroupsParser() + """ + The :class:`~dom_toml.parser.AbstractConfigParser` + to parse the :pep:`dependency groups table <735#specification>` with. + + .. versionadded:: 0.13.0 + """ + project_table_parser: ClassVar[PEP621Parser] = PEP621Parser() """ The :class:`~dom_toml.parser.AbstractConfigParser` @@ -313,6 +328,7 @@ def load( keys = set(config.keys()) build_system_table: Optional[BuildSystemDict] = None + dependency_groups_table: Optional[DependencyGroupsDict] = None project_table: Optional[ProjectDict] = None tool_table: Dict[str, Dict[str, Any]] = {} @@ -323,6 +339,12 @@ def load( ) keys.remove("build-system") + if "dependency-groups" in config: + dependency_groups_table = cls.dependency_groups_table_parser.parse( + config["dependency-groups"], set_defaults=set_defaults + ) + keys.remove("dependency-groups") + if "project" in config: project_table = cls.project_table_parser.parse(config["project"], set_defaults=set_defaults) keys.remove("project") @@ -336,7 +358,7 @@ def load( tool_table[tool_name] = cls.tool_parsers[tool_name].parse(tool_subtable) if keys: - allowed_top_level = ("build-system", "project", "tool") + allowed_top_level = ("build-system", "dependency-groups", "project", "tool") for top_level_key in sorted(keys): if top_level_key in allowed_top_level: @@ -355,6 +377,7 @@ def load( return cls( build_system=build_system_table, + dependency_groups=dependency_groups_table, project=project_table, tool=tool_table, ) @@ -375,6 +398,7 @@ def dumps( "build-system": self.build_system, "project": self.project, "tool": self.tool, + "dependency-groups": self.dependency_groups, } if toml_dict["project"] is not None: @@ -478,6 +502,8 @@ def from_dict(cls: Type[_PP], d: Mapping[str, Any]) -> _PP: for key, value in d.items(): if key == "build-system": key = "build_system" + elif key == "dependency-groups": + key = "dependency_groups" kwargs[key] = value @@ -494,4 +520,5 @@ def to_dict(self) -> MutableMapping[str, Any]: "build_system": self.build_system, "project": self.project, "tool": self.tool, + "dependency_groups": self.dependency_groups, } diff --git a/pyproject_parser/parsers.py b/pyproject_parser/parsers.py index 9751a6c..b5cacfc 100644 --- a/pyproject_parser/parsers.py +++ b/pyproject_parser/parsers.py @@ -49,12 +49,13 @@ # this package from pyproject_parser.classes import License, Readme, _NormalisedName -from pyproject_parser.type_hints import Author, BuildSystemDict, ProjectDict +from pyproject_parser.type_hints import Author, BuildSystemDict, DependencyGroupsDict, ProjectDict from pyproject_parser.utils import PyProjectDeprecationWarning, content_type_from_filename, render_readme __all__ = [ "RequiredKeysConfigParser", "BuildSystemParser", + "DependencyGroupsParser", "PEP621Parser", ] @@ -258,6 +259,60 @@ def parse( # type: ignore[override] return cast(BuildSystemDict, parsed_config) +class DependencyGroupsParser(AbstractConfigParser): + """ + Parser for the :pep:`dependency groups table <735#specification>` table from ``pyproject.toml``. + + .. versionadded:: 0.13.0 + """ # noqa: RST399 + + table_name: ClassVar[str] = "dependency-groups" + + @property + def keys(self) -> List[str]: + """ + The keys to parse from the TOML file. + """ + + return [] + + @staticmethod + def parse_group(config: TOML_TYPES) -> List[Union[str, Dict[str, str]]]: + """ + Parse a group from the TOML configuration. + + :param config: + """ + + if isinstance(config, list): + return config + + raise BadConfigError("A dependency group must be an array.") + + def parse( + self, + config: Dict[str, TOML_TYPES], + set_defaults: bool = False, + ) -> DependencyGroupsDict: + """ + Parse the TOML configuration. + + :param config: + :param set_defaults: If :py:obj:`True`, the values in + :attr:`self.defaults ` and + :attr:`self.factories ` + will be set as defaults for the returned mapping. + + :rtype: + + .. latex:clearpage:: + """ + + parsed_config = {key: self.parse_group(value) for key, value in config.items()} + + return cast(DependencyGroupsDict, parsed_config) + + class PEP621Parser(RequiredKeysConfigParser): """ Parser for :pep:`621` metadata from ``pyproject.toml``. @@ -896,10 +951,6 @@ def parse_entry_points(self, config: Dict[str, TOML_TYPES]) -> Dict[str, Dict[st nbval = "nbval.plugin" :param config: The unparsed TOML config for the :pep621:`project table `. - - :rtype: - - .. latex:clearpage:: """ entry_points = config["entry-points"] diff --git a/pyproject_parser/type_hints.py b/pyproject_parser/type_hints.py index dcc1d70..367985d 100644 --- a/pyproject_parser/type_hints.py +++ b/pyproject_parser/type_hints.py @@ -27,7 +27,7 @@ # # stdlib -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Union # 3rd party from packaging.markers import Marker @@ -40,6 +40,8 @@ __all__ = [ "BuildSystemDict", + "IncludeGroupDict", + "DependencyGroupsDict", "Dynamic", "ProjectDict", "Author", @@ -57,6 +59,20 @@ } ) +IncludeGroupDict = TypedDict("IncludeGroupDict", {"include-group": str}) +""" +:class:`typing.TypedDict`. + +.. versionadded:: 0.13.0 +""" + +DependencyGroupsDict = Dict[str, List[Union[str, IncludeGroupDict]]] +""" +The return type from the :class:`~.DependencyGroupsParser` class. + +.. versionadded:: 0.13.0 +""" + #: Type hint for the :pep621:`dynamic` field defined in :pep:`621`. Dynamic = Literal[ "name", @@ -130,5 +146,10 @@ class ReadmeDict(TypedDict, total=False): _PyProjectAsTomlDict = TypedDict( "_PyProjectAsTomlDict", - {"build-system": Optional[BuildSystemDict], "project": Optional[ProjectDict], "tool": Dict[str, Any]}, + { + "build-system": Optional[BuildSystemDict], + "project": Optional[ProjectDict], + "tool": Dict[str, Any], + "dependency-groups": Optional[DependencyGroupsDict] + }, ) diff --git a/tests/conftest.py b/tests/conftest.py index 18802d2..011d8b0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,6 +2,7 @@ from typing import Callable, Type, TypeVar, Union # 3rd party +from dom_toml.decoder import InlineTableDict from packaging.markers import Marker from packaging.requirements import Requirement from packaging.specifiers import SpecifierSet @@ -46,3 +47,11 @@ def represent_readme_or_license( # noqa: MAN002 data: Union[Readme, License], ): return dumper.represent_dict(data.to_dict()) + + +@_representer_for(InlineTableDict) +def represent_inline_table( # noqa: MAN002 + dumper: RegressionYamlDumper, + data: InlineTableDict, + ): + return dumper.represent_dict(dict(data)) diff --git a/tests/test_cli.py b/tests/test_cli.py index 7fc2e7c..50a6287 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -27,6 +27,15 @@ from pyproject_parser.cli import ConfigTracebackHandler from tests.test_dumping import COMPLETE_UNDERSCORE_NAME, UNORDERED +COMPLETE_DEPENDENCY_GROUPS = COMPLETE_A + """ + +[dependency-groups] +test = ["pytest", "coverage"] +docs = ["sphinx", "sphinx-rtd-theme"] +typing = ["mypy", "types-requests"] +typing-test = [{include-group = "typing"}, {include-group = "test"}, "useful-types"] +""" + @pytest.mark.parametrize( "toml_string", @@ -37,6 +46,7 @@ pytest.param(COMPLETE_PROJECT_A, id="COMPLETE_PROJECT_A"), pytest.param(UNORDERED, id="UNORDERED"), pytest.param(COMPLETE_UNDERSCORE_NAME, id="COMPLETE_UNDERSCORE_NAME"), + pytest.param(COMPLETE_DEPENDENCY_GROUPS, id="COMPLETE_DEPENDENCY_GROUPS"), ] ) @pytest.mark.parametrize("show_diff", [True, False]) @@ -177,7 +187,7 @@ def test_check_extra_deprecation_warning( ), pytest.param( "[coverage]\nomit = 'demo.py'\n[flake8]\nselect = ['F401']", - "Unexpected top-level key 'coverage'. Only 'build-system', 'project' and 'tool' are allowed.", + "Unexpected top-level key 'coverage'. Only 'build-system', 'dependency-groups', 'project' and 'tool' are allowed.", id="top-level", ), pytest.param( diff --git a/tests/test_cli_/test_check_error_caught_top_level_.txt b/tests/test_cli_/test_check_error_caught_top_level_.txt index ea9e316..725f931 100644 --- a/tests/test_cli_/test_check_error_caught_top_level_.txt +++ b/tests/test_cli_/test_check_error_caught_top_level_.txt @@ -1,3 +1,3 @@ -BadConfigError: Unexpected top-level key 'coverage'. Only 'build-system', 'project' and 'tool' are allowed. +BadConfigError: Unexpected top-level key 'coverage'. Only 'build-system', 'dependency-groups', 'project' and 'tool' are allowed. Use '--traceback' to view the full traceback. Aborted! diff --git a/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.diff b/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.diff new file mode 100644 index 0000000..006c1ea --- /dev/null +++ b/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.diff @@ -0,0 +1 @@ +Reformatting 'pyproject.toml' diff --git a/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.toml b/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.toml new file mode 100644 index 0000000..04283c5 --- /dev/null +++ b/tests/test_cli_/test_reformat_False_COMPLETE_DEPENDENCY_GROUPS_.toml @@ -0,0 +1,34 @@ +[build-system] +requires = [ "whey",] +build-backend = "whey" + +[project] +name = "whey" +version = "2021.0.0" +description = "A simple Python wheel builder for simple projects." +keywords = [ "build", "distribution", "packaging", "pep517", "pep621", "sdist", "wheel",] +dependencies = [ 'django>2.1; os_name != "nt"', 'django>2.0; os_name == "nt"', "gidgethub[httpx]>4.0.0", "httpx",] +dynamic = [ "classifiers", "requires-python",] + +[[project.authors]] +name = "Dominic Davis-Foster" +email = "dominic@davis-foster.co.uk" + +[project.urls] +Homepage = "https://whey.readthedocs.io/en/latest" +Documentation = "https://whey.readthedocs.io/en/latest" +"Issue Tracker" = "https://github.com/repo-helper/whey/issues" +"Source Code" = "https://github.com/repo-helper/whey" + +[tool.whey] +base-classifiers = [ "Development Status :: 4 - Beta",] +python-versions = [ "3.6", "3.7", "3.8", "3.9", "3.10",] +python-implementations = [ "CPython", "PyPy",] +platforms = [ "Windows", "macOS", "Linux",] +license-key = "MIT" + +[dependency-groups] +test = [ "pytest", "coverage",] +docs = [ "sphinx", "sphinx-rtd-theme",] +typing = [ "mypy", "types-requests",] +typing-test = [ { include-group = "typing" }, { include-group = "test" }, "useful-types",] diff --git a/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.diff b/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.diff new file mode 100644 index 0000000..9f8d382 --- /dev/null +++ b/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.diff @@ -0,0 +1,41 @@ +Reformatting 'pyproject.toml' +--- pyproject.toml (original) ++++ pyproject.toml (reformatted) +@@ -6,18 +6,13 @@ + name = "whey" + version = "2021.0.0" + description = "A simple Python wheel builder for simple projects." +-keywords = [ "pep517", "pep621", "build", "sdist", "wheel", "packaging", "distribution",] ++keywords = [ "build", "distribution", "packaging", "pep517", "pep621", "sdist", "wheel",] ++dependencies = [ 'django>2.1; os_name != "nt"', 'django>2.0; os_name == "nt"', "gidgethub[httpx]>4.0.0", "httpx",] + dynamic = [ "classifiers", "requires-python",] +-dependencies = [ +- "httpx", +- "gidgethub[httpx]>4.0.0", +- "django>2.1; os_name != 'nt'", +- "django>2.0; os_name == 'nt'" +-] + + [[project.authors]] ++name = "Dominic Davis-Foster" + email = "dominic@davis-foster.co.uk" +-name = "Dominic Davis-Foster" + + [project.urls] + Homepage = "https://whey.readthedocs.io/en/latest" +@@ -32,10 +27,9 @@ + platforms = [ "Windows", "macOS", "Linux",] + license-key = "MIT" + ++[dependency-groups] ++test = [ "pytest", "coverage",] ++docs = [ "sphinx", "sphinx-rtd-theme",] ++typing = [ "mypy", "types-requests",] ++typing-test = [ { include-group = "typing" }, { include-group = "test" }, "useful-types",] + +-[dependency-groups] +-test = ["pytest", "coverage"] +-docs = ["sphinx", "sphinx-rtd-theme"] +-typing = ["mypy", "types-requests"] +-typing-test = [{include-group = "typing"}, {include-group = "test"}, "useful-types"] +- diff --git a/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.toml b/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.toml new file mode 100644 index 0000000..04283c5 --- /dev/null +++ b/tests/test_cli_/test_reformat_True_COMPLETE_DEPENDENCY_GROUPS_.toml @@ -0,0 +1,34 @@ +[build-system] +requires = [ "whey",] +build-backend = "whey" + +[project] +name = "whey" +version = "2021.0.0" +description = "A simple Python wheel builder for simple projects." +keywords = [ "build", "distribution", "packaging", "pep517", "pep621", "sdist", "wheel",] +dependencies = [ 'django>2.1; os_name != "nt"', 'django>2.0; os_name == "nt"', "gidgethub[httpx]>4.0.0", "httpx",] +dynamic = [ "classifiers", "requires-python",] + +[[project.authors]] +name = "Dominic Davis-Foster" +email = "dominic@davis-foster.co.uk" + +[project.urls] +Homepage = "https://whey.readthedocs.io/en/latest" +Documentation = "https://whey.readthedocs.io/en/latest" +"Issue Tracker" = "https://github.com/repo-helper/whey/issues" +"Source Code" = "https://github.com/repo-helper/whey" + +[tool.whey] +base-classifiers = [ "Development Status :: 4 - Beta",] +python-versions = [ "3.6", "3.7", "3.8", "3.9", "3.10",] +python-implementations = [ "CPython", "PyPy",] +platforms = [ "Windows", "macOS", "Linux",] +license-key = "MIT" + +[dependency-groups] +test = [ "pytest", "coverage",] +docs = [ "sphinx", "sphinx-rtd-theme",] +typing = [ "mypy", "types-requests",] +typing-test = [ { include-group = "typing" }, { include-group = "test" }, "useful-types",] diff --git a/tests/test_config.py b/tests/test_config.py index 6ad8c20..819294a 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -18,7 +18,12 @@ from shippinglabel import normalize_keep_dot # this package -from pyproject_parser.parsers import BuildSystemParser, PEP621Parser, RequiredKeysConfigParser +from pyproject_parser.parsers import ( + BuildSystemParser, + DependencyGroupsParser, + PEP621Parser, + RequiredKeysConfigParser + ) from pyproject_parser.utils import PyProjectDeprecationWarning, _load_toml @@ -555,3 +560,46 @@ class MyConfigParser(RequiredKeysConfigParser): assert MyConfigParser().parse({}, set_defaults=True) == {"foo": "foo-default", "bar": "bar-defaults"} assert MyConfigParser().parse({"foo": "baz"}, set_defaults=True) == {"foo": "baz", "bar": "bar-defaults"} + + +valid_dependency_groups_config = [ + pytest.param("[dependency-groups]", id="empty"), + pytest.param('[dependency-groups]\ngroup-a = ["foo"]', id="one-group"), + pytest.param( + '[dependency-groups]\ngroup-a = ["foo"]\ngroup-b = ["foo>1.0"]\ngroup-c = ["foo<1.0"]\nall = ["foo", {include-group = "group-a"}, {include-group = "group-b"}, {include-group = "group-c"}]', + id="full-example" + ), + ] + +bad_dependency_groups_config = [ + pytest.param( + '[dependency-groups]\ngroup-a = "foo"', BadConfigError, "A dependency group must be an array" + ), + ] + + +@pytest.mark.parametrize("set_defaults", [True, False]) +@pytest.mark.parametrize("toml_config", valid_dependency_groups_config) +def test_dependency_groups_parser_valid_config( + toml_config: str, + tmp_pathplus: PathPlus, + advanced_data_regression: AdvancedDataRegressionFixture, + set_defaults: bool, + ): + (tmp_pathplus / "pyproject.toml").write_clean(toml_config) + config = DependencyGroupsParser().parse( + _load_toml(tmp_pathplus / "pyproject.toml")["dependency-groups"], + set_defaults=set_defaults, + ) + + advanced_data_regression.check(config) + + +@pytest.mark.parametrize("config, expects, match", bad_dependency_groups_config) +def test_dependency_groups_parser_errors( + config: str, expects: Type[Exception], match: str, tmp_pathplus: PathPlus + ): + (tmp_pathplus / "pyproject.toml").write_clean(config) + + with in_directory(tmp_pathplus), pytest.raises(expects, match=match): + DependencyGroupsParser().parse(_load_toml(tmp_pathplus / "pyproject.toml")["dependency-groups"]) diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_empty_False_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_empty_False_.yml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_empty_False_.yml @@ -0,0 +1 @@ +{} diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_empty_True_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_empty_True_.yml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_empty_True_.yml @@ -0,0 +1 @@ +{} diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_False_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_False_.yml new file mode 100644 index 0000000..f8e9b15 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_False_.yml @@ -0,0 +1,11 @@ +all: +- foo +- include-group: group-a +- include-group: group-b +- include-group: group-c +group-a: +- foo +group-b: +- foo>1.0 +group-c: +- foo<1.0 diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_True_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_True_.yml new file mode 100644 index 0000000..f8e9b15 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_full_example_True_.yml @@ -0,0 +1,11 @@ +all: +- foo +- include-group: group-a +- include-group: group-b +- include-group: group-c +group-a: +- foo +group-b: +- foo>1.0 +group-c: +- foo<1.0 diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_False_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_False_.yml new file mode 100644 index 0000000..7b70ec0 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_False_.yml @@ -0,0 +1,2 @@ +group-a: +- foo diff --git a/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_True_.yml b/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_True_.yml new file mode 100644 index 0000000..7b70ec0 --- /dev/null +++ b/tests/test_config_/test_dependency_groups_parser_valid_config_one_group_True_.yml @@ -0,0 +1,2 @@ +group-a: +- foo diff --git a/tests/test_pyproject_class.py b/tests/test_pyproject_class.py index fffa367..714da50 100644 --- a/tests/test_pyproject_class.py +++ b/tests/test_pyproject_class.py @@ -17,8 +17,24 @@ # this package from pyproject_parser import PyProject +COMPLETE_DEPENDENCY_GROUPS = COMPLETE_A + """ -@pytest.mark.parametrize("toml_config", [*valid_pep621_config, *valid_buildsystem_config]) +[dependency-groups] +test = ["pytest", "coverage"] +docs = ["sphinx", "sphinx-rtd-theme"] +typing = ["mypy", "types-requests"] +typing-test = [{include-group = "typing"}, {include-group = "test"}, "useful-types"] +""" + + +@pytest.mark.parametrize( + "toml_config", + [ + *valid_pep621_config, + *valid_buildsystem_config, + pytest.param(COMPLETE_DEPENDENCY_GROUPS, id="complete-dependency-groups"), + ] + ) def test_valid_config( toml_config: str, tmp_pathplus: PathPlus, @@ -81,13 +97,13 @@ def test_valid_config_resolve_files( pytest.param( 'banana = "fruit"\n[project]\nname = "food"', BadConfigError, - "Unexpected top-level key 'banana'. Only 'build-system', 'project' and 'tool' are allowed.", + "Unexpected top-level key 'banana'. Only 'build-system', 'dependency-groups', 'project' and 'tool' are allowed.", id="unexpected_top_level" ), pytest.param( "[coverage]\nomit = 'demo.py'\n[flake8]\nselect = ['F401']", BadConfigError, - "Unexpected top-level key 'coverage'. Only 'build-system', 'project' and 'tool' are allowed.", + "Unexpected top-level key 'coverage'. Only 'build-system', 'dependency-groups', 'project' and 'tool' are allowed.", id="top-level", ), pytest.param( diff --git a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_A_.yml b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_A_.yml index b83c998..5e0509a 100644 --- a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_A_.yml +++ b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_A_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_B_.yml b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_B_.yml index fd275d9..6695199 100644 --- a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_B_.yml +++ b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_B_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_PROJECT_A_.yml b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_PROJECT_A_.yml index 6ca3e8e..e02a281 100644 --- a/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_PROJECT_A_.yml +++ b/tests/test_pyproject_class_/test_custom_pyproject_class_COMPLETE_PROJECT_A_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: hi@pradyunsg.me diff --git a/tests/test_pyproject_class_/test_valid_config_COMPLETE_A_.yml b/tests/test_pyproject_class_/test_valid_config_COMPLETE_A_.yml index 1e45862..bcc0487 100644 --- a/tests/test_pyproject_class_/test_valid_config_COMPLETE_A_.yml +++ b/tests/test_pyproject_class_/test_valid_config_COMPLETE_A_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_valid_config_COMPLETE_B_.yml b/tests/test_pyproject_class_/test_valid_config_COMPLETE_B_.yml index 90fd5d2..224f469 100644 --- a/tests/test_pyproject_class_/test_valid_config_COMPLETE_B_.yml +++ b/tests/test_pyproject_class_/test_valid_config_COMPLETE_B_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_valid_config_COMPLETE_PROJECT_A_.yml b/tests/test_pyproject_class_/test_valid_config_COMPLETE_PROJECT_A_.yml index 6ca3e8e..e02a281 100644 --- a/tests/test_pyproject_class_/test_valid_config_COMPLETE_PROJECT_A_.yml +++ b/tests/test_pyproject_class_/test_valid_config_COMPLETE_PROJECT_A_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: hi@pradyunsg.me diff --git a/tests/test_pyproject_class_/test_valid_config_authors_.yml b/tests/test_pyproject_class_/test_valid_config_authors_.yml index 9827ce8..e59653f 100644 --- a/tests/test_pyproject_class_/test_valid_config_authors_.yml +++ b/tests/test_pyproject_class_/test_valid_config_authors_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: hi@pradyunsg.me diff --git a/tests/test_pyproject_class_/test_valid_config_backend_path_.yml b/tests/test_pyproject_class_/test_valid_config_backend_path_.yml index eebef31..9b81fc6 100644 --- a/tests/test_pyproject_class_/test_valid_config_backend_path_.yml +++ b/tests/test_pyproject_class_/test_valid_config_backend_path_.yml @@ -4,5 +4,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_backend_paths_.yml b/tests/test_pyproject_class_/test_valid_config_backend_paths_.yml index 2b48bde..1d9fbde 100644 --- a/tests/test_pyproject_class_/test_valid_config_backend_paths_.yml +++ b/tests/test_pyproject_class_/test_valid_config_backend_paths_.yml @@ -5,5 +5,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_classifiers_.yml b/tests/test_pyproject_class_/test_valid_config_classifiers_.yml index d34713e..20bdeab 100644 --- a/tests/test_pyproject_class_/test_valid_config_classifiers_.yml +++ b/tests/test_pyproject_class_/test_valid_config_classifiers_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: classifiers: - 'Development Status :: 4 - Beta' diff --git a/tests/test_pyproject_class_/test_valid_config_complete_.yml b/tests/test_pyproject_class_/test_valid_config_complete_.yml index 3ce0006..4776313 100644 --- a/tests/test_pyproject_class_/test_valid_config_complete_.yml +++ b/tests/test_pyproject_class_/test_valid_config_complete_.yml @@ -2,5 +2,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_complete_dependency_groups_.yml b/tests/test_pyproject_class_/test_valid_config_complete_dependency_groups_.yml new file mode 100644 index 0000000..dedcbf9 --- /dev/null +++ b/tests/test_pyproject_class_/test_valid_config_complete_dependency_groups_.yml @@ -0,0 +1,64 @@ +build_system: + build-backend: whey + requires: + - whey +dependency_groups: + docs: + - sphinx + - sphinx-rtd-theme + test: + - pytest + - coverage + typing: + - mypy + - types-requests + typing-test: + - include-group: typing + - include-group: test + - useful-types +project: + authors: + - email: dominic@davis-foster.co.uk + name: Dominic Davis-Foster + dependencies: + - django>2.1; os_name != "nt" + - django>2.0; os_name == "nt" + - gidgethub[httpx]>4.0.0 + - httpx + description: A simple Python wheel builder for simple projects. + dynamic: + - classifiers + - requires-python + keywords: + - build + - distribution + - packaging + - pep517 + - pep621 + - sdist + - wheel + name: whey + urls: + Documentation: https://whey.readthedocs.io/en/latest + Homepage: https://whey.readthedocs.io/en/latest + Issue Tracker: https://github.com/repo-helper/whey/issues + Source Code: https://github.com/repo-helper/whey + version: 2021.0.0 +tool: + whey: + base-classifiers: + - 'Development Status :: 4 - Beta' + license-key: MIT + platforms: + - Windows + - macOS + - Linux + python-implementations: + - CPython + - PyPy + python-versions: + - '3.6' + - '3.7' + - '3.8' + - '3.9' + - '3.10' diff --git a/tests/test_pyproject_class_/test_valid_config_dependencies_.yml b/tests/test_pyproject_class_/test_valid_config_dependencies_.yml index 84439f0..e3b4487 100644 --- a/tests/test_pyproject_class_/test_valid_config_dependencies_.yml +++ b/tests/test_pyproject_class_/test_valid_config_dependencies_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dependencies: - django>2.1; os_name != "nt" diff --git a/tests/test_pyproject_class_/test_valid_config_description_.yml b/tests/test_pyproject_class_/test_valid_config_description_.yml index 52b71e1..1553add 100644 --- a/tests/test_pyproject_class_/test_valid_config_description_.yml +++ b/tests/test_pyproject_class_/test_valid_config_description_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: description: Lovely Spam! Wonderful Spam! dynamic: [] diff --git a/tests/test_pyproject_class_/test_valid_config_entry_points_.yml b/tests/test_pyproject_class_/test_valid_config_entry_points_.yml index eb0b52b..fc527d2 100644 --- a/tests/test_pyproject_class_/test_valid_config_entry_points_.yml +++ b/tests/test_pyproject_class_/test_valid_config_entry_points_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] entry-points: diff --git a/tests/test_pyproject_class_/test_valid_config_keywords_.yml b/tests/test_pyproject_class_/test_valid_config_keywords_.yml index 94eebb8..30a74a3 100644 --- a/tests/test_pyproject_class_/test_valid_config_keywords_.yml +++ b/tests/test_pyproject_class_/test_valid_config_keywords_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] keywords: diff --git a/tests/test_pyproject_class_/test_valid_config_maintainers_.yml b/tests/test_pyproject_class_/test_valid_config_maintainers_.yml index c2271d7..b4fa5b8 100644 --- a/tests/test_pyproject_class_/test_valid_config_maintainers_.yml +++ b/tests/test_pyproject_class_/test_valid_config_maintainers_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] maintainers: diff --git a/tests/test_pyproject_class_/test_valid_config_minimal_.yml b/tests/test_pyproject_class_/test_valid_config_minimal_.yml index c2b2757..0782aea 100644 --- a/tests/test_pyproject_class_/test_valid_config_minimal_.yml +++ b/tests/test_pyproject_class_/test_valid_config_minimal_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_optional_dependencies_.yml b/tests/test_pyproject_class_/test_valid_config_optional_dependencies_.yml index 61a949d..6133363 100644 --- a/tests/test_pyproject_class_/test_valid_config_optional_dependencies_.yml +++ b/tests/test_pyproject_class_/test_valid_config_optional_dependencies_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_optional_dependencies_empty_group_.yml b/tests/test_pyproject_class_/test_valid_config_optional_dependencies_empty_group_.yml index 662d6a5..38994ec 100644 --- a/tests/test_pyproject_class_/test_valid_config_optional_dependencies_empty_group_.yml +++ b/tests/test_pyproject_class_/test_valid_config_optional_dependencies_empty_group_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_requires_nothing_.yml b/tests/test_pyproject_class_/test_valid_config_requires_nothing_.yml index b450169..2b17c0d 100644 --- a/tests/test_pyproject_class_/test_valid_config_requires_nothing_.yml +++ b/tests/test_pyproject_class_/test_valid_config_requires_nothing_.yml @@ -1,4 +1,5 @@ build_system: requires: [] +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_requires_python_.yml b/tests/test_pyproject_class_/test_valid_config_requires_python_.yml index 806fa74..c83fea4 100644 --- a/tests/test_pyproject_class_/test_valid_config_requires_python_.yml +++ b/tests/test_pyproject_class_/test_valid_config_requires_python_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_requires_python_complex_.yml b/tests/test_pyproject_class_/test_valid_config_requires_python_complex_.yml index ff016f1..72c62ce 100644 --- a/tests/test_pyproject_class_/test_valid_config_requires_python_complex_.yml +++ b/tests/test_pyproject_class_/test_valid_config_requires_python_complex_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_requires_setuptools_.yml b/tests/test_pyproject_class_/test_valid_config_requires_setuptools_.yml index e7dd955..45491d4 100644 --- a/tests/test_pyproject_class_/test_valid_config_requires_setuptools_.yml +++ b/tests/test_pyproject_class_/test_valid_config_requires_setuptools_.yml @@ -2,5 +2,6 @@ build_system: requires: - setuptools - wheel +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_requires_whey_.yml b/tests/test_pyproject_class_/test_valid_config_requires_whey_.yml index 7a575d5..babd9cc 100644 --- a/tests/test_pyproject_class_/test_valid_config_requires_whey_.yml +++ b/tests/test_pyproject_class_/test_valid_config_requires_whey_.yml @@ -1,5 +1,6 @@ build_system: requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_.yml index 1e45862..bcc0487 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_WITH_FILES_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_WITH_FILES_.yml index 33a629d..dced583 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_WITH_FILES_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_A_WITH_FILES_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_B_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_B_.yml index 90fd5d2..224f469 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_B_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_B_.yml @@ -2,6 +2,7 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: authors: - email: dominic@davis-foster.co.uk diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_PROJECT_A_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_PROJECT_A_.yml index 6ca3e8e..e02a281 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_PROJECT_A_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_COMPLETE_PROJECT_A_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: hi@pradyunsg.me diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_authors_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_authors_.yml index 9827ce8..e59653f 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_authors_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_authors_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: hi@pradyunsg.me diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_path_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_path_.yml index eebef31..9b81fc6 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_path_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_path_.yml @@ -4,5 +4,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_paths_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_paths_.yml index 2b48bde..1d9fbde 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_paths_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_backend_paths_.yml @@ -5,5 +5,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_classifiers_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_classifiers_.yml index d34713e..20bdeab 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_classifiers_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_classifiers_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: classifiers: - 'Development Status :: 4 - Beta' diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_complete_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_complete_.yml index 3ce0006..4776313 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_complete_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_complete_.yml @@ -2,5 +2,6 @@ build_system: build-backend: whey requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_dependencies_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_dependencies_.yml index 84439f0..e3b4487 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_dependencies_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_dependencies_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dependencies: - django>2.1; os_name != "nt" diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_description_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_description_.yml index 52b71e1..1553add 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_description_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_description_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: description: Lovely Spam! Wonderful Spam! dynamic: [] diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_entry_points_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_entry_points_.yml index eb0b52b..fc527d2 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_entry_points_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_entry_points_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] entry-points: diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_keywords_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_keywords_.yml index 94eebb8..30a74a3 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_keywords_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_keywords_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] keywords: diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_maintainers_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_maintainers_.yml index c2271d7..b4fa5b8 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_maintainers_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_maintainers_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] maintainers: diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_minimal_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_minimal_.yml index c2b2757..0782aea 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_minimal_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_minimal_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_.yml index 61a949d..6133363 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_empty_group_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_empty_group_.yml index 662d6a5..38994ec 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_empty_group_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_optional_dependencies_empty_group_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_nothing_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_nothing_.yml index b450169..2b17c0d 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_nothing_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_nothing_.yml @@ -1,4 +1,5 @@ build_system: requires: [] +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_.yml index 806fa74..c83fea4 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_complex_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_complex_.yml index ff016f1..72c62ce 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_complex_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_python_complex_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_setuptools_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_setuptools_.yml index e7dd955..45491d4 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_setuptools_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_setuptools_.yml @@ -2,5 +2,6 @@ build_system: requires: - setuptools - wheel +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_whey_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_whey_.yml index 7a575d5..babd9cc 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_whey_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_requires_whey_.yml @@ -1,5 +1,6 @@ build_system: requires: - whey +dependency_groups: null project: null tool: {} diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_unicode_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_unicode_.yml index a9a9def..c0c0437 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_unicode_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_unicode_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: null diff --git a/tests/test_pyproject_class_/test_valid_config_resolve_files_urls_.yml b/tests/test_pyproject_class_/test_valid_config_resolve_files_urls_.yml index 97f01db..a5e8945 100644 --- a/tests/test_pyproject_class_/test_valid_config_resolve_files_urls_.yml +++ b/tests/test_pyproject_class_/test_valid_config_resolve_files_urls_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam diff --git a/tests/test_pyproject_class_/test_valid_config_unicode_.yml b/tests/test_pyproject_class_/test_valid_config_unicode_.yml index a9a9def..c0c0437 100644 --- a/tests/test_pyproject_class_/test_valid_config_unicode_.yml +++ b/tests/test_pyproject_class_/test_valid_config_unicode_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: authors: - email: null diff --git a/tests/test_pyproject_class_/test_valid_config_urls_.yml b/tests/test_pyproject_class_/test_valid_config_urls_.yml index 97f01db..a5e8945 100644 --- a/tests/test_pyproject_class_/test_valid_config_urls_.yml +++ b/tests/test_pyproject_class_/test_valid_config_urls_.yml @@ -1,4 +1,5 @@ build_system: null +dependency_groups: null project: dynamic: [] name: spam