Dependency Policy
Understand package requirements, SPEC-0 support cycles, extra groups, and C extension compiler flags.
This project follows the SPEC-0 rolling-window support policy adopted by the Scientific Python ecosystem (NumPy, SciPy, Matplotlib, etc.).
Python Version Support
| Rule | Value |
|---|---|
| Minimum supported | 3 years after release |
| Drop date | 42 months after release |
Currently supported: Python ≥ 3.11 and 3.12 (both fully tested in CI). Python 3.13 will be added once it reaches its first stable patch release.
Core Dependencies
Core dependencies (numpy, matplotlib) are pinned with a lower bound only. Upper bounds are omitted to avoid conflict issues in user environments.
| Package | Current Lower Bound | Released | SPEC-0 Drop Date |
|---|---|---|---|
numpy | >=1.26 | 2023-06 | 2025-06 |
matplotlib | >=3.8 | 2023-09 | 2025-09 |
These bounds will be bumped on the next minor release of this package after the SPEC-0 support window closes — not before.
Optional Extras
| Extra | Purpose | Key Packages |
|---|---|---|
dev | Test suite | pytest>=8.0, pytest-cov>=5.0 |
analysis | Nonlinear time-series metrics | antropy>=0.1.6, nolds>=0.6.1, scipy>=1.12 |
docs | Documentation build | mkdocs>=1.6, mkdocs-material>=9.5 |
legacy | Frozen legacy scripts | PyYAML>=6.0, scipy>=1.12 |
pydstool | Numerical continuation | PyDSTool (no stable PyPI release, no pin) |
pydstool has no stable PyPI release as of 2026. Install manually from source if needed. It is not part of the standard CI matrix.
C Extension Compatibility
The native C EFORK backend (hidden_attractors/native/) compiles against the active Python ABI. Platform compiler requirements are as follows:
- Linux / macOS:
gccorclangwith OpenMP (libomp) - Windows:
gccinPATH(e.g. via MSYS2/UCRT64); OpenMP vialibgomp
Set ALLOW_NO_OPENMP=1 to build without OpenMP (single-threaded fallback). A pure-Python EFORKSolver is always available as a fallback and requires no C toolchain.