Phase 2 ships: Doors B and C, the extraction registry, the guard adapter, and with them the first and only runtime dependency this library takes. The minor bump is the news consumers are waiting on -- installing the package now installs llm-ingestion-guard>=0.2,<0.3, though importing it still does not import the guard. Two behaviour changes carried in the same release are called out in the changelog rather than buried: an extraction title containing `[` or `]` now fails at manifest load (ingest-spec section 4), and the section 3 ownership scan no longer deletes files another manifest stamped into the same bundle. uv.lock was stale -- it predated the guard dependency and could not be regenerated, because the guard is not on a package index. A [tool.uv.sources] entry pins the same tag the README documents, so `uv lock`/`uv sync` resolve. It is uv-specific dev metadata: the built wheel still carries `Requires-Dist: llm-ingestion-guard<0.3,>=0.2`, verified against the wheel, so the range remains the pin and the git URL remains a channel. Binary extraction (pdf/docx/xlsx behind [extract]) is deliberately not in this release and is stated as outstanding in both README and changelog. 425 tests green; ruff, ruff format and mypy --strict clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A2aKJxLejT9S8jYwoZ9fut
58 lines
2.2 KiB
TOML
58 lines
2.2 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "llm-ingestion-okf"
|
|
version = "0.4.0"
|
|
description = "Shared OKF (Open Knowledge Format) ingestion library: spec-based connectors, bundle inbox, and external-bundle import, with security delegated to llm-ingestion-guard."
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
requires-python = ">=3.10"
|
|
authors = [{ name = "Kjell Tore Guttormsen" }]
|
|
classifiers = [
|
|
"Development Status :: 2 - Pre-Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
]
|
|
# Exactly one runtime dependency, ever: the security boundary. Everything
|
|
# else is stdlib. The version range is the real pin — it resolves normally
|
|
# against a package index, and is satisfied today by the git+https tag
|
|
# install documented in the README (a direct reference is an install-time
|
|
# channel, not a dependency declaration).
|
|
dependencies = ["llm-ingestion-guard>=0.2,<0.3"]
|
|
|
|
[project.optional-dependencies]
|
|
# Reserved for binary file-type extraction parsers (pdf/docx/xlsx).
|
|
# Populated when Door B's binary extraction is implemented.
|
|
extract = []
|
|
|
|
[dependency-groups]
|
|
dev = ["pytest>=8", "mypy>=1.14", "ruff>=0.9"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/llm_ingestion_okf"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py310"
|
|
|
|
[tool.mypy]
|
|
strict = true
|
|
python_version = "3.10"
|
|
|
|
# llm-ingestion-guard ships no py.typed marker, so its symbols arrive as Any.
|
|
# The adapter coerces every value it carries across the seam to a concrete
|
|
# type, which is what keeps --strict meaningful on this side of it.
|
|
[[tool.mypy.overrides]]
|
|
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.
|
|
[tool.uv.sources]
|
|
llm-ingestion-guard = { git = "https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git", tag = "v0.2.0" }
|