π§° ToolchainΒΆ
Same developer loop locally and in CI β one toolchain contract, as in
Building an Org Monorepo.
Root poe tasks call files under tools/devtools/ and tools/buildtools/;
configs live in tools/resources/. See the tools/ hub on the docs landing.
flowchart LR
Dev["engineer"] --> Poe["poe check / test / docs"]
Poe --> Tools["tools/devtools + buildtools"]
Tools --> Cfg["tools/resources"]
Tools --> UV["uv sync --locked"]
Tools --> Ruff["ruff format + check"]
Tools --> Types["mypy"]
Tools --> PyTest["pytest + coverage"]
CI["GitHub Actions"] --> Poe
uv tool install poethepoet
poe sync
poe verify
poe docs
poe ingest-papers
poe run-papers-rag
poe run-langflow
Task |
Purpose |
|---|---|
|
Install workspace from lockfile |
|
Refresh |
|
Upgrade all (or named) deps, then sync |
|
Monorepo gate: check + test |
|
Print banner |
|
ruff format + ruff check βfix (imports) |
|
format βcheck + ruff + mypy |
|
unit tests across leaves (skips slow/API markers; 100% coverage gate) |
|
landing + all Sphinx leaves β |
|
rebuild Chroma index ( |
|
Streamlit chat ( |
|
Langflow studio ( |
π¦ PyPI wheelΒΆ
pip install amir
One wheel. It bundles rag.core, papers_rag, and papers_ingest (APIs plus
the papers-ingest / papers-rag CLIs). Not a git checkout: no docs portal,
no poe toolchain, no paper PDFs. Leaf dirs stay workspace packages locally;
they are not published on their own.
export OPENAI_API_KEY=...
export PAPERS_DIR=/path/to/pdfs
export CHROMA_DIR=/path/to/chroma
papers-ingest
papers-rag
Clone the repo for docs, PDFs, Docker, and poe.
π§ͺ QualityΒΆ
poe test gates 100% branch coverage on amir, rag.core, papers_rag,
and papers_ingest. CI runs that suite on Ubuntu and macOS across Python
3.11β3.13, then uploads xmlcov/coverage.xml to
Codecov. Same gate as poe verify.
Dep upgrades: poe upgrade (or poe upgrade ruff). See CONTRIBUTING.md.