- Add hand-written wiki (index, overview, how-to, extending, dev) with MkDocs config following the platform anatomy - Complete the library nav by registering the csv and xlsx groups in docforge.nav.yml and docs/mkdocs.lib.yml - Regenerate lib/MCP outputs with the rebuilt nav
1.9 KiB
1.9 KiB
🛠️ Development
Working on omniread itself.
📂 Repository layout
| Path | Purpose |
|---|---|
omniread/ |
The library package (core + html, pdf, csv, xlsx modules) |
omniread/*.pyi |
Type stubs kept in sync with implementations |
tests/ |
End-to-end and unit tests against mock transports/clients |
covers |
— |
docs/lib/ |
Generated library reference (docforge, flat layout) |
docs/mcp/ |
Machine-readable bundle served by the MCP server |
docs/wiki/ |
This hand-written wiki |
🔧 Setup
python -m venv .venv
.venv/Scripts/pip install -e ".[dev]"
🧪 Tests
Run the suite (offline; a mock httpx transport and mock PDF client are used):
.venv/Scripts/pytest
Coverage spans end-to-end scrape → parse flows for HTML, PDF, and XLSX, plus client validation and CSV/XLSX parsing edge cases.
✅ Quality gates
The CI quality gate runs, matching the Drone pipeline:
.venv/Scripts/black --check .
.venv/Scripts/ruff check .
.venv/Scripts/mypy
.venv/Scripts/pytest
📝 Building documentation (docforge)
The site is generated by docforge
and served per kind under site/{kind}:
doc-forge build \
--mkdocs --mcp \
--module-is-source --module omniread \
--site-name "OmniRead"
--module-is-sourcerenders the flatdocs/lib/layout (no nesting underomniread/), matchingdocforge.nav.ymlanddocs/mkdocs.lib.yml.--mcpregenerates the structured bundle indocs/mcp/.--wikibuilds this wiki.gen_api.py(if present) regenerates the API docs.
Preview locally:
doc-forge serve --lib
doc-forge serve --wiki
doc-forge serve --mcp
📚 Read Next
- Extending OmniRead — custom parsers, scrapers, clients.
- Overview — the core architecture.