* implemented 'get_workfile_info' in entities * removed 'prepare_asset_update_data' which is not used * disable settings and project manager if in v4 mode * prepared conversion helper functions for v4 entities * prepared conversion functions for hero versions * fix hero versions * implemented get_archived_representations * fix get latest versions * return prepared changes * handle archived representation * raise exception on failed json conversion * map archived to active properly * make sure default fields are added * fix conversion of hero version entity * fix conversion of archived representations * fix some conversions of representations and versions * changed active behavior in queries * fixed hero versions * implemented basic thumbnail caching * added raw variants of crud methods * implemented methods to get and create thumbnail * fix from flat dict * implemented some basic folder conversion for updates * fix thumbnail updates for version * implemented v4 thumbnail integrator * simplified data mapping * 'get_thumbnail' function also expect entity type and entity id for which is the thumbnail received * implemented 'get_thumbnail' for server * fix how thumbnail id is received from entity * removed unnecessary method 'get_thumbnail_id_from_source' * implemented thumbnail resolver for v4 * removed unnecessary print * move create and delete project directly to server api * disable local settings action too on v4 * OP-3521 - added method to check and download updated addons from v4 server * OP-3521 - added more descriptive error message for missing source * OP-3521 - added default implementation of addon downloader to import * OP-3521 - added check for dependency package zips WIP - server doesn't contain required endpoint. Testing only with mockup data for now. * OP-3521 - fixed parsing of DependencyItem Added Server Url type and ServerAddonDownloader - v4 server doesn't know its own DNS for static files so it is sending unique name and url must be created during runtime. * OP-3521 - fixed creation of targed directories * change nev keys to look for and don't set them automatically * fix task type conversion * implemented base of loading v4 addons in v3 * Refactored argument name in Downloaders * Updated parsing to DependencyItem according to current schema * Implemented downloading of package from server * Updated resolving of failures Uses Enum items. * Introduced passing of authorization token Better to inject it than to have it from env var. * Remove weird parsing of server_url Not necessary, endpoints have same prefix. * Fix doubling asset version name in addons folder Zip file should already contain `addonName_addonVersion` as first subfolder * Fix doubling asset version name in addons folder Zip file should already contain `addonName_addonVersion` as first subfolder * Made server_endpoint optional Argument should be better for testing, but for calling from separate methods it would be better to encapsulate it. Removed unwanted temporary productionPackage value * Use existing method to pull addon info from Server to load v4 version of addon * Raise exception when server doesn't have any production dependency package * added ability to specify v3 alias of addon name * expect v3_alias as uppered constant * Re-implemented method to get addon info Previous implementation wouldn't work in Python2 hosts. Will be refactored in the future. * fix '__getattr__' * added ayon api to pyproject.toml and lock file * use ayon api in common connection * added mapping for label * use ayon_api in client codebase * separated clearing cache of url and username * bump ayon api version * rename env 'OP4_TEST' to 'USE_AYON_SERVER' * Move and renamend get_addons_info to get_addons_info_as_dict in addon_distribution Should be moved to ayon_api later * Replaced requests calls with ayon_api * Replaced OP4_TEST_ENABLED with AYON_SERVER_ENABLED fixed endpoints * Hound * Hound * OP-3521 - fix wrong key in get_representation_parents parents overloads parents * OP-3521 - changes for v4 of SiteSync addon * OP-3521 - fix names * OP-3521 - remove storing project_name It should be safer to go thorug self.dbcon apparently * OP-3521 - remove unwanted "context["folder"]" can be only in dummy test data * OP-3521 - move site sync loaders to addon * Use only project instead of self.project * OP-3521 - added missed get_progress_for_repre * base of settings conversion script * simplified ayon functions in start.py * added loading of settings from ayon server * added a note about colors * fix global and local settings functions * AvalonMongoDB is not using mongo connection on ayon server enabled * 'get_dynamic_modules_dirs' is not checking system settings for paths in setting * log viewer is disabled when ayon server is enabled * basic logic of enabling/disabled addons * don't use mongo logging if ayon server is enabled * update ayon api * bump ayon api again * use ayon_api to get addons info in modules/base * update ayon api * moved helper functions to get addons and dependencies dir to common functions * Initialization of AddonInfo is not crashing on unkonwn sources * renamed 'DependencyDownloader' to 'AyonServerDownloader' * renamed function 'default_addon_downloader' to 'get_default_addon_downloader' * Added ability to convert 'WebAddonSource' to 'ServerResourceSorce' * missing dependency package on server won't cause crash * data sent to downloaders don't contain ayon specific headers * modified addon distribution to not duplicate 'ayon_api' functionality * fix doubled function defintioin * unzip client file to addon destination * formatting - unify quotes * disable usage of mongo connection if in ayon mode * renamed window.py to login_window.py * added webpublisher settings conversion * added maya conversion function * reuse variable * reuse variable (similar to previous commit) * fix ayon addons loading * fix typo 'AyonSettingsCahe' -> 'AyonSettingsCache' * fix enabled state changes * fix rr_path in royal render conversion * avoid mongo calls in AYON state * implemented custom AYON start script * fix formatting (after black) * ayon_start cleanup * 'get_addons_dir' and 'get_dependencies_dir' store value to environment variable * add docstrings to local dir functions * addon info has full name * fix modules enabled states * removed unused 'run_disk_mapping_commands' * removed ayon logic from 'start.py' * fix warning message * renamed 'openpype_common' to 'ayon_common' * removed unused import * don't import igniter * removed startup validations of third parties * change what's shown in version info * fix which keys are applied from ayon values * fix method name * get applications from attribs * Implemented UI basics to be able change user or logout * merged server.py and credentials.py * add more metadata to urls * implemented change token * implemented change user ui functionality * implemented change user ui * modify window to handle username and token value * pass username to add server * fix show UI cases * added loggin action to tray * update ayon api * added missing dependency * convert applications to config in a right way * initial implementation of 'nuke' settings conversion * removed few nuke comments * implemented hiero conversion * added imageio conversion * added run ayon tray script * fix few settings conversions * Renamed class of source classes as they are not just for addons * implemented objec to track source transfer progress * Implemented distribution item with multiple sources * Implemented ayon distribution wrapper to care about multiple things during distribution * added 'cleanup' method for downlaoders * download gets tranfer progress object * Change UploadState enum * added missing imports * use AyonDistribution in ayon_start.py * removed unused functions * removed implemented TODOs * fix import * fix key used for Web source * removed temp development fix * formatting fix * keep information if source require distribution * handle 'require_distribution' attribute in distribution process * added path attribute to server source * added option to pass addons infor to ayon distribution * fix tests * fix formatting * Fix typo * Fix typo * remove '_try_convert_to_server_source' * renamed attributes and methods to match their content * it is possible to pass dependency package info to AyonDistribution * fix called methods in tests * added public properties for error message and error detail * Added filename to WebSourceInfo Useful for GDrive sharable links where target file name is unknown/unparsable, it should be provided explicitly. * unify source conversion by adding 'convert_source' function * Fix error message Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com> * added docstring for 'transfer_progress' * don't create metadata file on read * added few docstrings * add default folder fields to folder/task queries * fix generators * add dependencies when runnign from code * add sys paths from distribution to pythonpath env * fix missing applications * added missing conversions for maya renderers * fix formatting * update ayon api * fix hashes in lock file * Use better exception Co-authored-by: Ondřej Samohel <33513211+antirotor@users.noreply.github.com> * Use Python 3 syntax Co-authored-by: Ondřej Samohel <33513211+antirotor@users.noreply.github.com> * apply some of sugested changes in ayon_start * added some docstrings and suggested modifications * copy create env from develop * fix rendersettings conversion * change code by suggestions * added missing args to docstring * added missing docstrings * separated downloader and download factory * fix ayon settings * added some basic file docstring to ayon_settings * join else conditions * fix project settings conversion * fix created at conversion * fix workfile info query * fix publisher UI * added utils function 'get_ayon_appdirs' * fix 'get_all_current_info' * fix server url assignment when url is set * updated ayon api * added utils functions to create local site id for ayon * added helper functions to create global connection * create global connection in ayon start to start use site id * use ayon site id in ayon mode * formatting cleanup * added header docstring * fixes after ayon_api update * load addons from ynput appdirs * fix function call * added docstring * update ayon pyton api * fix settings access * use ayon_api to get root overrides in Anatomy * bumbayon version to 0.1.13 * nuke: fixing settings keys from settings * fix burnins definitions * change v4 to AYON in thumbnail integrate * fix one more v4 information * Fixes after rebase * fix extract burnin conversion * additional fix of extract burnin * SiteSync:added missed loaders or v3 compatibility (#4587) * Added site sync loaders for v3 compatibility * Fix get_progress_for_repre * use 'files.name' instead of 'files.baseName' * update ayon api to 0.1.14 * add common to include files * change arguments for hero version creation * skip shotgrid settings conversion if different ayon addon is used * added ayon icons * fix labels of application variants * added option to show login window always on top * login window on invalid credentials is always on top * update ayon api * update ayon api * add entityType to project and folders * AYON: Editorial hierarchy creation (#4699) * disable extract hierarchy avalon when ayon mode is enabled * implemented extract hierarchy to AYON --------- Co-authored-by: Petr Kalis <petr.kalis@gmail.com> Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com> Co-authored-by: Ondřej Samohel <33513211+antirotor@users.noreply.github.com> Co-authored-by: Jakub Jezek <jakubjezek001@gmail.com> |
||
|---|---|---|
| .github | ||
| common/ayon_common | ||
| docs | ||
| igniter | ||
| openpype | ||
| schema | ||
| tests | ||
| tools | ||
| vendor | ||
| website | ||
| .all-contributorsrc | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .hound.yml | ||
| .pre-commit-config.yaml | ||
| .prettierrc | ||
| app_launcher.py | ||
| ARCHITECTURE.md | ||
| ayon_start.py | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| conftest.py | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| Dockerfile.centos7 | ||
| Dockerfile.debian | ||
| HISTORY.md | ||
| inno_setup.iss | ||
| LICENSE | ||
| poetry.lock | ||
| poetry.toml | ||
| pyproject.toml | ||
| README.md | ||
| setup.cfg | ||
| setup.py | ||
| start.py | ||
| test_localsystem.txt | ||
OpenPype
Introduction
Open-source pipeline for visual effects and animation built on top of the Avalon framework, expanding it with extra features and integrations. OpenPype connects your DCCs, asset database, project management and time tracking into a single system. It has a tight integration with ftrack, but can also run independently or be integrated into a different project management solution.
OpenPype provides a robust platform for your studio, without the worry of a vendor lock. You will always have full access to the source-code and your project database will run locally or in the cloud of your choice.
To get all the information about the project, go to OpenPype.io
Requirements
We aim to closely follow VFX Reference Platform
OpenPype is written in Python 3 with specific elements still running in Python2 until all DCCs are fully updated. To see the list of those, that are not quite there yet, go to VFX Python3 tracker
The main things you will need to run and build OpenPype are:
- Terminal in your OS
- PowerShell 5.0+ (Windows)
- Bash (Linux)
- Python 3.9.6 or higher
- MongoDB (needed only for local development)
It can be built and ran on all common platforms. We develop and test on the following:
- Windows 10
- Linux
- Ubuntu 20.04 LTS
- Centos 7
- Mac OSX
- 10.15 Catalina
- 11.1 Big Sur (using Rosetta2)
For more details on requirements visit requirements documentation
Building OpenPype
To build OpenPype you currently need Python 3.9 as we are following vfx platform. Because of some Linux distros comes with newer Python version already, you need to install 3.9 version and make use of it. You can use perhaps pyenv for this on Linux. Note: We do not support 3.9.0 because of this bug. Please, use higher versions of 3.9.x.
Windows
You will need Python >= 3.9.1 and git. More tools might be needed for installing dependencies (for example for OpenTimelineIO) - mostly development tools like CMake and Visual Studio
Clone repository:
git clone --recurse-submodules git@github.com:Pypeclub/OpenPype.git
To build OpenPype:
- Run
.\tools\create_env.ps1to create virtual environment in.\venv. - Run
.\tools\fetch_thirdparty_libs.ps1to download third-party dependencies like ffmpeg and oiio. Those will be included in build. - Run
.\tools\build.ps1to build OpenPype executables in.\build\.
To create distributable OpenPype versions, run ./tools/create_zip.ps1 - that will
create zip file with name openpype-vx.x.x.zip parsed from current OpenPype repository and
copy it to user data dir, or you can specify --path /path/to/zip to force it there.
You can then point Igniter - OpenPype setup tool - to directory containing this zip and it will install it on current computer.
OpenPype is build using CX_Freeze to freeze itself and all dependencies.
macOS
You will need Python >= 3.9 and git. You'll need also other tools to build some OpenPype dependencies like CMake and XCode Command Line Tools (or some other build system).
Easy way of installing everything necessary is to use Homebrew:
-
Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install cmake:
brew install cmake -
Install pyenv:
brew install pyenv echo 'eval "$(pyenv init -)"' >> ~/.zshrc pyenv init exec "$SHELL" PATH=$(pyenv root)/shims:$PATH -
Pull in required Python version 3.9.x:
# install Python build dependences brew install openssl readline sqlite3 xz zlib # replace with up-to-date 3.9.x version pyenv install 3.9.6 -
Set local Python version:
# switch to OpenPype source directory pyenv local 3.9.6
To build OpenPype:
- Run
.\tools\create_env.shto create virtual environment in.\venv - Run
.\tools\fetch_thirdparty_libs.shto download third-party dependencies like ffmpeg and oiio. Those will be included in build. - Run
.\tools\build.shto build OpenPype executables in.\build\
Linux
Docker
Easiest way to build OpenPype on Linux is using Docker. Just run:
sudo ./tools/docker_build.sh
This will by default use Debian as base image. If you need to make Centos 7 compatible build, please run:
sudo ./tools/docker_build.sh centos7
If all is successful, you'll find built OpenPype in ./build/ folder.
Manual build
You will need Python >= 3.9 and git. You'll also need curl on systems that doesn't have one preinstalled.
To build Python related stuff, you need Python header files installed (python3-dev on Ubuntu for example).
You'll need also other tools to build some OpenPype dependencies like CMake. Python 3 should be part of all modern distributions. You can use your package manager to install git and cmake.
Details for Ubuntu
Install git, cmake and curlsudo apt install build-essential checkinstall
sudo apt install git cmake curl
Note:
In case you run in error about xcb when running OpenPype,
you'll need also additional libraries for Qt5:
sudo apt install qt5-default
or if you are on Ubuntu > 20.04, there is no qt5-default packages so you need to install its content individually:
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
Details for Centos
Install git, cmake and curlsudo yum install qit cmake
Note:
In case you run in error about xcb when running OpenPype,
you'll need also additional libraries for Qt5:
sudo yum install qt5-qtbase-devel
Use pyenv to install Python version for OpenPype build
You will need bzip2, readline, sqlite3 and other libraries.
For more details about Python build environments see:
https://github.com/pyenv/pyenv/wiki#suggested-build-environment
For Ubuntu:
sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
For Centos:
yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel
install pyenv
curl https://pyenv.run | bash
# you can add those to ~/.bashrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# reload shell
exec $SHELL
# install Python 3.9.x
pyenv install -v 3.9.6
# change path to OpenPype 3
cd /path/to/openpype-3
# set local python version
pyenv local 3.9.6
To build OpenPype:
- Run
.\tools\create_env.shto create virtual environment in.\venv - Run
.\tools\build.shto build OpenPype executables in.\build\
Running OpenPype
OpenPype can by executed either from live sources (this repository) or from "frozen code" - executables that can be build using steps described above.
If OpenPype is executed from live sources, it will use OpenPype version included in them. If
it is executed from frozen code it will try to find latest OpenPype version installed locally
on current computer and if it is not found, it will ask for its location. On that location
OpenPype can be either in directories or zip files. OpenPype will try to find latest version and
install it to user data directory (on Windows to %LOCALAPPDATA%\pypeclub\openpype, on Linux
~/.local/share/openpype and on macOS in ~/Library/Application Support/openpype).
From sources
OpenPype can be run directly from sources by activating virtual environment:
poetry run python start.py tray
This will use current OpenPype version with sources. You can override this with --use-version=x.x.x and
then OpenPype will try to find locally installed specified version (present in user data directory).
From frozen code
You need to build OpenPype first. This will produce two executables - openpype_gui(.exe) and openpype_console(.exe).
First one will act as GUI application and will not create console (useful in production environments).
The second one will create console and will write output there - useful for headless application and
debugging purposes. If you need OpenPype version installed, just run ./tools/create_zip(.ps1|.sh) without
arguments and it will create zip file that OpenPype can use.
Building documentation
Top build API documentation, run .\tools\make_docs(.ps1|.sh). It will create html documentation
from current sources in .\docs\build.
Note that it needs existing virtual environment.
Running tests
To run tests, execute .\tools\run_tests(.ps1|.sh).
Note that it needs existing virtual environment.
Developer tools
In case you wish to add your own tools to .\tools folder without git tracking, it is possible by adding it with dev_* suffix (example: dev_clear_pyc(.ps1|.sh)).
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!