Releases: executablebooks/sphinx-exercise
v1.2.0
This release introduces new configuration options for styling solutions that follow exercises, along with order validation to help maintain document structure consistency.
✨ New Features
Solution Title Styling Configuration
A new exercise_style configuration option allows you to customize how solution titles are displayed when solutions follow their exercises.
Configuration:
# In conf.py
exercise_style = "solution_follow_exercise"Behavior:
- When enabled: Solution titles show just "Solution" (simplified, no hyperlinks)
- Default: Solution titles show "Solution to Exercise #.#" with clickable hyperlinks
Order Validation System
When exercise_style = "solution_follow_exercise" is enabled, sphinx-exercise validates that:
- Solutions appear after their referenced exercises
- Solutions are in the same document as their exercises
- Provides helpful warnings with file paths and line numbers
👌 Improvements
- Enhanced solution title styling for lecture-style content
- Improved configuration naming for clarity
- Cleaner code with removed redundant logic
📦 Installation
pip install --upgrade sphinx-exercise🔗 Related
- PR #81: Add
exercise_styleconfiguration and order validation - Full Release Notes
📚 Documentation
See Configuration Options for complete documentation.
v1.1.1
👌 Improvements
Python 3.10 Support Restored
Python 3.10 support has been re-added to the project. Python 3.10 remains actively supported until October 2026, making it an important version to maintain compatibility with.
Key details:
- Python 3.10 is now fully supported alongside Python 3.11, 3.12, and 3.13
- All existing features work identically across all supported Python versions
- Comprehensive test coverage ensures compatibility
Technical Implementation
Version-Specific Sphinx Constraints:
- Python 3.10 is limited to Sphinx 8.1.x (maximum 8.1.3)
- Python 3.11+ continues to use Sphinx 8.2+ as normal
- This constraint exists because Sphinx 8.2.0+ requires Python >=3.11
The test infrastructure automatically handles these version-specific requirements, ensuring correct behavior across all combinations.
Test Matrix Updates
Supported Combinations:
- Python 3.10, 3.11, 3.12: Sphinx 6, 7, 8
- Python 3.13: Sphinx 7, 8
Total: 11 test environments (excludes Python 3.13 + Sphinx 6)
CI/CD Improvements
- Updated GitHub Actions CI matrix to include Python 3.10
- Configured codecov to use Python 3.12 + Sphinx 8 as baseline
- Implemented tokenless codecov uploads for public repository
- Added version-specific test fixtures for Sphinx 8.1 vs 8.2+ compatibility
📦 Installation
Install or upgrade via pip:
pip install --upgrade sphinx-exercise🔄 Migration Notes
If you're upgrading from v1.1.0:
- No breaking changes
- No action required
- Python 3.10 users can now upgrade safely
If you're on Python 3.10:
- You can now use sphinx-exercise v1.1.1
- Sphinx 8 support is limited to 8.1.x on Python 3.10
- All features work identically to newer Python versions
Full Changelog: https://github.com/executablebooks/sphinx-exercise/blob/main/CHANGELOG.md
v1.1.0
🎉 What's New
This release brings comprehensive internationalization support and modernizes the test infrastructure to support the latest Python and Sphinx versions.
New ✨
- Added internationalization (i18n) support for 27 languages
- Added translations for Chinese, Japanese, Korean, Arabic, Hindi, Turkish, and expanded existing language support
- Extension now automatically detects Sphinx project language setting and displays appropriate translations
Improved 👌
- Updated test suite for Python 3.11-3.13 and Sphinx 6-8 compatibility (#79)
- Migrated from os.path to pathlib.Path throughout codebase for modern Python best practices
- Reorganized and expanded translation files with alphabetical sorting
- Enhanced translation documentation with comprehensive guides
- Updated README and documentation to highlight internationalization features
- Fixed README badges to reference main branch instead of master
Documentation 📚
- Added internationalization section to syntax documentation
- Updated README with i18n feature highlights
- Improved translation README with detailed contribution guidelines
- Created releases documentation structure in
docs/releases/ - Added Copilot instructions for project maintenance
Testing Infrastructure 🧪
- Added support for Python 3.11, 3.12, and 3.13
- Added support for Sphinx 6, 7, and 8
- Full test matrix: 9 combinations (3 Python versions × 3 Sphinx versions)
- All 110 tests passing across all supported versions
- Regenerated test fixtures for Sphinx 6 and 7 compatibility
- Normalized image hashes for cross-platform test stability
📦 Installation
pip install --upgrade sphinx-exercise🤝 Contributors
Special thanks to @douden
Thank you to all contributors who made this release possible!
Full Changelog: v1.0.1...v1.1.0
v1.0.1
v1.0.0
v1.0.0
Maintenance and upkeep improvements
- MAINT: use codecov 3 #68 (@agoose77)
- MAINT: pin
matplotlibto 3.7.* for testing #66 (@agoose77) - MAINT: update build and CI for Sphinx 7 #65 (@agoose77)
Other merged PRs
- RELEASE: v0.4.1 #61 (@AakashGfude)
Contributors to this release
(GitHub contributors page for this release)
@AakashGfude | @agoose77 | @mmcky | @welcome
v0.4.1
Improved 👌
Compatibility with docutils>=0.18 (from support with sphinx>=5). Along with updating
CI and pre-commit files.
v0.4.0
v0.4.0 (2022-3-18)
New ✨
Added gated directive syntax for exercise and solution directives, which provides
an alternative syntax for building exercise and solution that may also include
executable code.
Example:
You may now use exercise-start and exercise-end to define the exercise which may
include any type of text, directives and roles between the start and end markers.
```{exercise-start}
:label: ex1
```
```{code-cell}
# Some setup code that needs executing
```
and maybe you wish to add a figure
```{figure} img/example.png
```
```{exercise-end}
```This can also be used with solution-start and solution-end.
See docs for further details
v0.3.1
v0.3.0
Improved 👌
This is a major release as the package was extensively refactored to improve maintainability.
There are very few user facing changes. The styles have been updated when
including a custom title to exercise admonitions.
Further details of the technical changes can be found here