From 6f47a41b21bfa152ec5c4c0efecf8256400e7cbb Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Thu, 7 Apr 2022 10:28:45 +0300 Subject: [PATCH 1/2] Allow dependencies/optional-dependencies to use file directives --- src/validate_pyproject/plugins/setuptools.schema.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/validate_pyproject/plugins/setuptools.schema.json b/src/validate_pyproject/plugins/setuptools.schema.json index 11059e4..b6fbef7 100644 --- a/src/validate_pyproject/plugins/setuptools.schema.json +++ b/src/validate_pyproject/plugins/setuptools.schema.json @@ -199,7 +199,12 @@ }, "classifiers": {"$ref": "#/definitions/file-directive"}, "description": {"$ref": "#/definitions/file-directive"}, + "dependencies": {"$ref": "#/definitions/file-directive"}, "entry-points": {"$ref": "#/definitions/file-directive"}, + "optional-dependencies": { + "type": "object", + "patternProperties": {".+": {"$ref": "#/definitions/file-directive"}} + }, "readme": { "anyOf": [ {"$ref": "#/definitions/file-directive"}, From 61b668fbc7b72914fe8353af406f9c43bc39e782 Mon Sep 17 00:00:00 2001 From: Anderson Bravalheri Date: Thu, 7 Apr 2022 17:22:13 +0100 Subject: [PATCH 2/2] Ensure optional-dependencies use PEP 508 identifiers --- src/validate_pyproject/plugins/setuptools.schema.json | 2 ++ .../dependencies/invalid-extra-name.errors.txt | 3 +++ .../dependencies/invalid-extra-name.toml | 7 +++++++ 3 files changed, 12 insertions(+) create mode 100644 tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.errors.txt create mode 100644 tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.toml diff --git a/src/validate_pyproject/plugins/setuptools.schema.json b/src/validate_pyproject/plugins/setuptools.schema.json index b6fbef7..cafa6c8 100644 --- a/src/validate_pyproject/plugins/setuptools.schema.json +++ b/src/validate_pyproject/plugins/setuptools.schema.json @@ -203,6 +203,8 @@ "entry-points": {"$ref": "#/definitions/file-directive"}, "optional-dependencies": { "type": "object", + "propertyNames": {"format": "pep508-identifier"}, + "additionalProperties": false, "patternProperties": {".+": {"$ref": "#/definitions/file-directive"}} }, "readme": { diff --git a/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.errors.txt b/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.errors.txt new file mode 100644 index 0000000..922d9dd --- /dev/null +++ b/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.errors.txt @@ -0,0 +1,3 @@ +`tool.setuptools.dynamic.optional-dependencies` keys must be named by: + + {format: 'pep508-identifier'} diff --git a/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.toml b/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.toml new file mode 100644 index 0000000..985baf6 --- /dev/null +++ b/tests/invalid-examples/pretend-setuptools/dependencies/invalid-extra-name.toml @@ -0,0 +1,7 @@ +[project] +name = "myproj" +version = "42" +dynamic = ["optional-dependencies"] + +[tool.setuptools.dynamic.optional-dependencies."non pep508 compliant"] +file = "extra.txt"