Conversation
This reverts commit bc38822.
Move the legacy slug pipeline into a dedicated frozen module and make the public slugify() a thin dispatcher: algorithm='legacy' (default) calls the frozen _legacy implementation, algorithm='modern' runs the modern pipeline. Modern-only up-front TypeError validation for bool/non-int max_length and non-str separator lives in the modern path; legacy output is unchanged. 🚀 Generated with [Dojo](https://heydojo.ai) ⛩️
Move the test suite into tests/: the original upstream legacy suite becomes the frozen tests/test_legacy.py (contents unchanged), mirroring the _legacy.py code split, alongside tests/test_release.py and the add_uppercase test. Update pyproject testpaths, MANIFEST.in, and tox commands to the tests/ layout. 🚀 Generated with [Dojo](https://heydojo.ai) ⛩️
Record that legacy is architecturally frozen (slugify/_legacy.py and tests/test_legacy.py) and that all new work targets algorithm='modern'. Add a contributor note in the README not to open PRs that change legacy output. 🚀 Generated with [Dojo](https://heydojo.ai) ⛩️
Bump to 9.1.0. Modern-only: decode uppercase &#X..; hex references (Rupayon Haldar, #195); preserve fitting post-replacement output during truncation (emme1t, #193); up-front argument type validation (Jon Bailey, #196). Fix add_uppercase_char atomicity (Cristian Ramirez, #194). Legacy output unchanged. 🚀 Generated with [Dojo](https://heydojo.ai) ⛩️
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Architecturally freezes the legacy algorithm and reorganizes the test suite, then ships the reviewed contributor fixes as 9.1.0. Legacy output is verified byte-for-byte unchanged.
Structure
slugify/_legacy.py: the legacy pipeline, moved into a dedicated frozen module. Publicslugify()is now a thin dispatcher —algorithm='legacy'(default) calls the frozen implementation;algorithm='modern'runs the modern pipeline.tests/: suite reorganized. The original upstream legacy suite is preserved unchanged astests/test_legacy.py, mirroring the code split, alongsidetests/test_release.py.pyproject/MANIFEST.in/tox.iniupdated to thetests/layout.Shipping in 9.1.0 (modern-only unless noted)
&#X..;hexadecimal references (Rupayon Haldar, Support uppercase hexadecimal references in modern slugs #195)TypeErrorvalidation for bool/non-intmax_lengthand non-strseparator; re-landed as modern-only so legacy behavior is unchanged (Jon Bailey, Reject bool max_length and non-str separator #196)add_uppercase_charon error (Cristian Ramirez, Fix add_uppercase_char to leave input unchanged on error #194)Verification
pytest tests: 116 passed, 1 skipped, 105 subtests🚀 Generated with Dojo ⛩️