This repository was archived by the owner on Apr 29, 2026. It is now read-only.
Release v0.2.1: deprecation tombstone, redirect users to pii-toolkit#18
Merged
Conversation
added 2 commits
April 29, 2026 21:48
Marks llm-safe-pl as end-of-life. The 0.2.0 API is preserved verbatim, but `import llm_safe_pl` now fires a DeprecationWarning pointing at the successor packages on PyPI: pii-veil (Shield/Anonymizer surface) and pii-core (detectors and checksums). pii-presidio is also new but was never part of llm-safe-pl. The split into three packages is the architectural lesson learned from shipping the Polish-only tombstone: detection is language-agnostic and deserves its own zero-dep package, the LLM-workflow facade should not lock in a detection backend, and Presidio integration should not infect the dependency tree of users who don't use it. Changes in this release: - pyproject.toml: version 0.2.0 -> 0.2.1; classifier "Development Status :: 3 - Alpha" -> "Development Status :: 7 - Inactive"; description rewritten with a DEPRECATED prefix; sdist `include` adds MIGRATION.md so it ships in the wheel/sdist as well as in-repo. - src/llm_safe_pl/__init__.py: emits DeprecationWarning on import via warnings.warn(..., DeprecationWarning, stacklevel=2). The text names both successor packages and links to MIGRATION.md. - README.md: deprecation banner at the very top with a quick before/after import table and links to pii-veil, pii-core, pii-presidio, and MIGRATION.md. The original v0.2.0 documentation is preserved below under a "Legacy documentation (v0.2.0)" header for users on pinned installs. - MIGRATION.md (new): symbol-by-symbol migration map covering top-level imports, the 9 detector classes (renamed Pl*-prefixed in pii-core), the 5 checksum validators (same names, new path), and the CLI entry point (llm-safe -> pii-veil). Includes copy-paste-ready before/after code blocks for the common cases (Shield round-trip, custom detector lists, Mapping persistence). - CHANGELOG.md: [0.2.1] section under Changed/Added describing the tombstone scope and pointing at MIGRATION.md. - tests/test_deprecation.py (new): two tests, one asserts the import-time DeprecationWarning fires (regression guard against the tombstone going silent), one asserts the message points at MIGRATION.md. Mapping JSON written by 0.2.x continues to load in pii-veil 0.1.x via Mapping.from_dict — round-trip persistence across the migration is supported. Local CI gates green: ruff check . -> All checks passed ruff format --check . -> 57 files already formatted mypy -> no issues found in 23 source files pytest -q -> 321 passed (319 baseline + 2 new), 96.73% coverage python -m build -> sdist + wheel produced twine check dist/* -> PASSED on both
…folding Resolves the CHANGELOG.md conflict between main's [Unreleased] entries (typed-exception hierarchy in llm_safe_pl.errors and tests/corpora/ regression scaffolding from PR #17) and the v0.2.1 deprecation tombstone that was branched directly from v0.2.0. CHANGELOG resolution: kept the v0.2.1 tombstone entry verbatim and replaced main's [Unreleased] block with an end-of-life note explaining that the typed-exception code is preserved in the source tree but will not ship to PyPI (v0.2.1 is final). Equivalent functionality lives in pii-veil.errors and pii-core. src/llm_safe_pl/__init__.py: auto-merged cleanly. The post-merge file imports the typed exception classes (LlmSafeError, MappingError, InputSizeError, DetectorError) AND fires the v0.2.1 DeprecationWarning on import. Anyone building from the archived repo source gets both; PyPI users on 0.2.1 only get the deprecation warning. Other files came in cleanly from main: src/llm_safe_pl/errors.py (new), docs/errors.md (new), tests/test_errors.py (new), tests/test_corpus.py (new), tests/corpora/ fixtures (new), and the typed-error refactors in models.py / shield.py / test_public_api.py / test_security_hardening.py. Local CI gates green on the merged tree: ruff check . -> All checks passed ruff format --check . -> 60 files already formatted mypy -> no issues found in 24 source files pytest -q -> 347 passed, 96.51% coverage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Marks llm-safe-pl as end-of-life. The 0.2.0 API is preserved verbatim, but
import llm_safe_plnow fires a DeprecationWarning pointing at the successor packages on PyPI: pii-veil (Shield/Anonymizer surface) and pii-core (detectors and checksums). pii-presidio is also new but was never part of llm-safe-pl.The split into three packages is the architectural lesson learned from shipping the Polish-only tombstone: detection is language-agnostic and deserves its own zero-dep package, the LLM-workflow facade should not lock in a detection backend, and Presidio integration should not infect the dependency tree of users who don't use it.
Changes in this release:
includeadds MIGRATION.md so it ships in the wheel/sdist as well as in-repo.Mapping JSON written by 0.2.x continues to load in pii-veil 0.1.x via Mapping.from_dict — round-trip persistence across the migration is supported.
Local CI gates green:
ruff check . -> All checks passed
ruff format --check . -> 57 files already formatted
mypy -> no issues found in 23 source files
pytest -q -> 321 passed (319 baseline + 2 new), 96.73% coverage
python -m build -> sdist + wheel produced
twine check dist/* -> PASSED on both