docs(install): correct how the guard reaches a consumer, measured both ways
The v0.4.0 release commit claimed the [tool.uv.sources] entry "never reaches consumers". Measured against the pushed tag in clean environments, that is wrong in one direction and understated in the other: - uv, installing this package from git, DOES pick the guard up from the tag automatically. uv reads pyproject.toml when it builds from the source tree, so the source applies to the consumer too, not just to development here. - pip does not read it, and fails outright: "No matching distribution found for llm-ingestion-guard<0.3,>=0.2". The guard must be installed from its own tag FIRST. Verified that the guard-first order then installs cleanly and that the shipped adapter runs against the real guard in that environment. What did hold is the part that matters for the pin: the built wheel carries `Requires-Dist: llm-ingestion-guard<0.3,>=0.2`, so the range is still the declared dependency and the git URL is still a channel. README now states the pip order as the default instruction, with the uv shortcut beside it, because a consumer hitting the resolution error would otherwise read it as a broken release.
This commit is contained in:
parent
524ade78a6
commit
4ea00a902f
2 changed files with 25 additions and 9 deletions
21
README.md
21
README.md
|
|
@ -115,18 +115,29 @@ verification criteria:
|
|||
## Requirements
|
||||
|
||||
Python 3.10+, and exactly one runtime dependency — the security boundary,
|
||||
`llm-ingestion-guard>=0.2,<0.3`. Everything else is stdlib. Until that
|
||||
package is published to an index, install it from its tag:
|
||||
`llm-ingestion-guard>=0.2,<0.3`. Everything else is stdlib.
|
||||
|
||||
That guard is not on a package index yet, so **with pip, install it first** —
|
||||
otherwise installing this package fails with `No matching distribution found
|
||||
for llm-ingestion-guard`:
|
||||
|
||||
```
|
||||
pip install "llm-ingestion-guard @ git+https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git@v0.2.0"
|
||||
pip install "llm-ingestion-okf @ git+https://git.fromaitochitta.com/open/llm-ingestion-okf.git@v0.4.0"
|
||||
```
|
||||
|
||||
With uv, one command is enough — `uv pip install "llm-ingestion-okf @ git+…@v0.4.0"`
|
||||
resolves the guard from the tag on its own, because uv reads the
|
||||
`[tool.uv.sources]` entry in this project's `pyproject.toml` when it builds
|
||||
from the source tree. Both paths were measured on 2026-07-25.
|
||||
|
||||
A git URL is a PEP 508 direct reference and pins one exact tag, so it is an
|
||||
install-time *channel*, not the pin: the range above stays the declared
|
||||
dependency and resolves normally once the package index exists. The optional
|
||||
`[extract]` extra (pdf/docx/xlsx parsers) is not populated yet. The planned
|
||||
Node half targets Node/ESM with zero npm dependencies.
|
||||
dependency — the built wheel carries `Requires-Dist:
|
||||
llm-ingestion-guard<0.3,>=0.2` — and resolves normally once the package index
|
||||
exists. The optional `[extract]` extra (pdf/docx/xlsx parsers) is not
|
||||
populated yet. The planned Node half targets Node/ESM with zero npm
|
||||
dependencies.
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
|
|
@ -50,9 +50,14 @@ python_version = "3.10"
|
|||
module = ["llm_ingestion_guard", "llm_ingestion_guard.*"]
|
||||
ignore_missing_imports = true
|
||||
|
||||
# Development-time install CHANNEL for the guard, which is not on a package
|
||||
# index yet. It resolves `uv lock`/`uv sync` against the tag; it is uv-specific
|
||||
# and never reaches consumers — the built wheel carries the range from
|
||||
# [project.dependencies] above, which is the pin.
|
||||
# Install CHANNEL for the guard, which is not on a package index yet. It is
|
||||
# uv-specific, and it reaches further than a dev-only setting: measured
|
||||
# 2026-07-25, a consumer installing this package from git WITH UV picks the
|
||||
# guard up from this tag automatically, because uv reads this file when it
|
||||
# builds from the source tree. pip does not read it — it resolves
|
||||
# [project.dependencies] alone and fails with "No matching distribution found
|
||||
# for llm-ingestion-guard" until the guard is installed from its own tag first
|
||||
# (README). Either way the range above stays the pin: the built wheel carries
|
||||
# `Requires-Dist: llm-ingestion-guard<0.3,>=0.2`, verified against the wheel.
|
||||
[tool.uv.sources]
|
||||
llm-ingestion-guard = { git = "https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git", tag = "v0.2.0" }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue