/OpenAssetIO-MediaCreation

OpenAssetIO extensions for use in the Media Creation industry.

Primary LanguagePythonApache License 2.0Apache-2.0

OpenAssetIO-MediaCreation

A library of OpenAssetIO extensions for use in Media Creation workflows. Covering images, three-dimenstional models, versioning, proxy relationships and more.

Warning: This repository is currently in a beta state, and so should be used in production critical applications with caution.

Included are several well-known Traits and Specifications for use in Digital Content Creation tools and wth Asset Management Systems found in the media production space. For more information on the Traits and Specifications mechanism, see the OpenAssetIO docs.

The project attempts to align with relevant industry standards wherever possible or appicable, incuding:

MediaCreation is an automatically generated Python/C++ package, openassetio-traitgen is used to generate trait implementations based on traits.yml.

Examples

Code samples of how the Media Creation Traits and Specifications can be used in production workflows are available in the examples directory in form of Jupyter notebooks.

When viewed in GitHub they will be fully rendered. They can also be explored locally:

git clone https://github.com/OpenAssetIO/OpenAssetIO-MediaCreation.git
cd OpenAssetIO-MediaCreation
python -m venv .venv
. ./.venv/bin/activate
python -m pip install .
python -m pip install -r examples/resources/requirements.txt
cd examples
jupyter notebook

Project status

These initial incarnations of traits/specifications serve as illustrative examples to facilitate discussion and experimentation. Pending tasks required to reach a stable v1.0:

  • Define YAML schema to represent traits/specifications.
  • Auto-generate Python classes from YAML
  • Auto-generate CPP classes from YAML
  • Extend library to cover common post-production entities and locales.
  • Define how change is managed within the library.
  • Determine if there is a neccesary mechanism for extending existing Specifications.

Installation

Python

python -m pip install openassetio-mediacreation

C++

Note

During the configure process, openassetio-traitgen will be used to generate C++ trait files. This is assumed to be available in your environment. You may install it via python -m pip install openassetio-traitgen

cmake -S . -B build
cmake --build build
cmake --install build

A cmake package will be created under a dist directory in your build directory.

Running the tests

Python

To run the tests, on a local development checkout, you can install the package with pip, then run pytest.

Note, editable installs are not supported as the package is entirely auto-generated from the traits YAML.

python -m pip install .
python -m pip install pytest
pytest

C++

Note

Building with tests introduces a build-time dependency on OpenAssetIO, which must be discoverable via cmake.

The C++ tests are enabled via setting a cmake variable in the configure:

cmake -S . -B build -DOPENASSETIO_MEDIACREATION_ENABLE_TEST=ON
cmake --build build
ctest --test-dir build/tests/cpp

Contributing

This repository follows the contribution guidelines outlined in the main OpenAssetIO repository. All discussion most welcome!

When adding new Traits and Specifications:

  1. Review the guidelines
  2. Update traits.yml
  3. Add an import test
  4. Update the RELEASE_NOTES