@@ -109,6 +109,24 @@ def expected_metadata_version() -> str:
109109 return metadata .metadata_version
110110
111111
112+ def expected_python_classifiers (min_version : str | None = None ) -> str :
113+ if min_version :
114+ min_version_tuple = tuple (map (int , min_version .split ("." )))
115+ relevant_versions = set ()
116+ for version in Package .AVAILABLE_PYTHONS :
117+ version_tuple = tuple (map (int , version .split ("." )))
118+ if version_tuple >= min_version_tuple [: len (version_tuple )]:
119+ relevant_versions .add (version )
120+ else :
121+ relevant_versions = Package .AVAILABLE_PYTHONS
122+ return "\n " .join (
123+ f"Classifier: Programming Language :: Python :: { version } "
124+ for version in sorted (
125+ relevant_versions , key = lambda x : tuple (map (int , x .split ("." )))
126+ )
127+ )
128+
129+
112130@pytest .mark .parametrize ("project" , ("simple_project" , "simple_project_legacy" ))
113131def test_builder_installs_proper_files_for_standard_packages (
114132 project : str ,
@@ -163,16 +181,8 @@ def test_builder_installs_proper_files_for_standard_packages(
163181 == "[console_scripts]\n baz=bar:baz.boom.bim\n foo=foo:bar\n "
164182 "fox=fuz.foo:bar.baz\n \n "
165183 )
166- python_classifiers = "\n " .join (
167- f"Classifier: Programming Language :: Python :: { version } "
168- for version in sorted (
169- Package .AVAILABLE_PYTHONS ,
170- key = lambda x : tuple (map (int , x .split ("." ))),
171- )
172- )
173- metadata_version = expected_metadata_version ()
174184 metadata = f"""\
175- Metadata-Version: { metadata_version }
185+ Metadata-Version: { expected_metadata_version () }
176186Name: simple-project
177187Version: 1.2.3
178188Summary: Some description.
@@ -183,7 +193,7 @@ def test_builder_installs_proper_files_for_standard_packages(
183193Author-email: sebastien@eustace.io
184194Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
185195Classifier: License :: OSI Approved :: MIT License
186- { python_classifiers }
196+ { expected_python_classifiers () }
187197Classifier: Topic :: Software Development :: Build Tools
188198Classifier: Topic :: Software Development :: Libraries :: Python Modules
189199Project-URL: Documentation, https://python-poetry.org/docs
@@ -346,9 +356,8 @@ def test_builder_generates_proper_metadata_when_multiple_readme_files(
346356 dist_info = tmp_venv .site_packages .find (dist_info )[0 ]
347357 assert dist_info .joinpath ("METADATA" ).exists ()
348358
349- metadata_version = expected_metadata_version ()
350359 metadata = f"""\
351- Metadata-Version: { metadata_version }
360+ Metadata-Version: { expected_metadata_version () }
352361Name: my-package
353362Version: 0.1
354363Summary: Some description.
@@ -357,14 +366,7 @@ def test_builder_generates_proper_metadata_when_multiple_readme_files(
357366Author-email: you@example.com
358367Requires-Python: >=3.7,<4.0
359368Classifier: License :: OSI Approved :: MIT License
360- Classifier: Programming Language :: Python :: 3
361- Classifier: Programming Language :: Python :: 3.7
362- Classifier: Programming Language :: Python :: 3.8
363- Classifier: Programming Language :: Python :: 3.9
364- Classifier: Programming Language :: Python :: 3.10
365- Classifier: Programming Language :: Python :: 3.11
366- Classifier: Programming Language :: Python :: 3.12
367- Classifier: Programming Language :: Python :: 3.13
369+ { expected_python_classifiers ("3.7" )}
368370Project-URL: Homepage, https://python-poetry.org
369371Description-Content-Type: text/x-rst
370372
0 commit comments