adsfolio.pdf.upgrade

arXiv-to-published PDF upgrade workflow.

class adsfolio.pdf.upgrade.PdfUpgrader(client, logger=None)[source]

Bases: object

Upgrade manager for arXiv PDFs tracked in sidecar.

Parameters:
batch_upgrade(sidecar, apply=False, overwrite_arxiv_with_official=False, arxiv_backup_if_overwritten=None, skip_annotation_port=False, force=False, delay_seconds=0.0)[source]

Run upgrade checks for all arXiv entries in sidecar.

Parameters:
Return type:

list[adsfolio.pdf.upgrade_utils.UpgradeResult]

upgrade_pdf(sidecar, original_filename, apply=False, overwrite_arxiv_with_official=False, arxiv_backup_if_overwritten=None, skip_annotation_port=False, force=False, published_match=<object object>)[source]

Upgrade one arXiv sidecar record if published PDF exists.

Parameters:
Return type:

adsfolio.pdf.upgrade_utils.UpgradeResult

class adsfolio.pdf.upgrade.PublishedMatch(bibcode, document)

Bases: object

Published bibcode resolution result.

Parameters:
bibcode: str
document: dict[str, Any]
class adsfolio.pdf.upgrade.UpgradeResult(original_filename, current_filename, old_bibcode, new_bibcode, status, message, downloaded_path=None, backup_path=None, annotations_ported=0, annotations_failed=0, unported_annotations_file=None)

Bases: object

Result for one sidecar-entry upgrade attempt.

Parameters:
  • original_filename (str)

  • current_filename (str)

  • old_bibcode (str)

  • new_bibcode (str | None)

  • status (str)

  • message (str)

  • downloaded_path (str | None)

  • backup_path (str | None)

  • annotations_ported (int)

  • annotations_failed (int)

  • unported_annotations_file (str | None)

annotations_failed: int = 0
annotations_ported: int = 0
backup_path: str | None = None
current_filename: str
downloaded_path: str | None = None
message: str
new_bibcode: str | None
old_bibcode: str
original_filename: str
status: str
unported_annotations_file: str | None = None
adsfolio.pdf.upgrade.batch_upgrade(client, sidecar, apply=False, overwrite_arxiv_with_official=False, arxiv_backup_if_overwritten=None, skip_annotation_port=False, force=False, delay_seconds=0.0)[source]

Convenience wrapper for batch upgrade operations.

Parameters:
Return type:

list[adsfolio.pdf.upgrade_utils.UpgradeResult]

adsfolio.pdf.upgrade.check_published_version(client, bibcode)

Check whether arXiv bibcode has a published counterpart in ADS.

Returns published bibcode + doc if found, else None.

Parameters:
Return type:

PublishedMatch | None

adsfolio.pdf.upgrade.check_published_versions(client, bibcodes)

Check published counterparts for many arXiv bibcodes with batched queries.

Returns a mapping arxiv_bibcode -> PublishedMatch | None.

Parameters:
Return type:

dict[str, PublishedMatch | None]

adsfolio.pdf.upgrade.detect_arxiv_entries(sidecar)

Return sidecar keys that are identified as arXiv entries.

Parameters:

sidecar (Any)

Return type:

list[str]

adsfolio.pdf.upgrade.is_arxiv_bibcode(bibcode)

Return True if bibcode appears to be arXiv-derived.

Parameters:

bibcode (str)

Return type:

bool

adsfolio.pdf.upgrade.is_arxiv_doi(doi)

Return True if DOI is arXiv DOI namespace.

Parameters:

doi (str)

Return type:

bool

adsfolio.pdf.upgrade.is_arxiv_entry(entry)

Detect whether sidecar metadata corresponds to arXiv source.

Parameters:

entry (dict[str, Any])

Return type:

bool