modified: Makefile modified: README.md deleted: aborist/search/__init__.py renamed: aborist/__init__.py -> arborist/__init__.py renamed: aborist/cli.py -> arborist/cli.py renamed: aborist/compress.py -> arborist/compress.py renamed: aborist/concepts/__init__.py -> arborist/concepts/__init__.py renamed: aborist/concepts/extract.py -> arborist/concepts/extract.py renamed: aborist/concepts/query.py -> arborist/concepts/query.py renamed: aborist/concepts/seed.py -> arborist/concepts/seed.py renamed: aborist/concepts/store.py -> arborist/concepts/store.py renamed: aborist/distill/__init__.py -> arborist/distill/__init__.py renamed: aborist/distill/base.py -> arborist/distill/base.py renamed: aborist/distill/first_sentence.py -> arborist/distill/first_sentence.py renamed: aborist/distill/runner.py -> arborist/distill/runner.py renamed: aborist/distill/tfidf.py -> arborist/distill/tfidf.py renamed: aborist/document.py -> arborist/document.py renamed: aborist/evict.py -> arborist/evict.py renamed: aborist/ingest.py -> arborist/ingest.py renamed: aborist/journal.py -> arborist/journal.py renamed: aborist/merkle.py -> arborist/merkle.py renamed: aborist/mesh/__init__.py -> arborist/mesh/__init__.py renamed: aborist/mesh/crypto.py -> arborist/mesh/crypto.py renamed: aborist/mesh/members.py -> arborist/mesh/members.py renamed: aborist/mesh/state.py -> arborist/mesh/state.py renamed: aborist/mesh/wire.py -> arborist/mesh/wire.py renamed: aborist/progress.py -> arborist/progress.py renamed: aborist/qa/__init__.py -> arborist/qa/__init__.py renamed: aborist/qa/client.py -> arborist/qa/client.py renamed: aborist/qa/concepts.py -> arborist/qa/concepts.py renamed: aborist/qa/dag.py -> arborist/qa/dag.py renamed: aborist/qa/evidence.py -> arborist/qa/evidence.py renamed: aborist/qa/frame.py -> arborist/qa/frame.py renamed: aborist/qa/inspect.py -> arborist/qa/inspect.py renamed: aborist/qa/keys.py -> arborist/qa/keys.py renamed: aborist/qa/metacognition.py -> arborist/qa/metacognition.py renamed: aborist/qa/model_profiles.py -> arborist/qa/model_profiles.py renamed: aborist/qa/parse_claims.py -> arborist/qa/parse_claims.py renamed: aborist/qa/prompts.py -> arborist/qa/prompts.py renamed: aborist/qa/quantifier.py -> arborist/qa/quantifier.py renamed: aborist/qa/quantifier_reminder.py -> arborist/qa/quantifier_reminder.py renamed: aborist/qa/query.py -> arborist/qa/query.py renamed: aborist/qa/repair.py -> arborist/qa/repair.py renamed: aborist/qa/retrieval_plan.py -> arborist/qa/retrieval_plan.py renamed: aborist/qa/runner.py -> arborist/qa/runner.py renamed: aborist/qa/soft_preflight.py -> arborist/qa/soft_preflight.py renamed: aborist/qa/verify.py -> arborist/qa/verify.py renamed: aborist/qa/warrant.py -> arborist/qa/warrant.py new file: arborist/search/__init__.py renamed: aborist/search/base.py -> arborist/search/base.py renamed: aborist/search/fts5.py -> arborist/search/fts5.py renamed: aborist/snapshot.py -> arborist/snapshot.py renamed: aborist/source.py -> arborist/source.py renamed: aborist/sources/__init__.py -> arborist/sources/__init__.py renamed: aborist/sources/crawler/__init__.py -> arborist/sources/crawler/__init__.py renamed: aborist/sources/crawler/async_web_fetcher.py -> arborist/sources/crawler/async_web_fetcher.py renamed: aborist/sources/crawler/bridge.py -> arborist/sources/crawler/bridge.py renamed: aborist/sources/crawler/web_fetch.py -> arborist/sources/crawler/web_fetch.py renamed: aborist/sources/grok.py -> arborist/sources/grok.py renamed: aborist/sources/html_page.py -> arborist/sources/html_page.py renamed: aborist/sources/providence.py -> arborist/sources/providence.py renamed: aborist/sources/vcs.py -> arborist/sources/vcs.py renamed: aborist/sources/wikipedia.py -> arborist/sources/wikipedia.py renamed: aborist/sources/wikipedia_xml.py -> arborist/sources/wikipedia_xml.py renamed: aborist/store.py -> arborist/store.py renamed: aborist/wikitext.py -> arborist/wikitext.py modified: pyproject.toml
24 lines
644 B
Python
24 lines
644 B
Python
"""Source ABC.
|
|
|
|
Adding a new corpus to arborist = one new Source subclass. The Source contract
|
|
is intentionally minimal: yield Document objects, one at a time.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Iterator
|
|
|
|
from arborist.document import Document
|
|
|
|
|
|
class Source(ABC):
|
|
"""A corpus that yields documents into the ingest pipeline."""
|
|
|
|
#: source_type tag stored on every Document this source produces.
|
|
source_type: str
|
|
|
|
@abstractmethod
|
|
def iter_documents(self) -> Iterator[Document]:
|
|
"""Yield Document objects. Must be deterministic & idempotent."""
|
|
...
|