From db0149859cc117924c74cad52827c4f48cab8628 Mon Sep 17 00:00:00 2001 From: Avasam Date: Wed, 10 May 2023 11:04:18 -0400 Subject: [PATCH] Add `partial_stub` metadata field (#10157) --- CONTRIBUTING.md | 4 ++++ stubs/Flask-Cors/METADATA.toml | 1 + stubs/Flask-Migrate/METADATA.toml | 1 + stubs/Flask-SQLAlchemy/METADATA.toml | 1 + stubs/Markdown/METADATA.toml | 1 + stubs/Pillow/METADATA.toml | 1 + stubs/PyMySQL/METADATA.toml | 1 + stubs/Pygments/METADATA.toml | 1 + stubs/Send2Trash/METADATA.toml | 1 + stubs/aws-xray-sdk/METADATA.toml | 1 + stubs/babel/METADATA.toml | 1 + stubs/beautifulsoup4/METADATA.toml | 1 + stubs/bleach/METADATA.toml | 1 + stubs/boto/METADATA.toml | 1 + stubs/braintree/METADATA.toml | 1 + stubs/caldav/METADATA.toml | 1 + stubs/chardet/METADATA.toml | 1 + stubs/commonmark/METADATA.toml | 1 + stubs/docutils/METADATA.toml | 1 + stubs/flake8-bugbear/METADATA.toml | 1 + stubs/flake8-builtins/METADATA.toml | 1 + stubs/flake8-docstrings/METADATA.toml | 1 + stubs/flake8-plugin-utils/METADATA.toml | 1 + stubs/flake8-rst-docstrings/METADATA.toml | 1 + stubs/flake8-simplify/METADATA.toml | 1 + stubs/flake8-typing-imports/METADATA.toml | 1 + stubs/google-cloud-ndb/METADATA.toml | 1 + stubs/html5lib/METADATA.toml | 1 + stubs/invoke/METADATA.toml | 1 + stubs/jsonschema/METADATA.toml | 1 + stubs/ldap3/METADATA.toml | 1 + stubs/oauthlib/METADATA.toml | 1 + stubs/openpyxl/METADATA.toml | 1 + stubs/opentracing/METADATA.toml | 1 + stubs/paramiko/METADATA.toml | 1 + stubs/pep8-naming/METADATA.toml | 1 + stubs/protobuf/METADATA.toml | 1 + stubs/psycopg2/METADATA.toml | 1 + stubs/pyOpenSSL/METADATA.toml | 1 + stubs/pyflakes/METADATA.toml | 1 + stubs/python-datemath/METADATA.toml | 1 + stubs/python-dateutil/METADATA.toml | 1 + stubs/pyvmomi/METADATA.toml | 1 + stubs/redis/METADATA.toml | 1 + stubs/setuptools/METADATA.toml | 1 + stubs/simplejson/METADATA.toml | 1 + stubs/stripe/METADATA.toml | 1 + stubs/tensorflow/METADATA.toml | 1 + stubs/urllib3/METADATA.toml | 1 + stubs/waitress/METADATA.toml | 1 + tests/parse_metadata.py | 16 +++++++++++++++- 51 files changed, 68 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b4b3090c64a6..a185c385fd0d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -193,6 +193,10 @@ supported: * `upload` (optional): This field is set to `false` to prevent automatic uploads to PyPI. This should only used in special cases, e.g. when the stubs break the upload. +* `partial_stub` (optional): This field marks the type stub package as + [partial](https://peps.python.org/pep-0561/#partial-stub-packages). This is for + 3rd-party stubs that don't cover the entirety of the package's public API. + In most cases, this field is identical to `ignore_missing_stub`. In addition, we specify configuration for stubtest in the `tool.stubtest` table. This has the following keys: diff --git a/stubs/Flask-Cors/METADATA.toml b/stubs/Flask-Cors/METADATA.toml index b39fb0d7a7f5..8f67dd68b578 100644 --- a/stubs/Flask-Cors/METADATA.toml +++ b/stubs/Flask-Cors/METADATA.toml @@ -1,6 +1,7 @@ version = "3.0.*" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/Flask-Migrate/METADATA.toml b/stubs/Flask-Migrate/METADATA.toml index 7e798f1a28e9..7979b27a6409 100644 --- a/stubs/Flask-Migrate/METADATA.toml +++ b/stubs/Flask-Migrate/METADATA.toml @@ -1,6 +1,7 @@ version = "4.0.*" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0", "types-Flask-SQLAlchemy"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/Flask-SQLAlchemy/METADATA.toml b/stubs/Flask-SQLAlchemy/METADATA.toml index d3d266df0aa8..7c295e685970 100644 --- a/stubs/Flask-SQLAlchemy/METADATA.toml +++ b/stubs/Flask-SQLAlchemy/METADATA.toml @@ -1,6 +1,7 @@ version = "2.5.*" requires = ["types-SQLAlchemy"] obsolete_since = "3.0.1" # Released on 2022-10-11 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/Markdown/METADATA.toml b/stubs/Markdown/METADATA.toml index 9914b4e0085e..1756f1f5396a 100644 --- a/stubs/Markdown/METADATA.toml +++ b/stubs/Markdown/METADATA.toml @@ -1,4 +1,5 @@ version = "3.4.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/Pillow/METADATA.toml b/stubs/Pillow/METADATA.toml index e6dac5190eeb..aa2d5b748e0b 100644 --- a/stubs/Pillow/METADATA.toml +++ b/stubs/Pillow/METADATA.toml @@ -1,4 +1,5 @@ version = "9.5.*" +partial_stub = true [tool.stubtest] stubtest_requirements = ["olefile"] diff --git a/stubs/PyMySQL/METADATA.toml b/stubs/PyMySQL/METADATA.toml index 50057fed1351..b9b1827ffb4a 100644 --- a/stubs/PyMySQL/METADATA.toml +++ b/stubs/PyMySQL/METADATA.toml @@ -1,4 +1,5 @@ version = "1.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/Pygments/METADATA.toml b/stubs/Pygments/METADATA.toml index 1a86c302a582..ed69afcdbaf3 100644 --- a/stubs/Pygments/METADATA.toml +++ b/stubs/Pygments/METADATA.toml @@ -1,5 +1,6 @@ version = "2.15.*" requires = ["types-docutils", "types-setuptools"] +partial_stub = true [tool.stubtest] stubtest_requirements = ["sphinx"] diff --git a/stubs/Send2Trash/METADATA.toml b/stubs/Send2Trash/METADATA.toml index ee7e83f3ef44..8a1eb1a6d2ec 100644 --- a/stubs/Send2Trash/METADATA.toml +++ b/stubs/Send2Trash/METADATA.toml @@ -1,4 +1,5 @@ version = "1.8.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/aws-xray-sdk/METADATA.toml b/stubs/aws-xray-sdk/METADATA.toml index 4a08bb07491e..dc525a93832b 100644 --- a/stubs/aws-xray-sdk/METADATA.toml +++ b/stubs/aws-xray-sdk/METADATA.toml @@ -1,4 +1,5 @@ version = "2.12.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/babel/METADATA.toml b/stubs/babel/METADATA.toml index 137f94d4033d..7dc2c18b494d 100644 --- a/stubs/babel/METADATA.toml +++ b/stubs/babel/METADATA.toml @@ -1,6 +1,7 @@ version = "2.11.*" requires = ["types-pytz"] obsolete_since = "2.12.1" # Released on 2023-02-28 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/beautifulsoup4/METADATA.toml b/stubs/beautifulsoup4/METADATA.toml index b152aa7acf1c..9be859b59b63 100644 --- a/stubs/beautifulsoup4/METADATA.toml +++ b/stubs/beautifulsoup4/METADATA.toml @@ -1,5 +1,6 @@ version = "4.12.*" requires = ["types-html5lib"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/bleach/METADATA.toml b/stubs/bleach/METADATA.toml index 5221c41230aa..276fbcfb4b2e 100644 --- a/stubs/bleach/METADATA.toml +++ b/stubs/bleach/METADATA.toml @@ -1,4 +1,5 @@ version = "6.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/boto/METADATA.toml b/stubs/boto/METADATA.toml index ca0c1fad6459..d6d7bfb95d81 100644 --- a/stubs/boto/METADATA.toml +++ b/stubs/boto/METADATA.toml @@ -1,5 +1,6 @@ version = "2.49.*" requires = [] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/braintree/METADATA.toml b/stubs/braintree/METADATA.toml index b866d119ad1b..04a0234504d2 100644 --- a/stubs/braintree/METADATA.toml +++ b/stubs/braintree/METADATA.toml @@ -1,4 +1,5 @@ version = "4.19.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/caldav/METADATA.toml b/stubs/caldav/METADATA.toml index 7781cfecfdfe..047218cc5fca 100644 --- a/stubs/caldav/METADATA.toml +++ b/stubs/caldav/METADATA.toml @@ -1,6 +1,7 @@ version = "1.2.*" # also types-lxml and types-icalendar when those stubs are added requires = ["types-requests", "types-vobject"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/chardet/METADATA.toml b/stubs/chardet/METADATA.toml index a8d4f2a04494..7e95f1f530e5 100644 --- a/stubs/chardet/METADATA.toml +++ b/stubs/chardet/METADATA.toml @@ -1,5 +1,6 @@ version = "5.0.*" obsolete_since = "5.1.0" # Released on 2022-12-01 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/commonmark/METADATA.toml b/stubs/commonmark/METADATA.toml index 31ce4482be4c..e711a71bf0ce 100644 --- a/stubs/commonmark/METADATA.toml +++ b/stubs/commonmark/METADATA.toml @@ -1,4 +1,5 @@ version = "0.9.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/docutils/METADATA.toml b/stubs/docutils/METADATA.toml index a11150fa189d..647482d5586b 100644 --- a/stubs/docutils/METADATA.toml +++ b/stubs/docutils/METADATA.toml @@ -1,4 +1,5 @@ version = "0.20.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-bugbear/METADATA.toml b/stubs/flake8-bugbear/METADATA.toml index c21f8c2fce92..08572dfc989d 100644 --- a/stubs/flake8-bugbear/METADATA.toml +++ b/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,5 @@ version = "23.5.9" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-builtins/METADATA.toml b/stubs/flake8-builtins/METADATA.toml index db11b9ead0a8..437b55a26e9a 100644 --- a/stubs/flake8-builtins/METADATA.toml +++ b/stubs/flake8-builtins/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-docstrings/METADATA.toml b/stubs/flake8-docstrings/METADATA.toml index bf44fdd13cff..4ec4b2b4cd7a 100644 --- a/stubs/flake8-docstrings/METADATA.toml +++ b/stubs/flake8-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "1.7.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-plugin-utils/METADATA.toml b/stubs/flake8-plugin-utils/METADATA.toml index 9a01e52f1539..8e38e593b437 100644 --- a/stubs/flake8-plugin-utils/METADATA.toml +++ b/stubs/flake8-plugin-utils/METADATA.toml @@ -1,4 +1,5 @@ version = "1.3.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-rst-docstrings/METADATA.toml b/stubs/flake8-rst-docstrings/METADATA.toml index c8abb998f374..a116b6d71011 100644 --- a/stubs/flake8-rst-docstrings/METADATA.toml +++ b/stubs/flake8-rst-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "0.3.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-simplify/METADATA.toml b/stubs/flake8-simplify/METADATA.toml index a11150fa189d..647482d5586b 100644 --- a/stubs/flake8-simplify/METADATA.toml +++ b/stubs/flake8-simplify/METADATA.toml @@ -1,4 +1,5 @@ version = "0.20.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/flake8-typing-imports/METADATA.toml b/stubs/flake8-typing-imports/METADATA.toml index 93e1f8e07cd2..ebd7f83a2eff 100644 --- a/stubs/flake8-typing-imports/METADATA.toml +++ b/stubs/flake8-typing-imports/METADATA.toml @@ -1,4 +1,5 @@ version = "1.14.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/google-cloud-ndb/METADATA.toml b/stubs/google-cloud-ndb/METADATA.toml index 63fe58dfbadb..10e0f7f8d83d 100644 --- a/stubs/google-cloud-ndb/METADATA.toml +++ b/stubs/google-cloud-ndb/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +partial_stub = true [tool.stubtest] stubtest_requirements = ["protobuf==3.20.2"] diff --git a/stubs/html5lib/METADATA.toml b/stubs/html5lib/METADATA.toml index 0d6ac713a2c1..80bcc75dc97d 100644 --- a/stubs/html5lib/METADATA.toml +++ b/stubs/html5lib/METADATA.toml @@ -1,4 +1,5 @@ version = "1.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/invoke/METADATA.toml b/stubs/invoke/METADATA.toml index d9b8010e52ab..6974fdac2bf2 100644 --- a/stubs/invoke/METADATA.toml +++ b/stubs/invoke/METADATA.toml @@ -1,4 +1,5 @@ version = "2.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/jsonschema/METADATA.toml b/stubs/jsonschema/METADATA.toml index d5dbdb9752b6..b4f510c3d074 100644 --- a/stubs/jsonschema/METADATA.toml +++ b/stubs/jsonschema/METADATA.toml @@ -1,4 +1,5 @@ version = "4.17.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/ldap3/METADATA.toml b/stubs/ldap3/METADATA.toml index 9159fae4d594..3c34f864a11d 100644 --- a/stubs/ldap3/METADATA.toml +++ b/stubs/ldap3/METADATA.toml @@ -1,5 +1,6 @@ version = "2.9.*" requires = ["types-pyasn1"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/oauthlib/METADATA.toml b/stubs/oauthlib/METADATA.toml index ab10fefcb1b5..67c8b5c62083 100644 --- a/stubs/oauthlib/METADATA.toml +++ b/stubs/oauthlib/METADATA.toml @@ -1,4 +1,5 @@ version = "3.2.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/openpyxl/METADATA.toml b/stubs/openpyxl/METADATA.toml index b34a69a3b7e8..3d4e5c5a3917 100644 --- a/stubs/openpyxl/METADATA.toml +++ b/stubs/openpyxl/METADATA.toml @@ -1,4 +1,5 @@ version = "3.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/opentracing/METADATA.toml b/stubs/opentracing/METADATA.toml index d00ec0514279..43c0d301d90f 100644 --- a/stubs/opentracing/METADATA.toml +++ b/stubs/opentracing/METADATA.toml @@ -1,4 +1,5 @@ version = "2.4.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/paramiko/METADATA.toml b/stubs/paramiko/METADATA.toml index 3fdfdc78d109..5c9238818ef4 100644 --- a/stubs/paramiko/METADATA.toml +++ b/stubs/paramiko/METADATA.toml @@ -1,6 +1,7 @@ version = "3.0.*" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/pep8-naming/METADATA.toml b/stubs/pep8-naming/METADATA.toml index 04ddbe7b06e3..361474831d94 100644 --- a/stubs/pep8-naming/METADATA.toml +++ b/stubs/pep8-naming/METADATA.toml @@ -1,4 +1,5 @@ version = "0.13.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/protobuf/METADATA.toml b/stubs/protobuf/METADATA.toml index 29e0be32bd0e..28d94736f196 100644 --- a/stubs/protobuf/METADATA.toml +++ b/stubs/protobuf/METADATA.toml @@ -1,5 +1,6 @@ version = "4.23.*" extra_description = "Generated with aid from mypy-protobuf v3.4.0" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/psycopg2/METADATA.toml b/stubs/psycopg2/METADATA.toml index 2a3162d1d0f9..4a249abf8dc3 100644 --- a/stubs/psycopg2/METADATA.toml +++ b/stubs/psycopg2/METADATA.toml @@ -1,4 +1,5 @@ version = "2.9.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/pyOpenSSL/METADATA.toml b/stubs/pyOpenSSL/METADATA.toml index baa929c652c4..4cdff58ef737 100644 --- a/stubs/pyOpenSSL/METADATA.toml +++ b/stubs/pyOpenSSL/METADATA.toml @@ -1,6 +1,7 @@ version = "23.1.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/pyflakes/METADATA.toml b/stubs/pyflakes/METADATA.toml index 7f11ff387461..c3490c9bb9ad 100644 --- a/stubs/pyflakes/METADATA.toml +++ b/stubs/pyflakes/METADATA.toml @@ -1,4 +1,5 @@ version = "3.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/python-datemath/METADATA.toml b/stubs/python-datemath/METADATA.toml index 8b3cb47b1e3b..744a8cd915fe 100644 --- a/stubs/python-datemath/METADATA.toml +++ b/stubs/python-datemath/METADATA.toml @@ -1,6 +1,7 @@ version = "1.5.*" # Requires a version of arrow with a `py.typed` file requires = ["arrow>=1.0.1"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/python-dateutil/METADATA.toml b/stubs/python-dateutil/METADATA.toml index 2b4746defe7f..175f394fa4c1 100644 --- a/stubs/python-dateutil/METADATA.toml +++ b/stubs/python-dateutil/METADATA.toml @@ -1,4 +1,5 @@ version = "2.8.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/pyvmomi/METADATA.toml b/stubs/pyvmomi/METADATA.toml index 6885f10e0a54..41a60d733736 100644 --- a/stubs/pyvmomi/METADATA.toml +++ b/stubs/pyvmomi/METADATA.toml @@ -1,5 +1,6 @@ version = "8.0.0.*" obsolete_since = "8.0.1.0" # Released on 2023-05-05 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/redis/METADATA.toml b/stubs/redis/METADATA.toml index 11ba24291f24..423ba583812f 100644 --- a/stubs/redis/METADATA.toml +++ b/stubs/redis/METADATA.toml @@ -1,6 +1,7 @@ version = "4.5.5" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0", "types-pyOpenSSL"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/setuptools/METADATA.toml b/stubs/setuptools/METADATA.toml index 948bda81416b..a4258d866ee2 100644 --- a/stubs/setuptools/METADATA.toml +++ b/stubs/setuptools/METADATA.toml @@ -1,4 +1,5 @@ version = "67.7.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/simplejson/METADATA.toml b/stubs/simplejson/METADATA.toml index c6ff42e733e8..2f8d0e659e3c 100644 --- a/stubs/simplejson/METADATA.toml +++ b/stubs/simplejson/METADATA.toml @@ -1,4 +1,5 @@ version = "3.19.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/stripe/METADATA.toml b/stubs/stripe/METADATA.toml index 098add938cc6..045114fe5f0c 100644 --- a/stubs/stripe/METADATA.toml +++ b/stubs/stripe/METADATA.toml @@ -1,4 +1,5 @@ version = "3.5.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/tensorflow/METADATA.toml b/stubs/tensorflow/METADATA.toml index 83aaffe768df..1ddac574ea93 100644 --- a/stubs/tensorflow/METADATA.toml +++ b/stubs/tensorflow/METADATA.toml @@ -1,6 +1,7 @@ version = "2.12.*" # requires a version of numpy with a `py.typed` file requires = ["numpy>=1.20", "types-protobuf"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/urllib3/METADATA.toml b/stubs/urllib3/METADATA.toml index 84c49f9bb918..344c34462d5e 100644 --- a/stubs/urllib3/METADATA.toml +++ b/stubs/urllib3/METADATA.toml @@ -1,5 +1,6 @@ version = "1.26.*" obsolete_since = "2.0.0" # Released on 2023-04-26 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/stubs/waitress/METADATA.toml b/stubs/waitress/METADATA.toml index 1819293d3303..be1838d9fd5e 100644 --- a/stubs/waitress/METADATA.toml +++ b/stubs/waitress/METADATA.toml @@ -1,5 +1,6 @@ version = "2.1.*" requires = [] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/tests/parse_metadata.py b/tests/parse_metadata.py index 25609e9514cf..a99e89a69063 100644 --- a/tests/parse_metadata.py +++ b/tests/parse_metadata.py @@ -123,11 +123,22 @@ class StubMetadata: obsolete_since: Annotated[str, "A string representing a specific version"] | None no_longer_updated: bool uploaded_to_pypi: Annotated[bool, "Whether or not a distribution is uploaded to PyPI"] + partial_stub: Annotated[bool, "Whether this is a partial type stub package as per PEP 561."] stubtest_settings: StubtestSettings _KNOWN_METADATA_FIELDS: Final = frozenset( - {"version", "requires", "extra_description", "stub_distribution", "obsolete_since", "no_longer_updated", "upload", "tool"} + { + "version", + "requires", + "extra_description", + "stub_distribution", + "obsolete_since", + "no_longer_updated", + "upload", + "tool", + "partial_stub", + } ) _KNOWN_METADATA_TOOL_FIELDS: Final = { "stubtest": { @@ -190,6 +201,8 @@ def read_metadata(distribution: str) -> StubMetadata: assert type(no_longer_updated) is bool uploaded_to_pypi: object = data.get("upload", True) assert type(uploaded_to_pypi) is bool + partial_stub: object = data.get("partial_stub", True) + assert type(partial_stub) is bool empty_tools: dict[object, object] = {} tools_settings: object = data.get("tool", empty_tools) @@ -209,6 +222,7 @@ def read_metadata(distribution: str) -> StubMetadata: obsolete_since=obsolete_since, no_longer_updated=no_longer_updated, uploaded_to_pypi=uploaded_to_pypi, + partial_stub=partial_stub, stubtest_settings=read_stubtest_settings(distribution), )