Skip to content

Releases: executablebooks/sphinx-exercise

v1.2.0

05 Nov 03:21

Choose a tag to compare

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

📚 Documentation

See Configuration Options for complete documentation.

v1.1.1

22 Oct 21:47
53c0a6b

Choose a tag to compare

👌 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

22 Oct 02:33

Choose a tag to compare

🎉 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

19 Nov 01:03
a098092

Choose a tag to compare

What's Changed

  • MAINT: updates to testing and minor bug fix (JupyterBuilder handling) by @mmcky in #70
  • Setup for v1.0.1 with minor bug fixes by @mmcky in #71

Full Changelog: v1.0.0...v1.0.1

v1.0.0

03 May 13:14
2b52938

Choose a tag to compare

v1.0.0

(full changelog)

Maintenance and upkeep improvements

Other merged PRs

Contributors to this release

(GitHub contributors page for this release)

@AakashGfude | @agoose77 | @mmcky | @welcome

v0.4.1

23 Jan 00:41
9357fbb

Choose a tag to compare

Improved 👌

Compatibility with docutils>=0.18 (from support with sphinx>=5). Along with updating
CI and pre-commit files.

v0.4.0

18 Mar 00:03
f555d72

Choose a tag to compare

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

01 Feb 06:01
9a74199

Choose a tag to compare

This is a minor release that includes some bug fixes and a style update for the solution node titles

  • 🐛 FIX: Check for sphinx_exercise_registry in all registered post_tranform
  • 🐛 FIX: Update style for solution titles

v0.3.0

07 Dec 02:28

Choose a tag to compare

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

v0.2.1

08 Oct 01:06
4a28f71

Choose a tag to compare