Skip to content

Vj/ferrific concept recognizer - #124

Merged
VarenyaJ merged 9 commits into
vj/developfrom
vj/ferrific-concept-recognizer
Aug 21, 2026
Merged

VarenyaJ merged 9 commits into
vj/developfrom
vj/ferrific-concept-recognizer

Conversation

@VarenyaJ

Copy link
Copy Markdown
Collaborator

Add ferrific and fast_hpo_cr as optional HPO concept recognizers as I continue to test the text parsing, especially on the Observer files

Wraps fast_hpo_cr (FastHPOCR on PyPI) as an opt-in third recognizer,
never installed by default. Works around two real upstream packaging
issues: FastHPOCR's own PyPI release doesn't declare pronto as a
dependency despite needing it, and its README's ~3-minute indexing
estimate is closer to 19 minutes against a real, current hp.obo -
both documented honestly rather than silently absorbed. Index is
built once and cached on disk; excluded is always False since
fast_hpo_cr has no negation detection.
Mirrors fenominal_cr.py's shape, using ferrific's native map_text_longest
output instead of a JSON round trip. Not yet added to pyproject.toml's
pinned dependencies - ferrific's published PyPI version (0.1.2) predates
this session's fast_hpo_cr-parity work; wiring the real pin waits for a
new release. Verified locally via maturin develop: all tests pass,
including the two cases fenominal xfails (Dandy-Walker malformation,
multi-item negation-scope leaks) - ferrific closes both.
ferrific published its first real PyPI release, so this replaces the
local maturin-develop-only build with a real, exact pin - matching
fast_hpo_cr's optional-extra treatment, never installed by default.
Also moves ferrific's import inside FerrificConceptRecognizer.__init__
so importing the module doesn't require the package to be installed
unless the class is actually instantiated.
Lets a caller choose fenominal, ferrific, fast_hpo_cr, or an ordered
chain of them, instead of always constructing FenominalConceptRecognizer.
Each name is imported lazily so selecting one engine never requires the
others' optional packages. Default stays fenominal, so every existing
caller is unaffected.
pip-audit found 13 known vulnerabilities in 6 packages; this closes
11 of them (command injection in click, predictable /tmp dir in
pytest, plus idna/tornado/urllib3's own fixes). protobuf's 2
remaining CVEs are documented separately as currently unfixable.
Neither workflow performs an OIDC token exchange - only cd.yaml
needs it, and already has it correctly job-scoped. Same fix already
applied to ferrific's equivalent workflows.
@VarenyaJ VarenyaJ added this to the prenatalseq refinements milestone Aug 21, 2026
@VarenyaJ VarenyaJ self-assigned this Aug 21, 2026
@VarenyaJ VarenyaJ added the enhancement New feature or request label Aug 21, 2026
@VarenyaJ
VarenyaJ merged commit 89f98e0 into vj/develop Aug 21, 2026
2 of 3 checks passed
@VarenyaJ
VarenyaJ deleted the vj/ferrific-concept-recognizer branch September 16, 2026 15:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant