Skip to content

Expand and formalize Python version support #496

Description

@ilhamv

MC/DC currently lists Python 3.13 as its only supported version because it is the only version covered by the test suite.

We should determine which additional Python versions MC/DC can reliably support and establish a clear process for managing that support over time.

Tasks

  • Decide which Python versions should be supported based on dependency compatibility and user needs.
  • Check compatibility with key dependencies, particularly Numba, NumPy, mpi4py, and h5py.
  • Determine an appropriate testing strategy that provides meaningful compatibility coverage without making routine CI prohibitively expensive.
  • Update requires-python and the Python classifiers in pyproject.toml.
  • Keep the Black and Pyright target versions consistent with the supported range.
  • Update Read the Docs, container definitions, installation instructions, and other version-specific examples as needed.
  • Document when support for a Python version may be added or removed.

Potential testing strategy

One possible approach is to keep Python 3.13 as the continuously tested primary version and test other supported versions during release preparation.

A manually triggered release-validation workflow could run the relevant unit and regression tests across the candidate Python versions near the beginning of release stabilization.

The workflow could be run again against the final release candidate when relevant changes have been made.

If a Python version fails release validation, we would either resolve the incompatibility or omit that version from the supported list for the release.

Patch releases could use targeted secondary-version testing based on the scope of the patch.

This is only a starting point, and alternative strategies that balance confidence, automation cost, and timely feedback are welcome.

Completion criteria

  • Every advertised Python version has been validated for the release.
  • Package metadata accurately represents the validated support range.
  • Documentation consistently names the supported versions and documents what Python-version testing occurs routinely, during release preparation, and for patch releases.
  • A lightweight policy exists for reviewing Python support during future releases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciContinuous integration.testingTesting infrastructure and test suites.

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions