# Development changes

## Increase to minimum supported versions of dependencies

For Matplotlib 3.8, the
`minimum supported versions <dependencies>`{.interpreted-text
role="ref"} are being bumped:

+------------+-----------------+---------------+
| Dependency | > min in mpl3.7 | min in mpl3.8 |
+============+=================+===============+
| > Python   | > 3.8           | > 3.9         |
+------------+-----------------+---------------+
| kiwisolver | > 1.0.1         | > 1.3.1       |
+------------+-----------------+---------------+
| > NumPy    | > 1.20.0        | > 1.21.0      |
+------------+-----------------+---------------+
| > Pillow   | > 6.2.1         | > 8.0         |
+------------+-----------------+---------------+

This is consistent with our `min_deps_policy`{.interpreted-text
role="ref"} and
[NEP29](https://numpy.org/neps/nep-0029-deprecation_policy.html)

## Increase to minimum supported optional dependencies

For Matplotlib 3.8, the
`minimum supported versions of optional dependencies
<optional_dependencies>`{.interpreted-text role="ref"} are being bumped:

+------------+-----------------+---------------+
| Dependency | > min in mpl3.7 | min in mpl3.8 |
+============+=================+===============+
| > Tk       | > 8.4           | > 8.5         |
+------------+-----------------+---------------+
| > Qt       | > 5.10          | > 5.12        |
+------------+-----------------+---------------+

-   There are no wheels or conda packages that support both Qt 5.11 (or
    older) and Python 3.9 (or newer).

This is consistent with our `min_deps_policy`{.interpreted-text
role="ref"}

## Provisional support for PEP484 Type Hint Annotations

New public API should be type hinted in `.pyi` stub files (except
`pyplot` and tests which are typed in-line). Tests should be type hinted
minimally, essentially only when `mypy` generates errors.

CI and configuration for running `mypy` have been added.

## Generation of `pyplot.py` requires `black`

The autogenerated portions of `pyplot.py` use `black` autoformatting to
ensure syntax-correct, readable output code.

As such `black` is now a development and test requirement (for the test
which regenerates `pyplot`).

## Wheels for some systems are no longer distributed

Pre-compiled wheels for 32-bit Linux and Windows are no longer provided
on PyPI since Matplotlib 3.8.

Multi-architecture `universal2` wheels for macOS are no longer provided
on PyPI since Matplotlib 3.8. In general, `pip` will always prefer the
architecture-specific (`amd64`- or `arm64`-only) wheels, so these
provided little benefit.

## New wheel architectures

Wheels have been added for:

-   musl based systems