Skip to content

Commit

Permalink
Add basic pyproject.toml parsers #3753
Browse files Browse the repository at this point in the history
Reference: #3753
Signed-off-by: Ayan Sinha Mahapatra <[email protected]>
  • Loading branch information
AyanSinhaMahapatra committed Apr 30, 2024
1 parent 04e24e0 commit 77ae3ed
Show file tree
Hide file tree
Showing 28 changed files with 1,785 additions and 289 deletions.
1 change: 1 addition & 0 deletions src/packagedcode/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
# pypi.PypiSdistArchiveHandler,
pypi.PypiWheelHandler,
pypi.PyprojectTomlHandler,
pypi.PoetryPyprojectTomlHandler,
pypi.PythonEditableInstallationPkgInfoFile,
pypi.PythonEggPkgInfoFile,
pypi.PythonInstalledWheelMetadataFile,
Expand Down
27 changes: 4 additions & 23 deletions src/packagedcode/debian.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from packagedcode import models
from packagedcode.utils import get_ancestor
from packagedcode.utils import parse_maintainer_name_email

"""
Handle Debian package archives, control files and installed databases.
Expand Down Expand Up @@ -653,20 +654,20 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No

maintainer = debian_data.get('maintainer')
if maintainer:
maintainer_name, maintainer_email = parse_debian_maintainers(maintainer)
maintainer_name, maintainer_email = parse_maintainer_name_email(maintainer)
party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email)
parties.append(party)

orig_maintainer = debian_data.get('original_maintainer')
if orig_maintainer:
maintainer_name, maintainer_email = parse_debian_maintainers(orig_maintainer)
maintainer_name, maintainer_email = parse_maintainer_name_email(orig_maintainer)
party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email)
parties.append(party)

uploaders = debian_data.get('uploaders')
if uploaders:
for uploader in uploaders.split(", "):
uploader_name, uploader_email = parse_debian_maintainers(uploader)
uploader_name, uploader_email = parse_maintainer_name_email(uploader)
party = models.Party(role='uploader', name=uploader_name, email=uploader_email)
parties.append(party)

Expand Down Expand Up @@ -736,26 +737,6 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No
return models.PackageData.from_data(package_data, package_only)


def parse_debian_maintainers(maintainer):
"""
Get name and email values from a debian maintainer string.
Example string:
Debian systemd Maintainers <[email protected]>
"""
email_wrappers = ["<", ">"]
has_email = "@" in maintainer and all([
True
for char in email_wrappers
if char in maintainer
])
if not has_email:
return maintainer, None

name, _, email = maintainer.rpartition("<")
return name.rstrip(" "), email.rstrip(">")


def populate_debian_namespace(packages):
"""
For an iterable of debian `packages`, populate the
Expand Down

0 comments on commit 77ae3ed

Please sign in to comment.