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

RuleValue
Minimum supported3 years after release
Drop date42 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.

PackageCurrent Lower BoundReleasedSPEC-0 Drop Date
numpy>=1.262023-062025-06
matplotlib>=3.82023-092025-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

ExtraPurposeKey Packages
devTest suitepytest>=8.0, pytest-cov>=5.0
analysisNonlinear time-series metricsantropy>=0.1.6, nolds>=0.6.1, scipy>=1.12
docsDocumentation buildmkdocs>=1.6, mkdocs-material>=9.5
legacyFrozen legacy scriptsPyYAML>=6.0, scipy>=1.12
pydstoolNumerical continuationPyDSTool (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: gcc or clang with OpenMP (libomp)
  • Windows: gcc in PATH (e.g. via MSYS2/UCRT64); OpenMP via libgomp

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.