Breaking changes
- OpenAssetIO now has a soft dependency on the `importlib_metadata` Python package (>=3.6.0). If you have been installing the project manually by extending `PYTHONPATH` (instead of using `pip`) you may also need to additionally satisfy this dependency if you wish to make use of entry point based discovery of Python plugins. [762](https://github.com/OpenAssetIO/OpenAssetIO/issues/762)
- The `PythonPluginSystem` no longer clears existing plugin registrations when `scan` is called. The `PythonPluginSystemManagerImplementationFactory` has been updated to call `reset` itself, so this change only affects any direct use of the `PythonPluginSystem` by third party code. [703](https://github.com/OpenAssetIO/OpenAssetIO/issues/703)
- The `PythonPluginSystemManagerImplementationFactory` now checks fall-back environment variables during construction, rather than the first time plugins are queried. This means changes to the environment made after a factory has been created will not affect that factory. [762](https://github.com/OpenAssetIO/OpenAssetIO/issues/762)
- Removed references to `openassetio-traitgen` from codebase, is now in [own repository](https://github.com/OpenAssetIO/OpenAssetIO-TraitGen) [#715](https://github.com/OpenAssetIO/OpenAssetIO/issues/715)
- Removed `toml++` as vendored library. Is now an external dependency similar to other external dependencies.
- Moved `setup.py` and `pyproject.toml` under the Python component's directory, i.e. `src/openassetio-python`. This means the minimum version of `pip` used to build wheels (or install from source) is now 21.3, where in-tree builds are the default. [728](https://github.com/OpenAssetIO/OpenAssetIO/issues/728)
- Updated various Python method argument names to match their C++ equivalent. Specifically this affects `Manager`/`ManagerInterface.managementPolicy`, `SeverityFilter.setSeverity`, `TraitsData.hasTrait` / `.addTrait` / `.addTraits` / `.setTraitProperty` / `.getTraitProperty` / `.traitPropertyKeys` / copy-constructor. [743](https://github.com/OpenAssetIO/OpenAssetIO/issues/743)
New features
- Added entry point based discovery of Python manager plugins. This allows pure Python manager plugins to be deployed and managed as Python packages, without the need to wrangle `OPENASSETIO_PLUGIN_PATH`. The `openassetio.manager_plugin` entry point should expose a module providing a top-level `plugin` variable, holding a `ManagerPlugin` derived class. This can be disabled by setting the `OPENASSETIO_DISABLE_ENTRYPOINTS_PLUGINS` env var to any value. [762](https://github.com/OpenAssetIO/OpenAssetIO/issues/762)
Improvements
- Added `openassetio-build` docker image. This is an extension of the already used [ASFW CY22 docker image](https://hub.docker.com/r/aswf/ci-base/tags?name=2022), but with the additional OpenAssetIO dependencies installed into it. As we have also installed test dependencies into this image, this unlocks out-of-the-box sandboxed testing workflows via docker. [#716](https://github.com/OpenAssetIO/OpenAssetIO/issues/716)
- Reorganized the directory structure to better reflect the fact that the project is split into distinct components, and that it is primarily a CMake-driven project with optional Python component. [655](https://github.com/OpenAssetIO/OpenAssetIO/issues/655)
- Improved documentation for users that wish to build/release OpenAssetIO. [624](https://github.com/OpenAssetIO/OpenAssetIO/issues/624) [#716](https://github.com/OpenAssetIO/OpenAssetIO/issues/716) [#749](https://github.com/OpenAssetIO/OpenAssetIO/pull/749)
- Improved support for consumption of OpenAssetIO by downstream CMake projects. `OpenAssetIOConfig.cmake` provides variables for locating the installation location of binaries and Python sources. When used as a CMake subproject, namespaced `ALIAS` targets match the exported targets, and the build-tree has `RPATH` support. [675](https://github.com/OpenAssetIO/OpenAssetIO/pull/675)
Bug fixes
- Fixed various broken URLs in markdown docs. [744](https://github.com/OpenAssetIO/OpenAssetIO/pull/744)
- Fixed unnecessary link dependencies on Python and pybind11 when building and linking to the `openassetio-python-bridge` library. [675](https://github.com/OpenAssetIO/OpenAssetIO/pull/675)
- Fixed the file extension for Windows debug builds of the `_openassetio` Python extension module. [675](https://github.com/OpenAssetIO/OpenAssetIO/pull/675)
- Fixed `.pdb` debug symbol files installation location on Windows. [675](https://github.com/OpenAssetIO/OpenAssetIO/pull/675)