* implemented 'is_func_signature_supported' function
* 'WeakMethod' can be imported from 'python_2_comp' all the time
* simplified events logic for callback registration
* modified docstrings in publish lib
* removed unused imports
* fixed 'run_openpype_process' docstring
* added helper functions to client mongo api
* pack and unpack project functions can work without project files
* added flag argument to pack project command to zip only project files
* unpack project has also only project argument
* Fix extractions
* TemplatesDict can create different type of template
* anatomy templates can be formatted on their own
* return objected templates on get item
* '_rootless_path' is public classmethod 'rootless_path_from_result'
* 'AnatomyStringTemplate' expect anatomy templates
* remove key getters
* fix typo 'create_ojected_templates' -> 'create_objected_templates'
* Fix type of argument
* Fix long line
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Optimize formatting to use single template formatting instead of formatting full anatomy
* Use format strict + code cosmetics
* Get template from the formatted data
* Update openpype/plugins/publish/integrate_legacy.py
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
* Cosmetics
* Move template obj definition for path up + rename to `path_template_obj`
* Refactor more cases from `anatomy.format` to template obj `.format_strict`
* Refactor more cases from `anatomy.format` to template obj `.format_strict`
* Refactor more cases from `anatomy.format` to template obj `.format_strict`
---------
Co-authored-by: Jakub Trllo <jakub.trllo@gmail.com>
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
* TemplatesDict can create different type of template
* anatomy templates can be formatted on their own
* return objected templates on get item
* '_rootless_path' is public classmethod 'rootless_path_from_result'
* 'AnatomyStringTemplate' expect anatomy templates
* remove key getters
* fix typo 'create_ojected_templates' -> 'create_objected_templates'
* Fix type of argument
* Fix long line
* Include app group name with app name for logger
* Include app group name in launch finished log message
* Include app group name with launching message
* Use `application.full_name` instead
* Avoid command pop-ups during publishing (tip by @iLLiCiTiT)
* No need to pass creationflags because it's already done in `run_subprocess`
* Hide command window for `shell=True` calls
* Update openpype/lib/execute.py
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
---------
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
* Fix#4656: Enforce unique destination transfer in Integrator
Note that this is per instance - it doesn't validate cross-instance destinations in the context
* Use explicit DuplicateDestinationError and raise as KnownPublishError