v2.0.1
v2.0.1 (2025-11-25)
Build
Documentation
-
docs: expand video examples (
f13ee97) -
docs: hide Tutorials toctree from main page, keep in sidebar (
c9537ec) -
docs: remove :hidden: from Tutorials toctree to show in sidebar (
a473fdd) -
docs: restore tutorial subsections structure with .rst files (
8aad1a5) -
docs: create tutorial subsections with index files (Configuration, Simulation, Data, Development) (
a27d098) -
docs: organize tutorials into subsections (Configuration, Simulation, Data, Development) (
6f60d95) -
docs: remove duplicate myst_parser extension (included in myst_nb) (
c2e63d1) -
docs: switch from nbsphinx to myst_nb and add pygments style (
76ffea2) -
docs: switch to sphinx_rtd_theme and rename autoapi entry (
e92eac0) -
docs: fix sidebar navigation and use default Furo theme (
6597030) -
docs: reorganize concepts and index (
4d6a563)
Fix
- fix: improve installation docs, CI workflow, and simulation handling
- Update installation guide: recommend pip, add virtual env setup, Windows troubleshooting
- Replace Nsims with N in all documentation files
- Add Batch mode under development warnings
- Add space_search configuration note for Batch mode
- Add docstrings to constants in init.py for autoapi
- Enable heavy Windows tests on weekly scheduled runs
- Skip heavy Windows tests on regular CI runs for faster feedback
- Fix AttributeError for optional modelIDs/groupIDs in Exp mode CLI
- Set scale visible by default and initialize scale lines on screen creation
- Fix window-close handling: abort simulation immediately when window closed
- Improve pause feedback: rendering continues while paused
- Silent output save: suppress 'Data saved...' messages
- Skip dataset processing on abort to avoid exceptions (
670f66b)
- fix: improve simulation window handling and pause feedback
- Fix window-close handling: when user clicks window X, flag run as aborted, stop simulation loop immediately, and skip analysis/storage to avoid pygame surface errors
- Improve pause feedback: rendering continues while paused so on-screen 'is_paused ON/OFF' message shows reliably
- Silent output save: re-enable self.output.save() wrapped with contextlib.redirect_stdout to suppress 'Data saved...' message
- Skip dataset processing on abort: if window was closed mid-run, skip dataset creation/enrichment/storage to avoid exceptions
- Fix AttributeError for optional modelIDs/groupIDs in Exp mode CLI
- Set scale visible by default and initialize scale lines on screen creation (
304ce80)
- fix(ci): properly detect linting errors vs formatting changes
- Fix logic to re-run pre-commit after staging formatting changes
- Only pass if pre-commit succeeds after formatting (no linting errors)
- Fail if linting errors remain after formatting
fix: convert inline docstrings to comments to satisfy check-docstring-first
- Convert inline docstrings (after variable assignments) to comments
- This fixes the 'Multiple module docstrings' linting error
- Inline docstrings are not standard Python practice for module-level variables (
679821c)
- fix(ci): correct HAS_CHANGES variable check in lint job
- Fix undefined HAS_CHANGES variable by setting it before use
- Simplify logic: allow formatting changes in PRs with warning
- Note that linting errors must still be fixed before merging (
484bb00)
- fix(docs): broken documentation references to tutorials/index
- Replace non-existent tutorials/index references with actual tutorial subsections
- Replace non-existent working_with_larvaworld/index with actual workflow guides
- Updated references in theory_overview.md, simulation_modes.md, and api_overview.rst (
6b3a41c)
- fix(screen): simulation termination and visualization documentation
-
Fix premature simulation termination when running headless (without display)
- Modified close_requested() to only check for QUIT events when display is actually shown
- Updated close() to only terminate simulation when user closes display window
- Added event clearing during initialization to prevent false QUIT detection
- Improved finalize() to skip close() when screen not active/initialized
-
Fix documentation: show_display vs vis_mode
- Corrected usage examples: show_display alone doesn't render simulation
- Updated to use vis_mode='video' for real-time visualization
- Fixed examples in usage.md, api_cli.rst, single_experiments.md, visualization_snapshots.md
-
Add --version argument to CLI
-
Improve screen manager cleanup and error handling (
6b56f91)
Refactor
- refactor: documentation improvements, CI enhancements, and test marker refactoring
Description of change
This PR includes comprehensive improvements to documentation infrastructure, CI/CD workflow enhancements, bug fixes, and test organization refactoring.
Documentation Improvements
- Sphinx theme migration: Switched from default theme to
sphinx_rtd_themeand later toFurotheme for better navigation - Notebook rendering: Migrated from
nbsphinxtomyst_nbfor improved Jupyter notebook support - Tutorial organization: Reorganized tutorials into structured subsections (Configuration, Simulation, Data, Development) with proper
.rstindex files - Navigation fixes: Fixed broken documentation references to non-existent
tutorials/indexandworking_with_larvaworld/indexpages - Sidebar improvements: Improved sidebar navigation and toctree structure
CI/CD Enhancements
- Auto-formatting commits: Added automatic commit of formatting changes when pre-commit hooks modify files
- PR safety: Prevented auto-commit step from running on pull requests (avoids detached HEAD issues)
- Windows testing: Enabled Windows tests in CI workflow matrix
- Branch detection: Fixed branch detection for force push in detached HEAD state
- run heavy Windows simulations only on weekly scheduled CI via LW_ENABLE_WINDOWS_HEAVY
- keep daily matrix fast while preserving full coverage once per week
Bug Fixes
- Simulation termination: Fixed premature simulation termination when running headless (without display)
- Modified
close_requested()to only check for QUIT events when display is actually shown - Updated
close()to only terminate simulation when user closes display window - Added event clearing during initialization to prevent false QUIT detection
- Modified
- Documentation accuracy: Fixed incorrect usage examples for
show_displayvsvis_modein multiple documentation files
Test Infrastructure
- Marker refactoring: Renamed pytest marker from
slowtoheavyfor better clarity - Test organization: Reorganized test files into proper
unit/andintegration/directory structure - Test coverage: Added comprehensive test coverage across multiple modules
Build Improvements
- Dependency management: Updated
poetry.lockto include missing dependencies (sphinxcontrib-mermaid) - Lock file refresh: Refreshed
poetry.lockto ensure consistency
Pull-Request Checklist
- Code is up-to-date with the
masterbranch - This pull request follows the contributing guidelines
- This pull request links relevant issues as
Fixes #0000(N/A - no specific issues) - There are new or updated unit tests validating the change
- Documentation has been updated to reflect this change
- The new commits follow conventions outlined in the conventional commit spec
Testing
All CI checks pass:
- ✅ Linting and formatting (pre-commit hooks)
- ✅ Commit message validation (commitlint)
- ✅ Full test suite on Ubuntu (Python 3.11)
- ✅ Matrix tests (Ubuntu/macOS/Windows × Python 3.10/3.11)
Impact
- Documentation: Improved navigation, better notebook rendering, fixed broken links
- CI/CD: More robust workflow with automatic formatting and PR safety
- Code quality: Better test organization and marker clarity
- User experience: Fixed simulation termination bug when running headless (
838b554)
- refactor: rename pytest marker from 'slow' to 'heavy'
- Change marker name from 'slow' to 'heavy' for better clarity
- Update all test files using @pytest.mark.slow to @pytest.mark.heavy
- Rename INTEGRATION_SLOW_PATHS to INTEGRATION_HEAVY_PATHS in conftest.py
- Remove --slow option from pytest addopts (not a valid pytest option)
- Remove pytest_addoption for --slow (no longer needed)
- Update README.md examples and descriptions
- Update pyproject.toml marker definitions
This change avoids conflicts with pytest_nengo plugin and makes the
marker name more descriptive of what it represents (heavy/computational tests). (333de3c)