AYON core addon — the base building block for the AYON pipeline. Provides CLI handlers, publishing plugins, pipeline API, loaders, and Qt graphical tools. Successor to OpenPype.
| File | Purpose |
|---|---|
pyproject.toml (root) |
Development only — defines the dev venv used for linting, testing, and tooling. Uses uv. Dependencies must be synced manually. |
client/pyproject.toml |
Addon deployment — defines runtime dependencies processed by ayon-dependencies-tool. Uses Poetry format. |
Never add a runtime dependency only to the root pyproject.toml. It must go in client/pyproject.toml.
Use ./tools/manage.sh for all common tasks:
./tools/manage.sh create-env # Create/update venv via uv, install pre-commit hooks
./tools/manage.sh run-tests # Run pytest (excludes 'server' marker)
./tools/manage.sh ruff-check # Run ruff linter
./tools/manage.sh ruff-fix # Run ruff linter with --fix
./tools/manage.sh codespell # Run codespell
./tools/manage.sh run <cmd> # Run any command via uv run
Requires Python 3.9.x only. The script will reject 3.10+.
- Tests live in
tests/(notclient/ayon_core/tests/despite the pyproject.tomltestpathssetting — the actual path istests/at repo root). conftest.pyaddsclient/tosys.pathsoayon_coreis importable.- Run a single test:
./tools/manage.sh run pytest <path> -v - Markers:
unit,integration,api,cli,slow,server - Default test run excludes
servermarker (requires a running AYON server).
- Ruff is the linter and formatter. Pre-commit runs
ruff check(notruff-format). - Codespell for spelling. Ignore list in
pyproject.toml[tool.codespell]. - CI runs
ruff-action@v3on PRs againstdevelop. - Pre-commit enforces branch naming: must match
(release|enhancement|feature|bugfix|documentation|tests|local|chore)/<name>.
- PEP-8, max line length 79 characters.
- Docstrings in Google format.
- Use
qtpy(never PySide6 directly) for Qt portability. - Use
loggingmodule, neverprint. - Always use type hints with
from __future__ import annotations. - Favor dataclasses over dicts.
- Compatible with Python 3.9.6.
- Entry point:
client/ayon_core/cli.py(CLI) andclient/ayon_core/__main__.py. - Main package:
client/ayon_core/— containsaddon/,pipeline/,plugins/,lib/,hooks/,host/,style/,settings/. - Pipeline modules:
pipeline/create/,pipeline/publish/,pipeline/load/,pipeline/traits/. - Vendor code lives in
client/ayon_core/vendor/. - Tests are at repo root
tests/, mirroring theclient/ayon_core/structure.
- Target branch:
develop. - PRs trigger: ruff lint, unit tests, label validation.
- Release via
release_trigger.ymlworkflow. - PR labels validated by
validate_pr_labels.yml.
- Root
pyproject.tomluses uv (uv venv,uv sync). client/pyproject.tomluses Poetry format (processed externally).- The root
pyproject.tomlhas apytest-ayondependency from a git URL — ensure network access when runninguv sync.