adsfolio.gui.edition_merge

Choose PDF editions using shared identifiers and explicit user review.

class adsfolio.gui.edition_merge.EditionMergeDialog(request, parent=None)[source]

Bases: PySide6.QtWidgets.QDialog

Confirm source and target before reviewing any annotation transfers.

Parameters:
property source: pathlib.Path | None[source]

Return the explicitly selected annotation source, if any.

staticMetaObject = PySide6.QtCore.QMetaObject("EditionMergeDialog" inherits "QDialog": )
property target: pathlib.Path | None[source]

Return the PDF chosen to supply the page layout.

class adsfolio.gui.edition_merge.EditionMergeRequest(root, records, target, choose_source=False, linked=False, event=None)[source]

Bases: object

Keep a merge review tied to its library, files, and watcher arrival.

Parameters:
choose_source: bool = False
event: adsfolio.pdf.watch_session.WatchEvent | None = None
linked: bool = False
records: tuple[dict[str, Any], ...]
root: pathlib.Path
target: pathlib.Path
adsfolio.gui.edition_merge.edition_candidates(arrival, records)[source]

Find other records with a shared bibcode, DOI, or version-free arXiv ID.

Parameters:
Return type:

tuple[tuple[dict[str, Any], …], bool]

adsfolio.gui.edition_merge.edition_identifiers(record)[source]

Collect exact ADS, DOI, and version-free arXiv identifiers for a PDF.

Parameters:

record (collections.abc.Mapping[str, Any])

Return type:

set[tuple[str, str]]

adsfolio.gui.edition_merge.edition_role(record)[source]

Classify a stored publication identifier as preprint, published, or unknown.

Parameters:

record (collections.abc.Mapping[str, Any])

Return type:

str