v2.1.0
v2.1.0 (2025-12-21)
Build
- build(deps,test): add imageio[ffmpeg] extra and use reg.default_refID
- Add imageio[ffmpeg] extra to enable video file writing (.mp4)
- Update tests to use reg.default_refID instead of hardcoded 'exploration.30controls'
- tests/conftest.py: real_dataset fixture
- tests/integration/process/test_import_schleyer.py
- tests/integration/reg/test_registry_bootstrap.py
- tests/integration/sim/test_sim_replay.py
- tests/init_datasets.py (
45897f1)
Documentation
-
docs(changelog): add summary of all PR-4C changes to Unreleased section (
c47fcdc) -
docs(contributing): add type examples and improve commit message documentation (
bda3604) -
docs(readme): remove Codecov, Poetry, and Ruff badges from README
- Remove Codecov coverage badge
- Remove Poetry badge
- Remove Ruff badge
- Keep CI, docs, pre-commit, PyPI, python versions, and license badges (
7576a79)
- docs(docs): fix module-level constant docstrings for autoapi
- Convert inline comments (#:) to triple-quoted docstrings for all constants
- Add exception for init.py in check-docstring-first hook
- Fix end-of-file in publications.rst (
8911126)
-
docs(docs): update first publication link in publications page (
6972912) -
docs(docs): add publications page and clarify CLI argument order
- Add publications page in Reference section with all related publications
- Add explicit explanation of CLI argument order: general args before mode, mode-specific args after
- Include example: larvaworld -verbose 1 Exp dish -N 3 -duration 2.0 (
d7cf5c2)
Feature
- feat(deps,sim,core): Python 3.12 & 3.13 support, collision handling fixes, and code cleanup
Summary
This PR adds support for Python 3.12 and 3.13, fixes critical collision handling bugs, improves user feedback, and cleans up legacy deprecation infrastructure. All changes are backward-compatible and tested across Python 3.10–3.13.
Key Changes
🐍 Python 3.12 & 3.13 Support
- Dependency updates: Relaxed version constraints to allow newer wheels compatible with Python 3.12/3.13 while maintaining lower bounds
- Panel compatibility fix: Pinned Panel to
1.2.*to fixlarvaworld-apphanging issue on Python 3.12/3.13 - Video export: Added
imageio[ffmpeg]extra as core dependency (no longer optional) - SALib constraint: Added
SALib <1.5.2to maintain numpy 1.x compatibility - Documentation: Updated all docs (README, installation.md, dependencies.md, index.rst) to reflect Python 3.10–3.13 support
🐛 Collision Handling Fixes
- LarvaSim collision detection: Fixed
AttributeErrorby introducing_has_larva_collision()helper method - Shape normalization: Fixed collision checks by normalizing
CoordinateSequenceto Shapely geometries inExpRun.get_larva_bodies() - UI feedback: Added visual feedback when toggling larva overlap mode (keyboard shortcut
Y)
✨ User Experience Improvements
- Simulation storage feedback: Added
vprintmessages (verbosity level 2) to all simulation types (Exp, Batch, GA, Eval) indicating where output files are saved - Test flexibility: Updated tests to use
reg.default_refIDinstead of hardcoded dataset IDs
🧹 Code Cleanup
- Deprecation infrastructure removal: Removed
LARVAWORLD_STRICT_DEPRECATIONSchecks and deprecation warnings from 25 files (~288 lines removed) - Import cleanup: Removed unused
osimports that were only needed for environment variable checks - Code formatting: Applied formatting fixes (end-of-file, trailing whitespace, ruff-format)
Testing
- ✅ Verified installation on Python 3.10, 3.11, 3.12, and 3.13
- ✅ All tests pass on Python 3.12 and 3.13
- ✅
larvaworld-appworks correctly on all Python versions (fixed Panel compatibility) - ✅ Collision handling works as expected (no more AttributeErrors)
Known Issues
eliminate_overlap()bug: Still needs fix forl.get_polygon()call (not Python-version specific)- Zsh tab completion: Missing in Python 3.13 (shebang difference, non-blocking)
Breaking Changes
None. All changes are backward-compatible.
Related Issues
- Fixes
larvaworld-apphanging on Python 3.12/3.13 - Fixes collision detection AttributeErrors
- Enables Python 3.12/3.13 support
Documentation
- Updated
README.mdwith Python 3.10–3.13 support - Updated
docs/installation.mdwith modern venv examples - Updated
docs/concepts/dependencies.mdwith Python version constraints - Updated
docs/index.rstPython version badge - Updated
docs/contributing.mdwith improved commit message format examples
Full changelog: See docs/changelogs/PR-4C_changelog.md for detailed change descriptions, rationale, and testing notes. (0842aaf)
- feat(sim,docs): add storage directory feedback and update python 3.10-3.13 docs
- Add vprint messages (verbosity 2) to all simulation store methods:
- ExpRun.store(): Print storage directory after saving datasets
- BatchRun.simulate(): Print storage directory after saving batch results
- GAlauncher.finalize(): Print storage directory after storing genomes
- EvalRun.store(): Update message format to match other simulations
- Update documentation for python 3.10-3.13 support:
- README.md: Update python version support and venv examples
- docs/installation.md: Update python versions and venv examples
- docs/concepts/dependencies.md: Update python versions, remove old 3.12 warning
- docs/index.rst: Update python version badge to 3.10 | 3.11 | 3.12 | 3.13 (
e5e975b)
Fix
- fix(deps): panel compatibility and add python 3.13 support
- Pin panel to 1.2.* to fix larvaworld-app hang on python 3.12/3.13
- Update python version constraint to support 3.13
- Add SALib version constraint for numpy 1.x compatibility
- Update CHANGELOG.md (
68cc0d0)
- fix(deps,sim): python 3.12 support and collision handling fixes
- Relaxed version constraints in pyproject.toml to allow newer 1.x/2.x releases with python 3.12 wheels
- Fixed AttributeError in LarvaSim collision detection by introducing _has_larva_collision() helper
- Fixed AttributeError in ExpRun collision checks by ensuring shapes are Shapely geometries
- Added on-screen feedback for larva_collisions toggle (key 'Y')
- Updated CHANGELOG.md with dependency constraint changes (
e1da5fc)
- fix(screen): align timer baseline across time components (
299eb59)
Refactor
- refactor(core): remove deprecation warnings and strict import checks
- Remove LARVAWORLD_STRICT_DEPRECATIONS checks from agents and modules
- Remove deprecation warnings for deep import paths
- Clean up imports (remove unused os imports)
- Apply code formatting fixes (end-of-file, trailing whitespace, ruff-format) (
2e80eaf)