Policies ======== Version policy -------------- mcda uses semantic versioning to decide of its deprecation policy, API back-compatibility and version numbering. A mcda release number is formatted: ``MAJOR.MINOR.PATCH`` API breaking changes must only occur in **major** releases. They must be documented in the doc-strings and announced whenever they are first thought of, but must only be enforced in a **major** release. If deprecation message doesn't precise at which version the deprecation will be enforced, it is assumed to be the next **major** release. (any deprecation must at least indicate at which version it was introduced) **Minor** releases will introduce new features, and deprecations. **Patch** releases must only consist of small internal changes and bug fixes. Any changes that don't introduce a change in the API or the package behaviour. **Note: behavioural changes may be made on minor or patches if the previous behaviour vas clearly not intended. (for example a fringe case in an algorithmic result that don't conform to its implementation reference)** See our section about :ref:`backward compatibility ` if you need more details. You can find deprection recipes :ref:`here `. Python support -------------- This package currently supports all released and maintained python versions (see https://devguide.python.org/versions/). This corresponds to all versions of python>=3.9. We may change our policy towards Numpy recommendations in the future (see `NEP 29 `__) Python version subsequent changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here is the list of identified changes and improvements that will be unlocked after dropping support of older python versions: * 3.10+ * All `Union` and `Optional` types can be replaced by simplier `|` symbol (see `PEP-604 `__) * 3.11+ * `typing_extensions` module can be removed and `Self` imported systematically from `typing` (See `PEP-673 `__)