@@ -174,52 +174,51 @@ def test_package_safe_name_is_correct(pkg_name, expected_name):
174174def test_supported_metadata_fields ():
175175 """Check that ``twine.package.PackageMetadata`` contains the expected fields."""
176176 assert set (package_file .PackageMetadata .__annotations__ ) == {
177- # identify release
177+ # Metadata 1.0 - PEP 241
178+ "metadata_version" ,
178179 "name" ,
179180 "version" ,
180- # file content
181- "filetype" ,
182- "pyversion" ,
183- # additional meta-data
184- "metadata_version" ,
181+ "platforms" ,
185182 "summary" ,
183+ "description" ,
184+ "keywords" ,
186185 "home_page" ,
187186 "author" ,
188187 "author_email" ,
189- "maintainer" ,
190- "maintainer_email" ,
191188 "license" ,
192- "description" ,
193- "keywords" ,
194- "platforms" ,
195- "classifiers" ,
196- "download_url" ,
189+ # Metadata 1.1 - PEP 314
197190 "supported_platforms" ,
198- "comment" ,
199- "md5_digest" ,
200- "sha256_digest" ,
201- "blake2_256_digest" ,
202- "gpg_signature" ,
203- "attestations" ,
204- # PEP 314
191+ "download_url" ,
192+ "classifiers" ,
205193 "provides" ,
206194 "requires" ,
207195 "obsoletes" ,
208- # Metadata 1.2
209- "project_urls" ,
196+ # Metadata 1.2 - PEP 345
197+ "maintainer" ,
198+ "maintainer_email" ,
199+ "requires_dist" ,
210200 "provides_dist" ,
211201 "obsoletes_dist" ,
212- "requires_dist" ,
213- "requires_external" ,
214202 "requires_python" ,
215- # Metadata 2.1
216- "provides_extra" ,
203+ "requires_external" ,
204+ "project_urls" ,
205+ # Metadata 2.1 - PEP 566
217206 "description_content_type" ,
218- # Metadata 2.2
207+ "provides_extra" ,
208+ # Metadata 2.2 - PEP 643
219209 "dynamic" ,
220- # Metadata 2.4
210+ # Metadata 2.4 - PEP 639
221211 "license_expression" ,
222212 "license_files" ,
213+ # additional meta-data
214+ "filetype" ,
215+ "pyversion" ,
216+ "comment" ,
217+ "md5_digest" ,
218+ "sha256_digest" ,
219+ "blake2_256_digest" ,
220+ "gpg_signature" ,
221+ "attestations" ,
223222 }
224223
225224
@@ -228,34 +227,36 @@ def test_supported_metadata_fields():
228227def test_metadata_dictionary_values (gpg_signature , attestation ):
229228 """Pass values from pkginfo.Distribution through to dictionary."""
230229 meta = dict (
230+ metadata_version = pretend .stub (),
231231 name = "whatever" ,
232232 version = "1.2.3" ,
233- metadata_version = pretend .stub (),
233+ platform = pretend .stub (),
234234 summary = pretend .stub (),
235+ description = pretend .stub (),
236+ keywords = pretend .stub (),
235237 home_page = pretend .stub (),
236238 author = pretend .stub (),
237239 author_email = pretend .stub (),
238- maintainer = pretend .stub (),
239- maintainer_email = pretend .stub (),
240240 license = pretend .stub (),
241- description = pretend .stub (),
242- keywords = pretend .stub (),
243- platform = pretend .stub (),
244- classifiers = pretend .stub (),
245- download_url = pretend .stub (),
246241 supported_platform = pretend .stub (),
242+ download_url = pretend .stub (),
243+ classifiers = pretend .stub (),
247244 provides = pretend .stub (),
248245 requires = pretend .stub (),
249246 obsoletes = pretend .stub (),
250- project_urls = pretend .stub (),
247+ maintainer = pretend .stub (),
248+ maintainer_email = pretend .stub (),
249+ requires_dist = pretend .stub (),
251250 provides_dist = pretend .stub (),
252251 obsoletes_dist = pretend .stub (),
253- requires_dist = pretend .stub (),
254- requires_external = pretend .stub (),
255252 requires_python = pretend .stub (),
256- provides_extra = pretend .stub (),
253+ requires_external = pretend .stub (),
254+ project_urls = pretend .stub (),
257255 description_content_type = pretend .stub (),
256+ provides_extra = pretend .stub (),
258257 dynamic = pretend .stub (),
258+ license_expression = pretend .stub (),
259+ license_files = pretend .stub (),
259260 )
260261
261262 package = package_file .PackageFile (
@@ -271,51 +272,53 @@ def test_metadata_dictionary_values(gpg_signature, attestation):
271272
272273 result = package .metadata_dictionary ()
273274
274- # identify release
275+ # Medata 1.0 - PEP 241
276+ assert result ["metadata_version" ] == meta ["metadata_version" ]
275277 assert result ["name" ] == package .safe_name
276278 assert result ["version" ] == package .version == meta ["version" ]
277-
278- # file content
279- assert result ["filetype" ] == package .filetype
280- assert result ["pyversion" ] == package .python_version
281-
282- # additional meta-data
283- assert result ["metadata_version" ] == meta ["metadata_version" ]
279+ assert result ["platform" ] == meta ["platform" ]
284280 assert result ["summary" ] == meta ["summary" ]
281+ assert result ["description" ] == meta ["description" ]
282+ assert result ["keywords" ] == meta ["keywords" ]
285283 assert result ["home_page" ] == meta ["home_page" ]
286284 assert result ["author" ] == meta ["author" ]
287285 assert result ["author_email" ] == meta ["author_email" ]
288- assert result ["maintainer" ] == meta ["maintainer" ]
289- assert result ["maintainer_email" ] == meta ["maintainer_email" ]
290286 assert result ["license" ] == meta ["license" ]
291- assert result ["description" ] == meta ["description" ]
292- assert result ["keywords" ] == meta ["keywords" ]
293- assert result ["platform" ] == meta ["platform" ]
294- assert result ["classifiers" ] == meta ["classifiers" ]
295- assert result ["download_url" ] == meta ["download_url" ]
296- assert result ["supported_platform" ] == meta ["supported_platform" ]
297- assert result ["comment" ] == package .comment
298287
299- # PEP 314
288+ # Metadata 1.1 - PEP 314
289+ assert result ["supported_platform" ] == meta ["supported_platform" ]
290+ assert result ["download_url" ] == meta ["download_url" ]
291+ assert result ["classifiers" ] == meta ["classifiers" ]
300292 assert result ["provides" ] == meta ["provides" ]
301293 assert result ["requires" ] == meta ["requires" ]
302294 assert result ["obsoletes" ] == meta ["obsoletes" ]
303295
304- # Metadata 1.2
305- assert result ["project_urls" ] == meta ["project_urls" ]
296+ # Metadata 1.2 - PEP 345
297+ assert result ["maintainer" ] == meta ["maintainer" ]
298+ assert result ["maintainer_email" ] == meta ["maintainer_email" ]
299+ assert result ["requires_dist" ] == meta ["requires_dist" ]
306300 assert result ["provides_dist" ] == meta ["provides_dist" ]
307301 assert result ["obsoletes_dist" ] == meta ["obsoletes_dist" ]
308- assert result ["requires_dist" ] == meta ["requires_dist" ]
309- assert result ["requires_external" ] == meta ["requires_external" ]
310302 assert result ["requires_python" ] == meta ["requires_python" ]
303+ assert result ["requires_external" ] == meta ["requires_external" ]
304+ assert result ["project_urls" ] == meta ["project_urls" ]
311305
312- # Metadata 2.1
313- assert result ["provides_extra" ] == meta ["provides_extra" ]
306+ # Metadata 2.1 - PEP 566
314307 assert result ["description_content_type" ] == meta ["description_content_type" ]
308+ assert result ["provides_extra" ] == meta ["provides_extra" ]
315309
316- # Metadata 2.2
310+ # Metadata 2.2 - PEP 643
317311 assert result ["dynamic" ] == meta ["dynamic" ]
318312
313+ # Metadata 2.4 - PEP 639
314+ assert result ["license_expression" ] == meta ["license_expression" ]
315+ assert result ["license_files" ] == meta ["license_files" ]
316+
317+ # Additional metadata.
318+ assert result ["comment" ] == package .comment
319+ assert result ["filetype" ] == package .filetype
320+ assert result ["pyversion" ] == package .python_version
321+
319322 # GPG signature
320323 assert result .get ("gpg_signature" ) == gpg_signature
321324
0 commit comments