#1 ingest: normalize the pinned caller id (_norm_cited_id) so a non-bare DOI caller cannot store a URL-form papers.id that defeats DQ-5 idempotency / the startswith(10.) recovery gates. #2 quality.section_label: collapse to a controlled bucket only for an EXACT canonical heading; descriptive titles ('Abstract Nonsense...') keep their real title instead of being mislabelled. #4 ra_grobid_backfill: release the read connection before the slow GROBID network loop, fresh connection for the write (no idle-in-transaction across the loop over the flaky tunnel). #5/#10 tex: flatten_inputs strips unresolved input/include at the depth cap (no literal leak on cycles); _norm_texkey strips only a single leading ./ . #6/#7 arxiv.fetch_source: keep non-.tex members resolvable for input; pick primary on an UN-commented documentclass line. #13 is_arxiv_id: also exclude http:// and arXiv-DOI forms. Tests added/updated for each. Left as deliberate decisions: #3 (pre-section text drop is pre-existing in extract_sections; abstract stored separately), #8 (script normalizer is intentionally self-contained, already documented), #9/#11/#12 (no current trigger / tightening the gzip heuristic would reject valid old LaTeX like documentstyle / title truncation is by design on a write-only column). ruff + mypy clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
753 B
Python
22 lines
753 B
Python
"""Tests for scripts.rc_tex_reingest."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from scripts.rc_tex_reingest import is_arxiv_id
|
|
|
|
|
|
def test_is_arxiv_id_accepts_modern_and_legacy() -> None:
|
|
assert is_arxiv_id("2305.10988")
|
|
assert is_arxiv_id("math/0603097")
|
|
assert is_arxiv_id("1005.2698")
|
|
|
|
|
|
def test_is_arxiv_id_rejects_dois_and_wids() -> None:
|
|
assert not is_arxiv_id("10.1007/s00454-019-00132-8")
|
|
assert not is_arxiv_id("10.14279/depositonce-20357")
|
|
assert not is_arxiv_id("W2971636899")
|
|
assert not is_arxiv_id("https://openalex.org/W2971636899")
|
|
assert not is_arxiv_id("http://openalex.org/W2971636899")
|
|
assert not is_arxiv_id("10.48550/arXiv.2305.10988") # arXiv DOI form, not bare id
|
|
assert not is_arxiv_id("")
|