Skip to content

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Dec 16:23
· 135 commits to master since this release

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 fix larvaworld-app hanging 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.2 to 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 AttributeError by introducing _has_larva_collision() helper method
  • Shape normalization: Fixed collision checks by normalizing CoordinateSequence to Shapely geometries in ExpRun.get_larva_bodies()
  • UI feedback: Added visual feedback when toggling larva overlap mode (keyboard shortcut Y)

✨ User Experience Improvements

  • Simulation storage feedback: Added vprint messages (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_refID instead of hardcoded dataset IDs

🧹 Code Cleanup

  • Deprecation infrastructure removal: Removed LARVAWORLD_STRICT_DEPRECATIONS checks and deprecation warnings from 25 files (~288 lines removed)
  • Import cleanup: Removed unused os imports 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-app works correctly on all Python versions (fixed Panel compatibility)
  • ✅ Collision handling works as expected (no more AttributeErrors)

Known Issues

  • eliminate_overlap() bug: Still needs fix for l.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-app hanging on Python 3.12/3.13
  • Fixes collision detection AttributeErrors
  • Enables Python 3.12/3.13 support

Documentation

  • Updated README.md with Python 3.10–3.13 support
  • Updated docs/installation.md with modern venv examples
  • Updated docs/concepts/dependencies.md with Python version constraints
  • Updated docs/index.rst Python version badge
  • Updated docs/contributing.md with 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)