bindings: what a closed subject scheme says about a heading

book-pipeline held its own copy of the scheme operations bibclean already
had. The scheme itself — which headings a collection uses, their aliases,
their parents — stays with the collection, because that is the most
collection-specific thing there is. What a scheme *means* is the same
question everywhere, and this answers it: `canonical_subject`,
`compose_subjects`, `needs_subject`.

Checked against the Python over the library's 228 distinct tags and all
5,385 books: identical on every one.
This commit is contained in:
funkpower
2026-09-20 15:15:48 -04:00
parent 7a08ed953d
commit b28e272506
5 changed files with 70 additions and 0 deletions
@@ -13,14 +13,17 @@ lines of JSON.
from ._catena import (
__version__,
cue_windows,
canonical_subject,
chunk_markdown,
citation_prompt,
compose_subjects,
count_tokens,
find_citations,
fuse_hits,
identify,
looks_like_footnote_citations,
merge_citation_reply,
needs_subject,
pack_cues,
parse_identifier,
parse_subtitles,
@@ -34,14 +37,17 @@ from ._catena import (
__all__ = [
"__version__",
"cue_windows",
"canonical_subject",
"chunk_markdown",
"citation_prompt",
"compose_subjects",
"count_tokens",
"find_citations",
"fuse_hits",
"identify",
"looks_like_footnote_citations",
"merge_citation_reply",
"needs_subject",
"pack_cues",
"parse_identifier",
"parse_subtitles",