Skip to content

Commit

Permalink
fix: preserve user specified name in metadata (#65)
Browse files Browse the repository at this point in the history
* fix: preserve user specified name in metadata

Signed-off-by: Henry Schreiner <[email protected]>

* Update pyproject_metadata/__init__.py

Co-authored-by: Pradyun Gedam <[email protected]>

* tests: add test of canonical_name

Signed-off-by: Henry Schreiner <[email protected]>

---------

Signed-off-by: Henry Schreiner <[email protected]>
Co-authored-by: Pradyun Gedam <[email protected]>
  • Loading branch information
henryiii and pradyunsg authored Nov 29, 2023
1 parent f5e1688 commit db480f1
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
7 changes: 5 additions & 2 deletions pyproject_metadata/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import os
import os.path
import pathlib
import re
import typing

from collections.abc import Mapping
Expand All @@ -17,6 +16,7 @@
import packaging.markers
import packaging.requirements
import packaging.specifiers
import packaging.utils
import packaging.version


Expand Down Expand Up @@ -195,9 +195,12 @@ class StandardMetadata:
dynamic: list[str] = dataclasses.field(default_factory=list)

def __post_init__(self) -> None:
self.name = re.sub(r'[-_.]+', '-', self.name).lower()
self._update_dynamic(self.version)

@property
def canonical_name(self) -> str:
return packaging.utils.canonicalize_name(self.name)

@classmethod
def from_pyproject(
cls,
Expand Down
2 changes: 1 addition & 1 deletion tests/packages/full-metadata/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[project]
name = 'full-metadata'
name = 'full_metadata'
version = '3.2.1'
description = 'A package with all the metadata :)'
readme = 'README.md'
Expand Down
5 changes: 3 additions & 2 deletions tests/test_standard_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,8 @@ def test_value(after_rfc):
metadata.as_rfc822()

assert metadata.dynamic == []
assert metadata.name == 'full-metadata'
assert metadata.name == 'full_metadata'
assert metadata.canonical_name == 'full-metadata'
assert metadata.version == packaging.version.Version('3.2.1')
assert metadata.requires_python == packaging.specifiers.Specifier('>=3.8')
assert metadata.license.file is None
Expand Down Expand Up @@ -595,7 +596,7 @@ def test_as_rfc822():
core_metadata = metadata.as_rfc822()
assert core_metadata.headers == {
'Metadata-Version': ['2.1'],
'Name': ['full-metadata'],
'Name': ['full_metadata'],
'Summary': ['A package with all the metadata :)'],
'Version': ['3.2.1'],
'Keywords': ['trampolim,is,interesting'],
Expand Down

0 comments on commit db480f1

Please sign in to comment.