adsfolio.pdf.doi_providers
Metadata provider abstractions for DOI lookup.
- class adsfolio.pdf.doi_providers.DoiProvider(*values)[source]
-
Supported metadata providers for DOI lookup.
- ADS = 'ads'
- CROSSREF = 'crossref'
- DATACITE = 'datacite'
- exception adsfolio.pdf.doi_providers.ProviderError[source]
Bases:
ExceptionBase error for external DOI provider lookups.
- exception adsfolio.pdf.doi_providers.ProviderNetworkError[source]
Bases:
adsfolio.pdf.doi_providers.ProviderErrorNetwork connection or timeout failure contacting DOI provider.
- exception adsfolio.pdf.doi_providers.ProviderRateLimitError[source]
Bases:
adsfolio.pdf.doi_providers.ProviderErrorRate limit exceeded by DOI provider.
- adsfolio.pdf.doi_providers.fetch_crossref_doi(doi, *, session=None, timeout=(3.05, 15.0))[source]
Fetch metadata for an exact DOI from Crossref.
- Parameters:
- Returns:
Normalized document mapping if found, otherwise None on HTTP 404.
- Return type:
dict or None
- Raises:
ValueError – If doi is not a valid DOI format.
ProviderRateLimitError – If Crossref returns status 429.
ProviderNetworkError – If network connection or timeout fails.
ProviderError – If Crossref returns a 5xx/other error, malformed payload, or mismatched DOI.
- adsfolio.pdf.doi_providers.fetch_datacite_doi(doi, *, session=None, timeout=(3.05, 15.0))[source]
Fetch metadata for an exact DOI from DataCite.
- Parameters:
- Returns:
Normalized document mapping if found, otherwise None on HTTP 404.
- Return type:
dict or None
- Raises:
ValueError – If doi is not a valid DOI format.
ProviderRateLimitError – If DataCite returns status 429.
ProviderNetworkError – If network connection or timeout fails.
ProviderError – If DataCite returns a 5xx/other error, malformed payload, or mismatched DOI.