Skip to content

Commit

Permalink
Moved metadata helpers to metadata module.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaraco committed Apr 18, 2024
1 parent 7ff636d commit 57af006
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 49 deletions.
45 changes: 45 additions & 0 deletions jaraco/packaging/metadata.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import re

from build import util

Expand All @@ -12,3 +13,47 @@ def load(
Allow overriding the isolation behavior at the enviroment level.
"""
return util.project_wheel_metadata(source_dir, isolated, **kwargs)


def hunt_down_url(meta):
"""
Given project metadata, figure out what the package URL is.
"""
return meta['Home-page'] or get_best(meta.get_all('Project-URL'))


def get_best(project_urls):
lookup = dict(url.split(', ') for url in project_urls)
return lookup.get('Source') or lookup.get('Homepage')


def extract_author(meta):
"""
Given project metadata, figure out who the author is.
The metadata is so irregular, just make some inferences and refine.
This form comes from a setup.cfg file or setup.py.
>>> meta = {'Author': 'Jason R. Coombs'}
>>> extract_author(meta)
'Jason R. Coombs'
>>> meta = {'Author': 'Foo Bar, Bing Baz'}
>>> extract_author(meta)
'Foo Bar, Bing Baz'
This form comes from pyproject.toml converted from the above config.
>>> meta = {'Author-email': '"Jason R. Coombs" <jaraco@contoso.com>', 'Author': None}
>>> extract_author(meta)
'Jason R. Coombs'
>>> meta = {'Author-email': 'Foo Bar <foo@bar.name>, Bing Baz <bing@baz.name>', 'Author': None}
>>> extract_author(meta)
'Foo Bar, Bing Baz'
"""
return meta['Author'] or ', '.join(
match.group('name')
for match in re.finditer(
r'["]?(?P<name>\w[\w\s.]*?)["]?\s+<\w+@[\w.]+>', meta['Author-email']
)
)
53 changes: 4 additions & 49 deletions jaraco/packaging/sphinx.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"""

import os
import re
import warnings
from importlib import metadata
from typing import ClassVar
Expand All @@ -19,7 +18,7 @@

from jaraco.context import suppress

from .metadata import load
from . import metadata as jp_metadata


def setup(app):
Expand Down Expand Up @@ -113,55 +112,11 @@ def load_config_from_setup(app, config):
"""
# for now, assume project root is one level up
root = os.path.join(app.confdir, '..')
meta = _load_metadata_from_wheel() or load(root)
meta = _load_metadata_from_wheel() or jp_metadata.load(root)
config.project = meta['Name']
config.version = config.release = meta['Version']
config.package_url = hunt_down_url(meta)
config.author = config.copyright = extract_author(meta)


def hunt_down_url(meta):
"""
Given project metadata, figure out what the package URL is.
"""
return meta['Home-page'] or get_best(meta.get_all('Project-URL'))


def get_best(project_urls):
lookup = dict(url.split(', ') for url in project_urls)
return lookup.get('Source') or lookup.get('Homepage')


def extract_author(meta):
"""
Given project metadata, figure out who the author is.
The metadata is so irregular, just make some inferences and refine.
This form comes from a setup.cfg file or setup.py.
>>> meta = {'Author': 'Jason R. Coombs'}
>>> extract_author(meta)
'Jason R. Coombs'
>>> meta = {'Author': 'Foo Bar, Bing Baz'}
>>> extract_author(meta)
'Foo Bar, Bing Baz'
This form comes from pyproject.toml converted from the above config.
>>> meta = {'Author-email': '"Jason R. Coombs" <jaraco@contoso.com>', 'Author': None}
>>> extract_author(meta)
'Jason R. Coombs'
>>> meta = {'Author-email': 'Foo Bar <foo@bar.name>, Bing Baz <bing@baz.name>', 'Author': None}
>>> extract_author(meta)
'Foo Bar, Bing Baz'
"""
return meta['Author'] or ', '.join(
match.group('name')
for match in re.finditer(
r'["]?(?P<name>\w[\w\s.]*?)["]?\s+<\w+@[\w.]+>', meta['Author-email']
)
)
config.package_url = jp_metadata.hunt_down_url(meta)
config.author = config.copyright = jp_metadata.extract_author(meta)


def configure_substitutions(app, config):
Expand Down
1 change: 1 addition & 0 deletions newsfragments/+fd8933f2.removal.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Moved metadata helpers to metadata module.

0 comments on commit 57af006

Please sign in to comment.