Skip to content
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
Tatarinho merged 2 commits into
mainfrom
release/0.2.1
Apr 29, 2026
Merged

Release v0.2.1: deprecation tombstone, redirect users to pii-toolkit#18
Tatarinho merged 2 commits into
mainfrom
release/0.2.1

Conversation

@Tatarinho
Copy link
Copy Markdown
Owner

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

Michal Piotrowski 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
@Tatarinho Tatarinho merged commit f8b6115 into main Apr 29, 2026
7 checks passed
@Tatarinho Tatarinho deleted the release/0.2.1 branch April 29, 2026 20:07
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant