Latest version: v1.0.0a12

PyUp actively tracks 462,628 Python packages for vulnerabilities to keep your Python environments secure.

Scan your dependencies

Page 1 of 2


New Features

- Added an overload of `ManagerFactory.defaultManagerForInterface` that takes a config file path string argument, rather than using an
environment variable. [937](

- Added support for `${config_dir}` interpolation within manager string settings retrieved from the TOML config file used by `defaultManagerForInterface`. This token expands to the absolute directory of the TOML config file. [804](


Breaking changes

- `Manager.createChildContext` now deep-copies the parent locale to prevent subsequent modifications of the locale of one context from affecting the other. [896](

- Removed `ManagerInterface.setRelatedReferences` pending re-design. [16](

- Simplified the locale `TraitsData` provided to API compliance tests via the `openassetio.test.manager` test harness. The locale now contains only a single `"openassetio:test.locale"` trait with a `"case"` property giving the name of the `unittest` test case. [835](

- Removed the `TraitBase` and `SpecificationBase` classes. Trait and specification view classes are no longer part of the core API and are instead auto-generated by the OpenAssetIO-TraitGen tool. [835](

- Changed the arguments of `BatchElementErrorCallback` and `ResolveSuccessCallback` from reference types to value types. [858](

New Features

- Added utility methods `castToPyObject` and `castFromPyObject` to `openassetio-python-bridge` to facilitate converting between C++ and Python objects for hosts seeking to support mixed language workflows. Note : Some methods on `Manager` and `ManagerInterface` are currently implemented in python, pending imminent port to C++. Due to this, these methods will not yet be available for use on a python object returned from `castToPyObject`. [798](


- Added support for running `ctest` when a python venv is used to determine which Python distribution to build against.

- `HostSession` methods `logger` and `host` now return a const reference to the held pointer rather than a copy. [815]( [#904](

- Contexts are now created with an empty `TraitsData` in their locale, this makes testing for imbued traits easier as it can be assumed that the pointer is never null. [903](

- `EntityReference` objects are now coercible to strings in Python, allowing more intuitive use with `format`, `print`, and others. [573](

- Added `Ptr`/`ConstPtr` alias members to all appropriate C++ classes, aliasing the associated `shared_ptr` of that class. [918](

- Added support for building for Python 3.11 [683](


Breaking changes

- Renamed `TraitBase.isValid` to `isImbued` for symmetry with `imbue`/`imbueTo` methods. [815](

- Changed the host identifier, and removed the custom locale from the `simpleResolver` example as they did not follow best practice.

- `BatchElementErrorCallback` moved from the top level `openassetio` namespace to the `openassetio::hostApi::Manager` namespace. [849](

- Removed the `entityName` and `entityDisplayName` methods in favour of resolvable traits to minimize API calls and allow industry specific flexibility. See OpenAssetIO-MediaCreation. [837](

New features

- Added `TraitBase.isImbuedTo` static/class method, giving a cheaper mechanism for testing whether a `TraitsData` is imbued with a trait. [815](

- Added `resolve`, `preflight` and `register` overloads for convenience, providing alternatives to the core callback-based workflow. Includes a more direct method for resolving a single entity reference, and exception vs. result object workflows. [849]( [#850]( [#851]( [#852]( [#853]( [#854](


- Improved the documentation for the `simpleResolver` example, to provide more context when using it as a starting point for an OpenAssetIO integration.

- Update the pybind dependency version to 2.10.1. [863](

- Made `BatchElementError` a copyable type in the C++ API. [849](

- Added equality/inequality comparison operators to `BatchElementError`. [862](

- Made the C++ codebase compliant with Clang-Tidy v15. Note that this is not yet enforced on CI. [847](

Bug fixes

- Removed `nodiscard` from `TraitsData::getTraitProperty`, and `TraitBase::getTraitProperty`, to allow "value or default" style use cases. [825](


Breaking changes

- Disabled the (nascent) C bindings by default. To enable, the `OPENASSETIO_ENABLE_C` CMake option must be explicitly set to `ON`.

New features

- The `FixtureAugmentedTestCase` class of the `openassetio.test.manager.harness` can now be configured to create a new, uninitialized manager instance for each test case, by setting the `shareManger` class variable or derived classes to `False`. This facilitates testing of a manager's initialization behavior. [BAL26](

Bug fixes

- Ensured that the Python GIL is acquired within `createPythonPluginSystemManagerImplementationFactory`, so that it is no longer necessary to acquire externally by the calling (host) thread. [797](

- Fixed use-after-free issue in hybrid C++/Python applications, where the Python interpreter is destroyed before OpenAssetIO objects are cleaned up. This could manifest as segfaults or hangs at program exit. [805](


Breaking changes

- The `openassetio.traits` module has been removed. OpenAssetIO itself no longer contains any trait definitions. Integrations of the API should use the established standards particular to the area of use. See [OpenAssetIO-MediaCreation]( for traits previously included here. [#717](


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](

- 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](

- 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](

- Removed references to `openassetio-traitgen` from codebase, is now in [own repository]( [#715](

- Removed `toml++` as vendored library. Is now an external dependency similar to other external dependencies.

- Moved `` 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](

- 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](

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](


- Added `openassetio-build` docker image. This is an extension of the already used [ASFW CY22 docker image](, 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](

- 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](

- Improved documentation for users that wish to build/release OpenAssetIO. [624]( [#716]( [#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](

Bug fixes

- Fixed various broken URLs in markdown docs. [744](

- Fixed unnecessary link dependencies on Python and pybind11 when building and linking to the `openassetio-python-bridge` library. [675](

- Fixed the file extension for Windows debug builds of the `_openassetio` Python extension module. [675](

- Fixed `.pdb` debug symbol files installation location on Windows. [675](

Page 1 of 2