Conversation
**Breaking Changes:** - Drop Python 3.9 and 3.10 support (now requires Python >= 3.11) - Drop Sphinx <6 support (now requires Sphinx >= 6) **Improvements:** - Update test matrix to Python 3.11, 3.12, 3.13 - Test against Sphinx 7 and 8 (modern, actively supported versions) - Remove outdated Sphinx 4 and 5 test fixtures - Generate Sphinx 8 test fixtures - Fix tox.ini Sphinx 6 environment configuration - Update pyproject.toml dependencies to align with ecosystem **Rationale:** - pydata-sphinx-theme (core dependency) requires Sphinx >= 6.1 - Python 3.9 EOL October 2025, Python 3.10 EOL October 2026 - Aligns with modern Python/Sphinx ecosystem - Reduces maintenance burden of supporting legacy versions All 110 tests passing on: - Python 3.11 + Sphinx 7.4.7 ✓ - Python 3.11 + Sphinx 8.2.3 ✓
Fixes: - Replace deprecated strip_escseq with strip_escape_sequences - Use pathlib.Path instead of string path manipulation in directive.py - Use pathlib.Path instead of string path manipulation in post_transforms.py - Fix import ordering in directive.py Impact: - Reduced warnings from 1535 to 1358 on Sphinx 7 (177 fewer warnings) - Reduced warnings from 1535 to 1388 on Sphinx 8 (147 fewer warnings) - Only remaining warnings are from third-party myst_nb package All 110 tests still passing on Sphinx 7
- Regenerated test fixtures to include navigation links added by newer myst-nb - These fixtures now match Sphinx 7 behavior with myst-nb 1.0.0 - Sphinx 8 tests show same navigation links (expected to fail for now) - All 110 tests pass on Sphinx 7
- Updated test files to use SPHINX_VERSION for version-specific fixtures - Renamed existing fixtures to .sphinx7.html/.sphinx7.xml format - Generated .sphinx8.html/.sphinx8.xml fixtures for Sphinx 8 - All 110 tests now pass on both Sphinx 7 and Sphinx 8 - Handles differences in myst-nb navigation link generation between versions Modified test files: - tests/test_exercise_references.py - tests/test_solution.py - tests/test_solution_references.py Fixture changes: - 13 HTML fixtures in test_exercise_references/ (now .sphinx7 and .sphinx8) - 13 XML fixtures in test_exercise_references/ (now .sphinx7 and .sphinx8) - 5 HTML fixtures in test_solution_references/ (now .sphinx7 and .sphinx8) - 6 XML fixtures in test_solution_references/ (now .sphinx7 and .sphinx8) - 1 XML fixture in test_solution/ (now .sphinx7 and .sphinx8) - 9 XML fixtures in test_solution/ (now .sphinx7 and .sphinx8)
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
This PR modernizes the package to support current Python and Sphinx versions, adds version-specific test fixtures to handle differences between Sphinx 7 and 8, and fixes deprecation warnings for Sphinx 9 compatibility.
Changes
Breaking Changes⚠️
Improvements
sphinx.util.import_objecttosphinx.util.importer.import_object.sphinx7) and Sphinx 8 (.sphinx8) to handle HTML output differences (primarily navigation links from myst-nb)SPHINX_VERSIONvariableDocumentation
Testing
Version Bump
This release should be tagged as v1.1.0 (minor version bump due to breaking changes in supported Python/Sphinx versions).
Related Issues
Fixes issues with:
Next Steps
After approval, before merging:
sphinx_exercise/__init__.pyfrom "1.0.1" to "1.1.0"