From 0a207ad032273365f41b9032631d9eb26dfc0d5e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 20 Jun 2024 20:19:08 +0200 Subject: [PATCH 001/626] Add simple Create Project Structure launcher action --- .../create_project_folder_structure.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 client/ayon_core/plugins/actions/create_project_folder_structure.py diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py new file mode 100644 index 0000000000..6df52abbcb --- /dev/null +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -0,0 +1,20 @@ +from ayon_core.pipeline import LauncherAction +from ayon_core.pipeline import project_folders + + +class CreateProjectStructureAction(LauncherAction): + """Create project structure as defined in settings.""" + name = "create_project_structure" + label = "Create Project Structure" + icon = "sitemap" + color = "#e0e1e1" + order = 1000 + + def is_compatible(self, selection) -> bool: + return ( + selection.is_project_selected and + not selection.is_folder_selected + ) + + def process(self, selection, **kwargs): + project_folders.create_project_folders(selection.project_name) \ No newline at end of file From 905241f6f4c0674c173b8070579431802b8f1b88 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 20 Jun 2024 20:25:24 +0200 Subject: [PATCH 002/626] Cosmetics --- .../plugins/actions/create_project_folder_structure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index 6df52abbcb..e555f08301 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -17,4 +17,4 @@ class CreateProjectStructureAction(LauncherAction): ) def process(self, selection, **kwargs): - project_folders.create_project_folders(selection.project_name) \ No newline at end of file + project_folders.create_project_folders(selection.project_name) From fbd27357729146efed795db1302cc97897807621 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 20 Jun 2024 20:26:47 +0200 Subject: [PATCH 003/626] Cosmetics --- .../plugins/actions/create_project_folder_structure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index e555f08301..95c46099d7 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -1,5 +1,4 @@ -from ayon_core.pipeline import LauncherAction -from ayon_core.pipeline import project_folders +from ayon_core.pipeline import LauncherAction, project_folders class CreateProjectStructureAction(LauncherAction): From 18f750f39a893d93fe66c5447c7c033c531e8baa Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 21 Jun 2024 09:38:57 +0200 Subject: [PATCH 004/626] Update client/ayon_core/plugins/actions/create_project_folder_structure.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../plugins/actions/create_project_folder_structure.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folder_structure.py index 95c46099d7..c12db9b353 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folder_structure.py @@ -11,8 +11,8 @@ class CreateProjectStructureAction(LauncherAction): def is_compatible(self, selection) -> bool: return ( - selection.is_project_selected and - not selection.is_folder_selected + selection.is_project_selected + and not selection.is_folder_selected ) def process(self, selection, **kwargs): From 56fb5c4c021777664b64922b153499ee7cf8ee26 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 4 Oct 2024 11:08:56 +0200 Subject: [PATCH 005/626] Rename action to Create Project Folders --- ...ject_folder_structure.py => create_project_folders.py} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename client/ayon_core/plugins/actions/{create_project_folder_structure.py => create_project_folders.py} (68%) diff --git a/client/ayon_core/plugins/actions/create_project_folder_structure.py b/client/ayon_core/plugins/actions/create_project_folders.py similarity index 68% rename from client/ayon_core/plugins/actions/create_project_folder_structure.py rename to client/ayon_core/plugins/actions/create_project_folders.py index c12db9b353..2dd26b578a 100644 --- a/client/ayon_core/plugins/actions/create_project_folder_structure.py +++ b/client/ayon_core/plugins/actions/create_project_folders.py @@ -1,10 +1,10 @@ from ayon_core.pipeline import LauncherAction, project_folders -class CreateProjectStructureAction(LauncherAction): - """Create project structure as defined in settings.""" - name = "create_project_structure" - label = "Create Project Structure" +class CreateProjectFoldersAction(LauncherAction): + """Create project folders as defined in settings.""" + name = "create_project_folders" + label = "Create Project Folders" icon = "sitemap" color = "#e0e1e1" order = 1000 From 8383fdefa40814aa40fe3ca1ef311f7261f8cebb Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 4 Oct 2024 11:12:03 +0200 Subject: [PATCH 006/626] Hide action if setting is empty --- .../plugins/actions/create_project_folders.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/ayon_core/plugins/actions/create_project_folders.py b/client/ayon_core/plugins/actions/create_project_folders.py index 2dd26b578a..934a9169d7 100644 --- a/client/ayon_core/plugins/actions/create_project_folders.py +++ b/client/ayon_core/plugins/actions/create_project_folders.py @@ -10,6 +10,16 @@ class CreateProjectFoldersAction(LauncherAction): order = 1000 def is_compatible(self, selection) -> bool: + + # Disable when the project folder structure setting is empty + # in settings + project_settings = selection.get_project_settings() + folder_structure = ( + project_settings["core"]["project_folder_structure"] + ).strip() + if not folder_structure or folder_structure == "{}": + return False + return ( selection.is_project_selected and not selection.is_folder_selected From 5aa7e9c8caa7a400f0b01db3a12a8e9e49fbed64 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 4 Oct 2024 11:17:33 +0200 Subject: [PATCH 007/626] Add description to setting --- server/settings/main.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/settings/main.py b/server/settings/main.py index 249bab85fd..5eaacc7072 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -301,6 +301,11 @@ class CoreSettings(BaseSettingsModel): "{}", widget="textarea", title="Project folder structure", + description=( + "Defines project folders to create on 'Create project folders'." + " When empty, the action will be hidden from users in the" + " launcher because there is nothing to create." + ), section="---" ) project_environments: str = SettingsField( From 5065e0e8dbb4da9e4a05918abced984b2f077e5d Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 4 Oct 2024 12:04:14 +0200 Subject: [PATCH 008/626] Explicit description to describe diff between ftrack and launcher --- server/settings/main.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index 5eaacc7072..a5129e69af 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -303,8 +303,12 @@ class CoreSettings(BaseSettingsModel): title="Project folder structure", description=( "Defines project folders to create on 'Create project folders'." - " When empty, the action will be hidden from users in the" - " launcher because there is nothing to create." + "\n\n" + "- In the launcher, this only creates the folders on disk and " + " when the setting is empty it will be hidden from users in the" + " launcher.\n" + "- In `ayon-ftrack` this will create the folders on disk **and**" + " will also create ftrack entities. It is never hidden there." ), section="---" ) From b9774e491298fcf500f982c581c9a53da86a1588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 8 Oct 2024 15:39:22 +0200 Subject: [PATCH 009/626] :wrench: WIP on feature/909-define-basic-trait-type-using-dataclasses --- client/ayon_core/pipeline/traits/__init__.py | 22 + .../pipeline/traits/three_dimensional.py | 21 + client/ayon_core/pipeline/traits/trait.py | 35 ++ .../pipeline/traits/two_dimensional.py | 130 +++++ client/pyproject.toml | 1 + poetry.lock | 468 +++++++++++------- pyproject.toml | 10 +- 7 files changed, 515 insertions(+), 172 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/__init__.py create mode 100644 client/ayon_core/pipeline/traits/three_dimensional.py create mode 100644 client/ayon_core/pipeline/traits/trait.py create mode 100644 client/ayon_core/pipeline/traits/two_dimensional.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py new file mode 100644 index 0000000000..e85e88269b --- /dev/null +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -0,0 +1,22 @@ +"""Trait classes for the pipeline.""" +from .trait import TraitBase +from .two_dimensional import ( + Compressed, + Deep, + Image, + Overscan, + PixelBased, + Planar, +) + +__all__ = [ + # base + "TraitBase", + # two-dimensional + "Image", + "PixelBased", + "Planar", + "Deep", + "Compressed", + "Overscan", +] diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py new file mode 100644 index 0000000000..c27b7ee56b --- /dev/null +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -0,0 +1,21 @@ +"""Two-dimensional image traits.""" +from pydantic import Field + +from .trait import TraitBase + + +class Spatial(TraitBase): + """Spatial trait model. + + Attributes: + up_axis (str): Up axis. + handedness (str): Handedness. + meters_per_unit (float): Meters per unit. + + """ + id: str = "ayon.content.Spatial.v1" + name: str = "Spatial" + description = "Spatial trait model." + up_axis: str = Field(..., title="Up axis") + handedness: str = Field(..., title="Handedness") + meters_per_unit: float = Field(..., title="Meters per unit") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py new file mode 100644 index 0000000000..0ac2d63cdd --- /dev/null +++ b/client/ayon_core/pipeline/traits/trait.py @@ -0,0 +1,35 @@ +"""Defines the base trait model.""" +from pydantic import BaseModel, Field + + +def camelize(src: str) -> str: + """Convert snake_case to camelCase.""" + components = src.split("_") + return components[0] + "".join(x.title() for x in components[1:]) + + +class TraitBase(BaseModel): + """Base trait model. + + This model must be used as a base for all trait models. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + as ``ayon.content.LocatableBundle.v1`` + + """ + + class Config: + """API model config.""" + + orm_mode = True + allow_population_by_field_name = True + alias_generator = camelize + + name: str = Field(..., title="Trait name") + description: str = Field(..., title="Trait description") + # id should be: ayon.content.LocatableBundle.v1 + id: str = Field(..., title="Trait ID", + description="Unique identifier for the trait.") diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py new file mode 100644 index 0000000000..cd180ffc6b --- /dev/null +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -0,0 +1,130 @@ +"""Two-dimensional image traits.""" +from pydantic import Field + +from .trait import TraitBase + + +class Image(TraitBase): + """Image trait model. + + This model represents an image trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + + """ + + name: str = "Image" + description = "Image Trait" + id: str = "ayon.content.Image.v1" + + +class PixelBased(TraitBase): + """PixelBased trait model. + + This model represents a pixel based trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + display_window_width (int): Width of the image display window. + display_window_height (int): Height of the image display window. + pixel_aspect_ratio (float): Pixel aspect ratio. + + """ + + name: str = "PixelBased" + description = "PixelBased Trait Model" + id: str = "ayon.content.PixelBased.v1" + display_window_width: int = Field(..., title="Display Window Width") + display_window_height: int = Field(..., title="Display Window Height") + pixel_aspect_ratio: float = Field(..., title="Pixel Aspect Ratio") + + +class Planar(TraitBase): + """Planar trait model. + + This model represents an Image with planar configuration. + + Todo (antirotor): Is this really a planar configuration? As with + bitplanes and everything? If it serves as differentiator for + Deep images, should it be named differently? Like Raster? + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + planar_configuration (str): Planar configuration. + + """ + + name: str = "Planar" + description = "Planar Trait Model" + id: str = "ayon.content.Planar.v1" + planar_configuration: str = Field(..., title="Planar-based Image") + + +class Deep(TraitBase): + """Deep trait model. + + This model represents a deep image trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + deep_data_type (str): Deep data type. + + """ + + name: str = "Deep" + description = "Deep Trait Model" + id: str = "ayon.content.Deep.v1" + deep_data_type: str = Field(..., title="Deep Data Type") + + +class Compressed(TraitBase): + """Compressed trait model. + + This model represents a compressed image trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + compression_type (str): Compression type. + + """ + + name: str = "Compressed" + description = "Compressed Trait" + id: str = "ayon.content.Compressed.v1" + compression_type: str = Field(..., title="Compression Type") + + +class Overscan(TraitBase): + """Overscan trait model. + + This model represents an overscan (or underscan) trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + left (int): Left overscan/underscan. + right (int): Right overscan/underscan. + top (int): Top overscan/underscan. + bottom (int): Bottom overscan/underscan. + + """ + + name: str = "Overscan" + description = "Overscan Trait" + id: str = "ayon.content.Overscan.v1" + left: int = Field(..., title="Left Overscan") + right: int = Field(..., title="Right Overscan") + top: int = Field(..., title="Top Overscan") + bottom: int = Field(..., title="Bottom Overscan") diff --git a/client/pyproject.toml b/client/pyproject.toml index a0be9605b6..54685c5215 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -10,6 +10,7 @@ pyblish-base = "^1.8.11" speedcopy = "^2.1" six = "^1.15" qtawesome = "0.7.3" +pydantic = "^2.9.2" [ayon.runtimeDependencies] aiohttp-middlewares = "^2.0.0" diff --git a/poetry.lock b/poetry.lock index be5a3b2c2c..ba3956df39 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,15 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] [[package]] name = "appdirs" @@ -13,30 +24,29 @@ files = [ [[package]] name = "ayon-python-api" -version = "1.0.1" +version = "1.0.9" description = "AYON Python API" optional = false python-versions = "*" files = [ - {file = "ayon-python-api-1.0.1.tar.gz", hash = "sha256:6a53af84903317e2097f3c6bba0094e90d905d6670fb9c7d3ad3aa9de6552bc1"}, - {file = "ayon_python_api-1.0.1-py3-none-any.whl", hash = "sha256:d4b649ac39c9003cdbd60f172c0d35f05d310fba3a0649b6d16300fe67f967d6"}, + {file = "ayon-python-api-1.0.9.tar.gz", hash = "sha256:d1a3d467bdcb5a27120fed59d8996e97b6ef4d56a570b5957df922fc5ef58074"}, + {file = "ayon_python_api-1.0.9-py3-none-any.whl", hash = "sha256:0e4d623befe24bfb4c0c58746f49cbfe182d48ab13cd743177d1af3702e0de43"}, ] [package.dependencies] appdirs = ">=1,<2" requests = ">=2.27.1" -six = ">=1.15" -Unidecode = ">=1.2.0" +Unidecode = ">=1.3.0" [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -151,13 +161,13 @@ files = [ [[package]] name = "codespell" -version = "2.2.6" +version = "2.3.0" description = "Codespell" optional = false python-versions = ">=3.8" files = [ - {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"}, - {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"}, + {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, + {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, ] [package.extras] @@ -190,13 +200,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -204,29 +214,29 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.13.1" +version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] -typing = ["typing-extensions (>=4.8)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "identify" -version = "2.5.35" +version = "2.6.1" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, ] [package.extras] @@ -234,15 +244,18 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.6" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -256,53 +269,51 @@ files = [ [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -311,13 +322,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.6.2" +version = "4.0.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-4.0.0-py2.py3-none-any.whl", hash = "sha256:0ca2341cf94ac1865350970951e54b1a50521e57b7b500403307aed4315a1234"}, + {file = "pre_commit-4.0.0.tar.gz", hash = "sha256:5d9807162cc5537940f94f266cbe2d716a75cfad0d78a317a92cac16287cfed6"}, ] [package.dependencies] @@ -327,15 +338,136 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "pydantic" +version = "2.9.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + [[package]] name = "pytest" -version = "8.1.1" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -343,97 +475,100 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-print" -version = "1.0.0" +version = "1.0.2" description = "pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout)" optional = false python-versions = ">=3.8" files = [ - {file = "pytest_print-1.0.0-py3-none-any.whl", hash = "sha256:23484f42b906b87e31abd564761efffeb0348a6f83109fb857ee6e8e5df42b69"}, - {file = "pytest_print-1.0.0.tar.gz", hash = "sha256:1fcde9945fba462227a8959271369b10bb7a193be8452162707e63cd60875ca0"}, + {file = "pytest_print-1.0.2-py3-none-any.whl", hash = "sha256:3ae7891085dddc3cd697bd6956787240107fe76d6b5cdcfcd782e33ca6543de9"}, + {file = "pytest_print-1.0.2.tar.gz", hash = "sha256:2780350a7bbe7117f99c5d708dc7b0431beceda021b1fd3f11200670d7f33679"}, ] [package.dependencies] -pytest = ">=7.4" +pytest = ">=8.3.2" [package.extras] -test = ["covdefaults (>=2.3)", "coverage (>=7.3)", "pytest-mock (>=3.11.1)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "pytest-mock (>=3.14)"] [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -448,66 +583,61 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "ruff" -version = "0.3.3" +version = "0.3.7" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:973a0e388b7bc2e9148c7f9be8b8c6ae7471b9be37e1cc732f8f44a6f6d7720d"}, - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfa60d23269d6e2031129b053fdb4e5a7b0637fc6c9c0586737b962b2f834493"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eca7ff7a47043cf6ce5c7f45f603b09121a7cc047447744b029d1b719278eb5"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7d3f6762217c1da954de24b4a1a70515630d29f71e268ec5000afe81377642d"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b24c19e8598916d9c6f5a5437671f55ee93c212a2c4c569605dc3842b6820386"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5a6cbf216b69c7090f0fe4669501a27326c34e119068c1494f35aaf4cc683778"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352e95ead6964974b234e16ba8a66dad102ec7bf8ac064a23f95371d8b198aab"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6ab88c81c4040a817aa432484e838aaddf8bfd7ca70e4e615482757acb64f8"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79bca3a03a759cc773fca69e0bdeac8abd1c13c31b798d5bb3c9da4a03144a9f"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2700a804d5336bcffe063fd789ca2c7b02b552d2e323a336700abb8ae9e6a3f8"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd66469f1a18fdb9d32e22b79f486223052ddf057dc56dea0caaf1a47bdfaf4e"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:45817af234605525cdf6317005923bf532514e1ea3d9270acf61ca2440691376"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8"}, - {file = "ruff-0.3.3-py3-none-win32.whl", hash = "sha256:f2831ec6a580a97f1ea82ea1eda0401c3cdf512cf2045fa3c85e8ef109e87de0"}, - {file = "ruff-0.3.3-py3-none-win_amd64.whl", hash = "sha256:be90bcae57c24d9f9d023b12d627e958eb55f595428bafcb7fec0791ad25ddfc"}, - {file = "ruff-0.3.3-py3-none-win_arm64.whl", hash = "sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61"}, - {file = "ruff-0.3.3.tar.gz", hash = "sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d"}, + {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0e8377cccb2f07abd25e84fc5b2cbe48eeb0fea9f1719cad7caedb061d70e5ce"}, + {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:15a4d1cc1e64e556fa0d67bfd388fed416b7f3b26d5d1c3e7d192c897e39ba4b"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28bdf3d7dc71dd46929fafeec98ba89b7c3550c3f0978e36389b5631b793663"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:379b67d4f49774ba679593b232dcd90d9e10f04d96e3c8ce4a28037ae473f7bb"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c060aea8ad5ef21cdfbbe05475ab5104ce7827b639a78dd55383a6e9895b7c51"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ebf8f615dde968272d70502c083ebf963b6781aacd3079081e03b32adfe4d58a"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48098bd8f5c38897b03604f5428901b65e3c97d40b3952e38637b5404b739a2"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8a4fda219bf9024692b1bc68c9cff4b80507879ada8769dc7e985755d662ea"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c44e0149f1d8b48c4d5c33d88c677a4aa22fd09b1683d6a7ff55b816b5d074f"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3050ec0af72b709a62ecc2aca941b9cd479a7bf2b36cc4562f0033d688e44fa1"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a29cc38e4c1ab00da18a3f6777f8b50099d73326981bb7d182e54a9a21bb4ff7"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b15cc59c19edca917f51b1956637db47e200b0fc5e6e1878233d3a938384b0b"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e491045781b1e38b72c91247cf4634f040f8d0cb3e6d3d64d38dcf43616650b4"}, + {file = "ruff-0.3.7-py3-none-win32.whl", hash = "sha256:bc931de87593d64fad3a22e201e55ad76271f1d5bfc44e1a1887edd0903c7d9f"}, + {file = "ruff-0.3.7-py3-none-win_amd64.whl", hash = "sha256:5ef0e501e1e39f35e03c2acb1d1238c595b8bb36cf7a170e7c1df1b73da00e74"}, + {file = "ruff-0.3.7-py3-none-win_arm64.whl", hash = "sha256:789e144f6dc7019d1f92a812891c645274ed08af6037d11fc65fcbc183b7d59f"}, + {file = "ruff-0.3.7.tar.gz", hash = "sha256:d5c1aebee5162c2226784800ae031f660c350e7a3402c4d1f8ea4e97e232e3ba"}, ] [[package]] -name = "setuptools" -version = "69.2.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" +name = "semver" +version = "3.0.2" +description = "Python helper for Semantic Versioning (https://semver.org)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"}, + {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"}, ] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -523,13 +653,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -540,13 +670,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.26.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, + {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, ] [package.dependencies] @@ -555,10 +685,10 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [metadata] lock-version = "2.0" python-versions = ">=3.9.1,<3.10" -content-hash = "1bb724694792fbc2b3c05e3355e6c25305d9f4034eb7b1b4b1791ee95427f8d2" +content-hash = "9a36c702dd5e991e030c3ecdd8367ffe88aa8515b4ad5cb498df98ba7afc41a7" diff --git a/pyproject.toml b/pyproject.toml index 0a7d0d76c9..db5912567f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,8 @@ readme = "README.md" [tool.poetry.dependencies] python = ">=3.9.1,<3.10" +pydantic = "^2.9.2" +pre-commit = "^4.0.0" [tool.poetry.dev-dependencies] @@ -21,7 +23,7 @@ pytest-print = "^1.0" ayon-python-api = "^1.0" # linting dependencies ruff = "^0.3.3" -pre-commit = "^3.6.2" +pre-commit = "^4" codespell = "^2.2.6" semver = "^3.0.2" @@ -63,13 +65,15 @@ exclude = [ line-length = 79 indent-width = 4 + # Assume Python 3.9 target-version = "py39" [tool.ruff.lint] +pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. -select = ["E4", "E7", "E9", "F", "W"] -ignore = [] +select = ["ALL"] +ignore = ["PTH", "ANN101", "ANN102", "ANN204", "COM812", "S603", "ERA001", "TRY003", "UP007", "ARG002"] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] From 88a4aa15ee3981647a065e2958d3a47dec6230de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 9 Oct 2024 17:36:20 +0200 Subject: [PATCH 010/626] :recycle: tweak ruff linting --- pyproject.toml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index db5912567f..71df7d7d8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ readme = "README.md" [tool.poetry.dependencies] python = ">=3.9.1,<3.10" pydantic = "^2.9.2" +typing-extensions=">=3.9.1,<3.10.0" pre-commit = "^4.0.0" @@ -73,7 +74,20 @@ target-version = "py39" pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["ALL"] -ignore = ["PTH", "ANN101", "ANN102", "ANN204", "COM812", "S603", "ERA001", "TRY003", "UP007", "ARG002"] +ignore = [ + "PTH", + "ANN101", + "ANN102", + "ANN204", + "COM812", + "S603", + "ERA001", + "TRY003", + "UP006", # support for older python version (type vs. Type) + "UP007", # ..^ + "UP035", # .. + "ARG002" +] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] @@ -89,6 +103,7 @@ exclude = [ [tool.ruff.lint.per-file-ignores] "client/ayon_core/lib/__init__.py" = ["E402"] +"tests/*.py" = ["S101"] [tool.ruff.format] # Like Black, use double quotes for strings. From 092325e64e09dd4cd60c97654ecf14224bca2e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 9 Oct 2024 17:40:22 +0200 Subject: [PATCH 011/626] :art: implement `TraitsData` --- client/ayon_core/pipeline/traits/__init__.py | 11 +- client/ayon_core/pipeline/traits/content.py | 89 ++++++++ .../pipeline/traits/three_dimensional.py | 8 +- client/ayon_core/pipeline/traits/trait.py | 210 ++++++++++++++++-- .../pipeline/traits/two_dimensional.py | 50 ++--- 5 files changed, 307 insertions(+), 61 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/content.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index e85e88269b..1dbac8764d 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -1,7 +1,8 @@ """Trait classes for the pipeline.""" -from .trait import TraitBase +from .content import Compressed, FileLocation, RootlessLocation +from .three_dimensional import Spatial +from .trait import TraitBase, TraitsData from .two_dimensional import ( - Compressed, Deep, Image, Overscan, @@ -12,6 +13,10 @@ from .two_dimensional import ( __all__ = [ # base "TraitBase", + "TraitsData", + # content + "FileLocation", + "RootlessLocation", # two-dimensional "Image", "PixelBased", @@ -19,4 +24,6 @@ __all__ = [ "Deep", "Compressed", "Overscan", + # three-dimensional + "Spatial", ] diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py new file mode 100644 index 0000000000..1db36856d9 --- /dev/null +++ b/client/ayon_core/pipeline/traits/content.py @@ -0,0 +1,89 @@ +"""Content traits for the pipeline.""" +from __future__ import annotations + +from typing import TYPE_CHECKING, ClassVar, Optional + +from pydantic import Field + +from .trait import TraitBase + +if TYPE_CHECKING: + from pathlib import Path + + +class MimeType(TraitBase): + """MimeType trait model. + + This model represents a mime type trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + mime_type (str): Mime type. + + """ + + name: ClassVar[str] = "MimeType" + description: ClassVar[str] = "MimeType Trait Model" + id: ClassVar[str] = "ayon.content.MimeType.v1" + mime_type: str = Field(..., title="Mime Type") + +class FileLocation(TraitBase): + """FileLocation trait model. + + This model represents a file location trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + file_path (str): File path. + file_size (int): File size in bytes. + file_hash (str): File hash. + + """ + + name: ClassVar[str] = "FileLocation" + description: ClassVar[str] = "FileLocation Trait Model" + id: ClassVar[str] = "ayon.content.FileLocation.v1" + file_path: Path = Field(..., title="File Path") + file_size: int = Field(..., title="File Size") + file_hash: Optional[str] = Field(..., title="File Hash") + +class RootlessLocation(TraitBase): + """RootlessLocation trait model. + + This model represents a rootless location trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + rootless_path (str): Rootless path. + + """ + + name: ClassVar[str] = "RootlessLocation" + description: ClassVar[str] = "RootlessLocation Trait Model" + id: ClassVar[str] = "ayon.content.RootlessLocation.v1" + rootless_path: str = Field(..., title="File Path") + + +class Compressed(TraitBase): + """Compressed trait model. + + This model represents a compressed trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + compression_type (str): Compression type. + + """ + + name: ClassVar[str] = "Compressed" + description: ClassVar[str] = "Compressed Trait" + id: ClassVar[str] = "ayon.content.Compressed.v1" + compression_type: str = Field(..., title="Compression Type") diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py index c27b7ee56b..0638700ab7 100644 --- a/client/ayon_core/pipeline/traits/three_dimensional.py +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -1,4 +1,6 @@ """Two-dimensional image traits.""" +from typing import ClassVar + from pydantic import Field from .trait import TraitBase @@ -13,9 +15,9 @@ class Spatial(TraitBase): meters_per_unit (float): Meters per unit. """ - id: str = "ayon.content.Spatial.v1" - name: str = "Spatial" - description = "Spatial trait model." + id: ClassVar[str] = "ayon.3d.Spatial.v1" + name: ClassVar[str] = "Spatial" + description: ClassVar[str] = "Spatial trait model." up_axis: str = Field(..., title="Up axis") handedness: str = Field(..., title="Handedness") meters_per_unit: float = Field(..., title="Meters per unit") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 0ac2d63cdd..c6b7258535 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -1,35 +1,197 @@ """Defines the base trait model.""" -from pydantic import BaseModel, Field +from __future__ import annotations + +import inspect +import sys +from abc import ABC, abstractmethod +from functools import lru_cache +from typing import ClassVar, Optional, Type, Union + +import pydantic.alias_generators +from pydantic import AliasGenerator, BaseModel, ConfigDict -def camelize(src: str) -> str: - """Convert snake_case to camelCase.""" - components = src.split("_") - return components[0] + "".join(x.title() for x in components[1:]) - - -class TraitBase(BaseModel): +class TraitBase(ABC, BaseModel): """Base trait model. This model must be used as a base for all trait models. - Attributes: - name (str): Trait name. - description (str): Trait description. - id (str): id should be namespaced trait name with version - as ``ayon.content.LocatableBundle.v1`` - """ - class Config: - """API model config.""" + model_config = ConfigDict( + alias_generator=AliasGenerator( + serialization_alias=pydantic.alias_generators.to_camel, + ) + ) - orm_mode = True - allow_population_by_field_name = True - alias_generator = camelize + @property + @abstractmethod + def id(self) -> str: + """Abstract attribute for ID.""" + ... - name: str = Field(..., title="Trait name") - description: str = Field(..., title="Trait description") - # id should be: ayon.content.LocatableBundle.v1 - id: str = Field(..., title="Trait ID", - description="Unique identifier for the trait.") + @property + @abstractmethod + def name(self) -> str: + """Abstract attribute for name.""" + ... + + @property + @abstractmethod + def description(self) -> str: + """Abstract attribute for description.""" + ... + + + +class TraitsData: + """Traits data container. + + This model represents the data of a trait. + + """ + _data: dict + _module_blacklist: ClassVar[list[str]] = [ + "_", "builtins", "pydantic"] + + @lru_cache(maxsize=64) # noqa: B019 + def _get_trait_class(self, trait_id: str) -> Union[Type[TraitBase], None]: + """Get the trait class with corresponding to given ID. + + This method will search for the trait class in all the modules except + the blacklisted modules. There is some issue in Pydantic where + ``issubclass`` is not working properly so we are excluding explicitly + modules with offending classes. This list can be updated as needed to + speed up the search. + + Args: + trait_id (str): Trait ID. + + Returns: + Type[TraitBase]: Trait class. + + """ + modules = sys.modules.copy() + filtered_modules = modules.copy() + for module_name in modules: + for bl_module in self._module_blacklist: + if module_name.startswith(bl_module): + filtered_modules.pop(module_name) + + for module in filtered_modules.values(): + if not module: + continue + for _, klass in inspect.getmembers(module, inspect.isclass): + if inspect.isclass(klass) and \ + issubclass(klass, TraitBase) and \ + klass.id == trait_id: + return klass + return None + + + def add(self, trait: TraitBase, *, exists_ok: bool=False) -> None: + """Add a trait to the data. + + Args: + trait (TraitBase): Trait to add. + exists_ok (bool, optional): If True, do not raise an error if the + trait already exists. Defaults to False. + + Raises: + ValueError: If the trait ID is not provided or the trait already + exists. + + """ + if not trait.id: + error_msg = f"Invalid trait {trait} - ID is required." + raise ValueError(error_msg) + if trait.id in self._data and not exists_ok: + error_msg = f"Trait with ID {trait.id} already exists." + raise ValueError(error_msg) + self._data[trait.id] = trait + + def remove(self, + trait_id: Optional[str], + trait: Optional[Type[TraitBase]]) -> None: + """Remove a trait from the data. + + Args: + trait_id (str, optional): Trait ID. + trait (TraitBase, optional): Trait class. + + """ + if trait_id: + self._data.pop(trait_id) + elif trait: + self._data.pop(trait.id) + + def has_trait(self, + trait_id: Optional[str]=None, + trait: Optional[Type[TraitBase]]=None) -> bool: + """Check if the trait exists. + + Args: + trait_id (str, optional): Trait ID. + trait (TraitBase, optional): Trait class. + + Returns: + bool: True if the trait exists, False otherwise. + + """ + if not trait_id: + trait_id = trait.id + return hasattr(self, trait_id) + + def get(self, + trait_id: Optional[str]=None, + trait: Optional[Type[TraitBase]]=None) -> Union[TraitBase, None]: + """Get a trait from the data. + + Args: + trait_id (str, optional): Trait ID. + trait (TraitBase, optional): Trait class. + + Returns: + TraitBase: Trait instance. + + """ + trait_class = None + if trait_id: + trait_class = self._get_trait_class(trait_id) + if not trait_class: + error_msg = f"Trait model with ID {trait_id} not found." + raise ValueError(error_msg) + + if trait: + trait_class = trait + trait_id = trait.id + + if not trait_class and not trait_id: + error_msg = "Trait ID or Trait class is required" + raise ValueError(error_msg) + + return self._data[trait_id] if self._data.get(trait_id) else None + + def as_dict(self) -> dict: + """Return the data as a dictionary. + + Returns: + dict: Data dictionary. + + """ + result = { + trait_id: dict(sorted(trait.dict())) + for trait_id, trait in self._data.items() + } + return dict(sorted(result)) + + def __len__(self): + """Return the length of the data.""" + return len(self._data) + + def __init__(self, traits: Optional[list[TraitBase]]): + """Initialize the data.""" + self._data = {} + if traits: + for trait in traits: + self.add(trait) diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index cd180ffc6b..0b6fea315b 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -1,4 +1,6 @@ """Two-dimensional image traits.""" +from typing import ClassVar + from pydantic import Field from .trait import TraitBase @@ -16,9 +18,9 @@ class Image(TraitBase): """ - name: str = "Image" - description = "Image Trait" - id: str = "ayon.content.Image.v1" + name: ClassVar[str] = "Image" + description: ClassVar[str] = "Image Trait" + id: ClassVar[str] = "ayon.2d.Image.v1" class PixelBased(TraitBase): @@ -36,9 +38,9 @@ class PixelBased(TraitBase): """ - name: str = "PixelBased" - description = "PixelBased Trait Model" - id: str = "ayon.content.PixelBased.v1" + name: ClassVar[str] = "PixelBased" + description: ClassVar[str] = "PixelBased Trait Model" + id: ClassVar[str] = "ayon.2d.PixelBased.v1" display_window_width: int = Field(..., title="Display Window Width") display_window_height: int = Field(..., title="Display Window Height") pixel_aspect_ratio: float = Field(..., title="Pixel Aspect Ratio") @@ -49,7 +51,7 @@ class Planar(TraitBase): This model represents an Image with planar configuration. - Todo (antirotor): Is this really a planar configuration? As with + TODO (antirotor): Is this really a planar configuration? As with bitplanes and everything? If it serves as differentiator for Deep images, should it be named differently? Like Raster? @@ -61,9 +63,9 @@ class Planar(TraitBase): """ - name: str = "Planar" - description = "Planar Trait Model" - id: str = "ayon.content.Planar.v1" + name: ClassVar[str] = "Planar" + description: ClassVar[str] = "Planar Trait Model" + id: ClassVar[str] = "ayon.2d.Planar.v1" planar_configuration: str = Field(..., title="Planar-based Image") @@ -80,29 +82,13 @@ class Deep(TraitBase): """ - name: str = "Deep" - description = "Deep Trait Model" - id: str = "ayon.content.Deep.v1" + name: ClassVar[str] = "Deep" + description: ClassVar[str] = "Deep Trait Model" + id: ClassVar[str] = "ayon.2d.Deep.v1" deep_data_type: str = Field(..., title="Deep Data Type") -class Compressed(TraitBase): - """Compressed trait model. - This model represents a compressed image trait. - - Attributes: - name (str): Trait name. - description (str): Trait description. - id (str): id should be namespaced trait name with version - compression_type (str): Compression type. - - """ - - name: str = "Compressed" - description = "Compressed Trait" - id: str = "ayon.content.Compressed.v1" - compression_type: str = Field(..., title="Compression Type") class Overscan(TraitBase): @@ -121,9 +107,9 @@ class Overscan(TraitBase): """ - name: str = "Overscan" - description = "Overscan Trait" - id: str = "ayon.content.Overscan.v1" + name: ClassVar[str] = "Overscan" + description: ClassVar[str] = "Overscan Trait" + id: ClassVar[str] = "ayon.2d.Overscan.v1" left: int = Field(..., title="Left Overscan") right: int = Field(..., title="Right Overscan") top: int = Field(..., title="Top Overscan") From 3981a2e4da8f24e4b037d6fecf8547e6702863e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 10 Oct 2024 11:28:00 +0200 Subject: [PATCH 012/626] :alembic: add tests --- client/ayon_core/pipeline/traits/content.py | 7 +- client/ayon_core/pipeline/traits/trait.py | 13 +-- pyproject.toml | 3 +- .../ayon_core/pipeline/traits/__init__.py | 1 + .../ayon_core/pipeline/traits/test_traits.py | 83 +++++++++++++++++++ 5 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 tests/client/ayon_core/pipeline/traits/__init__.py create mode 100644 tests/client/ayon_core/pipeline/traits/test_traits.py diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 1db36856d9..3eec848f69 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -1,15 +1,14 @@ """Content traits for the pipeline.""" from __future__ import annotations -from typing import TYPE_CHECKING, ClassVar, Optional +# TCH003 is there because Path in TYPECHECKING will fail in tests +from pathlib import Path # noqa: TCH003 +from typing import ClassVar, Optional from pydantic import Field from .trait import TraitBase -if TYPE_CHECKING: - from pathlib import Path - class MimeType(TraitBase): """MimeType trait model. diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index c6b7258535..8db3f091ae 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -4,6 +4,7 @@ from __future__ import annotations import inspect import sys from abc import ABC, abstractmethod +from collections import OrderedDict from functools import lru_cache from typing import ClassVar, Optional, Type, Union @@ -179,11 +180,13 @@ class TraitsData: dict: Data dictionary. """ - result = { - trait_id: dict(sorted(trait.dict())) - for trait_id, trait in self._data.items() - } - return dict(sorted(result)) + result = OrderedDict() + for trait_id, trait in self._data.items(): + if not trait or not trait_id: + continue + result[trait_id] = OrderedDict(trait.dict()) + + return result def __len__(self): """Return the length of the data.""" diff --git a/pyproject.toml b/pyproject.toml index 71df7d7d8b..8c9ff7cf5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,7 +86,8 @@ ignore = [ "UP006", # support for older python version (type vs. Type) "UP007", # ..^ "UP035", # .. - "ARG002" + "ARG002", + "INP001", # add `__init__.py` to namespaced package ] # Allow fix for all enabled rules (when `--fix`) is provided. diff --git a/tests/client/ayon_core/pipeline/traits/__init__.py b/tests/client/ayon_core/pipeline/traits/__init__.py new file mode 100644 index 0000000000..ead0593ced --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/__init__.py @@ -0,0 +1 @@ +"""Tests for the representation traits.""" diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py new file mode 100644 index 0000000000..be8800f929 --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -0,0 +1,83 @@ +"""Tests for the representation traits.""" +from __future__ import annotations + +from pathlib import Path + +import pytest +from ayon_core.pipeline.traits import ( + FileLocation, + Image, + PixelBased, + Planar, + TraitBase, + TraitsData, +) + +TRAITS_DATA = { + FileLocation.id: { + "file_path": Path("/path/to/file"), + "file_size": 1024, + "file_hash": None, + }, + Image.id: {}, + PixelBased.id: { + "display_window_width": 1920, + "display_window_height": 1080, + "pixel_aspect_ratio": 1.0, + }, + Planar.id: { + "planar_configuration": "RGB", + }, + } + + +@pytest.fixture() +def traits_data() -> TraitsData: + """Return a traits data instance.""" + return TraitsData(traits=[ + FileLocation(**TRAITS_DATA[FileLocation.id]), + Image(), + PixelBased(**TRAITS_DATA[PixelBased.id]), + Planar(**TRAITS_DATA[Planar.id]), + ]) + +def test_traits_data(traits_data: TraitsData) -> None: + """Test setting and getting traits.""" + assert len(traits_data) == len(TRAITS_DATA) + assert traits_data.get(trait_id=FileLocation.id) + assert traits_data.get(trait_id=Image.id) + assert traits_data.get(trait_id=PixelBased.id) + assert traits_data.get(trait_id=Planar.id) + + assert traits_data.get(trait=FileLocation) + assert traits_data.get(trait=Image) + assert traits_data.get(trait=PixelBased) + assert traits_data.get(trait=Planar) + + assert issubclass(type(traits_data.get(trait=FileLocation)), TraitBase) + + assert traits_data.get( + trait=FileLocation) == traits_data.get(trait_id=FileLocation.id) + assert traits_data.get( + trait=Image) == traits_data.get(trait_id=Image.id) + assert traits_data.get( + trait=PixelBased) == traits_data.get(trait_id=PixelBased.id) + assert traits_data.get( + trait=Planar) == traits_data.get(trait_id=Planar.id) + + assert traits_data.get(trait_id="ayon.2d.Image.v1") + assert traits_data.get(trait_id="ayon.2d.PixelBased.v1") + assert traits_data.get(trait_id="ayon.2d.Planar.v1") + + assert traits_data.get( + trait_id="ayon.2d.PixelBased.v1").display_window_width == \ + TRAITS_DATA[PixelBased.id]["display_window_width"] + assert traits_data.get( + trait=PixelBased).display_window_height == \ + TRAITS_DATA[PixelBased.id]["display_window_height"] + + +def test_traits_data_to_dict(traits_data: TraitsData) -> None: + """Test converting traits data to dictionary.""" + result = traits_data.as_dict() + assert result == TRAITS_DATA From 6d0730789884246a00366349f945d9ab956fb334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 10 Oct 2024 14:28:53 +0200 Subject: [PATCH 013/626] :recycle: refactor `TraitsData` to `Representation` added few helper methods to query/set/remove bunch of traits at once --- client/ayon_core/pipeline/traits/__init__.py | 4 +- client/ayon_core/pipeline/traits/trait.py | 118 +++++++++++++++--- .../ayon_core/pipeline/traits/test_traits.py | 94 ++++++++------ 3 files changed, 161 insertions(+), 55 deletions(-) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 1dbac8764d..429b307e3d 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -1,7 +1,7 @@ """Trait classes for the pipeline.""" from .content import Compressed, FileLocation, RootlessLocation from .three_dimensional import Spatial -from .trait import TraitBase, TraitsData +from .trait import Representation, TraitBase from .two_dimensional import ( Deep, Image, @@ -13,7 +13,7 @@ from .two_dimensional import ( __all__ = [ # base "TraitBase", - "TraitsData", + "Representation", # content "FileLocation", "RootlessLocation", diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 8db3f091ae..fc71b3d5d0 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -1,4 +1,4 @@ -"""Defines the base trait model.""" +"""Defines the base trait model and representation.""" from __future__ import annotations import inspect @@ -16,6 +16,9 @@ class TraitBase(ABC, BaseModel): """Base trait model. This model must be used as a base for all trait models. + It is using Pydantic BaseModel for serialization and validation. + ``id``, ``name``, and ``description`` are abstract attributes that must be + implemented in the derived classes. """ @@ -45,10 +48,15 @@ class TraitBase(ABC, BaseModel): -class TraitsData: - """Traits data container. +class Representation: + """Representation of products. - This model represents the data of a trait. + Representation defines collection of individual properties that describe + the specific "form" of the product. Each property is represented by a + trait therefore the Representation is a collection of traits. + + It holds methods to add, remove, get, and check for the existence of a + trait in the representation. It also provides a method to get all the """ _data: dict @@ -90,8 +98,8 @@ class TraitsData: return None - def add(self, trait: TraitBase, *, exists_ok: bool=False) -> None: - """Add a trait to the data. + def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: + """Add a trait to the Representation. Args: trait (TraitBase): Trait to add. @@ -111,9 +119,22 @@ class TraitsData: raise ValueError(error_msg) self._data[trait.id] = trait - def remove(self, - trait_id: Optional[str], - trait: Optional[Type[TraitBase]]) -> None: + def add_traits( + self, traits: list[TraitBase], *, exists_ok: bool=False) -> None: + """Add a list of traits to the Representation. + + Args: + traits (list[TraitBase]): List of traits to add. + exists_ok (bool, optional): If True, do not raise an error if the + trait already exists. Defaults to False. + + """ + for trait in traits: + self.add_trait(trait, exists_ok=exists_ok) + + def remove_trait(self, + trait_id: Optional[str]=None, + trait: Optional[Type[TraitBase]]=None) -> None: """Remove a trait from the data. Args: @@ -126,6 +147,23 @@ class TraitsData: elif trait: self._data.pop(trait.id) + def remove_traits(self, + trait_ids: Optional[list[str]]=None, + traits: Optional[list[Type[TraitBase]]]=None) -> None: + """Remove a list of traits from the Representation. + + Args: + trait_ids (list[str], optional): List of trait IDs. + traits (list[TraitBase], optional): List of trait classes. + + """ + if trait_ids: + for trait_id in trait_ids: + self.remove_trait(trait_id=trait_id) + elif traits: + for trait in traits: + self.remove_trait(trait=trait) + def has_trait(self, trait_id: Optional[str]=None, trait: Optional[Type[TraitBase]]=None) -> bool: @@ -143,10 +181,34 @@ class TraitsData: trait_id = trait.id return hasattr(self, trait_id) - def get(self, - trait_id: Optional[str]=None, - trait: Optional[Type[TraitBase]]=None) -> Union[TraitBase, None]: - """Get a trait from the data. + def has_traits(self, + trait_ids: Optional[list[str]]=None, + traits: Optional[list[Type[TraitBase]]]=None) -> bool: + """Check if the traits exist. + + Args: + trait_ids (list[str], optional): List of trait IDs. + traits (list[TraitBase], optional): List of trait classes. + + Returns: + bool: True if all traits exist, False otherwise. + + """ + if trait_ids: + for trait_id in trait_ids: + if not self.has_trait(trait_id=trait_id): + return False + elif traits: + for trait in traits: + if not self.has_trait(trait=trait): + return False + return True + + def get_trait(self, + trait_id: Optional[str]=None, + trait: Optional[Type[TraitBase]]=None + ) -> Union[TraitBase, None]: + """Get a trait from the representation. Args: trait_id (str, optional): Trait ID. @@ -173,11 +235,33 @@ class TraitsData: return self._data[trait_id] if self._data.get(trait_id) else None - def as_dict(self) -> dict: - """Return the data as a dictionary. + def get_traits(self, + trait_ids: Optional[list[str]]=None, + traits: Optional[list[Type[TraitBase]]]=None) -> dict: + """Get a list of traits from the representation. + + Args: + trait_ids (list[str], optional): List of trait IDs. + traits (list[TraitBase], optional): List of trait classes. + + Returns: + dict: Dictionary of traits. + + """ + result = {} + if trait_ids: + for trait_id in trait_ids: + result[trait_id] = self.get_trait(trait_id=trait_id) + elif traits: + for trait in traits: + result[trait.id] = self.get_trait(trait=trait) + return result + + def traits_as_dict(self) -> dict: + """Return the traits from Representation data as a dictionary. Returns: - dict: Data dictionary. + dict: Traits data dictionary. """ result = OrderedDict() @@ -197,4 +281,4 @@ class TraitsData: self._data = {} if traits: for trait in traits: - self.add(trait) + self.add_trait(trait) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index be8800f929..0bf08219ed 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -9,11 +9,11 @@ from ayon_core.pipeline.traits import ( Image, PixelBased, Planar, + Representation, TraitBase, - TraitsData, ) -TRAITS_DATA = { +REPRESENTATION_DATA = { FileLocation.id: { "file_path": Path("/path/to/file"), "file_size": 1024, @@ -32,52 +32,74 @@ TRAITS_DATA = { @pytest.fixture() -def traits_data() -> TraitsData: +def representation() -> Representation: """Return a traits data instance.""" - return TraitsData(traits=[ - FileLocation(**TRAITS_DATA[FileLocation.id]), + return Representation(traits=[ + FileLocation(**REPRESENTATION_DATA[FileLocation.id]), Image(), - PixelBased(**TRAITS_DATA[PixelBased.id]), - Planar(**TRAITS_DATA[Planar.id]), + PixelBased(**REPRESENTATION_DATA[PixelBased.id]), + Planar(**REPRESENTATION_DATA[Planar.id]), ]) -def test_traits_data(traits_data: TraitsData) -> None: +def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" - assert len(traits_data) == len(TRAITS_DATA) - assert traits_data.get(trait_id=FileLocation.id) - assert traits_data.get(trait_id=Image.id) - assert traits_data.get(trait_id=PixelBased.id) - assert traits_data.get(trait_id=Planar.id) + assert len(representation) == len(REPRESENTATION_DATA) + assert representation.get_trait(trait_id=FileLocation.id) + assert representation.get_trait(trait_id=Image.id) + assert representation.get_trait(trait_id=PixelBased.id) + assert representation.get_trait(trait_id=Planar.id) - assert traits_data.get(trait=FileLocation) - assert traits_data.get(trait=Image) - assert traits_data.get(trait=PixelBased) - assert traits_data.get(trait=Planar) + assert representation.get_trait(trait=FileLocation) + assert representation.get_trait(trait=Image) + assert representation.get_trait(trait=PixelBased) + assert representation.get_trait(trait=Planar) - assert issubclass(type(traits_data.get(trait=FileLocation)), TraitBase) + assert issubclass( + type(representation.get_trait(trait=FileLocation)), TraitBase) - assert traits_data.get( - trait=FileLocation) == traits_data.get(trait_id=FileLocation.id) - assert traits_data.get( - trait=Image) == traits_data.get(trait_id=Image.id) - assert traits_data.get( - trait=PixelBased) == traits_data.get(trait_id=PixelBased.id) - assert traits_data.get( - trait=Planar) == traits_data.get(trait_id=Planar.id) + assert representation.get_trait( + trait=FileLocation) == representation.get_trait( + trait_id=FileLocation.id) + assert representation.get_trait( + trait=Image) == representation.get_trait( + trait_id=Image.id) + assert representation.get_trait( + trait=PixelBased) == representation.get_trait( + trait_id=PixelBased.id) + assert representation.get_trait( + trait=Planar) == representation.get_trait( + trait_id=Planar.id) - assert traits_data.get(trait_id="ayon.2d.Image.v1") - assert traits_data.get(trait_id="ayon.2d.PixelBased.v1") - assert traits_data.get(trait_id="ayon.2d.Planar.v1") + assert representation.get_trait(trait_id="ayon.2d.Image.v1") + assert representation.get_trait(trait_id="ayon.2d.PixelBased.v1") + assert representation.get_trait(trait_id="ayon.2d.Planar.v1") - assert traits_data.get( + assert representation.get_trait( trait_id="ayon.2d.PixelBased.v1").display_window_width == \ - TRAITS_DATA[PixelBased.id]["display_window_width"] - assert traits_data.get( + REPRESENTATION_DATA[PixelBased.id]["display_window_width"] + assert representation.get_trait( trait=PixelBased).display_window_height == \ - TRAITS_DATA[PixelBased.id]["display_window_height"] + REPRESENTATION_DATA[PixelBased.id]["display_window_height"] + +def test_getting_traits_data(representation: Representation) -> None: + """Test getting a batch of traits.""" + result = representation.get_traits( + trait_ids=[FileLocation.id, Image.id, PixelBased.id, Planar.id]) + assert result == { + "ayon.2d.Image.v1": Image(), + "ayon.2d.PixelBased.v1": PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + "ayon.2d.Planar.v1": Planar(planar_configuration="RGB"), + "ayon.content.FileLocation.v1": FileLocation( + file_path=Path("/path/to/file"), + file_size=1024, + file_hash=None) + } -def test_traits_data_to_dict(traits_data: TraitsData) -> None: +def test_traits_data_to_dict(representation: Representation) -> None: """Test converting traits data to dictionary.""" - result = traits_data.as_dict() - assert result == TRAITS_DATA + result = representation.traits_as_dict() + assert result == REPRESENTATION_DATA From 43edcb82b7dbca5f09f0a17186c605525a57c429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 10 Oct 2024 14:29:16 +0200 Subject: [PATCH 014/626] :alembic: add dependencies necessary to run tests --- poetry.lock | 257 ++++++++++++++++++++++++++++++------------------- pyproject.toml | 4 +- 2 files changed, 162 insertions(+), 99 deletions(-) diff --git a/poetry.lock b/poetry.lock index ba3956df39..3a188dcb4b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,6 +22,25 @@ files = [ {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, ] +[[package]] +name = "attrs" +version = "24.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + [[package]] name = "ayon-python-api" version = "1.0.9" @@ -62,103 +81,134 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] +[[package]] +name = "clique" +version = "2.0.0" +description = "Manage collections with common numerical component" +optional = false +python-versions = ">=3.0, <4.0" +files = [ + {file = "clique-2.0.0-py2.py3-none-any.whl", hash = "sha256:45e2a4c6078382e0b217e5e369494279cf03846d95ee601f93290bed5214c22e"}, + {file = "clique-2.0.0.tar.gz", hash = "sha256:6e1115dbf21b1726f4b3db9e9567a662d6bdf72487c4a0a1f8cb7f10cf4f4754"}, +] + +[package.extras] +dev = ["lowdown (>=0.2.0,<1)", "pytest (>=2.3.5,<5)", "pytest-cov (>=2,<3)", "pytest-runner (>=2.7,<3)", "sphinx (>=2,<4)", "sphinx-rtd-theme (>=0.1.6,<1)"] +doc = ["lowdown (>=0.2.0,<1)", "sphinx (>=2,<4)", "sphinx-rtd-theme (>=0.1.6,<1)"] +test = ["pytest (>=2.3.5,<5)", "pytest-cov (>=2,<3)", "pytest-runner (>=2.7,<3)"] + [[package]] name = "codespell" version = "2.3.0" @@ -189,13 +239,13 @@ files = [ [[package]] name = "distlib" -version = "0.3.8" +version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] @@ -322,13 +372,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "4.0.0" +version = "4.0.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-4.0.0-py2.py3-none-any.whl", hash = "sha256:0ca2341cf94ac1865350970951e54b1a50521e57b7b500403307aed4315a1234"}, - {file = "pre_commit-4.0.0.tar.gz", hash = "sha256:5d9807162cc5537940f94f266cbe2d716a75cfad0d78a317a92cac16287cfed6"}, + {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, + {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, ] [package.dependencies] @@ -338,6 +388,17 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "pyblish-base" +version = "1.8.12" +description = "Plug-in driven automation framework for content" +optional = false +python-versions = "*" +files = [ + {file = "pyblish-base-1.8.12.tar.gz", hash = "sha256:ebc184eb038864380555227a8b58055dd24ece7e6ef7f16d33416c718512871b"}, + {file = "pyblish_base-1.8.12-py2.py3-none-any.whl", hash = "sha256:2cbe956bfbd4175a2d7d22b344cd345800f4d4437153434ab658fc12646a11e8"}, +] + [[package]] name = "pydantic" version = "2.9.2" @@ -691,4 +752,4 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [metadata] lock-version = "2.0" python-versions = ">=3.9.1,<3.10" -content-hash = "9a36c702dd5e991e030c3ecdd8367ffe88aa8515b4ad5cb498df98ba7afc41a7" +content-hash = "cf5603d09b7f2409e56e0ceb13386813204a92cfbabbd23bcd8a2fad0db3aed4" diff --git a/pyproject.toml b/pyproject.toml index 8c9ff7cf5e..0abec2d5b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,8 +13,10 @@ readme = "README.md" [tool.poetry.dependencies] python = ">=3.9.1,<3.10" pydantic = "^2.9.2" -typing-extensions=">=3.9.1,<3.10.0" pre-commit = "^4.0.0" +clique = "^2" +pyblish-base = "^1.8" +attrs = "^24.2.0" [tool.poetry.dev-dependencies] From e0a6e1767c6cd827d425a97ad612a7ae7b968af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 14 Oct 2024 22:36:16 +0200 Subject: [PATCH 015/626] :recycle: add traits and refactor api --- client/ayon_core/pipeline/traits/__init__.py | 29 ++- client/ayon_core/pipeline/traits/content.py | 29 ++- client/ayon_core/pipeline/traits/time.py | 81 +++++++ client/ayon_core/pipeline/traits/trait.py | 215 ++++++++++++------ .../ayon_core/pipeline/traits/test_traits.py | 164 ++++++++++--- 5 files changed, 410 insertions(+), 108 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/time.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 429b307e3d..2d17cccf7e 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -1,6 +1,13 @@ """Trait classes for the pipeline.""" -from .content import Compressed, FileLocation, RootlessLocation +from .content import ( + Bundle, + Compressed, + FileLocation, + MimeType, + RootlessLocation, +) from .three_dimensional import Spatial +from .time import Clip, GapPolicy, Sequence, SMPTETimecode from .trait import Representation, TraitBase from .two_dimensional import ( Deep, @@ -12,18 +19,30 @@ from .two_dimensional import ( __all__ = [ # base - "TraitBase", "Representation", + "TraitBase", + # content + "Bundle", + "Compressed", "FileLocation", + "MimeType", "RootlessLocation", + # two-dimensional + "Compressed", + "Deep", "Image", + "Overscan", "PixelBased", "Planar", - "Deep", - "Compressed", - "Overscan", + # three-dimensional "Spatial", + + # time + "Clip", + "GapPolicy", + "Sequence", + "SMPTETimecode", ] diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 3eec848f69..1cb7366928 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -7,7 +7,7 @@ from typing import ClassVar, Optional from pydantic import Field -from .trait import TraitBase +from .trait import Representation, TraitBase class MimeType(TraitBase): @@ -86,3 +86,30 @@ class Compressed(TraitBase): description: ClassVar[str] = "Compressed Trait" id: ClassVar[str] = "ayon.content.Compressed.v1" compression_type: str = Field(..., title="Compression Type") + + +class Bundle(TraitBase): + """Bundle trait model. + + This model list of independent Representation traits + that are bundled together. This is useful for representing + a collection of representations that are part of a single + entity. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + items (list[list[TraitBase]]): List of representations. + + """ + + name: ClassVar[str] = "Bundle" + description: ClassVar[str] = "Bundle Trait" + id: ClassVar[str] = "ayon.content.Bundle.v1" + items: list[list[TraitBase]] = Field( + ..., title="Bundles of traits") + + def to_representation(self) -> Representation: + """Convert to a representation.""" + return Representation(traits=self.items) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py new file mode 100644 index 0000000000..de4ff53790 --- /dev/null +++ b/client/ayon_core/pipeline/traits/time.py @@ -0,0 +1,81 @@ +"""Temporal (time related) traits.""" +from enum import Enum, auto +from typing import ClassVar + +from pydantic import Field + +from .trait import TraitBase + + +class GapPolicy(Enum): + """Gap policy enumeration. + + Attributes: + forbidden (int): Gaps are forbidden. + missing (int): Gaps are interpreted as missing frames. + hold (int): Gaps are interpreted as hold frames (last existing frames). + black (int): Gaps are interpreted as black frames. + """ + forbidden = auto() + missing = auto() + hold = auto() + black = auto() + +class Clip(TraitBase): + """Clip trait model. + + Model representing a clip trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + frame_start (int): Frame start. + frame_end (int): Frame end. + frame_start_handle (int): Frame start handle. + frame_end_handle (int): Frame end handle. + + """ + name: ClassVar[str] = "Clip" + description: ClassVar[str] = "Clip Trait" + id: ClassVar[str] = "ayon.time.Clip.v1" + frame_start: int = Field(..., title="Frame Start") + frame_end: int = Field(..., title="Frame End") + frame_start_handle: int = Field(..., title="Frame Start Handle") + frame_end_handle: int = Field(..., title="Frame End Handle") + +class Sequence(Clip): + """Sequence trait model. + + This model represents a sequence trait. Based on the Clip trait, + adding handling for steps, gaps policy and frame padding. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + step (int): Frame step. + gaps_policy (GapPolicy): Gaps policy - how to handle gaps in + sequence. + frame_padding (int): Frame padding. + frame_regex (str): Frame regex - regular expression to match + frame numbers. + + """ + name: ClassVar[str] = "Sequence" + description: ClassVar[str] = "Sequence Trait Model" + id: ClassVar[str] = "ayon.time.Sequence.v1" + step: int = Field(..., title="Step") + gaps_policy: GapPolicy = Field( + GapPolicy.forbidden, title="Gaps Policy") + frame_padding: int = Field(..., title="Frame Padding") + frame_regex: str = Field(..., title="Frame Regex") + + +# Do we need one for drop and non-drop frame? +class SMPTETimecode(TraitBase): + """Timecode trait model.""" + name: ClassVar[str] = "Timecode" + description: ClassVar[str] = "SMPTE Timecode Trait" + id: ClassVar[str] = "ayon.time.SMPTETimecode.v1" + timecode: str = Field(..., title="SMPTE Timecode HH:MM:SS:FF") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index fc71b3d5d0..6fa36aeb51 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -132,130 +132,197 @@ class Representation: for trait in traits: self.add_trait(trait, exists_ok=exists_ok) - def remove_trait(self, - trait_id: Optional[str]=None, - trait: Optional[Type[TraitBase]]=None) -> None: + def remove_trait(self, trait: Type[TraitBase]) -> None: """Remove a trait from the data. Args: - trait_id (str, optional): Trait ID. trait (TraitBase, optional): Trait class. - """ - if trait_id: - self._data.pop(trait_id) - elif trait: - self._data.pop(trait.id) + Raises: + ValueError: If the trait is not found. - def remove_traits(self, - trait_ids: Optional[list[str]]=None, - traits: Optional[list[Type[TraitBase]]]=None) -> None: + """ + try: + self._data.pop(trait.id) + except KeyError as e: + error_msg = f"Trait with ID {trait.id} not found." + raise ValueError(error_msg) from e + + def remove_trait_by_id(self, trait_id: str) -> None: + """Remove a trait from the data by its ID. + + Args: + trait_id (str): Trait ID. + + Raises: + ValueError: If the trait is not found. + + """ + try: + self._data.pop(trait_id) + except KeyError as e: + error_msg = f"Trait with ID {trait_id} not found." + raise ValueError(error_msg) from e + + def remove_traits(self, traits: list[Type[TraitBase]]) -> None: """Remove a list of traits from the Representation. + If no trait IDs or traits are provided, all traits will be removed. + + Args: + traits (list[TraitBase]): List of trait classes. + + """ + if not traits: + self._data = {} + return + + for trait in traits: + self.remove_trait(trait) + + def remove_traits_by_id(self, trait_ids: list[str]) -> None: + """Remove a list of traits from the Representation by their ID. + + If no trait IDs or traits are provided, all traits will be removed. + Args: trait_ids (list[str], optional): List of trait IDs. - traits (list[TraitBase], optional): List of trait classes. """ - if trait_ids: - for trait_id in trait_ids: - self.remove_trait(trait_id=trait_id) - elif traits: - for trait in traits: - self.remove_trait(trait=trait) + for trait_id in trait_ids: + self.remove_trait_by_id(trait_id) - def has_trait(self, - trait_id: Optional[str]=None, - trait: Optional[Type[TraitBase]]=None) -> bool: - """Check if the trait exists. + + def has_traits(self) -> bool: + """Check if the Representation has any traits. + + Returns: + bool: True if the Representation has any traits, False otherwise. + + """ + return bool(self._data) + + def contains_trait(self, trait: Type[TraitBase]) -> bool: + """Check if the trait exists in the Representation. Args: - trait_id (str, optional): Trait ID. - trait (TraitBase, optional): Trait class. + trait (TraitBase): Trait class. Returns: bool: True if the trait exists, False otherwise. """ - if not trait_id: - trait_id = trait.id - return hasattr(self, trait_id) + return bool(self._data.get(trait.id)) - def has_traits(self, - trait_ids: Optional[list[str]]=None, - traits: Optional[list[Type[TraitBase]]]=None) -> bool: + def contains_trait_by_id(self, trait_id: str) -> bool: + """Check if the trait exists using trait id. + + Args: + trait_id (str): Trait ID. + + Returns: + bool: True if the trait exists, False otherwise. + + """ + return bool(self._data.get(trait_id)) + + def contains_traits(self, traits: list[Type[TraitBase]]) -> bool: """Check if the traits exist. Args: - trait_ids (list[str], optional): List of trait IDs. traits (list[TraitBase], optional): List of trait classes. Returns: bool: True if all traits exist, False otherwise. """ - if trait_ids: - for trait_id in trait_ids: - if not self.has_trait(trait_id=trait_id): - return False - elif traits: - for trait in traits: - if not self.has_trait(trait=trait): - return False - return True + return all(self.contains_trait(trait=trait) for trait in traits) - def get_trait(self, - trait_id: Optional[str]=None, - trait: Optional[Type[TraitBase]]=None - ) -> Union[TraitBase, None]: + def contains_traits_by_id(self, trait_ids: list[str]) -> bool: + """Check if the traits exist by id. + + If no trait IDs or traits are provided, it will check if the + representation has any traits. + + Args: + trait_ids (list[str]): List of trait IDs. + + Returns: + bool: True if all traits exist, False otherwise. + + """ + return all( + self.contains_trait_by_id(trait_id) for trait_id in trait_ids + ) + + def get_trait(self, trait: Type[TraitBase]) -> Union[TraitBase, None]: """Get a trait from the representation. Args: - trait_id (str, optional): Trait ID. trait (TraitBase, optional): Trait class. Returns: TraitBase: Trait instance. """ - trait_class = None - if trait_id: - trait_class = self._get_trait_class(trait_id) - if not trait_class: - error_msg = f"Trait model with ID {trait_id} not found." - raise ValueError(error_msg) + return self._data[trait.id] if self._data.get(trait.id) else None - if trait: - trait_class = trait - trait_id = trait.id + def get_trait_by_id(self, trait_id: str) -> Union[TraitBase, None]: + """Get a trait from the representation by id. - if not trait_class and not trait_id: - error_msg = "Trait ID or Trait class is required" + Args: + trait_id (str): Trait ID. + + Returns: + TraitBase: Trait instance. + + """ + trait_class = self._get_trait_class(trait_id) + if not trait_class: + error_msg = f"Trait model with ID {trait_id} not found." raise ValueError(error_msg) return self._data[trait_id] if self._data.get(trait_id) else None def get_traits(self, - trait_ids: Optional[list[str]]=None, traits: Optional[list[Type[TraitBase]]]=None) -> dict: - """Get a list of traits from the representation. + """Get a list of traits from the representation. - Args: - trait_ids (list[str], optional): List of trait IDs. - traits (list[TraitBase], optional): List of trait classes. + If no trait IDs or traits are provided, all traits will be returned. - Returns: - dict: Dictionary of traits. + Args: + traits (list[TraitBase], optional): List of trait classes. - """ - result = {} - if trait_ids: - for trait_id in trait_ids: - result[trait_id] = self.get_trait(trait_id=trait_id) - elif traits: - for trait in traits: - result[trait.id] = self.get_trait(trait=trait) - return result + Returns: + dict: Dictionary of traits. + + """ + result = {} + if not traits: + for trait_id in self._data: + result[trait_id] = self.get_trait_by_id(trait_id=trait_id) + return result + + for trait in traits: + result[trait.id] = self.get_trait(trait=trait) + return result + + def get_traits_by_ids(self, trait_ids: list[str]) -> dict: + """Get a list of traits from the representation by their id. + + If no trait IDs or traits are provided, all traits will be returned. + + Args: + trait_ids (list[str]): List of trait IDs. + + Returns: + dict: Dictionary of traits. + + """ + return { + trait_id: self.get_trait_by_id(trait_id) + for trait_id in trait_ids + } def traits_as_dict(self) -> dict: """Return the traits from Representation data as a dictionary. @@ -276,7 +343,7 @@ class Representation: """Return the length of the data.""" return len(self._data) - def __init__(self, traits: Optional[list[TraitBase]]): + def __init__(self, traits: Optional[list[TraitBase]]=None): """Initialize the data.""" self._data = {} if traits: diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 0bf08219ed..e6ca0a1067 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -5,8 +5,10 @@ from pathlib import Path import pytest from ayon_core.pipeline.traits import ( + Bundle, FileLocation, Image, + MimeType, PixelBased, Planar, Representation, @@ -41,49 +43,111 @@ def representation() -> Representation: Planar(**REPRESENTATION_DATA[Planar.id]), ]) +def test_representation_errors(representation: Representation) -> None: + """Test errors in representation.""" + with pytest.raises(ValueError, + match="Trait ID or Trait class is required"): + representation.get_trait() + + with pytest.raises(ValueError, + match="Trait ID or Trait class is required"): + representation.contains_trait() + def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" assert len(representation) == len(REPRESENTATION_DATA) - assert representation.get_trait(trait_id=FileLocation.id) - assert representation.get_trait(trait_id=Image.id) - assert representation.get_trait(trait_id=PixelBased.id) - assert representation.get_trait(trait_id=Planar.id) + assert representation.get_trait_by_id(FileLocation.id) + assert representation.get_trait_by_id(Image.id) + assert representation.get_trait_by_id(trait_id="ayon.2d.Image.v1") + assert representation.get_trait_by_id(PixelBased.id) + assert representation.get_trait_by_id(trait_id="ayon.2d.PixelBased.v1") + assert representation.get_trait_by_id(Planar.id) + assert representation.get_trait_by_id(trait_id="ayon.2d.Planar.v1") - assert representation.get_trait(trait=FileLocation) - assert representation.get_trait(trait=Image) - assert representation.get_trait(trait=PixelBased) - assert representation.get_trait(trait=Planar) + assert representation.get_trait(FileLocation) + assert representation.get_trait(Image) + assert representation.get_trait(PixelBased) + assert representation.get_trait(Planar) assert issubclass( - type(representation.get_trait(trait=FileLocation)), TraitBase) + type(representation.get_trait(FileLocation)), TraitBase) - assert representation.get_trait( - trait=FileLocation) == representation.get_trait( - trait_id=FileLocation.id) - assert representation.get_trait( - trait=Image) == representation.get_trait( - trait_id=Image.id) - assert representation.get_trait( - trait=PixelBased) == representation.get_trait( - trait_id=PixelBased.id) - assert representation.get_trait( - trait=Planar) == representation.get_trait( - trait_id=Planar.id) + assert representation.get_trait(FileLocation) == \ + representation.get_trait_by_id(FileLocation.id) + assert representation.get_trait(Image) == \ + representation.get_trait_by_id(Image.id) + assert representation.get_trait(PixelBased) == \ + representation.get_trait_by_id(PixelBased.id) + assert representation.get_trait(Planar) == \ + representation.get_trait_by_id(Planar.id) - assert representation.get_trait(trait_id="ayon.2d.Image.v1") - assert representation.get_trait(trait_id="ayon.2d.PixelBased.v1") - assert representation.get_trait(trait_id="ayon.2d.Planar.v1") - - assert representation.get_trait( - trait_id="ayon.2d.PixelBased.v1").display_window_width == \ + assert representation.get_trait_by_id( + "ayon.2d.PixelBased.v1").display_window_width == \ REPRESENTATION_DATA[PixelBased.id]["display_window_width"] assert representation.get_trait( trait=PixelBased).display_window_height == \ REPRESENTATION_DATA[PixelBased.id]["display_window_height"] + repre_dict = { + FileLocation.id: FileLocation(**REPRESENTATION_DATA[FileLocation.id]), + Image.id: Image(), + PixelBased.id: PixelBased(**REPRESENTATION_DATA[PixelBased.id]), + Planar.id: Planar(**REPRESENTATION_DATA[Planar.id]), + } + assert representation.get_traits() == repre_dict + + assert representation.get_traits_by_ids( + trait_ids=[FileLocation.id, Image.id, PixelBased.id, Planar.id]) == \ + repre_dict + assert representation.get_traits( + [FileLocation, Image, PixelBased, Planar]) == \ + repre_dict + + assert representation.has_traits() is True + empty_representation = Representation(traits=[]) + assert empty_representation.has_traits() is False + + assert representation.contains_trait(trait=FileLocation) is True + assert representation.contains_traits([Image, FileLocation]) is True + assert representation.contains_trait_by_id(FileLocation.id) is True + assert representation.contains_traits_by_id( + trait_ids=[FileLocation.id, Image.id]) is True + + assert representation.contains_trait(trait=Bundle) is False + assert representation.contains_traits([Image, Bundle]) is False + assert representation.contains_trait_by_id(Bundle.id) is False + assert representation.contains_traits_by_id( + trait_ids=[FileLocation.id, Bundle.id]) is False + +def test_trait_removing(representation: Representation) -> None: + """Test removing traits.""" + assert representation.contains_trait_by_id("nonexistent") is False + with pytest.raises( + ValueError, match="Trait with ID nonexistent not found."): + representation.remove_trait_by_id("nonexistent") + + assert representation.contains_trait(trait=FileLocation) is True + representation.remove_trait(trait=FileLocation) + assert representation.contains_trait(trait=FileLocation) is False + + assert representation.contains_trait_by_id(Image.id) is True + representation.remove_trait_by_id(Image.id) + assert representation.contains_trait_by_id(Image.id) is False + + assert representation.contains_traits([PixelBased, Planar]) is True + representation.remove_traits([Planar, PixelBased]) + assert representation.contains_traits([PixelBased, Planar]) is False + + assert representation.has_traits() is False + + with pytest.raises( + ValueError, match=f"Trait with ID {Image.id} not found."): + representation.remove_trait(Image) + + def test_getting_traits_data(representation: Representation) -> None: """Test getting a batch of traits.""" - result = representation.get_traits( + result = representation.get_traits_by_ids( trait_ids=[FileLocation.id, Image.id, PixelBased.id, Planar.id]) assert result == { "ayon.2d.Image.v1": Image(), @@ -103,3 +167,47 @@ def test_traits_data_to_dict(representation: Representation) -> None: """Test converting traits data to dictionary.""" result = representation.traits_as_dict() assert result == REPRESENTATION_DATA + + +def test_bundles() -> None: + """Test bundle trait.""" + diffuse_texture = [ + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + FileLocation( + file_path=Path("/path/to/diffuse.jpg"), + file_size=1024, + file_hash=None), + MimeType(mime_type="image/jpeg"), + ] + bump_texture = [ + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + FileLocation( + file_path=Path("/path/to/bump.tif"), + file_size=1024, + file_hash=None), + MimeType(mime_type="image/tiff"), + ] + bundle = Bundle(items=[diffuse_texture, bump_texture]) + representation = Representation(traits=[bundle]) + + if representation.contains_trait(trait=Bundle): + assert representation.get_trait(trait=Bundle).items == [ + diffuse_texture, bump_texture + ] + + for item in representation.get_trait(trait=Bundle).items: + sub_representation = Representation(traits=item) + assert sub_representation.contains_trait(trait=Image) + assert sub_representation.get_trait(trait=MimeType).mime_type in [ + "image/jpeg", "image/tiff" + ] From 9b3e1cec0e39d2b19467673ee19165e2c09cb4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 14 Oct 2024 22:47:31 +0200 Subject: [PATCH 016/626] :alembic: fix tests --- client/ayon_core/pipeline/traits/trait.py | 2 +- .../ayon_core/pipeline/traits/test_traits.py | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 6fa36aeb51..7d8221e370 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -111,7 +111,7 @@ class Representation: exists. """ - if not trait.id: + if not hasattr(trait, "id"): error_msg = f"Invalid trait {trait} - ID is required." raise ValueError(error_msg) if trait.id in self._data and not exists_ok: diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index e6ca0a1067..4c941f3e45 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -32,6 +32,9 @@ REPRESENTATION_DATA = { }, } +class InvalidTrait: + """Invalid trait class.""" + foo = "bar" @pytest.fixture() def representation() -> Representation: @@ -46,12 +49,16 @@ def representation() -> Representation: def test_representation_errors(representation: Representation) -> None: """Test errors in representation.""" with pytest.raises(ValueError, - match="Trait ID or Trait class is required"): - representation.get_trait() + match="Invalid trait .* - ID is required."): + representation.add_trait(InvalidTrait()) with pytest.raises(ValueError, - match="Trait ID or Trait class is required"): - representation.contains_trait() + match=f"Trait with ID {Image.id} already exists."): + representation.add_trait(Image()) + + with pytest.raises(ValueError, + match="Trait with ID .* not found."): + representation.remove_trait_by_id("foo") def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" From de4d5b955a473e74ce252357dabded77aad2e890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Oct 2024 16:54:59 +0200 Subject: [PATCH 017/626] Auto stash before merge of "feature/909-define-basic-trait-type-using-dataclasses" and "origin/develop" --- client/ayon_core/pipeline/traits/__init__.py | 4 ++++ client/ayon_core/pipeline/traits/meta.py | 24 ++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 client/ayon_core/pipeline/traits/meta.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 2d17cccf7e..ea3f90fb81 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -6,6 +6,7 @@ from .content import ( MimeType, RootlessLocation, ) +from .meta import Tagged from .three_dimensional import Spatial from .time import Clip, GapPolicy, Sequence, SMPTETimecode from .trait import Representation, TraitBase @@ -29,6 +30,9 @@ __all__ = [ "MimeType", "RootlessLocation", + # meta + "Tagged", + # two-dimensional "Compressed", "Deep", diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py new file mode 100644 index 0000000000..8c7150e6b6 --- /dev/null +++ b/client/ayon_core/pipeline/traits/meta.py @@ -0,0 +1,24 @@ +"""Metadata traits.""" +from typing import ClassVar, List + +from pydantic import Field + +from .trait import TraitBase + + +class Tagged(TraitBase): + """Tagged trait model. + + This model represents a tagged trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + tags (List[str]): Tags. + """ + + name: ClassVar[str] = "Tagged" + description: ClassVar[str] = "Tagged Trait Model" + id: ClassVar[str] = "ayon.meta.Tagged.v1" + tags: List[str] = Field(..., title="Tags") From 03dcc370e99d029af10db8bad0474b8175d0aaf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Oct 2024 17:36:30 +0200 Subject: [PATCH 018/626] :art: add some more traits --- client/ayon_core/pipeline/traits/__init__.py | 10 ++++- client/ayon_core/pipeline/traits/lifecycle.py | 37 +++++++++++++++++++ client/ayon_core/pipeline/traits/meta.py | 20 ++++++++++ client/ayon_core/pipeline/traits/time.py | 3 ++ .../pipeline/traits/two_dimensional.py | 19 ++++++++++ 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 client/ayon_core/pipeline/traits/lifecycle.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index ea3f90fb81..bc9b1d69de 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -6,11 +6,13 @@ from .content import ( MimeType, RootlessLocation, ) -from .meta import Tagged +from .lifecycle import Persistent, Transient +from .meta import Tagged, TemplatePath from .three_dimensional import Spatial from .time import Clip, GapPolicy, Sequence, SMPTETimecode from .trait import Representation, TraitBase from .two_dimensional import ( + UDIM, Deep, Image, Overscan, @@ -30,8 +32,13 @@ __all__ = [ "MimeType", "RootlessLocation", + # life cycle + "Persistent", + "Transient", + # meta "Tagged", + "TemplatePath", # two-dimensional "Compressed", @@ -40,6 +47,7 @@ __all__ = [ "Overscan", "PixelBased", "Planar", + "UDIM", # three-dimensional "Spatial", diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py new file mode 100644 index 0000000000..2877a4d396 --- /dev/null +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -0,0 +1,37 @@ +"""Lifecycle traits.""" +from typing import ClassVar + +from .trait import TraitBase + + +class Transient(TraitBase): + """Transient trait model. + + This model represents a transient trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + tags (List[str]): Tags. + """ + + name: ClassVar[str] = "Transient" + description: ClassVar[str] = "Transient Trait Model" + id: ClassVar[str] = "ayon.lifecycle.Transient.v1" + + +class Persistent(TraitBase): + """Persistent trait model. + + This model represents a persistent trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + """ + + name: ClassVar[str] = "Persistent" + description: ClassVar[str] = "Persistent Trait Model" + id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 8c7150e6b6..9e3e6a43e7 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -22,3 +22,23 @@ class Tagged(TraitBase): description: ClassVar[str] = "Tagged Trait Model" id: ClassVar[str] = "ayon.meta.Tagged.v1" tags: List[str] = Field(..., title="Tags") + + +class TemplatePath(TraitBase): + """TemplatePath trait model. + + This model represents a template path with formatting data. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + template_path (str): Template path. + data (dict[str]): Formatting data. + """ + + name: ClassVar[str] = "TemplatePath" + description: ClassVar[str] = "Template Path Trait Model" + id: ClassVar[str] = "ayon.meta.TemplatePath.v1" + template: str = Field(..., title="Template Path") + data: dict[str] = Field(..., title="Formatting Data") diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index de4ff53790..b3741c46bc 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -60,6 +60,8 @@ class Sequence(Clip): frame_padding (int): Frame padding. frame_regex (str): Frame regex - regular expression to match frame numbers. + frame_list (str): Frame list specification of frames. This takes + string like "1-10,20-30,40-50" etc. """ name: ClassVar[str] = "Sequence" @@ -70,6 +72,7 @@ class Sequence(Clip): GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") frame_regex: str = Field(..., title="Frame Regex") + frame_list: str = Field(..., title="Frame List") # Do we need one for drop and non-drop frame? diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 0b6fea315b..69e129ec41 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -114,3 +114,22 @@ class Overscan(TraitBase): right: int = Field(..., title="Right Overscan") top: int = Field(..., title="Top Overscan") bottom: int = Field(..., title="Bottom Overscan") + + +class UDIM(TraitBase): + """UDIM trait model. + + This model represents a UDIM trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + udim (int): UDIM value. + + """ + + name: ClassVar[str] = "UDIM" + description: ClassVar[str] = "UDIM Trait" + id: ClassVar[str] = "ayon.2d.UDIM.v1" + udim: int = Field(..., title="UDIM") From 2b572ae773d9776de6ddf3d2c182fcebf6fbe415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Oct 2024 17:51:56 +0200 Subject: [PATCH 019/626] :art: introduce name and id for representation --- client/ayon_core/pipeline/traits/meta.py | 2 +- client/ayon_core/pipeline/traits/trait.py | 23 +++++++++++++++++-- .../ayon_core/pipeline/traits/test_traits.py | 8 +++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 9e3e6a43e7..36ad5e8b0f 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -41,4 +41,4 @@ class TemplatePath(TraitBase): description: ClassVar[str] = "Template Path Trait Model" id: ClassVar[str] = "ayon.meta.TemplatePath.v1" template: str = Field(..., title="Template Path") - data: dict[str] = Field(..., title="Formatting Data") + data: dict = Field(..., title="Formatting Data") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 7d8221e370..90be38225b 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -3,6 +3,7 @@ from __future__ import annotations import inspect import sys +import uuid from abc import ABC, abstractmethod from collections import OrderedDict from functools import lru_cache @@ -58,10 +59,16 @@ class Representation: It holds methods to add, remove, get, and check for the existence of a trait in the representation. It also provides a method to get all the + Arguments: + name (str): Representation name. Must be unique within instance. + representation_id (str): Representation ID. + """ _data: dict _module_blacklist: ClassVar[list[str]] = [ "_", "builtins", "pydantic"] + name: str + representation_id: str @lru_cache(maxsize=64) # noqa: B019 def _get_trait_class(self, trait_id: str) -> Union[Type[TraitBase], None]: @@ -343,8 +350,20 @@ class Representation: """Return the length of the data.""" return len(self._data) - def __init__(self, traits: Optional[list[TraitBase]]=None): - """Initialize the data.""" + def __init__( + self, + name: str, + representation_id: Optional[str]=None, + traits: Optional[list[TraitBase]]=None): + """Initialize the data. + + Args: + name (str): Representation name. Must be unique within instance. + representation_id (str, optional): Representation ID. + traits (list[TraitBase], optional): List of traits. + """ + self.name = name + self.representation_id = representation_id or uuid.uuid4().hex self._data = {} if traits: for trait in traits: diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 4c941f3e45..fc38e8fb56 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -39,7 +39,7 @@ class InvalidTrait: @pytest.fixture() def representation() -> Representation: """Return a traits data instance.""" - return Representation(traits=[ + return Representation(name="test", traits=[ FileLocation(**REPRESENTATION_DATA[FileLocation.id]), Image(), PixelBased(**REPRESENTATION_DATA[PixelBased.id]), @@ -111,7 +111,7 @@ def test_representation_traits(representation: Representation) -> None: repre_dict assert representation.has_traits() is True - empty_representation = Representation(traits=[]) + empty_representation = Representation(name="test", traits=[]) assert empty_representation.has_traits() is False assert representation.contains_trait(trait=FileLocation) is True @@ -205,7 +205,7 @@ def test_bundles() -> None: MimeType(mime_type="image/tiff"), ] bundle = Bundle(items=[diffuse_texture, bump_texture]) - representation = Representation(traits=[bundle]) + representation = Representation(name="test_bundle", traits=[bundle]) if representation.contains_trait(trait=Bundle): assert representation.get_trait(trait=Bundle).items == [ @@ -213,7 +213,7 @@ def test_bundles() -> None: ] for item in representation.get_trait(trait=Bundle).items: - sub_representation = Representation(traits=item) + sub_representation = Representation(name="test", traits=item) assert sub_representation.contains_trait(trait=Image) assert sub_representation.get_trait(trait=MimeType).mime_type in [ "image/jpeg", "image/tiff" From 4e0f9b42372b45e35e1eaf144371431835abd23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 17 Oct 2024 14:41:58 +0200 Subject: [PATCH 020/626] :wrench: WIP on the integrator --- client/ayon_core/plugins/__init__.py | 1 + client/ayon_core/plugins/publish/__init__.py | 1 + .../plugins/publish/integrate_traits.py | 102 ++++++++++++++++++ .../ayon_core/plugins/publish/__init__.py | 1 + .../plugins/publish/test_integrate_traits.py | 100 +++++++++++++++++ 5 files changed, 205 insertions(+) create mode 100644 client/ayon_core/plugins/__init__.py create mode 100644 client/ayon_core/plugins/publish/__init__.py create mode 100644 client/ayon_core/plugins/publish/integrate_traits.py create mode 100644 tests/client/ayon_core/plugins/publish/__init__.py create mode 100644 tests/client/ayon_core/plugins/publish/test_integrate_traits.py diff --git a/client/ayon_core/plugins/__init__.py b/client/ayon_core/plugins/__init__.py new file mode 100644 index 0000000000..376c7e5a4d --- /dev/null +++ b/client/ayon_core/plugins/__init__.py @@ -0,0 +1 @@ +"""AYON Core plugins.""" diff --git a/client/ayon_core/plugins/publish/__init__.py b/client/ayon_core/plugins/publish/__init__.py new file mode 100644 index 0000000000..86b6c901bc --- /dev/null +++ b/client/ayon_core/plugins/publish/__init__.py @@ -0,0 +1 @@ +"""AYON Core publish plugins.""" diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py new file mode 100644 index 0000000000..2a35135b84 --- /dev/null +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -0,0 +1,102 @@ +"""Integrate representations with traits.""" +import logging + +import pyblish.api + +from ayon_core.pipeline.publish import ( + get_publish_template_name, +) +from ayon_core.pipeline.traits import Persistent, Representation + + +class IntegrateTraits(pyblish.api.InstancePlugin): + """Integrate representations with traits.""" + + label = "Integrate Asset" + order = pyblish.api.IntegratorOrder + log: logging.Logger + + def process(self, instance: pyblish.api.Instance) -> None: + """Integrate representations with traits. + + Args: + instance (pyblish.api.Instance): Instance to process. + + """ + # 1) skip farm and integrate == False + + if not instance.data.get("integrate"): + self.log.debug("Instance is marked to skip integrating. Skipping") + return + + if instance.data.get("farm"): + self.log.debug( + "Instance is marked to be processed on farm. Skipping") + return + + # TODO (antirotor): Find better name for the key # noqa: FIX002, TD003 + if not instance.data.get("representations_with_traits"): + self.log.debug( + "Instance has no representations with traits. Skipping") + return + + # 2) filter representations based on LifeCycle traits + instance.data["representations_with_traits"] = self.filter_lifecycle( + instance.data["representations_with_traits"] + ) + + representations = instance.data["representations_with_traits"] + if not representations: + self.log.debug( + "Instance has no persistent representations. Skipping") + return + + # template_name = self.get_template_name(instance) + + @staticmethod + def filter_lifecycle( + representations: list[Representation]) -> list[Representation]: + """Filter representations based on LifeCycle traits. + + Args: + representations (list): List of representations. + + Returns: + list: Filtered representations. + + """ + return [ + representation + for representation in representations + if representation.contains_trait(Persistent) + ] + + def get_template_name(self, instance: pyblish.api.Instance) -> str: + """Return anatomy template name to use for integration. + + Args: + instance (pyblish.api.Instance): Instance to process. + + Returns: + str: Anatomy template name + + """ + # Anatomy data is pre-filled by Collectors + context = instance.context + project_name = context.data["projectName"] + + # Task can be optional in anatomy data + host_name = context.data["hostName"] + anatomy_data = instance.data["anatomyData"] + product_type = instance.data["productType"] + task_info = anatomy_data.get("task") or {} + + return get_publish_template_name( + project_name, + host_name, + product_type, + task_name=task_info.get("name"), + task_type=task_info.get("type"), + project_settings=context.data["project_settings"], + logger=self.log + ) diff --git a/tests/client/ayon_core/plugins/publish/__init__.py b/tests/client/ayon_core/plugins/publish/__init__.py new file mode 100644 index 0000000000..58e6112045 --- /dev/null +++ b/tests/client/ayon_core/plugins/publish/__init__.py @@ -0,0 +1 @@ +"""Test for pyblish plugins.""" diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py new file mode 100644 index 0000000000..b7d36d1252 --- /dev/null +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -0,0 +1,100 @@ +"""Tests for the representation traits.""" +from __future__ import annotations + +import base64 +from typing import TYPE_CHECKING + +import pyblish.api +import pytest +from ayon_core.pipeline.traits import ( + FileLocation, + GapPolicy, + Image, + Persistent, + PixelBased, + Representation, +) + +# Tagged, +# TemplatePath, +from ayon_core.plugins.publish.integrate_traits import IntegrateTraits +from pipeline.traits import MimeType, Sequence + +if TYPE_CHECKING: + from pathlib import Path + +PNG_FILE_B64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==" # noqa: E501 +SEQUENCE_LENGTH = 10 + +@pytest.fixture(scope="session") +def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: + """Return a temporary image file.""" + filename = tmp_path_factory.mktemp("single") / "img.png" + with open(filename, "wb") as f: + f.write(base64.b64decode(PNG_FILE_B64)) + return filename + +def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: + """Return a sequence of temporary image files.""" + files = [] + for i in range(SEQUENCE_LENGTH): + filename = tmp_path_factory.mktemp("sequence") / f"img{i:04d}.png" + with open(filename, "wb") as f: + f.write(base64.b64decode(PNG_FILE_B64)) + files.append(filename) + return files + +@pytest.fixture() +def mock_context( + single_file: Path, + sequence_files: list[Path]) -> pyblish.api.Context: + """Return a mock instance.""" + context = pyblish.api.Context() + instance = context.create_instance("mock_instance") + + instance.data["integrate"] = True + instance.data["farm"] = False + + instance.data["representations_with_traits"] = [ + Representation(name="test_single", traits=[ + Persistent(), + FileLocation( + file_path=single_file, + file_size=len(base64.b64decode(PNG_FILE_B64))), + Image(), + MimeType(mime_type="image/png"), + ]), + Representation(name="test_sequence", traits=[ + Persistent(), + Sequence( + frame_start=1, + frame_end=SEQUENCE_LENGTH, + frame_padding=4, + gaps_policy=GapPolicy.forbidden, + frame_regex=r"img(\d{4}).png", + step=1, + frame_start_handle=0, + frame_end_handle=0, + frame_list=None + ), + FileLocation( + file_path=sequence_files[0], + file_size=len(base64.b64decode(PNG_FILE_B64))), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + MimeType(mime_type="image/png"), + ]), + ] + + return context + +def test_get_template_name(mock_context: pyblish.api.Context) -> None: + """Test get_template_name.""" + integrator = IntegrateTraits() + template_name = integrator.get_template_name( + mock_context["mock_instance"]) + + assert template_name == "mock_instance" From a299f8edd38f6462b4d0753fcc667a34a7de4b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 17 Oct 2024 14:44:15 +0200 Subject: [PATCH 021/626] :bug: fix test fixture --- .../ayon_core/plugins/publish/test_integrate_traits.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index b7d36d1252..3874cc43d4 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -34,11 +34,12 @@ def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: f.write(base64.b64decode(PNG_FILE_B64)) return filename +@pytest.fixture(scope="session") def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: """Return a sequence of temporary image files.""" files = [] for i in range(SEQUENCE_LENGTH): - filename = tmp_path_factory.mktemp("sequence") / f"img{i:04d}.png" + filename = tmp_path_factory.mktemp("sequence") / f"img.{i:04d}.png" with open(filename, "wb") as f: f.write(base64.b64decode(PNG_FILE_B64)) files.append(filename) @@ -71,7 +72,7 @@ def mock_context( frame_end=SEQUENCE_LENGTH, frame_padding=4, gaps_policy=GapPolicy.forbidden, - frame_regex=r"img(\d{4}).png", + frame_regex=r"^img\.(\d{4})\.png$", step=1, frame_start_handle=0, frame_end_handle=0, From 4bd570602d9dcbcbe75a579da5ab7c3cd116af88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 17 Oct 2024 14:50:12 +0200 Subject: [PATCH 022/626] :recycle: make some properties optional --- client/ayon_core/pipeline/traits/content.py | 2 +- client/ayon_core/pipeline/traits/time.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 1cb7366928..b2bf62805f 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -48,7 +48,7 @@ class FileLocation(TraitBase): id: ClassVar[str] = "ayon.content.FileLocation.v1" file_path: Path = Field(..., title="File Path") file_size: int = Field(..., title="File Size") - file_hash: Optional[str] = Field(..., title="File Hash") + file_hash: Optional[str] = Field(None, title="File Hash") class RootlessLocation(TraitBase): """RootlessLocation trait model. diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index b3741c46bc..9dec1ac320 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -1,6 +1,8 @@ """Temporal (time related) traits.""" +from __future__ import annotations + from enum import Enum, auto -from typing import ClassVar +from typing import ClassVar, Optional from pydantic import Field @@ -41,8 +43,8 @@ class Clip(TraitBase): id: ClassVar[str] = "ayon.time.Clip.v1" frame_start: int = Field(..., title="Frame Start") frame_end: int = Field(..., title="Frame End") - frame_start_handle: int = Field(..., title="Frame Start Handle") - frame_end_handle: int = Field(..., title="Frame End Handle") + frame_start_handle: Optional[int] = Field(0, title="Frame Start Handle") + frame_end_handle: Optional[int] = Field(0, title="Frame End Handle") class Sequence(Clip): """Sequence trait model. @@ -67,12 +69,12 @@ class Sequence(Clip): name: ClassVar[str] = "Sequence" description: ClassVar[str] = "Sequence Trait Model" id: ClassVar[str] = "ayon.time.Sequence.v1" - step: int = Field(..., title="Step") + step: Optional[int] = Field(1, title="Step") gaps_policy: GapPolicy = Field( GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") frame_regex: str = Field(..., title="Frame Regex") - frame_list: str = Field(..., title="Frame List") + frame_list: Optional[str] = Field(None, title="Frame List") # Do we need one for drop and non-drop frame? From 4b3469c5ae30f4e8b179beb50111ca863ec3244b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 21 Oct 2024 11:38:06 +0200 Subject: [PATCH 023/626] :wrench: adding project based test note that this needs `pytest-ayon` dependency to run that will be added in subsequent commits --- .../plugins/publish/integrate_traits.py | 5 + .../plugins/publish/test_integrate_traits.py | 93 ++++++++++++++++--- 2 files changed, 83 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 2a35135b84..b607e527b2 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -51,8 +51,13 @@ class IntegrateTraits(pyblish.api.InstancePlugin): "Instance has no persistent representations. Skipping") return + # 3) get anatomy template name # template_name = self.get_template_name(instance) + # 4) initialize OperationsSession() + # for now we'll skip this step right now as there is some + # old representation style code that needs to be updated.z + @staticmethod def filter_lifecycle( representations: list[Representation]) -> list[Representation]: diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 3874cc43d4..1262266943 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -2,26 +2,25 @@ from __future__ import annotations import base64 -from typing import TYPE_CHECKING +from pathlib import Path import pyblish.api import pytest from ayon_core.pipeline.traits import ( FileLocation, - GapPolicy, Image, + MimeType, Persistent, PixelBased, Representation, + Sequence, + Transient, ) # Tagged, # TemplatePath, from ayon_core.plugins.publish.integrate_traits import IntegrateTraits -from pipeline.traits import MimeType, Sequence - -if TYPE_CHECKING: - from pathlib import Path +from ayon_core.settings import get_project_settings PNG_FILE_B64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==" # noqa: E501 SEQUENCE_LENGTH = 10 @@ -47,11 +46,48 @@ def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: @pytest.fixture() def mock_context( + project: object, single_file: Path, sequence_files: list[Path]) -> pyblish.api.Context: - """Return a mock instance.""" + """Return a mock instance. + + This is mocking pyblish context for testing. It is using real AYON project + thanks to the ``project`` fixture. + + This returns following data:: + + project_name: str + project_code: str + project_root_folders: dict[str, str] + folder: IdNamePair + task: IdNamePair + product: IdNamePair + version: IdNamePair + representations: List[IdNamePair] + links: List[str] + + Args: + project (object): The project info. It is `ProjectInfo` object + returned by pytest fixture. + single_file (Path): The path to a single image file. + sequence_files (list[Path]): The paths to a sequence of image files. + + """ context = pyblish.api.Context() + context.data["projectName"] = project.project_name + context.data["hostName"] = "test_host" + context.data["project_settings"] = get_project_settings( + project.project_name) + instance = context.create_instance("mock_instance") + instance.data["anatomyData"] = { + "project": project.project_name, + "task": { + "name": project.task.name, + "type": "test" # pytest-ayon doesn't return the task type yet + } + } + instance.data["productType"] = "test_product" instance.data["integrate"] = True instance.data["farm"] = False @@ -71,12 +107,7 @@ def mock_context( frame_start=1, frame_end=SEQUENCE_LENGTH, frame_padding=4, - gaps_policy=GapPolicy.forbidden, frame_regex=r"^img\.(\d{4})\.png$", - step=1, - frame_start_handle=0, - frame_end_handle=0, - frame_list=None ), FileLocation( file_path=sequence_files[0], @@ -93,9 +124,41 @@ def mock_context( return context def test_get_template_name(mock_context: pyblish.api.Context) -> None: - """Test get_template_name.""" + """Test get_template_name. + + TODO (antirotor): this will always return "default" probably, if + there are no studio overrides. To test this properly, we need + to set up the studio overrides in the test environment. + + """ integrator = IntegrateTraits() template_name = integrator.get_template_name( - mock_context["mock_instance"]) + mock_context[0]) - assert template_name == "mock_instance" + assert template_name == "default" + +def test_filter_lifecycle() -> None: + """Test filter_lifecycle.""" + integrator = IntegrateTraits() + persistent_representation = Representation( + name="test", + traits=[ + Persistent(), + FileLocation( + file_path=Path("test"), + file_size=1234), + Image(), + MimeType(mime_type="image/png"), + ]) + transient_representation = Representation( + name="test", + traits=[ + Transient(), + Image(), + MimeType(mime_type="image/png"), + ]) + filtered = integrator.filter_lifecycle( + [persistent_representation, transient_representation]) + + assert len(filtered) == 1 + assert filtered[0] == persistent_representation From 664d83962e8de3dffa3681a5d27531a0efa11da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 25 Oct 2024 17:12:18 +0200 Subject: [PATCH 024/626] :art: added id and name to representation also added versionless trait id processing and trait validation --- client/ayon_core/pipeline/traits/content.py | 20 + client/ayon_core/pipeline/traits/trait.py | 403 +++++++++++++++--- pyproject.toml | 2 +- .../ayon_core/pipeline/traits/lib/__init__.py | 25 ++ .../ayon_core/pipeline/traits/test_traits.py | 90 ++++ 5 files changed, 490 insertions(+), 50 deletions(-) create mode 100644 tests/client/ayon_core/pipeline/traits/lib/__init__.py diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index b2bf62805f..480d1657f5 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -113,3 +113,23 @@ class Bundle(TraitBase): def to_representation(self) -> Representation: """Convert to a representation.""" return Representation(traits=self.items) + + +class Fragment(TraitBase): + """Fragment trait model. + + This model represents a fragment trait. A fragment is a part of + a larger entity that is represented by a representation. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + parent (str): Parent representation id. + + """ + + name: ClassVar[str] = "Fragment" + description: ClassVar[str] = "Fragment Trait" + id: ClassVar[str] = "ayon.content.Fragment.v1" + parent: str = Field(..., title="Parent Representation Id") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 90be38225b..b97ec08cc6 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -2,15 +2,33 @@ from __future__ import annotations import inspect +import re import sys import uuid from abc import ABC, abstractmethod -from collections import OrderedDict -from functools import lru_cache +from functools import cached_property, lru_cache from typing import ClassVar, Optional, Type, Union import pydantic.alias_generators -from pydantic import AliasGenerator, BaseModel, ConfigDict +from pydantic import ( + AliasGenerator, + BaseModel, + ConfigDict, +) + + +def _get_version_from_id(_id: str) -> int: + """Get version from ID. + + Args: + _id (str): ID. + + Returns: + int: Version. + + """ + match = re.search(r"v(\d+)$", _id) + return int(match[1]) if match else None class TraitBase(ABC, BaseModel): @@ -47,6 +65,35 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... + @property + @cached_property + def version(self) -> Union[int, None]: + # sourcery skip: use-named-expression + """Get trait version from ID. + + This assumes Trait ID ends with `.v{version}`. If not, it will + return None. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, self.id) + return int(match[1]) if match else None + + def validate(self, representation: Representation) -> bool: + """Validate the trait. + + This method should be implemented in the derived classes to validate + the trait data. It can be used by traits to validate against other + traits in the representation. + + Args: + representation (Representation): Representation instance. + + Raises: + ValueError: If the trait is invalid within representation. + + """ + return True class Representation: @@ -70,40 +117,9 @@ class Representation: name: str representation_id: str - @lru_cache(maxsize=64) # noqa: B019 - def _get_trait_class(self, trait_id: str) -> Union[Type[TraitBase], None]: - """Get the trait class with corresponding to given ID. - - This method will search for the trait class in all the modules except - the blacklisted modules. There is some issue in Pydantic where - ``issubclass`` is not working properly so we are excluding explicitly - modules with offending classes. This list can be updated as needed to - speed up the search. - - Args: - trait_id (str): Trait ID. - - Returns: - Type[TraitBase]: Trait class. - - """ - modules = sys.modules.copy() - filtered_modules = modules.copy() - for module_name in modules: - for bl_module in self._module_blacklist: - if module_name.startswith(bl_module): - filtered_modules.pop(module_name) - - for module in filtered_modules.values(): - if not module: - continue - for _, klass in inspect.getmembers(module, inspect.isclass): - if inspect.isclass(klass) and \ - issubclass(klass, TraitBase) and \ - klass.id == trait_id: - return klass - return None - + def __hash__(self): + """Return hash of the representation ID.""" + return hash(self.representation_id) def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: """Add a trait to the Representation. @@ -275,6 +291,7 @@ class Representation: return self._data[trait.id] if self._data.get(trait.id) else None def get_trait_by_id(self, trait_id: str) -> Union[TraitBase, None]: + # sourcery skip: use-named-expression """Get a trait from the representation by id. Args: @@ -284,12 +301,18 @@ class Representation: TraitBase: Trait instance. """ - trait_class = self._get_trait_class(trait_id) - if not trait_class: - error_msg = f"Trait model with ID {trait_id} not found." - raise ValueError(error_msg) + version = _get_version_from_id(trait_id) + if version: + return self._data.get(trait_id) - return self._data[trait_id] if self._data.get(trait_id) else None + return next( + ( + self._data.get(trait_id) + for trait_id in self._data + if trait_id.startswith(trait_id) + ), + None, + ) def get_traits(self, traits: Optional[list[Type[TraitBase]]]=None) -> dict: @@ -338,13 +361,11 @@ class Representation: dict: Traits data dictionary. """ - result = OrderedDict() - for trait_id, trait in self._data.items(): - if not trait or not trait_id: - continue - result[trait_id] = OrderedDict(trait.dict()) - - return result + return { + trait_id: trait.dict() + for trait_id, trait in self._data.items() + if trait and trait_id + } def __len__(self): """Return the length of the data.""" @@ -368,3 +389,287 @@ class Representation: if traits: for trait in traits: self.add_trait(trait) + + @staticmethod + def _get_version_from_id(trait_id: str) -> Union[int, None]: + # sourcery skip: use-named-expression + """Check if the trait has version specified. + + Args: + trait_id (str): Trait ID. + + Returns: + int: Trait version. + None: If the trait id does not have a version. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, trait_id) + return int(match[1]) if match else None + + def __eq__(self, other: Representation) -> bool: # noqa: PLR0911 + """Check if the representation is equal to another. + + Args: + other (Representation): Representation to compare. + + Returns: + bool: True if the representations are equal, False otherwise. + + """ + if not isinstance(other, Representation): + return False + + if self.name != other.name: + return False + + # number of traits + if len(self) != len(other): + return False + + for trait_id, trait in self._data.items(): + if trait_id not in other._data: + return False + if trait != other._data[trait_id]: + return False + for key, value in trait.dict().items(): + if value != other._data[trait_id].dict().get(key): + return False + + return True + + @classmethod + @lru_cache(maxsize=64) + def _get_possible_trait_classes_from_modules( + cls, + trait_id: str) -> set[type[TraitBase]]: + """Get possible trait classes from modules. + + Args: + trait_id (str): Trait ID. + + Returns: + set[type[TraitBase]]: Set of trait classes. + + """ + modules = sys.modules.copy() + filtered_modules = modules.copy() + for module_name in modules: + for bl_module in cls._module_blacklist: + if module_name.startswith(bl_module): + filtered_modules.pop(module_name) + + trait_candidates = set() + for module in filtered_modules.values(): + if not module: + continue + for _, klass in inspect.getmembers(module, inspect.isclass): + if inspect.isclass(klass) \ + and issubclass(klass, TraitBase) \ + and str(klass.id).startswith(trait_id): + trait_candidates.add(klass) + return trait_candidates + + @classmethod + @lru_cache(maxsize=64) + def _get_trait_class( + cls, trait_id: str) -> Union[Type[TraitBase], None]: + """Get the trait class with corresponding to given ID. + + This method will search for the trait class in all the modules except + the blacklisted modules. There is some issue in Pydantic where + ``issubclass`` is not working properly so we are excluding explicitly + modules with offending classes. This list can be updated as needed to + speed up the search. + + Args: + trait_id (str): Trait ID. + + Returns: + Type[TraitBase]: Trait class. + + Raises: + LooseMatchingTraitError: If the trait is found with a loose + matching criteria. This exception will include the trait + class that was found and the expected trait ID. Additional + downstream logic must decide how to handle this error. + + """ + version = cls._get_version_from_id(trait_id) + + trait_candidates = cls._get_possible_trait_classes_from_modules( + trait_id + ) + + for trait_class in trait_candidates: + if trait_class.id == trait_id: + # we found direct match + return trait_class + + # if we didn't find direct match, we will search for the highest + # version of the trait. + if not version: + # sourcery skip: use-named-expression + trait_versions = [ + trait_class for trait_class in trait_candidates + if re.match( + rf"{trait_id}.v(\d+)$", str(trait_class.id)) + ] + if trait_versions: + def _get_version_by_id(trait_klass: Type[TraitBase]) -> int: + match = re.search(r"v(\d+)$", str(trait_klass.id)) + return int(match[1]) if match else 0 + + error = LooseMatchingTraitError( + "Found trait that might match.") + error.found_trait = max( + trait_versions, key=_get_version_by_id) + error.expected_id = trait_id + raise error + + return None + + @classmethod + def get_trait_class_by_trait_id(cls, trait_id: str) -> type[TraitBase]: + """Get the trait class for the given trait ID. + + Args: + trait_id (str): Trait ID. + + Returns: + type[TraitBase]: Trait class. + + Raises: + IncompatibleTraitVersionError: If the trait version is incompatible + with the current version of the trait. + UpgradableTraitError: If the trait can upgrade existing data + meant for older versions of the trait. + ValueError: If the trait model with the given ID is not found. + + """ + trait_class = None + try: + trait_class = cls._get_trait_class(trait_id=trait_id) + except LooseMatchingTraitError as e: + requested_version = _get_version_from_id(trait_id) + found_version = _get_version_from_id(e.found_trait.id) + + if not requested_version: + trait_class = e.found_trait + + else: + if requested_version > found_version: + error_msg = ( + f"Requested trait version {requested_version} is " + f"higher than the found trait version {found_version}." + ) + raise IncompatibleTraitVersionError(error_msg) from e + + if requested_version < found_version and hasattr( + e.found_trait, "upgrade"): + error_msg = ( + "Requested trait version " + f"{requested_version} is lower " + f"than the found trait version {found_version}." + ) + error = UpgradableTraitError(error_msg) + error.trait = e.found_trait + raise error from e + return trait_class + + @classmethod + def from_dict( + cls, + name: str, + representation_id: Optional[str]=None, + trait_data: Optional[dict] = None) -> Representation: + """Create a representation from a dictionary. + + Args: + name (str): Representation name. + representation_id (str, optional): Representation ID. + trait_data (dict): Representation data. Dictionary with keys + as trait ids and values as trait data. Example:: + + { + "ayon.2d.PixelBased.v1": { + "display_window_width": 1920, + "display_window_height": 1080 + }, + "ayon.2d.Planar.v1": { + "channels": 3 + } + } + + Returns: + Representation: Representation instance. + + """ + traits = [] + for trait_id, value in trait_data.items(): + if not isinstance(value, dict): + msg = ( + f"Invalid trait data for trait ID {trait_id}. " + "Trait data must be a dictionary." + ) + raise TypeError(msg) + + try: + trait_class = cls.get_trait_class_by_trait_id(trait_id) + except UpgradableTraitError as e: + # we found newer version of trait, we will upgrade the data + if hasattr(e.trait, "upgrade"): + traits.append(e.trait.upgrade(value)) + else: + msg = ( + f"Newer version of trait {e.trait.id} found " + f"for requested {trait_id} but without " + "upgrade method." + ) + raise IncompatibleTraitVersionError(msg) from e + else: + if not trait_class: + error_msg = f"Trait model with ID {trait_id} not found." + raise ValueError(error_msg) + + traits.append(trait_class(**value)) + + return cls( + name=name, representation_id=representation_id, traits=traits) + + + +class IncompatibleTraitVersionError(Exception): + """Incompatible trait version exception. + + This exception is raised when the trait version is incompatible with the + current version of the trait. + """ + + +class UpgradableTraitError(Exception): + """Upgradable trait version exception. + + This exception is raised when the trait can upgrade existing data + meant for older versions of the trait. It must implement `upgrade` + method that will take old trait data as argument to handle the upgrade. + """ + + trait: TraitBase + old_data: dict + +class LooseMatchingTraitError(Exception): + """Loose matching trait exception. + + This exception is raised when the trait is found with a loose matching + criteria. + """ + + found_trait: TraitBase + expected_id: str + +class TraitValidationError(Exception): + """Trait validation error exception. + + This exception is raised when the trait validation fails. + """ diff --git a/pyproject.toml b/pyproject.toml index 641faf2536..fdaec51a58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -106,7 +106,7 @@ exclude = [ [tool.ruff.lint.per-file-ignores] "client/ayon_core/lib/__init__.py" = ["E402"] -"tests/*.py" = ["S101"] +"tests/*.py" = ["S101", "PLR2004"] # allow asserts and magical values [tool.ruff.format] # Like Black, use double quotes for strings. diff --git a/tests/client/ayon_core/pipeline/traits/lib/__init__.py b/tests/client/ayon_core/pipeline/traits/lib/__init__.py new file mode 100644 index 0000000000..d7ea7ae0ad --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/lib/__init__.py @@ -0,0 +1,25 @@ +"""Metadata traits.""" +from typing import ClassVar + +from ayon_core.pipeline.traits import TraitBase + + +class NewTestTrait(TraitBase): + """New Test trait model. + + This model represents a tagged trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + """ + + name: ClassVar[str] = "New Test Trait" + description: ClassVar[str] = ( + "This test trait is used for testing updating." + ) + id: ClassVar[str] = "ayon.test.NewTestTrait.v999" + + +__all__ = ["NewTestTrait"] diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index fc38e8fb56..8a48d6eef8 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -14,6 +14,7 @@ from ayon_core.pipeline.traits import ( Representation, TraitBase, ) +from pipeline.traits import Overscan REPRESENTATION_DATA = { FileLocation.id: { @@ -32,6 +33,15 @@ REPRESENTATION_DATA = { }, } +class UpgradedImage(Image): + """Upgraded image class.""" + id = "ayon.2d.Image.v2" + + @classmethod + def upgrade(cls, data: dict) -> UpgradedImage: # noqa: ARG003 + """Upgrade the trait.""" + return cls() + class InvalidTrait: """Invalid trait class.""" foo = "bar" @@ -62,6 +72,8 @@ def test_representation_errors(representation: Representation) -> None: def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" + assert representation.get_trait_by_id("ayon.2d.PixelBased").version == 1 + assert len(representation) == len(REPRESENTATION_DATA) assert representation.get_trait_by_id(FileLocation.id) assert representation.get_trait_by_id(Image.id) @@ -152,6 +164,7 @@ def test_trait_removing(representation: Representation) -> None: representation.remove_trait(Image) + def test_getting_traits_data(representation: Representation) -> None: """Test getting a batch of traits.""" result = representation.get_traits_by_ids( @@ -218,3 +231,80 @@ def test_bundles() -> None: assert sub_representation.get_trait(trait=MimeType).mime_type in [ "image/jpeg", "image/tiff" ] + +def test_get_version_from_id() -> None: + """Test getting version from trait ID.""" + assert Image().version == 1 + + class TestOverscan(Overscan): + id = "ayon.2d.Overscan.v2" + + assert TestOverscan( + left=0, + right=0, + top=0, + bottom=0 + ).version == 2 + + class TestMimeType(MimeType): + id = "ayon.content.MimeType" + + assert TestMimeType(mime_type="foo/bar").version is None + + +def test_from_dict() -> None: + """Test creating representation from dictionary.""" + traits_data = { + "ayon.content.FileLocation.v1": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + "ayon.2d.Image.v1": {}, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + + assert len(representation) == 2 + assert representation.get_trait_by_id("ayon.content.FileLocation.v1") + assert representation.get_trait_by_id("ayon.2d.Image.v1") + + traits_data = { + "ayon.content.FileLocation.v999": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + } + + with pytest.raises(ValueError, match="Trait model with ID .* not found."): + representation = Representation.from_dict( + "test", trait_data=traits_data) + + traits_data = { + "ayon.content.FileLocation": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + + assert len(representation) == 1 + assert representation.get_trait_by_id("ayon.content.FileLocation.v1") + + # this won't work right now because we would need to somewhat mock + # the import + """ + from .lib import NewTestTrait + + traits_data = { + "ayon.test.NewTestTrait.v1": {}, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + """ From edefade158adae27d49a0055c7a54d39242a5399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 25 Oct 2024 17:12:18 +0200 Subject: [PATCH 025/626] :art: added id and name to representation also added versionless trait id processing and trait validation --- client/ayon_core/pipeline/traits/content.py | 20 + client/ayon_core/pipeline/traits/trait.py | 403 +++++++++++++++--- pyproject.toml | 2 +- .../ayon_core/pipeline/traits/lib/__init__.py | 25 ++ .../ayon_core/pipeline/traits/test_traits.py | 90 ++++ 5 files changed, 490 insertions(+), 50 deletions(-) create mode 100644 tests/client/ayon_core/pipeline/traits/lib/__init__.py diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index b2bf62805f..480d1657f5 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -113,3 +113,23 @@ class Bundle(TraitBase): def to_representation(self) -> Representation: """Convert to a representation.""" return Representation(traits=self.items) + + +class Fragment(TraitBase): + """Fragment trait model. + + This model represents a fragment trait. A fragment is a part of + a larger entity that is represented by a representation. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + parent (str): Parent representation id. + + """ + + name: ClassVar[str] = "Fragment" + description: ClassVar[str] = "Fragment Trait" + id: ClassVar[str] = "ayon.content.Fragment.v1" + parent: str = Field(..., title="Parent Representation Id") diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 90be38225b..b97ec08cc6 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -2,15 +2,33 @@ from __future__ import annotations import inspect +import re import sys import uuid from abc import ABC, abstractmethod -from collections import OrderedDict -from functools import lru_cache +from functools import cached_property, lru_cache from typing import ClassVar, Optional, Type, Union import pydantic.alias_generators -from pydantic import AliasGenerator, BaseModel, ConfigDict +from pydantic import ( + AliasGenerator, + BaseModel, + ConfigDict, +) + + +def _get_version_from_id(_id: str) -> int: + """Get version from ID. + + Args: + _id (str): ID. + + Returns: + int: Version. + + """ + match = re.search(r"v(\d+)$", _id) + return int(match[1]) if match else None class TraitBase(ABC, BaseModel): @@ -47,6 +65,35 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... + @property + @cached_property + def version(self) -> Union[int, None]: + # sourcery skip: use-named-expression + """Get trait version from ID. + + This assumes Trait ID ends with `.v{version}`. If not, it will + return None. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, self.id) + return int(match[1]) if match else None + + def validate(self, representation: Representation) -> bool: + """Validate the trait. + + This method should be implemented in the derived classes to validate + the trait data. It can be used by traits to validate against other + traits in the representation. + + Args: + representation (Representation): Representation instance. + + Raises: + ValueError: If the trait is invalid within representation. + + """ + return True class Representation: @@ -70,40 +117,9 @@ class Representation: name: str representation_id: str - @lru_cache(maxsize=64) # noqa: B019 - def _get_trait_class(self, trait_id: str) -> Union[Type[TraitBase], None]: - """Get the trait class with corresponding to given ID. - - This method will search for the trait class in all the modules except - the blacklisted modules. There is some issue in Pydantic where - ``issubclass`` is not working properly so we are excluding explicitly - modules with offending classes. This list can be updated as needed to - speed up the search. - - Args: - trait_id (str): Trait ID. - - Returns: - Type[TraitBase]: Trait class. - - """ - modules = sys.modules.copy() - filtered_modules = modules.copy() - for module_name in modules: - for bl_module in self._module_blacklist: - if module_name.startswith(bl_module): - filtered_modules.pop(module_name) - - for module in filtered_modules.values(): - if not module: - continue - for _, klass in inspect.getmembers(module, inspect.isclass): - if inspect.isclass(klass) and \ - issubclass(klass, TraitBase) and \ - klass.id == trait_id: - return klass - return None - + def __hash__(self): + """Return hash of the representation ID.""" + return hash(self.representation_id) def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: """Add a trait to the Representation. @@ -275,6 +291,7 @@ class Representation: return self._data[trait.id] if self._data.get(trait.id) else None def get_trait_by_id(self, trait_id: str) -> Union[TraitBase, None]: + # sourcery skip: use-named-expression """Get a trait from the representation by id. Args: @@ -284,12 +301,18 @@ class Representation: TraitBase: Trait instance. """ - trait_class = self._get_trait_class(trait_id) - if not trait_class: - error_msg = f"Trait model with ID {trait_id} not found." - raise ValueError(error_msg) + version = _get_version_from_id(trait_id) + if version: + return self._data.get(trait_id) - return self._data[trait_id] if self._data.get(trait_id) else None + return next( + ( + self._data.get(trait_id) + for trait_id in self._data + if trait_id.startswith(trait_id) + ), + None, + ) def get_traits(self, traits: Optional[list[Type[TraitBase]]]=None) -> dict: @@ -338,13 +361,11 @@ class Representation: dict: Traits data dictionary. """ - result = OrderedDict() - for trait_id, trait in self._data.items(): - if not trait or not trait_id: - continue - result[trait_id] = OrderedDict(trait.dict()) - - return result + return { + trait_id: trait.dict() + for trait_id, trait in self._data.items() + if trait and trait_id + } def __len__(self): """Return the length of the data.""" @@ -368,3 +389,287 @@ class Representation: if traits: for trait in traits: self.add_trait(trait) + + @staticmethod + def _get_version_from_id(trait_id: str) -> Union[int, None]: + # sourcery skip: use-named-expression + """Check if the trait has version specified. + + Args: + trait_id (str): Trait ID. + + Returns: + int: Trait version. + None: If the trait id does not have a version. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, trait_id) + return int(match[1]) if match else None + + def __eq__(self, other: Representation) -> bool: # noqa: PLR0911 + """Check if the representation is equal to another. + + Args: + other (Representation): Representation to compare. + + Returns: + bool: True if the representations are equal, False otherwise. + + """ + if not isinstance(other, Representation): + return False + + if self.name != other.name: + return False + + # number of traits + if len(self) != len(other): + return False + + for trait_id, trait in self._data.items(): + if trait_id not in other._data: + return False + if trait != other._data[trait_id]: + return False + for key, value in trait.dict().items(): + if value != other._data[trait_id].dict().get(key): + return False + + return True + + @classmethod + @lru_cache(maxsize=64) + def _get_possible_trait_classes_from_modules( + cls, + trait_id: str) -> set[type[TraitBase]]: + """Get possible trait classes from modules. + + Args: + trait_id (str): Trait ID. + + Returns: + set[type[TraitBase]]: Set of trait classes. + + """ + modules = sys.modules.copy() + filtered_modules = modules.copy() + for module_name in modules: + for bl_module in cls._module_blacklist: + if module_name.startswith(bl_module): + filtered_modules.pop(module_name) + + trait_candidates = set() + for module in filtered_modules.values(): + if not module: + continue + for _, klass in inspect.getmembers(module, inspect.isclass): + if inspect.isclass(klass) \ + and issubclass(klass, TraitBase) \ + and str(klass.id).startswith(trait_id): + trait_candidates.add(klass) + return trait_candidates + + @classmethod + @lru_cache(maxsize=64) + def _get_trait_class( + cls, trait_id: str) -> Union[Type[TraitBase], None]: + """Get the trait class with corresponding to given ID. + + This method will search for the trait class in all the modules except + the blacklisted modules. There is some issue in Pydantic where + ``issubclass`` is not working properly so we are excluding explicitly + modules with offending classes. This list can be updated as needed to + speed up the search. + + Args: + trait_id (str): Trait ID. + + Returns: + Type[TraitBase]: Trait class. + + Raises: + LooseMatchingTraitError: If the trait is found with a loose + matching criteria. This exception will include the trait + class that was found and the expected trait ID. Additional + downstream logic must decide how to handle this error. + + """ + version = cls._get_version_from_id(trait_id) + + trait_candidates = cls._get_possible_trait_classes_from_modules( + trait_id + ) + + for trait_class in trait_candidates: + if trait_class.id == trait_id: + # we found direct match + return trait_class + + # if we didn't find direct match, we will search for the highest + # version of the trait. + if not version: + # sourcery skip: use-named-expression + trait_versions = [ + trait_class for trait_class in trait_candidates + if re.match( + rf"{trait_id}.v(\d+)$", str(trait_class.id)) + ] + if trait_versions: + def _get_version_by_id(trait_klass: Type[TraitBase]) -> int: + match = re.search(r"v(\d+)$", str(trait_klass.id)) + return int(match[1]) if match else 0 + + error = LooseMatchingTraitError( + "Found trait that might match.") + error.found_trait = max( + trait_versions, key=_get_version_by_id) + error.expected_id = trait_id + raise error + + return None + + @classmethod + def get_trait_class_by_trait_id(cls, trait_id: str) -> type[TraitBase]: + """Get the trait class for the given trait ID. + + Args: + trait_id (str): Trait ID. + + Returns: + type[TraitBase]: Trait class. + + Raises: + IncompatibleTraitVersionError: If the trait version is incompatible + with the current version of the trait. + UpgradableTraitError: If the trait can upgrade existing data + meant for older versions of the trait. + ValueError: If the trait model with the given ID is not found. + + """ + trait_class = None + try: + trait_class = cls._get_trait_class(trait_id=trait_id) + except LooseMatchingTraitError as e: + requested_version = _get_version_from_id(trait_id) + found_version = _get_version_from_id(e.found_trait.id) + + if not requested_version: + trait_class = e.found_trait + + else: + if requested_version > found_version: + error_msg = ( + f"Requested trait version {requested_version} is " + f"higher than the found trait version {found_version}." + ) + raise IncompatibleTraitVersionError(error_msg) from e + + if requested_version < found_version and hasattr( + e.found_trait, "upgrade"): + error_msg = ( + "Requested trait version " + f"{requested_version} is lower " + f"than the found trait version {found_version}." + ) + error = UpgradableTraitError(error_msg) + error.trait = e.found_trait + raise error from e + return trait_class + + @classmethod + def from_dict( + cls, + name: str, + representation_id: Optional[str]=None, + trait_data: Optional[dict] = None) -> Representation: + """Create a representation from a dictionary. + + Args: + name (str): Representation name. + representation_id (str, optional): Representation ID. + trait_data (dict): Representation data. Dictionary with keys + as trait ids and values as trait data. Example:: + + { + "ayon.2d.PixelBased.v1": { + "display_window_width": 1920, + "display_window_height": 1080 + }, + "ayon.2d.Planar.v1": { + "channels": 3 + } + } + + Returns: + Representation: Representation instance. + + """ + traits = [] + for trait_id, value in trait_data.items(): + if not isinstance(value, dict): + msg = ( + f"Invalid trait data for trait ID {trait_id}. " + "Trait data must be a dictionary." + ) + raise TypeError(msg) + + try: + trait_class = cls.get_trait_class_by_trait_id(trait_id) + except UpgradableTraitError as e: + # we found newer version of trait, we will upgrade the data + if hasattr(e.trait, "upgrade"): + traits.append(e.trait.upgrade(value)) + else: + msg = ( + f"Newer version of trait {e.trait.id} found " + f"for requested {trait_id} but without " + "upgrade method." + ) + raise IncompatibleTraitVersionError(msg) from e + else: + if not trait_class: + error_msg = f"Trait model with ID {trait_id} not found." + raise ValueError(error_msg) + + traits.append(trait_class(**value)) + + return cls( + name=name, representation_id=representation_id, traits=traits) + + + +class IncompatibleTraitVersionError(Exception): + """Incompatible trait version exception. + + This exception is raised when the trait version is incompatible with the + current version of the trait. + """ + + +class UpgradableTraitError(Exception): + """Upgradable trait version exception. + + This exception is raised when the trait can upgrade existing data + meant for older versions of the trait. It must implement `upgrade` + method that will take old trait data as argument to handle the upgrade. + """ + + trait: TraitBase + old_data: dict + +class LooseMatchingTraitError(Exception): + """Loose matching trait exception. + + This exception is raised when the trait is found with a loose matching + criteria. + """ + + found_trait: TraitBase + expected_id: str + +class TraitValidationError(Exception): + """Trait validation error exception. + + This exception is raised when the trait validation fails. + """ diff --git a/pyproject.toml b/pyproject.toml index 641faf2536..fdaec51a58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -106,7 +106,7 @@ exclude = [ [tool.ruff.lint.per-file-ignores] "client/ayon_core/lib/__init__.py" = ["E402"] -"tests/*.py" = ["S101"] +"tests/*.py" = ["S101", "PLR2004"] # allow asserts and magical values [tool.ruff.format] # Like Black, use double quotes for strings. diff --git a/tests/client/ayon_core/pipeline/traits/lib/__init__.py b/tests/client/ayon_core/pipeline/traits/lib/__init__.py new file mode 100644 index 0000000000..d7ea7ae0ad --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/lib/__init__.py @@ -0,0 +1,25 @@ +"""Metadata traits.""" +from typing import ClassVar + +from ayon_core.pipeline.traits import TraitBase + + +class NewTestTrait(TraitBase): + """New Test trait model. + + This model represents a tagged trait. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + """ + + name: ClassVar[str] = "New Test Trait" + description: ClassVar[str] = ( + "This test trait is used for testing updating." + ) + id: ClassVar[str] = "ayon.test.NewTestTrait.v999" + + +__all__ = ["NewTestTrait"] diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index fc38e8fb56..8a48d6eef8 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -14,6 +14,7 @@ from ayon_core.pipeline.traits import ( Representation, TraitBase, ) +from pipeline.traits import Overscan REPRESENTATION_DATA = { FileLocation.id: { @@ -32,6 +33,15 @@ REPRESENTATION_DATA = { }, } +class UpgradedImage(Image): + """Upgraded image class.""" + id = "ayon.2d.Image.v2" + + @classmethod + def upgrade(cls, data: dict) -> UpgradedImage: # noqa: ARG003 + """Upgrade the trait.""" + return cls() + class InvalidTrait: """Invalid trait class.""" foo = "bar" @@ -62,6 +72,8 @@ def test_representation_errors(representation: Representation) -> None: def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" + assert representation.get_trait_by_id("ayon.2d.PixelBased").version == 1 + assert len(representation) == len(REPRESENTATION_DATA) assert representation.get_trait_by_id(FileLocation.id) assert representation.get_trait_by_id(Image.id) @@ -152,6 +164,7 @@ def test_trait_removing(representation: Representation) -> None: representation.remove_trait(Image) + def test_getting_traits_data(representation: Representation) -> None: """Test getting a batch of traits.""" result = representation.get_traits_by_ids( @@ -218,3 +231,80 @@ def test_bundles() -> None: assert sub_representation.get_trait(trait=MimeType).mime_type in [ "image/jpeg", "image/tiff" ] + +def test_get_version_from_id() -> None: + """Test getting version from trait ID.""" + assert Image().version == 1 + + class TestOverscan(Overscan): + id = "ayon.2d.Overscan.v2" + + assert TestOverscan( + left=0, + right=0, + top=0, + bottom=0 + ).version == 2 + + class TestMimeType(MimeType): + id = "ayon.content.MimeType" + + assert TestMimeType(mime_type="foo/bar").version is None + + +def test_from_dict() -> None: + """Test creating representation from dictionary.""" + traits_data = { + "ayon.content.FileLocation.v1": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + "ayon.2d.Image.v1": {}, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + + assert len(representation) == 2 + assert representation.get_trait_by_id("ayon.content.FileLocation.v1") + assert representation.get_trait_by_id("ayon.2d.Image.v1") + + traits_data = { + "ayon.content.FileLocation.v999": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + } + + with pytest.raises(ValueError, match="Trait model with ID .* not found."): + representation = Representation.from_dict( + "test", trait_data=traits_data) + + traits_data = { + "ayon.content.FileLocation": { + "file_path": "/path/to/file", + "file_size": 1024, + "file_hash": None, + }, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + + assert len(representation) == 1 + assert representation.get_trait_by_id("ayon.content.FileLocation.v1") + + # this won't work right now because we would need to somewhat mock + # the import + """ + from .lib import NewTestTrait + + traits_data = { + "ayon.test.NewTestTrait.v1": {}, + } + + representation = Representation.from_dict( + "test", trait_data=traits_data) + """ From 282edd96954b51e5d2a65b5f6989f26855a05d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Thu, 31 Oct 2024 18:36:15 +0100 Subject: [PATCH 026/626] Update client/ayon_core/pipeline/traits/time.py Co-authored-by: Roy Nieterau --- client/ayon_core/pipeline/traits/time.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 9dec1ac320..840462faeb 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -23,6 +23,7 @@ class GapPolicy(Enum): hold = auto() black = auto() + class Clip(TraitBase): """Clip trait model. From f988294e2f7233f18a92ef736c68005e1461a489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 4 Nov 2024 16:09:10 +0100 Subject: [PATCH 027/626] :wrench: wip on the integrator --- .../plugins/publish/integrate_traits.py | 354 +++++++++++++++++- 1 file changed, 351 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index b607e527b2..44dd7e8e06 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -1,13 +1,93 @@ """Integrate representations with traits.""" -import logging +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, List import pyblish.api +from ayon_api import ( + get_attributes_for_type, + get_product_by_name, + # get_representations, + get_version_by_name, +) +from ayon_api.operations import ( + OperationsSession, + new_product_entity, + # new_representation_entity, + new_version_entity, +) from ayon_core.pipeline.publish import ( get_publish_template_name, ) from ayon_core.pipeline.traits import Persistent, Representation +if TYPE_CHECKING: + import logging + + from pipeline import Anatomy + + +def get_instance_families(instance: pyblish.api.Instance) -> List[str]: + """Get all families of the instance. + + Todo: + Move to the library. + + Args: + instance (pyblish.api.Instance): Instance to get families from. + + Returns: + List[str]: List of families. + + """ + family = instance.data.get("family") + families = [] + if family: + families.append(family) + + for _family in (instance.data.get("families") or []): + if _family not in families: + families.append(_family) + + return families + + +def get_changed_attributes( + old_entity: dict, new_entity: dict) -> (dict[str, Any]): + """Prepare changes for entity update. + + Todo: + Move to the library. + + Args: + old_entity (dict[str, Any]): Existing entity. + new_entity (dict[str, Any]): New entity. + + Returns: + dict[str, Any]: Changes that have new entity. + + """ + changes = {} + for key in set(new_entity.keys()): + if key == "attrib": + continue + + if key in new_entity and new_entity[key] != old_entity.get(key): + changes[key] = new_entity[key] + continue + + attrib_changes = {} + if "attrib" in new_entity: + for key, value in new_entity["attrib"].items(): + if value != old_entity["attrib"].get(key): + attrib_changes[key] = value + if attrib_changes: + changes["attrib"] = attrib_changes + return changes + + + class IntegrateTraits(pyblish.api.InstancePlugin): """Integrate representations with traits.""" @@ -55,8 +135,21 @@ class IntegrateTraits(pyblish.api.InstancePlugin): # template_name = self.get_template_name(instance) # 4) initialize OperationsSession() - # for now we'll skip this step right now as there is some - # old representation style code that needs to be updated.z + op_session = OperationsSession() + + # 5) Prepare product + product_entity = self.prepare_product(instance, op_session) + + # 6) Prepare version + version_entity = self.prepare_version( + instance, op_session, product_entity + ) + instance.data["versionEntity"] = version_entity + + # 7) Get transfers from representations + # 8) Transfer files + # 9) Commit the session to AYON + # 10) Finalize represetations - add integrated path Trait etc. @staticmethod def filter_lifecycle( @@ -105,3 +198,258 @@ class IntegrateTraits(pyblish.api.InstancePlugin): project_settings=context.data["project_settings"], logger=self.log ) + + def prepare_product( + self, + instance: pyblish.api.Instance, + op_session: OperationsSession) -> dict: + """Prepare product for integration. + + Args: + instance (pyblish.api.Instance): Instance to process. + op_session (OperationsSession): Operations session. + + Returns: + dict: Product entity. + + """ + project_name = instance.context.data["projectName"] + folder_entity = instance.data["folderEntity"] + product_name = instance.data["productName"] + product_type = instance.data["productType"] + self.log.debug("Product: %s", product_name) + + # Get existing product if it exists + existing_product_entity = get_product_by_name( + project_name, product_name, folder_entity["id"] + ) + + # Define product data + data = { + "families": get_instance_families(instance) + } + attributes = {} + + product_group = instance.data.get("productGroup") + if product_group: + attributes["productGroup"] = product_group + elif existing_product_entity: + # Preserve previous product group if new version does not set it + product_group = existing_product_entity.get("attrib", {}).get( + "productGroup" + ) + if product_group is not None: + attributes["productGroup"] = product_group + + product_id = existing_product_entity["id"] if existing_product_entity else None # noqa: E501 + product_entity = new_product_entity( + product_name, + product_type, + folder_entity["id"], + data=data, + attribs=attributes, + entity_id=product_id + ) + + if existing_product_entity is None: + # Create a new product + self.log.info( + "Product '%s' not found, creating ...", + product_name + ) + op_session.create_entity( + project_name, "product", product_entity + ) + + else: + # Update existing product data with new data and set in database. + # We also change the found product in-place so we don't need to + # re-query the product afterward + update_data = get_changed_attributes( + existing_product_entity, product_entity + ) + op_session.update_entity( + project_name, + "product", + product_entity["id"], + update_data + ) + + self.log.debug("Prepared product: %s", product_name) + return product_entity + + def prepare_version( + self, + instance: pyblish.api.Instance, + op_session: OperationsSession, + product_entity: dict) -> dict: + """Prepare version for integration. + + Args: + instance (pyblish.api.Instance): Instance to process. + op_session (OperationsSession): Operations session. + product_entity (dict): Product entity. + + Returns: + dict: Version entity. + + """ + project_name = instance.context.data["projectName"] + version_number = instance.data["version"] + task_entity = instance.data.get("taskEntity") + task_id = task_entity["id"] if task_entity else None + existing_version = get_version_by_name( + project_name, + version_number, + product_entity["id"] + ) + version_id = existing_version["id"] if existing_version else None + all_version_data = self.get_version_data_from_instance(instance) + version_data = {} + version_attributes = {} + attr_defs = self._get_attributes_for_type(instance.context, "version") + for key, value in all_version_data.items(): + if key in attr_defs: + version_attributes[key] = value + else: + version_data[key] = value + + version_entity = new_version_entity( + version_number, + product_entity["id"], + task_id=task_id, + status=instance.data.get("status"), + data=version_data, + attribs=version_attributes, + entity_id=version_id, + ) + + if existing_version: + self.log.debug("Updating existing version ...") + update_data = get_changed_attributes( + existing_version, version_entity) + op_session.update_entity( + project_name, + "version", + version_entity["id"], + update_data + ) + else: + self.log.debug("Creating new version ...") + op_session.create_entity( + project_name, "version", version_entity + ) + + self.log.debug( + "Prepared version: v%s", + "{:03d}".format(version_entity["version"]) + ) + + return version_entity + + def get_version_data_from_instance( + self, instance: pyblish.api.Instance) -> dict: + """Get version data from the Instance. + + Args: + instance (pyblish.api.Instance): the current instance + being published. + + Returns: + dict: the required information for ``version["data"]`` + + """ + context = instance.context + + # create relative source path for DB + if "source" in instance.data: + source = instance.data["source"] + else: + source = context.data["currentFile"] + anatomy = instance.context.data["anatomy"] + source = self.get_rootless_path(anatomy, source) + self.log.debug("Source: %s", source) + + version_data = { + "families": get_instance_families(instance), + "time": context.data["time"], + "author": context.data["user"], + "source": source, + "comment": instance.data["comment"], + "machine": context.data.get("machine"), + "fps": instance.data.get("fps", context.data.get("fps")) + } + + intent_value = context.data.get("intent") + if intent_value and isinstance(intent_value, dict): + intent_value = intent_value.get("value") + + if intent_value: + version_data["intent"] = intent_value + + # Include optional data if present in + optionals = [ + "frameStart", "frameEnd", "step", + "handleEnd", "handleStart", "sourceHashes" + ] + for key in optionals: + if key in instance.data: + version_data[key] = instance.data[key] + + # Include instance.data[versionData] directly + version_data_instance = instance.data.get("versionData") + if version_data_instance: + version_data.update(version_data_instance) + + return version_data + + def get_rootless_path(self, anatomy: Anatomy, path: str) -> str: + r"""Get rootless variant of the path. + + Returns, if possible, path without absolute portion from the root + (e.g. 'c:\' or '/opt/..'). This is basically wrapper for the + meth:`Anatomy.find_root_template_from_path` method that displays + warning if root path is not found. + + This information is platform dependent and shouldn't be captured. + For example:: + + 'c:/projects/MyProject1/Assets/publish...' + will be transformed to: + '{root}/MyProject1/Assets...' + + Args: + anatomy (Anatomy): Project anatomy. + path (str): Absolute path. + + Returns: + str: Path where root path is replaced by formatting string. + + """ + success, rootless_path = anatomy.find_root_template_from_path(path) + if success: + path = rootless_path + else: + self.log.warning(( + 'Could not find root path for remapping "%s".' + " This may cause issues on farm." + ),path) + return path + + def get_attributes_by_type( + self, context: pyblish.api.Context) -> dict: + """Gets AYON attributes from the given context.""" + attributes = context.data.get("ayonAttributes") + if attributes is None: + attributes = { + key: get_attributes_for_type(key) + for key in ( + "project", + "folder", + "product", + "version", + "representation", + ) + } + context.data["ayonAttributes"] = attributes + return attributes From 8698c815d10053b9b1f004bfea4c95f0847a0097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 4 Nov 2024 16:14:02 +0100 Subject: [PATCH 028/626] :burn: remove unnecessary init files --- client/ayon_core/plugins/__init__.py | 1 - client/ayon_core/plugins/publish/__init__.py | 1 - 2 files changed, 2 deletions(-) delete mode 100644 client/ayon_core/plugins/__init__.py delete mode 100644 client/ayon_core/plugins/publish/__init__.py diff --git a/client/ayon_core/plugins/__init__.py b/client/ayon_core/plugins/__init__.py deleted file mode 100644 index 376c7e5a4d..0000000000 --- a/client/ayon_core/plugins/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""AYON Core plugins.""" diff --git a/client/ayon_core/plugins/publish/__init__.py b/client/ayon_core/plugins/publish/__init__.py deleted file mode 100644 index 86b6c901bc..0000000000 --- a/client/ayon_core/plugins/publish/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""AYON Core publish plugins.""" From ba49b659209a352780df2e492441b007ae6b66b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 4 Nov 2024 16:19:31 +0100 Subject: [PATCH 029/626] :fire: remove integrator from this branch --- .../plugins/publish/integrate_traits.py | 107 ------------ .../ayon_core/plugins/publish/__init__.py | 1 - .../plugins/publish/test_integrate_traits.py | 164 ------------------ 3 files changed, 272 deletions(-) delete mode 100644 client/ayon_core/plugins/publish/integrate_traits.py delete mode 100644 tests/client/ayon_core/plugins/publish/__init__.py delete mode 100644 tests/client/ayon_core/plugins/publish/test_integrate_traits.py diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py deleted file mode 100644 index b607e527b2..0000000000 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ /dev/null @@ -1,107 +0,0 @@ -"""Integrate representations with traits.""" -import logging - -import pyblish.api - -from ayon_core.pipeline.publish import ( - get_publish_template_name, -) -from ayon_core.pipeline.traits import Persistent, Representation - - -class IntegrateTraits(pyblish.api.InstancePlugin): - """Integrate representations with traits.""" - - label = "Integrate Asset" - order = pyblish.api.IntegratorOrder - log: logging.Logger - - def process(self, instance: pyblish.api.Instance) -> None: - """Integrate representations with traits. - - Args: - instance (pyblish.api.Instance): Instance to process. - - """ - # 1) skip farm and integrate == False - - if not instance.data.get("integrate"): - self.log.debug("Instance is marked to skip integrating. Skipping") - return - - if instance.data.get("farm"): - self.log.debug( - "Instance is marked to be processed on farm. Skipping") - return - - # TODO (antirotor): Find better name for the key # noqa: FIX002, TD003 - if not instance.data.get("representations_with_traits"): - self.log.debug( - "Instance has no representations with traits. Skipping") - return - - # 2) filter representations based on LifeCycle traits - instance.data["representations_with_traits"] = self.filter_lifecycle( - instance.data["representations_with_traits"] - ) - - representations = instance.data["representations_with_traits"] - if not representations: - self.log.debug( - "Instance has no persistent representations. Skipping") - return - - # 3) get anatomy template name - # template_name = self.get_template_name(instance) - - # 4) initialize OperationsSession() - # for now we'll skip this step right now as there is some - # old representation style code that needs to be updated.z - - @staticmethod - def filter_lifecycle( - representations: list[Representation]) -> list[Representation]: - """Filter representations based on LifeCycle traits. - - Args: - representations (list): List of representations. - - Returns: - list: Filtered representations. - - """ - return [ - representation - for representation in representations - if representation.contains_trait(Persistent) - ] - - def get_template_name(self, instance: pyblish.api.Instance) -> str: - """Return anatomy template name to use for integration. - - Args: - instance (pyblish.api.Instance): Instance to process. - - Returns: - str: Anatomy template name - - """ - # Anatomy data is pre-filled by Collectors - context = instance.context - project_name = context.data["projectName"] - - # Task can be optional in anatomy data - host_name = context.data["hostName"] - anatomy_data = instance.data["anatomyData"] - product_type = instance.data["productType"] - task_info = anatomy_data.get("task") or {} - - return get_publish_template_name( - project_name, - host_name, - product_type, - task_name=task_info.get("name"), - task_type=task_info.get("type"), - project_settings=context.data["project_settings"], - logger=self.log - ) diff --git a/tests/client/ayon_core/plugins/publish/__init__.py b/tests/client/ayon_core/plugins/publish/__init__.py deleted file mode 100644 index 58e6112045..0000000000 --- a/tests/client/ayon_core/plugins/publish/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Test for pyblish plugins.""" diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py deleted file mode 100644 index 1262266943..0000000000 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ /dev/null @@ -1,164 +0,0 @@ -"""Tests for the representation traits.""" -from __future__ import annotations - -import base64 -from pathlib import Path - -import pyblish.api -import pytest -from ayon_core.pipeline.traits import ( - FileLocation, - Image, - MimeType, - Persistent, - PixelBased, - Representation, - Sequence, - Transient, -) - -# Tagged, -# TemplatePath, -from ayon_core.plugins.publish.integrate_traits import IntegrateTraits -from ayon_core.settings import get_project_settings - -PNG_FILE_B64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==" # noqa: E501 -SEQUENCE_LENGTH = 10 - -@pytest.fixture(scope="session") -def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: - """Return a temporary image file.""" - filename = tmp_path_factory.mktemp("single") / "img.png" - with open(filename, "wb") as f: - f.write(base64.b64decode(PNG_FILE_B64)) - return filename - -@pytest.fixture(scope="session") -def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: - """Return a sequence of temporary image files.""" - files = [] - for i in range(SEQUENCE_LENGTH): - filename = tmp_path_factory.mktemp("sequence") / f"img.{i:04d}.png" - with open(filename, "wb") as f: - f.write(base64.b64decode(PNG_FILE_B64)) - files.append(filename) - return files - -@pytest.fixture() -def mock_context( - project: object, - single_file: Path, - sequence_files: list[Path]) -> pyblish.api.Context: - """Return a mock instance. - - This is mocking pyblish context for testing. It is using real AYON project - thanks to the ``project`` fixture. - - This returns following data:: - - project_name: str - project_code: str - project_root_folders: dict[str, str] - folder: IdNamePair - task: IdNamePair - product: IdNamePair - version: IdNamePair - representations: List[IdNamePair] - links: List[str] - - Args: - project (object): The project info. It is `ProjectInfo` object - returned by pytest fixture. - single_file (Path): The path to a single image file. - sequence_files (list[Path]): The paths to a sequence of image files. - - """ - context = pyblish.api.Context() - context.data["projectName"] = project.project_name - context.data["hostName"] = "test_host" - context.data["project_settings"] = get_project_settings( - project.project_name) - - instance = context.create_instance("mock_instance") - instance.data["anatomyData"] = { - "project": project.project_name, - "task": { - "name": project.task.name, - "type": "test" # pytest-ayon doesn't return the task type yet - } - } - instance.data["productType"] = "test_product" - - instance.data["integrate"] = True - instance.data["farm"] = False - - instance.data["representations_with_traits"] = [ - Representation(name="test_single", traits=[ - Persistent(), - FileLocation( - file_path=single_file, - file_size=len(base64.b64decode(PNG_FILE_B64))), - Image(), - MimeType(mime_type="image/png"), - ]), - Representation(name="test_sequence", traits=[ - Persistent(), - Sequence( - frame_start=1, - frame_end=SEQUENCE_LENGTH, - frame_padding=4, - frame_regex=r"^img\.(\d{4})\.png$", - ), - FileLocation( - file_path=sequence_files[0], - file_size=len(base64.b64decode(PNG_FILE_B64))), - Image(), - PixelBased( - display_window_width=1920, - display_window_height=1080, - pixel_aspect_ratio=1.0), - MimeType(mime_type="image/png"), - ]), - ] - - return context - -def test_get_template_name(mock_context: pyblish.api.Context) -> None: - """Test get_template_name. - - TODO (antirotor): this will always return "default" probably, if - there are no studio overrides. To test this properly, we need - to set up the studio overrides in the test environment. - - """ - integrator = IntegrateTraits() - template_name = integrator.get_template_name( - mock_context[0]) - - assert template_name == "default" - -def test_filter_lifecycle() -> None: - """Test filter_lifecycle.""" - integrator = IntegrateTraits() - persistent_representation = Representation( - name="test", - traits=[ - Persistent(), - FileLocation( - file_path=Path("test"), - file_size=1234), - Image(), - MimeType(mime_type="image/png"), - ]) - transient_representation = Representation( - name="test", - traits=[ - Transient(), - Image(), - MimeType(mime_type="image/png"), - ]) - filtered = integrator.filter_lifecycle( - [persistent_representation, transient_representation]) - - assert len(filtered) == 1 - assert filtered[0] == persistent_representation From b0bd488e4cede9996c81910bcbf0b28616832d74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 4 Nov 2024 19:22:02 +0100 Subject: [PATCH 030/626] :recycle: add traits and docstrings sync traits declared in #909 --- client/ayon_core/pipeline/traits/__init__.py | 32 ++++++- client/ayon_core/pipeline/traits/color.py | 31 ++++++ client/ayon_core/pipeline/traits/content.py | 95 +++++++++++++++++-- .../ayon_core/pipeline/traits/cryptography.py | 42 ++++++++ client/ayon_core/pipeline/traits/lifecycle.py | 31 +++++- client/ayon_core/pipeline/traits/meta.py | 13 ++- .../pipeline/traits/three_dimensional.py | 60 +++++++++++- client/ayon_core/pipeline/traits/time.py | 72 +++++++++++--- .../pipeline/traits/two_dimensional.py | 21 ++-- 9 files changed, 354 insertions(+), 43 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/color.py create mode 100644 client/ayon_core/pipeline/traits/cryptography.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index bc9b1d69de..a12c55e41a 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -1,15 +1,26 @@ """Trait classes for the pipeline.""" +from .color import ColorManaged from .content import ( Bundle, Compressed, FileLocation, + Fragment, + LocatableContent, MimeType, RootlessLocation, ) +from .cryptography import DigitallySigned, GPGSigned from .lifecycle import Persistent, Transient from .meta import Tagged, TemplatePath -from .three_dimensional import Spatial -from .time import Clip, GapPolicy, Sequence, SMPTETimecode +from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial +from .time import ( + FrameRanged, + GapPolicy, + Handles, + Sequence, + SMPTETimecode, + Static, +) from .trait import Representation, TraitBase from .two_dimensional import ( UDIM, @@ -31,6 +42,15 @@ __all__ = [ "FileLocation", "MimeType", "RootlessLocation", + "Fragment", + "LocatableContent", + + # color + "ColorManaged", + + # cryptography + "DigitallySigned", + "GPGSigned", # life cycle "Persistent", @@ -50,10 +70,16 @@ __all__ = [ "UDIM", # three-dimensional + "Geometry", + "IESProfile", + "Lighting", + "Shader", "Spatial", # time - "Clip", + "FrameRanged", + "Static", + "Handles", "GapPolicy", "Sequence", "SMPTETimecode", diff --git a/client/ayon_core/pipeline/traits/color.py b/client/ayon_core/pipeline/traits/color.py new file mode 100644 index 0000000000..9d1fcd913c --- /dev/null +++ b/client/ayon_core/pipeline/traits/color.py @@ -0,0 +1,31 @@ +"""Color management related traits.""" +from __future__ import annotations + +from typing import ClassVar, Optional + +from pydantic import Field + +from .trait import TraitBase + + +class ColorManaged(TraitBase): + """Color managed trait. + + Holds color management information. Can be used with Image related + traits to define color space and config. + + Sync with OpenAssetIO MediaCreation Traits. + + Attributes: + color_space (str): An OCIO colorspace name available + in the "current" OCIO context. + config (str): An OCIO config name defining color space. + """ + id: ClassVar[str] = "ayon.color.ColorManaged.v1" + name: ClassVar[str] = "ColorManaged" + description: ClassVar[str] = "Color Managed trait." + color_space: str = Field( + ..., + description="Color space." + ) + config: Optional[str] = Field(None, description="Color config.") diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 480d1657f5..3f08cc2214 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -13,13 +13,17 @@ from .trait import Representation, TraitBase class MimeType(TraitBase): """MimeType trait model. - This model represents a mime type trait. + This model represents a mime type trait. For example, image/jpeg. + It is used to describe the type of content in a representation regardless + of the file extension. + + For more information, see RFC 2046 and RFC 4288 (and related RFCs). Attributes: name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - mime_type (str): Mime type. + mime_type (str): Mime type like image/jpeg. """ @@ -28,10 +32,35 @@ class MimeType(TraitBase): id: ClassVar[str] = "ayon.content.MimeType.v1" mime_type: str = Field(..., title="Mime Type") -class FileLocation(TraitBase): +class LocatableContent(TraitBase): + """LocatableContent trait model. + + This model represents a locatable content trait. Locatable content + is content that has a location. It doesn't have to be a file - it could + be a URL or some other location. + + Sync with OpenAssetIO MediaCreation Traits. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + location (str): Location. + + """ + + name: ClassVar[str] = "LocatableContent" + description: ClassVar[str] = "LocatableContent Trait Model" + id: ClassVar[str] = "ayon.content.LocatableContent.v1" + location: str = Field(..., title="Location") + is_templated: Optional[bool] = Field(None, title="Is Templated") + +class FileLocation(LocatableContent): """FileLocation trait model. - This model represents a file location trait. + This model represents a file path. It is a specialization of the + LocatableContent trait. It is adding optional file size and file hash + for easy access to file information. Attributes: name (str): Trait name. @@ -46,14 +75,22 @@ class FileLocation(TraitBase): name: ClassVar[str] = "FileLocation" description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" - file_path: Path = Field(..., title="File Path") - file_size: int = Field(..., title="File Size") + file_path: Path = Field(..., title="File Path", alias="location") + file_size: int = Field(None, title="File Size") file_hash: Optional[str] = Field(None, title="File Hash") class RootlessLocation(TraitBase): """RootlessLocation trait model. - This model represents a rootless location trait. + RootlessLocation trait is a trait that represents a file path that is + without specific root. To obtain absolute path, the root needs to be + resolved by AYON. Rootless path can be used on multiple platforms. + + Example:: + + RootlessLocation( + rootless_path="{root[work]}/project/asset/asset.jpg" + ) Attributes: name (str): Trait name. @@ -72,7 +109,12 @@ class RootlessLocation(TraitBase): class Compressed(TraitBase): """Compressed trait model. - This model represents a compressed trait. + This trait can hold information about compressed content. What type + of compression is used. + + Example:: + + Compressed("gzip") Attributes: name (str): Trait name. @@ -96,6 +138,29 @@ class Bundle(TraitBase): a collection of representations that are part of a single entity. + Example:: + + Bundle( + items=[ + [ + Representation( + traits=[ + MimeType(mime_type="image/jpeg"), + FileLocation(file_path="/path/to/file.jpg") + ] + ) + ], + [ + Representation( + traits=[ + MimeType(mime_type="image/png"), + FileLocation(file_path="/path/to/file.png") + ] + ) + ] + ] + ) + Attributes: name (str): Trait name. description (str): Trait description. @@ -119,7 +184,19 @@ class Fragment(TraitBase): """Fragment trait model. This model represents a fragment trait. A fragment is a part of - a larger entity that is represented by a representation. + a larger entity that is represented by another representation. + + Example:: + + main_representation = Representation(name="parent", + traits=[], + ) + fragment_representation = Representation( + name="fragment", + traits=[ + Fragment(parent=main_representation.id), + ] + ) Attributes: name (str): Trait name. diff --git a/client/ayon_core/pipeline/traits/cryptography.py b/client/ayon_core/pipeline/traits/cryptography.py new file mode 100644 index 0000000000..4fa9e64c2f --- /dev/null +++ b/client/ayon_core/pipeline/traits/cryptography.py @@ -0,0 +1,42 @@ +"""Cryptography traits.""" +from __future__ import annotations + +from typing import ClassVar, Optional + +from pydantic import Field + +from .trait import TraitBase + + +class DigitallySigned(TraitBase): + """Digitally signed trait. + + This type trait means that the data is digitally signed. + + Attributes: + signature (str): Digital signature. + """ + id: ClassVar[str] = "ayon.cryptography.DigitallySigned.v1" + name: ClassVar[str] = "DigitallySigned" + description: ClassVar[str] = "Digitally signed trait." + + +class GPGSigned(DigitallySigned): + """GPG signed trait. + + This trait holds GPG signed data. + + Attributes: + signature (str): GPG signature. + """ + id: ClassVar[str] = "ayon.cryptography.GPGSigned.v1" + name: ClassVar[str] = "GPGSigned" + description: ClassVar[str] = "GPG signed trait." + signed_data: str = Field( + ..., + description="Signed data." + ) + clear_text: Optional[str] = Field( + None, + description="Clear text." + ) diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index 2877a4d396..fed620da9b 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -1,30 +1,44 @@ """Lifecycle traits.""" from typing import ClassVar +from . import Representation from .trait import TraitBase class Transient(TraitBase): """Transient trait model. - This model represents a transient trait. + Transient trait marks representation as transient. Such representations + are not persisted in the system. Attributes: name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - tags (List[str]): Tags. """ name: ClassVar[str] = "Transient" description: ClassVar[str] = "Transient Trait Model" id: ClassVar[str] = "ayon.lifecycle.Transient.v1" + def validate(self, representation: Representation) -> bool: + """Validate representation is not Persistent. + + Args: + representation (Representation): Representation model. + + Returns: + bool: True if representation is valid, False otherwise. + """ + return not representation.contains_trait(Persistent) + class Persistent(TraitBase): """Persistent trait model. - This model represents a persistent trait. + Persistent trait is opposite to transient trait. It marks representation + as persistent. Such representations are persisted in the system (e.g. in + the database). Attributes: name (str): Trait name. @@ -35,3 +49,14 @@ class Persistent(TraitBase): name: ClassVar[str] = "Persistent" description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" + + def validate(self, representation: Representation) -> bool: + """Validate representation is not Transient. + + Args: + representation (Representation): Representation model. + + Returns: + bool: True if representation is valid, False otherwise. + """ + return not representation.contains_trait(Transient) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 36ad5e8b0f..745b065798 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -9,7 +9,11 @@ from .trait import TraitBase class Tagged(TraitBase): """Tagged trait model. - This model represents a tagged trait. + This trait can hold list of tags. + + Example:: + + Tagged(tags=["tag1", "tag2"]) Attributes: name (str): Trait name. @@ -28,12 +32,17 @@ class TemplatePath(TraitBase): """TemplatePath trait model. This model represents a template path with formatting data. + Template path can be Anatomy template and data is used to format it. + + Example:: + + TemplatePath(template="path/{key}/file", data={"key": "to"}) Attributes: name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - template_path (str): Template path. + template (str): Template path. data (dict[str]): Formatting data. """ diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py index 0638700ab7..eb27797ed2 100644 --- a/client/ayon_core/pipeline/traits/three_dimensional.py +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -1,4 +1,4 @@ -"""Two-dimensional image traits.""" +"""3D traits.""" from typing import ClassVar from pydantic import Field @@ -9,6 +9,17 @@ from .trait import TraitBase class Spatial(TraitBase): """Spatial trait model. + Trait describing spatial information. Up axis valid strings are + "Y", "Z", "X". Handedness valid strings are "left", "right". Meters per + unit is a float value. + + Example:: + + Spatial(up_axis="Y", handedness="right", meters_per_unit=1.0) + + Todo: + * Add value validation for up_axis and handedness. + Attributes: up_axis (str): Up axis. handedness (str): Handedness. @@ -21,3 +32,50 @@ class Spatial(TraitBase): up_axis: str = Field(..., title="Up axis") handedness: str = Field(..., title="Handedness") meters_per_unit: float = Field(..., title="Meters per unit") + + +class Geometry(TraitBase): + """Geometry type trait model. + + Type trait for geometry data. + + Sync with OpenAssetIO MediaCreation Traits. + """ + + id: ClassVar[str] = "ayon.3d.Geometry.v1" + name: ClassVar[str] = "Geometry" + description: ClassVar[str] = "Geometry trait model." + +class Shader(TraitBase): + """Shader trait model. + + Type trait for shader data. + + Sync with OpenAssetIO MediaCreation Traits. + """ + + id: ClassVar[str] = "ayon.3d.Shader.v1" + name: ClassVar[str] = "Shader" + description: ClassVar[str] = "Shader trait model." + +class Lighting(TraitBase): + """Lighting trait model. + + Type trait for lighting data. + + Sync with OpenAssetIO MediaCreation Traits. + """ + + id: ClassVar[str] = "ayon.3d.Lighting.v1" + name: ClassVar[str] = "Lighting" + description: ClassVar[str] = "Lighting trait model." + +class IESProfile(TraitBase): + """IES profile (IES-LM-64) type trait model. + + Sync with OpenAssetIO MediaCreation Traits. + """ + + id: ClassVar[str] = "ayon.3d.IESProfile.v1" + name: ClassVar[str] = "IESProfile" + description: ClassVar[str] = "IES profile trait model." diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 840462faeb..05bcb1602c 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -12,6 +12,8 @@ from .trait import TraitBase class GapPolicy(Enum): """Gap policy enumeration. + This type defines how to handle gaps in sequence. + Attributes: forbidden (int): Gaps are forbidden. missing (int): Gaps are interpreted as missing frames. @@ -23,11 +25,12 @@ class GapPolicy(Enum): hold = auto() black = auto() +class FrameRanged(TraitBase): + """Frame ranged trait model. -class Clip(TraitBase): - """Clip trait model. + Model representing a frame ranged trait. - Model representing a clip trait. + Sync with OpenAssetIO MediaCreation Traits. Attributes: name (str): Trait name. @@ -35,6 +38,37 @@ class Clip(TraitBase): id (str): id should be namespaced trait name with version frame_start (int): Frame start. frame_end (int): Frame end. + frame_in (int): Frame in. + frame_out (int): Frame out. + frames_per_second (int): Frames per second. + step (int): Step. + + """ + name: ClassVar[str] = "FrameRanged" + description: ClassVar[str] = "Frame Ranged Trait" + id: ClassVar[str] = "ayon.time.FrameRanged.v1" + frame_start: int = Field( + ..., title="Start Frame", alias="start_frame") + frame_end: int = Field( + ..., title="Frame Start", alias="end_frame") + frame_in: int = Field(..., title="In Frame", alias="in_frame") + frame_out: int = Field(..., title="Out Frame", alias="out_frame") + frames_per_second: int = Field( + ..., title="Frames Per Second", alias="fps") + step: Optional[int] = Field(1, title="Step") + + +class Handles(TraitBase): + """Handles trait model. + + Handles define the range of frames that are included or excluded + from the sequence. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + inclusive (bool): Handles are inclusive. frame_start_handle (int): Frame start handle. frame_end_handle (int): Frame end handle. @@ -42,22 +76,24 @@ class Clip(TraitBase): name: ClassVar[str] = "Clip" description: ClassVar[str] = "Clip Trait" id: ClassVar[str] = "ayon.time.Clip.v1" - frame_start: int = Field(..., title="Frame Start") - frame_end: int = Field(..., title="Frame End") - frame_start_handle: Optional[int] = Field(0, title="Frame Start Handle") - frame_end_handle: Optional[int] = Field(0, title="Frame End Handle") + inclusive: Optional[bool] = Field( + False, title="Handles are inclusive") # noqa: FBT003 + frame_start_handle: Optional[int] = Field( + 0, title="Frame Start Handle") + frame_end_handle: Optional[int] = Field( + 0, title="Frame End Handle") -class Sequence(Clip): +class Sequence(FrameRanged, Handles): """Sequence trait model. - This model represents a sequence trait. Based on the Clip trait, - adding handling for steps, gaps policy and frame padding. + This model represents a sequence trait. Based on the FrameRanged trait + and Handles, adding support for gaps policy, frame padding and frame + list specification. Regex is used to match frame numbers. Attributes: name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - step (int): Frame step. gaps_policy (GapPolicy): Gaps policy - how to handle gaps in sequence. frame_padding (int): Frame padding. @@ -70,7 +106,6 @@ class Sequence(Clip): name: ClassVar[str] = "Sequence" description: ClassVar[str] = "Sequence Trait Model" id: ClassVar[str] = "ayon.time.Sequence.v1" - step: Optional[int] = Field(1, title="Step") gaps_policy: GapPolicy = Field( GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") @@ -80,8 +115,19 @@ class Sequence(Clip): # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): - """Timecode trait model.""" + """SMPTE Timecode trait model.""" name: ClassVar[str] = "Timecode" description: ClassVar[str] = "SMPTE Timecode Trait" id: ClassVar[str] = "ayon.time.SMPTETimecode.v1" timecode: str = Field(..., title="SMPTE Timecode HH:MM:SS:FF") + + +class Static(TraitBase): + """Static time trait. + + Used to define static time (single frame). + + """ + name: ClassVar[str] = "Static" + description: ClassVar[str] = "Static Time Trait" + id: ClassVar[str] = "ayon.time.Static.v1" diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 69e129ec41..93d21a9bc3 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -9,7 +9,7 @@ from .trait import TraitBase class Image(TraitBase): """Image trait model. - This model represents an image trait. + Type trait model for image. Attributes: name (str): Trait name. @@ -26,7 +26,7 @@ class Image(TraitBase): class PixelBased(TraitBase): """PixelBased trait model. - This model represents a pixel based trait. + Pixel related trait for image data. Attributes: name (str): Trait name. @@ -51,9 +51,10 @@ class Planar(TraitBase): This model represents an Image with planar configuration. - TODO (antirotor): Is this really a planar configuration? As with - bitplanes and everything? If it serves as differentiator for - Deep images, should it be named differently? Like Raster? + Todo: + * (antirotor): Is this really a planar configuration? As with + bitplanes and everything? If it serves as differentiator for + Deep images, should it be named differently? Like Raster? Attributes: name (str): Trait name. @@ -72,29 +73,25 @@ class Planar(TraitBase): class Deep(TraitBase): """Deep trait model. - This model represents a deep image trait. + Type trait model for deep EXR images. Attributes: name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - deep_data_type (str): Deep data type. """ name: ClassVar[str] = "Deep" description: ClassVar[str] = "Deep Trait Model" id: ClassVar[str] = "ayon.2d.Deep.v1" - deep_data_type: str = Field(..., title="Deep Data Type") - - - class Overscan(TraitBase): """Overscan trait model. - This model represents an overscan (or underscan) trait. + This model represents an overscan (or underscan) trait. Defines the + extra pixels around the image. Attributes: name (str): Trait name. From fbeef7f7c2b95de01105dcf857ee07dc551cab42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 5 Nov 2024 09:50:49 +0100 Subject: [PATCH 031/626] :dog: run ruff action only on changed files --- .github/workflows/pr_linting.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pr_linting.yml b/.github/workflows/pr_linting.yml index 3d2431b69a..8daf16fad0 100644 --- a/.github/workflows/pr_linting.yml +++ b/.github/workflows/pr_linting.yml @@ -22,3 +22,5 @@ jobs: steps: - uses: actions/checkout@v4 - uses: chartboost/ruff-action@v1 + with: + changed-files: "true" From 9e7dac2ba5d00f3e0470781f648f2f262cab7e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 5 Nov 2024 13:46:49 +0100 Subject: [PATCH 032/626] :recycle: switch ruff to official GH action --- .github/workflows/pr_linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_linting.yml b/.github/workflows/pr_linting.yml index 8daf16fad0..896d5b7f4d 100644 --- a/.github/workflows/pr_linting.yml +++ b/.github/workflows/pr_linting.yml @@ -21,6 +21,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: chartboost/ruff-action@v1 + - uses: astral-sh/ruff-action@v1 with: changed-files: "true" From deae44dbc15c3449ff6405a8841744a72d12932d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 6 Nov 2024 15:44:42 +0100 Subject: [PATCH 033/626] :recycle: fix tests and trait version --- client/ayon_core/pipeline/traits/content.py | 7 +++-- client/ayon_core/pipeline/traits/lifecycle.py | 5 ++-- client/ayon_core/pipeline/traits/trait.py | 29 +++++++++---------- .../ayon_core/pipeline/traits/test_traits.py | 9 +++--- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 3f08cc2214..47a7e208bd 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -55,7 +55,7 @@ class LocatableContent(TraitBase): location: str = Field(..., title="Location") is_templated: Optional[bool] = Field(None, title="Is Templated") -class FileLocation(LocatableContent): +class FileLocation(TraitBase): """FileLocation trait model. This model represents a file path. It is a specialization of the @@ -75,10 +75,11 @@ class FileLocation(LocatableContent): name: ClassVar[str] = "FileLocation" description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" - file_path: Path = Field(..., title="File Path", alias="location") - file_size: int = Field(None, title="File Size") + file_path: Path = Field(..., title="File Path") + file_size: Optional[int] = Field(None, title="File Size") file_hash: Optional[str] = Field(None, title="File Hash") + class RootlessLocation(TraitBase): """RootlessLocation trait model. diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index fed620da9b..39fe04e3cb 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -1,7 +1,6 @@ """Lifecycle traits.""" from typing import ClassVar -from . import Representation from .trait import TraitBase @@ -21,7 +20,7 @@ class Transient(TraitBase): description: ClassVar[str] = "Transient Trait Model" id: ClassVar[str] = "ayon.lifecycle.Transient.v1" - def validate(self, representation: Representation) -> bool: + def validate(self, representation) -> bool: # noqa: ANN001 """Validate representation is not Persistent. Args: @@ -50,7 +49,7 @@ class Persistent(TraitBase): description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" - def validate(self, representation: Representation) -> bool: + def validate(self, representation) -> bool: # noqa: ANN001 """Validate representation is not Transient. Args: diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index b97ec08cc6..6c37f40a45 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -6,7 +6,7 @@ import re import sys import uuid from abc import ABC, abstractmethod -from functools import cached_property, lru_cache +from functools import lru_cache from typing import ClassVar, Optional, Type, Union import pydantic.alias_generators @@ -65,20 +65,6 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... - @property - @cached_property - def version(self) -> Union[int, None]: - # sourcery skip: use-named-expression - """Get trait version from ID. - - This assumes Trait ID ends with `.v{version}`. If not, it will - return None. - - """ - version_regex = r"v(\d+)$" - match = re.search(version_regex, self.id) - return int(match[1]) if match else None - def validate(self, representation: Representation) -> bool: """Validate the trait. @@ -95,6 +81,19 @@ class TraitBase(ABC, BaseModel): """ return True + @classmethod + def get_version(cls) -> Optional[int]: + # sourcery skip: use-named-expression + """Get trait version from ID. + + This assumes Trait ID ends with `.v{version}`. If not, it will + return None. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, str(cls.id)) + return int(match[1]) if match else None + class Representation: """Representation of products. diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 8a48d6eef8..43d8301e00 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -72,7 +72,8 @@ def test_representation_errors(representation: Representation) -> None: def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" - assert representation.get_trait_by_id("ayon.2d.PixelBased").version == 1 + assert representation.get_trait_by_id( + "ayon.2d.PixelBased").get_version() == 1 assert len(representation) == len(REPRESENTATION_DATA) assert representation.get_trait_by_id(FileLocation.id) @@ -234,7 +235,7 @@ def test_bundles() -> None: def test_get_version_from_id() -> None: """Test getting version from trait ID.""" - assert Image().version == 1 + assert Image().get_version() == 1 class TestOverscan(Overscan): id = "ayon.2d.Overscan.v2" @@ -244,12 +245,12 @@ def test_get_version_from_id() -> None: right=0, top=0, bottom=0 - ).version == 2 + ).get_version() == 2 class TestMimeType(MimeType): id = "ayon.content.MimeType" - assert TestMimeType(mime_type="foo/bar").version is None + assert TestMimeType(mime_type="foo/bar").get_version() is None def test_from_dict() -> None: From 4d31c5ee6ec77411400729c14c4d07808298cb5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 6 Nov 2024 17:38:35 +0100 Subject: [PATCH 034/626] :fire: remove FrameRanged field aliases --- client/ayon_core/pipeline/traits/time.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 05bcb1602c..751eef3fb5 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -30,7 +30,12 @@ class FrameRanged(TraitBase): Model representing a frame ranged trait. - Sync with OpenAssetIO MediaCreation Traits. + Sync with OpenAssetIO MediaCreation Traits. For compatibility with + OpenAssetIO, we'll need to handle different names of attributes: + + * frame_start -> start_frame + * frame_end -> end_frame + ... Attributes: name (str): Trait name. @@ -48,13 +53,13 @@ class FrameRanged(TraitBase): description: ClassVar[str] = "Frame Ranged Trait" id: ClassVar[str] = "ayon.time.FrameRanged.v1" frame_start: int = Field( - ..., title="Start Frame", alias="start_frame") + ..., title="Start Frame") frame_end: int = Field( - ..., title="Frame Start", alias="end_frame") - frame_in: int = Field(..., title="In Frame", alias="in_frame") - frame_out: int = Field(..., title="Out Frame", alias="out_frame") + ..., title="Frame Start") + frame_in: int = Field(..., title="In Frame") + frame_out: int = Field(..., title="Out Frame") frames_per_second: int = Field( - ..., title="Frames Per Second", alias="fps") + ..., title="Frames Per Second") step: Optional[int] = Field(1, title="Step") From 39a92397431ba946f47975d852d5437632a2bcb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 7 Nov 2024 17:05:24 +0100 Subject: [PATCH 035/626] :wrench: wip use FileLocation for transfers --- .../ayon_core/plugins/publish/integrate_traits.py | 14 +++++++++++++- .../plugins/publish/test_integrate_traits.py | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index f7f3f47489..ca79bf1518 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -20,6 +20,7 @@ from ayon_core.pipeline.publish import ( get_publish_template_name, ) from ayon_core.pipeline.traits import Persistent, Representation +from pipeline.traits import FileLocation if TYPE_CHECKING: import logging @@ -146,6 +147,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance.data["versionEntity"] = version_entity # 7) Get transfers from representations + for representation in representations: + # this should test version-less FileLocation probably + if representation.contains_trait(FileLocation): + self.log.debug( + "Representation: %s", representation) + # 8) Transfer files # 9) Commit the session to AYON # 10) Finalize represetations - add integrated path Trait etc. @@ -306,7 +313,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): all_version_data = self.get_version_data_from_instance(instance) version_data = {} version_attributes = {} - attr_defs = self._get_attributes_for_type(instance.context, "version") + attr_defs = self.get_attributes_for_type(instance.context, "version") for key, value in all_version_data.items(): if key in attr_defs: version_attributes[key] = value @@ -435,6 +442,11 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ),path) return path + def get_attributes_for_type( + self, context: pyblish.api.Context, entity_type: str) -> dict: + """Get AYON attributes for the given entity type.""" + return self.get_attributes_by_type(context)[entity_type] + def get_attributes_by_type( self, context: pyblish.api.Context) -> dict: """Gets AYON attributes from the given context.""" diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 1262266943..009cc3b7ff 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -108,6 +108,9 @@ def mock_context( frame_end=SEQUENCE_LENGTH, frame_padding=4, frame_regex=r"^img\.(\d{4})\.png$", + frame_in=0, + frame_out=SEQUENCE_LENGTH - 1, + frames_per_second=25 ), FileLocation( file_path=sequence_files[0], From b9e430e2a560fa29c21c1cfe578ea253c2fb687d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 8 Nov 2024 09:46:04 +0100 Subject: [PATCH 036/626] :recycle: make fields optional, fps data type --- client/ayon_core/pipeline/traits/time.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 751eef3fb5..7a614e1a94 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -2,12 +2,16 @@ from __future__ import annotations from enum import Enum, auto -from typing import ClassVar, Optional +from typing import TYPE_CHECKING, ClassVar, Optional, Union from pydantic import Field from .trait import TraitBase +if TYPE_CHECKING: + from decimal import Decimal + from fractions import Fraction + class GapPolicy(Enum): """Gap policy enumeration. @@ -45,7 +49,7 @@ class FrameRanged(TraitBase): frame_end (int): Frame end. frame_in (int): Frame in. frame_out (int): Frame out. - frames_per_second (int): Frames per second. + frames_per_second (float, Fraction, Decimal): Frames per second. step (int): Step. """ @@ -56,9 +60,9 @@ class FrameRanged(TraitBase): ..., title="Start Frame") frame_end: int = Field( ..., title="Frame Start") - frame_in: int = Field(..., title="In Frame") - frame_out: int = Field(..., title="Out Frame") - frames_per_second: int = Field( + frame_in: Optional[int] = Field(None, title="In Frame") + frame_out: Optional[int] = Field(None, title="Out Frame") + frames_per_second: Union[float, Fraction, Decimal] = Field( ..., title="Frames Per Second") step: Optional[int] = Field(1, title="Step") From db5d997ce74ca264b7e0be996966534c4e2363e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 8 Nov 2024 09:46:47 +0100 Subject: [PATCH 037/626] :art: add `get_versionless_id()` helper (and test) --- client/ayon_core/pipeline/traits/trait.py | 13 ++++++++++++ .../ayon_core/pipeline/traits/test_traits.py | 20 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 6c37f40a45..22e7fc6d64 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -94,6 +94,16 @@ class TraitBase(ABC, BaseModel): match = re.search(version_regex, str(cls.id)) return int(match[1]) if match else None + @classmethod + def get_versionless_id(cls) -> str: + """Get trait ID without version. + + Returns: + str: Trait ID without version. + + """ + return re.sub(r"\.v\d+$", "", str(cls.id)) + class Representation: """Representation of products. @@ -416,6 +426,9 @@ class Representation: bool: True if the representations are equal, False otherwise. """ + if self.representation_id != other.representation_id: + return False + if not isinstance(other, Representation): return False diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 43d8301e00..8a6e210b78 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -252,6 +252,26 @@ def test_get_version_from_id() -> None: assert TestMimeType(mime_type="foo/bar").get_version() is None +def test_get_versionless_id() -> None: + """Test getting versionless trait ID.""" + assert Image().get_versionless_id() == "ayon.2d.Image" + + class TestOverscan(Overscan): + id = "ayon.2d.Overscan.v2" + + assert TestOverscan( + left=0, + right=0, + top=0, + bottom=0 + ).get_versionless_id() == "ayon.2d.Overscan" + + class TestMimeType(MimeType): + id = "ayon.content.MimeType" + + assert TestMimeType(mime_type="foo/bar").get_versionless_id() == \ + "ayon.content.MimeType" + def test_from_dict() -> None: """Test creating representation from dictionary.""" From 521a211e38d304c68a358e24660f7240b5aae04e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 8 Nov 2024 16:53:51 +0100 Subject: [PATCH 038/626] :wrench: WIP preparing template data --- .../plugins/publish/integrate_traits.py | 136 +++++++++++++++++- 1 file changed, 131 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index ca79bf1518..915d4e433f 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -1,6 +1,7 @@ """Integrate representations with traits.""" from __future__ import annotations +import copy from typing import TYPE_CHECKING, Any, List import pyblish.api @@ -17,10 +18,16 @@ from ayon_api.operations import ( new_version_entity, ) from ayon_core.pipeline.publish import ( + PublishError, get_publish_template_name, ) -from ayon_core.pipeline.traits import Persistent, Representation -from pipeline.traits import FileLocation +from ayon_core.pipeline.traits import ( + ColorManaged, + FileLocation, + Persistent, + Representation, +) +from pipeline.traits import PixelBased if TYPE_CHECKING: import logging @@ -131,8 +138,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): "Instance has no persistent representations. Skipping") return - # 3) get anatomy template name - # template_name = self.get_template_name(instance) + # 3) get anatomy template + template = self.get_template(instance) # 4) initialize OperationsSession() op_session = OperationsSession() @@ -146,13 +153,62 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) instance.data["versionEntity"] = version_entity + instance_template_data = {} + # handle {originalDirname} requested in the template + if "{originalDirname}" in template: + instance_template_data = { + "originalDirname": self._get_relative_to_root_original_dirname( + instance) + } + # 6.5) prepare template and data to format it + for representation in representations: + template_data = self.get_template_date_from_representation( + representation, instance) + # add instance based template data + template_data.update(instance_template_data) + if "{originalBasename}" in template: + # Remove 'frame' from template data because original frame + # number will be used. + template_data.pop("frame", None) + # WIP: use trait logic to get original frame range + + + # 7) Get transfers from representations for representation in representations: # this should test version-less FileLocation probably - if representation.contains_trait(FileLocation): + if representation.contains_trait_by_id( + FileLocation.get_versionless_id()): self.log.debug( "Representation: %s", representation) + def _get_relative_to_root_original_dirname( + self, instance: pyblish.api.Instance) -> str: + """Get path stripped of root of the original directory name. + + If `originalDirname` or `stagingDir` is set in instance data, + this will return it as rootless path. The path must reside + within the project directory. + """ + original_directory = ( + instance.data.get("originalDirname") or + instance.data.get("stagingDir")) + anatomy = instance.context.data["anatomy"] + + _rootless = self.get_rootless_path(anatomy, original_directory) + # this check works because _rootless will be the same as + # original_directory if the original_directory cannot be transformed + # to the rootless path. + if _rootless == original_directory: + msg = ( + f"Destination path '{original_directory}' must " + "be in project directory.") + raise PublishError(msg) + # the root is at the beginning - {root[work]}/rest/of/the/path + relative_path_start = _rootless.rfind("}") + 2 + return _rootless[relative_path_start:] + + # 8) Transfer files # 9) Commit the session to AYON # 10) Finalize represetations - add integrated path Trait etc. @@ -205,6 +261,23 @@ class IntegrateTraits(pyblish.api.InstancePlugin): logger=self.log ) + def get_template(self, instance: pyblish.api.Instance) -> str: + """Return anatomy template name to use for integration. + + Args: + instance (pyblish.api.Instance): Instance to process. + + Returns: + str: Anatomy template name + + """ + # Anatomy data is pre-filled by Collectors + template_name = self.get_template_name(instance) + anatomy = instance.context.data["anatomy"] + publish_template = anatomy.get_template_item("publish", template_name) + path_template_obj = publish_template["path"] + return path_template_obj.template.replace("\\", "/") + def prepare_product( self, instance: pyblish.api.Instance, @@ -464,3 +537,56 @@ class IntegrateTraits(pyblish.api.InstancePlugin): } context.data["ayonAttributes"] = attributes return attributes + + def get_template_date_from_representation( + self, + representation: Representation, + instance: pyblish.api.Instance) -> dict: + """Get template data from representation. + + Using representation traits and data on instance + prepare data for formatting template. + + Args: + representation (Representation): Representation to process. + instance (pyblish.api.Instance): Instance to process. + + Returns: + dict: Template data. + + """ + template_data = copy.deepcopy(instance.data["anatomyData"]) + template_data["representation"] = representation.name + + # add colorspace data to template data + if representation.contains_trait(ColorManaged): + colorspace_data: ColorManaged = representation.get_trait( + ColorManaged) + + template_data["colorspace"] = { + "colorspace": colorspace_data.color_space, + "config": colorspace_data.config + } + + # add explicit list of traits properties to template data + # there must be some better way to handle this + try: + # resolution from PixelBased trait + template_data["resolution_width"] = representation.get_trait( + PixelBased).display_window_width + template_data["resolution_height"] = representation.get_trait( + PixelBased).display_window_height + # get fps from representation traits + # is this the right way? Isn't it going against the + # trait abstraction? + traits = representation.get_traits() + for trait in traits.values(): + if hasattr(trait, "frames_per_second"): + template_data["fps"] = trait.fps + + # Note: handle "output" and "originalBasename" + + except ValueError as e: + self.log.debug("Missing traits: %s", e) + + return template_data From e4377e8f07f9cfb179a3d292dfa4b29e5fa3bdd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 8 Nov 2024 17:49:11 +0100 Subject: [PATCH 039/626] :recycle: raise exception if trait not found instead of returning None Raising exception is more pythonic than returning just None. Also some changes in return type annotations. --- client/ayon_core/pipeline/traits/trait.py | 40 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 22e7fc6d64..20ad9a1316 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -7,7 +7,7 @@ import sys import uuid from abc import ABC, abstractmethod from functools import lru_cache -from typing import ClassVar, Optional, Type, Union +from typing import ClassVar, Optional, Type, TypeVar, Union import pydantic.alias_generators from pydantic import ( @@ -105,6 +105,9 @@ class TraitBase(ABC, BaseModel): return re.sub(r"\.v\d+$", "", str(cls.id)) +T = TypeVar("T", bound=TraitBase) + + class Representation: """Representation of products. @@ -287,7 +290,7 @@ class Representation: self.contains_trait_by_id(trait_id) for trait_id in trait_ids ) - def get_trait(self, trait: Type[TraitBase]) -> Union[TraitBase, None]: + def get_trait(self, trait: Type[T]) -> Union[T]: """Get a trait from the representation. Args: @@ -296,10 +299,17 @@ class Representation: Returns: TraitBase: Trait instance. - """ - return self._data[trait.id] if self._data.get(trait.id) else None + Raises: + ValueError: If the trait is not found. - def get_trait_by_id(self, trait_id: str) -> Union[TraitBase, None]: + """ + try: + return self._data[trait.id] + except KeyError as e: + msg = f"Trait with ID {trait.id} not found." + raise ValueError(msg) from e + + def get_trait_by_id(self, trait_id: str) -> Union[T]: # sourcery skip: use-named-expression """Get a trait from the representation by id. @@ -309,12 +319,19 @@ class Representation: Returns: TraitBase: Trait instance. + Raises: + ValueError: If the trait is not found. + """ version = _get_version_from_id(trait_id) if version: - return self._data.get(trait_id) + try: + return self._data[trait_id] + except KeyError as e: + msg = f"Trait with ID {trait_id} not found." + raise ValueError(msg) from e - return next( + result = next( ( self._data.get(trait_id) for trait_id in self._data @@ -322,9 +339,14 @@ class Representation: ), None, ) + if not result: + msg = f"Trait with ID {trait_id} not found." + raise ValueError(msg) + return result def get_traits(self, - traits: Optional[list[Type[TraitBase]]]=None) -> dict: + traits: Optional[list[Type[TraitBase]]]=None + ) -> dict[str, T]: """Get a list of traits from the representation. If no trait IDs or traits are provided, all traits will be returned. @@ -346,7 +368,7 @@ class Representation: result[trait.id] = self.get_trait(trait=trait) return result - def get_traits_by_ids(self, trait_ids: list[str]) -> dict: + def get_traits_by_ids(self, trait_ids: list[str]) -> dict[str, T]: """Get a list of traits from the representation by their id. If no trait IDs or traits are provided, all traits will be returned. From 0e18aee030174a85b06ab20e0d9bd0ab952bae5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 11 Nov 2024 14:05:19 +0100 Subject: [PATCH 040/626] :art: add utilities package --- client/ayon_core/pipeline/traits/utils.py | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 client/ayon_core/pipeline/traits/utils.py diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py new file mode 100644 index 0000000000..702bea3a16 --- /dev/null +++ b/client/ayon_core/pipeline/traits/utils.py @@ -0,0 +1,38 @@ +"""Utility functions for traits.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +from clique import assemble + +from ayon_core.pipeline.traits import Sequence + +if TYPE_CHECKING: + from pathlib import Path + + +def ge_sequence_from_files(paths: list[Path]) -> Sequence: + """Get original frame range from files. + + Note that this cannot guess frame rate, so it's set to 25. + + Args: + paths (list[Path]): List of file paths. + + Returns: + Sequence: Sequence trait. + + """ + col = assemble([path.as_posix() for path in paths])[0][0] + sorted_frames = sorted(col.indexes) + # First frame used for end value + first_frame = sorted_frames[0] + # Get last frame for padding + last_frame = sorted_frames[-1] + # Use padding from collection of length of last frame as string + padding = max(col.padding, len(str(last_frame))) + + return Sequence( + frame_start=first_frame, frame_end=last_frame, frame_padding=padding, + frames_per_second=25 + ) From 5a8138c0e74cb2badbd7c84683685a6cb84a185b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 11 Nov 2024 16:01:24 +0100 Subject: [PATCH 041/626] :bug: fix typo --- client/ayon_core/pipeline/traits/__init__.py | 6 ++++++ client/ayon_core/pipeline/traits/utils.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index a12c55e41a..ec0a7d90b0 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -30,6 +30,9 @@ from .two_dimensional import ( PixelBased, Planar, ) +from .utils import ( + get_sequence_from_files, +) __all__ = [ # base @@ -83,4 +86,7 @@ __all__ = [ "GapPolicy", "Sequence", "SMPTETimecode", + + # utils + "get_sequence_from_files", ] diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index 702bea3a16..cd75443cd0 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -11,7 +11,7 @@ if TYPE_CHECKING: from pathlib import Path -def ge_sequence_from_files(paths: list[Path]) -> Sequence: +def get_sequence_from_files(paths: list[Path]) -> Sequence: """Get original frame range from files. Note that this cannot guess frame rate, so it's set to 25. From d2285276288843eda92f2e83faec12e70cfad888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 11 Nov 2024 16:30:11 +0100 Subject: [PATCH 042/626] :art: add file locations --- client/ayon_core/pipeline/traits/content.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 47a7e208bd..f018b3e73b 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -79,6 +79,25 @@ class FileLocation(TraitBase): file_size: Optional[int] = Field(None, title="File Size") file_hash: Optional[str] = Field(None, title="File Hash") +class FileLocations(TraitBase): + """FileLocation trait model. + + This model represents a file path. It is a specialization of the + LocatableContent trait. It is adding optional file size and file hash + for easy access to file information. + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + file_paths (list of FileLocation): File locations. + + """ + + name: ClassVar[str] = "FileLocations" + description: ClassVar[str] = "FileLocations Trait Model" + id: ClassVar[str] = "ayon.content.FileLocations.v1" + file_paths: list[FileLocation] = Field(..., title="File Path") class RootlessLocation(TraitBase): """RootlessLocation trait model. From f589cb933ca926cd94b022848c83942c723ba9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 12 Nov 2024 17:12:54 +0100 Subject: [PATCH 043/626] :recycle: change validations validation on trait are now raising exception instead of returning just bool, to pass validation error. Also added `validate()`to representation - this runs it on all traits. --- client/ayon_core/pipeline/traits/__init__.py | 11 ++- client/ayon_core/pipeline/traits/content.py | 67 ++++++++++++++++++- client/ayon_core/pipeline/traits/lifecycle.py | 16 +++-- client/ayon_core/pipeline/traits/time.py | 16 ++++- client/ayon_core/pipeline/traits/trait.py | 49 +++++++++++--- client/ayon_core/pipeline/traits/utils.py | 38 +++++++++++ .../ayon_core/pipeline/traits/test_traits.py | 58 ++++++++++++++++ 7 files changed, 237 insertions(+), 18 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/utils.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index a12c55e41a..d8b74a4c70 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -4,6 +4,7 @@ from .content import ( Bundle, Compressed, FileLocation, + FileLocations, Fragment, LocatableContent, MimeType, @@ -21,7 +22,7 @@ from .time import ( SMPTETimecode, Static, ) -from .trait import Representation, TraitBase +from .trait import MissingTraitError, Representation, TraitBase from .two_dimensional import ( UDIM, Deep, @@ -30,16 +31,21 @@ from .two_dimensional import ( PixelBased, Planar, ) +from .utils import ( + get_sequence_from_files, +) __all__ = [ # base "Representation", "TraitBase", + "MissingTraitError", # content "Bundle", "Compressed", "FileLocation", + "FileLocations", "MimeType", "RootlessLocation", "Fragment", @@ -83,4 +89,7 @@ __all__ = [ "GapPolicy", "Sequence", "SMPTETimecode", + + # utils + "get_sequence_from_files", ] diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index f018b3e73b..eb156f44e1 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -7,7 +7,14 @@ from typing import ClassVar, Optional from pydantic import Field -from .trait import Representation, TraitBase +from .time import Sequence +from .trait import ( + MissingTraitError, + Representation, + TraitBase, + TraitValidationError, + get_sequence_from_files, +) class MimeType(TraitBase): @@ -99,6 +106,64 @@ class FileLocations(TraitBase): id: ClassVar[str] = "ayon.content.FileLocations.v1" file_paths: list[FileLocation] = Field(..., title="File Path") + def validate(self, representation: Representation) -> bool: + """Validate the trait. + + This method validates the trait against others in the representation. + In particular, it checks that the sequence trait is present and if + so, it will compare the frame range to the file paths. + + Args: + representation (Representation): Representation to validate. + + Returns: + bool: True if the trait is valid, False otherwise + + """ + if len(self.file_paths) == 0: + # If there are no file paths, we can't validate + msg = "No file locations defined (empty list)" + raise TraitValidationError(self.name, msg) + + tmp_seq: Sequence = get_sequence_from_files( + [f.file_path for f in self.file_paths]) + + if len(self.file_paths) != \ + tmp_seq.frame_end - tmp_seq.frame_start: + # If the number of file paths does not match the frame range, + # the trait is invalid + msg = ( + f"Number of file locations ({len(self.file_paths)}) " + "does not match frame range " + f"({tmp_seq.frame_end - tmp_seq.frame_start})" + ) + raise TraitValidationError(self.name, msg) + + try: + sequence: Sequence = representation.get_trait(Sequence) + + if sequence.frame_start != tmp_seq.frame_start or \ + sequence.frame_end != tmp_seq.frame_end or \ + sequence.frame_padding != tmp_seq.frame_padding: + # If the frame range does not match the sequence trait, the + # trait is invalid. Note that we don't check the frame rate + # because it is not stored in the file paths and is not + # determined by `get_sequence_from_files`. + msg = ( + "Frame range " + f"({sequence.frame_start}-{sequence.frame_end}) " + "in sequence trait does not match " + "frame range " + f"({tmp_seq.frame_start}-{tmp_seq.frame_end}) " + "defined in files." + ) + raise TraitValidationError(self.name, msg) + + except MissingTraitError: + # If there is no sequence trait, we can't validate it + pass + + class RootlessLocation(TraitBase): """RootlessLocation trait model. diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index 39fe04e3cb..b5cede3bb1 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -1,7 +1,7 @@ """Lifecycle traits.""" from typing import ClassVar -from .trait import TraitBase +from .trait import TraitBase, TraitValidationError class Transient(TraitBase): @@ -20,7 +20,7 @@ class Transient(TraitBase): description: ClassVar[str] = "Transient Trait Model" id: ClassVar[str] = "ayon.lifecycle.Transient.v1" - def validate(self, representation) -> bool: # noqa: ANN001 + def validate(self, representation) -> None: # noqa: ANN001 """Validate representation is not Persistent. Args: @@ -29,7 +29,9 @@ class Transient(TraitBase): Returns: bool: True if representation is valid, False otherwise. """ - return not representation.contains_trait(Persistent) + if representation.contains_trait(Persistent): + msg = "Representation is marked as both Persistent and Transient." + raise TraitValidationError(self.name, msg) class Persistent(TraitBase): @@ -49,13 +51,13 @@ class Persistent(TraitBase): description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" - def validate(self, representation) -> bool: # noqa: ANN001 + def validate(self, representation) -> None: # noqa: ANN001 """Validate representation is not Transient. Args: representation (Representation): Representation model. - Returns: - bool: True if representation is valid, False otherwise. """ - return not representation.contains_trait(Transient) + if representation.contains_trait(Persistent): + msg = "Representation is marked as both Persistent and Transient." + raise TraitValidationError(self.name, msg) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 7a614e1a94..1b2f211468 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -6,7 +6,8 @@ from typing import TYPE_CHECKING, ClassVar, Optional, Union from pydantic import Field -from .trait import TraitBase +from .content import FileLocations +from .trait import MissingTraitError, Representation, TraitBase if TYPE_CHECKING: from decimal import Decimal @@ -121,6 +122,19 @@ class Sequence(FrameRanged, Handles): frame_regex: str = Field(..., title="Frame Regex") frame_list: Optional[str] = Field(None, title="Frame List") + def validate(self, representation: Representation) -> None: + """Validate the trait.""" + if not super().validate(representation): + return False + + # if there is FileLocations trait, run validation + # on it as well + try: + file_locs: FileLocations = representation.get_trait( + FileLocations) + file_locs.validate(representation) + except MissingTraitError: + pass # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 20ad9a1316..15e48b6f5a 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -65,7 +65,7 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... - def validate(self, representation: Representation) -> bool: + def validate(self, representation: Representation) -> None: """Validate the trait. This method should be implemented in the derived classes to validate @@ -76,10 +76,11 @@ class TraitBase(ABC, BaseModel): representation (Representation): Representation instance. Raises: - ValueError: If the trait is invalid within representation. + TraitValidationError: If the trait is invalid + within representation. """ - return True + return @classmethod def get_version(cls) -> Optional[int]: @@ -300,14 +301,14 @@ class Representation: TraitBase: Trait instance. Raises: - ValueError: If the trait is not found. + MissingTraitError: If the trait is not found. """ try: return self._data[trait.id] except KeyError as e: msg = f"Trait with ID {trait.id} not found." - raise ValueError(msg) from e + raise MissingTraitError(msg) from e def get_trait_by_id(self, trait_id: str) -> Union[T]: # sourcery skip: use-named-expression @@ -320,7 +321,7 @@ class Representation: TraitBase: Trait instance. Raises: - ValueError: If the trait is not found. + MissingTraitError: If the trait is not found. """ version = _get_version_from_id(trait_id) @@ -329,7 +330,7 @@ class Representation: return self._data[trait_id] except KeyError as e: msg = f"Trait with ID {trait_id} not found." - raise ValueError(msg) from e + raise MissingTraitError(msg) from e result = next( ( @@ -341,7 +342,7 @@ class Representation: ) if not result: msg = f"Trait with ID {trait_id} not found." - raise ValueError(msg) + raise MissingTraitError(msg) return result def get_traits(self, @@ -672,6 +673,18 @@ class Representation: name=name, representation_id=representation_id, traits=traits) + def validate(self) -> bool: + """Validate the representation. + + This method will validate all the traits in the representation. + + Returns: + bool: True if the representation is valid, False otherwise. + + """ + return all(trait.validate(self) for trait in self._data.values()) + + class IncompatibleTraitVersionError(Exception): """Incompatible trait version exception. @@ -707,3 +720,23 @@ class TraitValidationError(Exception): This exception is raised when the trait validation fails. """ + + def __init__(self, scope: str, message: str): + """Initialize the exception. + + We could determine the scope from the stack in the future, + provided the scope is always Trait name. + + Args: + scope (str): Scope of the error. + message (str): Error message. + + """ + super().__init__(f"{scope}: {message}") + + +class MissingTraitError(TypeError): + """Missing trait error exception. + + This exception is raised when the trait is missing. + """ diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py new file mode 100644 index 0000000000..cd75443cd0 --- /dev/null +++ b/client/ayon_core/pipeline/traits/utils.py @@ -0,0 +1,38 @@ +"""Utility functions for traits.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +from clique import assemble + +from ayon_core.pipeline.traits import Sequence + +if TYPE_CHECKING: + from pathlib import Path + + +def get_sequence_from_files(paths: list[Path]) -> Sequence: + """Get original frame range from files. + + Note that this cannot guess frame rate, so it's set to 25. + + Args: + paths (list[Path]): List of file paths. + + Returns: + Sequence: Sequence trait. + + """ + col = assemble([path.as_posix() for path in paths])[0][0] + sorted_frames = sorted(col.indexes) + # First frame used for end value + first_frame = sorted_frames[0] + # Get last frame for padding + last_frame = sorted_frames[-1] + # Use padding from collection of length of last frame as string + padding = max(col.padding, len(str(last_frame))) + + return Sequence( + frame_start=first_frame, frame_end=last_frame, frame_padding=padding, + frames_per_second=25 + ) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 8a6e210b78..7b183a1104 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -7,11 +7,13 @@ import pytest from ayon_core.pipeline.traits import ( Bundle, FileLocation, + FileLocations, Image, MimeType, PixelBased, Planar, Representation, + Sequence, TraitBase, ) from pipeline.traits import Overscan @@ -329,3 +331,59 @@ def test_from_dict() -> None: representation = Representation.from_dict( "test", trait_data=traits_data) """ + +def test_file_locations_validation() -> None: + """Test FileLocations trait validation.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1050) + ] + + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + + file_locations_trait: FileLocations = FileLocations( + file_paths=file_locations_list) + + # this should be valid trait + assert file_locations_trait.validate(representation) is True + + # add valid sequence trait + sequence_trait = Sequence( + frame_start=1001, + frame_end=1050, + frame_padding=4, + frames_per_second=25 + ) + representation.add_trait(sequence_trait) + + # it should still validate fine + assert file_locations_trait.validate(representation) is True + + # create empty file locations trait + empty_file_locations_trait = FileLocations(file_paths=[]) + representation = Representation(name="test", traits=[ + empty_file_locations_trait + ]) + assert empty_file_locations_trait.validate( + representation) is False + + # create valid file locations trait but with not matching sequence + # trait + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + invalid_sequence_trait = Sequence( + frame_start=1001, + frame_end=1051, + frame_padding=4, + frames_per_second=25 + ) + + representation.add_trait(invalid_sequence_trait) + assert file_locations_trait.validate(representation) is False From b64e0340d976ee35ff5d3bb4d71b0e8189696ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 12 Nov 2024 23:40:59 +0100 Subject: [PATCH 044/626] :recycle: refactor to remove circular imports add `FileLocations` validations --- client/ayon_core/pipeline/traits/__init__.py | 3 +- client/ayon_core/pipeline/traits/content.py | 25 +- .../pipeline/traits/representation.py | 609 ++++++++++++++++++ client/ayon_core/pipeline/traits/time.py | 30 +- client/ayon_core/pipeline/traits/trait.py | 597 +---------------- client/ayon_core/pipeline/traits/utils.py | 14 +- tests/__init__.py | 1 + .../ayon_core/pipeline/traits/test_traits.py | 27 +- tests/conftest.py | 3 +- 9 files changed, 668 insertions(+), 641 deletions(-) create mode 100644 client/ayon_core/pipeline/traits/representation.py create mode 100644 tests/__init__.py diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index d8b74a4c70..16ee7d6975 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -13,6 +13,7 @@ from .content import ( from .cryptography import DigitallySigned, GPGSigned from .lifecycle import Persistent, Transient from .meta import Tagged, TemplatePath +from .representation import Representation from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial from .time import ( FrameRanged, @@ -22,7 +23,7 @@ from .time import ( SMPTETimecode, Static, ) -from .trait import MissingTraitError, Representation, TraitBase +from .trait import MissingTraitError, TraitBase from .two_dimensional import ( UDIM, Deep, diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index eb156f44e1..1563d3b96a 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -7,14 +7,14 @@ from typing import ClassVar, Optional from pydantic import Field -from .time import Sequence +from .representation import Representation +from .time import FrameRanged from .trait import ( MissingTraitError, - Representation, TraitBase, TraitValidationError, - get_sequence_from_files, ) +from .utils import get_sequence_from_files class MimeType(TraitBase): @@ -125,26 +125,25 @@ class FileLocations(TraitBase): msg = "No file locations defined (empty list)" raise TraitValidationError(self.name, msg) - tmp_seq: Sequence = get_sequence_from_files( + tmp_frame_ranged: FrameRanged = get_sequence_from_files( [f.file_path for f in self.file_paths]) - if len(self.file_paths) != \ - tmp_seq.frame_end - tmp_seq.frame_start: + if len(self.file_paths) - 1 != \ + tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start: # If the number of file paths does not match the frame range, # the trait is invalid msg = ( - f"Number of file locations ({len(self.file_paths)}) " + f"Number of file locations ({len(self.file_paths) - 1}) " "does not match frame range " - f"({tmp_seq.frame_end - tmp_seq.frame_start})" + f"({tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start})" ) raise TraitValidationError(self.name, msg) try: - sequence: Sequence = representation.get_trait(Sequence) + sequence: FrameRanged = representation.get_trait(FrameRanged) - if sequence.frame_start != tmp_seq.frame_start or \ - sequence.frame_end != tmp_seq.frame_end or \ - sequence.frame_padding != tmp_seq.frame_padding: + if sequence.frame_start != tmp_frame_ranged.frame_start or \ + sequence.frame_end != tmp_frame_ranged.frame_end: # If the frame range does not match the sequence trait, the # trait is invalid. Note that we don't check the frame rate # because it is not stored in the file paths and is not @@ -154,7 +153,7 @@ class FileLocations(TraitBase): f"({sequence.frame_start}-{sequence.frame_end}) " "in sequence trait does not match " "frame range " - f"({tmp_seq.frame_start}-{tmp_seq.frame_end}) " + f"({tmp_frame_ranged.frame_start}-{tmp_frame_ranged.frame_end}) " "defined in files." ) raise TraitValidationError(self.name, msg) diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py new file mode 100644 index 0000000000..acd78a6ce5 --- /dev/null +++ b/client/ayon_core/pipeline/traits/representation.py @@ -0,0 +1,609 @@ +"""Defines the base trait model and representation.""" +from __future__ import annotations + +import inspect +import re +import sys +import uuid +from functools import lru_cache +from typing import ClassVar, Optional, Type, TypeVar, Union + +from .trait import ( + IncompatibleTraitVersionError, + LooseMatchingTraitError, + MissingTraitError, + TraitBase, + UpgradableTraitError, +) + +T = TypeVar("T", bound=TraitBase) + + +def _get_version_from_id(_id: str) -> int: + """Get version from ID. + + Args: + _id (str): ID. + + Returns: + int: Version. + + """ + match = re.search(r"v(\d+)$", _id) + return int(match[1]) if match else None + + +class Representation: + """Representation of products. + + Representation defines collection of individual properties that describe + the specific "form" of the product. Each property is represented by a + trait therefore the Representation is a collection of traits. + + It holds methods to add, remove, get, and check for the existence of a + trait in the representation. It also provides a method to get all the + + Arguments: + name (str): Representation name. Must be unique within instance. + representation_id (str): Representation ID. + + """ + _data: dict + _module_blacklist: ClassVar[list[str]] = [ + "_", "builtins", "pydantic"] + name: str + representation_id: str + + def __hash__(self): + """Return hash of the representation ID.""" + return hash(self.representation_id) + + def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: + """Add a trait to the Representation. + + Args: + trait (TraitBase): Trait to add. + exists_ok (bool, optional): If True, do not raise an error if the + trait already exists. Defaults to False. + + Raises: + ValueError: If the trait ID is not provided or the trait already + exists. + + """ + if not hasattr(trait, "id"): + error_msg = f"Invalid trait {trait} - ID is required." + raise ValueError(error_msg) + if trait.id in self._data and not exists_ok: + error_msg = f"Trait with ID {trait.id} already exists." + raise ValueError(error_msg) + self._data[trait.id] = trait + + def add_traits( + self, traits: list[TraitBase], *, exists_ok: bool=False) -> None: + """Add a list of traits to the Representation. + + Args: + traits (list[TraitBase]): List of traits to add. + exists_ok (bool, optional): If True, do not raise an error if the + trait already exists. Defaults to False. + + """ + for trait in traits: + self.add_trait(trait, exists_ok=exists_ok) + + def remove_trait(self, trait: Type[TraitBase]) -> None: + """Remove a trait from the data. + + Args: + trait (TraitBase, optional): Trait class. + + Raises: + ValueError: If the trait is not found. + + """ + try: + self._data.pop(trait.id) + except KeyError as e: + error_msg = f"Trait with ID {trait.id} not found." + raise ValueError(error_msg) from e + + def remove_trait_by_id(self, trait_id: str) -> None: + """Remove a trait from the data by its ID. + + Args: + trait_id (str): Trait ID. + + Raises: + ValueError: If the trait is not found. + + """ + try: + self._data.pop(trait_id) + except KeyError as e: + error_msg = f"Trait with ID {trait_id} not found." + raise ValueError(error_msg) from e + + def remove_traits(self, traits: list[Type[TraitBase]]) -> None: + """Remove a list of traits from the Representation. + + If no trait IDs or traits are provided, all traits will be removed. + + Args: + traits (list[TraitBase]): List of trait classes. + + """ + if not traits: + self._data = {} + return + + for trait in traits: + self.remove_trait(trait) + + def remove_traits_by_id(self, trait_ids: list[str]) -> None: + """Remove a list of traits from the Representation by their ID. + + If no trait IDs or traits are provided, all traits will be removed. + + Args: + trait_ids (list[str], optional): List of trait IDs. + + """ + for trait_id in trait_ids: + self.remove_trait_by_id(trait_id) + + + def has_traits(self) -> bool: + """Check if the Representation has any traits. + + Returns: + bool: True if the Representation has any traits, False otherwise. + + """ + return bool(self._data) + + def contains_trait(self, trait: Type[TraitBase]) -> bool: + """Check if the trait exists in the Representation. + + Args: + trait (TraitBase): Trait class. + + Returns: + bool: True if the trait exists, False otherwise. + + """ + return bool(self._data.get(trait.id)) + + def contains_trait_by_id(self, trait_id: str) -> bool: + """Check if the trait exists using trait id. + + Args: + trait_id (str): Trait ID. + + Returns: + bool: True if the trait exists, False otherwise. + + """ + return bool(self._data.get(trait_id)) + + def contains_traits(self, traits: list[Type[TraitBase]]) -> bool: + """Check if the traits exist. + + Args: + traits (list[TraitBase], optional): List of trait classes. + + Returns: + bool: True if all traits exist, False otherwise. + + """ + return all(self.contains_trait(trait=trait) for trait in traits) + + def contains_traits_by_id(self, trait_ids: list[str]) -> bool: + """Check if the traits exist by id. + + If no trait IDs or traits are provided, it will check if the + representation has any traits. + + Args: + trait_ids (list[str]): List of trait IDs. + + Returns: + bool: True if all traits exist, False otherwise. + + """ + return all( + self.contains_trait_by_id(trait_id) for trait_id in trait_ids + ) + + def get_trait(self, trait: Type[T]) -> Union[T]: + """Get a trait from the representation. + + Args: + trait (TraitBase, optional): Trait class. + + Returns: + TraitBase: Trait instance. + + Raises: + MissingTraitError: If the trait is not found. + + """ + try: + return self._data[trait.id] + except KeyError as e: + msg = f"Trait with ID {trait.id} not found." + raise MissingTraitError(msg) from e + + def get_trait_by_id(self, trait_id: str) -> Union[T]: + # sourcery skip: use-named-expression + """Get a trait from the representation by id. + + Args: + trait_id (str): Trait ID. + + Returns: + TraitBase: Trait instance. + + Raises: + MissingTraitError: If the trait is not found. + + """ + version = _get_version_from_id(trait_id) + if version: + try: + return self._data[trait_id] + except KeyError as e: + msg = f"Trait with ID {trait_id} not found." + raise MissingTraitError(msg) from e + + result = next( + ( + self._data.get(trait_id) + for trait_id in self._data + if trait_id.startswith(trait_id) + ), + None, + ) + if not result: + msg = f"Trait with ID {trait_id} not found." + raise MissingTraitError(msg) + return result + + def get_traits(self, + traits: Optional[list[Type[TraitBase]]]=None + ) -> dict[str, T]: + """Get a list of traits from the representation. + + If no trait IDs or traits are provided, all traits will be returned. + + Args: + traits (list[TraitBase], optional): List of trait classes. + + Returns: + dict: Dictionary of traits. + + """ + result = {} + if not traits: + for trait_id in self._data: + result[trait_id] = self.get_trait_by_id(trait_id=trait_id) + return result + + for trait in traits: + result[trait.id] = self.get_trait(trait=trait) + return result + + def get_traits_by_ids(self, trait_ids: list[str]) -> dict[str, T]: + """Get a list of traits from the representation by their id. + + If no trait IDs or traits are provided, all traits will be returned. + + Args: + trait_ids (list[str]): List of trait IDs. + + Returns: + dict: Dictionary of traits. + + """ + return { + trait_id: self.get_trait_by_id(trait_id) + for trait_id in trait_ids + } + + def traits_as_dict(self) -> dict: + """Return the traits from Representation data as a dictionary. + + Returns: + dict: Traits data dictionary. + + """ + return { + trait_id: trait.model_dump() + for trait_id, trait in self._data.items() + if trait and trait_id + } + + def __len__(self): + """Return the length of the data.""" + return len(self._data) + + def __init__( + self, + name: str, + representation_id: Optional[str]=None, + traits: Optional[list[TraitBase]]=None): + """Initialize the data. + + Args: + name (str): Representation name. Must be unique within instance. + representation_id (str, optional): Representation ID. + traits (list[TraitBase], optional): List of traits. + """ + self.name = name + self.representation_id = representation_id or uuid.uuid4().hex + self._data = {} + if traits: + for trait in traits: + self.add_trait(trait) + + @staticmethod + def _get_version_from_id(trait_id: str) -> Union[int, None]: + # sourcery skip: use-named-expression + """Check if the trait has version specified. + + Args: + trait_id (str): Trait ID. + + Returns: + int: Trait version. + None: If the trait id does not have a version. + + """ + version_regex = r"v(\d+)$" + match = re.search(version_regex, trait_id) + return int(match[1]) if match else None + + def __eq__(self, other: Representation) -> bool: # noqa: PLR0911 + """Check if the representation is equal to another. + + Args: + other (Representation): Representation to compare. + + Returns: + bool: True if the representations are equal, False otherwise. + + """ + if self.representation_id != other.representation_id: + return False + + if not isinstance(other, Representation): + return False + + if self.name != other.name: + return False + + # number of traits + if len(self) != len(other): + return False + + for trait_id, trait in self._data.items(): + if trait_id not in other._data: + return False + if trait != other._data[trait_id]: + return False + for key, value in trait.model_dump().items(): + if value != other._data[trait_id].model_dump().get(key): + return False + + return True + + @classmethod + @lru_cache(maxsize=64) + def _get_possible_trait_classes_from_modules( + cls, + trait_id: str) -> set[type[TraitBase]]: + """Get possible trait classes from modules. + + Args: + trait_id (str): Trait ID. + + Returns: + set[type[TraitBase]]: Set of trait classes. + + """ + modules = sys.modules.copy() + filtered_modules = modules.copy() + for module_name in modules: + for bl_module in cls._module_blacklist: + if module_name.startswith(bl_module): + filtered_modules.pop(module_name) + + trait_candidates = set() + for module in filtered_modules.values(): + if not module: + continue + for _, klass in inspect.getmembers(module, inspect.isclass): + if inspect.isclass(klass) \ + and issubclass(klass, TraitBase) \ + and str(klass.id).startswith(trait_id): + trait_candidates.add(klass) + return trait_candidates + + @classmethod + @lru_cache(maxsize=64) + def _get_trait_class( + cls, trait_id: str) -> Union[Type[TraitBase], None]: + """Get the trait class with corresponding to given ID. + + This method will search for the trait class in all the modules except + the blacklisted modules. There is some issue in Pydantic where + ``issubclass`` is not working properly so we are excluding explicitly + modules with offending classes. This list can be updated as needed to + speed up the search. + + Args: + trait_id (str): Trait ID. + + Returns: + Type[TraitBase]: Trait class. + + Raises: + LooseMatchingTraitError: If the trait is found with a loose + matching criteria. This exception will include the trait + class that was found and the expected trait ID. Additional + downstream logic must decide how to handle this error. + + """ + version = cls._get_version_from_id(trait_id) + + trait_candidates = cls._get_possible_trait_classes_from_modules( + trait_id + ) + + for trait_class in trait_candidates: + if trait_class.id == trait_id: + # we found direct match + return trait_class + + # if we didn't find direct match, we will search for the highest + # version of the trait. + if not version: + # sourcery skip: use-named-expression + trait_versions = [ + trait_class for trait_class in trait_candidates + if re.match( + rf"{trait_id}.v(\d+)$", str(trait_class.id)) + ] + if trait_versions: + def _get_version_by_id(trait_klass: Type[TraitBase]) -> int: + match = re.search(r"v(\d+)$", str(trait_klass.id)) + return int(match[1]) if match else 0 + + error = LooseMatchingTraitError( + "Found trait that might match.") + error.found_trait = max( + trait_versions, key=_get_version_by_id) + error.expected_id = trait_id + raise error + + return None + + @classmethod + def get_trait_class_by_trait_id(cls, trait_id: str) -> type[TraitBase]: + """Get the trait class for the given trait ID. + + Args: + trait_id (str): Trait ID. + + Returns: + type[TraitBase]: Trait class. + + Raises: + IncompatibleTraitVersionError: If the trait version is incompatible + with the current version of the trait. + UpgradableTraitError: If the trait can upgrade existing data + meant for older versions of the trait. + ValueError: If the trait model with the given ID is not found. + + """ + trait_class = None + try: + trait_class = cls._get_trait_class(trait_id=trait_id) + except LooseMatchingTraitError as e: + requested_version = _get_version_from_id(trait_id) + found_version = _get_version_from_id(e.found_trait.id) + + if not requested_version: + trait_class = e.found_trait + + else: + if requested_version > found_version: + error_msg = ( + f"Requested trait version {requested_version} is " + f"higher than the found trait version {found_version}." + ) + raise IncompatibleTraitVersionError(error_msg) from e + + if requested_version < found_version and hasattr( + e.found_trait, "upgrade"): + error_msg = ( + "Requested trait version " + f"{requested_version} is lower " + f"than the found trait version {found_version}." + ) + error = UpgradableTraitError(error_msg) + error.trait = e.found_trait + raise error from e + return trait_class + + @classmethod + def from_dict( + cls, + name: str, + representation_id: Optional[str]=None, + trait_data: Optional[dict] = None) -> Representation: + """Create a representation from a dictionary. + + Args: + name (str): Representation name. + representation_id (str, optional): Representation ID. + trait_data (dict): Representation data. Dictionary with keys + as trait ids and values as trait data. Example:: + + { + "ayon.2d.PixelBased.v1": { + "display_window_width": 1920, + "display_window_height": 1080 + }, + "ayon.2d.Planar.v1": { + "channels": 3 + } + } + + Returns: + Representation: Representation instance. + + """ + traits = [] + for trait_id, value in trait_data.items(): + if not isinstance(value, dict): + msg = ( + f"Invalid trait data for trait ID {trait_id}. " + "Trait data must be a dictionary." + ) + raise TypeError(msg) + + try: + trait_class = cls.get_trait_class_by_trait_id(trait_id) + except UpgradableTraitError as e: + # we found newer version of trait, we will upgrade the data + if hasattr(e.trait, "upgrade"): + traits.append(e.trait.upgrade(value)) + else: + msg = ( + f"Newer version of trait {e.trait.id} found " + f"for requested {trait_id} but without " + "upgrade method." + ) + raise IncompatibleTraitVersionError(msg) from e + else: + if not trait_class: + error_msg = f"Trait model with ID {trait_id} not found." + raise ValueError(error_msg) + + traits.append(trait_class(**value)) + + return cls( + name=name, representation_id=representation_id, traits=traits) + + + def validate(self) -> bool: + """Validate the representation. + + This method will validate all the traits in the representation. + + Returns: + bool: True if the representation is valid, False otherwise. + + """ + return all(trait.validate(self) for trait in self._data.values()) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 1b2f211468..16aeaba2d1 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -2,16 +2,15 @@ from __future__ import annotations from enum import Enum, auto -from typing import TYPE_CHECKING, ClassVar, Optional, Union +from typing import TYPE_CHECKING, Annotated, ClassVar, Optional, Union -from pydantic import Field +from pydantic import Field, PlainSerializer -from .content import FileLocations -from .trait import MissingTraitError, Representation, TraitBase +from .representation import Representation +from .trait import MissingTraitError, TraitBase if TYPE_CHECKING: from decimal import Decimal - from fractions import Fraction class GapPolicy(Enum): @@ -42,6 +41,13 @@ class FrameRanged(TraitBase): * frame_end -> end_frame ... + Note: frames_per_second is a string to allow various precision + formats. FPS is a floating point number, but it can be also + represented as a fraction (e.g. "30000/1001") or as a decimal + or even as irrational number. We need to support all these + formats. To work with FPS, we'll need some helper function + to convert FPS to Decimal from string. + Attributes: name (str): Trait name. description (str): Trait description. @@ -50,7 +56,7 @@ class FrameRanged(TraitBase): frame_end (int): Frame end. frame_in (int): Frame in. frame_out (int): Frame out. - frames_per_second (float, Fraction, Decimal): Frames per second. + frames_per_second (str): Frames per second. step (int): Step. """ @@ -63,8 +69,7 @@ class FrameRanged(TraitBase): ..., title="Frame Start") frame_in: Optional[int] = Field(None, title="In Frame") frame_out: Optional[int] = Field(None, title="Out Frame") - frames_per_second: Union[float, Fraction, Decimal] = Field( - ..., title="Frames Per Second") + frames_per_second: str = Field(..., title="Frames Per Second") step: Optional[int] = Field(1, title="Step") @@ -83,9 +88,9 @@ class Handles(TraitBase): frame_end_handle (int): Frame end handle. """ - name: ClassVar[str] = "Clip" - description: ClassVar[str] = "Clip Trait" - id: ClassVar[str] = "ayon.time.Clip.v1" + name: ClassVar[str] = "Handles" + description: ClassVar[str] = "Handles Trait" + id: ClassVar[str] = "ayon.time.Handles.v1" inclusive: Optional[bool] = Field( False, title="Handles are inclusive") # noqa: FBT003 frame_start_handle: Optional[int] = Field( @@ -93,7 +98,7 @@ class Handles(TraitBase): frame_end_handle: Optional[int] = Field( 0, title="Frame End Handle") -class Sequence(FrameRanged, Handles): +class Sequence(TraitBase): """Sequence trait model. This model represents a sequence trait. Based on the FrameRanged trait @@ -130,6 +135,7 @@ class Sequence(FrameRanged, Handles): # if there is FileLocations trait, run validation # on it as well try: + from .content import FileLocations file_locs: FileLocations = representation.get_trait( FileLocations) file_locs.validate(representation) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 15e48b6f5a..1f0c72cd9d 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -1,13 +1,9 @@ """Defines the base trait model and representation.""" from __future__ import annotations -import inspect import re -import sys -import uuid from abc import ABC, abstractmethod -from functools import lru_cache -from typing import ClassVar, Optional, Type, TypeVar, Union +from typing import TYPE_CHECKING, Optional import pydantic.alias_generators from pydantic import ( @@ -16,19 +12,8 @@ from pydantic import ( ConfigDict, ) - -def _get_version_from_id(_id: str) -> int: - """Get version from ID. - - Args: - _id (str): ID. - - Returns: - int: Version. - - """ - match = re.search(r"v(\d+)$", _id) - return int(match[1]) if match else None +if TYPE_CHECKING: + from .representation import Representation class TraitBase(ABC, BaseModel): @@ -106,584 +91,8 @@ class TraitBase(ABC, BaseModel): return re.sub(r"\.v\d+$", "", str(cls.id)) -T = TypeVar("T", bound=TraitBase) -class Representation: - """Representation of products. - - Representation defines collection of individual properties that describe - the specific "form" of the product. Each property is represented by a - trait therefore the Representation is a collection of traits. - - It holds methods to add, remove, get, and check for the existence of a - trait in the representation. It also provides a method to get all the - - Arguments: - name (str): Representation name. Must be unique within instance. - representation_id (str): Representation ID. - - """ - _data: dict - _module_blacklist: ClassVar[list[str]] = [ - "_", "builtins", "pydantic"] - name: str - representation_id: str - - def __hash__(self): - """Return hash of the representation ID.""" - return hash(self.representation_id) - - def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: - """Add a trait to the Representation. - - Args: - trait (TraitBase): Trait to add. - exists_ok (bool, optional): If True, do not raise an error if the - trait already exists. Defaults to False. - - Raises: - ValueError: If the trait ID is not provided or the trait already - exists. - - """ - if not hasattr(trait, "id"): - error_msg = f"Invalid trait {trait} - ID is required." - raise ValueError(error_msg) - if trait.id in self._data and not exists_ok: - error_msg = f"Trait with ID {trait.id} already exists." - raise ValueError(error_msg) - self._data[trait.id] = trait - - def add_traits( - self, traits: list[TraitBase], *, exists_ok: bool=False) -> None: - """Add a list of traits to the Representation. - - Args: - traits (list[TraitBase]): List of traits to add. - exists_ok (bool, optional): If True, do not raise an error if the - trait already exists. Defaults to False. - - """ - for trait in traits: - self.add_trait(trait, exists_ok=exists_ok) - - def remove_trait(self, trait: Type[TraitBase]) -> None: - """Remove a trait from the data. - - Args: - trait (TraitBase, optional): Trait class. - - Raises: - ValueError: If the trait is not found. - - """ - try: - self._data.pop(trait.id) - except KeyError as e: - error_msg = f"Trait with ID {trait.id} not found." - raise ValueError(error_msg) from e - - def remove_trait_by_id(self, trait_id: str) -> None: - """Remove a trait from the data by its ID. - - Args: - trait_id (str): Trait ID. - - Raises: - ValueError: If the trait is not found. - - """ - try: - self._data.pop(trait_id) - except KeyError as e: - error_msg = f"Trait with ID {trait_id} not found." - raise ValueError(error_msg) from e - - def remove_traits(self, traits: list[Type[TraitBase]]) -> None: - """Remove a list of traits from the Representation. - - If no trait IDs or traits are provided, all traits will be removed. - - Args: - traits (list[TraitBase]): List of trait classes. - - """ - if not traits: - self._data = {} - return - - for trait in traits: - self.remove_trait(trait) - - def remove_traits_by_id(self, trait_ids: list[str]) -> None: - """Remove a list of traits from the Representation by their ID. - - If no trait IDs or traits are provided, all traits will be removed. - - Args: - trait_ids (list[str], optional): List of trait IDs. - - """ - for trait_id in trait_ids: - self.remove_trait_by_id(trait_id) - - - def has_traits(self) -> bool: - """Check if the Representation has any traits. - - Returns: - bool: True if the Representation has any traits, False otherwise. - - """ - return bool(self._data) - - def contains_trait(self, trait: Type[TraitBase]) -> bool: - """Check if the trait exists in the Representation. - - Args: - trait (TraitBase): Trait class. - - Returns: - bool: True if the trait exists, False otherwise. - - """ - return bool(self._data.get(trait.id)) - - def contains_trait_by_id(self, trait_id: str) -> bool: - """Check if the trait exists using trait id. - - Args: - trait_id (str): Trait ID. - - Returns: - bool: True if the trait exists, False otherwise. - - """ - return bool(self._data.get(trait_id)) - - def contains_traits(self, traits: list[Type[TraitBase]]) -> bool: - """Check if the traits exist. - - Args: - traits (list[TraitBase], optional): List of trait classes. - - Returns: - bool: True if all traits exist, False otherwise. - - """ - return all(self.contains_trait(trait=trait) for trait in traits) - - def contains_traits_by_id(self, trait_ids: list[str]) -> bool: - """Check if the traits exist by id. - - If no trait IDs or traits are provided, it will check if the - representation has any traits. - - Args: - trait_ids (list[str]): List of trait IDs. - - Returns: - bool: True if all traits exist, False otherwise. - - """ - return all( - self.contains_trait_by_id(trait_id) for trait_id in trait_ids - ) - - def get_trait(self, trait: Type[T]) -> Union[T]: - """Get a trait from the representation. - - Args: - trait (TraitBase, optional): Trait class. - - Returns: - TraitBase: Trait instance. - - Raises: - MissingTraitError: If the trait is not found. - - """ - try: - return self._data[trait.id] - except KeyError as e: - msg = f"Trait with ID {trait.id} not found." - raise MissingTraitError(msg) from e - - def get_trait_by_id(self, trait_id: str) -> Union[T]: - # sourcery skip: use-named-expression - """Get a trait from the representation by id. - - Args: - trait_id (str): Trait ID. - - Returns: - TraitBase: Trait instance. - - Raises: - MissingTraitError: If the trait is not found. - - """ - version = _get_version_from_id(trait_id) - if version: - try: - return self._data[trait_id] - except KeyError as e: - msg = f"Trait with ID {trait_id} not found." - raise MissingTraitError(msg) from e - - result = next( - ( - self._data.get(trait_id) - for trait_id in self._data - if trait_id.startswith(trait_id) - ), - None, - ) - if not result: - msg = f"Trait with ID {trait_id} not found." - raise MissingTraitError(msg) - return result - - def get_traits(self, - traits: Optional[list[Type[TraitBase]]]=None - ) -> dict[str, T]: - """Get a list of traits from the representation. - - If no trait IDs or traits are provided, all traits will be returned. - - Args: - traits (list[TraitBase], optional): List of trait classes. - - Returns: - dict: Dictionary of traits. - - """ - result = {} - if not traits: - for trait_id in self._data: - result[trait_id] = self.get_trait_by_id(trait_id=trait_id) - return result - - for trait in traits: - result[trait.id] = self.get_trait(trait=trait) - return result - - def get_traits_by_ids(self, trait_ids: list[str]) -> dict[str, T]: - """Get a list of traits from the representation by their id. - - If no trait IDs or traits are provided, all traits will be returned. - - Args: - trait_ids (list[str]): List of trait IDs. - - Returns: - dict: Dictionary of traits. - - """ - return { - trait_id: self.get_trait_by_id(trait_id) - for trait_id in trait_ids - } - - def traits_as_dict(self) -> dict: - """Return the traits from Representation data as a dictionary. - - Returns: - dict: Traits data dictionary. - - """ - return { - trait_id: trait.dict() - for trait_id, trait in self._data.items() - if trait and trait_id - } - - def __len__(self): - """Return the length of the data.""" - return len(self._data) - - def __init__( - self, - name: str, - representation_id: Optional[str]=None, - traits: Optional[list[TraitBase]]=None): - """Initialize the data. - - Args: - name (str): Representation name. Must be unique within instance. - representation_id (str, optional): Representation ID. - traits (list[TraitBase], optional): List of traits. - """ - self.name = name - self.representation_id = representation_id or uuid.uuid4().hex - self._data = {} - if traits: - for trait in traits: - self.add_trait(trait) - - @staticmethod - def _get_version_from_id(trait_id: str) -> Union[int, None]: - # sourcery skip: use-named-expression - """Check if the trait has version specified. - - Args: - trait_id (str): Trait ID. - - Returns: - int: Trait version. - None: If the trait id does not have a version. - - """ - version_regex = r"v(\d+)$" - match = re.search(version_regex, trait_id) - return int(match[1]) if match else None - - def __eq__(self, other: Representation) -> bool: # noqa: PLR0911 - """Check if the representation is equal to another. - - Args: - other (Representation): Representation to compare. - - Returns: - bool: True if the representations are equal, False otherwise. - - """ - if self.representation_id != other.representation_id: - return False - - if not isinstance(other, Representation): - return False - - if self.name != other.name: - return False - - # number of traits - if len(self) != len(other): - return False - - for trait_id, trait in self._data.items(): - if trait_id not in other._data: - return False - if trait != other._data[trait_id]: - return False - for key, value in trait.dict().items(): - if value != other._data[trait_id].dict().get(key): - return False - - return True - - @classmethod - @lru_cache(maxsize=64) - def _get_possible_trait_classes_from_modules( - cls, - trait_id: str) -> set[type[TraitBase]]: - """Get possible trait classes from modules. - - Args: - trait_id (str): Trait ID. - - Returns: - set[type[TraitBase]]: Set of trait classes. - - """ - modules = sys.modules.copy() - filtered_modules = modules.copy() - for module_name in modules: - for bl_module in cls._module_blacklist: - if module_name.startswith(bl_module): - filtered_modules.pop(module_name) - - trait_candidates = set() - for module in filtered_modules.values(): - if not module: - continue - for _, klass in inspect.getmembers(module, inspect.isclass): - if inspect.isclass(klass) \ - and issubclass(klass, TraitBase) \ - and str(klass.id).startswith(trait_id): - trait_candidates.add(klass) - return trait_candidates - - @classmethod - @lru_cache(maxsize=64) - def _get_trait_class( - cls, trait_id: str) -> Union[Type[TraitBase], None]: - """Get the trait class with corresponding to given ID. - - This method will search for the trait class in all the modules except - the blacklisted modules. There is some issue in Pydantic where - ``issubclass`` is not working properly so we are excluding explicitly - modules with offending classes. This list can be updated as needed to - speed up the search. - - Args: - trait_id (str): Trait ID. - - Returns: - Type[TraitBase]: Trait class. - - Raises: - LooseMatchingTraitError: If the trait is found with a loose - matching criteria. This exception will include the trait - class that was found and the expected trait ID. Additional - downstream logic must decide how to handle this error. - - """ - version = cls._get_version_from_id(trait_id) - - trait_candidates = cls._get_possible_trait_classes_from_modules( - trait_id - ) - - for trait_class in trait_candidates: - if trait_class.id == trait_id: - # we found direct match - return trait_class - - # if we didn't find direct match, we will search for the highest - # version of the trait. - if not version: - # sourcery skip: use-named-expression - trait_versions = [ - trait_class for trait_class in trait_candidates - if re.match( - rf"{trait_id}.v(\d+)$", str(trait_class.id)) - ] - if trait_versions: - def _get_version_by_id(trait_klass: Type[TraitBase]) -> int: - match = re.search(r"v(\d+)$", str(trait_klass.id)) - return int(match[1]) if match else 0 - - error = LooseMatchingTraitError( - "Found trait that might match.") - error.found_trait = max( - trait_versions, key=_get_version_by_id) - error.expected_id = trait_id - raise error - - return None - - @classmethod - def get_trait_class_by_trait_id(cls, trait_id: str) -> type[TraitBase]: - """Get the trait class for the given trait ID. - - Args: - trait_id (str): Trait ID. - - Returns: - type[TraitBase]: Trait class. - - Raises: - IncompatibleTraitVersionError: If the trait version is incompatible - with the current version of the trait. - UpgradableTraitError: If the trait can upgrade existing data - meant for older versions of the trait. - ValueError: If the trait model with the given ID is not found. - - """ - trait_class = None - try: - trait_class = cls._get_trait_class(trait_id=trait_id) - except LooseMatchingTraitError as e: - requested_version = _get_version_from_id(trait_id) - found_version = _get_version_from_id(e.found_trait.id) - - if not requested_version: - trait_class = e.found_trait - - else: - if requested_version > found_version: - error_msg = ( - f"Requested trait version {requested_version} is " - f"higher than the found trait version {found_version}." - ) - raise IncompatibleTraitVersionError(error_msg) from e - - if requested_version < found_version and hasattr( - e.found_trait, "upgrade"): - error_msg = ( - "Requested trait version " - f"{requested_version} is lower " - f"than the found trait version {found_version}." - ) - error = UpgradableTraitError(error_msg) - error.trait = e.found_trait - raise error from e - return trait_class - - @classmethod - def from_dict( - cls, - name: str, - representation_id: Optional[str]=None, - trait_data: Optional[dict] = None) -> Representation: - """Create a representation from a dictionary. - - Args: - name (str): Representation name. - representation_id (str, optional): Representation ID. - trait_data (dict): Representation data. Dictionary with keys - as trait ids and values as trait data. Example:: - - { - "ayon.2d.PixelBased.v1": { - "display_window_width": 1920, - "display_window_height": 1080 - }, - "ayon.2d.Planar.v1": { - "channels": 3 - } - } - - Returns: - Representation: Representation instance. - - """ - traits = [] - for trait_id, value in trait_data.items(): - if not isinstance(value, dict): - msg = ( - f"Invalid trait data for trait ID {trait_id}. " - "Trait data must be a dictionary." - ) - raise TypeError(msg) - - try: - trait_class = cls.get_trait_class_by_trait_id(trait_id) - except UpgradableTraitError as e: - # we found newer version of trait, we will upgrade the data - if hasattr(e.trait, "upgrade"): - traits.append(e.trait.upgrade(value)) - else: - msg = ( - f"Newer version of trait {e.trait.id} found " - f"for requested {trait_id} but without " - "upgrade method." - ) - raise IncompatibleTraitVersionError(msg) from e - else: - if not trait_class: - error_msg = f"Trait model with ID {trait_id} not found." - raise ValueError(error_msg) - - traits.append(trait_class(**value)) - - return cls( - name=name, representation_id=representation_id, traits=traits) - - - def validate(self) -> bool: - """Validate the representation. - - This method will validate all the traits in the representation. - - Returns: - bool: True if the representation is valid, False otherwise. - - """ - return all(trait.validate(self) for trait in self._data.values()) - class IncompatibleTraitVersionError(Exception): diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index cd75443cd0..54386fe8ca 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -5,13 +5,13 @@ from typing import TYPE_CHECKING from clique import assemble -from ayon_core.pipeline.traits import Sequence +from ayon_core.pipeline.traits.time import FrameRanged if TYPE_CHECKING: from pathlib import Path -def get_sequence_from_files(paths: list[Path]) -> Sequence: +def get_sequence_from_files(paths: list[Path]) -> FrameRanged: """Get original frame range from files. Note that this cannot guess frame rate, so it's set to 25. @@ -20,7 +20,7 @@ def get_sequence_from_files(paths: list[Path]) -> Sequence: paths (list[Path]): List of file paths. Returns: - Sequence: Sequence trait. + FrameRanged: FrameRanged trait. """ col = assemble([path.as_posix() for path in paths])[0][0] @@ -30,9 +30,9 @@ def get_sequence_from_files(paths: list[Path]) -> Sequence: # Get last frame for padding last_frame = sorted_frames[-1] # Use padding from collection of length of last frame as string - padding = max(col.padding, len(str(last_frame))) + # padding = max(col.padding, len(str(last_frame))) - return Sequence( - frame_start=first_frame, frame_end=last_frame, frame_padding=padding, - frames_per_second=25 + return FrameRanged( + frame_start=first_frame, frame_end=last_frame, + frames_per_second="25.0" ) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000000..d420712d8b --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Tests.""" diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 7b183a1104..f72a1169c0 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -8,15 +8,17 @@ from ayon_core.pipeline.traits import ( Bundle, FileLocation, FileLocations, + FrameRanged, Image, MimeType, + Overscan, PixelBased, Planar, Representation, Sequence, TraitBase, ) -from pipeline.traits import Overscan +from ayon_core.pipeline.traits.trait import TraitValidationError REPRESENTATION_DATA = { FileLocation.id: { @@ -340,7 +342,7 @@ def test_file_locations_validation() -> None: file_size=1024, file_hash=None, ) - for frame in range(1001, 1050) + for frame in range(1001, 1051) ] representation = Representation(name="test", traits=[ @@ -351,39 +353,40 @@ def test_file_locations_validation() -> None: file_paths=file_locations_list) # this should be valid trait - assert file_locations_trait.validate(representation) is True + file_locations_trait.validate(representation) - # add valid sequence trait - sequence_trait = Sequence( + # add valid FrameRanged trait + sequence_trait = FrameRanged( frame_start=1001, frame_end=1050, frame_padding=4, - frames_per_second=25 + frames_per_second="25" ) representation.add_trait(sequence_trait) # it should still validate fine - assert file_locations_trait.validate(representation) is True + file_locations_trait.validate(representation) # create empty file locations trait empty_file_locations_trait = FileLocations(file_paths=[]) representation = Representation(name="test", traits=[ empty_file_locations_trait ]) - assert empty_file_locations_trait.validate( - representation) is False + with pytest.raises(TraitValidationError): + empty_file_locations_trait.validate(representation) # create valid file locations trait but with not matching sequence # trait representation = Representation(name="test", traits=[ FileLocations(file_paths=file_locations_list) ]) - invalid_sequence_trait = Sequence( + invalid_sequence_trait = FrameRanged( frame_start=1001, frame_end=1051, frame_padding=4, - frames_per_second=25 + frames_per_second="25" ) representation.add_trait(invalid_sequence_trait) - assert file_locations_trait.validate(representation) is False + with pytest.raises(TraitValidationError): + file_locations_trait.validate(representation) diff --git a/tests/conftest.py b/tests/conftest.py index a3c46a9dd7..33c29d13f0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,4 @@ +"""conftest.py: pytest configuration file.""" import sys from pathlib import Path @@ -5,5 +6,3 @@ client_path = Path(__file__).resolve().parent.parent / "client" # add client path to sys.path sys.path.append(str(client_path)) - -print(f"Added {client_path} to sys.path") From 794160f8e31c9f96e5fb19c946fb35ecb6af67d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 13 Nov 2024 14:10:01 +0100 Subject: [PATCH 045/626] :dog: fix ruff issues --- client/ayon_core/pipeline/traits/content.py | 4 ++-- client/ayon_core/pipeline/traits/time.py | 7 +++---- tests/client/ayon_core/pipeline/traits/test_traits.py | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 1563d3b96a..01fe60f0ca 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -135,7 +135,7 @@ class FileLocations(TraitBase): msg = ( f"Number of file locations ({len(self.file_paths) - 1}) " "does not match frame range " - f"({tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start})" + f"({tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start})" # noqa: E501 ) raise TraitValidationError(self.name, msg) @@ -153,7 +153,7 @@ class FileLocations(TraitBase): f"({sequence.frame_start}-{sequence.frame_end}) " "in sequence trait does not match " "frame range " - f"({tmp_frame_ranged.frame_start}-{tmp_frame_ranged.frame_end}) " + f"({tmp_frame_ranged.frame_start}-{tmp_frame_ranged.frame_end}) " # noqa: E501 "defined in files." ) raise TraitValidationError(self.name, msg) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 16aeaba2d1..5ce8d02426 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -2,15 +2,14 @@ from __future__ import annotations from enum import Enum, auto -from typing import TYPE_CHECKING, Annotated, ClassVar, Optional, Union +from typing import TYPE_CHECKING, ClassVar, Optional -from pydantic import Field, PlainSerializer +from pydantic import Field -from .representation import Representation from .trait import MissingTraitError, TraitBase if TYPE_CHECKING: - from decimal import Decimal + from .representation import Representation class GapPolicy(Enum): diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index f72a1169c0..830a58915a 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -50,7 +50,7 @@ class InvalidTrait: """Invalid trait class.""" foo = "bar" -@pytest.fixture() +@pytest.fixture def representation() -> Representation: """Return a traits data instance.""" return Representation(name="test", traits=[ From fc30b854f0650a636861f920e10941ce388e2c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 13 Nov 2024 14:11:25 +0100 Subject: [PATCH 046/626] :dog: remove unused import --- tests/client/ayon_core/pipeline/traits/test_traits.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 830a58915a..42bb523118 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -15,7 +15,6 @@ from ayon_core.pipeline.traits import ( PixelBased, Planar, Representation, - Sequence, TraitBase, ) from ayon_core.pipeline.traits.trait import TraitValidationError From 61b11c809629653e98fb02027d8ae3c0b8f5446c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 18 Nov 2024 16:32:47 +0100 Subject: [PATCH 047/626] :art: WIP get transfers from representation --- .../plugins/publish/integrate_traits.py | 74 +++++++++++++++++-- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 915d4e433f..8687370b3d 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -27,10 +27,12 @@ from ayon_core.pipeline.traits import ( Persistent, Representation, ) -from pipeline.traits import PixelBased +from pipeline.traits import MissingTraitError, PixelBased +from pipeline.traits.content import FileLocations if TYPE_CHECKING: import logging + from pathlib import Path from pipeline import Anatomy @@ -132,7 +134,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance.data["representations_with_traits"] ) - representations = instance.data["representations_with_traits"] + representations: list[Representation] = instance.data["representations_with_traits"] # noqa: E501 if not representations: self.log.debug( "Instance has no persistent representations. Skipping") @@ -154,6 +156,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance.data["versionEntity"] = version_entity instance_template_data = {} + transfers = [] # handle {originalDirname} requested in the template if "{originalDirname}" in template: instance_template_data = { @@ -162,7 +165,10 @@ class IntegrateTraits(pyblish.api.InstancePlugin): } # 6.5) prepare template and data to format it for representation in representations: - template_data = self.get_template_date_from_representation( + + # validate representation first + representation.validate() + template_data = self.get_template_data_from_representation( representation, instance) # add instance based template data template_data.update(instance_template_data) @@ -171,8 +177,11 @@ class IntegrateTraits(pyblish.api.InstancePlugin): # number will be used. template_data.pop("frame", None) # WIP: use trait logic to get original frame range + # check if files listes in FileLocations trait match frames + # in sequence - + transfers += self.get_transfers_from_representation( + representation, template, template_data) # 7) Get transfers from representations for representation in representations: @@ -538,7 +547,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): context.data["ayonAttributes"] = attributes return attributes - def get_template_date_from_representation( + def get_template_data_from_representation( self, representation: Representation, instance: pyblish.api.Instance) -> dict: @@ -586,7 +595,60 @@ class IntegrateTraits(pyblish.api.InstancePlugin): # Note: handle "output" and "originalBasename" - except ValueError as e: + except MissingTraitError as e: self.log.debug("Missing traits: %s", e) return template_data + + def get_transfers_from_representation( + self, + representation: Representation, + template: str, + template_data: dict) -> list: + """Get transfers from representation. + + Args: + representation (Representation): Representation to process. + template (str): Template to format. + template_data (dict): Template data. + + Returns: + list: List of transfers. + + """ + transfers = [] + # check if representation contains traits with files + if not representation.contains_traits( + [FileLocation, FileLocations]): + return transfers + + files: list[Path] = [] + + if representation.contains_trait(FileLocations): + files = [ + location.file_path + for location in representation.get_trait( + FileLocations).file_paths + ] + elif representation.contains_trait(FileLocation): + file_location: FileLocation = representation.get_trait( + FileLocation) + files = [file_location.file_path] + + template_data_copy = copy.deepcopy(template_data) + for file in files: + if "{originalBasename}" in template: + template_data_copy["originalBasename"] = file.stem + """ + dst = path_template_obj.format_strict(template_data) + src = os.path.join(stagingdir, src_file_name) + """ + if representation.contains_trait_by_id( + FileLocation.get_versionless_id()): + file_location: FileLocation = representation.get_trait_by_id( + FileLocation.get_versionless_id()) + """ + transfers += self.get_transfers_from_file_location( + file_location, template, template_data) + """ + return transfers From 4cd5996261c9fe6a307483fa587509912ccd1444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 22 Nov 2024 14:40:44 +0100 Subject: [PATCH 048/626] :bug: fix tests --- .../plugins/publish/test_integrate_traits.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 009cc3b7ff..11922f6c9a 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -8,6 +8,8 @@ import pyblish.api import pytest from ayon_core.pipeline.traits import ( FileLocation, + FileLocations, + FrameRanged, Image, MimeType, Persistent, @@ -92,6 +94,13 @@ def mock_context( instance.data["integrate"] = True instance.data["farm"] = False + _file_size = len(base64.b64decode(PNG_FILE_B64)) + file_locations = [ + FileLocation( + file_path=f, + file_size=_file_size) + for f in sequence_files] + instance.data["representations_with_traits"] = [ Representation(name="test_single", traits=[ Persistent(), @@ -103,18 +112,20 @@ def mock_context( ]), Representation(name="test_sequence", traits=[ Persistent(), - Sequence( + FrameRanged( frame_start=1, frame_end=SEQUENCE_LENGTH, - frame_padding=4, - frame_regex=r"^img\.(\d{4})\.png$", frame_in=0, frame_out=SEQUENCE_LENGTH - 1, - frames_per_second=25 + frames_per_second="25", + ), + Sequence( + frame_padding=4, + frame_regex=r"^img\.(\d{4})\.png$", + ), + FileLocations( + file_paths=file_locations, ), - FileLocation( - file_path=sequence_files[0], - file_size=len(base64.b64decode(PNG_FILE_B64))), Image(), PixelBased( display_window_width=1920, From 13e56429bada4ba61003b5ae0b2ef912e5656f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 22 Nov 2024 17:42:45 +0100 Subject: [PATCH 049/626] :art: add get padding from files --- client/ayon_core/pipeline/traits/time.py | 19 +++++++++++++++++ .../ayon_core/pipeline/traits/test_traits.py | 21 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 5ce8d02426..83534aac18 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -4,11 +4,15 @@ from __future__ import annotations from enum import Enum, auto from typing import TYPE_CHECKING, ClassVar, Optional +import clique from pydantic import Field from .trait import MissingTraitError, TraitBase if TYPE_CHECKING: + from pathlib import Path + + from .content import FileLocations from .representation import Representation @@ -141,6 +145,21 @@ class Sequence(TraitBase): except MissingTraitError: pass + @staticmethod + def get_frame_padding(file_locations: FileLocations) -> int: + """Get frame padding.""" + files: list[Path] = [ + file.file_path.as_posix() + for file in file_locations.file_paths + ] + src_collections, _ = clique.assemble(files) + + src_collection = src_collections[0] + destination_indexes = list(src_collection.indexes) + # Use last frame for minimum padding + # - that should cover both 'udim' and 'frame' minimum padding + return len(str(destination_indexes[-1])) + # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): """SMPTE Timecode trait model.""" diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 42bb523118..514066d4ef 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -15,6 +15,7 @@ from ayon_core.pipeline.traits import ( PixelBased, Planar, Representation, + Sequence, TraitBase, ) from ayon_core.pipeline.traits.trait import TraitValidationError @@ -358,7 +359,6 @@ def test_file_locations_validation() -> None: sequence_trait = FrameRanged( frame_start=1001, frame_end=1050, - frame_padding=4, frames_per_second="25" ) representation.add_trait(sequence_trait) @@ -382,10 +382,27 @@ def test_file_locations_validation() -> None: invalid_sequence_trait = FrameRanged( frame_start=1001, frame_end=1051, - frame_padding=4, frames_per_second="25" ) representation.add_trait(invalid_sequence_trait) with pytest.raises(TraitValidationError): file_locations_trait.validate(representation) + +def test_sequence_get_frame_padding() -> None: + """Test getting frame padding from FileLocations trait.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1051) + ] + + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + + assert Sequence.get_frame_padding( + file_locations=representation.get_trait(FileLocations)) == 4 From dc2607906502f6dfa59eb6f6865d8c42f18a9f57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 26 Nov 2024 23:29:39 +0100 Subject: [PATCH 050/626] :bug: handle `ABCMeta.__issubclass__()` bug? issubclass in ABCMeta doesn't handle `GenericAlias` correctly --- .../pipeline/traits/representation.py | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index acd78a6ce5..34aadd590a 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -6,6 +6,7 @@ import re import sys import uuid from functools import lru_cache +from types import GenericAlias from typing import ClassVar, Optional, Type, TypeVar, Union from .trait import ( @@ -50,7 +51,8 @@ class Representation: """ _data: dict _module_blacklist: ClassVar[list[str]] = [ - "_", "builtins", "pydantic"] + "_", "builtins", "pydantic", + ] name: str representation_id: str @@ -422,9 +424,19 @@ class Representation: for module in filtered_modules.values(): if not module: continue - for _, klass in inspect.getmembers(module, inspect.isclass): - if inspect.isclass(klass) \ - and issubclass(klass, TraitBase) \ + + for attr_name in dir(module): + klass = getattr(module, attr_name) + if not inspect.isclass(klass): + continue + # this needs to be done because of the bug? in + # python ABCMeta, where ``issubclass`` is not working + # if it hits the GenericAlias (that is in fact + # tuple[int, int]). This is added to the scope by + # ``types`` module. + if type(klass) is GenericAlias: + continue + if issubclass(klass, TraitBase) \ and str(klass.id).startswith(trait_id): trait_candidates.add(klass) return trait_candidates From 97fe8ac294fe1d28e9f02282b16982741d566f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 26 Nov 2024 23:30:23 +0100 Subject: [PATCH 051/626] :art: handle frame specs --- client/ayon_core/pipeline/traits/content.py | 46 +++++- client/ayon_core/pipeline/traits/time.py | 154 ++++++++++++++++-- .../ayon_core/pipeline/traits/test_traits.py | 62 +++++++ 3 files changed, 243 insertions(+), 19 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 01fe60f0ca..cf31669336 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -1,14 +1,14 @@ """Content traits for the pipeline.""" from __future__ import annotations -# TCH003 is there because Path in TYPECHECKING will fail in tests -from pathlib import Path # noqa: TCH003 +# TC003 is there because Path in TYPECHECKING will fail in tests +from pathlib import Path # noqa: TC003 from typing import ClassVar, Optional from pydantic import Field from .representation import Representation -from .time import FrameRanged +from .time import FrameRanged, Sequence from .trait import ( MissingTraitError, TraitBase, @@ -106,7 +106,7 @@ class FileLocations(TraitBase): id: ClassVar[str] = "ayon.content.FileLocations.v1" file_paths: list[FileLocation] = Field(..., title="File Path") - def validate(self, representation: Representation) -> bool: + def validate(self, representation: Representation) -> None: """Validate the trait. This method validates the trait against others in the representation. @@ -120,6 +120,7 @@ class FileLocations(TraitBase): bool: True if the trait is valid, False otherwise """ + super().validate(representation) if len(self.file_paths) == 0: # If there are no file paths, we can't validate msg = "No file locations defined (empty list)" @@ -128,6 +129,33 @@ class FileLocations(TraitBase): tmp_frame_ranged: FrameRanged = get_sequence_from_files( [f.file_path for f in self.file_paths]) + frames_from_spec = None + try: + sequence: Sequence = representation.get_trait(Sequence) + if sequence.frame_spec: + frames_from_spec: list[int] = sequence.get_frame_list( + self, sequence.frame_regex) + + except MissingTraitError: + # If there is no sequence trait, we can't validate it + pass + if frames_from_spec: + if len(frames_from_spec) != len(self.file_paths) : + # If the number of file paths does not match the frame range, + # the trait is invalid + msg = ( + f"Number of file locations ({len(self.file_paths)}) " + "does not match frame range defined by frame spec " + "on Sequence trait: " + f"({len(frames_from_spec)})" + ) + raise TraitValidationError(self.name, msg) + # if there is frame spec on the Sequence trait + # we should not validate the frame range from the files. + # the rest is validated by Sequence validators. + return + + if len(self.file_paths) - 1 != \ tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start: # If the number of file paths does not match the frame range, @@ -140,17 +168,17 @@ class FileLocations(TraitBase): raise TraitValidationError(self.name, msg) try: - sequence: FrameRanged = representation.get_trait(FrameRanged) + frame_ranged: FrameRanged = representation.get_trait(FrameRanged) - if sequence.frame_start != tmp_frame_ranged.frame_start or \ - sequence.frame_end != tmp_frame_ranged.frame_end: + if frame_ranged.frame_start != tmp_frame_ranged.frame_start or \ + frame_ranged.frame_end != tmp_frame_ranged.frame_end: # If the frame range does not match the sequence trait, the # trait is invalid. Note that we don't check the frame rate # because it is not stored in the file paths and is not # determined by `get_sequence_from_files`. msg = ( "Frame range " - f"({sequence.frame_start}-{sequence.frame_end}) " + f"({frame_ranged.frame_start}-{frame_ranged.frame_end}) " "in sequence trait does not match " "frame range " f"({tmp_frame_ranged.frame_start}-{tmp_frame_ranged.frame_end}) " # noqa: E501 @@ -159,7 +187,7 @@ class FileLocations(TraitBase): raise TraitValidationError(self.name, msg) except MissingTraitError: - # If there is no sequence trait, we can't validate it + # If there is no frame_ranged trait, we can't validate it pass diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 83534aac18..eacaa72235 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -7,9 +7,10 @@ from typing import TYPE_CHECKING, ClassVar, Optional import clique from pydantic import Field -from .trait import MissingTraitError, TraitBase +from .trait import MissingTraitError, TraitBase, TraitValidationError if TYPE_CHECKING: + import re from pathlib import Path from .content import FileLocations @@ -117,7 +118,7 @@ class Sequence(TraitBase): frame_padding (int): Frame padding. frame_regex (str): Frame regex - regular expression to match frame numbers. - frame_list (str): Frame list specification of frames. This takes + frame_spec (str): Frame list specification of frames. This takes string like "1-10,20-30,40-50" etc. """ @@ -127,13 +128,12 @@ class Sequence(TraitBase): gaps_policy: GapPolicy = Field( GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") - frame_regex: str = Field(..., title="Frame Regex") - frame_list: Optional[str] = Field(None, title="Frame List") + frame_regex: Optional[str] = Field(None, title="Frame Regex") + frame_spec: Optional[str] = Field(None, title="Frame Specification") def validate(self, representation: Representation) -> None: """Validate the trait.""" - if not super().validate(representation): - return False + super().validate(representation) # if there is FileLocations trait, run validation # on it as well @@ -142,24 +142,158 @@ class Sequence(TraitBase): file_locs: FileLocations = representation.get_trait( FileLocations) file_locs.validate(representation) + # validate if file locations on representation + # matches the frame list (if any) + self.validate_frame_list(file_locs) + self.validate_frame_padding(file_locs) except MissingTraitError: pass + def validate_frame_list( + self, file_locations: FileLocations) -> None: + """Validate frame list. + + This will take FileLocations trait and validate if the + file locations match the frame list specification. + + For example, if frame list is "1-10,20-30,40-50", then + the frame numbers in the file locations should match + these frames. + + It will skip the validation if frame list is not provided. + + Args: + file_locations (FileLocations): File locations trait. + + Raises: + TraitValidationError: If frame list does not match + the expected frames. + + """ + if self.frame_spec is None: + return + + frames: list[int] = self.get_frame_list( + file_locations, self.frame_regex) + + expected_frames = self.list_spec_to_frames(self.frame_spec) + if set(frames) != set(expected_frames): + msg = ( + "Frame list does not match the expected frames. " + f"Expected: {expected_frames}, Found: {frames}" + ) + raise TraitValidationError(self.name, msg) + + def validate_frame_padding( + self, file_locations: FileLocations) -> None: + """Validate frame padding. + + This will take FileLocations trait and validate if the + frame padding matches the expected frame padding. + + Args: + file_locations (FileLocations): File locations trait. + + Raises: + TraitValidationError: If frame padding does not match + the expected frame padding. + + """ + expected_padding = self.get_frame_padding(file_locations) + if self.frame_padding != expected_padding: + msg = ( + "Frame padding does not match the expected frame padding. " + f"Expected: {expected_padding}, Found: {self.frame_padding}" + ) + raise TraitValidationError(msg) + @staticmethod - def get_frame_padding(file_locations: FileLocations) -> int: - """Get frame padding.""" + def list_spec_to_frames(list_spec: str) -> list[int]: + """Convert list specification to frames.""" + frames = [] + segments = list_spec.split(",") + for segment in segments: + ranges = segment.split("-") + if len(ranges) == 1: + if not ranges[0].isdigit(): + msg = ( + "Invalid frame number " + f"in the list: {ranges[0]}" + ) + raise ValueError(msg) + frames.append(int(ranges[0])) + continue + start, end = segment.split("-") + start, end = int(start), int(end) + frames.extend(range(start, end + 1)) + return frames + + + @staticmethod + def _get_collection( + file_locations: FileLocations, + regex: Optional[re.Pattern] = None) -> clique.Collection: + r"""Get collection from file locations. + + Args: + file_locations (FileLocations): File locations trait. + regex (Optional[re.Pattern]): Regular expression to match + frame numbers. This is passed to ``clique.assemble()``. + Default clique pattern is:: + + \.(?P(?P0*)\d+)\.\D+\d?$ + + Returns: + clique.Collection: Collection instance. + + Raises: + ValueError: If zero or multiple collections found. + + """ + patterns = None if not regex else [regex] files: list[Path] = [ file.file_path.as_posix() for file in file_locations.file_paths ] - src_collections, _ = clique.assemble(files) + src_collections, _ = clique.assemble(files, patterns=patterns) + if len(src_collections) != 1: + msg = ( + f"Zero or multiple collections found: {len(src_collections)} " + "expected 1" + ) + raise ValueError(msg) + return src_collections[0] - src_collection = src_collections[0] + @staticmethod + def get_frame_padding(file_locations: FileLocations) -> int: + """Get frame padding.""" + src_collection = Sequence._get_collection(file_locations) destination_indexes = list(src_collection.indexes) # Use last frame for minimum padding # - that should cover both 'udim' and 'frame' minimum padding return len(str(destination_indexes[-1])) + @staticmethod + def get_frame_list( + file_locations: FileLocations, + regex: Optional[re.Pattern] = None, + ) -> list[int]: + r"""Get frame list. + + Args: + file_locations (FileLocations): File locations trait. + regex (Optional[re.Pattern]): Regular expression to match + frame numbers. This is passed to ``clique.assemble()``. + Default clique pattern is:: + + \.(?P(?P0*)\d+)\.\D+\d?$ + Returns: + list[int]: List of frame numbers. + + """ + src_collection = Sequence._get_collection(file_locations, regex) + return list(src_collection.indexes) + # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): """SMPTE Timecode trait model.""" diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 514066d4ef..319401b91e 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -406,3 +406,65 @@ def test_sequence_get_frame_padding() -> None: assert Sequence.get_frame_padding( file_locations=representation.get_trait(FileLocations)) == 4 + +def test_sequence_validations() -> None: + """Test Sequence trait validation.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1010 + 1) # because range is zero based + ] + + file_locations_list += [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1015, 1020 + 1) + ] + + file_locations_list += [ + FileLocation + ( + file_path=Path("/path/to/file.1100.exr"), + file_size=1024, + file_hash=None, + ) + ] + + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list), + FrameRanged( + frame_start=1001, + frame_end=1100, frames_per_second="25"), + Sequence( + frame_padding=4, + frame_spec="1001-1010,1015-1020,1100") + ]) + + representation.get_trait(Sequence).validate(representation) + + + + +def test_list_spec_to_frames() -> None: + """Test converting list specification to frames.""" + assert Sequence.list_spec_to_frames("1-10,20-30,55") == [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 55 + ] + assert Sequence.list_spec_to_frames("1,2,3,4,5") == [ + 1, 2, 3, 4, 5 + ] + assert Sequence.list_spec_to_frames("1-10") == [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 + ] + assert Sequence.list_spec_to_frames("1") == [1] + with pytest.raises( + ValueError, + match="Invalid frame number in the list: .*"): + Sequence.list_spec_to_frames("a") From 32d82e47e64a18f241ce36427bc6ae97db9e2965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 29 Nov 2024 11:27:41 +0100 Subject: [PATCH 052/626] :art: add persistent property to trait persistent drives if the trait should be integrated or not. Difference between Persistent trait and persistent attribute is that the trait drives the lifecycle of the representation but the attribute drives lifecycle of trait. --- client/ayon_core/pipeline/traits/trait.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 1f0c72cd9d..d377ab8846 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -10,6 +10,7 @@ from pydantic import ( AliasGenerator, BaseModel, ConfigDict, + Field, ) if TYPE_CHECKING: @@ -32,6 +33,10 @@ class TraitBase(ABC, BaseModel): ) ) + persitent: bool = Field( + default=True, title="Persitent", + description="Whether the trait is persistent (integrated) or not.") + @property @abstractmethod def id(self) -> str: From 60f10feeeea54606dd278175237da2a27001aab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 29 Nov 2024 11:28:19 +0100 Subject: [PATCH 053/626] :art: add dict-like behavior to Representation that and some tests --- .../pipeline/traits/representation.py | 67 ++++++++++++++++++- .../ayon_core/pipeline/traits/test_traits.py | 15 ++++- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index 34aadd590a..756c4dfb67 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -1,6 +1,7 @@ """Defines the base trait model and representation.""" from __future__ import annotations +import contextlib import inspect import re import sys @@ -49,7 +50,7 @@ class Representation: representation_id (str): Representation ID. """ - _data: dict + _data: dict[str, T] _module_blacklist: ClassVar[list[str]] = [ "_", "builtins", "pydantic", ] @@ -60,6 +61,70 @@ class Representation: """Return hash of the representation ID.""" return hash(self.representation_id) + def __getitem__(self, key: str) -> T: + """Get the trait by ID. + + Args: + key (str): Trait ID. + + Returns: + TraitBase: Trait instance. + + Raises: + MissingTraitError: If the trait is not found. + + """ + return self.get_trait_by_id(key) + + def __setitem__(self, key: str, value: T) -> None: + """Set the trait by ID. + + Args: + key (str): Trait ID. + value (TraitBase): Trait instance. + + """ + with contextlib.suppress(KeyError): + self._data.pop(key) + + self.add_trait(value) + + def __delitem__(self, key: str) -> None: + """Remove the trait by ID. + + Args: + key (str): Trait ID. + + Raises: + ValueError: If the trait is not found. + + """ + self.remove_trait_by_id(key) + + def __contains__(self, key: str) -> bool: + """Check if the trait exists by ID. + + Args: + key (str): Trait ID. + + Returns: + bool: True if the trait exists, False otherwise. + + """ + return self.contains_trait_by_id(key) + + def __iter__(self): + """Return the trait ID iterator.""" + return iter(self._data) + + def __str__(self): + """Return the representation name.""" + return self.name + + def items(self) -> dict[str, T]: + """Return the traits as items.""" + return self._data.items() + def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: """Add a trait to the Representation. diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 319401b91e..b8fa3962cc 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -25,15 +25,18 @@ REPRESENTATION_DATA = { "file_path": Path("/path/to/file"), "file_size": 1024, "file_hash": None, + "persitent": True, }, - Image.id: {}, + Image.id: {"persitent": True}, PixelBased.id: { "display_window_width": 1920, "display_window_height": 1080, "pixel_aspect_ratio": 1.0, + "persitent": True, }, Planar.id: { "planar_configuration": "RGB", + "persitent": True, }, } @@ -168,6 +171,16 @@ def test_trait_removing(representation: Representation) -> None: ValueError, match=f"Trait with ID {Image.id} not found."): representation.remove_trait(Image) +def test_representation_dict_properties(representation: Representation) -> None: + """Test representation as dictionary.""" + representation = Representation(name="test") + representation[Image.id] = Image() + assert Image.id in representation + image = representation[Image.id] + assert image == Image() + for trait_id, trait in representation.items(): + assert trait_id == Image.id + assert trait == Image() def test_getting_traits_data(representation: Representation) -> None: From 265b1816e88b38288f5486517098cf0fcf981238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 00:49:04 +0100 Subject: [PATCH 054/626] :recycle: simplify equality check and validation --- client/ayon_core/pipeline/traits/representation.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index 756c4dfb67..d365ea1ed2 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -430,7 +430,7 @@ class Representation: match = re.search(version_regex, trait_id) return int(match[1]) if match else None - def __eq__(self, other: Representation) -> bool: # noqa: PLR0911 + def __eq__(self, other: object) -> bool: # noqa: PLR0911 """Check if the representation is equal to another. Args: @@ -440,10 +440,10 @@ class Representation: bool: True if the representations are equal, False otherwise. """ - if self.representation_id != other.representation_id: + if not isinstance(other, Representation): return False - if not isinstance(other, Representation): + if self.representation_id != other.representation_id: return False if self.name != other.name: @@ -458,9 +458,6 @@ class Representation: return False if trait != other._data[trait_id]: return False - for key, value in trait.model_dump().items(): - if value != other._data[trait_id].model_dump().get(key): - return False return True @@ -683,4 +680,5 @@ class Representation: bool: True if the representation is valid, False otherwise. """ - return all(trait.validate(self) for trait in self._data.values()) + for trait in self._data.values(): + trait.validate(self) From 5e0509ca488ddb6254f0fae19b5bae9a2835345f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 00:49:33 +0100 Subject: [PATCH 055/626] :art: enhance range validations --- client/ayon_core/pipeline/traits/content.py | 149 ++++++++++++++++---- client/ayon_core/pipeline/traits/time.py | 97 +++++++++++-- 2 files changed, 205 insertions(+), 41 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index cf31669336..36b373036c 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -1,6 +1,8 @@ """Content traits for the pipeline.""" from __future__ import annotations +import contextlib + # TC003 is there because Path in TYPECHECKING will fail in tests from pathlib import Path # noqa: TC003 from typing import ClassVar, Optional @@ -8,7 +10,7 @@ from typing import ClassVar, Optional from pydantic import Field from .representation import Representation -from .time import FrameRanged, Sequence +from .time import FrameRanged, Handles, Sequence from .trait import ( MissingTraitError, TraitBase, @@ -125,20 +127,55 @@ class FileLocations(TraitBase): # If there are no file paths, we can't validate msg = "No file locations defined (empty list)" raise TraitValidationError(self.name, msg) + if representation.contains_trait(FrameRanged): + self._validate_frame_range(representation) + def _validate_frame_range(self, representation: Representation) -> None: + """Validate the frame range against the file paths. + + If the representation contains a FrameRanged trait, this method will + validate the frame range against the file paths. If the frame range + does not match the file paths, the trait is invalid. It takes into + account the Handles and Sequence traits. + + Args: + representation (Representation): Representation to validate. + + Raises: + TraitValidationError: If the trait is invalid within the + representation. + + """ tmp_frame_ranged: FrameRanged = get_sequence_from_files( [f.file_path for f in self.file_paths]) frames_from_spec = None - try: + with contextlib.suppress(MissingTraitError): sequence: Sequence = representation.get_trait(Sequence) if sequence.frame_spec: frames_from_spec: list[int] = sequence.get_frame_list( self, sequence.frame_regex) - except MissingTraitError: - # If there is no sequence trait, we can't validate it - pass + frame_start_with_handles, frame_end_with_handles = \ + self._get_frame_info_with_handles(representation, frames_from_spec) + + if frame_start_with_handles \ + and tmp_frame_ranged.frame_start != frame_start_with_handles: + # If the detected frame range does not match the combined + # FrameRanged and Handles trait, the + # trait is invalid. + msg = ( + f"Frame range defined by {self.name} " + f"({tmp_frame_ranged.frame_start}-" + f"{tmp_frame_ranged.frame_end}) " + "in files does not match " + "frame range " + f"({frame_start_with_handles}-" + f"{frame_end_with_handles}) defined in FrameRanged trait." + ) + + raise TraitValidationError(self.name, msg) + if frames_from_spec: if len(frames_from_spec) != len(self.file_paths) : # If the number of file paths does not match the frame range, @@ -155,40 +192,94 @@ class FileLocations(TraitBase): # the rest is validated by Sequence validators. return + length_with_handles: int = ( + frame_end_with_handles - frame_start_with_handles + 1 + ) - if len(self.file_paths) - 1 != \ - tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start: + if len(self.file_paths) != length_with_handles: # If the number of file paths does not match the frame range, # the trait is invalid msg = ( - f"Number of file locations ({len(self.file_paths) - 1}) " + f"Number of file locations ({len(self.file_paths)}) " "does not match frame range " - f"({tmp_frame_ranged.frame_end - tmp_frame_ranged.frame_start})" # noqa: E501 + f"({length_with_handles})" ) raise TraitValidationError(self.name, msg) - try: - frame_ranged: FrameRanged = representation.get_trait(FrameRanged) + frame_ranged: FrameRanged = representation.get_trait(FrameRanged) - if frame_ranged.frame_start != tmp_frame_ranged.frame_start or \ - frame_ranged.frame_end != tmp_frame_ranged.frame_end: - # If the frame range does not match the sequence trait, the - # trait is invalid. Note that we don't check the frame rate - # because it is not stored in the file paths and is not - # determined by `get_sequence_from_files`. - msg = ( - "Frame range " - f"({frame_ranged.frame_start}-{frame_ranged.frame_end}) " - "in sequence trait does not match " - "frame range " - f"({tmp_frame_ranged.frame_start}-{tmp_frame_ranged.frame_end}) " # noqa: E501 - "defined in files." - ) - raise TraitValidationError(self.name, msg) + if frame_start_with_handles != tmp_frame_ranged.frame_start or \ + frame_end_with_handles != tmp_frame_ranged.frame_end: + # If the frame range does not match the FrameRanged trait, the + # trait is invalid. Note that we don't check the frame rate + # because it is not stored in the file paths and is not + # determined by `get_sequence_from_files`. + msg = ( + "Frame range " + f"({frame_ranged.frame_start}-{frame_ranged.frame_end}) " + "in sequence trait does not match " + "frame range " + f"({tmp_frame_ranged.frame_start}-" + f"{tmp_frame_ranged.frame_end}) " + ) + raise TraitValidationError(self.name, msg) - except MissingTraitError: - # If there is no frame_ranged trait, we can't validate it - pass + def _get_frame_info_with_handles( + self, + representation: Representation, + frames_from_spec: list[int]) -> tuple[int, int]: + """Get the frame range with handles from the representation. + + This will return frame start and frame end with handles calculated + in if there actually is the Handles trait in the representation. + + Args: + representation (Representation): Representation to get the frame + range from. + frames_from_spec (list[int]): List of frames from the frame spec. + This list is modified in place to take into + account the handles. + + Mutates: + frames_from_spec: List of frames from the frame spec. + + Returns: + tuple[int, int]: Start and end frame with handles. + + """ + frame_start = frame_end = 0 + frame_start_handle = frame_end_handle = 0 + # If there is no sequence trait, we can't validate it + if frames_from_spec and representation.contains_trait(FrameRanged): + # if there is no FrameRanged trait (but really there should be) + # we can use the frame range from the frame spec + frame_start = min(frames_from_spec) + frame_end = max(frames_from_spec) + + # Handle the frame range + with contextlib.suppress(MissingTraitError): + frame_start = representation.get_trait(FrameRanged).frame_start + frame_end = representation.get_trait(FrameRanged).frame_end + + # Handle the handles :P + with contextlib.suppress(MissingTraitError): + handles: Handles = representation.get_trait(Handles) + if not handles.inclusive: + # if handless are exclusive, we need to adjust the frame range + frame_start_handle = handles.frame_start_handle + frame_end_handle = handles.frame_end_handle + if frames_from_spec: + frames_from_spec.extend( + range(frame_start - frame_start_handle, frame_start) + ) + frames_from_spec.extend( + range(frame_end + 1, frame_end_handle + frame_end + 1) + ) + + frame_start_with_handles = frame_start - frame_start_handle + frame_end_with_handles = frame_end + frame_end_handle + + return frame_start_with_handles, frame_end_with_handles class RootlessLocation(TraitBase): diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index eacaa72235..0ab7cfaa9e 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -1,6 +1,7 @@ """Temporal (time related) traits.""" from __future__ import annotations +import contextlib from enum import Enum, auto from typing import TYPE_CHECKING, ClassVar, Optional @@ -137,20 +138,62 @@ class Sequence(TraitBase): # if there is FileLocations trait, run validation # on it as well - try: - from .content import FileLocations - file_locs: FileLocations = representation.get_trait( - FileLocations) - file_locs.validate(representation) - # validate if file locations on representation - # matches the frame list (if any) - self.validate_frame_list(file_locs) - self.validate_frame_padding(file_locs) - except MissingTraitError: - pass + + with contextlib.suppress(MissingTraitError): + self._validate_file_locations(representation) + + def _validate_file_locations(self, representation: Representation) -> None: + """Validate file locations trait. + + If along with the Sequence trait, there is a FileLocations trait, + then we need to validate if the file locations match the frame + list specification. + + Args: + representation (Representation): Representation instance. + + Raises: + TraitValidationError: If file locations do not match the + frame list specification + + """ + from .content import FileLocations + file_locs: FileLocations = representation.get_trait( + FileLocations) + # validate if file locations on representation + # matches the frame list (if any) + # we need to extend the expected frames with Handles + frame_start = None + frame_end = None + handles_frame_start = None + handles_frame_end = None + with contextlib.suppress(MissingTraitError): + handles: Handles = representation.get_trait(Handles) + # if handles are inclusive, they should be already + # accounted in the FrameRaged frame spec + if not handles.inclusive: + handles_frame_start = handles.frame_start_handle + handles_frame_end = handles.frame_end_handle + with contextlib.suppress(MissingTraitError): + frame_ranged: FrameRanged = representation.get_trait( + FrameRanged) + frame_start = frame_ranged.frame_start + frame_end = frame_ranged.frame_end + self.validate_frame_list( + file_locs, + frame_start, + frame_end, + handles_frame_start, + handles_frame_end) + self.validate_frame_padding(file_locs) def validate_frame_list( - self, file_locations: FileLocations) -> None: + self, + file_locations: FileLocations, + frame_start: Optional[int] = None, + frame_end: Optional[int] = None, + handles_frame_start: Optional[int] = None, + handles_frame_end: Optional[int] = None) -> None: """Validate frame list. This will take FileLocations trait and validate if the @@ -164,6 +207,10 @@ class Sequence(TraitBase): Args: file_locations (FileLocations): File locations trait. + frame_start (Optional[int]): Frame start. + frame_end (Optional[int]): Frame end. + handles_frame_start (Optional[int]): Frame start handle. + handles_frame_end (Optional[int]): Frame end handle. Raises: TraitValidationError: If frame list does not match @@ -177,6 +224,32 @@ class Sequence(TraitBase): file_locations, self.frame_regex) expected_frames = self.list_spec_to_frames(self.frame_spec) + if frame_start is None or frame_end is None: + if min(expected_frames) != frame_start: + msg = ( + "Frame start does not match the expected frame start. " + f"Expected: {frame_start}, Found: {min(expected_frames)}" + ) + raise TraitValidationError(self.name, msg) + + if max(expected_frames) != frame_end: + msg = ( + "Frame end does not match the expected frame end. " + f"Expected: {frame_end}, Found: {max(expected_frames)}" + ) + raise TraitValidationError(self.name, msg) + + # we need to extend the expected frames with Handles + if handles_frame_start is not None: + expected_frames.extend( + range( + min(frames) - handles_frame_start, min(frames) + 1)) + + if handles_frame_end is not None: + expected_frames.extend( + range( + max(frames), max(frames) + handles_frame_end + 1)) + if set(frames) != set(expected_frames): msg = ( "Frame list does not match the expected frames. " From 799b0bca855b53a0352ad115a403db1aacb2c1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 00:49:54 +0100 Subject: [PATCH 056/626] :alembic: split test to more files --- .../pipeline/traits/test_content_traits.py | 119 +++++++++ .../pipeline/traits/test_time_traits.py | 228 +++++++++++++++++ .../ayon_core/pipeline/traits/test_traits.py | 230 +++++------------- 3 files changed, 405 insertions(+), 172 deletions(-) create mode 100644 tests/client/ayon_core/pipeline/traits/test_content_traits.py create mode 100644 tests/client/ayon_core/pipeline/traits/test_time_traits.py diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py new file mode 100644 index 0000000000..d41e9076c3 --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -0,0 +1,119 @@ +"""Tests for the content traits.""" +from __future__ import annotations + +from pathlib import Path + +import pytest +from ayon_core.pipeline.traits import ( + Bundle, + FileLocation, + FileLocations, + FrameRanged, + Image, + MimeType, + PixelBased, + Planar, + Representation, +) +from ayon_core.pipeline.traits.trait import TraitValidationError + + +def test_bundles() -> None: + """Test bundle trait.""" + diffuse_texture = [ + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + FileLocation( + file_path=Path("/path/to/diffuse.jpg"), + file_size=1024, + file_hash=None), + MimeType(mime_type="image/jpeg"), + ] + bump_texture = [ + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + FileLocation( + file_path=Path("/path/to/bump.tif"), + file_size=1024, + file_hash=None), + MimeType(mime_type="image/tiff"), + ] + bundle = Bundle(items=[diffuse_texture, bump_texture]) + representation = Representation(name="test_bundle", traits=[bundle]) + + if representation.contains_trait(trait=Bundle): + assert representation.get_trait(trait=Bundle).items == [ + diffuse_texture, bump_texture + ] + + for item in representation.get_trait(trait=Bundle).items: + sub_representation = Representation(name="test", traits=item) + assert sub_representation.contains_trait(trait=Image) + assert sub_representation.get_trait(trait=MimeType).mime_type in [ + "image/jpeg", "image/tiff" + ] + + +def test_file_locations_validation() -> None: + """Test FileLocations trait validation.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1051) + ] + + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + + file_locations_trait: FileLocations = FileLocations( + file_paths=file_locations_list) + + # this should be valid trait + file_locations_trait.validate(representation) + + # add valid FrameRanged trait + sequence_trait = FrameRanged( + frame_start=1001, + frame_end=1050, + frames_per_second="25" + ) + representation.add_trait(sequence_trait) + + # it should still validate fine + file_locations_trait.validate(representation) + + # create empty file locations trait + empty_file_locations_trait = FileLocations(file_paths=[]) + representation = Representation(name="test", traits=[ + empty_file_locations_trait + ]) + with pytest.raises(TraitValidationError): + empty_file_locations_trait.validate(representation) + + # create valid file locations trait but with not matching sequence + # trait + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + invalid_sequence_trait = FrameRanged( + frame_start=1001, + frame_end=1051, + frames_per_second="25" + ) + + representation.add_trait(invalid_sequence_trait) + with pytest.raises(TraitValidationError): + file_locations_trait.validate(representation) + diff --git a/tests/client/ayon_core/pipeline/traits/test_time_traits.py b/tests/client/ayon_core/pipeline/traits/test_time_traits.py new file mode 100644 index 0000000000..b903c9eae5 --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/test_time_traits.py @@ -0,0 +1,228 @@ +"""Tests for the time related traits.""" +from __future__ import annotations + +from pathlib import Path + +import pytest +from ayon_core.pipeline.traits import ( + FileLocation, + FileLocations, + FrameRanged, + Handles, + Representation, + Sequence, +) +from ayon_core.pipeline.traits.trait import TraitValidationError + + +def test_sequence_validations() -> None: + """Test Sequence trait validation.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1010 + 1) # because range is zero based + ] + + file_locations_list += [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1015, 1020 + 1) + ] + + file_locations_list += [ + FileLocation + ( + file_path=Path("/path/to/file.1100.exr"), + file_size=1024, + file_hash=None, + ) + ] + + representation = Representation(name="test_1", traits=[ + FileLocations(file_paths=file_locations_list), + FrameRanged( + frame_start=1001, + frame_end=1100, frames_per_second="25"), + Sequence( + frame_padding=4, + frame_spec="1001-1010,1015-1020,1100") + ]) + + representation.get_trait(Sequence).validate(representation) + + # here we set handles and set them as inclusive, so this should pass + representation = Representation(name="test_2", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1100 + 1) # because range is zero based + ]), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=True + ), + FrameRanged( + frame_start=1001, + frame_end=1100, frames_per_second="25"), + Sequence(frame_padding=4) + ]) + + representation.validate() + + # do the same but set handles as exclusive + representation = Representation(name="test_3", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(996, 1105 + 1) # because range is zero based + ]), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=False + ), + FrameRanged( + frame_start=1001, + frame_end=1100, frames_per_second="25"), + Sequence(frame_padding=4) + ]) + + representation.validate() + + # invalid representation with file range not extended for handles + representation = Representation(name="test_4", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1050 + 1) # because range is zero based + ]), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=False + ), + FrameRanged( + frame_start=1001, + frame_end=1050, frames_per_second="25"), + Sequence(frame_padding=4) + ]) + + with pytest.raises(TraitValidationError): + representation.validate() + + # invalid representation with frame spec not matching the files + del representation + representation = Representation(name="test_5", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1050 + 1) # because range is zero based + ]), + FrameRanged( + frame_start=1001, + frame_end=1050, frames_per_second="25"), + Sequence(frame_padding=4, frame_spec="1001-1010,1012-2000") + ]) + with pytest.raises(TraitValidationError): + representation.validate() + + representation = Representation(name="test_6", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1050 + 1) # because range is zero based + ]), + Sequence(frame_padding=4, frame_spec="1-1010,1012-1050"), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=False + ) + ]) + with pytest.raises(TraitValidationError): + representation.validate() + + representation = Representation(name="test_6", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(996, 1050 + 1) # because range is zero based + ]), + Sequence(frame_padding=4, frame_spec="1001-1010,1012-2000"), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=False + ) + ]) + with pytest.raises(TraitValidationError): + representation.validate() + + + +def test_list_spec_to_frames() -> None: + """Test converting list specification to frames.""" + assert Sequence.list_spec_to_frames("1-10,20-30,55") == [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 55 + ] + assert Sequence.list_spec_to_frames("1,2,3,4,5") == [ + 1, 2, 3, 4, 5 + ] + assert Sequence.list_spec_to_frames("1-10") == [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 + ] + test_list = list(range(1001, 1011)) + test_list += list(range(1012, 2001)) + assert Sequence.list_spec_to_frames("1001-1010,1012-2000") == test_list + + assert Sequence.list_spec_to_frames("1") == [1] + with pytest.raises( + ValueError, + match="Invalid frame number in the list: .*"): + Sequence.list_spec_to_frames("a") + + +def test_sequence_get_frame_padding() -> None: + """Test getting frame padding from FileLocations trait.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1051) + ] + + representation = Representation(name="test", traits=[ + FileLocations(file_paths=file_locations_list) + ]) + + assert Sequence.get_frame_padding( + file_locations=representation.get_trait(FileLocations)) == 4 + diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index b8fa3962cc..e4033c1d28 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -7,18 +7,14 @@ import pytest from ayon_core.pipeline.traits import ( Bundle, FileLocation, - FileLocations, - FrameRanged, Image, MimeType, Overscan, PixelBased, Planar, Representation, - Sequence, TraitBase, ) -from ayon_core.pipeline.traits.trait import TraitValidationError REPRESENTATION_DATA = { FileLocation.id: { @@ -171,7 +167,8 @@ def test_trait_removing(representation: Representation) -> None: ValueError, match=f"Trait with ID {Image.id} not found."): representation.remove_trait(Image) -def test_representation_dict_properties(representation: Representation) -> None: +def test_representation_dict_properties( + representation: Representation) -> None: """Test representation as dictionary.""" representation = Representation(name="test") representation[Image.id] = Image() @@ -207,49 +204,6 @@ def test_traits_data_to_dict(representation: Representation) -> None: assert result == REPRESENTATION_DATA -def test_bundles() -> None: - """Test bundle trait.""" - diffuse_texture = [ - Image(), - PixelBased( - display_window_width=1920, - display_window_height=1080, - pixel_aspect_ratio=1.0), - Planar(planar_configuration="RGB"), - FileLocation( - file_path=Path("/path/to/diffuse.jpg"), - file_size=1024, - file_hash=None), - MimeType(mime_type="image/jpeg"), - ] - bump_texture = [ - Image(), - PixelBased( - display_window_width=1920, - display_window_height=1080, - pixel_aspect_ratio=1.0), - Planar(planar_configuration="RGB"), - FileLocation( - file_path=Path("/path/to/bump.tif"), - file_size=1024, - file_hash=None), - MimeType(mime_type="image/tiff"), - ] - bundle = Bundle(items=[diffuse_texture, bump_texture]) - representation = Representation(name="test_bundle", traits=[bundle]) - - if representation.contains_trait(trait=Bundle): - assert representation.get_trait(trait=Bundle).items == [ - diffuse_texture, bump_texture - ] - - for item in representation.get_trait(trait=Bundle).items: - sub_representation = Representation(name="test", traits=item) - assert sub_representation.contains_trait(trait=Image) - assert sub_representation.get_trait(trait=MimeType).mime_type in [ - "image/jpeg", "image/tiff" - ] - def test_get_version_from_id() -> None: """Test getting version from trait ID.""" assert Image().get_version() == 1 @@ -347,137 +301,69 @@ def test_from_dict() -> None: "test", trait_data=traits_data) """ -def test_file_locations_validation() -> None: - """Test FileLocations trait validation.""" - file_locations_list = [ - FileLocation( - file_path=Path(f"/path/to/file.{frame}.exr"), - file_size=1024, - file_hash=None, - ) - for frame in range(1001, 1051) - ] +def test_representation_equality() -> None: - representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list) + # rep_a and rep_b are equal + rep_a = Representation(name="test", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + ]) + rep_b = Representation(name="test", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), ]) - file_locations_trait: FileLocations = FileLocations( - file_paths=file_locations_list) - - # this should be valid trait - file_locations_trait.validate(representation) - - # add valid FrameRanged trait - sequence_trait = FrameRanged( - frame_start=1001, - frame_end=1050, - frames_per_second="25" - ) - representation.add_trait(sequence_trait) - - # it should still validate fine - file_locations_trait.validate(representation) - - # create empty file locations trait - empty_file_locations_trait = FileLocations(file_paths=[]) - representation = Representation(name="test", traits=[ - empty_file_locations_trait - ]) - with pytest.raises(TraitValidationError): - empty_file_locations_trait.validate(representation) - - # create valid file locations trait but with not matching sequence - # trait - representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list) - ]) - invalid_sequence_trait = FrameRanged( - frame_start=1001, - frame_end=1051, - frames_per_second="25" - ) - - representation.add_trait(invalid_sequence_trait) - with pytest.raises(TraitValidationError): - file_locations_trait.validate(representation) - -def test_sequence_get_frame_padding() -> None: - """Test getting frame padding from FileLocations trait.""" - file_locations_list = [ - FileLocation( - file_path=Path(f"/path/to/file.{frame}.exr"), - file_size=1024, - file_hash=None, - ) - for frame in range(1001, 1051) - ] - - representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list) + # rep_c has different value for planar_configuration then rep_a and rep_b + rep_c = Representation(name="test", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGBA"), ]) - assert Sequence.get_frame_padding( - file_locations=representation.get_trait(FileLocations)) == 4 - -def test_sequence_validations() -> None: - """Test Sequence trait validation.""" - file_locations_list = [ - FileLocation( - file_path=Path(f"/path/to/file.{frame}.exr"), - file_size=1024, - file_hash=None, - ) - for frame in range(1001, 1010 + 1) # because range is zero based - ] - - file_locations_list += [ - FileLocation( - file_path=Path(f"/path/to/file.{frame}.exr"), - file_size=1024, - file_hash=None, - ) - for frame in range(1015, 1020 + 1) - ] - - file_locations_list += [ - FileLocation - ( - file_path=Path("/path/to/file.1100.exr"), - file_size=1024, - file_hash=None, - ) - ] - - representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list), - FrameRanged( - frame_start=1001, - frame_end=1100, frames_per_second="25"), - Sequence( - frame_padding=4, - frame_spec="1001-1010,1015-1020,1100") + rep_d = Representation(name="test", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + ]) + rep_e = Representation(name="foo", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + ]) + rep_f = Representation(name="foo", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Planar(planar_configuration="RGBA"), ]) - representation.get_trait(Sequence).validate(representation) + + # lets assume ids are the same (because ids are randomly generated) + rep_b.representation_id = rep_d.representation_id = rep_a.representation_id + rep_c.representation_id = rep_e.representation_id = rep_a.representation_id + rep_f.representation_id = rep_a.representation_id + assert rep_a == rep_b + + # because of the trait value difference + assert rep_a != rep_c + # because of the type difference + assert rep_a != "foo" + # because of the trait count difference + assert rep_a != rep_d + # because of the name difference + assert rep_d != rep_e + # because of the trait difference + assert rep_d != rep_f - -def test_list_spec_to_frames() -> None: - """Test converting list specification to frames.""" - assert Sequence.list_spec_to_frames("1-10,20-30,55") == [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 55 - ] - assert Sequence.list_spec_to_frames("1,2,3,4,5") == [ - 1, 2, 3, 4, 5 - ] - assert Sequence.list_spec_to_frames("1-10") == [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 - ] - assert Sequence.list_spec_to_frames("1") == [1] - with pytest.raises( - ValueError, - match="Invalid frame number in the list: .*"): - Sequence.list_spec_to_frames("a") From 90d8df89d33012123169450fa3c7765673878da0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 01:11:06 +0100 Subject: [PATCH 057/626] :dog: add missing docstring --- tests/client/ayon_core/pipeline/traits/test_traits.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index e4033c1d28..b87e996e03 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -302,7 +302,7 @@ def test_from_dict() -> None: """ def test_representation_equality() -> None: - + """Test representation equality.""" # rep_a and rep_b are equal rep_a = Representation(name="test", traits=[ FileLocation(file_path=Path("/path/to/file"), file_size=1024), From 4948cddb581a3c73ab890a5720429e2095577f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 01:11:29 +0100 Subject: [PATCH 058/626] :art: FileLocations only with Sequence or Bundle --- client/ayon_core/pipeline/traits/content.py | 11 ++++++ .../pipeline/traits/test_content_traits.py | 34 +++++++++++++++---- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 36b373036c..ba14960db2 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -129,6 +129,17 @@ class FileLocations(TraitBase): raise TraitValidationError(self.name, msg) if representation.contains_trait(FrameRanged): self._validate_frame_range(representation) + if not representation.contains_trait(Sequence) \ + and not representation.contains_trait(Bundle): + # we have multiple files, but it is not a sequence or bundle + # what it it then? If the files are not related to each other + # then this representation is invalid. + msg = ( + "Multiple file locations defined, but no Sequence or Bundle " + "trait defined. If the files are not related to each other, " + "the representation is invalid." + ) + raise TraitValidationError(self.name, msg) def _validate_frame_range(self, representation: Representation) -> None: """Validate the frame range against the file paths. diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index d41e9076c3..065c17a7bb 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -14,6 +14,7 @@ from ayon_core.pipeline.traits import ( PixelBased, Planar, Representation, + Sequence, ) from ayon_core.pipeline.traits.trait import TraitValidationError @@ -74,7 +75,8 @@ def test_file_locations_validation() -> None: ] representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list) + FileLocations(file_paths=file_locations_list), + Sequence(frame_padding=4), ]) file_locations_trait: FileLocations = FileLocations( @@ -84,12 +86,12 @@ def test_file_locations_validation() -> None: file_locations_trait.validate(representation) # add valid FrameRanged trait - sequence_trait = FrameRanged( + frameranged_trait = FrameRanged( frame_start=1001, frame_end=1050, frames_per_second="25" ) - representation.add_trait(sequence_trait) + representation.add_trait(frameranged_trait) # it should still validate fine file_locations_trait.validate(representation) @@ -102,10 +104,11 @@ def test_file_locations_validation() -> None: with pytest.raises(TraitValidationError): empty_file_locations_trait.validate(representation) - # create valid file locations trait but with not matching sequence - # trait + # create valid file locations trait but with not matching + # frame range trait representation = Representation(name="test", traits=[ - FileLocations(file_paths=file_locations_list) + FileLocations(file_paths=file_locations_list), + Sequence(frame_padding=4), ]) invalid_sequence_trait = FrameRanged( frame_start=1001, @@ -117,3 +120,22 @@ def test_file_locations_validation() -> None: with pytest.raises(TraitValidationError): file_locations_trait.validate(representation) + # invalid representation with mutliple file locations but + # unrelated to either Sequence or Bundle traits + representation = Representation(name="test", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path("/path/to/file_foo.exr"), + file_size=1024, + file_hash=None, + ), + FileLocation( + file_path=Path("/path/to/anotherfile.obj"), + file_size=1234, + file_hash=None, + ) + ]) + ]) + + with pytest.raises(TraitValidationError): + representation.validate() From c9d4716dfad1e922ad29c8a0275da067ea0e0b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 01:26:15 +0100 Subject: [PATCH 059/626] :art: add `UDIM` to `FileLocations` relationships --- client/ayon_core/pipeline/traits/content.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index ba14960db2..6f7b4f9101 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -16,6 +16,7 @@ from .trait import ( TraitBase, TraitValidationError, ) +from .two_dimensional import UDIM from .utils import get_sequence_from_files @@ -130,14 +131,15 @@ class FileLocations(TraitBase): if representation.contains_trait(FrameRanged): self._validate_frame_range(representation) if not representation.contains_trait(Sequence) \ - and not representation.contains_trait(Bundle): + and not representation.contains_trait(Bundle) \ + and not representation.contains_trait(UDIM): # we have multiple files, but it is not a sequence or bundle - # what it it then? If the files are not related to each other - # then this representation is invalid. + # or UDIM tile set what it it then? If the files are not related + # to each other then this representation is invalid. msg = ( "Multiple file locations defined, but no Sequence or Bundle " - "trait defined. If the files are not related to each other, " - "the representation is invalid." + "or UDIM trait defined. If the files are not related to " + "each other, the representation is invalid." ) raise TraitValidationError(self.name, msg) From 5c8d11198a6f719446f59c4da4c5f70805ed7dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 01:26:30 +0100 Subject: [PATCH 060/626] :dog: fix indent --- .../ayon_core/pipeline/traits/test_time_traits.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/client/ayon_core/pipeline/traits/test_time_traits.py b/tests/client/ayon_core/pipeline/traits/test_time_traits.py index b903c9eae5..900c4e5842 100644 --- a/tests/client/ayon_core/pipeline/traits/test_time_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_time_traits.py @@ -82,13 +82,13 @@ def test_sequence_validations() -> None: # do the same but set handles as exclusive representation = Representation(name="test_3", traits=[ FileLocations(file_paths=[ - FileLocation( - file_path=Path(f"/path/to/file.{frame}.exr"), - file_size=1024, - file_hash=None, - ) - for frame in range(996, 1105 + 1) # because range is zero based - ]), + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(996, 1105 + 1) # because range is zero based + ]), Handles( frame_start_handle=5, frame_end_handle=5, From cf3242bbda341f953bf1a77dc593cd8e5d316664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sat, 30 Nov 2024 01:39:45 +0100 Subject: [PATCH 061/626] :fire: revert the assumption that `FileLocations relates to `Bundles` --- client/ayon_core/pipeline/traits/content.py | 27 ++++++++------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 6f7b4f9101..08dee58383 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -131,13 +131,12 @@ class FileLocations(TraitBase): if representation.contains_trait(FrameRanged): self._validate_frame_range(representation) if not representation.contains_trait(Sequence) \ - and not representation.contains_trait(Bundle) \ and not representation.contains_trait(UDIM): - # we have multiple files, but it is not a sequence or bundle + # we have multiple files, but it is not a sequence # or UDIM tile set what it it then? If the files are not related # to each other then this representation is invalid. msg = ( - "Multiple file locations defined, but no Sequence or Bundle " + "Multiple file locations defined, but no Sequence " "or UDIM trait defined. If the files are not related to " "each other, the representation is invalid." ) @@ -351,28 +350,22 @@ class Bundle(TraitBase): This model list of independent Representation traits that are bundled together. This is useful for representing - a collection of representations that are part of a single - entity. + a collection of sub-entities that are part of a single + entity. You can easily reconstruct representations from + the bundle. Example:: Bundle( items=[ [ - Representation( - traits=[ - MimeType(mime_type="image/jpeg"), - FileLocation(file_path="/path/to/file.jpg") - ] - ) + MimeType(mime_type="image/jpeg"), + FileLocation(file_path="/path/to/file.jpg") ], [ - Representation( - traits=[ - MimeType(mime_type="image/png"), - FileLocation(file_path="/path/to/file.png") - ] - ) + + MimeType(mime_type="image/png"), + FileLocation(file_path="/path/to/file.png") ] ] ) From f4169769ace98c398350b7f53531c2f137bf6721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sun, 1 Dec 2024 14:51:47 +0100 Subject: [PATCH 062/626] :recycle: expose trait validation error --- client/ayon_core/pipeline/traits/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 16ee7d6975..59579b5bd3 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -23,7 +23,11 @@ from .time import ( SMPTETimecode, Static, ) -from .trait import MissingTraitError, TraitBase +from .trait import ( + MissingTraitError, + TraitBase, + TraitValidationError, +) from .two_dimensional import ( UDIM, Deep, @@ -41,6 +45,7 @@ __all__ = [ "Representation", "TraitBase", "MissingTraitError", + "TraitValidationError", # content "Bundle", From 595a3546f37ca82ca30d24407ff5ddc8da1689ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sun, 1 Dec 2024 16:11:23 +0100 Subject: [PATCH 063/626] :art: add helpers for getting files --- client/ayon_core/pipeline/traits/content.py | 48 ++++++++++++++++++- client/ayon_core/pipeline/traits/time.py | 13 ++++- .../pipeline/traits/test_content_traits.py | 40 ++++++++++++++++ 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 08dee58383..2808449590 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -2,10 +2,11 @@ from __future__ import annotations import contextlib +import re # TC003 is there because Path in TYPECHECKING will fail in tests from pathlib import Path # noqa: TC003 -from typing import ClassVar, Optional +from typing import ClassVar, Generator, Optional from pydantic import Field @@ -109,6 +110,51 @@ class FileLocations(TraitBase): id: ClassVar[str] = "ayon.content.FileLocations.v1" file_paths: list[FileLocation] = Field(..., title="File Path") + def get_files(self) -> Generator[Path, None, None]: + """Get all file paths from the trait. + + This method will return all file paths from the trait. + + Yeilds: + Path: List of file paths. + + """ + for file_location in self.file_paths: + yield file_location.file_path + + def get_file_for_frame( + self, + frame: int, + sequence_trait: Optional[Sequence] = None, + ) -> Optional[FileLocation]: + """Get file location for a frame. + + This method will return the file location for a given frame. If the + frame is not found in the file paths, it will return None. + + Args: + frame (int): Frame to get the file location for. + sequence_trait (Sequence): Sequence trait to get the + frame range specs from. + + Returns: + Optional[FileLocation]: File location for the frame. + + """ + frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" + if sequence_trait and sequence_trait.frame_regex: + frame_regex = sequence_trait.frame_regex + + re.compile(frame_regex) + + for file_path in self.get_files(): + result = re.search(frame_regex, file_path.name) + if result: + frame_index = int(result.group("frame")) + if frame_index == frame: + return file_path + return None + def validate(self, representation: Representation) -> None: """Validate the trait. diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 0ab7cfaa9e..22a5c16c13 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -6,7 +6,7 @@ from enum import Enum, auto from typing import TYPE_CHECKING, ClassVar, Optional import clique -from pydantic import Field +from pydantic import Field, field_validator from .trait import MissingTraitError, TraitBase, TraitValidationError @@ -118,7 +118,7 @@ class Sequence(TraitBase): sequence. frame_padding (int): Frame padding. frame_regex (str): Frame regex - regular expression to match - frame numbers. + frame numbers. Must include 'frame' named group. frame_spec (str): Frame list specification of frames. This takes string like "1-10,20-30,40-50" etc. @@ -132,6 +132,15 @@ class Sequence(TraitBase): frame_regex: Optional[str] = Field(None, title="Frame Regex") frame_spec: Optional[str] = Field(None, title="Frame Specification") + @field_validator("frame_regex") + @classmethod + def validate_frame_regex(cls, v: Optional[str]) -> str: + """Validate frame regex.""" + if v is not None and "?P" not in v: + msg = "Frame regex must include 'frame' named group" + raise ValueError(msg) + return v + def validate(self, representation: Representation) -> None: """Validate the trait.""" super().validate(representation) diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index 065c17a7bb..106b119a66 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -139,3 +139,43 @@ def test_file_locations_validation() -> None: with pytest.raises(TraitValidationError): representation.validate() + +def test_get_file_from_frame() -> None: + """Test get_file_from_frame method.""" + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1051) + ] + + file_locations_trait: FileLocations = FileLocations( + file_paths=file_locations_list) + + assert file_locations_trait.get_file_for_frame(frame=1001) == \ + file_locations_list[0].file_path + assert file_locations_trait.get_file_for_frame(frame=1050) == \ + file_locations_list[-1].file_path + assert file_locations_trait.get_file_for_frame(frame=1100) is None + + # test with custom regex + sequence = Sequence( + frame_padding=4, + frame_regex=r"boo_(?P\d+)\.exr") + file_locations_list = [ + FileLocation( + file_path=Path(f"/path/to/boo_{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(1001, 1051) + ] + + file_locations_trait: FileLocations = FileLocations( + file_paths=file_locations_list) + + assert file_locations_trait.get_file_for_frame( + frame=1001, sequence_trait=sequence) == \ + file_locations_list[0].file_path From cc543fb6a20a2c08ad1d0d694732d76901684a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sun, 1 Dec 2024 22:24:15 +0100 Subject: [PATCH 064/626] :bug: return Path instead of FileLocation --- client/ayon_core/pipeline/traits/content.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 2808449590..b711efc351 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -126,7 +126,7 @@ class FileLocations(TraitBase): self, frame: int, sequence_trait: Optional[Sequence] = None, - ) -> Optional[FileLocation]: + ) -> Optional[Path]: """Get file location for a frame. This method will return the file location for a given frame. If the @@ -138,7 +138,7 @@ class FileLocations(TraitBase): frame range specs from. Returns: - Optional[FileLocation]: File location for the frame. + Optional[Path]: File location for the frame. """ frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" From cf195c44a691f9c8630ecd50fa7185477fbeea71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Sun, 1 Dec 2024 23:00:44 +0100 Subject: [PATCH 065/626] :recycle: refactor to return `FileLocation` again --- client/ayon_core/pipeline/traits/content.py | 14 ++++++-------- .../pipeline/traits/test_content_traits.py | 19 ++++++++++--------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index b711efc351..2652a8e50c 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -82,7 +82,6 @@ class FileLocation(TraitBase): file_hash (str): File hash. """ - name: ClassVar[str] = "FileLocation" description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" @@ -122,11 +121,11 @@ class FileLocations(TraitBase): for file_location in self.file_paths: yield file_location.file_path - def get_file_for_frame( + def get_file_location_for_frame( self, frame: int, sequence_trait: Optional[Sequence] = None, - ) -> Optional[Path]: + ) -> Optional[FileLocation]: """Get file location for a frame. This method will return the file location for a given frame. If the @@ -138,7 +137,7 @@ class FileLocations(TraitBase): frame range specs from. Returns: - Optional[Path]: File location for the frame. + Optional[FileLocation]: File location for the frame. """ frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" @@ -146,13 +145,12 @@ class FileLocations(TraitBase): frame_regex = sequence_trait.frame_regex re.compile(frame_regex) - - for file_path in self.get_files(): - result = re.search(frame_regex, file_path.name) + for location in self.file_paths: + result = re.search(frame_regex, location.file_path.name) if result: frame_index = int(result.group("frame")) if frame_index == frame: - return file_path + return location return None def validate(self, representation: Representation) -> None: diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index 106b119a66..d6f379a9c7 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -140,8 +140,9 @@ def test_file_locations_validation() -> None: with pytest.raises(TraitValidationError): representation.validate() -def test_get_file_from_frame() -> None: - """Test get_file_from_frame method.""" + +def test_get_file_location_from_frame() -> None: + """Test get_file_location_from_frame method.""" file_locations_list = [ FileLocation( file_path=Path(f"/path/to/file.{frame}.exr"), @@ -154,11 +155,11 @@ def test_get_file_from_frame() -> None: file_locations_trait: FileLocations = FileLocations( file_paths=file_locations_list) - assert file_locations_trait.get_file_for_frame(frame=1001) == \ - file_locations_list[0].file_path - assert file_locations_trait.get_file_for_frame(frame=1050) == \ - file_locations_list[-1].file_path - assert file_locations_trait.get_file_for_frame(frame=1100) is None + assert file_locations_trait.get_file_location_for_frame(frame=1001) == \ + file_locations_list[0] + assert file_locations_trait.get_file_location_for_frame(frame=1050) == \ + file_locations_list[-1] + assert file_locations_trait.get_file_location_for_frame(frame=1100) is None # test with custom regex sequence = Sequence( @@ -176,6 +177,6 @@ def test_get_file_from_frame() -> None: file_locations_trait: FileLocations = FileLocations( file_paths=file_locations_list) - assert file_locations_trait.get_file_for_frame( + assert file_locations_trait.get_file_location_for_frame( frame=1001, sequence_trait=sequence) == \ - file_locations_list[0].file_path + file_locations_list[0] From 5748c1593fc824210dcf34f01bc379c2fdbaefd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 2 Dec 2024 00:14:49 +0100 Subject: [PATCH 066/626] :art: udims as a list --- .../pipeline/traits/two_dimensional.py | 46 +++++++++++++++++-- .../traits/test_two_dimesional_traits.py | 43 +++++++++++++++++ 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 93d21a9bc3..2cd27340ad 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -1,10 +1,15 @@ """Two-dimensional image traits.""" -from typing import ClassVar +from __future__ import annotations -from pydantic import Field +import re +from typing import TYPE_CHECKING, ClassVar, Optional + +from pydantic import Field, field_validator from .trait import TraitBase +if TYPE_CHECKING: + from .content import FileLocation, FileLocations class Image(TraitBase): """Image trait model. @@ -129,4 +134,39 @@ class UDIM(TraitBase): name: ClassVar[str] = "UDIM" description: ClassVar[str] = "UDIM Trait" id: ClassVar[str] = "ayon.2d.UDIM.v1" - udim: int = Field(..., title="UDIM") + udim: list[int] = Field(..., title="UDIM") + udim_regex: Optional[str] = Field( + r"(?:\.|_)(?P\d+)\.\D+\d?$", title="UDIM Regex") + + @field_validator("udim_regex") + @classmethod + def validate_frame_regex(cls, v: Optional[str]) -> str: + """Validate udim regex.""" + if v is not None and "?P" not in v: + msg = "UDIM regex must include 'udim' named group" + raise ValueError(msg) + return v + + def get_file_location_for_udim( + self, + file_locations: FileLocations, + udim: int, + ) -> Optional[FileLocation]: + """Get file location for UDIM. + + Args: + file_locations (FileLocations): File locations. + udim (int): UDIM value. + + Returns: + Optional[FileLocation]: File location. + + """ + pattern = re.compile(self.udim_regex) + for location in file_locations.file_paths: + result = re.search(pattern, location.file_path.name) + if result: + udim_index = int(result.group("udim")) + if udim_index == udim: + return location + return None diff --git a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py new file mode 100644 index 0000000000..9428d86a39 --- /dev/null +++ b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py @@ -0,0 +1,43 @@ +"""Tests for the 2d related traits.""" +from __future__ import annotations + +from pathlib import Path + +from ayon_core.pipeline.traits import ( + UDIM, + FileLocation, + FileLocations, + Representation, +) + + +def test_get_file_location_for_udim() -> None: + """Test get_file_location_for_udim.""" + file_locations_list = [ + FileLocation( + file_path=Path("/path/to/file.1001.exr"), + file_size=1024, + file_hash=None, + ), + FileLocation( + file_path=Path("/path/to/file.1002.exr"), + file_size=1024, + file_hash=None, + ), + FileLocation( + file_path=Path("/path/to/file.1003.exr"), + file_size=1024, + file_hash=None, + ), + ] + + representation = Representation(name="test_1", traits=[ + FileLocations(file_paths=file_locations_list), + UDIM(udim=[1001, 1002, 1003]), + ]) + + udim_trait = representation.get_trait(UDIM) + assert udim_trait.get_file_location_for_udim( + file_locations=representation.get_trait(FileLocations), + udim=1001 + ) == file_locations_list[0] From 0d98ff479dca0beb4495daf9594ba6a9637d7c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 2 Dec 2024 00:15:01 +0100 Subject: [PATCH 067/626] :bug: compile regex --- client/ayon_core/pipeline/traits/content.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 2652a8e50c..0ca0cbb3e1 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -144,7 +144,7 @@ class FileLocations(TraitBase): if sequence_trait and sequence_trait.frame_regex: frame_regex = sequence_trait.frame_regex - re.compile(frame_regex) + frame_regex = re.compile(frame_regex) for location in self.file_paths: result = re.search(frame_regex, location.file_path.name) if result: From 891a06553011f5242eeaf2e8f4ba45a47557427f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 2 Dec 2024 00:21:14 +0100 Subject: [PATCH 068/626] :art: add helper function --- .../pipeline/traits/two_dimensional.py | 17 +++++++++++++++++ .../traits/test_two_dimesional_traits.py | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 2cd27340ad..a05748b710 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -170,3 +170,20 @@ class UDIM(TraitBase): if udim_index == udim: return location return None + + def get_udim_from_file_location( + self, file_location: FileLocation) -> Optional[int]: + """Get UDIM from file location. + + Args: + file_location (FileLocation): File location. + + Returns: + Optional[int]: UDIM value. + + """ + pattern = re.compile(self.udim_regex) + result = re.search(pattern, file_location.file_path.name) + if result: + return int(result.group("udim")) + return None diff --git a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py index 9428d86a39..328bd83469 100644 --- a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py @@ -41,3 +41,22 @@ def test_get_file_location_for_udim() -> None: file_locations=representation.get_trait(FileLocations), udim=1001 ) == file_locations_list[0] + +def test_get_udim_from_file_location() -> None: + """Test get_udim_from_file_location.""" + file_location_1 = FileLocation( + file_path=Path("/path/to/file.1001.exr"), + file_size=1024, + file_hash=None, + ) + + file_location_2 = FileLocation( + file_path=Path("/path/to/file.xxxxx.exr"), + file_size=1024, + file_hash=None, + ) + assert UDIM(udim=[1001]).get_udim_from_file_location( + file_location_1) == 1001 + + assert UDIM(udim=[1001]).get_udim_from_file_location( + file_location_2) is None From 88f4b5e7090a1d70eb5c8b203f47690b59fd5ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 2 Dec 2024 00:39:20 +0100 Subject: [PATCH 069/626] :wrench: work on template determination --- .../plugins/publish/integrate_traits.py | 223 ++++++++++++++++-- 1 file changed, 199 insertions(+), 24 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 8687370b3d..d58abc4a62 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -1,7 +1,10 @@ """Integrate representations with traits.""" from __future__ import annotations +import contextlib import copy +from dataclasses import dataclass +from pathlib import Path from typing import TYPE_CHECKING, Any, List import pyblish.api @@ -22,19 +25,42 @@ from ayon_core.pipeline.publish import ( get_publish_template_name, ) from ayon_core.pipeline.traits import ( + UDIM, + Bundle, ColorManaged, FileLocation, + FileLocations, + FrameRanged, + MissingTraitError, Persistent, + PixelBased, Representation, + Sequence, + TemplatePath, + TraitValidationError, ) -from pipeline.traits import MissingTraitError, PixelBased -from pipeline.traits.content import FileLocations if TYPE_CHECKING: import logging - from pathlib import Path - from pipeline import Anatomy + from ayon_core.pipeline import Anatomy + + +@dataclass +class TransferItem: + """Represents single transfer item. + + Source file path, destination file path, template that was used to + construct the destination path, template data that was used in the + template, size of the file, checksum of the file. + """ + source: Path + destination: Path + size: int + checksum: str + template: str + template_data: dict[str, Any] + def get_instance_families(instance: pyblish.api.Instance) -> List[str]: @@ -105,9 +131,13 @@ class IntegrateTraits(pyblish.api.InstancePlugin): order = pyblish.api.IntegratorOrder log: logging.Logger - def process(self, instance: pyblish.api.Instance) -> None: + def process(self, instance: pyblish.api.Instance) -> None: # noqa: C901, PLR0915, PLR0912 """Integrate representations with traits. + Todo: + Refactor this method to be more readable and maintainable. + Remove corresponding noqa codes. + Args: instance (pyblish.api.Instance): Instance to process. @@ -141,7 +171,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return # 3) get anatomy template - template = self.get_template(instance) + anatomy: Anatomy = instance.context.data["anatomy"] + template: str = self.get_publish_template(instance) # 4) initialize OperationsSession() op_session = OperationsSession() @@ -155,30 +186,160 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) instance.data["versionEntity"] = version_entity - instance_template_data = {} - transfers = [] - # handle {originalDirname} requested in the template + instance_template_data: dict[str, str] = {} + transfers: list[TransferItem] = [] + """ + # WIP: This is a draft of the logic that should be implemented + # to handle {originalDirname} in the template + if "{originalDirname}" in template: instance_template_data = { "originalDirname": self._get_relative_to_root_original_dirname( instance) } + """ # 6.5) prepare template and data to format it for representation in representations: - # validate representation first - representation.validate() + # validate representation first, this will go through all traits + # and check if they are valid + try: + representation.validate() + except TraitValidationError as e: + msg = f"Representation '{representation.name}' is invalid: {e}" + raise PublishError(msg) from e + template_data = self.get_template_data_from_representation( representation, instance) # add instance based template data template_data.update(instance_template_data) - if "{originalBasename}" in template: - # Remove 'frame' from template data because original frame - # number will be used. + path_template_object = self.get_publish_template_object( + instance)["path"] + + # If representation has FileLocations trait (list of files) + # it can be either Sequence, Bundle or UDIM tile set. + # We do not allow unrelated files in the single representation. + if representation.contains_trait(FileLocations): + # handle sequence + # note: we do not support yet frame sequence of multiple UDIM + # tiles in the same representation + if representation.contains_trait(Sequence): + sequence: Sequence = representation.get_trait(Sequence) + + # get the padding from the sequence if the padding on the + # template is higher, us the one from the template + dst_padding = representation.get_trait( + Sequence).frame_padding + frames: list[int] = sequence.get_frame_list( + representation.get_trait(FileLocations), + regex=sequence.frame_regex) + template_padding = anatomy.templates_obj.frame_padding + if template_padding > dst_padding: + dst_padding = template_padding + + # go through all frames in the sequence + # find their corresponding file locations + # format their template and add them to transfers + for frame in frames: + template_data["frame"] = frame + template_filled = path_template_object.format_strict( + template_data + ) + file_loc: FileLocation = representation.get_trait( + FileLocations).get_file_location_for_frame( + frame, sequence) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template, + template_data=template_data, + ) + ) + + elif representation.contains_trait(UDIM) and \ + not representation.contains_trait(Sequence): + # handle UDIM not in sequence + udim: UDIM = representation.get_trait(UDIM) + for file_loc in representation.get_trait( + FileLocations).file_paths: + template_data["udim"] = ( + udim.get_udim_from_file_location(file_loc) + ) + template_filled = template.format(**template_data) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template, + template_data=template_data, + ) + ) + else: + # This should never happen because the representation + # validation should catch this. + msg = ( + "Representation contains FileLocations trait, but " + "is not a Sequence or UDIM." + ) + raise PublishError(msg) + elif representation.contains_trait(FileLocation): + # single file representation template_data.pop("frame", None) - # WIP: use trait logic to get original frame range - # check if files listes in FileLocations trait match frames - # in sequence + with contextlib.suppress(MissingTraitError): + udim = representation.get_trait(UDIM) + template_data["udim"] = udim.udim[0] + + template_filled = path_template_object.format_strict( + template_data + ) + file_loc: FileLocation = representation.get_trait(FileLocation) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template, + template_data=template_data, + ) + ) + elif representation.contains_trait(Bundle): + # handle Bundle + # go through all files in the bundle + pass + + # add TemplatePath trait to the representation + representation.add_trait(TemplatePath( + template=template, + data=template_data + )) + + # format destination path for different types of representations + # in Sequence, we need to handle frame numbering, its padding and + # also the case where it is a UDIM sequence. Note that sequence + # can be non-contiguous. + + # -------------------------------- + + # single file representation or list of non-sequential files is + # simple if representation contains FileLocations trait, + # it is a list of files. there is no hard constrain there, + # but those files should be of the same type ideally - described + # by the same traits. + + if representation.contains_trait(Sequence): + # handle template for sequence - this is mostly about + # determining template data for the "udim" and for the "frame". + # Assumption is that the Sequence trait already has the correct + # frame range set. We just need to recalculate to include + # the handles. + + ... transfers += self.get_transfers_from_representation( representation, template, template_data) @@ -270,7 +431,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): logger=self.log ) - def get_template(self, instance: pyblish.api.Instance) -> str: + def get_publish_template(self, instance: pyblish.api.Instance) -> str: """Return anatomy template name to use for integration. Args: @@ -287,6 +448,24 @@ class IntegrateTraits(pyblish.api.InstancePlugin): path_template_obj = publish_template["path"] return path_template_obj.template.replace("\\", "/") + def get_publish_template_object( + self, instance: pyblish.api.Instance) -> object: + """Return anatomy template object to use for integration. + + Note: What is the actual type of the object? + + Args: + instance (pyblish.api.Instance): Instance to process. + + Returns: + object: Anatomy template object + + """ + # Anatomy data is pre-filled by Collectors + template_name = self.get_template_name(instance) + anatomy = instance.context.data["anatomy"] + return anatomy.get_template_item("publish", template_name) + def prepare_product( self, instance: pyblish.api.Instance, @@ -586,12 +765,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_data["resolution_height"] = representation.get_trait( PixelBased).display_window_height # get fps from representation traits - # is this the right way? Isn't it going against the - # trait abstraction? - traits = representation.get_traits() - for trait in traits.values(): - if hasattr(trait, "frames_per_second"): - template_data["fps"] = trait.fps + template_data["fps"] = representation.get_trait( + FrameRanged).frames_per_second # Note: handle "output" and "originalBasename" From 828c522b10c5a31edab659f3e785032371637e00 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 3 Dec 2024 10:43:45 +0100 Subject: [PATCH 070/626] :bug: fix typo --- client/ayon_core/pipeline/traits/trait.py | 4 ++-- tests/client/ayon_core/pipeline/traits/test_traits.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index d377ab8846..fd6e17f30d 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -33,8 +33,8 @@ class TraitBase(ABC, BaseModel): ) ) - persitent: bool = Field( - default=True, title="Persitent", + persistent: bool = Field( + default=True, title="Persistent", description="Whether the trait is persistent (integrated) or not.") @property diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index b87e996e03..a1e5a4d219 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -21,18 +21,18 @@ REPRESENTATION_DATA = { "file_path": Path("/path/to/file"), "file_size": 1024, "file_hash": None, - "persitent": True, + "persistent": True, }, - Image.id: {"persitent": True}, + Image.id: {"persistent": True}, PixelBased.id: { "display_window_width": 1920, "display_window_height": 1080, "pixel_aspect_ratio": 1.0, - "persitent": True, + "persistent": True, }, Planar.id: { "planar_configuration": "RGB", - "persitent": True, + "persistent": True, }, } From e83541abdc7f2092e5635a6829ede67fd1587bc6 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 3 Dec 2024 17:37:45 +0100 Subject: [PATCH 071/626] :art: add Variant trait --- client/ayon_core/pipeline/traits/__init__.py | 3 ++- client/ayon_core/pipeline/traits/meta.py | 22 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 59579b5bd3..c6280fc7fd 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -12,7 +12,7 @@ from .content import ( ) from .cryptography import DigitallySigned, GPGSigned from .lifecycle import Persistent, Transient -from .meta import Tagged, TemplatePath +from .meta import Tagged, TemplatePath, Variant from .representation import Representation from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial from .time import ( @@ -71,6 +71,7 @@ __all__ = [ # meta "Tagged", "TemplatePath", + "Variant", # two-dimensional "Compressed", diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 745b065798..b240e7a4da 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -51,3 +51,25 @@ class TemplatePath(TraitBase): id: ClassVar[str] = "ayon.meta.TemplatePath.v1" template: str = Field(..., title="Template Path") data: dict = Field(..., title="Formatting Data") + +class Variant(TraitBase): + """Variant trait model. + + This model represents a variant of the representation. + + Example:: + + Variant(variant="high") + Variant(variant="prores444) + + Attributes: + name (str): Trait name. + description (str): Trait description. + id (str): id should be namespaced trait name with version + variant (str): Variant name. + """ + + name: ClassVar[str] = "Variant" + description: ClassVar[str] = "Variant Trait Model" + id: ClassVar[str] = "ayon.meta.Variant.v1" + variant: str = Field(..., title="Variant") From da95746718e7025dac6cd1668670efd1d7f5387a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 4 Dec 2024 18:07:21 +0100 Subject: [PATCH 072/626] :memo: add readme for traits --- client/ayon_core/pipeline/traits/README.md | 283 +++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 client/ayon_core/pipeline/traits/README.md diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md new file mode 100644 index 0000000000..4387109cbe --- /dev/null +++ b/client/ayon_core/pipeline/traits/README.md @@ -0,0 +1,283 @@ +# Representations and traits + +## Introduction + +The Representation is the lowest level entity, describing the concrete data chunk that +pipeline can act on. It can be specific file or just a set of metadata. Idea is that one +product version can have multiple representations - **Image** product can be jpeg or tiff, both formats are representation of the same source. + +### Brief look into the past (and current state) + +So far, representation was defined as dict-like structure: +```python +{ + "name": "foo", + "ext": "exr", + "files": ["foo_001.exr", "foo_002.exr"], + "stagingDir": "/bar/dir" +} +``` + +This is minimal form, but it can have additional keys like `frameStart`, `fps`, `resolutionWidth`, and more. Thare is also `tags` key that can hold `review`, `thumbnail`, `delete`, `toScanline` and other tag that are controlling the processing. + +This will be *"translated"* to similar structure in database: + +```python +{ + "name": "foo", + "version_id": "...", + "files": [ + { + "id": ... + "hash": ... + "name": "foo_001.exr", + "path": "{root[work]}/bar/dir/foo_001.exr" + "size": 1234, + "hash_type": "...", + }, + ... + ], + "attrib": { + "path": "root/bar/dir/foo_001.exr", + "template": "{root[work]}/{project[name]}..." + }, + "data": { + "context": { + "ext": "exr", + "root": {...} + ... + }, + "active": True" + ... + +} +``` + +There are also some assumptions and limitations - like that if `files` in the +representation are list they need to be sequence of files (it can't be a bunch of +unrelated files). + +This system is very flexible in one way, but it lack few very important things: + +- it is not clearly defined - you can add easily keys, values, tags but without +unforeseeable +consequences +- it cannot handle "bundles" - multiple files that needs to be versioned together and +belong together +- it cannot describe important information that you can't get from the file itself or +it is very pricy (like axis orientation and units from alembic files) + + +### New Representation model + +The idea about new representation model is obviously around solving points mentioned +above and also adding some benefits, like consistent IDE hints, typing, built-in + validators and much more. + +### Design + +The new representation is "just" a dictionary of traits. Trait can be anything provided +it is based on `TraitBase`. It shouldn't really duplicate information that is +available in a moment of loading (or any usage) by other means. It should contain +information that couldn't be determined by the file, or the AYON context. Some of +those traits are aligned with [OpenAssetIO Media Creation](https://github.com/OpenAssetIO/OpenAssetIO-MediaCreation) with hopes of maintained compatibility (it +should be easy enough to convert between OpenAssetIO Traits and AOYN Traits). + +#### Details: Representation + +`Representation` has methods to deal with adding, removing, getting +traits. It has all the usual stuff like `get_trait()`, `add_trait()`, +`remove_trait()`, etc. But it also has plural forms so you can get/set +several traits at the same time with `get_traits()` and so on. +`Representation` also behaves like dictionary. so you can access/set +traits in the same way as you would do with dict: + +```python +# import Image trait +from ayon_core.pipeline.traits import Image, Tagged, Representation + + +# create new representation with name "foo" and add Image trait to it +rep = Representation(name="foo", traits=[Image()]) + +# you can add another trait like so +rep.add_trait(Tagged(tags=["tag"])) + +# or you can +rep[Tagged.id] = Tagged(tags=["tag"]) + +# and getting them in analogous +image = rep.get_trait(Image) + +# or +image = rep[Image.id] +``` + +> [!NOTE] +> Trait and their ids - every Trait has its id as s string with +> version appended - so **Image** has `ayon.2d.Image.v1`. This is is used on +> several places (you see its use above for indexing traits). When querying, +> you can also omit the version at the end and it will try its best to find +> the latest possible version. More on that in [Traits]() + +You can construct the `Representation` from dictionary (for example +serialized as JSON) using `Representation.from_dict()`, or you can +serialize `Representation` to dict to store with `Representation.traits_as_dict()`. + +Every time representation is created, new id is generated. You can pass existing +id when creating new representation instance. + +##### Equality + +Two Representations are equal if: +- their names are the same +- their IDs are the same +- they have the same traits +- the traits have the same values + +##### Validation + +Representation has `validate()` method that will run `validate()` on +all it's traits. + +#### Details: Traits + +As mentioned there are several traits defined directly in **ayon-core**. They are namespaced +to different packages based on their use: + +| namespace | trait | description +|---|---|--- +| color | ColorManaged | hold color management information +| content | MimeType | use MIME type (RFC 2046) to describe content (like image/jpeg) +| | LocatableContent | describe some location (file or URI) +| | FileLocation | path to file, with size and checksum +| | FileLocations | list of `FileLocation` +| | RootlessLocation | Path where root is replaced with AYON root token +| | Compressed | describes compression (of file or other) +| | Bundle | list of list of Traits - compound of inseparable "sub-representations" +| | Fragment | compound type marking the representation as a part of larger group of representations +| cryptography | DigitallySigned | Type traits marking data to be digitally signed +| | PGPSigned | Representation is signed by [PGP](https://www.openpgp.org/) +| lifecycle | Transient | Marks the representation to be temporary - not to be stored. +| | Persistent | Representation should be integrated (stored). Opposite of Transient. +| meta | Tagged | holds list of tag strings. +| | TemplatePath | Template consisted of tokens/keys and data to be used to resolve the template into string +| | Variant | Used to differentiate between data variants of the same output (mp4 as h.264 and h.265 for example) +| three dimensional | Spatial | Spatial information like up-axis, units and handedness. +| | Geometry | Type trait to mark the representation as a geometry. +| | Shader | Type trait to mark the representation as a Shader. +| | Lighting | Type trait to mark the representation as Lighting. +| | IESProfile | States that the representation is IES Profile +| time | FrameRanged | Contains start and end frame information with in and out. +| | Handless | define additional frames at the end or beginning and if those frames are inclusive of the range or not. +| | Sequence | Describes sequence of frames and how the frames are defined in that sequence. +| | SMPTETimecode | Adds timecode information in SMPTE format. +| | Static | Marks the content as not time-variant. +| two dimensional | Image | Type traits of image. +| | PixelBased | Defines resolution and pixel aspect for the image data. +| | Planar | Whether pixel data is in planar configuration or packed. +| | Deep | Image encodes deep pixel data. +| | Overscan | holds overscan/underscan information (added pixels to bottom/sides) +| | UDIM | Representation is UDIM tile set + +Traits are [Pydantic models](https://docs.pydantic.dev/latest/) with optional +validation and helper methods. If they implement `TraitBase.validate(Representation)` method, they can validate against all other traits +in the representation if needed. They can also implement pydantic form of +data validators. + +> [!NOTE] +> Every trait has id, name and some human readable description. Every trait +> also has `persistent` property that is by default set to True. This +> Controls whether this trait should be stored with the persistent representation +> or not. Useful for traits to be used just to control the publishing process. + +## Examples + +Create simple image representation to be integrated by AYON: + +```python +from pathlib import Path +from ayon_core.pipeline.traits import ( + FileLocation, + Image, + PixelBased, + Persistent, + Representation + Static +) + +rep = Representation(name="reference image", traits=[ + FileLocation( + file_path=Path("/foo/bar/baz.exr"), + file_size=1234, + file_hash="sha256:..." + ), + Image(), + PixelBased( + display_window_width="1920", + display_window_height="1080", + pixel_aspect_ratio=1.0 + ), + Persistent(), + Static() +]) + +# validate the representation + +try: + rep.validate() +except TraitValidationError as e: + print(f"Representation {rep.name} is invalid: {e}") + +``` + +To work with the resolution of such representation: + +```python + +try: + width = rep.get_trait(PixelBased).display_window_width + height = rep[PixelBased.id].display_window_height +except MissingTraitError: + print(f"resolution isn't set on {rep.name}") +``` + +Accessing non-existent traits will result in exception. To test if +representation has some specific trait, you can use `.contains_trait()` method. + + +You can also prepare the whole representation data as a dict and +create it from it: + +```python +rep_dict = { + "ayon.content.FileLocation.v1": { + "file_path": Path("/path/to/file"), + "file_size": 1024, + "file_hash": None, + }, + "ayon.two_dimensional.Image": {}, + "ayon.two_dimensional.PixelBased": { + "display_window_width": 1920, + "display_window_height": 1080, + "pixel_aspect_ratio": 1.0, + }, + "ayon.two_dimensional.Planar": { + "planar_configuration": "RGB", + } +} + +rep = Representation.from_dict(name="image", rep_dict) + +``` + +## Future + +Apart of some new additions to traits if needed, there are few thing that needs to be done. + +### Traits plugin system + +Traits are now ordinary python classes, but to extend its usability more, it would be good to +have addon level API to expose traits defined by individual addons. This API would then be used not +only by discovery logic but also by the AYON server that can display and work with the information +defined by them. \ No newline at end of file From 718cad7c82215b0240f1325310279a9f527c85f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 4 Dec 2024 18:08:37 +0100 Subject: [PATCH 073/626] :bug: fix PGPSigned trait name GPGSigned to PGPSigned --- client/ayon_core/pipeline/traits/__init__.py | 4 ++-- client/ayon_core/pipeline/traits/cryptography.py | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index c6280fc7fd..e3ca610df1 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -10,7 +10,7 @@ from .content import ( MimeType, RootlessLocation, ) -from .cryptography import DigitallySigned, GPGSigned +from .cryptography import DigitallySigned, PGPSigned from .lifecycle import Persistent, Transient from .meta import Tagged, TemplatePath, Variant from .representation import Representation @@ -62,7 +62,7 @@ __all__ = [ # cryptography "DigitallySigned", - "GPGSigned", + "PGPSigned", # life cycle "Persistent", diff --git a/client/ayon_core/pipeline/traits/cryptography.py b/client/ayon_core/pipeline/traits/cryptography.py index 4fa9e64c2f..42abee779c 100644 --- a/client/ayon_core/pipeline/traits/cryptography.py +++ b/client/ayon_core/pipeline/traits/cryptography.py @@ -21,17 +21,17 @@ class DigitallySigned(TraitBase): description: ClassVar[str] = "Digitally signed trait." -class GPGSigned(DigitallySigned): - """GPG signed trait. +class PGPSigned(DigitallySigned): + """PGP signed trait. - This trait holds GPG signed data. + This trait holds PGP (RFC-4880) signed data. Attributes: - signature (str): GPG signature. + signature (str): PGP signature. """ - id: ClassVar[str] = "ayon.cryptography.GPGSigned.v1" - name: ClassVar[str] = "GPGSigned" - description: ClassVar[str] = "GPG signed trait." + id: ClassVar[str] = "ayon.cryptography.PGPSigned.v1" + name: ClassVar[str] = "PGPSigned" + description: ClassVar[str] = "PGP signed trait." signed_data: str = Field( ..., description="Signed data." From c60ffcd31ca19d3ef9a44f4eae0f5200f4f84f8c Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 5 Dec 2024 14:41:26 +0100 Subject: [PATCH 074/626] :recycle: move template processing to individual methods --- .../plugins/publish/integrate_traits.py | 365 +++++++++++------- 1 file changed, 228 insertions(+), 137 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index d58abc4a62..29588f156b 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -20,6 +20,7 @@ from ayon_api.operations import ( # new_representation_entity, new_version_entity, ) +from ayon_core.pipeline.anatomy.templates import AnatomyStringTemplate from ayon_core.pipeline.publish import ( PublishError, get_publish_template_name, @@ -38,6 +39,8 @@ from ayon_core.pipeline.traits import ( Sequence, TemplatePath, TraitValidationError, + Transient, + Variant, ) if TYPE_CHECKING: @@ -46,7 +49,7 @@ if TYPE_CHECKING: from ayon_core.pipeline import Anatomy -@dataclass +@dataclass(frozen=True) class TransferItem: """Represents single transfer item. @@ -62,6 +65,17 @@ class TransferItem: template_data: dict[str, Any] +@dataclass +class TemplateItem: + """Represents single template item. + + Template path, template data that was used in the template. + """ + anatomy: Anatomy + template: str + template_data: dict[str, Any] + template_object: AnatomyStringTemplate + def get_instance_families(instance: pyblish.api.Instance) -> List[str]: """Get all families of the instance. @@ -131,7 +145,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): order = pyblish.api.IntegratorOrder log: logging.Logger - def process(self, instance: pyblish.api.Instance) -> None: # noqa: C901, PLR0915, PLR0912 + def process(self, instance: pyblish.api.Instance) -> None: """Integrate representations with traits. Todo: @@ -187,17 +201,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance.data["versionEntity"] = version_entity instance_template_data: dict[str, str] = {} - transfers: list[TransferItem] = [] - """ - # WIP: This is a draft of the logic that should be implemented - # to handle {originalDirname} in the template - if "{originalDirname}" in template: - instance_template_data = { - "originalDirname": self._get_relative_to_root_original_dirname( - instance) - } - """ + transfers: list[TransferItem] = [] # 6.5) prepare template and data to format it for representation in representations: @@ -213,144 +218,61 @@ class IntegrateTraits(pyblish.api.InstancePlugin): representation, instance) # add instance based template data template_data.update(instance_template_data) - path_template_object = self.get_publish_template_object( - instance)["path"] - # If representation has FileLocations trait (list of files) - # it can be either Sequence, Bundle or UDIM tile set. - # We do not allow unrelated files in the single representation. + # treat Variant as `output` in template data + with contextlib.suppress(MissingTraitError): + template_data["output"] = ( + representation.get_trait(Variant).variant + ) + + template_item = TemplateItem( + anatomy=anatomy, + template=template, + template_data=template_data, + template_object=self.get_publish_template_object(instance) + ) + if representation.contains_trait(FileLocations): - # handle sequence - # note: we do not support yet frame sequence of multiple UDIM + # If representation has FileLocations trait (list of files) + # it can be either Sequence or UDIM tile set. + # We do not allow unrelated files in the single representation. + # Note: we do not support yet frame sequence of multiple UDIM # tiles in the same representation - if representation.contains_trait(Sequence): - sequence: Sequence = representation.get_trait(Sequence) - - # get the padding from the sequence if the padding on the - # template is higher, us the one from the template - dst_padding = representation.get_trait( - Sequence).frame_padding - frames: list[int] = sequence.get_frame_list( - representation.get_trait(FileLocations), - regex=sequence.frame_regex) - template_padding = anatomy.templates_obj.frame_padding - if template_padding > dst_padding: - dst_padding = template_padding - - # go through all frames in the sequence - # find their corresponding file locations - # format their template and add them to transfers - for frame in frames: - template_data["frame"] = frame - template_filled = path_template_object.format_strict( - template_data - ) - file_loc: FileLocation = representation.get_trait( - FileLocations).get_file_location_for_frame( - frame, sequence) - transfers.append( - TransferItem( - source=file_loc.file_path, - destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, - template=template, - template_data=template_data, - ) - ) - - elif representation.contains_trait(UDIM) and \ - not representation.contains_trait(Sequence): - # handle UDIM not in sequence - udim: UDIM = representation.get_trait(UDIM) - for file_loc in representation.get_trait( - FileLocations).file_paths: - template_data["udim"] = ( - udim.get_udim_from_file_location(file_loc) - ) - template_filled = template.format(**template_data) - transfers.append( - TransferItem( - source=file_loc.file_path, - destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, - template=template, - template_data=template_data, - ) - ) - else: - # This should never happen because the representation - # validation should catch this. - msg = ( - "Representation contains FileLocations trait, but " - "is not a Sequence or UDIM." - ) - raise PublishError(msg) + self.get_transfers_from_file_locations( + representation, template_item, transfers + ) elif representation.contains_trait(FileLocation): - # single file representation - template_data.pop("frame", None) - with contextlib.suppress(MissingTraitError): - udim = representation.get_trait(UDIM) - template_data["udim"] = udim.udim[0] + # This is just a single file representation + self.get_transfers_from_file_location( + representation, template_item, transfers + ) - template_filled = path_template_object.format_strict( - template_data - ) - file_loc: FileLocation = representation.get_trait(FileLocation) - transfers.append( - TransferItem( - source=file_loc.file_path, - destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, - template=template, - template_data=template_data, - ) - ) elif representation.contains_trait(Bundle): - # handle Bundle - # go through all files in the bundle + # Bundle groups multiple "sub-representations" together. + # It has list of lists with traits, some might be + # FileLocations,but some might be "file-less" representations + # or even other bundles. + bundle: Bundle = representation.get_trait(Bundle) + for idx, sub_representation_traits in enumerate(bundle.items): + sub_representation = Representation( + name=f"{representation.name}_{idx}", + traits=sub_representation_traits) + # sub presentation transient: + sub_representation.add_trait(Transient()) + if sub_representation.contains_trait(FileLocations): + ... + pass # add TemplatePath trait to the representation representation.add_trait(TemplatePath( - template=template, - data=template_data + template=template_item.template, + data=template_item.template_data )) - # format destination path for different types of representations - # in Sequence, we need to handle frame numbering, its padding and - # also the case where it is a UDIM sequence. Note that sequence - # can be non-contiguous. - - # -------------------------------- - - # single file representation or list of non-sequential files is - # simple if representation contains FileLocations trait, - # it is a list of files. there is no hard constrain there, - # but those files should be of the same type ideally - described - # by the same traits. - - if representation.contains_trait(Sequence): - # handle template for sequence - this is mostly about - # determining template data for the "udim" and for the "frame". - # Assumption is that the Sequence trait already has the correct - # frame range set. We just need to recalculate to include - # the handles. - - ... - transfers += self.get_transfers_from_representation( representation, template, template_data) - # 7) Get transfers from representations - for representation in representations: - # this should test version-less FileLocation probably - if representation.contains_trait_by_id( - FileLocation.get_versionless_id()): - self.log.debug( - "Representation: %s", representation) def _get_relative_to_root_original_dirname( self, instance: pyblish.api.Instance) -> str: @@ -449,7 +371,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return path_template_obj.template.replace("\\", "/") def get_publish_template_object( - self, instance: pyblish.api.Instance) -> object: + self, instance: pyblish.api.Instance) -> AnatomyStringTemplate: """Return anatomy template object to use for integration. Note: What is the actual type of the object? @@ -775,8 +697,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return template_data + @staticmethod def get_transfers_from_representation( - self, representation: Representation, template: str, template_data: dict) -> list: @@ -827,3 +749,172 @@ class IntegrateTraits(pyblish.api.InstancePlugin): file_location, template, template_data) """ return transfers + + @staticmethod + def get_transfers_from_file_locations( + representation: Representation, + template_item: TemplateItem, + transfers: list[TransferItem]) -> None: + """Get transfers from FileLocations trait. + + Args: + representation (Representation): Representation to process. + template_item (TemplateItem): Template item. + transfers (list): List of transfers. + + Mutates: + transfers (list): List of transfers. + template_item (TemplateItem): Template item. + + """ + if representation.contains_trait(Sequence): + IntegrateTraits.get_transfers_from_sequence( + representation, template_item, transfers + ) + + elif representation.contains_trait(UDIM) and \ + not representation.contains_trait(Sequence): + # handle UDIM not in sequence + IntegrateTraits.get_transfers_from_udim( + representation, template_item, transfers + ) + + else: + # This should never happen because the representation + # validation should catch this. + msg = ( + "Representation contains FileLocations trait, but " + "is not a Sequence or UDIM." + ) + raise PublishError(msg) + + + @staticmethod + def get_transfers_from_sequence( + representation: Representation, + template_item: TemplateItem, + transfers: list[TransferItem] + ) -> None: + """Get transfers from Sequence trait. + + Args: + representation (Representation): Representation to process. + template_item (TemplateItem): Template item. + transfers (list): List of transfers. + + Mutates: + transfers (list): List of transfers. + template_item (TemplateItem): Template item. + + """ + sequence: Sequence = representation.get_trait(Sequence) + path_template_object = template_item.template_object["path"] + + # get the padding from the sequence if the padding on the + # template is higher, us the one from the template + dst_padding = representation.get_trait( + Sequence).frame_padding + frames: list[int] = sequence.get_frame_list( + representation.get_trait(FileLocations), + regex=sequence.frame_regex) + template_padding = template_item.anatomy.templates_obj.frame_padding + if template_padding > dst_padding: + dst_padding = template_padding + + # go through all frames in the sequence + # find their corresponding file locations + # format their template and add them to transfers + for frame in frames: + template_item.template_data["frame"] = frame + template_filled = path_template_object.format_strict( + template_item.template_data + ) + file_loc: FileLocation = representation.get_trait( + FileLocations).get_file_location_for_frame( + frame, sequence) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template_item.template, + template_data=template_item.template_data, + ) + ) + + @staticmethod + def get_transfers_from_udim( + representation: Representation, + template_item: TemplateItem, + transfers: list[TransferItem] + ) -> None: + """Get transfers from UDIM trait. + + Args: + representation (Representation): Representation to process. + template_item (TemplateItem): Template item. + transfers (list): List of transfers. + + Mutates: + transfers (list): List of transfers. + template_item (TemplateItem): Template item. + + """ + udim: UDIM = representation.get_trait(UDIM) + for file_loc in representation.get_trait( + FileLocations).file_paths: + template_item.template_data["udim"] = ( + udim.get_udim_from_file_location(file_loc) + ) + template_filled = template_item.template.format( + **template_item.template_data) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template_item.template, + template_data=template_item.template_data, + ) + ) + + @staticmethod + def get_transfers_from_file_location( + representation: Representation, + template_item: TemplateItem, + transfers: list[TransferItem] + ) -> None: + """Get transfers from FileLocation trait. + + Args: + representation (Representation): Representation to process. + template_item (TemplateItem): Template item. + transfers (list): List of transfers. + + Mutates: + transfers (list): List of transfers. + template_item (TemplateItem): Template item. + + """ + path_template_object = template_item.template_object["path"] + template_item.template_data.pop("frame", None) + with contextlib.suppress(MissingTraitError): + udim = representation.get_trait(UDIM) + template_item.template_data["udim"] = udim.udim[0] + + template_filled = path_template_object.format_strict( + template_item.template_data + ) + file_loc: FileLocation = representation.get_trait(FileLocation) + transfers.append( + TransferItem( + source=file_loc.file_path, + destination=Path(template_filled), + size=file_loc.file_size, + checksum=file_loc.file_hash, + template=template_item.template, + template_data=template_item.template_data.copy(), + ) + ) From fc313c6ccf5287d7e1b70440ae4f7f4b0ad0eb2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 5 Dec 2024 15:06:05 +0100 Subject: [PATCH 075/626] :twisted_rightwards_arrows: merging changes --- .../plugins/publish/integrate_traits.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 29588f156b..997ba6a774 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -20,7 +20,6 @@ from ayon_api.operations import ( # new_representation_entity, new_version_entity, ) -from ayon_core.pipeline.anatomy.templates import AnatomyStringTemplate from ayon_core.pipeline.publish import ( PublishError, get_publish_template_name, @@ -47,6 +46,9 @@ if TYPE_CHECKING: import logging from ayon_core.pipeline import Anatomy + from ayon_core.pipeline.anatomy.templates import ( + TemplateItem as AnatomyTemplateItem, + ) @dataclass(frozen=True) @@ -74,7 +76,7 @@ class TemplateItem: anatomy: Anatomy template: str template_data: dict[str, Any] - template_object: AnatomyStringTemplate + template_object: AnatomyTemplateItem def get_instance_families(instance: pyblish.api.Instance) -> List[str]: @@ -145,7 +147,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): order = pyblish.api.IntegratorOrder log: logging.Logger - def process(self, instance: pyblish.api.Instance) -> None: + def process(self, instance: pyblish.api.Instance) -> None: # noqa: C901 """Integrate representations with traits. Todo: @@ -184,8 +186,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): "Instance has no persistent representations. Skipping") return - # 3) get anatomy template - anatomy: Anatomy = instance.context.data["anatomy"] + # 3) get template and template data template: str = self.get_publish_template(instance) # 4) initialize OperationsSession() @@ -226,7 +227,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) template_item = TemplateItem( - anatomy=anatomy, + anatomy=instance.context.data["anatomy"], template=template, template_data=template_data, template_object=self.get_publish_template_object(instance) @@ -262,8 +263,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): if sub_representation.contains_trait(FileLocations): ... - pass - # add TemplatePath trait to the representation representation.add_trait(TemplatePath( template=template_item.template, @@ -371,7 +370,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return path_template_obj.template.replace("\\", "/") def get_publish_template_object( - self, instance: pyblish.api.Instance) -> AnatomyStringTemplate: + self, instance: pyblish.api.Instance) -> AnatomyTemplateItem: """Return anatomy template object to use for integration. Note: What is the actual type of the object? @@ -380,7 +379,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance (pyblish.api.Instance): Instance to process. Returns: - object: Anatomy template object + AnatomyTemplateItem: Anatomy template object """ # Anatomy data is pre-filled by Collectors From 5ab0f82a3a2eda94de62199fedc4ae367f555086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 9 Dec 2024 16:25:21 +0100 Subject: [PATCH 076/626] :art: add traits addon interface --- client/ayon_core/addon/__init__.py | 2 + client/ayon_core/addon/interfaces.py | 216 +++++++++++++-------- client/ayon_core/pipeline/traits/README.md | 42 +++- 3 files changed, 175 insertions(+), 85 deletions(-) diff --git a/client/ayon_core/addon/__init__.py b/client/ayon_core/addon/__init__.py index 6a7ce8a3cb..fd25dcb9d9 100644 --- a/client/ayon_core/addon/__init__.py +++ b/client/ayon_core/addon/__init__.py @@ -6,6 +6,7 @@ from .interfaces import ( ITrayAction, ITrayService, IHostAddon, + ITraits, ) from .base import ( @@ -30,6 +31,7 @@ __all__ = ( "ITrayAction", "ITrayService", "IHostAddon", + "ITraits", "ProcessPreparationError", "ProcessContext", diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index b273e7839b..5e2d1b13d7 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -1,13 +1,24 @@ +from __future__ import annotations + +import logging from abc import ABCMeta, abstractmethod +from typing import TYPE_CHECKING, Callable, Optional, Type from ayon_core import resources +if TYPE_CHECKING: + from qtpy import QtWidgets + + from ayon_core.addon import AddonsManager + from ayon_core.pipeline.traits import TraitBase + from ayon_core.tools.tray import TrayManager + class _AYONInterfaceMeta(ABCMeta): - """AYONInterface meta class to print proper string.""" + """AYONInterface metaclass to print proper string.""" def __str__(self): - return "<'AYONInterface.{}'>".format(self.__name__) + return f"<'AYONInterface.{self.__name__}'>" def __repr__(self): return str(self) @@ -24,7 +35,11 @@ class AYONInterface(metaclass=_AYONInterfaceMeta): in the interface. By default, interface does not have any abstract parts. """ - pass + log = None + + def __init__(self): + """Initialize interface.""" + self.log = logging.getLogger(self.__class__.__name__) class IPluginPaths(AYONInterface): @@ -38,10 +53,25 @@ class IPluginPaths(AYONInterface): """ @abstractmethod - def get_plugin_paths(self): - pass + def get_plugin_paths(self) -> dict[str, list[str]]: + """Return plugin paths for addon. - def _get_plugin_paths_by_type(self, plugin_type): + Returns: + dict[str, list[str]]: Plugin paths for addon. + + """ + + def _get_plugin_paths_by_type( + self, plugin_type: str) -> list[str]: + """Get plugin paths by type. + + Args: + plugin_type (str): Type of plugin paths to get. + + Returns: + list[str]: List of plugin paths. + + """ paths = self.get_plugin_paths() if not paths or plugin_type not in paths: return [] @@ -54,7 +84,7 @@ class IPluginPaths(AYONInterface): paths = [paths] return paths - def get_create_plugin_paths(self, host_name): + def get_create_plugin_paths(self, host_name: str) -> list[str]: """Receive create plugin paths. Give addons ability to add create plugin paths based on host name. @@ -65,11 +95,11 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. - """ + """ return self._get_plugin_paths_by_type("create") - def get_load_plugin_paths(self, host_name): + def get_load_plugin_paths(self, host_name: str) -> list[str]: """Receive load plugin paths. Give addons ability to add load plugin paths based on host name. @@ -80,11 +110,11 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. - """ + """ return self._get_plugin_paths_by_type("load") - def get_publish_plugin_paths(self, host_name): + def get_publish_plugin_paths(self, host_name: str) -> list[str]: """Receive publish plugin paths. Give addons ability to add publish plugin paths based on host name. @@ -95,11 +125,11 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. - """ + """ return self._get_plugin_paths_by_type("publish") - def get_inventory_action_paths(self, host_name): + def get_inventory_action_paths(self, host_name: str) -> list[str]: """Receive inventory action paths. Give addons ability to add inventory action plugin paths. @@ -110,76 +140,84 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. - """ + """ return self._get_plugin_paths_by_type("inventory") class ITrayAddon(AYONInterface): """Addon has special procedures when used in Tray tool. - IMPORTANT: - The addon. still must be usable if is not used in tray even if - would do nothing. - """ + Important: + The addon. still must be usable if is not used in tray even if it + would do nothing. + """ tray_initialized = False - _tray_manager = None + manager: AddonsManager = None + _tray_manager: TrayManager = None @abstractmethod - def tray_init(self): + def tray_init(self) -> None: """Initialization part of tray implementation. Triggered between `initialization` and `connect_with_addons`. This is where GUIs should be loaded or tray specific parts should be - prepared. + prepared + """ - - pass + raise NotImplementedError @abstractmethod - def tray_menu(self, tray_menu): + def tray_menu(self, tray_menu: QtWidgets.QMenu) -> None: """Add addon's action to tray menu.""" + raise NotImplementedError - pass @abstractmethod - def tray_start(self): + def tray_start(self) -> None: """Start procedure in tray tool.""" - - pass + raise NotImplementedError @abstractmethod - def tray_exit(self): + def tray_exit(self) -> None: """Cleanup method which is executed on tray shutdown. This is place where all threads should be shut. + """ + raise NotImplementedError - pass + def execute_in_main_thread(self, callback: Callable) -> None: + """Pushes callback to the queue or process 'callback' on a main thread. - def execute_in_main_thread(self, callback): - """ Pushes callback to the queue or process 'callback' on a main thread + Some callbacks need to be processed on main thread (menu actions + must be added on main thread else they won't get triggered etc.) + + Args: + callback (Callable): Function to be executed on main thread - Some callbacks need to be processed on main thread (menu actions - must be added on main thread or they won't get triggered etc.) """ - if not self.tray_initialized: - # TODO Called without initialized tray, still main thread needed + # TODO: Called without initialized tray, still main thread needed try: callback() - except Exception: + except Exception: # noqa: BLE001 self.log.warning( - "Failed to execute {} in main thread".format(callback), - exc_info=True) + "Failed to execute %s callback in main thread", + str(callback), exc_info=True) return - self.manager.tray_manager.execute_in_main_thread(callback) + self._tray_manager.tray_manager.execute_in_main_thread(callback) - def show_tray_message(self, title, message, icon=None, msecs=None): + def show_tray_message( + self, + title: str, + message: str, + icon: Optional[QtWidgets.QSystemTrayIcon]=None, + msecs: Optional[int]=None) -> None: """Show tray message. Args: @@ -190,11 +228,11 @@ class ITrayAddon(AYONInterface): msecs (int): Duration of message visibility in milliseconds. Default is 10000 msecs, may differ by Qt version. """ - if self._tray_manager: self._tray_manager.show_tray_message(title, message, icon, msecs) - def add_doubleclick_callback(self, callback): + def add_doubleclick_callback(self, callback: Callable) -> None: + """Add callback to be triggered on tray icon double click.""" if hasattr(self.manager, "add_doubleclick_callback"): self.manager.add_doubleclick_callback(self, callback) @@ -216,16 +254,17 @@ class ITrayAction(ITrayAddon): @property @abstractmethod - def label(self): + def label(self) -> str: """Service label showed in menu.""" - pass + raise NotImplementedError @abstractmethod - def on_action_trigger(self): + def on_action_trigger(self) -> None: """What happens on actions click.""" - pass + raise NotImplementedError - def tray_menu(self, tray_menu): + def tray_menu(self, tray_menu: QtWidgets.QMenu) -> None: + """Add action to tray menu.""" from qtpy import QtWidgets if self.admin_action: @@ -242,14 +281,17 @@ class ITrayAction(ITrayAddon): action.triggered.connect(self.on_action_trigger) self._action_item = action - def tray_start(self): + def tray_start(self) -> None: + """Start procedure in tray tool.""" return - def tray_exit(self): + def tray_exit(self) -> None: + """Cleanup method which is executed on tray shutdown.""" return @staticmethod - def admin_submenu(tray_menu): + def admin_submenu(tray_menu: QtWidgets.QMenu) -> QtWidgets.QMenu: + """Get or create admin submenu.""" if ITrayAction._admin_submenu is None: from qtpy import QtWidgets @@ -260,20 +302,21 @@ class ITrayAction(ITrayAddon): class ITrayService(ITrayAddon): + """Tray service Interface.""" # Module's property - menu_action = None + menu_action: QtWidgets.QAction = None # Class properties - _services_submenu = None - _icon_failed = None - _icon_running = None - _icon_idle = None + _services_submenu: QtWidgets.QMenu = None + _icon_failed: QtWidgets.QIcon = None + _icon_running: QtWidgets.QIcon = None + _icon_idle: QtWidgets.QIcon = None @property @abstractmethod - def label(self): + def label(self) -> str: """Service label showed in menu.""" - pass + raise NotImplementedError # TODO be able to get any sort of information to show/print # @abstractmethod @@ -281,7 +324,8 @@ class ITrayService(ITrayAddon): # pass @staticmethod - def services_submenu(tray_menu): + def services_submenu(tray_menu: QtWidgets.QMenu) -> QtWidgets.QMenu: + """Get or create services submenu.""" if ITrayService._services_submenu is None: from qtpy import QtWidgets @@ -291,13 +335,15 @@ class ITrayService(ITrayAddon): return ITrayService._services_submenu @staticmethod - def add_service_action(action): + def add_service_action(action: QtWidgets.QAction) -> None: + """Add service action to services submenu.""" ITrayService._services_submenu.addAction(action) if not ITrayService._services_submenu.menuAction().isVisible(): ITrayService._services_submenu.menuAction().setVisible(True) @staticmethod - def _load_service_icons(): + def _load_service_icons() -> None: + """Load service icons.""" from qtpy import QtGui ITrayService._failed_icon = QtGui.QIcon( @@ -311,24 +357,28 @@ class ITrayService(ITrayAddon): ) @staticmethod - def get_icon_running(): + def get_icon_running() -> QtWidgets.QIcon: + """Get running icon.""" if ITrayService._icon_running is None: ITrayService._load_service_icons() return ITrayService._icon_running @staticmethod - def get_icon_idle(): + def get_icon_idle() -> QtWidgets.QIcon: + """Get idle icon.""" if ITrayService._icon_idle is None: ITrayService._load_service_icons() return ITrayService._icon_idle @staticmethod - def get_icon_failed(): - if ITrayService._failed_icon is None: + def get_icon_failed() -> QtWidgets.QIcon: + """Get failed icon.""" + if ITrayService._icon_failed is None: ITrayService._load_service_icons() - return ITrayService._failed_icon + return ITrayService._icon_failed - def tray_menu(self, tray_menu): + def tray_menu(self, tray_menu: QtWidgets.QMenu) -> None: + """Add service to tray menu.""" from qtpy import QtWidgets action = QtWidgets.QAction( @@ -341,21 +391,18 @@ class ITrayService(ITrayAddon): self.set_service_running_icon() - def set_service_running_icon(self): + def set_service_running_icon(self) -> None: """Change icon of an QAction to green circle.""" - if self.menu_action: self.menu_action.setIcon(self.get_icon_running()) - def set_service_failed_icon(self): + def set_service_failed_icon(self) -> None: """Change icon of an QAction to red circle.""" - if self.menu_action: self.menu_action.setIcon(self.get_icon_failed()) - def set_service_idle_icon(self): + def set_service_idle_icon(self) -> None: """Change icon of an QAction to orange circle.""" - if self.menu_action: self.menu_action.setIcon(self.get_icon_idle()) @@ -365,18 +412,31 @@ class IHostAddon(AYONInterface): @property @abstractmethod - def host_name(self): + def host_name(self) -> str: """Name of host which addon represents.""" + raise NotImplementedError - pass - - def get_workfile_extensions(self): + def get_workfile_extensions(self) -> list[str]: """Define workfile extensions for host. Not all hosts support workfiles thus this is optional implementation. Returns: List[str]: Extensions used for workfiles with dot. - """ + """ return [] + + +class ITraits(AYONInterface): + """Interface for traits.""" + + @abstractmethod + def get_addon_traits(self) -> list[Type[TraitBase]]: + """Get trait classes for the addon. + + Returns: + list[Type[TraitBase]]: Traits for the addon. + + """ + raise NotImplementedError diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 4387109cbe..676aabb029 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -271,13 +271,41 @@ rep = Representation.from_dict(name="image", rep_dict) ``` -## Future -Apart of some new additions to traits if needed, there are few thing that needs to be done. +## Addon specific traits -### Traits plugin system +Addon can define its own traits. To do so, it needs to implement `ITraits` interface: -Traits are now ordinary python classes, but to extend its usability more, it would be good to -have addon level API to expose traits defined by individual addons. This API would then be used not -only by discovery logic but also by the AYON server that can display and work with the information -defined by them. \ No newline at end of file +```python +from ayon_core.pipeline.traits import TraitBase +from ayon_core.addon import ( + AYONAddon, + ITraits, +) + +class MyTraitFoo(TraitBase): + id = "myaddon.mytrait.foo.v1" + name = "My Trait Foo" + description = "This is my trait foo" + persistent = True + + +class MyTraitBar(TraitBase): + id = "myaddon.mytrait.bar.v1" + name = "My Trait Bar" + description = "This is my trait bar" + persistent = True + + +class MyAddon(AYONAddon, ITraits): + def __init__(self): + super().__init__() + + def get_addon_traits(self): + return [ + MyTraitFoo, + MyTraitBar, + ] + + +``` From 34051efcfc73d83b70a25b4c34f5d9d366d4fa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 10 Dec 2024 09:28:40 +0100 Subject: [PATCH 077/626] :art: handle bundle templates --- .../plugins/publish/integrate_traits.py | 159 ++++++++++-------- 1 file changed, 85 insertions(+), 74 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 997ba6a774..447be6665c 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -58,6 +58,16 @@ class TransferItem: Source file path, destination file path, template that was used to construct the destination path, template data that was used in the template, size of the file, checksum of the file. + + Attributes: + source (Path): Source file path. + destination (Path): Destination file path. + size (int): Size of the file. + checksum (str): Checksum of the file. + template (str): Template path. + template_data (dict[str, Any]): Template data. + representation (Representation): Reference to representation + """ source: Path destination: Path @@ -65,6 +75,7 @@ class TransferItem: checksum: str template: str template_data: dict[str, Any] + representation: Representation @dataclass @@ -72,6 +83,12 @@ class TemplateItem: """Represents single template item. Template path, template data that was used in the template. + + Attributes: + anatomy (Anatomy): Anatomy object. + template (str): Template path. + template_data (dict[str, Any]): Template data. + template_object (AnatomyTemplateItem): Template object """ anatomy: Anatomy template: str @@ -147,7 +164,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): order = pyblish.api.IntegratorOrder log: logging.Logger - def process(self, instance: pyblish.api.Instance) -> None: # noqa: C901 + def process(self, instance: pyblish.api.Instance) -> None: """Integrate representations with traits. Todo: @@ -204,7 +221,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance_template_data: dict[str, str] = {} transfers: list[TransferItem] = [] - # 6.5) prepare template and data to format it + # prepare template and data to format it for representation in representations: # validate representation first, this will go through all traits @@ -230,7 +247,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): anatomy=instance.context.data["anatomy"], template=template, template_data=template_data, - template_object=self.get_publish_template_object(instance) + template_object=self.get_publish_template_object(instance), ) if representation.contains_trait(FileLocations): @@ -250,27 +267,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): elif representation.contains_trait(Bundle): # Bundle groups multiple "sub-representations" together. - # It has list of lists with traits, some might be + # It has a list of lists with traits, some might be # FileLocations,but some might be "file-less" representations # or even other bundles. - bundle: Bundle = representation.get_trait(Bundle) - for idx, sub_representation_traits in enumerate(bundle.items): - sub_representation = Representation( - name=f"{representation.name}_{idx}", - traits=sub_representation_traits) - # sub presentation transient: - sub_representation.add_trait(Transient()) - if sub_representation.contains_trait(FileLocations): - ... - - # add TemplatePath trait to the representation - representation.add_trait(TemplatePath( - template=template_item.template, - data=template_item.template_data - )) - - transfers += self.get_transfers_from_representation( - representation, template, template_data) + self.get_transfers_from_bundle( + representation, template_item, transfers + ) def _get_relative_to_root_original_dirname( @@ -696,58 +698,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return template_data - @staticmethod - def get_transfers_from_representation( - representation: Representation, - template: str, - template_data: dict) -> list: - """Get transfers from representation. - - Args: - representation (Representation): Representation to process. - template (str): Template to format. - template_data (dict): Template data. - - Returns: - list: List of transfers. - - """ - transfers = [] - # check if representation contains traits with files - if not representation.contains_traits( - [FileLocation, FileLocations]): - return transfers - - files: list[Path] = [] - - if representation.contains_trait(FileLocations): - files = [ - location.file_path - for location in representation.get_trait( - FileLocations).file_paths - ] - elif representation.contains_trait(FileLocation): - file_location: FileLocation = representation.get_trait( - FileLocation) - files = [file_location.file_path] - - template_data_copy = copy.deepcopy(template_data) - for file in files: - if "{originalBasename}" in template: - template_data_copy["originalBasename"] = file.stem - """ - dst = path_template_obj.format_strict(template_data) - src = os.path.join(stagingdir, src_file_name) - """ - if representation.contains_trait_by_id( - FileLocation.get_versionless_id()): - file_location: FileLocation = representation.get_trait_by_id( - FileLocation.get_versionless_id()) - """ - transfers += self.get_transfers_from_file_location( - file_location, template, template_data) - """ - return transfers @staticmethod def get_transfers_from_file_locations( @@ -820,6 +770,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): if template_padding > dst_padding: dst_padding = template_padding + # add template path and the data to resolve it + representation.add_trait(TemplatePath( + template=template_item.template, + data=template_item.template_data + )) + # go through all frames in the sequence # find their corresponding file locations # format their template and add them to transfers @@ -839,9 +795,11 @@ class IntegrateTraits(pyblish.api.InstancePlugin): checksum=file_loc.file_hash, template=template_item.template, template_data=template_item.template_data, + representation=representation, ) ) + @staticmethod def get_transfers_from_udim( representation: Representation, @@ -876,8 +834,14 @@ class IntegrateTraits(pyblish.api.InstancePlugin): checksum=file_loc.file_hash, template=template_item.template, template_data=template_item.template_data, + representation=representation, ) ) + # add template path and the data to resolve it + representation.add_trait(TemplatePath( + template=template_item.template, + data=template_item.template_data + )) @staticmethod def get_transfers_from_file_location( @@ -915,5 +879,52 @@ class IntegrateTraits(pyblish.api.InstancePlugin): checksum=file_loc.file_hash, template=template_item.template, template_data=template_item.template_data.copy(), + representation=representation, ) ) + # add template path and the data to resolve it + representation.add_trait(TemplatePath( + template=template_item.template, + data=template_item.template_data + )) + + @staticmethod + def get_transfers_from_bundle( + representation: Representation, + template_item: TemplateItem, + transfers: list[TransferItem] + ) -> None: + """Get transfers from Bundle trait. + + This will be called recursively for each sub-representation in the + bundle that is a Bundle itself. + + Args: + representation (Representation): Representation to process. + template_item (TemplateItem): Template item. + transfers (list): List of transfers. + + Mutates: + transfers (list): List of transfers. + template_item (TemplateItem): Template item. + + """ + bundle: Bundle = representation.get_trait(Bundle) + for idx, sub_representation_traits in enumerate(bundle.items): + sub_representation = Representation( + name=f"{representation.name}_{idx}", + traits=sub_representation_traits) + # sub presentation transient: + sub_representation.add_trait(Transient()) + if sub_representation.contains_trait(FileLocations): + IntegrateTraits.get_transfers_from_file_locations( + sub_representation, template_item, transfers + ) + elif sub_representation.contains_trait(FileLocation): + IntegrateTraits.get_transfers_from_file_location( + sub_representation, template_item, transfers + ) + elif sub_representation.contains_trait(Bundle): + IntegrateTraits.get_transfers_from_bundle( + sub_representation, template_item, transfers + ) From b51273af8e54078e3739d131e06038f66baf7d85 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 10 Dec 2024 11:55:40 +0100 Subject: [PATCH 078/626] :art: add original location traits and fix some typos --- client/ayon_core/pipeline/traits/README.md | 27 ++++++++++++---------- client/ayon_core/pipeline/traits/meta.py | 26 +++++++++++++++++++++ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 676aabb029..f9d7be5de1 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -28,10 +28,10 @@ This will be *"translated"* to similar structure in database: "version_id": "...", "files": [ { - "id": ... - "hash": ... + "id": ..., + "hash": ..., "name": "foo_001.exr", - "path": "{root[work]}/bar/dir/foo_001.exr" + "path": "{root[work]}/bar/dir/foo_001.exr", "size": 1234, "hash_type": "...", }, @@ -39,15 +39,15 @@ This will be *"translated"* to similar structure in database: ], "attrib": { "path": "root/bar/dir/foo_001.exr", - "template": "{root[work]}/{project[name]}..." + "template": "{root[work]}/{project[name]}...", }, "data": { "context": { "ext": "exr", - "root": {...} + "root": {...}, ... }, - "active": True" + "active": True ... } @@ -163,6 +163,8 @@ to different packages based on their use: | meta | Tagged | holds list of tag strings. | | TemplatePath | Template consisted of tokens/keys and data to be used to resolve the template into string | | Variant | Used to differentiate between data variants of the same output (mp4 as h.264 and h.265 for example) +| | KeepOriginalLocation | Marks the representation to keep the original location of the file +| | KeepOriginalName | Marks the representation to keep the original name of the file | three dimensional | Spatial | Spatial information like up-axis, units and handedness. | | Geometry | Type trait to mark the representation as a geometry. | | Shader | Type trait to mark the representation as a Shader. @@ -202,21 +204,21 @@ from ayon_core.pipeline.traits import ( Image, PixelBased, Persistent, - Representation - Static + Representation, + Static, ) rep = Representation(name="reference image", traits=[ FileLocation( file_path=Path("/foo/bar/baz.exr"), file_size=1234, - file_hash="sha256:..." + file_hash="sha256:...", ), Image(), PixelBased( - display_window_width="1920", - display_window_height="1080", - pixel_aspect_ratio=1.0 + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0, ), Persistent(), Static() @@ -237,6 +239,7 @@ To work with the resolution of such representation: try: width = rep.get_trait(PixelBased).display_window_width + # or like this: height = rep[PixelBased.id].display_window_height except MissingTraitError: print(f"resolution isn't set on {rep.name}") diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index b240e7a4da..c2f13b69f1 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -52,6 +52,7 @@ class TemplatePath(TraitBase): template: str = Field(..., title="Template Path") data: dict = Field(..., title="Formatting Data") + class Variant(TraitBase): """Variant trait model. @@ -73,3 +74,28 @@ class Variant(TraitBase): description: ClassVar[str] = "Variant Trait Model" id: ClassVar[str] = "ayon.meta.Variant.v1" variant: str = Field(..., title="Variant") + + +class KeepOriginalLocation(TraitBase): + """Keep files in its original location. + + Note: + This is not a persistent trait. + + """ + name: ClassVar[str] = "KeepOriginalLocation" + description: ClassVar[str] = "Keep Original Location Trait Model" + id: ClassVar[str] = "ayon.meta.KeepOriginalLocation.v1" + persistent = Field(False, title="Persistent") + +class KeepOriginalName(TraitBase): + """Keep files in its original name. + + Note: + This is not a persistent trait. + + """ + name: ClassVar[str] = "KeepOriginalName" + description: ClassVar[str] = "Keep Original Name Trait Model" + id: ClassVar[str] = "ayon.meta.KeepOriginalName.v1" + persistent = Field(False, title="Persistent") From 1dd3c00eb5802254a21bd5d7ea51f562a93ac366 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 10 Dec 2024 23:02:10 +0100 Subject: [PATCH 079/626] :bug: fix template data --- .../plugins/publish/integrate_traits.py | 104 +++++++++--- .../plugins/publish/test_integrate_traits.py | 156 ++++++++++++++++-- 2 files changed, 219 insertions(+), 41 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 447be6665c..a816a42c3f 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -3,6 +3,7 @@ from __future__ import annotations import contextlib import copy +from copy import deepcopy from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING, Any, List @@ -47,8 +48,8 @@ if TYPE_CHECKING: from ayon_core.pipeline import Anatomy from ayon_core.pipeline.anatomy.templates import ( - TemplateItem as AnatomyTemplateItem, - ) + TemplateItem as AnatomyTemplateItem, AnatomyStringTemplate, +) @dataclass(frozen=True) @@ -203,23 +204,43 @@ class IntegrateTraits(pyblish.api.InstancePlugin): "Instance has no persistent representations. Skipping") return - # 3) get template and template data - template: str = self.get_publish_template(instance) - - # 4) initialize OperationsSession() op_session = OperationsSession() - # 5) Prepare product product_entity = self.prepare_product(instance, op_session) - # 6) Prepare version version_entity = self.prepare_version( instance, op_session, product_entity ) instance.data["versionEntity"] = version_entity - instance_template_data: dict[str, str] = {} + transfers = self.get_transfers_from_representations( + instance, representations) + def get_transfers_from_representations( + self, + instance: pyblish.api.Instance, + representations: list[Representation]) -> list[TransferItem]: + """Get transfers from representations. + + This method will go through all representations and prepare transfers + based on the traits they contain. First it will validate the + representation, and then it will prepare template data for the + representation. It specifically handles FileLocations, FileLocation, + Bundle, Sequence and UDIM traits. + + Args: + instance (pyblish.api.Instance): Instance to process. + representations (list[Representation]): List of representations. + + Returns: + list[TransferItem]: List of transfers. + + Raises: + PublishError: If representation is invalid. + + """ + template: str = self.get_publish_template(instance) + instance_template_data: dict[str, str] = {} transfers: list[TransferItem] = [] # prepare template and data to format it for representation in representations: @@ -235,6 +256,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_data = self.get_template_data_from_representation( representation, instance) # add instance based template data + template_data.update(instance_template_data) # treat Variant as `output` in template data @@ -246,7 +268,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_item = TemplateItem( anatomy=instance.context.data["anatomy"], template=template, - template_data=template_data, + template_data=copy.deepcopy(template_data), template_object=self.get_publish_template_object(instance), ) @@ -273,7 +295,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): self.get_transfers_from_bundle( representation, template_item, transfers ) - + return transfers def _get_relative_to_root_original_dirname( self, instance: pyblish.api.Instance) -> str: @@ -668,6 +690,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): """ template_data = copy.deepcopy(instance.data["anatomyData"]) template_data["representation"] = representation.name + template_data["version"] = instance.data["version"] + template_data["hierarchy"] = instance.data["hierarchy"] # add colorspace data to template data if representation.contains_trait(ColorManaged): @@ -770,23 +794,26 @@ class IntegrateTraits(pyblish.api.InstancePlugin): if template_padding > dst_padding: dst_padding = template_padding - # add template path and the data to resolve it - representation.add_trait(TemplatePath( - template=template_item.template, - data=template_item.template_data - )) - # go through all frames in the sequence # find their corresponding file locations # format their template and add them to transfers for frame in frames: - template_item.template_data["frame"] = frame - template_filled = path_template_object.format_strict( - template_item.template_data - ) file_loc: FileLocation = representation.get_trait( FileLocations).get_file_location_for_frame( frame, sequence) + + template_item.template_data["frame"] = frame + template_item.template_data["ext"] = ( + file_loc.file_path.suffix + ) + template_filled = path_template_object.format_strict( + template_item.template_data + ) + + # add used values to the template data + used_values: dict = template_filled.used_values + template_item.template_data.update(used_values) + transfers.append( TransferItem( source=file_loc.file_path, @@ -799,6 +826,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) ) + # add template path and the data to resolve it + representation.add_trait(TemplatePath( + template=template_item.template, + data=template_item.template_data + )) + @staticmethod def get_transfers_from_udim( @@ -819,13 +852,23 @@ class IntegrateTraits(pyblish.api.InstancePlugin): """ udim: UDIM = representation.get_trait(UDIM) + path_template_object: AnatomyStringTemplate = ( + template_item.template_object["path"] + ) for file_loc in representation.get_trait( FileLocations).file_paths: template_item.template_data["udim"] = ( udim.get_udim_from_file_location(file_loc) ) - template_filled = template_item.template.format( - **template_item.template_data) + + template_filled = path_template_object.format_strict( + template_item.template_data + ) + + # add used values to the template data + used_values: dict = template_filled.used_values + template_item.template_data.update(used_values) + transfers.append( TransferItem( source=file_loc.file_path, @@ -861,7 +904,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_item (TemplateItem): Template item. """ - path_template_object = template_item.template_object["path"] + path_template_object: AnatomyStringTemplate = ( + template_item.template_object["path"] + ) + template_item.template_data["ext"] = ( + representation.get_trait(FileLocation).file_path.suffix + ) template_item.template_data.pop("frame", None) with contextlib.suppress(MissingTraitError): udim = representation.get_trait(UDIM) @@ -870,6 +918,11 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_filled = path_template_object.format_strict( template_item.template_data ) + + # add used values to the template data + used_values: dict = template_filled.used_values + template_item.template_data.update(used_values) + file_loc: FileLocation = representation.get_trait(FileLocation) transfers.append( TransferItem( @@ -878,7 +931,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): size=file_loc.file_size, checksum=file_loc.file_hash, template=template_item.template, - template_data=template_item.template_data.copy(), + template_data=template_item.template_data, representation=representation, ) ) @@ -928,3 +981,4 @@ class IntegrateTraits(pyblish.api.InstancePlugin): IntegrateTraits.get_transfers_from_bundle( sub_representation, template_item, transfers ) + diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 11922f6c9a..a54d0a3cfa 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -2,10 +2,16 @@ from __future__ import annotations import base64 +import time from pathlib import Path import pyblish.api import pytest +import pytest_ayon +from ayon_api.operations import ( + OperationsSession, +) +from ayon_core.pipeline.anatomy import Anatomy from ayon_core.pipeline.traits import ( FileLocation, FileLocations, @@ -18,6 +24,7 @@ from ayon_core.pipeline.traits import ( Sequence, Transient, ) +from ayon_core.pipeline.version_start import get_versioning_start # Tagged, # TemplatePath, @@ -26,6 +33,8 @@ from ayon_core.settings import get_project_settings PNG_FILE_B64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==" # noqa: E501 SEQUENCE_LENGTH = 10 +CURRENT_TIME = time.time() + @pytest.fixture(scope="session") def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: @@ -48,7 +57,7 @@ def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: @pytest.fixture() def mock_context( - project: object, + project: pytest_ayon.ProjectInfo, single_file: Path, sequence_files: list[Path]) -> pyblish.api.Context: """Return a mock instance. @@ -56,18 +65,6 @@ def mock_context( This is mocking pyblish context for testing. It is using real AYON project thanks to the ``project`` fixture. - This returns following data:: - - project_name: str - project_code: str - project_root_folders: dict[str, str] - folder: IdNamePair - task: IdNamePair - product: IdNamePair - version: IdNamePair - representations: List[IdNamePair] - links: List[str] - Args: project (object): The project info. It is `ProjectInfo` object returned by pytest fixture. @@ -75,25 +72,68 @@ def mock_context( sequence_files (list[Path]): The paths to a sequence of image files. """ + anatomy = Anatomy(project.project_name) context = pyblish.api.Context() context.data["projectName"] = project.project_name context.data["hostName"] = "test_host" context.data["project_settings"] = get_project_settings( project.project_name) + context.data["anatomy"] = anatomy + context.data["time"] = CURRENT_TIME + context.data["user"] = "test_user" + context.data["machine"] = "test_machine" + context.data["fps"] = 25 instance = context.create_instance("mock_instance") + instance.data["source"] = "test_source" + instance.data["families"] = ["render"] instance.data["anatomyData"] = { - "project": project.project_name, + "project": { + "name": project.project_name, + "code": project.project_code + }, "task": { "name": project.task.name, "type": "test" # pytest-ayon doesn't return the task type yet - } + }, + "folder": { + "name": project.folder.name, + "type": "test" # pytest-ayon doesn't return the folder type yet + }, + "product": { + "name": project.product.name, + "type": "test" # pytest-ayon doesn't return the product type yet + }, + } + instance.data["folderEntity"] = project.folder_entity instance.data["productType"] = "test_product" + instance.data["productName"] = project.product.name + instance.data["anatomy"] = anatomy + instance.data["comment"] = "test_comment" instance.data["integrate"] = True instance.data["farm"] = False + parents = project.folder_entity["path"].lstrip("/").split("/") + + hierarchy = "" + if parents: + hierarchy = "/".join(parents) + + instance.data["hierarchy"] = hierarchy + + version_number = get_versioning_start( + context.data["projectName"], + instance.context.data["hostName"], + task_name=project.task.name, + task_type="test", + product_type=instance.data["productType"], + product_name=instance.data["productName"] + ) + + instance.data["version"] = version_number + _file_size = len(base64.b64decode(PNG_FILE_B64)) file_locations = [ FileLocation( @@ -121,7 +161,7 @@ def mock_context( ), Sequence( frame_padding=4, - frame_regex=r"^img\.(\d{4})\.png$", + frame_regex=r"^img\.(?P\d{4})\.png$", ), FileLocations( file_paths=file_locations, @@ -176,3 +216,87 @@ def test_filter_lifecycle() -> None: assert len(filtered) == 1 assert filtered[0] == persistent_representation + + +def test_prepare_product( + project: pytest_ayon.ProjectInfo, + mock_context: pyblish.api.Context) -> None: + """Test prepare_product.""" + integrator = IntegrateTraits() + op_session = OperationsSession() + product = integrator.prepare_product(mock_context[0], op_session) + + assert product == { + "attrib": {}, + "data": { + "families": ["default", "render"], + }, + "folderId": project.folder_entity["id"], + "name": "renderMain", + "productType": "test_product", + "id": project.product_entity["id"], + } + +def test_prepare_version( + project: pytest_ayon.ProjectInfo, + mock_context: pyblish.api.Context) -> None: + """Test prepare_version.""" + integrator = IntegrateTraits() + op_session = OperationsSession() + product = integrator.prepare_product(mock_context[0], op_session) + version = integrator.prepare_version( + mock_context[0], op_session , product) + + assert version == { + "attrib": { + "comment": "test_comment", + "families": ["default", "render"], + "fps": 25, + "machine": "test_machine", + "source": "test_source", + }, + "data": { + "author": "test_user", + "time": CURRENT_TIME, + }, + "id": project.version_entity["id"], + "productId": project.product_entity["id"], + "version": 1, + } + + +def test_get_transfers_from_representation( + mock_context: pyblish.api.Context) -> None: + """Test get_transfers_from_representation.""" + integrator = IntegrateTraits() + + instance = mock_context[0] + representations: list[Representation] = instance.data[ + "representations_with_traits"] + transfers = integrator.get_transfers_from_representations( + instance, representations) + + assert transfers == [ + { + "file_path": Path("test"), + "file_size": 1234, + "traits": [ + "Persistent", + "Image", + "MimeType" + ] + }, + { + "file_path": Path("test"), + "file_size": 1234, + "traits": [ + "Persistent", + "FrameRanged", + "Sequence", + "FileLocations", + "Image", + "PixelBased", + "MimeType" + ] + } + ] From 83dfd765e2b038959c6ac3ec2996eb132ad45818 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 10 Dec 2024 23:05:35 +0100 Subject: [PATCH 080/626] :bug: fix validation --- client/ayon_core/pipeline/traits/lifecycle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index b5cede3bb1..70fdbb86cf 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -58,6 +58,6 @@ class Persistent(TraitBase): representation (Representation): Representation model. """ - if representation.contains_trait(Persistent): + if representation.contains_trait(Transient): msg = "Representation is marked as both Persistent and Transient." raise TraitValidationError(self.name, msg) From 6d9c73dae71eb0e308408fbd816ef0f0800c4b97 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 11 Dec 2024 13:53:53 +0100 Subject: [PATCH 081/626] :bug: small fixes --- client/ayon_core/pipeline/traits/meta.py | 4 ++-- client/ayon_core/pipeline/traits/time.py | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index c2f13b69f1..5cf5f54c36 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -86,7 +86,7 @@ class KeepOriginalLocation(TraitBase): name: ClassVar[str] = "KeepOriginalLocation" description: ClassVar[str] = "Keep Original Location Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalLocation.v1" - persistent = Field(False, title="Persistent") + persistent: bool = Field(False, title="Persistent") class KeepOriginalName(TraitBase): """Keep files in its original name. @@ -98,4 +98,4 @@ class KeepOriginalName(TraitBase): name: ClassVar[str] = "KeepOriginalName" description: ClassVar[str] = "Keep Original Name Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalName.v1" - persistent = Field(False, title="Persistent") + persistent: bool = Field(False, title="Persistent") diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 22a5c16c13..74da6ef570 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -287,7 +287,7 @@ class Sequence(TraitBase): "Frame padding does not match the expected frame padding. " f"Expected: {expected_padding}, Found: {self.frame_padding}" ) - raise TraitValidationError(msg) + raise TraitValidationError(self.name, msg) @staticmethod def list_spec_to_frames(list_spec: str) -> list[int]: @@ -350,10 +350,7 @@ class Sequence(TraitBase): def get_frame_padding(file_locations: FileLocations) -> int: """Get frame padding.""" src_collection = Sequence._get_collection(file_locations) - destination_indexes = list(src_collection.indexes) - # Use last frame for minimum padding - # - that should cover both 'udim' and 'frame' minimum padding - return len(str(destination_indexes[-1])) + return src_collection.padding @staticmethod def get_frame_list( From e466da69eb0c525e967532b8b05ba819d5fe3c69 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 11 Dec 2024 13:54:31 +0100 Subject: [PATCH 082/626] :bug: fix sequence frames --- .../client/ayon_core/plugins/publish/test_integrate_traits.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index a54d0a3cfa..41f952f962 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -48,8 +48,10 @@ def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: """Return a sequence of temporary image files.""" files = [] + dir_name = tmp_path_factory.mktemp("sequence") for i in range(SEQUENCE_LENGTH): - filename = tmp_path_factory.mktemp("sequence") / f"img.{i:04d}.png" + frame = i + 1 + filename = dir_name / f"img.{frame:04d}.png" with open(filename, "wb") as f: f.write(base64.b64decode(PNG_FILE_B64)) files.append(filename) From b0238cba5ccbd516cc2597572ca9126016aaf904 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 12 Dec 2024 17:38:49 +0100 Subject: [PATCH 083/626] :bug: fix regex named group for frame list this is needed to align with named groups in `clique`. Frame is IMO more descriptive but aligning it simplify the code --- client/ayon_core/pipeline/traits/content.py | 4 ++-- client/ayon_core/pipeline/traits/time.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 0ca0cbb3e1..4d198813c1 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -140,7 +140,7 @@ class FileLocations(TraitBase): Optional[FileLocation]: File location for the frame. """ - frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" + frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" if sequence_trait and sequence_trait.frame_regex: frame_regex = sequence_trait.frame_regex @@ -148,7 +148,7 @@ class FileLocations(TraitBase): for location in self.file_paths: result = re.search(frame_regex, location.file_path.name) if result: - frame_index = int(result.group("frame")) + frame_index = int(result.group("index")) if frame_index == frame: return location return None diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 74da6ef570..7687a023da 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -118,7 +118,8 @@ class Sequence(TraitBase): sequence. frame_padding (int): Frame padding. frame_regex (str): Frame regex - regular expression to match - frame numbers. Must include 'frame' named group. + frame numbers. Must include 'index' named group and 'padding' + named group. frame_spec (str): Frame list specification of frames. This takes string like "1-10,20-30,40-50" etc. @@ -136,8 +137,8 @@ class Sequence(TraitBase): @classmethod def validate_frame_regex(cls, v: Optional[str]) -> str: """Validate frame regex.""" - if v is not None and "?P" not in v: - msg = "Frame regex must include 'frame' named group" + if v and any(s not in v for s in ["?P", "?P"]): + msg = "Frame regex must include 'index' and `padding named groups" raise ValueError(msg) return v From a312ac7ff2b88fed6e81baa92d669f532dcd99fe Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 12 Dec 2024 17:41:04 +0100 Subject: [PATCH 084/626] :alembic: fix the test stub for `get_transfers_from_representation` --- .../plugins/publish/integrate_traits.py | 5 +-- .../plugins/publish/test_integrate_traits.py | 35 +++++-------------- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index a816a42c3f..43f979b196 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -826,7 +826,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) ) - # add template path and the data to resolve it + # add template path and the data to resolve it + if not representation.contains_trait(TemplatePath): representation.add_trait(TemplatePath( template=template_item.template, data=template_item.template_data @@ -908,7 +909,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_item.template_object["path"] ) template_item.template_data["ext"] = ( - representation.get_trait(FileLocation).file_path.suffix + representation.get_trait(FileLocation).file_path.suffix.rstrip(".") ) template_item.template_data.pop("frame", None) with contextlib.suppress(MissingTraitError): diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 41f952f962..95c0eb52a8 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -163,7 +163,7 @@ def mock_context( ), Sequence( frame_padding=4, - frame_regex=r"^img\.(?P\d{4})\.png$", + frame_regex=r"img\.(?P(?P0*)\d{4})\.png$", ), FileLocations( file_paths=file_locations, @@ -269,7 +269,13 @@ def test_prepare_version( def test_get_transfers_from_representation( mock_context: pyblish.api.Context) -> None: - """Test get_transfers_from_representation.""" + """Test get_transfers_from_representation. + + Todo: This test will benefit massively from a proper mocking of the + context. We need to parametrize the test with different + representations and test the output of the function. + + """ integrator = IntegrateTraits() instance = mock_context[0] @@ -278,27 +284,4 @@ def test_get_transfers_from_representation( transfers = integrator.get_transfers_from_representations( instance, representations) - assert transfers == [ - { - "file_path": Path("test"), - "file_size": 1234, - "traits": [ - "Persistent", - "Image", - "MimeType" - ] - }, - { - "file_path": Path("test"), - "file_size": 1234, - "traits": [ - "Persistent", - "FrameRanged", - "Sequence", - "FileLocations", - "Image", - "PixelBased", - "MimeType" - ] - } - ] + assert len(transfers) == 11 From a08ed708d1e0aa1657a5e60d6b8b50d7411c4909 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 20 Dec 2024 20:01:25 +0100 Subject: [PATCH 085/626] :recycle: fix mypy errors --- client/ayon_core/pipeline/traits/README.md | 10 +- client/ayon_core/pipeline/traits/color.py | 2 +- client/ayon_core/pipeline/traits/content.py | 34 +- client/ayon_core/pipeline/traits/lifecycle.py | 4 +- .../pipeline/traits/representation.py | 96 +++-- client/ayon_core/pipeline/traits/time.py | 93 +++-- client/ayon_core/pipeline/traits/trait.py | 19 +- .../pipeline/traits/two_dimensional.py | 4 +- poetry.lock | 355 ++++++++++++------ pyproject.toml | 4 + .../pipeline/traits/test_content_traits.py | 15 +- .../pipeline/traits/test_time_traits.py | 3 +- 12 files changed, 407 insertions(+), 232 deletions(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index f9d7be5de1..7ac1a1f2e9 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -309,6 +309,12 @@ class MyAddon(AYONAddon, ITraits): MyTraitFoo, MyTraitBar, ] - - ``` + +## Developer notes + +### Pydantic models +If you want to use MyPy linter, you need to make sure that +optional fields typed as `Optional[Type]` needs to set default value +using `default` or `default_factory` parameter. Otherwise MyPy will +complain about missing named arguments. \ No newline at end of file diff --git a/client/ayon_core/pipeline/traits/color.py b/client/ayon_core/pipeline/traits/color.py index 9d1fcd913c..26802d51f8 100644 --- a/client/ayon_core/pipeline/traits/color.py +++ b/client/ayon_core/pipeline/traits/color.py @@ -28,4 +28,4 @@ class ColorManaged(TraitBase): ..., description="Color space." ) - config: Optional[str] = Field(None, description="Color config.") + config: Optional[str] = Field(default=None, description="Color config.") diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 4d198813c1..b89537a35a 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -64,7 +64,7 @@ class LocatableContent(TraitBase): description: ClassVar[str] = "LocatableContent Trait Model" id: ClassVar[str] = "ayon.content.LocatableContent.v1" location: str = Field(..., title="Location") - is_templated: Optional[bool] = Field(None, title="Is Templated") + is_templated: Optional[bool] = Field(default=None, title="Is Templated") class FileLocation(TraitBase): """FileLocation trait model. @@ -86,8 +86,8 @@ class FileLocation(TraitBase): description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" file_path: Path = Field(..., title="File Path") - file_size: Optional[int] = Field(None, title="File Size") - file_hash: Optional[str] = Field(None, title="File Hash") + file_size: Optional[int] = Field(default=None, title="File Size") + file_hash: Optional[str] = Field(default=None, title="File Hash") class FileLocations(TraitBase): """FileLocation trait model. @@ -140,11 +140,10 @@ class FileLocations(TraitBase): Optional[FileLocation]: File location for the frame. """ - frame_regex = r"\.(?P(?P0*)\d+)\.\D+\d?$" + frame_regex = re.compile(r"\.(?P(?P0*)\d+)\.\D+\d?$") if sequence_trait and sequence_trait.frame_regex: - frame_regex = sequence_trait.frame_regex + frame_regex = sequence_trait.get_frame_pattern() - frame_regex = re.compile(frame_regex) for location in self.file_paths: result = re.search(frame_regex, location.file_path.name) if result: @@ -153,7 +152,7 @@ class FileLocations(TraitBase): return location return None - def validate(self, representation: Representation) -> None: + def validate_trait(self, representation: Representation) -> None: """Validate the trait. This method validates the trait against others in the representation. @@ -167,7 +166,7 @@ class FileLocations(TraitBase): bool: True if the trait is valid, False otherwise """ - super().validate(representation) + super().validate_trait(representation) if len(self.file_paths) == 0: # If there are no file paths, we can't validate msg = "No file locations defined (empty list)" @@ -205,12 +204,13 @@ class FileLocations(TraitBase): tmp_frame_ranged: FrameRanged = get_sequence_from_files( [f.file_path for f in self.file_paths]) - frames_from_spec = None + frames_from_spec: list[int] = [] with contextlib.suppress(MissingTraitError): sequence: Sequence = representation.get_trait(Sequence) + frame_regex = sequence.get_frame_pattern() if sequence.frame_spec: - frames_from_spec: list[int] = sequence.get_frame_list( - self, sequence.frame_regex) + frames_from_spec = sequence.get_frame_list( + self, frame_regex) frame_start_with_handles, frame_end_with_handles = \ self._get_frame_info_with_handles(representation, frames_from_spec) @@ -322,8 +322,8 @@ class FileLocations(TraitBase): handles: Handles = representation.get_trait(Handles) if not handles.inclusive: # if handless are exclusive, we need to adjust the frame range - frame_start_handle = handles.frame_start_handle - frame_end_handle = handles.frame_end_handle + frame_start_handle = handles.frame_start_handle or 0 + frame_end_handle = handles.frame_end_handle or 0 if frames_from_spec: frames_from_spec.extend( range(frame_start - frame_start_handle, frame_start) @@ -428,9 +428,11 @@ class Bundle(TraitBase): items: list[list[TraitBase]] = Field( ..., title="Bundles of traits") - def to_representation(self) -> Representation: - """Convert to a representation.""" - return Representation(traits=self.items) + def to_representations(self) -> Generator[Representation]: + """Convert bundle to representations.""" + for idx, item in enumerate(self.items): + yield Representation(name=f"{self.name} {idx}", traits=item) + class Fragment(TraitBase): diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index 70fdbb86cf..be87a86cbc 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -20,7 +20,7 @@ class Transient(TraitBase): description: ClassVar[str] = "Transient Trait Model" id: ClassVar[str] = "ayon.lifecycle.Transient.v1" - def validate(self, representation) -> None: # noqa: ANN001 + def validate_trait(self, representation) -> None: # noqa: ANN001 """Validate representation is not Persistent. Args: @@ -51,7 +51,7 @@ class Persistent(TraitBase): description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" - def validate(self, representation) -> None: # noqa: ANN001 + def validate_trait(self, representation) -> None: # noqa: ANN001 """Validate representation is not Transient. Args: diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index d365ea1ed2..498690dafd 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -8,7 +8,7 @@ import sys import uuid from functools import lru_cache from types import GenericAlias -from typing import ClassVar, Optional, Type, TypeVar, Union +from typing import ClassVar, Generic, ItemsView, Optional, Type, TypeVar, Union from .trait import ( IncompatibleTraitVersionError, @@ -16,12 +16,14 @@ from .trait import ( MissingTraitError, TraitBase, UpgradableTraitError, + TraitValidationError, ) -T = TypeVar("T", bound=TraitBase) + +T = TypeVar("T", bound="TraitBase") -def _get_version_from_id(_id: str) -> int: +def _get_version_from_id(_id: str) -> Optional[int]: """Get version from ID. Args: @@ -35,7 +37,7 @@ def _get_version_from_id(_id: str) -> int: return int(match[1]) if match else None -class Representation: +class Representation(Generic[T]): """Representation of products. Representation defines collection of individual properties that describe @@ -121,15 +123,15 @@ class Representation: """Return the representation name.""" return self.name - def items(self) -> dict[str, T]: + def items(self) -> ItemsView[str, T]: """Return the traits as items.""" - return self._data.items() + return ItemsView(self._data) - def add_trait(self, trait: TraitBase, *, exists_ok: bool=False) -> None: + def add_trait(self, trait: T, *, exists_ok: bool=False) -> None: """Add a trait to the Representation. Args: - trait (TraitBase): Trait to add. + trait (TraiBase): Trait to add. exists_ok (bool, optional): If True, do not raise an error if the trait already exists. Defaults to False. @@ -147,7 +149,7 @@ class Representation: self._data[trait.id] = trait def add_traits( - self, traits: list[TraitBase], *, exists_ok: bool=False) -> None: + self, traits: list[T], *, exists_ok: bool=False) -> None: """Add a list of traits to the Representation. Args: @@ -170,7 +172,7 @@ class Representation: """ try: - self._data.pop(trait.id) + self._data.pop(str(trait.id)) except KeyError as e: error_msg = f"Trait with ID {trait.id} not found." raise ValueError(error_msg) from e @@ -191,7 +193,7 @@ class Representation: error_msg = f"Trait with ID {trait_id} not found." raise ValueError(error_msg) from e - def remove_traits(self, traits: list[Type[TraitBase]]) -> None: + def remove_traits(self, traits: list[Type[T]]) -> None: """Remove a list of traits from the Representation. If no trait IDs or traits are provided, all traits will be removed. @@ -229,7 +231,7 @@ class Representation: """ return bool(self._data) - def contains_trait(self, trait: Type[TraitBase]) -> bool: + def contains_trait(self, trait: Type[T]) -> bool: """Check if the trait exists in the Representation. Args: @@ -239,7 +241,7 @@ class Representation: bool: True if the trait exists, False otherwise. """ - return bool(self._data.get(trait.id)) + return bool(self._data.get(str(trait.id))) def contains_trait_by_id(self, trait_id: str) -> bool: """Check if the trait exists using trait id. @@ -253,7 +255,7 @@ class Representation: """ return bool(self._data.get(trait_id)) - def contains_traits(self, traits: list[Type[TraitBase]]) -> bool: + def contains_traits(self, traits: list[Type[T]]) -> bool: """Check if the traits exist. Args: @@ -282,7 +284,7 @@ class Representation: self.contains_trait_by_id(trait_id) for trait_id in trait_ids ) - def get_trait(self, trait: Type[T]) -> Union[T]: + def get_trait(self, trait: Type[T]) -> T: """Get a trait from the representation. Args: @@ -296,12 +298,12 @@ class Representation: """ try: - return self._data[trait.id] + return self._data[str(trait.id)] except KeyError as e: msg = f"Trait with ID {trait.id} not found." raise MissingTraitError(msg) from e - def get_trait_by_id(self, trait_id: str) -> Union[T]: + def get_trait_by_id(self, trait_id: str) -> T: # sourcery skip: use-named-expression """Get a trait from the representation by id. @@ -337,7 +339,7 @@ class Representation: return result def get_traits(self, - traits: Optional[list[Type[TraitBase]]]=None + traits: Optional[list[Type[T]]]=None ) -> dict[str, T]: """Get a list of traits from the representation. @@ -350,14 +352,14 @@ class Representation: dict: Dictionary of traits. """ - result = {} + result: dict[str, T] = {} if not traits: for trait_id in self._data: result[trait_id] = self.get_trait_by_id(trait_id=trait_id) return result for trait in traits: - result[trait.id] = self.get_trait(trait=trait) + result[str(trait.id)] = self.get_trait(trait=trait) return result def get_traits_by_ids(self, trait_ids: list[str]) -> dict[str, T]: @@ -398,7 +400,7 @@ class Representation: self, name: str, representation_id: Optional[str]=None, - traits: Optional[list[TraitBase]]=None): + traits: Optional[list[T]]=None): """Initialize the data. Args: @@ -465,14 +467,14 @@ class Representation: @lru_cache(maxsize=64) def _get_possible_trait_classes_from_modules( cls, - trait_id: str) -> set[type[TraitBase]]: + trait_id: str) -> set[type[T]]: """Get possible trait classes from modules. Args: trait_id (str): Trait ID. Returns: - set[type[TraitBase]]: Set of trait classes. + set[type[T]]: Set of trait classes. """ modules = sys.modules.copy() @@ -501,12 +503,12 @@ class Representation: if issubclass(klass, TraitBase) \ and str(klass.id).startswith(trait_id): trait_candidates.add(klass) - return trait_candidates + return trait_candidates # type: ignore @classmethod @lru_cache(maxsize=64) def _get_trait_class( - cls, trait_id: str) -> Union[Type[TraitBase], None]: + cls, trait_id: str) -> Union[Type[T], None]: """Get the trait class with corresponding to given ID. This method will search for the trait class in all the modules except @@ -533,6 +535,8 @@ class Representation: trait_candidates = cls._get_possible_trait_classes_from_modules( trait_id ) + if not trait_candidates: + return None for trait_class in trait_candidates: if trait_class.id == trait_id: @@ -549,11 +553,11 @@ class Representation: rf"{trait_id}.v(\d+)$", str(trait_class.id)) ] if trait_versions: - def _get_version_by_id(trait_klass: Type[TraitBase]) -> int: + def _get_version_by_id(trait_klass: Type[T]) -> int: match = re.search(r"v(\d+)$", str(trait_klass.id)) return int(match[1]) if match else 0 - error = LooseMatchingTraitError( + error: LooseMatchingTraitError = LooseMatchingTraitError( "Found trait that might match.") error.found_trait = max( trait_versions, key=_get_version_by_id) @@ -563,7 +567,7 @@ class Representation: return None @classmethod - def get_trait_class_by_trait_id(cls, trait_id: str) -> type[TraitBase]: + def get_trait_class_by_trait_id(cls, trait_id: str) -> Type[T]: """Get the trait class for the given trait ID. Args: @@ -580,15 +584,28 @@ class Representation: ValueError: If the trait model with the given ID is not found. """ - trait_class = None try: trait_class = cls._get_trait_class(trait_id=trait_id) except LooseMatchingTraitError as e: requested_version = _get_version_from_id(trait_id) found_version = _get_version_from_id(e.found_trait.id) + if found_version is None and not requested_version: + msg = ( + "Trait found with no version and requested version " + "is not specified." + ) + raise IncompatibleTraitVersionError(msg) from e - if not requested_version: + if requested_version is None: trait_class = e.found_trait + requested_version = found_version + + if found_version is None: + msg = ( + f"Trait {e.found_trait.id} found with no version, " + "but requested version is specified." + ) + raise IncompatibleTraitVersionError(msg) from e else: if requested_version > found_version: @@ -605,7 +622,7 @@ class Representation: f"{requested_version} is lower " f"than the found trait version {found_version}." ) - error = UpgradableTraitError(error_msg) + error: UpgradableTraitError = UpgradableTraitError(error_msg) error.trait = e.found_trait raise error from e return trait_class @@ -638,6 +655,8 @@ class Representation: Representation: Representation instance. """ + if not trait_data: + trait_data = {} traits = [] for trait_id, value in trait_data.items(): if not isinstance(value, dict): @@ -671,14 +690,21 @@ class Representation: name=name, representation_id=representation_id, traits=traits) - def validate(self) -> bool: + def validate(self) -> None: """Validate the representation. This method will validate all the traits in the representation. - Returns: - bool: True if the representation is valid, False otherwise. + Raises: + TraitValidationError: If the trait is invalid within representation """ + errors = [] for trait in self._data.values(): - trait.validate(self) + try: + trait.validate_trait(self) + except TraitValidationError as e: + errors.append(str(e)) + if errors: + raise TraitValidationError( + f"representation {self.name}", "\n".join(errors)) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 7687a023da..46771b78fd 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -3,17 +3,19 @@ from __future__ import annotations import contextlib from enum import Enum, auto -from typing import TYPE_CHECKING, ClassVar, Optional +from typing import TYPE_CHECKING, ClassVar, Optional, Union import clique from pydantic import Field, field_validator +import re +from re import Pattern from .trait import MissingTraitError, TraitBase, TraitValidationError if TYPE_CHECKING: - import re - from pathlib import Path + + from pathlib import Path from .content import FileLocations from .representation import Representation @@ -72,10 +74,10 @@ class FrameRanged(TraitBase): ..., title="Start Frame") frame_end: int = Field( ..., title="Frame Start") - frame_in: Optional[int] = Field(None, title="In Frame") - frame_out: Optional[int] = Field(None, title="Out Frame") + frame_in: Optional[int] = Field(default=None, title="In Frame") + frame_out: Optional[int] = Field(default=None, title="Out Frame") frames_per_second: str = Field(..., title="Frames Per Second") - step: Optional[int] = Field(1, title="Step") + step: Optional[int] = Field(default=1, title="Step") class Handles(TraitBase): @@ -127,24 +129,28 @@ class Sequence(TraitBase): name: ClassVar[str] = "Sequence" description: ClassVar[str] = "Sequence Trait Model" id: ClassVar[str] = "ayon.time.Sequence.v1" - gaps_policy: GapPolicy = Field( - GapPolicy.forbidden, title="Gaps Policy") + gaps_policy: Optional[GapPolicy] = Field( + default=GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") - frame_regex: Optional[str] = Field(None, title="Frame Regex") - frame_spec: Optional[str] = Field(None, title="Frame Specification") + frame_regex: Optional[Union[Pattern, str]] = Field(default=None, title="Frame Regex") + frame_spec: Optional[str] = Field(default=None, title="Frame Specification") @field_validator("frame_regex") @classmethod - def validate_frame_regex(cls, v: Optional[str]) -> str: + def validate_frame_regex( + cls, v: Optional[Union[Pattern, str]]) -> Optional[Union[Pattern, str]]: """Validate frame regex.""" - if v and any(s not in v for s in ["?P", "?P"]): + _v = v + if v and isinstance(v, Pattern): + _v = v.pattern + if v and any(s not in _v for s in ["?P", "?P"]): msg = "Frame regex must include 'index' and `padding named groups" raise ValueError(msg) - return v + return _v - def validate(self, representation: Representation) -> None: + def validate_trait(self, representation: Representation) -> None: """Validate the trait.""" - super().validate(representation) + super().validate_trait(representation) # if there is FileLocations trait, run validation # on it as well @@ -189,13 +195,16 @@ class Sequence(TraitBase): FrameRanged) frame_start = frame_ranged.frame_start frame_end = frame_ranged.frame_end - self.validate_frame_list( - file_locs, - frame_start, - frame_end, - handles_frame_start, - handles_frame_end) + if self.frame_spec is not None: + self.validate_frame_list( + file_locs, + frame_start, + frame_end, + handles_frame_start, + handles_frame_end) + self.validate_frame_padding(file_locs) + def validate_frame_list( self, @@ -230,8 +239,18 @@ class Sequence(TraitBase): if self.frame_spec is None: return - frames: list[int] = self.get_frame_list( - file_locations, self.frame_regex) + frames: list[int] = [] + if self.frame_regex: + if isinstance(self.frame_regex, str): + frame_regex = re.compile(self.frame_regex) + elif isinstance(self.frame_regex, Pattern): + frame_regex = self.frame_regex + + frames = self.get_frame_list( + file_locations, frame_regex) + else: + frames = self.get_frame_list( + file_locations) expected_frames = self.list_spec_to_frames(self.frame_spec) if frame_start is None or frame_end is None: @@ -307,20 +326,19 @@ class Sequence(TraitBase): frames.append(int(ranges[0])) continue start, end = segment.split("-") - start, end = int(start), int(end) - frames.extend(range(start, end + 1)) + frames.extend(range(int(start), int(end) + 1)) return frames @staticmethod def _get_collection( file_locations: FileLocations, - regex: Optional[re.Pattern] = None) -> clique.Collection: + regex: Optional[Pattern] = None) -> clique.Collection: r"""Get collection from file locations. Args: file_locations (FileLocations): File locations trait. - regex (Optional[re.Pattern]): Regular expression to match + regex (Optional[Pattern]): Regular expression to match frame numbers. This is passed to ``clique.assemble()``. Default clique pattern is:: @@ -334,7 +352,7 @@ class Sequence(TraitBase): """ patterns = None if not regex else [regex] - files: list[Path] = [ + files: list[str] = [ file.file_path.as_posix() for file in file_locations.file_paths ] @@ -351,18 +369,18 @@ class Sequence(TraitBase): def get_frame_padding(file_locations: FileLocations) -> int: """Get frame padding.""" src_collection = Sequence._get_collection(file_locations) - return src_collection.padding + return len(str(max(src_collection.indexes))) @staticmethod def get_frame_list( file_locations: FileLocations, - regex: Optional[re.Pattern] = None, + regex: Optional[Pattern] = None, ) -> list[int]: r"""Get frame list. Args: file_locations (FileLocations): File locations trait. - regex (Optional[re.Pattern]): Regular expression to match + regex (Optional[Pattern]): Regular expression to match frame numbers. This is passed to ``clique.assemble()``. Default clique pattern is:: @@ -373,6 +391,19 @@ class Sequence(TraitBase): """ src_collection = Sequence._get_collection(file_locations, regex) return list(src_collection.indexes) + + def get_frame_pattern(self) -> Pattern: + """Get frame regex as pattern. + + If the regex is string, it will compile it to the pattern. + + """ + if self.frame_regex: + if isinstance(self.frame_regex, str): + return re.compile(self.frame_regex) + return self.frame_regex + return re.compile( + r"\.(?P(?P0*)\d+)\.\D+\d?$") # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index fd6e17f30d..3997451f44 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -3,7 +3,7 @@ from __future__ import annotations import re from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Generic, Optional, TypeVar import pydantic.alias_generators from pydantic import ( @@ -17,6 +17,9 @@ if TYPE_CHECKING: from .representation import Representation +T = TypeVar("T", bound="TraitBase") + + class TraitBase(ABC, BaseModel): """Base trait model. @@ -55,7 +58,7 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... - def validate(self, representation: Representation) -> None: + def validate_trait(self, representation: Representation) -> None: """Validate the trait. This method should be implemented in the derived classes to validate @@ -96,10 +99,6 @@ class TraitBase(ABC, BaseModel): return re.sub(r"\.v\d+$", "", str(cls.id)) - - - - class IncompatibleTraitVersionError(Exception): """Incompatible trait version exception. @@ -108,7 +107,7 @@ class IncompatibleTraitVersionError(Exception): """ -class UpgradableTraitError(Exception): +class UpgradableTraitError(Generic[T], Exception): """Upgradable trait version exception. This exception is raised when the trait can upgrade existing data @@ -116,17 +115,17 @@ class UpgradableTraitError(Exception): method that will take old trait data as argument to handle the upgrade. """ - trait: TraitBase + trait: T old_data: dict -class LooseMatchingTraitError(Exception): +class LooseMatchingTraitError(Generic[T], Exception): """Loose matching trait exception. This exception is raised when the trait is found with a loose matching criteria. """ - found_trait: TraitBase + found_trait: T expected_id: str class TraitValidationError(Exception): diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index a05748b710..9095061bf2 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -136,11 +136,11 @@ class UDIM(TraitBase): id: ClassVar[str] = "ayon.2d.UDIM.v1" udim: list[int] = Field(..., title="UDIM") udim_regex: Optional[str] = Field( - r"(?:\.|_)(?P\d+)\.\D+\d?$", title="UDIM Regex") + default=r"(?:\.|_)(?P\d+)\.\D+\d?$", title="UDIM Regex") @field_validator("udim_regex") @classmethod - def validate_frame_regex(cls, v: Optional[str]) -> str: + def validate_frame_regex(cls, v: Optional[str]) -> Optional[str]: """Validate udim regex.""" if v is not None and "?P" not in v: msg = "UDIM regex must include 'udim' named group" diff --git a/poetry.lock b/poetry.lock index 3a188dcb4b..f07d50bd82 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "annotated-types" @@ -24,32 +24,32 @@ files = [ [[package]] name = "attrs" -version = "24.2.0" +version = "24.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "ayon-python-api" -version = "1.0.9" +version = "1.0.11" description = "AYON Python API" optional = false python-versions = "*" files = [ - {file = "ayon-python-api-1.0.9.tar.gz", hash = "sha256:d1a3d467bdcb5a27120fed59d8996e97b6ef4d56a570b5957df922fc5ef58074"}, - {file = "ayon_python_api-1.0.9-py3-none-any.whl", hash = "sha256:0e4d623befe24bfb4c0c58746f49cbfe182d48ab13cd743177d1af3702e0de43"}, + {file = "ayon-python-api-1.0.11.tar.gz", hash = "sha256:3497237c379979268c321304c7d19cb2844d699f6ac34c21293f5dac29c13531"}, + {file = "ayon_python_api-1.0.11-py3-none-any.whl", hash = "sha256:f6134c29c8c8a36cdb2882f9404dd43817bd6636d663b3cd2344de9f1fc1e4b2"}, ] [package.dependencies] @@ -59,13 +59,13 @@ Unidecode = ">=1.3.0" [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] @@ -280,13 +280,13 @@ typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "identify" -version = "2.6.1" +version = "2.6.3" description = "File identification library for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, + {file = "identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd"}, + {file = "identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02"}, ] [package.extras] @@ -317,6 +317,70 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "mypy" +version = "1.14.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e971c1c667007f9f2b397ffa80fa8e1e0adccff336e5e77e74cb5f22868bee87"}, + {file = "mypy-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e86aaeaa3221a278c66d3d673b297232947d873773d61ca3ee0e28b2ff027179"}, + {file = "mypy-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1628c5c3ce823d296e41e2984ff88c5861499041cb416a8809615d0c1f41740e"}, + {file = "mypy-1.14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fadb29b77fc14a0dd81304ed73c828c3e5cde0016c7e668a86a3e0dfc9f3af3"}, + {file = "mypy-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:3fa76988dc760da377c1e5069200a50d9eaaccf34f4ea18428a3337034ab5a44"}, + {file = "mypy-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6e73c8a154eed31db3445fe28f63ad2d97b674b911c00191416cf7f6459fd49a"}, + {file = "mypy-1.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:273e70fcb2e38c5405a188425aa60b984ffdcef65d6c746ea5813024b68c73dc"}, + {file = "mypy-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1daca283d732943731a6a9f20fdbcaa927f160bc51602b1d4ef880a6fb252015"}, + {file = "mypy-1.14.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7e68047bedb04c1c25bba9901ea46ff60d5eaac2d71b1f2161f33107e2b368eb"}, + {file = "mypy-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:7a52f26b9c9b1664a60d87675f3bae00b5c7f2806e0c2800545a32c325920bcc"}, + {file = "mypy-1.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d5326ab70a6db8e856d59ad4cb72741124950cbbf32e7b70e30166ba7bbf61dd"}, + {file = "mypy-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bf4ec4980bec1e0e24e5075f449d014011527ae0055884c7e3abc6a99cd2c7f1"}, + {file = "mypy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:390dfb898239c25289495500f12fa73aa7f24a4c6d90ccdc165762462b998d63"}, + {file = "mypy-1.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7e026d55ddcd76e29e87865c08cbe2d0104e2b3153a523c529de584759379d3d"}, + {file = "mypy-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:585ed36031d0b3ee362e5107ef449a8b5dfd4e9c90ccbe36414ee405ee6b32ba"}, + {file = "mypy-1.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9f6f4c0b27401d14c483c622bc5105eff3911634d576bbdf6695b9a7c1ba741"}, + {file = "mypy-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b2280cedcb312c7a79f5001ae5325582d0d339bce684e4a529069d0e7ca1e7"}, + {file = "mypy-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:342de51c48bab326bfc77ce056ba08c076d82ce4f5a86621f972ed39970f94d8"}, + {file = "mypy-1.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:00df23b42e533e02a6f0055e54de9a6ed491cd8b7ea738647364fd3a39ea7efc"}, + {file = "mypy-1.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:e8c8387e5d9dff80e7daf961df357c80e694e942d9755f3ad77d69b0957b8e3f"}, + {file = "mypy-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b16738b1d80ec4334654e89e798eb705ac0c36c8a5c4798496cd3623aa02286"}, + {file = "mypy-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10065fcebb7c66df04b05fc799a854b1ae24d9963c8bb27e9064a9bdb43aa8ad"}, + {file = "mypy-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fbb7d683fa6bdecaa106e8368aa973ecc0ddb79a9eaeb4b821591ecd07e9e03c"}, + {file = "mypy-1.14.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3498cb55448dc5533e438cd13d6ddd28654559c8c4d1fd4b5ca57a31b81bac01"}, + {file = "mypy-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:c7b243408ea43755f3a21a0a08e5c5ae30eddb4c58a80f415ca6b118816e60aa"}, + {file = "mypy-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14117b9da3305b39860d0aa34b8f1ff74d209a368829a584eb77524389a9c13e"}, + {file = "mypy-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af98c5a958f9c37404bd4eef2f920b94874507e146ed6ee559f185b8809c44cc"}, + {file = "mypy-1.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b343a1d3989547024377c2ba0dca9c74a2428ad6ed24283c213af8dbb0710b"}, + {file = "mypy-1.14.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cdb5563c1726c85fb201be383168f8c866032db95e1095600806625b3a648cb7"}, + {file = "mypy-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:74e925649c1ee0a79aa7448baf2668d81cc287dc5782cff6a04ee93f40fb8d3f"}, + {file = "mypy-1.14.0-py3-none-any.whl", hash = "sha256:2238d7f93fc4027ed1efc944507683df3ba406445a2b6c96e79666a045aadfab"}, + {file = "mypy-1.14.0.tar.gz", hash = "sha256:822dbd184d4a9804df5a7d5335a68cf7662930e70b8c1bc976645d1509f9a9d6"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + [[package]] name = "nodeenv" version = "1.9.1" @@ -330,13 +394,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -401,19 +465,19 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"}, + {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -421,100 +485,111 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] @@ -522,13 +597,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] @@ -681,13 +756,43 @@ files = [ [[package]] name = "tomli" -version = "2.0.2" +version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -731,13 +836,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.26.6" +version = "20.28.0" description = "Virtual Python Environment builder" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, - {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, + {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, + {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, ] [package.dependencies] @@ -752,4 +857,4 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [metadata] lock-version = "2.0" python-versions = ">=3.9.1,<3.10" -content-hash = "cf5603d09b7f2409e56e0ceb13386813204a92cfbabbd23bcd8a2fad0db3aed4" +content-hash = "5fb5a45697502e537b9f6cf618d744a4cece4803ef65f6315186e83d1cd90f3a" diff --git a/pyproject.toml b/pyproject.toml index ed7fa6cc55..de9a56a38b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ ruff = "^0.3.3" pre-commit = "^4" codespell = "^2.2.6" semver = "^3.0.2" +mypy = "^1.14.0" [tool.ruff] @@ -133,6 +134,9 @@ skip = "./.*,./package/*,*/vendor/*,*/unreal/integration/*,*/aftereffects/api/ex count = true quiet-level = 3 +[tool.mypy] +mypy_path = "$MYPY_CONFIG_FILE_DIR/client" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index d6f379a9c7..78b905bab4 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -58,7 +58,8 @@ def test_bundles() -> None: for item in representation.get_trait(trait=Bundle).items: sub_representation = Representation(name="test", traits=item) assert sub_representation.contains_trait(trait=Image) - assert sub_representation.get_trait(trait=MimeType).mime_type in [ + sub: MimeType = sub_representation.get_trait(trait=MimeType) + assert sub.mime_type in [ "image/jpeg", "image/tiff" ] @@ -83,7 +84,7 @@ def test_file_locations_validation() -> None: file_paths=file_locations_list) # this should be valid trait - file_locations_trait.validate(representation) + file_locations_trait.validate_trait(representation) # add valid FrameRanged trait frameranged_trait = FrameRanged( @@ -94,7 +95,7 @@ def test_file_locations_validation() -> None: representation.add_trait(frameranged_trait) # it should still validate fine - file_locations_trait.validate(representation) + file_locations_trait.validate_trait(representation) # create empty file locations trait empty_file_locations_trait = FileLocations(file_paths=[]) @@ -102,7 +103,7 @@ def test_file_locations_validation() -> None: empty_file_locations_trait ]) with pytest.raises(TraitValidationError): - empty_file_locations_trait.validate(representation) + empty_file_locations_trait.validate_trait(representation) # create valid file locations trait but with not matching # frame range trait @@ -118,7 +119,7 @@ def test_file_locations_validation() -> None: representation.add_trait(invalid_sequence_trait) with pytest.raises(TraitValidationError): - file_locations_trait.validate(representation) + file_locations_trait.validate_trait(representation) # invalid representation with mutliple file locations but # unrelated to either Sequence or Bundle traits @@ -164,7 +165,7 @@ def test_get_file_location_from_frame() -> None: # test with custom regex sequence = Sequence( frame_padding=4, - frame_regex=r"boo_(?P\d+)\.exr") + frame_regex=r"boo_(?P(?P0*)\d+)\.exr") file_locations_list = [ FileLocation( file_path=Path(f"/path/to/boo_{frame}.exr"), @@ -174,7 +175,7 @@ def test_get_file_location_from_frame() -> None: for frame in range(1001, 1051) ] - file_locations_trait: FileLocations = FileLocations( + file_locations_trait = FileLocations( file_paths=file_locations_list) assert file_locations_trait.get_file_location_for_frame( diff --git a/tests/client/ayon_core/pipeline/traits/test_time_traits.py b/tests/client/ayon_core/pipeline/traits/test_time_traits.py index 900c4e5842..c716266fd7 100644 --- a/tests/client/ayon_core/pipeline/traits/test_time_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_time_traits.py @@ -15,6 +15,7 @@ from ayon_core.pipeline.traits import ( from ayon_core.pipeline.traits.trait import TraitValidationError + def test_sequence_validations() -> None: """Test Sequence trait validation.""" file_locations_list = [ @@ -54,7 +55,7 @@ def test_sequence_validations() -> None: frame_spec="1001-1010,1015-1020,1100") ]) - representation.get_trait(Sequence).validate(representation) + representation.get_trait(Sequence).validate_trait(representation) # here we set handles and set them as inclusive, so this should pass representation = Representation(name="test_2", traits=[ From a4dbb31e152d82348a35ea38093b7101e019c61b Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Sun, 22 Dec 2024 01:14:09 +0100 Subject: [PATCH 086/626] :bug: fix mypy errors --- tests/client/ayon_core/pipeline/traits/test_traits.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index a1e5a4d219..42933056fa 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -16,7 +16,7 @@ from ayon_core.pipeline.traits import ( TraitBase, ) -REPRESENTATION_DATA = { +REPRESENTATION_DATA: dict = { FileLocation.id: { "file_path": Path("/path/to/file"), "file_size": 1024, @@ -127,7 +127,8 @@ def test_representation_traits(representation: Representation) -> None: repre_dict assert representation.has_traits() is True - empty_representation = Representation(name="test", traits=[]) + empty_representation: Representation = Representation( + name="test", traits=[]) assert empty_representation.has_traits() is False assert representation.contains_trait(trait=FileLocation) is True From fecce683f1a47e7434a2921d60f17a2d5dea4bbc Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 15 Jan 2025 10:55:55 +0100 Subject: [PATCH 087/626] Some code cleanup for `CleanUp` plugin - Use `PublishError` instead of assertion - Optimize the 'check for errors' - Optimize the product type check + log debug message when skipped due to that - Move imports to top --- client/ayon_core/plugins/publish/cleanup.py | 33 +++++++++++---------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/plugins/publish/cleanup.py b/client/ayon_core/plugins/publish/cleanup.py index 57ef803352..109dc55c1d 100644 --- a/client/ayon_core/plugins/publish/cleanup.py +++ b/client/ayon_core/plugins/publish/cleanup.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- """Cleanup leftover files from publish.""" import os -import shutil -import pyblish.api import re +import shutil +import tempfile + +import pyblish.api from ayon_core.lib import is_in_tests +from ayon_core.pipeline import PublishError class CleanUp(pyblish.api.InstancePlugin): @@ -48,17 +51,15 @@ class CleanUp(pyblish.api.InstancePlugin): if is_in_tests(): # let automatic test process clean up temporary data return - # Get the errored instances - failed = [] + + # If instance has errors, do not clean up for result in instance.context.data["results"]: - if (result["error"] is not None and result["instance"] is not None - and result["instance"] not in failed): - failed.append(result["instance"]) - assert instance not in failed, ( - "Result of '{}' instance were not success".format( - instance.data["name"] - ) - ) + if result["error"] is not None and result["instance"] is instance: + raise PublishError( + "Result of '{}' instance were not success".format( + instance.data["name"] + ) + ) _skip_cleanup_filepaths = instance.context.data.get( "skipCleanupFilepaths" @@ -71,10 +72,12 @@ class CleanUp(pyblish.api.InstancePlugin): self.log.debug("Cleaning renders new...") self.clean_renders(instance, skip_cleanup_filepaths) - if [ef for ef in self.exclude_families - if instance.data["productType"] in ef]: + product_type = instance.data["productType"] + if product_type in self.exclude_families: + self.log.debug( + "Skipping cleanup for instance because product " + f"type is excluded from cleanup: {product_type}") return - import tempfile temp_root = tempfile.gettempdir() staging_dir = instance.data.get("stagingDir", None) From e44901e53e4219961ef082df7c1dfa6986e84b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 22 Jan 2025 11:00:06 +0100 Subject: [PATCH 088/626] :sparkles: add SourceApplication trait --- client/ayon_core/pipeline/traits/README.md | 1 + client/ayon_core/pipeline/traits/meta.py | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index f9d7be5de1..447fb427c6 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -165,6 +165,7 @@ to different packages based on their use: | | Variant | Used to differentiate between data variants of the same output (mp4 as h.264 and h.265 for example) | | KeepOriginalLocation | Marks the representation to keep the original location of the file | | KeepOriginalName | Marks the representation to keep the original name of the file +| | SourceApplication | Holds information about producing application, about it's version, variant and platform. | three dimensional | Spatial | Spatial information like up-axis, units and handedness. | | Geometry | Type trait to mark the representation as a geometry. | | Shader | Type trait to mark the representation as a Shader. diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 5cf5f54c36..2dc8ea5a27 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -78,7 +78,7 @@ class Variant(TraitBase): class KeepOriginalLocation(TraitBase): """Keep files in its original location. - + Note: This is not a persistent trait. @@ -86,11 +86,11 @@ class KeepOriginalLocation(TraitBase): name: ClassVar[str] = "KeepOriginalLocation" description: ClassVar[str] = "Keep Original Location Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalLocation.v1" - persistent: bool = Field(False, title="Persistent") + persistent: bool = Field(default=False, title="Persistent") class KeepOriginalName(TraitBase): """Keep files in its original name. - + Note: This is not a persistent trait. @@ -98,4 +98,16 @@ class KeepOriginalName(TraitBase): name: ClassVar[str] = "KeepOriginalName" description: ClassVar[str] = "Keep Original Name Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalName.v1" - persistent: bool = Field(False, title="Persistent") + persistent: bool = Field(default=False, title="Persistent") + + +class SourceApplication(TraitBase): + """Metadata about the source (producing) application.""" + + name: ClassVar[str] = "SourceApplication" + description: ClassVar[str] = "Source Application Trait Model" + id: ClassVar[str] = "ayon.meta.SourceApplication.v1" + application: str = Field(..., title="Application Name") + variant: str = Field(..., title="Application Variant (e.g. Pro)") + version: str = Field(..., title="Application Version") + platform: str = Field(..., title="Platform Name") From 6763c37fb68c6c9bb7a3c01715b9c8e341f5e25e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 14:16:21 +0100 Subject: [PATCH 089/626] :recycle: fix some style issues --- client/ayon_core/pipeline/traits/content.py | 8 ++- .../pipeline/traits/representation.py | 55 +++++++++++-------- .../pipeline/traits/three_dimensional.py | 3 + client/ayon_core/pipeline/traits/time.py | 10 ++-- 4 files changed, 45 insertions(+), 31 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index b89537a35a..42893fc86e 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -5,7 +5,7 @@ import contextlib import re # TC003 is there because Path in TYPECHECKING will fail in tests -from pathlib import Path # noqa: TC003 +from pathlib import Path # noqa: TCH003 from typing import ClassVar, Generator, Optional from pydantic import Field @@ -43,6 +43,7 @@ class MimeType(TraitBase): id: ClassVar[str] = "ayon.content.MimeType.v1" mime_type: str = Field(..., title="Mime Type") + class LocatableContent(TraitBase): """LocatableContent trait model. @@ -66,6 +67,7 @@ class LocatableContent(TraitBase): location: str = Field(..., title="Location") is_templated: Optional[bool] = Field(default=None, title="Is Templated") + class FileLocation(TraitBase): """FileLocation trait model. @@ -89,6 +91,7 @@ class FileLocation(TraitBase): file_size: Optional[int] = Field(default=None, title="File Size") file_hash: Optional[str] = Field(default=None, title="File Hash") + class FileLocations(TraitBase): """FileLocation trait model. @@ -114,7 +117,7 @@ class FileLocations(TraitBase): This method will return all file paths from the trait. - Yeilds: + Yields: Path: List of file paths. """ @@ -432,7 +435,6 @@ class Bundle(TraitBase): """Convert bundle to representations.""" for idx, item in enumerate(self.items): yield Representation(name=f"{self.name} {idx}", traits=item) - class Fragment(TraitBase): diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index 498690dafd..f47a9a9607 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -8,18 +8,25 @@ import sys import uuid from functools import lru_cache from types import GenericAlias -from typing import ClassVar, Generic, ItemsView, Optional, Type, TypeVar, Union +from typing import ( + ClassVar, + Generic, + ItemsView, + Optional, + Type, + TypeVar, + Union, +) from .trait import ( IncompatibleTraitVersionError, LooseMatchingTraitError, MissingTraitError, TraitBase, - UpgradableTraitError, TraitValidationError, + UpgradableTraitError, ) - T = TypeVar("T", bound="TraitBase") @@ -333,14 +340,14 @@ class Representation(Generic[T]): ), None, ) - if not result: + if result is None: msg = f"Trait with ID {trait_id} not found." raise MissingTraitError(msg) return result def get_traits(self, traits: Optional[list[Type[T]]]=None - ) -> dict[str, T]: + ) -> dict[str, T]: """Get a list of traits from the representation. If no trait IDs or traits are provided, all traits will be returned. @@ -407,6 +414,7 @@ class Representation(Generic[T]): name (str): Representation name. Must be unique within instance. representation_id (str, optional): Representation ID. traits (list[TraitBase], optional): List of traits. + """ self.name = name self.representation_id = representation_id or uuid.uuid4().hex @@ -607,24 +615,23 @@ class Representation(Generic[T]): ) raise IncompatibleTraitVersionError(msg) from e - else: - if requested_version > found_version: - error_msg = ( - f"Requested trait version {requested_version} is " - f"higher than the found trait version {found_version}." - ) - raise IncompatibleTraitVersionError(error_msg) from e + if requested_version > found_version: + error_msg = ( + f"Requested trait version {requested_version} is " + f"higher than the found trait version {found_version}." + ) + raise IncompatibleTraitVersionError(error_msg) from e - if requested_version < found_version and hasattr( - e.found_trait, "upgrade"): - error_msg = ( - "Requested trait version " - f"{requested_version} is lower " - f"than the found trait version {found_version}." - ) - error: UpgradableTraitError = UpgradableTraitError(error_msg) - error.trait = e.found_trait - raise error from e + if requested_version < found_version and hasattr( + e.found_trait, "upgrade"): + error_msg = ( + "Requested trait version " + f"{requested_version} is lower " + f"than the found trait version {found_version}." + ) + error: UpgradableTraitError = UpgradableTraitError(error_msg) + error.trait = e.found_trait + raise error from e return trait_class @classmethod @@ -706,5 +713,5 @@ class Representation(Generic[T]): except TraitValidationError as e: errors.append(str(e)) if errors: - raise TraitValidationError( - f"representation {self.name}", "\n".join(errors)) + msg = f"representation {self.name}", "\n".join(errors) + raise TraitValidationError(msg) diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py index eb27797ed2..e9eb0246c1 100644 --- a/client/ayon_core/pipeline/traits/three_dimensional.py +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -46,6 +46,7 @@ class Geometry(TraitBase): name: ClassVar[str] = "Geometry" description: ClassVar[str] = "Geometry trait model." + class Shader(TraitBase): """Shader trait model. @@ -58,6 +59,7 @@ class Shader(TraitBase): name: ClassVar[str] = "Shader" description: ClassVar[str] = "Shader trait model." + class Lighting(TraitBase): """Lighting trait model. @@ -70,6 +72,7 @@ class Lighting(TraitBase): name: ClassVar[str] = "Lighting" description: ClassVar[str] = "Lighting trait model." + class IESProfile(TraitBase): """IES profile (IES-LM-64) type trait model. diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/time.py index 46771b78fd..7f16013927 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/time.py @@ -2,13 +2,13 @@ from __future__ import annotations import contextlib +import re from enum import Enum, auto +from re import Pattern from typing import TYPE_CHECKING, ClassVar, Optional, Union import clique from pydantic import Field, field_validator -import re -from re import Pattern from .trait import MissingTraitError, TraitBase, TraitValidationError @@ -16,6 +16,7 @@ if TYPE_CHECKING: from pathlib import Path + from .content import FileLocations from .representation import Representation @@ -391,10 +392,10 @@ class Sequence(TraitBase): """ src_collection = Sequence._get_collection(file_locations, regex) return list(src_collection.indexes) - + def get_frame_pattern(self) -> Pattern: """Get frame regex as pattern. - + If the regex is string, it will compile it to the pattern. """ @@ -405,6 +406,7 @@ class Sequence(TraitBase): return re.compile( r"\.(?P(?P0*)\d+)\.\D+\d?$") + # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): """SMPTE Timecode trait model.""" From 920f917f943a50fca8c8b9a02d4b2e479d6d19ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 22:22:05 +0100 Subject: [PATCH 090/626] :recycle: rename time to temporal to avoid conflict with std and some linter changes --- client/ayon_core/addon/__init__.py | 27 +++++++++---------- client/ayon_core/addon/interfaces.py | 23 +++++++++------- client/ayon_core/pipeline/traits/__init__.py | 2 +- client/ayon_core/pipeline/traits/content.py | 2 +- .../pipeline/traits/representation.py | 17 +++++++----- .../pipeline/traits/{time.py => temporal.py} | 7 +++-- client/ayon_core/pipeline/traits/utils.py | 2 +- pyproject.toml | 4 +-- 8 files changed, 44 insertions(+), 40 deletions(-) rename client/ayon_core/pipeline/traits/{time.py => temporal.py} (99%) diff --git a/client/ayon_core/addon/__init__.py b/client/ayon_core/addon/__init__.py index fd25dcb9d9..f78cea0b54 100644 --- a/client/ayon_core/addon/__init__.py +++ b/client/ayon_core/addon/__init__.py @@ -1,28 +1,25 @@ -# -*- coding: utf-8 -*- +"""Addons for AYON.""" from . import click_wrap -from .interfaces import ( - IPluginPaths, - ITrayAddon, - ITrayAction, - ITrayService, - IHostAddon, - ITraits, -) - from .base import ( - ProcessPreparationError, - ProcessContext, - AYONAddon, AddonsManager, + AYONAddon, + ProcessContext, + ProcessPreparationError, load_addons, ) - +from .interfaces import ( + IHostAddon, + IPluginPaths, + ITraits, + ITrayAction, + ITrayAddon, + ITrayService, +) from .utils import ( ensure_addons_are_process_context_ready, ensure_addons_are_process_ready, ) - __all__ = ( "click_wrap", diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index ccfd42d246..1070828d5c 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -1,3 +1,4 @@ +"""Addon interfaces for AYON.""" from __future__ import annotations import logging @@ -17,11 +18,11 @@ if TYPE_CHECKING: class _AYONInterfaceMeta(ABCMeta): """AYONInterface metaclass to print proper string.""" - def __str__(self): - return f"<'AYONInterface.{self.__name__}'>" + def __str__(cls): + return f"<'AYONInterface.{cls.__name__}'>" - def __repr__(self): - return str(self) + def __repr__(cls): + return str(cls) class AYONInterface(metaclass=_AYONInterfaceMeta): @@ -84,7 +85,7 @@ class IPluginPaths(AYONInterface): paths = [paths] return paths - def get_launcher_action_paths(self): + def get_launcher_action_paths(self) -> list[str]: """Receive launcher actions paths. Give addons ability to add launcher actions paths. @@ -208,7 +209,8 @@ class ITrayAddon(AYONInterface): """ if not self.tray_initialized: - # TODO: Called without initialized tray, still main thread needed + # TODO (Illicit): Called without initialized tray, still + # main thread needed. try: callback() @@ -245,7 +247,8 @@ class ITrayAddon(AYONInterface): self.manager.add_doubleclick_callback(self, callback) @staticmethod - def admin_submenu(tray_menu): + def admin_submenu(tray_menu: QtWidgets.QMenu) -> QtWidgets.QMenu: + """Get or create admin submenu.""" if ITrayAddon._admin_submenu is None: from qtpy import QtWidgets @@ -255,7 +258,9 @@ class ITrayAddon(AYONInterface): return ITrayAddon._admin_submenu @staticmethod - def add_action_to_admin_submenu(label, tray_menu): + def add_action_to_admin_submenu( + label: str, tray_menu: QtWidgets.QMenu) -> QtWidgets.QAction: + """Add action to admin submenu.""" from qtpy import QtWidgets menu = ITrayAddon.admin_submenu(tray_menu) @@ -330,7 +335,7 @@ class ITrayService(ITrayAddon): """Service label showed in menu.""" raise NotImplementedError - # TODO be able to get any sort of information to show/print + # TODO (Illicit): be able to get any sort of information to show/print # @abstractmethod # def get_service_info(self): # pass diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index e3ca610df1..6603990b53 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -15,7 +15,7 @@ from .lifecycle import Persistent, Transient from .meta import Tagged, TemplatePath, Variant from .representation import Representation from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial -from .time import ( +from .temporal import ( FrameRanged, GapPolicy, Handles, diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 42893fc86e..16c3b47920 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -11,7 +11,7 @@ from typing import ClassVar, Generator, Optional from pydantic import Field from .representation import Representation -from .time import FrameRanged, Handles, Sequence +from .temporal import FrameRanged, Handles, Sequence from .trait import ( MissingTraitError, TraitBase, diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index f47a9a9607..8015d75d74 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -501,7 +501,7 @@ class Representation(Generic[T]): klass = getattr(module, attr_name) if not inspect.isclass(klass): continue - # this needs to be done because of the bug? in + # this needs to be done because of the bug? in # python ABCMeta, where ``issubclass`` is not working # if it hits the GenericAlias (that is in fact # tuple[int, int]). This is added to the scope by @@ -511,7 +511,8 @@ class Representation(Generic[T]): if issubclass(klass, TraitBase) \ and str(klass.id).startswith(trait_id): trait_candidates.add(klass) - return trait_candidates # type: ignore + # I + return trait_candidates # type: ignore[return-value] @classmethod @lru_cache(maxsize=64) @@ -632,11 +633,11 @@ class Representation(Generic[T]): error: UpgradableTraitError = UpgradableTraitError(error_msg) error.trait = e.found_trait raise error from e - return trait_class + return trait_class # type: ignore[return-value] @classmethod def from_dict( - cls, + cls: Type[Representation], name: str, representation_id: Optional[str]=None, trait_data: Optional[dict] = None) -> Representation: @@ -708,10 +709,12 @@ class Representation(Generic[T]): """ errors = [] for trait in self._data.values(): + # we do this in the loop to catch all the errors try: trait.validate_trait(self) - except TraitValidationError as e: + except TraitValidationError as e: # noqa: PERF203 errors.append(str(e)) if errors: - msg = f"representation {self.name}", "\n".join(errors) - raise TraitValidationError(msg) + msg = "\n".join(errors) + scope = self.name + raise TraitValidationError(scope, msg) diff --git a/client/ayon_core/pipeline/traits/time.py b/client/ayon_core/pipeline/traits/temporal.py similarity index 99% rename from client/ayon_core/pipeline/traits/time.py rename to client/ayon_core/pipeline/traits/temporal.py index 7f16013927..7c45eef9b9 100644 --- a/client/ayon_core/pipeline/traits/time.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -13,7 +13,6 @@ from pydantic import Field, field_validator from .trait import MissingTraitError, TraitBase, TraitValidationError if TYPE_CHECKING: - from pathlib import Path @@ -205,9 +204,9 @@ class Sequence(TraitBase): handles_frame_end) self.validate_frame_padding(file_locs) - - def validate_frame_list( + + def validate_frame_list( # noqa: C901 self, file_locations: FileLocations, frame_start: Optional[int] = None, @@ -246,7 +245,7 @@ class Sequence(TraitBase): frame_regex = re.compile(self.frame_regex) elif isinstance(self.frame_regex, Pattern): frame_regex = self.frame_regex - + frames = self.get_frame_list( file_locations, frame_regex) else: diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index 54386fe8ca..2aa6173464 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING from clique import assemble -from ayon_core.pipeline.traits.time import FrameRanged +from ayon_core.pipeline.traits.temporal import FrameRanged if TYPE_CHECKING: from pathlib import Path diff --git a/pyproject.toml b/pyproject.toml index 6e01a3efd7..975e141842 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,8 +79,6 @@ pydocstyle.convention = "google" select = ["ALL"] ignore = [ "PTH", - "ANN101", - "ANN102", "ANN204", "COM812", "S603", @@ -91,6 +89,8 @@ ignore = [ "UP035", # .. "ARG002", "INP001", # add `__init__.py` to namespaced package + "FIX002", # FIX all TODOs + "TD003", # missing issue link ] # Allow fix for all enabled rules (when `--fix`) is provided. From 423277580c81e895bc4fdd927f80387ce013718d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 23:02:04 +0100 Subject: [PATCH 091/626] :sparkles: add IntendedUse trait --- client/ayon_core/pipeline/traits/meta.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 2dc8ea5a27..00b5013f72 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -93,8 +93,8 @@ class KeepOriginalName(TraitBase): Note: This is not a persistent trait. - """ + name: ClassVar[str] = "KeepOriginalName" description: ClassVar[str] = "Keep Original Name Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalName.v1" @@ -111,3 +111,18 @@ class SourceApplication(TraitBase): variant: str = Field(..., title="Application Variant (e.g. Pro)") version: str = Field(..., title="Application Version") platform: str = Field(..., title="Platform Name") + + +class IntendedUse(TraitBase): + """Intended use of the representation. + + This trait describes the intended use of the representation. It + can be used in cases, where the other traits are not enough to + describe the intended use. For example txt file with tracking + points can be used as corner pin in After Effect but not in Nuke. + """ + + name: ClassVar[str] = "IntendedUse" + description: ClassVar[str] = "Intended Use Trait Model" + id: ClassVar[str] = "ayon.meta.IntendedUse.v1" + use: str = Field(..., title="Intended Use") From 5eead5f66ac991514c42fb5dfa56ed108dcec9f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 23:02:50 +0100 Subject: [PATCH 092/626] :package: update ruff to get rid of that annoying ANN101 and ANN102 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 975e141842..8d4a501651 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ pytest = "^8.0" pytest-print = "^1.0" ayon-python-api = "^1.0" # linting dependencies -ruff = "^0.3.3" +ruff = "^0.9.3" pre-commit = "^4" codespell = "^2.2.6" semver = "^3.0.2" From fef36a7cd9964f592777838336fa3fdc5d38a680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 23:03:20 +0100 Subject: [PATCH 093/626] :recycle: unify docstring style and signatures --- client/ayon_core/pipeline/traits/color.py | 1 + client/ayon_core/pipeline/traits/content.py | 10 ++-------- client/ayon_core/pipeline/traits/cryptography.py | 2 ++ client/ayon_core/pipeline/traits/representation.py | 14 +++++++------- client/ayon_core/pipeline/traits/temporal.py | 12 ++++++------ .../ayon_core/pipeline/traits/three_dimensional.py | 2 +- .../ayon_core/pipeline/traits/two_dimensional.py | 7 +------ 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/client/ayon_core/pipeline/traits/color.py b/client/ayon_core/pipeline/traits/color.py index 26802d51f8..b816593624 100644 --- a/client/ayon_core/pipeline/traits/color.py +++ b/client/ayon_core/pipeline/traits/color.py @@ -21,6 +21,7 @@ class ColorManaged(TraitBase): in the "current" OCIO context. config (str): An OCIO config name defining color space. """ + id: ClassVar[str] = "ayon.color.ColorManaged.v1" name: ClassVar[str] = "ColorManaged" description: ClassVar[str] = "Color Managed trait." diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 16c3b47920..75b1263ea7 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -5,7 +5,7 @@ import contextlib import re # TC003 is there because Path in TYPECHECKING will fail in tests -from pathlib import Path # noqa: TCH003 +from pathlib import Path # noqa: TC003 from typing import ClassVar, Generator, Optional from pydantic import Field @@ -35,7 +35,6 @@ class MimeType(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version mime_type (str): Mime type like image/jpeg. - """ name: ClassVar[str] = "MimeType" @@ -58,7 +57,6 @@ class LocatableContent(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version location (str): Location. - """ name: ClassVar[str] = "LocatableContent" @@ -82,8 +80,8 @@ class FileLocation(TraitBase): file_path (str): File path. file_size (int): File size in bytes. file_hash (str): File hash. - """ + name: ClassVar[str] = "FileLocation" description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" @@ -359,7 +357,6 @@ class RootlessLocation(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version rootless_path (str): Rootless path. - """ name: ClassVar[str] = "RootlessLocation" @@ -383,7 +380,6 @@ class Compressed(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version compression_type (str): Compression type. - """ name: ClassVar[str] = "Compressed" @@ -422,7 +418,6 @@ class Bundle(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version items (list[list[TraitBase]]): List of representations. - """ name: ClassVar[str] = "Bundle" @@ -460,7 +455,6 @@ class Fragment(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version parent (str): Parent representation id. - """ name: ClassVar[str] = "Fragment" diff --git a/client/ayon_core/pipeline/traits/cryptography.py b/client/ayon_core/pipeline/traits/cryptography.py index 42abee779c..3719f3dbbf 100644 --- a/client/ayon_core/pipeline/traits/cryptography.py +++ b/client/ayon_core/pipeline/traits/cryptography.py @@ -16,6 +16,7 @@ class DigitallySigned(TraitBase): Attributes: signature (str): Digital signature. """ + id: ClassVar[str] = "ayon.cryptography.DigitallySigned.v1" name: ClassVar[str] = "DigitallySigned" description: ClassVar[str] = "Digitally signed trait." @@ -29,6 +30,7 @@ class PGPSigned(DigitallySigned): Attributes: signature (str): PGP signature. """ + id: ClassVar[str] = "ayon.cryptography.PGPSigned.v1" name: ClassVar[str] = "PGPSigned" description: ClassVar[str] = "PGP signed trait." diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index 8015d75d74..d185c0466c 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -57,8 +57,8 @@ class Representation(Generic[T]): Arguments: name (str): Representation name. Must be unique within instance. representation_id (str): Representation ID. - """ + _data: dict[str, T] _module_blacklist: ClassVar[list[str]] = [ "_", "builtins", "pydantic", @@ -134,7 +134,7 @@ class Representation(Generic[T]): """Return the traits as items.""" return ItemsView(self._data) - def add_trait(self, trait: T, *, exists_ok: bool=False) -> None: + def add_trait(self, trait: T, *, exists_ok: bool = False) -> None: """Add a trait to the Representation. Args: @@ -156,7 +156,7 @@ class Representation(Generic[T]): self._data[trait.id] = trait def add_traits( - self, traits: list[T], *, exists_ok: bool=False) -> None: + self, traits: list[T], *, exists_ok: bool = False) -> None: """Add a list of traits to the Representation. Args: @@ -346,7 +346,7 @@ class Representation(Generic[T]): return result def get_traits(self, - traits: Optional[list[Type[T]]]=None + traits: Optional[list[Type[T]]] = None ) -> dict[str, T]: """Get a list of traits from the representation. @@ -406,8 +406,8 @@ class Representation(Generic[T]): def __init__( self, name: str, - representation_id: Optional[str]=None, - traits: Optional[list[T]]=None): + representation_id: Optional[str] = None, + traits: Optional[list[T]] = None): """Initialize the data. Args: @@ -639,7 +639,7 @@ class Representation(Generic[T]): def from_dict( cls: Type[Representation], name: str, - representation_id: Optional[str]=None, + representation_id: Optional[str] = None, trait_data: Optional[dict] = None) -> Representation: """Create a representation from a dictionary. diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index 7c45eef9b9..f924a8d1e1 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -14,8 +14,6 @@ from .trait import MissingTraitError, TraitBase, TraitValidationError if TYPE_CHECKING: - from pathlib import Path - from .content import FileLocations from .representation import Representation @@ -132,13 +130,16 @@ class Sequence(TraitBase): gaps_policy: Optional[GapPolicy] = Field( default=GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") - frame_regex: Optional[Union[Pattern, str]] = Field(default=None, title="Frame Regex") - frame_spec: Optional[str] = Field(default=None, title="Frame Specification") + frame_regex: Optional[Union[Pattern, str]] = Field( + default=None, title="Frame Regex") + frame_spec: Optional[str] = Field(default=None, + title="Frame Specification") @field_validator("frame_regex") @classmethod def validate_frame_regex( - cls, v: Optional[Union[Pattern, str]]) -> Optional[Union[Pattern, str]]: + cls, v: Optional[Union[Pattern, str]] + ) -> Optional[Union[Pattern, str]]: """Validate frame regex.""" _v = v if v and isinstance(v, Pattern): @@ -419,7 +420,6 @@ class Static(TraitBase): """Static time trait. Used to define static time (single frame). - """ name: ClassVar[str] = "Static" description: ClassVar[str] = "Static Time Trait" diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py index e9eb0246c1..67f4415f73 100644 --- a/client/ayon_core/pipeline/traits/three_dimensional.py +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -24,8 +24,8 @@ class Spatial(TraitBase): up_axis (str): Up axis. handedness (str): Handedness. meters_per_unit (float): Meters per unit. - """ + id: ClassVar[str] = "ayon.3d.Spatial.v1" name: ClassVar[str] = "Spatial" description: ClassVar[str] = "Spatial trait model." diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 9095061bf2..62d6693336 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -11,6 +11,7 @@ from .trait import TraitBase if TYPE_CHECKING: from .content import FileLocation, FileLocations + class Image(TraitBase): """Image trait model. @@ -20,7 +21,6 @@ class Image(TraitBase): name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - """ name: ClassVar[str] = "Image" @@ -40,7 +40,6 @@ class PixelBased(TraitBase): display_window_width (int): Width of the image display window. display_window_height (int): Height of the image display window. pixel_aspect_ratio (float): Pixel aspect ratio. - """ name: ClassVar[str] = "PixelBased" @@ -66,7 +65,6 @@ class Planar(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version planar_configuration (str): Planar configuration. - """ name: ClassVar[str] = "Planar" @@ -84,7 +82,6 @@ class Deep(TraitBase): name (str): Trait name. description (str): Trait description. id (str): id should be namespaced trait name with version - """ name: ClassVar[str] = "Deep" @@ -106,7 +103,6 @@ class Overscan(TraitBase): right (int): Right overscan/underscan. top (int): Top overscan/underscan. bottom (int): Bottom overscan/underscan. - """ name: ClassVar[str] = "Overscan" @@ -128,7 +124,6 @@ class UDIM(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version udim (int): UDIM value. - """ name: ClassVar[str] = "UDIM" From ebf67890368873212fa9fb7255ad6e6be54186bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 23:17:32 +0100 Subject: [PATCH 094/626] :recycle: organize imports --- client/ayon_core/addon/__init__.py | 23 ++++---- client/ayon_core/pipeline/traits/__init__.py | 56 +++++++++++-------- .../pipeline/traits/test_time_traits.py | 1 - 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/client/ayon_core/addon/__init__.py b/client/ayon_core/addon/__init__.py index f78cea0b54..a8cf51ae25 100644 --- a/client/ayon_core/addon/__init__.py +++ b/client/ayon_core/addon/__init__.py @@ -21,21 +21,18 @@ from .utils import ( ) __all__ = ( - "click_wrap", - - "IPluginPaths", - "ITrayAddon", - "ITrayAction", - "ITrayService", - "IHostAddon", - "ITraits", - - "ProcessPreparationError", - "ProcessContext", "AYONAddon", "AddonsManager", - "load_addons", - + "IHostAddon", + "IPluginPaths", + "ITraits", + "ITrayAction", + "ITrayAddon", + "ITrayService", + "ProcessContext", + "ProcessPreparationError", + "click_wrap", "ensure_addons_are_process_context_ready", "ensure_addons_are_process_ready", + "load_addons", ) diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 6603990b53..645064d59f 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -12,9 +12,15 @@ from .content import ( ) from .cryptography import DigitallySigned, PGPSigned from .lifecycle import Persistent, Transient -from .meta import Tagged, TemplatePath, Variant +from .meta import ( + IntendedUse, + KeepOriginalLocation, + SourceApplication, + Tagged, + TemplatePath, + Variant, +) from .representation import Representation -from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial from .temporal import ( FrameRanged, GapPolicy, @@ -23,6 +29,7 @@ from .temporal import ( SMPTETimecode, Static, ) +from .three_dimensional import Geometry, IESProfile, Lighting, Shader, Spatial from .trait import ( MissingTraitError, TraitBase, @@ -40,25 +47,25 @@ from .utils import ( get_sequence_from_files, ) -__all__ = [ +__all__ = [ # noqa: RUF022 # base "Representation", "TraitBase", "MissingTraitError", "TraitValidationError", + # color + "ColorManaged", + # content "Bundle", "Compressed", "FileLocation", "FileLocations", - "MimeType", - "RootlessLocation", "Fragment", "LocatableContent", - - # color - "ColorManaged", + "MimeType", + "RootlessLocation", # cryptography "DigitallySigned", @@ -69,10 +76,28 @@ __all__ = [ "Transient", # meta + "IntendedUse", + "KeepOriginalLocation", + "SourceApplication", "Tagged", "TemplatePath", "Variant", + # temporal + "FrameRanged", + "GapPolicy", + "Handles", + "Sequence", + "SMPTETimecode", + "Static", + + # three-dimensional + "Geometry", + "IESProfile", + "Lighting", + "Shader", + "Spatial", + # two-dimensional "Compressed", "Deep", @@ -82,21 +107,6 @@ __all__ = [ "Planar", "UDIM", - # three-dimensional - "Geometry", - "IESProfile", - "Lighting", - "Shader", - "Spatial", - - # time - "FrameRanged", - "Static", - "Handles", - "GapPolicy", - "Sequence", - "SMPTETimecode", - # utils "get_sequence_from_files", ] diff --git a/tests/client/ayon_core/pipeline/traits/test_time_traits.py b/tests/client/ayon_core/pipeline/traits/test_time_traits.py index c716266fd7..100e4ed2b5 100644 --- a/tests/client/ayon_core/pipeline/traits/test_time_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_time_traits.py @@ -15,7 +15,6 @@ from ayon_core.pipeline.traits import ( from ayon_core.pipeline.traits.trait import TraitValidationError - def test_sequence_validations() -> None: """Test Sequence trait validation.""" file_locations_list = [ From ba67c436f943e19abd81f61eb9e56fd2d240c61e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 29 Jan 2025 23:25:43 +0100 Subject: [PATCH 095/626] :recycle: revert back some changes --- client/ayon_core/addon/interfaces.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index 1070828d5c..bf844e2d8b 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -1,7 +1,6 @@ """Addon interfaces for AYON.""" from __future__ import annotations -import logging from abc import ABCMeta, abstractmethod from typing import TYPE_CHECKING, Callable, Optional, Type @@ -10,7 +9,6 @@ from ayon_core import resources if TYPE_CHECKING: from qtpy import QtWidgets - from ayon_core.addon import AddonsManager from ayon_core.pipeline.traits import TraitBase from ayon_core.tools.tray import TrayManager @@ -38,10 +36,6 @@ class AYONInterface(metaclass=_AYONInterfaceMeta): log = None - def __init__(self): - """Initialize interface.""" - self.log = logging.getLogger(self.__class__.__name__) - class IPluginPaths(AYONInterface): """Addon has plugin paths to return. @@ -162,7 +156,6 @@ class ITrayAddon(AYONInterface): """ tray_initialized = False - manager: AddonsManager = None _tray_manager: TrayManager = None _admin_submenu = None @@ -431,7 +424,6 @@ class IHostAddon(AYONInterface): @abstractmethod def host_name(self) -> str: """Name of host which addon represents.""" - raise NotImplementedError def get_workfile_extensions(self) -> list[str]: """Define workfile extensions for host. From 0fbee7da5ca9d7ddeed6fc484312f2df65769aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 30 Jan 2025 10:31:42 +0100 Subject: [PATCH 096/626] :recycle: add `IntendedUse` to readme --- client/ayon_core/pipeline/traits/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 515c6d1272..aa38d30a8e 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -166,6 +166,7 @@ to different packages based on their use: | | KeepOriginalLocation | Marks the representation to keep the original location of the file | | KeepOriginalName | Marks the representation to keep the original name of the file | | SourceApplication | Holds information about producing application, about it's version, variant and platform. +| | IntendedUse | For specifying the intended use of the representation if it cannot be easily determined by other traits. | three dimensional | Spatial | Spatial information like up-axis, units and handedness. | | Geometry | Type trait to mark the representation as a geometry. | | Shader | Type trait to mark the representation as a Shader. @@ -318,4 +319,4 @@ class MyAddon(AYONAddon, ITraits): If you want to use MyPy linter, you need to make sure that optional fields typed as `Optional[Type]` needs to set default value using `default` or `default_factory` parameter. Otherwise MyPy will -complain about missing named arguments. \ No newline at end of file +complain about missing named arguments. From 95743f29a3e67baa6d39f1975fd001575c8abdfb Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 30 Jan 2025 14:35:23 +0100 Subject: [PATCH 097/626] Add ACES 1.3 Studio OCIO config option - Introduced new OCIO config for ACES 1.3 Studio. - Updated paths with relevant labels and descriptions. - Ensured compatibility with OCIO v2 requirements. --- server/settings/main.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/settings/main.py b/server/settings/main.py index 249bab85fd..c2f5c63f42 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -71,6 +71,12 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ + { + "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", + "label": "ACES 1.3 Studio (OCIO v2)", + "description": ( + "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") + }, { "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", "label": "ACES 1.2", From 8ff258983a54a7f665a12460e05eecfaf7a4426c Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 30 Jan 2025 15:01:11 +0100 Subject: [PATCH 098/626] Update OCIO config path for clarity Refined the OCIO built-in paths to improve readability. Added a comment to ignore line length warning for better code style adherence. --- server/settings/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/settings/main.py b/server/settings/main.py index c2f5c63f42..261bd7fc04 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -72,7 +72,7 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ { - "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", + "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 "label": "ACES 1.3 Studio (OCIO v2)", "description": ( "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") From 2c102722627fad9949c950b70b47ddc7abf0bbf0 Mon Sep 17 00:00:00 2001 From: ChunYou Date: Tue, 4 Feb 2025 02:45:36 +0000 Subject: [PATCH 099/626] Make concurrent copying of files and change hero integration to use speedcopy on windows --- client/ayon_core/lib/file_transaction.py | 66 ++++++++++--------- .../plugins/publish/integrate_hero_version.py | 20 ++++-- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index a502403958..7c330eb9b2 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -11,6 +11,7 @@ if sys.platform == "win32": else: from shutil import copyfile +import concurrent.futures class DuplicateDestinationError(ValueError): """Error raised when transfer destination already exists in queue. @@ -109,41 +110,46 @@ class FileTransaction: self._transfers[dst] = (src, opts) def process(self): - # Backup any existing files - for dst, (src, _) in self._transfers.items(): - self.log.debug("Checking file ... {} -> {}".format(src, dst)) - path_same = self._same_paths(src, dst) - if path_same or not os.path.exists(dst): - continue + with concurrent.futures.ThreadPoolExecutor() as executor: + backup_futures = [] + for dst, (src, _) in self._transfers.items(): + backup_futures.append(executor.submit(self.backup_file, dst, src)) + concurrent.futures.wait(backup_futures) - # Backup original file - # todo: add timestamp or uuid to ensure unique - backup = dst + ".bak" - self._backup_to_original[backup] = dst + transfer_futures = [] + for dst, (src, opts) in self._transfers.items(): + transfer_futures.append(executor.submit(self.transfer_file, dst, src, opts)) + concurrent.futures.wait(transfer_futures) + + def backup_file(self, dst, src): + self.log.debug("Checking file ... {} -> {}".format(src, dst)) + path_same = self._same_paths(src, dst) + if path_same or not os.path.exists(dst): + return + + # Backup original file + backup = dst + ".bak" + self._backup_to_original[backup] = dst + self.log.debug("Backup existing file: {} -> {}".format(dst, backup)) + os.rename(dst, backup) + + def transfer_file(self, dst, src, opts): + path_same = self._same_paths(src, dst) + if path_same: self.log.debug( - "Backup existing file: {} -> {}".format(dst, backup)) - os.rename(dst, backup) + "Source and destination are same files {} -> {}".format(src, dst)) + return - # Copy the files to transfer - for dst, (src, opts) in self._transfers.items(): - path_same = self._same_paths(src, dst) - if path_same: - self.log.debug( - "Source and destination are same files {} -> {}".format( - src, dst)) - continue + self._create_folder_for_file(dst) - self._create_folder_for_file(dst) + if opts["mode"] == self.MODE_COPY: + self.log.debug("Copying file ... {} -> {}".format(src, dst)) + copyfile(src, dst) + elif opts["mode"] == self.MODE_HARDLINK: + self.log.debug("Hardlinking file ... {} -> {}".format(src, dst)) + create_hard_link(src, dst) - if opts["mode"] == self.MODE_COPY: - self.log.debug("Copying file ... {} -> {}".format(src, dst)) - copyfile(src, dst) - elif opts["mode"] == self.MODE_HARDLINK: - self.log.debug("Hardlinking file ... {} -> {}".format( - src, dst)) - create_hard_link(src, dst) - - self._transferred.append(dst) + self._transferred.append(dst) def finalize(self): # Delete any backed up files diff --git a/client/ayon_core/plugins/publish/integrate_hero_version.py b/client/ayon_core/plugins/publish/integrate_hero_version.py index 2163596864..92becb6e01 100644 --- a/client/ayon_core/plugins/publish/integrate_hero_version.py +++ b/client/ayon_core/plugins/publish/integrate_hero_version.py @@ -2,6 +2,14 @@ import os import copy import errno import shutil +import sys +# this is needed until speedcopy for linux is fixed +if sys.platform == "win32": + from speedcopy import copyfile +else: + from shutil import copyfile + +import concurrent.futures import clique import pyblish.api @@ -415,11 +423,11 @@ class IntegrateHeroVersion( # Copy(hardlink) paths of source and destination files # TODO should we *only* create hardlinks? # TODO should we keep files for deletion until this is successful? - for src_path, dst_path in src_to_dst_file_paths: - self.copy_file(src_path, dst_path) - - for src_path, dst_path in other_file_paths_mapping: - self.copy_file(src_path, dst_path) + with concurrent.futures.ThreadPoolExecutor() as executor: + file_futures = [] + for src_path, dst_path in src_to_dst_file_paths + other_file_paths_mapping: + file_futures.append(executor.submit(self.copy_file, src_path, dst_path)) + concurrent.futures.wait(file_futures) # Update prepared representation etity data with files # and integrate it to server. @@ -648,7 +656,7 @@ class IntegrateHeroVersion( src_path, dst_path )) - shutil.copy(src_path, dst_path) + copyfile(src_path, dst_path) def version_from_representations(self, project_name, repres): for repre in repres: From 4a8c79285dce2d1e497aa30301ff430882255296 Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:23:23 +0000 Subject: [PATCH 100/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 7c330eb9b2..08fcd66984 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -130,7 +130,7 @@ class FileTransaction: # Backup original file backup = dst + ".bak" self._backup_to_original[backup] = dst - self.log.debug("Backup existing file: {} -> {}".format(dst, backup)) + self.log.debug(f"Backup existing file: {dst} -> {backup}") os.rename(dst, backup) def transfer_file(self, dst, src, opts): From 4bca62dcfe041665051b1342be0fc8c0a9bd0081 Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:23:30 +0000 Subject: [PATCH 101/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 08fcd66984..138861760f 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -143,7 +143,7 @@ class FileTransaction: self._create_folder_for_file(dst) if opts["mode"] == self.MODE_COPY: - self.log.debug("Copying file ... {} -> {}".format(src, dst)) + self.log.debug(f"Copying file ... {src} -> {dst}") copyfile(src, dst) elif opts["mode"] == self.MODE_HARDLINK: self.log.debug("Hardlinking file ... {} -> {}".format(src, dst)) From 8dae70ab590789d03f3b5afe482a79cd0c1449a4 Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:23:35 +0000 Subject: [PATCH 102/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 138861760f..8f119ed2ae 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -146,7 +146,7 @@ class FileTransaction: self.log.debug(f"Copying file ... {src} -> {dst}") copyfile(src, dst) elif opts["mode"] == self.MODE_HARDLINK: - self.log.debug("Hardlinking file ... {} -> {}".format(src, dst)) + self.log.debug(f"Hardlinking file ... {src} -> {dst}") create_hard_link(src, dst) self._transferred.append(dst) From b2e84b2b0a6f397b402084d95fa70b607bf39d0e Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:23:43 +0000 Subject: [PATCH 103/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 8f119ed2ae..e19f095920 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -137,7 +137,7 @@ class FileTransaction: path_same = self._same_paths(src, dst) if path_same: self.log.debug( - "Source and destination are same files {} -> {}".format(src, dst)) + f"Source and destination are same files {src} -> {dst}") return self._create_folder_for_file(dst) From 724e206900c57ec90daed0171571f9a52566d458 Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:24:08 +0000 Subject: [PATCH 104/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index e19f095920..2d1c7726eb 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -11,7 +11,6 @@ if sys.platform == "win32": else: from shutil import copyfile -import concurrent.futures class DuplicateDestinationError(ValueError): """Error raised when transfer destination already exists in queue. From 8721824bd9d889b97eb91ff60668c6bd64638072 Mon Sep 17 00:00:00 2001 From: r42-chun <73248638+r42-chun@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:24:14 +0000 Subject: [PATCH 105/626] Update client/ayon_core/lib/file_transaction.py Co-authored-by: Roy Nieterau --- client/ayon_core/lib/file_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 2d1c7726eb..5c55f56b7d 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -121,7 +121,7 @@ class FileTransaction: concurrent.futures.wait(transfer_futures) def backup_file(self, dst, src): - self.log.debug("Checking file ... {} -> {}".format(src, dst)) + self.log.debug(f"Checking file ... {src} -> {dst}") path_same = self._same_paths(src, dst) if path_same or not os.path.exists(dst): return From 236f72832cb313c959678acc05090a006b188fde Mon Sep 17 00:00:00 2001 From: ChunYou Date: Tue, 4 Feb 2025 13:19:00 +0000 Subject: [PATCH 106/626] Add underscores to bacup and transfer file functions --- client/ayon_core/lib/file_transaction.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 5c55f56b7d..f271f3081c 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -112,15 +112,15 @@ class FileTransaction: with concurrent.futures.ThreadPoolExecutor() as executor: backup_futures = [] for dst, (src, _) in self._transfers.items(): - backup_futures.append(executor.submit(self.backup_file, dst, src)) + backup_futures.append(executor.submit(self._backup_file, dst, src)) concurrent.futures.wait(backup_futures) transfer_futures = [] for dst, (src, opts) in self._transfers.items(): - transfer_futures.append(executor.submit(self.transfer_file, dst, src, opts)) + transfer_futures.append(executor.submit(self._transfer_file, dst, src, opts)) concurrent.futures.wait(transfer_futures) - def backup_file(self, dst, src): + def _backup_file(self, dst, src): self.log.debug(f"Checking file ... {src} -> {dst}") path_same = self._same_paths(src, dst) if path_same or not os.path.exists(dst): @@ -132,7 +132,7 @@ class FileTransaction: self.log.debug(f"Backup existing file: {dst} -> {backup}") os.rename(dst, backup) - def transfer_file(self, dst, src, opts): + def _transfer_file(self, dst, src, opts): path_same = self._same_paths(src, dst) if path_same: self.log.debug( From 284ad5316be44940857f9c27c3357eae085b89a7 Mon Sep 17 00:00:00 2001 From: ChunYou Date: Tue, 4 Feb 2025 13:59:06 +0000 Subject: [PATCH 107/626] Added some error handling --- client/ayon_core/lib/file_transaction.py | 35 +++++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index f271f3081c..83a371967f 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -108,17 +108,32 @@ class FileTransaction: self._transfers[dst] = (src, opts) - def process(self): - with concurrent.futures.ThreadPoolExecutor() as executor: - backup_futures = [] - for dst, (src, _) in self._transfers.items(): - backup_futures.append(executor.submit(self._backup_file, dst, src)) - concurrent.futures.wait(backup_futures) - transfer_futures = [] - for dst, (src, opts) in self._transfers.items(): - transfer_futures.append(executor.submit(self._transfer_file, dst, src, opts)) - concurrent.futures.wait(transfer_futures) + def _process_futures(self, futures): + """Wait for futures and raise exceptions if any task fails.""" + try: + for future in concurrent.futures.as_completed(futures): + future.result() # If an exception occurs, it will be raised here + except Exception as e: + print(f"File Transaction task failed with error: {e}", file=sys.stderr) + raise + + def process(self): + try: + with concurrent.futures.ThreadPoolExecutor(max_workers=min(8, len(self._transfers))) as executor: + # Submit backup tasks + backup_futures = [executor.submit(self._backup_file, dst, src) for dst, (src, _) in + self._transfers.items()] + self._process_futures(backup_futures) + + # Submit transfer tasks + transfer_futures = [executor.submit(self._transfer_file, dst, src, opts) for dst, (src, opts) in + self._transfers.items()] + self._process_futures(transfer_futures) + + except Exception as e: + print(f"File Transaction Failed: {e}", file=sys.stderr) + sys.exit(1) def _backup_file(self, dst, src): self.log.debug(f"Checking file ... {src} -> {dst}") From 8c9c69efa78e99cc0fc6eceeff7a918736ab211e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 5 Feb 2025 02:35:35 +0100 Subject: [PATCH 108/626] Add validation for the ThreadPoolExecutor calls, raise on error --- client/ayon_core/lib/file_transaction.py | 45 ++++++++--------- client/ayon_core/lib/threadpool.py | 49 +++++++++++++++++++ .../plugins/publish/integrate_hero_version.py | 18 ++++--- 3 files changed, 81 insertions(+), 31 deletions(-) create mode 100644 client/ayon_core/lib/threadpool.py diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 83a371967f..e82599b2fb 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -2,6 +2,7 @@ import os import logging import sys import errno +from concurrent.futures import ThreadPoolExecutor from ayon_core.lib import create_hard_link @@ -11,6 +12,11 @@ if sys.platform == "win32": else: from shutil import copyfile +from .threadpool import as_completed_stop_and_raise_on_error + + +log = logging.getLogger(__name__) + class DuplicateDestinationError(ValueError): """Error raised when transfer destination already exists in queue. @@ -108,32 +114,23 @@ class FileTransaction: self._transfers[dst] = (src, opts) - - def _process_futures(self, futures): - """Wait for futures and raise exceptions if any task fails.""" - try: - for future in concurrent.futures.as_completed(futures): - future.result() # If an exception occurs, it will be raised here - except Exception as e: - print(f"File Transaction task failed with error: {e}", file=sys.stderr) - raise - def process(self): - try: - with concurrent.futures.ThreadPoolExecutor(max_workers=min(8, len(self._transfers))) as executor: - # Submit backup tasks - backup_futures = [executor.submit(self._backup_file, dst, src) for dst, (src, _) in - self._transfers.items()] - self._process_futures(backup_futures) + with ThreadPoolExecutor(max_workers=8) as executor: + # Submit backup tasks + backup_futures = [ + executor.submit(self._backup_file, dst, src) + for dst, (src, _) in self._transfers.items() + ] + as_completed_stop_and_raise_on_error( + executor, backup_futures, logger=self.log) - # Submit transfer tasks - transfer_futures = [executor.submit(self._transfer_file, dst, src, opts) for dst, (src, opts) in - self._transfers.items()] - self._process_futures(transfer_futures) - - except Exception as e: - print(f"File Transaction Failed: {e}", file=sys.stderr) - sys.exit(1) + # Submit transfer tasks + transfer_futures = [ + executor.submit(self._transfer_file, dst, src, opts) + for dst, (src, opts) in self._transfers.items() + ] + as_completed_stop_and_raise_on_error( + executor, transfer_futures, logger=self.log) def _backup_file(self, dst, src): self.log.debug(f"Checking file ... {src} -> {dst}") diff --git a/client/ayon_core/lib/threadpool.py b/client/ayon_core/lib/threadpool.py new file mode 100644 index 0000000000..b1b2476342 --- /dev/null +++ b/client/ayon_core/lib/threadpool.py @@ -0,0 +1,49 @@ +import logging +import concurrent.futures +from concurrent.futures import ThreadPoolExecutor, Future +from typing import List, Optional + +log = logging.getLogger(__name__) + + +def as_completed_stop_and_raise_on_error( + executor: ThreadPoolExecutor, + futures: List[Future], + logger: Optional[logging.Logger] = None): + """For the ThreadPoolExecutor shutdown and cancel futures as soon one of + the workers raises an error as they complete. + + The ThreadPoolExecutor only cancels pending futures on exception but will + still complete those that are running - each which also themselves could + fail. We log all exceptions, but re-raise the last exception only. + """ + if logger is None: + logger = log + + for future in concurrent.futures.as_completed(futures): + exception = future.exception() + if exception: + # As soon as an error occurs, stop executing more futures. + # Running workers however, will still complete so we also want + # to log those errors if any occurred on them. + executor.shutdown(wait=True, cancel_futures=True) + break + else: + # Futures are completed, no exceptions occurred + return + + # An exception occurred in at least one future. Get exceptions from + # all futures that are done and ended up failing until that point. + exceptions = [] + for future in futures: + if not future.cancelled() and future.done(): + exception = future.exception() + if exception: + exceptions.append(exception) + + # Log any exceptions that occurred in all workers + for exception in exceptions: + logger.error("Error occurred in worker", exc_info=exception) + + # Raise the last exception + raise exceptions[-1] diff --git a/client/ayon_core/plugins/publish/integrate_hero_version.py b/client/ayon_core/plugins/publish/integrate_hero_version.py index 92becb6e01..78a2796d35 100644 --- a/client/ayon_core/plugins/publish/integrate_hero_version.py +++ b/client/ayon_core/plugins/publish/integrate_hero_version.py @@ -1,16 +1,16 @@ import os import copy import errno +import itertools import shutil import sys +from concurrent.futures import ThreadPoolExecutor # this is needed until speedcopy for linux is fixed if sys.platform == "win32": from speedcopy import copyfile else: from shutil import copyfile -import concurrent.futures - import clique import pyblish.api import ayon_api @@ -21,6 +21,7 @@ from ayon_api.operations import ( from ayon_api.utils import create_entity_id from ayon_core.lib import create_hard_link, source_hash +from ayon_core.lib.threadpool import as_completed_stop_and_raise_on_error from ayon_core.pipeline.publish import ( get_publish_template_name, OptionalPyblishPluginMixin, @@ -423,11 +424,14 @@ class IntegrateHeroVersion( # Copy(hardlink) paths of source and destination files # TODO should we *only* create hardlinks? # TODO should we keep files for deletion until this is successful? - with concurrent.futures.ThreadPoolExecutor() as executor: - file_futures = [] - for src_path, dst_path in src_to_dst_file_paths + other_file_paths_mapping: - file_futures.append(executor.submit(self.copy_file, src_path, dst_path)) - concurrent.futures.wait(file_futures) + with ThreadPoolExecutor(max_workers=8) as executor: + futures = [ + executor.submit(self.copy_file, src_path, dst_path) + for src_path, dst_path + in itertools.chain(src_to_dst_file_paths, + other_file_paths_mapping) + ] + as_completed_stop_and_raise_on_error(executor, futures) # Update prepared representation etity data with files # and integrate it to server. From 42760fbffe26523aa8dc45ae8ba616dba375bcfb Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 5 Feb 2025 02:39:11 +0100 Subject: [PATCH 109/626] Remove redundant log instance --- client/ayon_core/lib/file_transaction.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index e82599b2fb..06ba07c148 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -15,9 +15,6 @@ else: from .threadpool import as_completed_stop_and_raise_on_error -log = logging.getLogger(__name__) - - class DuplicateDestinationError(ValueError): """Error raised when transfer destination already exists in queue. From 9c67bf1990d26fdcde5e3566c058aadfdda6bf8e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 5 Feb 2025 11:51:32 +0100 Subject: [PATCH 110/626] Move `as_completed_stop_and_raise_on_error` to `file_transaction.py` --- client/ayon_core/lib/file_transaction.py | 49 +++++++++++++++++-- client/ayon_core/lib/threadpool.py | 49 ------------------- .../plugins/publish/integrate_hero_version.py | 2 +- 3 files changed, 47 insertions(+), 53 deletions(-) delete mode 100644 client/ayon_core/lib/threadpool.py diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index 06ba07c148..bf206b535c 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -1,8 +1,10 @@ +import concurrent.futures import os import logging import sys import errno -from concurrent.futures import ThreadPoolExecutor +from concurrent.futures import ThreadPoolExecutor, Future +from typing import List, Optional from ayon_core.lib import create_hard_link @@ -12,8 +14,6 @@ if sys.platform == "win32": else: from shutil import copyfile -from .threadpool import as_completed_stop_and_raise_on_error - class DuplicateDestinationError(ValueError): """Error raised when transfer destination already exists in queue. @@ -226,3 +226,46 @@ class FileTransaction: return os.stat(src) == os.stat(dst) return src == dst + + +def as_completed_stop_and_raise_on_error( + executor: ThreadPoolExecutor, + futures: List[Future], + logger: Optional[logging.Logger] = None): + """For the ThreadPoolExecutor shutdown and cancel futures as soon one of + the workers raises an error as they complete. + + The ThreadPoolExecutor only cancels pending futures on exception but will + still complete those that are running - each which also themselves could + fail. We log all exceptions, but re-raise the last exception only. + """ + if logger is None: + logger = logging.getLogger(__name__) + + for future in concurrent.futures.as_completed(futures): + exception = future.exception() + if exception: + # As soon as an error occurs, stop executing more futures. + # Running workers however, will still complete so we also want + # to log those errors if any occurred on them. + executor.shutdown(wait=True, cancel_futures=True) + break + else: + # Futures are completed, no exceptions occurred + return + + # An exception occurred in at least one future. Get exceptions from + # all futures that are done and ended up failing until that point. + exceptions = [] + for future in futures: + if not future.cancelled() and future.done(): + exception = future.exception() + if exception: + exceptions.append(exception) + + # Log any exceptions that occurred in all workers + for exception in exceptions: + logger.error("Error occurred in worker", exc_info=exception) + + # Raise the last exception + raise exceptions[-1] diff --git a/client/ayon_core/lib/threadpool.py b/client/ayon_core/lib/threadpool.py deleted file mode 100644 index b1b2476342..0000000000 --- a/client/ayon_core/lib/threadpool.py +++ /dev/null @@ -1,49 +0,0 @@ -import logging -import concurrent.futures -from concurrent.futures import ThreadPoolExecutor, Future -from typing import List, Optional - -log = logging.getLogger(__name__) - - -def as_completed_stop_and_raise_on_error( - executor: ThreadPoolExecutor, - futures: List[Future], - logger: Optional[logging.Logger] = None): - """For the ThreadPoolExecutor shutdown and cancel futures as soon one of - the workers raises an error as they complete. - - The ThreadPoolExecutor only cancels pending futures on exception but will - still complete those that are running - each which also themselves could - fail. We log all exceptions, but re-raise the last exception only. - """ - if logger is None: - logger = log - - for future in concurrent.futures.as_completed(futures): - exception = future.exception() - if exception: - # As soon as an error occurs, stop executing more futures. - # Running workers however, will still complete so we also want - # to log those errors if any occurred on them. - executor.shutdown(wait=True, cancel_futures=True) - break - else: - # Futures are completed, no exceptions occurred - return - - # An exception occurred in at least one future. Get exceptions from - # all futures that are done and ended up failing until that point. - exceptions = [] - for future in futures: - if not future.cancelled() and future.done(): - exception = future.exception() - if exception: - exceptions.append(exception) - - # Log any exceptions that occurred in all workers - for exception in exceptions: - logger.error("Error occurred in worker", exc_info=exception) - - # Raise the last exception - raise exceptions[-1] diff --git a/client/ayon_core/plugins/publish/integrate_hero_version.py b/client/ayon_core/plugins/publish/integrate_hero_version.py index 78a2796d35..69864cce8a 100644 --- a/client/ayon_core/plugins/publish/integrate_hero_version.py +++ b/client/ayon_core/plugins/publish/integrate_hero_version.py @@ -21,7 +21,7 @@ from ayon_api.operations import ( from ayon_api.utils import create_entity_id from ayon_core.lib import create_hard_link, source_hash -from ayon_core.lib.threadpool import as_completed_stop_and_raise_on_error +from ayon_core.lib.file_transaction import as_completed_stop_and_raise_on_error from ayon_core.pipeline.publish import ( get_publish_template_name, OptionalPyblishPluginMixin, From 4da77e745505ce3fe92302e3a508afeed611798a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 5 Feb 2025 16:50:40 +0100 Subject: [PATCH 111/626] :recycle: remove unnecessary `NotImplementedError` --- client/ayon_core/addon/interfaces.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index bf844e2d8b..303cdf3941 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -169,18 +169,14 @@ class ITrayAddon(AYONInterface): prepared """ - raise NotImplementedError @abstractmethod def tray_menu(self, tray_menu: QtWidgets.QMenu) -> None: """Add addon's action to tray menu.""" - raise NotImplementedError - @abstractmethod def tray_start(self) -> None: """Start procedure in tray tool.""" - raise NotImplementedError @abstractmethod def tray_exit(self) -> None: @@ -189,7 +185,6 @@ class ITrayAddon(AYONInterface): This is place where all threads should be shut. """ - raise NotImplementedError def execute_in_main_thread(self, callback: Callable) -> None: """Pushes callback to the queue or process 'callback' on a main thread. @@ -282,12 +277,10 @@ class ITrayAction(ITrayAddon): @abstractmethod def label(self) -> str: """Service label showed in menu.""" - raise NotImplementedError @abstractmethod def on_action_trigger(self) -> None: """What happens on actions click.""" - raise NotImplementedError def tray_menu(self, tray_menu: QtWidgets.QMenu) -> None: """Add action to tray menu.""" @@ -326,7 +319,6 @@ class ITrayService(ITrayAddon): @abstractmethod def label(self) -> str: """Service label showed in menu.""" - raise NotImplementedError # TODO (Illicit): be able to get any sort of information to show/print # @abstractmethod @@ -448,4 +440,3 @@ class ITraits(AYONInterface): list[Type[TraitBase]]: Traits for the addon. """ - raise NotImplementedError From 5e5a27c7a953205c821d406d67a660dbdc7ddd8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 5 Feb 2025 16:59:11 +0100 Subject: [PATCH 112/626] :recycle: make fields optional --- client/ayon_core/pipeline/traits/meta.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 00b5013f72..2f5d3eb212 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -1,5 +1,7 @@ """Metadata traits.""" -from typing import ClassVar, List +from __future__ import annotations + +from typing import ClassVar, List, Optional from pydantic import Field @@ -102,15 +104,26 @@ class KeepOriginalName(TraitBase): class SourceApplication(TraitBase): - """Metadata about the source (producing) application.""" + """Metadata about the source (producing) application. + + This can be useful in cases, where this information is + needed but it cannot be determined from other means - like + .txt files used for various motion tracking applications that + must be interpreted by the loader. + + Note that this is not really connected to any logic in + ayon-applications addon. + + """ name: ClassVar[str] = "SourceApplication" description: ClassVar[str] = "Source Application Trait Model" id: ClassVar[str] = "ayon.meta.SourceApplication.v1" application: str = Field(..., title="Application Name") - variant: str = Field(..., title="Application Variant (e.g. Pro)") - version: str = Field(..., title="Application Version") - platform: str = Field(..., title="Platform Name") + variant: Optional[str] = Field(None, title="Application Variant (e.g. Pro)") + version: Optional[str] = Field(None, title="Application Version") + platform: Optional[str] = Field(None, title="Platform Name (e.g. Windows)") + host_name: Optional[str] = Field(None, title="AYON host Name if applicable") class IntendedUse(TraitBase): From 67bf458d1c92842062c97f65ee717ab7bea5ce15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 5 Feb 2025 16:59:29 +0100 Subject: [PATCH 113/626] :dog: style changes --- client/ayon_core/pipeline/traits/temporal.py | 13 ++++++++----- client/ayon_core/pipeline/traits/trait.py | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index f924a8d1e1..d50b9e8eb8 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -29,11 +29,13 @@ class GapPolicy(Enum): hold (int): Gaps are interpreted as hold frames (last existing frames). black (int): Gaps are interpreted as black frames. """ + forbidden = auto() missing = auto() hold = auto() black = auto() + class FrameRanged(TraitBase): """Frame ranged trait model. @@ -63,8 +65,8 @@ class FrameRanged(TraitBase): frame_out (int): Frame out. frames_per_second (str): Frames per second. step (int): Step. - """ + name: ClassVar[str] = "FrameRanged" description: ClassVar[str] = "Frame Ranged Trait" id: ClassVar[str] = "ayon.time.FrameRanged.v1" @@ -91,8 +93,8 @@ class Handles(TraitBase): inclusive (bool): Handles are inclusive. frame_start_handle (int): Frame start handle. frame_end_handle (int): Frame end handle. - """ + name: ClassVar[str] = "Handles" description: ClassVar[str] = "Handles Trait" id: ClassVar[str] = "ayon.time.Handles.v1" @@ -103,6 +105,7 @@ class Handles(TraitBase): frame_end_handle: Optional[int] = Field( 0, title="Frame End Handle") + class Sequence(TraitBase): """Sequence trait model. @@ -122,8 +125,8 @@ class Sequence(TraitBase): named group. frame_spec (str): Frame list specification of frames. This takes string like "1-10,20-30,40-50" etc. - """ + name: ClassVar[str] = "Sequence" description: ClassVar[str] = "Sequence Trait Model" id: ClassVar[str] = "ayon.time.Sequence.v1" @@ -206,7 +209,6 @@ class Sequence(TraitBase): self.validate_frame_padding(file_locs) - def validate_frame_list( # noqa: C901 self, file_locations: FileLocations, @@ -330,7 +332,6 @@ class Sequence(TraitBase): frames.extend(range(int(start), int(end) + 1)) return frames - @staticmethod def _get_collection( file_locations: FileLocations, @@ -410,6 +411,7 @@ class Sequence(TraitBase): # Do we need one for drop and non-drop frame? class SMPTETimecode(TraitBase): """SMPTE Timecode trait model.""" + name: ClassVar[str] = "Timecode" description: ClassVar[str] = "SMPTE Timecode Trait" id: ClassVar[str] = "ayon.time.SMPTETimecode.v1" @@ -421,6 +423,7 @@ class Static(TraitBase): Used to define static time (single frame). """ + name: ClassVar[str] = "Static" description: ClassVar[str] = "Static Time Trait" id: ClassVar[str] = "ayon.time.Static.v1" diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 3997451f44..695ebb54c8 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -27,7 +27,6 @@ class TraitBase(ABC, BaseModel): It is using Pydantic BaseModel for serialization and validation. ``id``, ``name``, and ``description`` are abstract attributes that must be implemented in the derived classes. - """ model_config = ConfigDict( @@ -118,6 +117,7 @@ class UpgradableTraitError(Generic[T], Exception): trait: T old_data: dict + class LooseMatchingTraitError(Generic[T], Exception): """Loose matching trait exception. @@ -128,6 +128,7 @@ class LooseMatchingTraitError(Generic[T], Exception): found_trait: T expected_id: str + class TraitValidationError(Exception): """Trait validation error exception. From bdb0a10890df2c684dcbff8657d8db44f8f76ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 5 Feb 2025 16:59:51 +0100 Subject: [PATCH 114/626] :recycle: improve comment and error handling --- client/ayon_core/pipeline/traits/utils.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index 2aa6173464..54cc99a261 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -15,6 +15,8 @@ def get_sequence_from_files(paths: list[Path]) -> FrameRanged: """Get original frame range from files. Note that this cannot guess frame rate, so it's set to 25. + This will also fail on paths that cannot be assembled into + one collection without any reminders. Args: paths (list[Path]): List of file paths. @@ -23,7 +25,15 @@ def get_sequence_from_files(paths: list[Path]) -> FrameRanged: FrameRanged: FrameRanged trait. """ - col = assemble([path.as_posix() for path in paths])[0][0] + cols, rems = assemble([path.as_posix() for path in paths]) + if rems: + msg = "Cannot assemble paths into one collection" + raise ValueError(msg) + if len(cols) != 1: + msg = "More than one collection found" + raise ValueError(msg) + col = cols[0] + sorted_frames = sorted(col.indexes) # First frame used for end value first_frame = sorted_frames[0] From 681301bf8cec23dd9797464ed86d02f21b6c2f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 5 Feb 2025 20:28:31 +0100 Subject: [PATCH 115/626] :dog: fix line length --- client/ayon_core/pipeline/traits/meta.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 2f5d3eb212..e21f3eb7fd 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -120,10 +120,14 @@ class SourceApplication(TraitBase): description: ClassVar[str] = "Source Application Trait Model" id: ClassVar[str] = "ayon.meta.SourceApplication.v1" application: str = Field(..., title="Application Name") - variant: Optional[str] = Field(None, title="Application Variant (e.g. Pro)") - version: Optional[str] = Field(None, title="Application Version") - platform: Optional[str] = Field(None, title="Platform Name (e.g. Windows)") - host_name: Optional[str] = Field(None, title="AYON host Name if applicable") + variant: Optional[str] = Field( + None, title="Application Variant (e.g. Pro)") + version: Optional[str] = Field( + None, title="Application Version") + platform: Optional[str] = Field( + None, title="Platform Name (e.g. Windows)") + host_name: Optional[str] = Field( + None, title="AYON host Name if applicable") class IntendedUse(TraitBase): From 883ea09e5de92c8e5639c3e52ce954525949ffc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 6 Feb 2025 16:05:47 +0100 Subject: [PATCH 116/626] :recycle: change too complex type `frame_regex` must be `re.Pattern` or `None` now --- client/ayon_core/pipeline/traits/temporal.py | 25 ++++++++------------ 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index d50b9e8eb8..573f4b83b5 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -5,7 +5,7 @@ import contextlib import re from enum import Enum, auto from re import Pattern -from typing import TYPE_CHECKING, ClassVar, Optional, Union +from typing import TYPE_CHECKING, ClassVar, Optional import clique from pydantic import Field, field_validator @@ -133,7 +133,7 @@ class Sequence(TraitBase): gaps_policy: Optional[GapPolicy] = Field( default=GapPolicy.forbidden, title="Gaps Policy") frame_padding: int = Field(..., title="Frame Padding") - frame_regex: Optional[Union[Pattern, str]] = Field( + frame_regex: Optional[Pattern] = Field( default=None, title="Frame Regex") frame_spec: Optional[str] = Field(default=None, title="Frame Specification") @@ -141,16 +141,16 @@ class Sequence(TraitBase): @field_validator("frame_regex") @classmethod def validate_frame_regex( - cls, v: Optional[Union[Pattern, str]] - ) -> Optional[Union[Pattern, str]]: + cls, v: Optional[Pattern] + ) -> Optional[Pattern]: """Validate frame regex.""" - _v = v - if v and isinstance(v, Pattern): - _v = v.pattern + if v is None: + return v + _v = v.pattern if v and any(s not in _v for s in ["?P", "?P"]): msg = "Frame regex must include 'index' and `padding named groups" raise ValueError(msg) - return _v + return v def validate_trait(self, representation: Representation) -> None: """Validate the trait.""" @@ -244,13 +244,8 @@ class Sequence(TraitBase): frames: list[int] = [] if self.frame_regex: - if isinstance(self.frame_regex, str): - frame_regex = re.compile(self.frame_regex) - elif isinstance(self.frame_regex, Pattern): - frame_regex = self.frame_regex - frames = self.get_frame_list( - file_locations, frame_regex) + file_locations, self.frame_regex) else: frames = self.get_frame_list( file_locations) @@ -353,7 +348,7 @@ class Sequence(TraitBase): ValueError: If zero or multiple collections found. """ - patterns = None if not regex else [regex] + patterns = [regex] if regex else None files: list[str] = [ file.file_path.as_posix() for file in file_locations.file_paths From dcb754cb958aed65eb1bb771710e70ce5f17e063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Thu, 6 Feb 2025 16:07:52 +0100 Subject: [PATCH 117/626] :dog: remove unused ignore rule --- client/ayon_core/pipeline/traits/temporal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index 573f4b83b5..c66172a6d2 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -209,7 +209,7 @@ class Sequence(TraitBase): self.validate_frame_padding(file_locs) - def validate_frame_list( # noqa: C901 + def validate_frame_list( self, file_locations: FileLocations, frame_start: Optional[int] = None, From 94437f866a38abbcf95270f78f4600c63b34eaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 7 Feb 2025 16:03:52 +0100 Subject: [PATCH 118/626] :wrench: wip on representation entity --- .../plugins/publish/integrate_traits.py | 62 +++++++++++++++---- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 43f979b196..09b4ca5461 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -3,7 +3,6 @@ from __future__ import annotations import contextlib import copy -from copy import deepcopy from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING, Any, List @@ -48,8 +47,11 @@ if TYPE_CHECKING: from ayon_core.pipeline import Anatomy from ayon_core.pipeline.anatomy.templates import ( - TemplateItem as AnatomyTemplateItem, AnatomyStringTemplate, -) + AnatomyStringTemplate, + ) + from ayon_core.pipeline.anatomy.templates import ( + TemplateItem as AnatomyTemplateItem, + ) @dataclass(frozen=True) @@ -97,6 +99,20 @@ class TemplateItem: template_object: AnatomyTemplateItem + +@dataclass +class RepresentationEntity: + """Representation entity data.""" + id: str + versionId: str # noqa: N815 + name: str + files: dict[str, Any] + attrib: dict[str, Any] + data: str + tags: list[str] + status: str + + def get_instance_families(instance: pyblish.api.Instance) -> List[str]: """Get all families of the instance. @@ -148,9 +164,11 @@ def get_changed_attributes( attrib_changes = {} if "attrib" in new_entity: - for key, value in new_entity["attrib"].items(): - if value != old_entity["attrib"].get(key): - attrib_changes[key] = value + attrib_changes = { + key: value + for key, value in new_entity["attrib"].items() + if value != old_entity["attrib"].get(key) + } if attrib_changes: changes["attrib"] = attrib_changes return changes @@ -170,7 +188,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): Todo: Refactor this method to be more readable and maintainable. - Remove corresponding noqa codes. Args: instance (pyblish.api.Instance): Instance to process. @@ -187,7 +204,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): "Instance is marked to be processed on farm. Skipping") return - # TODO (antirotor): Find better name for the key # noqa: FIX002, TD003 + # TODO (antirotor): Find better name for the key if not instance.data.get("representations_with_traits"): self.log.debug( "Instance has no representations with traits. Skipping") @@ -216,6 +233,14 @@ class IntegrateTraits(pyblish.api.InstancePlugin): transfers = self.get_transfers_from_representations( instance, representations) + # 8) Transfer files + for transfer in transfers: + self.log.debug( + "Transferring file: %s -> %s", + transfer.source, + transfer.destination + ) + def get_transfers_from_representations( self, instance: pyblish.api.Instance, @@ -649,7 +674,9 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return path def get_attributes_for_type( - self, context: pyblish.api.Context, entity_type: str) -> dict: + self, + context: pyblish.api.Context, + entity_type: str) -> dict: """Get AYON attributes for the given entity type.""" return self.get_attributes_by_type(context)[entity_type] @@ -791,8 +818,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): representation.get_trait(FileLocations), regex=sequence.frame_regex) template_padding = template_item.anatomy.templates_obj.frame_padding - if template_padding > dst_padding: - dst_padding = template_padding + dst_padding = max(template_padding, dst_padding) # go through all frames in the sequence # find their corresponding file locations @@ -983,3 +1009,17 @@ class IntegrateTraits(pyblish.api.InstancePlugin): sub_representation, template_item, transfers ) +def create_representation_entity(representation: Representation) -> dict: + """Create representation entity. + + Args: + representation (Representation): Representation to create entity for. + + Returns: + dict: Representation entity. + + """ + return { + "name": representation.name, + "traits": representation.get_traits_data(), + } From 50e390e6125ad062d54168ae4ad119d7a50e183a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 10 Feb 2025 15:30:02 +0100 Subject: [PATCH 119/626] :dog: linter fixes --- client/ayon_core/pipeline/traits/content.py | 38 ++++++++++-------- client/ayon_core/pipeline/traits/meta.py | 1 + .../pipeline/traits/representation.py | 32 ++++++--------- client/ayon_core/pipeline/traits/temporal.py | 40 ++++++++++++++----- client/ayon_core/pipeline/traits/trait.py | 13 +++--- .../pipeline/traits/two_dimensional.py | 10 ++++- client/ayon_core/pipeline/traits/utils.py | 3 ++ pyproject.toml | 22 ++++++---- 8 files changed, 99 insertions(+), 60 deletions(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 75b1263ea7..4ee63b2b08 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -163,15 +163,16 @@ class FileLocations(TraitBase): Args: representation (Representation): Representation to validate. - Returns: - bool: True if the trait is valid, False otherwise + Raises: + TraitValidationError: If the trait is invalid within the + representation. """ super().validate_trait(representation) if len(self.file_paths) == 0: - # If there are no file paths, we can't validate - msg = "No file locations defined (empty list)" - raise TraitValidationError(self.name, msg) + # If there are no file paths, we can't validate + msg = "No file locations defined (empty list)" + raise TraitValidationError(self.name, msg) if representation.contains_trait(FrameRanged): self._validate_frame_range(representation) if not representation.contains_trait(Sequence) \ @@ -234,7 +235,7 @@ class FileLocations(TraitBase): raise TraitValidationError(self.name, msg) if frames_from_spec: - if len(frames_from_spec) != len(self.file_paths) : + if len(frames_from_spec) != len(self.file_paths): # If the number of file paths does not match the frame range, # the trait is invalid msg = ( @@ -254,14 +255,14 @@ class FileLocations(TraitBase): ) if len(self.file_paths) != length_with_handles: - # If the number of file paths does not match the frame range, - # the trait is invalid - msg = ( - f"Number of file locations ({len(self.file_paths)}) " - "does not match frame range " - f"({length_with_handles})" - ) - raise TraitValidationError(self.name, msg) + # If the number of file paths does not match the frame range, + # the trait is invalid + msg = ( + f"Number of file locations ({len(self.file_paths)}) " + "does not match frame range " + f"({length_with_handles})" + ) + raise TraitValidationError(self.name, msg) frame_ranged: FrameRanged = representation.get_trait(FrameRanged) @@ -281,8 +282,8 @@ class FileLocations(TraitBase): ) raise TraitValidationError(self.name, msg) + @staticmethod def _get_frame_info_with_handles( - self, representation: Representation, frames_from_spec: list[int]) -> tuple[int, int]: """Get the frame range with handles from the representation. @@ -427,7 +428,12 @@ class Bundle(TraitBase): ..., title="Bundles of traits") def to_representations(self) -> Generator[Representation]: - """Convert bundle to representations.""" + """Convert bundle to representations. + + Yields: + Representation: Representation of the bundle. + + """ for idx, item in enumerate(self.items): yield Representation(name=f"{self.name} {idx}", traits=item) diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index e21f3eb7fd..0f8c175af5 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -90,6 +90,7 @@ class KeepOriginalLocation(TraitBase): id: ClassVar[str] = "ayon.meta.KeepOriginalLocation.v1" persistent: bool = Field(default=False, title="Persistent") + class KeepOriginalName(TraitBase): """Keep files in its original name. diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index d185c0466c..43b0397597 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -44,7 +44,7 @@ def _get_version_from_id(_id: str) -> Optional[int]: return int(match[1]) if match else None -class Representation(Generic[T]): +class Representation(Generic[T]): # noqa: PLR0904 """Representation of products. Representation defines collection of individual properties that describe @@ -54,6 +54,9 @@ class Representation(Generic[T]): It holds methods to add, remove, get, and check for the existence of a trait in the representation. It also provides a method to get all the + Note: + `PLR0904` is rule for checking number of public methods in a class. + Arguments: name (str): Representation name. Must be unique within instance. representation_id (str): Representation ID. @@ -79,9 +82,6 @@ class Representation(Generic[T]): Returns: TraitBase: Trait instance. - Raises: - MissingTraitError: If the trait is not found. - """ return self.get_trait_by_id(key) @@ -104,8 +104,6 @@ class Representation(Generic[T]): Args: key (str): Trait ID. - Raises: - ValueError: If the trait is not found. """ self.remove_trait_by_id(key) @@ -138,7 +136,7 @@ class Representation(Generic[T]): """Add a trait to the Representation. Args: - trait (TraiBase): Trait to add. + trait (TraitBase): Trait to add. exists_ok (bool, optional): If True, do not raise an error if the trait already exists. Defaults to False. @@ -228,7 +226,6 @@ class Representation(Generic[T]): for trait_id in trait_ids: self.remove_trait_by_id(trait_id) - def has_traits(self) -> bool: """Check if the Representation has any traits. @@ -260,7 +257,7 @@ class Representation(Generic[T]): bool: True if the trait exists, False otherwise. """ - return bool(self._data.get(trait_id)) + return bool(self._data.get(trait_id)) def contains_traits(self, traits: list[Type[T]]) -> bool: """Check if the traits exist. @@ -366,7 +363,7 @@ class Representation(Generic[T]): return result for trait in traits: - result[str(trait.id)] = self.get_trait(trait=trait) + result[str(trait.id)] = self.get_trait(trait=trait) return result def get_traits_by_ids(self, trait_ids: list[str]) -> dict[str, T]: @@ -532,12 +529,6 @@ class Representation(Generic[T]): Returns: Type[TraitBase]: Trait class. - Raises: - LooseMatchingTraitError: If the trait is found with a loose - matching criteria. This exception will include the trait - class that was found and the expected trait ID. Additional - downstream logic must decide how to handle this error. - """ version = cls._get_version_from_id(trait_id) @@ -588,9 +579,6 @@ class Representation(Generic[T]): Raises: IncompatibleTraitVersionError: If the trait version is incompatible with the current version of the trait. - UpgradableTraitError: If the trait can upgrade existing data - meant for older versions of the trait. - ValueError: If the trait model with the given ID is not found. """ try: @@ -662,6 +650,11 @@ class Representation(Generic[T]): Returns: Representation: Representation instance. + Raises: + ValueError: If the trait model with ID is not found. + TypeError: If the trait data is not a dictionary. + IncompatibleTraitVersionError: If the trait version is incompatible + """ if not trait_data: trait_data = {} @@ -697,7 +690,6 @@ class Representation(Generic[T]): return cls( name=name, representation_id=representation_id, traits=traits) - def validate(self) -> None: """Validate the representation. diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index c66172a6d2..286336ea55 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -143,11 +143,20 @@ class Sequence(TraitBase): def validate_frame_regex( cls, v: Optional[Pattern] ) -> Optional[Pattern]: - """Validate frame regex.""" + """Validate frame regex. + + Frame regex must have index and padding named groups. + + Returns: + Optional[Pattern]: Compiled regex pattern. + + Raises: + ValueError: If frame regex does not include 'index' and 'padding' + + """ if v is None: return v - _v = v.pattern - if v and any(s not in _v for s in ["?P", "?P"]): + if v and any(s not in v.pattern for s in ["?P", "?P"]): msg = "Frame regex must include 'index' and `padding named groups" raise ValueError(msg) return v @@ -172,10 +181,6 @@ class Sequence(TraitBase): Args: representation (Representation): Representation instance. - Raises: - TraitValidationError: If file locations do not match the - frame list specification - """ from .content import FileLocations file_locs: FileLocations = representation.get_trait( @@ -309,7 +314,15 @@ class Sequence(TraitBase): @staticmethod def list_spec_to_frames(list_spec: str) -> list[int]: - """Convert list specification to frames.""" + """Convert list specification to frames. + + Returns: + list[int]: List of frame numbers. + + Raises: + ValueError: If invalid frame number in the list. + + """ frames = [] segments = list_spec.split(",") for segment in segments: @@ -364,7 +377,12 @@ class Sequence(TraitBase): @staticmethod def get_frame_padding(file_locations: FileLocations) -> int: - """Get frame padding.""" + """Get frame padding. + + Returns: + int: Frame padding. + + """ src_collection = Sequence._get_collection(file_locations) return len(str(max(src_collection.indexes))) @@ -382,6 +400,7 @@ class Sequence(TraitBase): Default clique pattern is:: \.(?P(?P0*)\d+)\.\D+\d?$ + Returns: list[int]: List of frame numbers. @@ -394,6 +413,9 @@ class Sequence(TraitBase): If the regex is string, it will compile it to the pattern. + Returns: + Pattern: Compiled regex pattern. + """ if self.frame_regex: if isinstance(self.frame_regex, str): diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 695ebb54c8..f15c525495 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -57,7 +57,7 @@ class TraitBase(ABC, BaseModel): """Abstract attribute for description.""" ... - def validate_trait(self, representation: Representation) -> None: + def validate_trait(self, representation: Representation) -> None: # noqa: PLR6301 """Validate the trait. This method should be implemented in the derived classes to validate @@ -67,10 +67,6 @@ class TraitBase(ABC, BaseModel): Args: representation (Representation): Representation instance. - Raises: - TraitValidationError: If the trait is invalid - within representation. - """ return @@ -82,6 +78,9 @@ class TraitBase(ABC, BaseModel): This assumes Trait ID ends with `.v{version}`. If not, it will return None. + Returns: + Optional[int]: Trait version + """ version_regex = r"v(\d+)$" match = re.search(version_regex, str(cls.id)) @@ -106,7 +105,7 @@ class IncompatibleTraitVersionError(Exception): """ -class UpgradableTraitError(Generic[T], Exception): +class UpgradableTraitError(Exception, Generic[T]): """Upgradable trait version exception. This exception is raised when the trait can upgrade existing data @@ -118,7 +117,7 @@ class UpgradableTraitError(Generic[T], Exception): old_data: dict -class LooseMatchingTraitError(Generic[T], Exception): +class LooseMatchingTraitError(Exception, Generic[T]): """Loose matching trait exception. This exception is raised when the trait is found with a loose matching diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 62d6693336..77aa5767d6 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -136,7 +136,15 @@ class UDIM(TraitBase): @field_validator("udim_regex") @classmethod def validate_frame_regex(cls, v: Optional[str]) -> Optional[str]: - """Validate udim regex.""" + """Validate udim regex. + + Returns: + Optional[str]: UDIM regex. + + Raises: + ValueError: UDIM regex must include 'udim' named group. + + """ if v is not None and "?P" not in v: msg = "UDIM regex must include 'udim' named group" raise ValueError(msg) diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index 54cc99a261..ef22122124 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -24,6 +24,9 @@ def get_sequence_from_files(paths: list[Path]) -> FrameRanged: Returns: FrameRanged: FrameRanged trait. + Raises: + ValueError: If paths cannot be assembled into one collection + """ cols, rems = assemble([path.as_posix() for path in paths]) if rems: diff --git a/pyproject.toml b/pyproject.toml index ef4e9a72f3..ac291ab636 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,23 +74,31 @@ indent-width = 4 target-version = "py39" [tool.ruff.lint] +preview = true pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["ALL"] ignore = [ - "PTH", + "PTH", + "ANN101", # must be set in older version of ruff "ANN204", "COM812", "S603", "ERA001", "TRY003", - "UP006", # support for older python version (type vs. Type) - "UP007", # ..^ - "UP035", # .. + "UP006", # support for older python version (type vs. Type) + "UP007", # ..^ + "UP035", # .. + "UP045", # Use `X | None` for type annotations "ARG002", - "INP001", # add `__init__.py` to namespaced package - "FIX002", # FIX all TODOs - "TD003", # missing issue link + "INP001", # add `__init__.py` to namespaced package + "FIX002", # FIX all TODOs + "TD003", # missing issue link + "S404", # subprocess module is possibly insecure + "PLC0415", # import must be on top of the file + "CPY001", # missing copyright header + "UP045" + ] # Allow fix for all enabled rules (when `--fix`) is provided. From 73ea4407f1b0d165f8004ce6b747d58aaa7d11cd Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 12 Feb 2025 19:05:25 +0100 Subject: [PATCH 120/626] :sparkles: add mypy and pydantic --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2b9a1fc5ff..65132efcae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,8 @@ pre-commit = "^4.0.0" clique = "^2" pyblish-base = "^1.8" attrs = "^24.2.0" +mypy = "==1.15.0" +pydantic-core = "==2.29.0" [tool.poetry.dev-dependencies] @@ -80,7 +82,7 @@ pydocstyle.convention = "google" select = ["ALL"] ignore = [ "PTH", - "ANN101", # must be set in older version of ruff + # "ANN101", # must be set in older version of ruff "ANN204", "COM812", "S603", From 86ed12ffdc0d4f384822450169ec6985f7b9630e Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 12 Feb 2025 19:05:47 +0100 Subject: [PATCH 121/626] :sparkles: add poetry.lock to ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 41389755f1..d61ed2b119 100644 --- a/.gitignore +++ b/.gitignore @@ -81,5 +81,6 @@ dump.sql .editorconfig .pre-commit-config.yaml mypy.ini +poetry.lock .github_changelog_generator From b14e0d39db35da61541ec68d908c61a7e456d131 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 12 Feb 2025 19:06:18 +0100 Subject: [PATCH 122/626] :recycle: finalize transaction --- .../plugins/publish/integrate_traits.py | 191 +++++++++++++++--- .../plugins/publish/test_integrate_traits.py | 4 +- 2 files changed, 161 insertions(+), 34 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 09b4ca5461..4fe06aa22e 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -3,6 +3,7 @@ from __future__ import annotations import contextlib import copy +import hashlib from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING, Any, List @@ -17,9 +18,14 @@ from ayon_api import ( from ayon_api.operations import ( OperationsSession, new_product_entity, - # new_representation_entity, + new_representation_entity, new_version_entity, ) +from ayon_api.utils import create_entity_id +from ayon_core.lib import source_hash +from ayon_core.lib.file_transaction import ( + FileTransaction, +) from ayon_core.pipeline.publish import ( PublishError, get_publish_template_name, @@ -80,6 +86,35 @@ class TransferItem: template_data: dict[str, Any] representation: Representation + @staticmethod + def get_size(file_path: Path) -> int: + """Get size of the file. + + Args: + file_path (Path): File path. + + Returns: + int: Size of the file. + + """ + return file_path.stat().st_size + + + @staticmethod + def get_checksum(file_path: Path) -> str: + """Get checksum of the file. + + Args: + file_path (Path): File path. + + Returns: + str: Checksum of the file. + + """ + return hashlib.sha256( + file_path.read_bytes() + ).hexdigest() + @dataclass class TemplateItem: @@ -99,7 +134,6 @@ class TemplateItem: template_object: AnatomyTemplateItem - @dataclass class RepresentationEntity: """Representation entity data.""" @@ -174,8 +208,6 @@ def get_changed_attributes( return changes - - class IntegrateTraits(pyblish.api.InstancePlugin): """Integrate representations with traits.""" @@ -234,12 +266,44 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance, representations) # 8) Transfer files + file_transactions = FileTransaction( + log=self.log, + # Enforce unique transfers + allow_queue_replacements=False) for transfer in transfers: self.log.debug( "Transferring file: %s -> %s", transfer.source, transfer.destination ) + file_transactions.add( + transfer.source.as_posix(), + transfer.destination.as_posix(), + mode=FileTransaction.MODE_COPY, + ) + file_transactions.process() + self.log.debug( + "Transferred files %s", [file_transactions.transferred]) + + # 9) Create representation entities + for representation in representations: + representation_entity = new_representation_entity( + representation.name, + version_entity["id"], + files=self._get_legacy_files_for_representation( + transfers, + representation, + anatomy=instance.context.data["anatomy"]), + attribs={}, + data="", + tags=[], + status="", + ) + # add traits to representation entity + representation_entity["traits"] = representation.traits_as_dict() + + # 10) Commit the session to AYON + op_session.commit() def get_transfers_from_representations( self, @@ -329,25 +393,31 @@ class IntegrateTraits(pyblish.api.InstancePlugin): If `originalDirname` or `stagingDir` is set in instance data, this will return it as rootless path. The path must reside within the project directory. + + Returns: + str: Relative path to the root of the project directory. + + Raises: + PublishError: If the path is not within the project directory. + """ original_directory = ( instance.data.get("originalDirname") or instance.data.get("stagingDir")) anatomy = instance.context.data["anatomy"] - _rootless = self.get_rootless_path(anatomy, original_directory) + rootless = self.get_rootless_path(anatomy, original_directory) # this check works because _rootless will be the same as # original_directory if the original_directory cannot be transformed # to the rootless path. - if _rootless == original_directory: + if rootless == original_directory: msg = ( f"Destination path '{original_directory}' must " "be in project directory.") raise PublishError(msg) # the root is at the beginning - {root[work]}/rest/of/the/path - relative_path_start = _rootless.rfind("}") + 2 - return _rootless[relative_path_start:] - + relative_path_start = rootless.rfind("}") + 2 + return rootless[relative_path_start:] # 8) Transfer files # 9) Commit the session to AYON @@ -670,19 +740,37 @@ class IntegrateTraits(pyblish.api.InstancePlugin): self.log.warning(( 'Could not find root path for remapping "%s".' " This may cause issues on farm." - ),path) + ), path) return path def get_attributes_for_type( self, context: pyblish.api.Context, entity_type: str) -> dict: - """Get AYON attributes for the given entity type.""" + """Get AYON attributes for the given entity type. + + Args: + context (pyblish.api.Context): Context to get attributes from. + entity_type (str): Entity type to get attributes for. + + Returns: + dict: AYON attributes for the given entity type. + + """ return self.get_attributes_by_type(context)[entity_type] + @staticmethod def get_attributes_by_type( - self, context: pyblish.api.Context) -> dict: - """Gets AYON attributes from the given context.""" + context: pyblish.api.Context) -> dict: + """Gets AYON attributes from the given context. + + Args: + context (pyblish.api.Context): Context to get attributes from. + + Returns: + dict: AYON attributes. + + """ attributes = context.data.get("ayonAttributes") if attributes is None: attributes = { @@ -749,7 +837,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return template_data - @staticmethod def get_transfers_from_file_locations( representation: Representation, @@ -766,6 +853,9 @@ class IntegrateTraits(pyblish.api.InstancePlugin): transfers (list): List of transfers. template_item (TemplateItem): Template item. + Raises: + PublishError: If representation is invalid. + """ if representation.contains_trait(Sequence): IntegrateTraits.get_transfers_from_sequence( @@ -788,7 +878,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) raise PublishError(msg) - @staticmethod def get_transfers_from_sequence( representation: Representation, @@ -844,8 +933,10 @@ class IntegrateTraits(pyblish.api.InstancePlugin): TransferItem( source=file_loc.file_path, destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, + size=file_loc.file_size or TransferItem.get_size( + file_loc.file_path), + checksum=file_loc.file_hash or TransferItem.get_checksum( + file_loc.file_path), template=template_item.template, template_data=template_item.template_data, representation=representation, @@ -859,7 +950,6 @@ class IntegrateTraits(pyblish.api.InstancePlugin): data=template_item.template_data )) - @staticmethod def get_transfers_from_udim( representation: Representation, @@ -900,8 +990,10 @@ class IntegrateTraits(pyblish.api.InstancePlugin): TransferItem( source=file_loc.file_path, destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, + size=file_loc.file_size or TransferItem.get_size( + file_loc.file_path), + checksum=file_loc.file_hash or TransferItem.get_checksum( + file_loc.file_path), template=template_item.template, template_data=template_item.template_data, representation=representation, @@ -955,8 +1047,10 @@ class IntegrateTraits(pyblish.api.InstancePlugin): TransferItem( source=file_loc.file_path, destination=Path(template_filled), - size=file_loc.file_size, - checksum=file_loc.file_hash, + size=file_loc.file_size or TransferItem.get_size( + file_loc.file_path), + checksum=file_loc.file_hash or TransferItem.get_checksum( + file_loc.file_path), template=template_item.template, template_data=template_item.template_data, representation=representation, @@ -1009,17 +1103,48 @@ class IntegrateTraits(pyblish.api.InstancePlugin): sub_representation, template_item, transfers ) -def create_representation_entity(representation: Representation) -> dict: - """Create representation entity. + def _prepare_file_info( + self, path: Path, anatomy: Anatomy) -> dict[str, Any]: + """Prepare information for one file (asset or resource). - Args: - representation (Representation): Representation to create entity for. + Arguments: + path (Path): Destination url of published file. + anatomy (Anatomy): Project anatomy part from instance. - Returns: - dict: Representation entity. + Returns: + dict[str, Any]: Representation file info dictionary. - """ - return { - "name": representation.name, - "traits": representation.get_traits_data(), - } + """ + return { + "id": create_entity_id(), + "name": path.name, + "path": self.get_rootless_path(anatomy, path.as_posix()), + "size": path.stat().st_size, + "hash": source_hash(path.as_posix()), + "hash_type": "op3", + } + + def _get_legacy_files_for_representation( + self, + transfer_items: list[TransferItem], + representation: Representation, + anatomy: Anatomy, + ) -> list[dict[str, str]]: + """Get legacy files for a given representation. + + Returns: + list: List of legacy files. + + """ + selected: list[TransferItem] = [] + selected.extend( + item + for item in transfer_items + if item.representation == representation + ) + files: list[dict[str, str]] = [] + files.extend( + self._prepare_file_info(item.destination, anatomy) + for item in selected + ) + return files diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 95c0eb52a8..7a0be5ed9d 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -2,6 +2,7 @@ from __future__ import annotations import base64 +import re import time from pathlib import Path @@ -163,7 +164,8 @@ def mock_context( ), Sequence( frame_padding=4, - frame_regex=r"img\.(?P(?P0*)\d{4})\.png$", + frame_regex=re.compile( + r"img\.(?P(?P0*)\d{4})\.png$"), ), FileLocations( file_paths=file_locations, From 8bcab93793de1c35b0da2907eea68a745a70a17f Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 13 Feb 2025 10:05:15 +0100 Subject: [PATCH 123/626] :dog: calm ruff --- client/ayon_core/addon/interfaces.py | 34 +++++++++++++++++-- client/ayon_core/pipeline/traits/lifecycle.py | 10 ++++-- .../pipeline/traits/test_content_traits.py | 9 ++--- .../pipeline/traits/test_time_traits.py | 24 +++++++++++-- .../ayon_core/pipeline/traits/test_traits.py | 30 ++++++++++------ 5 files changed, 87 insertions(+), 20 deletions(-) diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index 303cdf3941..fa7acb6380 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -83,6 +83,10 @@ class IPluginPaths(AYONInterface): """Receive launcher actions paths. Give addons ability to add launcher actions paths. + + Returns: + list[str]: List of launcher action paths. + """ return self._get_plugin_paths_by_type("actions") @@ -98,6 +102,9 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. + Returns: + list[str]: List of create plugin paths. + """ return self._get_plugin_paths_by_type("create") @@ -113,6 +120,9 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. + Returns: + list[str]: List of load plugin paths. + """ return self._get_plugin_paths_by_type("load") @@ -128,6 +138,9 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. + Returns: + list[str]: List of publish plugin paths. + """ return self._get_plugin_paths_by_type("publish") @@ -143,6 +156,9 @@ class IPluginPaths(AYONInterface): Args: host_name (str): For which host are the plugins meant. + Returns: + list[str]: List of inventory action plugin paths. + """ return self._get_plugin_paths_by_type("inventory") @@ -236,7 +252,12 @@ class ITrayAddon(AYONInterface): @staticmethod def admin_submenu(tray_menu: QtWidgets.QMenu) -> QtWidgets.QMenu: - """Get or create admin submenu.""" + """Get or create admin submenu. + + Returns: + QtWidgets.QMenu: Admin submenu. + + """ if ITrayAddon._admin_submenu is None: from qtpy import QtWidgets @@ -248,7 +269,16 @@ class ITrayAddon(AYONInterface): @staticmethod def add_action_to_admin_submenu( label: str, tray_menu: QtWidgets.QMenu) -> QtWidgets.QAction: - """Add action to admin submenu.""" + """Add action to admin submenu. + + Args: + label (str): Label of action. + tray_menu (QtWidgets.QMenu): Tray menu to add action to. + + Returns: + QtWidgets.QAction: Action added to admin submenu + + """ from qtpy import QtWidgets menu = ITrayAddon.admin_submenu(tray_menu) diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index be87a86cbc..2de90824e9 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -26,8 +26,10 @@ class Transient(TraitBase): Args: representation (Representation): Representation model. - Returns: - bool: True if representation is valid, False otherwise. + Raises: + TraitValidationError: If representation is marked as both + Persistent and Transient. + """ if representation.contains_trait(Persistent): msg = "Representation is marked as both Persistent and Transient." @@ -57,6 +59,10 @@ class Persistent(TraitBase): Args: representation (Representation): Representation model. + Raises: + TraitValidationError: If representation is marked + as both Persistent and Transient. + """ if representation.contains_trait(Transient): msg = "Representation is marked as both Persistent and Transient." diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index 78b905bab4..c1c8dcc25d 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -1,6 +1,7 @@ """Tests for the content traits.""" from __future__ import annotations +import re from pathlib import Path import pytest @@ -59,9 +60,9 @@ def test_bundles() -> None: sub_representation = Representation(name="test", traits=item) assert sub_representation.contains_trait(trait=Image) sub: MimeType = sub_representation.get_trait(trait=MimeType) - assert sub.mime_type in [ + assert sub.mime_type in { "image/jpeg", "image/tiff" - ] + } def test_file_locations_validation() -> None: @@ -94,7 +95,7 @@ def test_file_locations_validation() -> None: ) representation.add_trait(frameranged_trait) - # it should still validate fine + # it should still validate fine file_locations_trait.validate_trait(representation) # create empty file locations trait @@ -165,7 +166,7 @@ def test_get_file_location_from_frame() -> None: # test with custom regex sequence = Sequence( frame_padding=4, - frame_regex=r"boo_(?P(?P0*)\d+)\.exr") + frame_regex=re.compile("boo_(?P(?P0*)\d+)\.exr")) file_locations_list = [ FileLocation( file_path=Path(f"/path/to/boo_{frame}.exr"), diff --git a/tests/client/ayon_core/pipeline/traits/test_time_traits.py b/tests/client/ayon_core/pipeline/traits/test_time_traits.py index 100e4ed2b5..28ace89910 100644 --- a/tests/client/ayon_core/pipeline/traits/test_time_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_time_traits.py @@ -1,6 +1,7 @@ """Tests for the time related traits.""" from __future__ import annotations +import re from pathlib import Path import pytest @@ -183,6 +184,26 @@ def test_sequence_validations() -> None: with pytest.raises(TraitValidationError): representation.validate() + representation = Representation(name="test_7", traits=[ + FileLocations(file_paths=[ + FileLocation( + file_path=Path(f"/path/to/file.{frame}.exr"), + file_size=1024, + file_hash=None, + ) + for frame in range(996, 1050 + 1) # because range is zero based + ]), + Sequence( + frame_padding=4, + frame_regex=re.compile( + r"img\.(?P(?P0*)\d{4})\.png$")), + Handles( + frame_start_handle=5, + frame_end_handle=5, + inclusive=False + ) + ]) + representation.validate() def test_list_spec_to_frames() -> None: @@ -204,7 +225,7 @@ def test_list_spec_to_frames() -> None: assert Sequence.list_spec_to_frames("1") == [1] with pytest.raises( ValueError, - match="Invalid frame number in the list: .*"): + match=r"Invalid frame number in the list: .*"): Sequence.list_spec_to_frames("a") @@ -225,4 +246,3 @@ def test_sequence_get_frame_padding() -> None: assert Sequence.get_frame_padding( file_locations=representation.get_trait(FileLocations)) == 4 - diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 42933056fa..b990c074d3 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -36,19 +36,27 @@ REPRESENTATION_DATA: dict = { }, } + class UpgradedImage(Image): """Upgraded image class.""" id = "ayon.2d.Image.v2" @classmethod def upgrade(cls, data: dict) -> UpgradedImage: # noqa: ARG003 - """Upgrade the trait.""" + """Upgrade the trait. + + Returns: + UpgradedImage: Upgraded image instance. + + """ return cls() + class InvalidTrait: """Invalid trait class.""" foo = "bar" + @pytest.fixture def representation() -> Representation: """Return a traits data instance.""" @@ -59,10 +67,11 @@ def representation() -> Representation: Planar(**REPRESENTATION_DATA[Planar.id]), ]) + def test_representation_errors(representation: Representation) -> None: """Test errors in representation.""" with pytest.raises(ValueError, - match="Invalid trait .* - ID is required."): + match=r"Invalid trait .* - ID is required."): representation.add_trait(InvalidTrait()) with pytest.raises(ValueError, @@ -70,9 +79,10 @@ def test_representation_errors(representation: Representation) -> None: representation.add_trait(Image()) with pytest.raises(ValueError, - match="Trait with ID .* not found."): + match=r"Trait with ID .* not found."): representation.remove_trait_by_id("foo") + def test_representation_traits(representation: Representation) -> None: """Test setting and getting traits.""" assert representation.get_trait_by_id( @@ -143,11 +153,12 @@ def test_representation_traits(representation: Representation) -> None: assert representation.contains_traits_by_id( trait_ids=[FileLocation.id, Bundle.id]) is False + def test_trait_removing(representation: Representation) -> None: """Test removing traits.""" - assert representation.contains_trait_by_id("nonexistent") is False + assert representation.contains_trait_by_id("nonexistent") is False with pytest.raises( - ValueError, match="Trait with ID nonexistent not found."): + ValueError, match=r"Trait with ID nonexistent not found."): representation.remove_trait_by_id("nonexistent") assert representation.contains_trait(trait=FileLocation) is True @@ -168,6 +179,7 @@ def test_trait_removing(representation: Representation) -> None: ValueError, match=f"Trait with ID {Image.id} not found."): representation.remove_trait(Image) + def test_representation_dict_properties( representation: Representation) -> None: """Test representation as dictionary.""" @@ -224,6 +236,7 @@ def test_get_version_from_id() -> None: assert TestMimeType(mime_type="foo/bar").get_version() is None + def test_get_versionless_id() -> None: """Test getting versionless trait ID.""" assert Image().get_versionless_id() == "ayon.2d.Image" @@ -271,7 +284,7 @@ def test_from_dict() -> None: }, } - with pytest.raises(ValueError, match="Trait model with ID .* not found."): + with pytest.raises(ValueError, match=r"Trait model with ID .* not found."): representation = Representation.from_dict( "test", trait_data=traits_data) @@ -302,6 +315,7 @@ def test_from_dict() -> None: "test", trait_data=traits_data) """ + def test_representation_equality() -> None: """Test representation equality.""" # rep_a and rep_b are equal @@ -348,7 +362,6 @@ def test_representation_equality() -> None: Planar(planar_configuration="RGBA"), ]) - # lets assume ids are the same (because ids are randomly generated) rep_b.representation_id = rep_d.representation_id = rep_a.representation_id rep_c.representation_id = rep_e.representation_id = rep_a.representation_id @@ -365,6 +378,3 @@ def test_representation_equality() -> None: assert rep_d != rep_e # because of the trait difference assert rep_d != rep_f - - - From dd05199aed2e7df0bf4c5239e8374b23e6fc659d Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 13 Feb 2025 10:08:28 +0100 Subject: [PATCH 124/626] :dog: calm ruff even more --- client/ayon_core/addon/interfaces.py | 38 ++++++++++++++----- .../pipeline/traits/test_content_traits.py | 2 +- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/addon/interfaces.py b/client/ayon_core/addon/interfaces.py index fa7acb6380..51242e1fc1 100644 --- a/client/ayon_core/addon/interfaces.py +++ b/client/ayon_core/addon/interfaces.py @@ -230,8 +230,8 @@ class ITrayAddon(AYONInterface): self, title: str, message: str, - icon: Optional[QtWidgets.QSystemTrayIcon]=None, - msecs: Optional[int]=None) -> None: + icon: Optional[QtWidgets.QSystemTrayIcon] = None, + msecs: Optional[int] = None) -> None: """Show tray message. Args: @@ -325,11 +325,11 @@ class ITrayAction(ITrayAddon): action.triggered.connect(self.on_action_trigger) self._action_item = action - def tray_start(self) -> None: + def tray_start(self) -> None: # noqa: PLR6301 """Start procedure in tray tool.""" return - def tray_exit(self) -> None: + def tray_exit(self) -> None: # noqa: PLR6301 """Cleanup method which is executed on tray shutdown.""" return @@ -357,7 +357,12 @@ class ITrayService(ITrayAddon): @staticmethod def services_submenu(tray_menu: QtWidgets.QMenu) -> QtWidgets.QMenu: - """Get or create services submenu.""" + """Get or create services submenu. + + Returns: + QtWidgets.QMenu: Services submenu. + + """ if ITrayService._services_submenu is None: from qtpy import QtWidgets @@ -390,21 +395,36 @@ class ITrayService(ITrayAddon): @staticmethod def get_icon_running() -> QtWidgets.QIcon: - """Get running icon.""" + """Get running icon. + + Returns: + QtWidgets.QIcon: Returns "running" icon. + + """ if ITrayService._icon_running is None: ITrayService._load_service_icons() return ITrayService._icon_running @staticmethod def get_icon_idle() -> QtWidgets.QIcon: - """Get idle icon.""" + """Get idle icon. + + Returns: + QtWidgets.QIcon: Returns "idle" icon. + + """ if ITrayService._icon_idle is None: ITrayService._load_service_icons() return ITrayService._icon_idle @staticmethod def get_icon_failed() -> QtWidgets.QIcon: - """Get failed icon.""" + """Get failed icon. + + Returns: + QtWidgets.QIcon: Returns "failed" icon. + + """ if ITrayService._icon_failed is None: ITrayService._load_service_icons() return ITrayService._icon_failed @@ -447,7 +467,7 @@ class IHostAddon(AYONInterface): def host_name(self) -> str: """Name of host which addon represents.""" - def get_workfile_extensions(self) -> list[str]: + def get_workfile_extensions(self) -> list[str]: # noqa: PLR6301 """Define workfile extensions for host. Not all hosts support workfiles thus this is optional implementation. diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index c1c8dcc25d..4aa149b8ee 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -166,7 +166,7 @@ def test_get_file_location_from_frame() -> None: # test with custom regex sequence = Sequence( frame_padding=4, - frame_regex=re.compile("boo_(?P(?P0*)\d+)\.exr")) + frame_regex=re.compile(r"boo_(?P(?P0*)\d+)\.exr")) file_locations_list = [ FileLocation( file_path=Path(f"/path/to/boo_{frame}.exr"), From 21d1dae0f5b24a0dd1ebf8968acccb5010fc13ad Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 13 Feb 2025 10:09:51 +0100 Subject: [PATCH 125/626] :dog: calm ruff even even more --- .../ayon_core/pipeline/traits/test_two_dimesional_traits.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py index 328bd83469..f09d2b0864 100644 --- a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py @@ -42,6 +42,7 @@ def test_get_file_location_for_udim() -> None: udim=1001 ) == file_locations_list[0] + def test_get_udim_from_file_location() -> None: """Test get_udim_from_file_location.""" file_location_1 = FileLocation( From 6cf34a854792ffe46451e6a8ee814a3db1a7a458 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 13 Feb 2025 10:57:39 +0100 Subject: [PATCH 126/626] :dog: linting fixes --- .../plugins/publish/integrate_traits.py | 1 - .../plugins/publish/test_integrate_traits.py | 29 ++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 4fe06aa22e..de1bd5fc16 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -99,7 +99,6 @@ class TransferItem: """ return file_path.stat().st_size - @staticmethod def get_checksum(file_path: Path) -> str: """Get checksum of the file. diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 7a0be5ed9d..450cfb5f9f 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -5,10 +5,10 @@ import base64 import re import time from pathlib import Path +from typing import TYPE_CHECKING import pyblish.api import pytest -import pytest_ayon from ayon_api.operations import ( OperationsSession, ) @@ -32,6 +32,9 @@ from ayon_core.pipeline.version_start import get_versioning_start from ayon_core.plugins.publish.integrate_traits import IntegrateTraits from ayon_core.settings import get_project_settings +if TYPE_CHECKING: + import pytest_ayon + PNG_FILE_B64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==" # noqa: E501 SEQUENCE_LENGTH = 10 CURRENT_TIME = time.time() @@ -41,10 +44,10 @@ CURRENT_TIME = time.time() def single_file(tmp_path_factory: pytest.TempPathFactory) -> Path: """Return a temporary image file.""" filename = tmp_path_factory.mktemp("single") / "img.png" - with open(filename, "wb") as f: - f.write(base64.b64decode(PNG_FILE_B64)) + filename.write_bytes(base64.b64decode(PNG_FILE_B64)) return filename + @pytest.fixture(scope="session") def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: """Return a sequence of temporary image files.""" @@ -53,12 +56,12 @@ def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: for i in range(SEQUENCE_LENGTH): frame = i + 1 filename = dir_name / f"img.{frame:04d}.png" - with open(filename, "wb") as f: - f.write(base64.b64decode(PNG_FILE_B64)) + filename.write_bytes(base64.b64decode(PNG_FILE_B64)) files.append(filename) return files -@pytest.fixture() + +@pytest.fixture def mock_context( project: pytest_ayon.ProjectInfo, single_file: Path, @@ -120,10 +123,7 @@ def mock_context( parents = project.folder_entity["path"].lstrip("/").split("/") - hierarchy = "" - if parents: - hierarchy = "/".join(parents) - + hierarchy = "/".join(parents) if parents else "" instance.data["hierarchy"] = hierarchy version_number = get_versioning_start( @@ -137,11 +137,11 @@ def mock_context( instance.data["version"] = version_number - _file_size = len(base64.b64decode(PNG_FILE_B64)) + file_size = len(base64.b64decode(PNG_FILE_B64)) file_locations = [ FileLocation( file_path=f, - file_size=_file_size) + file_size=file_size) for f in sequence_files] instance.data["representations_with_traits"] = [ @@ -181,6 +181,7 @@ def mock_context( return context + def test_get_template_name(mock_context: pyblish.api.Context) -> None: """Test get_template_name. @@ -195,6 +196,7 @@ def test_get_template_name(mock_context: pyblish.api.Context) -> None: assert template_name == "default" + def test_filter_lifecycle() -> None: """Test filter_lifecycle.""" integrator = IntegrateTraits() @@ -241,6 +243,7 @@ def test_prepare_product( "id": project.product_entity["id"], } + def test_prepare_version( project: pytest_ayon.ProjectInfo, mock_context: pyblish.api.Context) -> None: @@ -249,7 +252,7 @@ def test_prepare_version( op_session = OperationsSession() product = integrator.prepare_product(mock_context[0], op_session) version = integrator.prepare_version( - mock_context[0], op_session , product) + mock_context[0], op_session, product) assert version == { "attrib": { From 71b69c4ded6707cd66118332133f30450fc89489 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 13 Feb 2025 11:56:36 +0100 Subject: [PATCH 127/626] :bug: fix padding --- client/ayon_core/pipeline/traits/temporal.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index 286336ea55..ad4b65d8ee 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -384,7 +384,13 @@ class Sequence(TraitBase): """ src_collection = Sequence._get_collection(file_locations) - return len(str(max(src_collection.indexes))) + padding = src_collection.padding + # sometimes Clique doens't get the padding right so + # we need to calculate it manually + if padding == 0: + padding = len(str(max(src_collection.indexes))) + + return padding @staticmethod def get_frame_list( From 575f9c6244fd85fdc4b80d9d5b8376fe76728899 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 14 Feb 2025 13:32:40 +0100 Subject: [PATCH 128/626] :sparkles: add tests for Bundle --- pyproject.toml | 4 +- .../plugins/publish/test_integrate_traits.py | 45 ++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 65132efcae..3e668ca3e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,8 +17,8 @@ pre-commit = "^4.0.0" clique = "^2" pyblish-base = "^1.8" attrs = "^24.2.0" -mypy = "==1.15.0" pydantic-core = "==2.29.0" +speedcopy = "^2.0.0" [tool.poetry.dev-dependencies] @@ -31,7 +31,7 @@ ruff = "^0.9.3" pre-commit = "^4" codespell = "^2.2.6" semver = "^3.0.2" -mypy = "^1.14.0" +mypy = "==1.15.0" [tool.ruff] diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 450cfb5f9f..252556fe29 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -14,6 +14,7 @@ from ayon_api.operations import ( ) from ayon_core.pipeline.anatomy import Anatomy from ayon_core.pipeline.traits import ( + Bundle, FileLocation, FileLocations, FrameRanged, @@ -177,6 +178,44 @@ def mock_context( pixel_aspect_ratio=1.0), MimeType(mime_type="image/png"), ]), + Representation(name="test_bundle", traits=[ + Persistent(), + Bundle( + items=[ + [ + FileLocation( + file_path=single_file, + file_size=len(base64.b64decode(PNG_FILE_B64))), + Image(), + MimeType(mime_type="image/png"), + ], + [ + Persistent(), + FrameRanged( + frame_start=1, + frame_end=SEQUENCE_LENGTH, + frame_in=0, + frame_out=SEQUENCE_LENGTH - 1, + frames_per_second="25", + ), + Sequence( + frame_padding=4, + frame_regex=re.compile( + r"img\.(?P(?P0*)\d{4})\.png$"), + ), + FileLocations( + file_paths=file_locations, + ), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + MimeType(mime_type="image/png"), + ], + ], + ), + ]), ] return context @@ -289,4 +328,8 @@ def test_get_transfers_from_representation( transfers = integrator.get_transfers_from_representations( instance, representations) - assert len(transfers) == 11 + assert len(representations) == 3 + assert len(transfers) == 22 + + for transfer in transfers: + ... From 0f0a987d91c52fb847ee51bf7fee7fd99bf6c7db Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 Feb 2025 17:35:37 +0100 Subject: [PATCH 129/626] :bug: fix dot in extension --- .../plugins/publish/integrate_traits.py | 15 +++++-- .../plugins/publish/test_integrate_traits.py | 41 ++++++++++++++++++- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index de1bd5fc16..72a7ddd479 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -918,8 +918,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_item.template_data["frame"] = frame template_item.template_data["ext"] = ( - file_loc.file_path.suffix - ) + file_loc.file_path.suffix.lstrip(".")) template_filled = path_template_object.format_strict( template_item.template_data ) @@ -1026,7 +1025,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_item.template_object["path"] ) template_item.template_data["ext"] = ( - representation.get_trait(FileLocation).file_path.suffix.rstrip(".") + representation.get_trait(FileLocation).file_path.suffix.lstrip(".") ) template_item.template_data.pop("frame", None) with contextlib.suppress(MissingTraitError): @@ -1110,10 +1109,17 @@ class IntegrateTraits(pyblish.api.InstancePlugin): path (Path): Destination url of published file. anatomy (Anatomy): Project anatomy part from instance. + Raises: + PublishError: If file does not exist. + Returns: dict[str, Any]: Representation file info dictionary. """ + if not path.exists(): + msg = f"File '{path}' does not exist." + raise PublishError(msg) + return { "id": create_entity_id(), "name": path.name, @@ -1131,6 +1137,9 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) -> list[dict[str, str]]: """Get legacy files for a given representation. + This expects the file to exist - it must run after the transfer + is done. + Returns: list: List of legacy files. diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 252556fe29..98f02bdff6 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -12,6 +12,11 @@ import pytest from ayon_api.operations import ( OperationsSession, ) + +from ayon_core.lib.file_transaction import ( + FileTransaction, +) + from ayon_core.pipeline.anatomy import Anatomy from ayon_core.pipeline.traits import ( Bundle, @@ -30,9 +35,20 @@ from ayon_core.pipeline.version_start import get_versioning_start # Tagged, # TemplatePath, -from ayon_core.plugins.publish.integrate_traits import IntegrateTraits +from ayon_core.plugins.publish.integrate_traits import ( + IntegrateTraits, + TransferItem, +) + from ayon_core.settings import get_project_settings +from ayon_api.operations import ( + OperationsSession, + new_product_entity, + new_representation_entity, + new_version_entity, +) + if TYPE_CHECKING: import pytest_ayon @@ -315,6 +331,9 @@ def test_get_transfers_from_representation( mock_context: pyblish.api.Context) -> None: """Test get_transfers_from_representation. + This tests getting actual transfers from the representations and + also the legacy files. + Todo: This test will benefit massively from a proper mocking of the context. We need to parametrize the test with different representations and test the output of the function. @@ -332,4 +351,22 @@ def test_get_transfers_from_representation( assert len(transfers) == 22 for transfer in transfers: - ... + assert transfer.checksum == TransferItem.get_checksum( + transfer.source) + + file_transactions = FileTransaction( + # Enforce unique transfers + allow_queue_replacements=False) + + for transfer in transfers: + file_transactions.add( + transfer.source.as_posix(), + transfer.destination.as_posix(), + mode=FileTransaction.MODE_COPY, + ) + + file_transactions.process() + + for representation in representations: + files = integrator._get_legacy_files_for_representation( # noqa: SLF001 + transfers, representation, anatomy=instance.data["anatomy"]) From 534be2c64e0f2ac0f3355f4d413c3edc0fcde3f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 3 Mar 2025 16:31:26 +0100 Subject: [PATCH 130/626] :recycle: change pydantic models to pure dataclasses --- client/ayon_core/pipeline/traits/README.md | 9 ++- client/ayon_core/pipeline/traits/color.py | 12 ++-- client/ayon_core/pipeline/traits/content.py | 47 ++++++++++------ .../ayon_core/pipeline/traits/cryptography.py | 21 +++---- client/ayon_core/pipeline/traits/lifecycle.py | 16 +++++- client/ayon_core/pipeline/traits/meta.py | 54 +++++++++++------- client/ayon_core/pipeline/traits/temporal.py | 55 ++++++++++--------- .../pipeline/traits/three_dimensional.py | 19 +++++-- client/ayon_core/pipeline/traits/trait.py | 23 +------- .../pipeline/traits/two_dimensional.py | 42 +++++++++----- client/pyproject.toml | 1 - pyproject.toml | 1 - 12 files changed, 174 insertions(+), 126 deletions(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index aa38d30a8e..1566b4f353 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -184,10 +184,13 @@ to different packages based on their use: | | Overscan | holds overscan/underscan information (added pixels to bottom/sides) | | UDIM | Representation is UDIM tile set -Traits are [Pydantic models](https://docs.pydantic.dev/latest/) with optional +Traits are Python data classes with optional validation and helper methods. If they implement `TraitBase.validate(Representation)` method, they can validate against all other traits -in the representation if needed. They can also implement pydantic form of -data validators. +in the representation if needed. + +> [!NOTE] +> They could be easily converted to [Pydantic models](https://docs.pydantic.dev/latest/) but since this must run in diverse Python environments inside DCC, we cannot +> easily resolve pydantic-core dependency (as it is binary written in Rust). > [!NOTE] > Every trait has id, name and some human readable description. Every trait diff --git a/client/ayon_core/pipeline/traits/color.py b/client/ayon_core/pipeline/traits/color.py index b816593624..491131c8bc 100644 --- a/client/ayon_core/pipeline/traits/color.py +++ b/client/ayon_core/pipeline/traits/color.py @@ -1,13 +1,13 @@ """Color management related traits.""" from __future__ import annotations +from dataclasses import dataclass from typing import ClassVar, Optional -from pydantic import Field - from .trait import TraitBase +@dataclass class ColorManaged(TraitBase): """Color managed trait. @@ -24,9 +24,7 @@ class ColorManaged(TraitBase): id: ClassVar[str] = "ayon.color.ColorManaged.v1" name: ClassVar[str] = "ColorManaged" + color_space: str description: ClassVar[str] = "Color Managed trait." - color_space: str = Field( - ..., - description="Color space." - ) - config: Optional[str] = Field(default=None, description="Color config.") + persistent: ClassVar[bool] = True + config: Optional[str] = None diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 4ee63b2b08..9bb43fcdb3 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -3,13 +3,12 @@ from __future__ import annotations import contextlib import re +from dataclasses import dataclass # TC003 is there because Path in TYPECHECKING will fail in tests from pathlib import Path # noqa: TC003 from typing import ClassVar, Generator, Optional -from pydantic import Field - from .representation import Representation from .temporal import FrameRanged, Handles, Sequence from .trait import ( @@ -21,6 +20,7 @@ from .two_dimensional import UDIM from .utils import get_sequence_from_files +@dataclass class MimeType(TraitBase): """MimeType trait model. @@ -40,9 +40,11 @@ class MimeType(TraitBase): name: ClassVar[str] = "MimeType" description: ClassVar[str] = "MimeType Trait Model" id: ClassVar[str] = "ayon.content.MimeType.v1" - mime_type: str = Field(..., title="Mime Type") + persistent: ClassVar[bool] = True + mime_type: str +@dataclass class LocatableContent(TraitBase): """LocatableContent trait model. @@ -57,15 +59,18 @@ class LocatableContent(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version location (str): Location. + is_templated (Optional[bool]): Is the location templated? Default is None. """ name: ClassVar[str] = "LocatableContent" description: ClassVar[str] = "LocatableContent Trait Model" id: ClassVar[str] = "ayon.content.LocatableContent.v1" - location: str = Field(..., title="Location") - is_templated: Optional[bool] = Field(default=None, title="Is Templated") + persistent: ClassVar[bool] = True + location: str + is_templated: Optional[bool] = None +@dataclass class FileLocation(TraitBase): """FileLocation trait model. @@ -78,18 +83,20 @@ class FileLocation(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version file_path (str): File path. - file_size (int): File size in bytes. - file_hash (str): File hash. + file_size (Optional[int]): File size in bytes. + file_hash (Optional[str]): File hash. """ name: ClassVar[str] = "FileLocation" description: ClassVar[str] = "FileLocation Trait Model" id: ClassVar[str] = "ayon.content.FileLocation.v1" - file_path: Path = Field(..., title="File Path") - file_size: Optional[int] = Field(default=None, title="File Size") - file_hash: Optional[str] = Field(default=None, title="File Hash") + persistent: ClassVar[bool] = True + file_path: Path + file_size: Optional[int] = None + file_hash: Optional[str] = None +@dataclass class FileLocations(TraitBase): """FileLocation trait model. @@ -108,7 +115,8 @@ class FileLocations(TraitBase): name: ClassVar[str] = "FileLocations" description: ClassVar[str] = "FileLocations Trait Model" id: ClassVar[str] = "ayon.content.FileLocations.v1" - file_paths: list[FileLocation] = Field(..., title="File Path") + persistent: ClassVar[bool] = True + file_paths: list[FileLocation] def get_files(self) -> Generator[Path, None, None]: """Get all file paths from the trait. @@ -340,6 +348,7 @@ class FileLocations(TraitBase): return frame_start_with_handles, frame_end_with_handles +@dataclass class RootlessLocation(TraitBase): """RootlessLocation trait model. @@ -363,9 +372,11 @@ class RootlessLocation(TraitBase): name: ClassVar[str] = "RootlessLocation" description: ClassVar[str] = "RootlessLocation Trait Model" id: ClassVar[str] = "ayon.content.RootlessLocation.v1" - rootless_path: str = Field(..., title="File Path") + persistent: ClassVar[bool] = True + rootless_path: str +@dataclass class Compressed(TraitBase): """Compressed trait model. @@ -386,9 +397,11 @@ class Compressed(TraitBase): name: ClassVar[str] = "Compressed" description: ClassVar[str] = "Compressed Trait" id: ClassVar[str] = "ayon.content.Compressed.v1" - compression_type: str = Field(..., title="Compression Type") + persistent: ClassVar[bool] = True + compression_type: str +@dataclass class Bundle(TraitBase): """Bundle trait model. @@ -424,8 +437,8 @@ class Bundle(TraitBase): name: ClassVar[str] = "Bundle" description: ClassVar[str] = "Bundle Trait" id: ClassVar[str] = "ayon.content.Bundle.v1" - items: list[list[TraitBase]] = Field( - ..., title="Bundles of traits") + persistent: ClassVar[bool] = True + items: list[list[TraitBase]] def to_representations(self) -> Generator[Representation]: """Convert bundle to representations. @@ -438,6 +451,7 @@ class Bundle(TraitBase): yield Representation(name=f"{self.name} {idx}", traits=item) +@dataclass class Fragment(TraitBase): """Fragment trait model. @@ -466,4 +480,5 @@ class Fragment(TraitBase): name: ClassVar[str] = "Fragment" description: ClassVar[str] = "Fragment Trait" id: ClassVar[str] = "ayon.content.Fragment.v1" - parent: str = Field(..., title="Parent Representation Id") + persistent: ClassVar[bool] = True + parent: str diff --git a/client/ayon_core/pipeline/traits/cryptography.py b/client/ayon_core/pipeline/traits/cryptography.py index 3719f3dbbf..d9445bd543 100644 --- a/client/ayon_core/pipeline/traits/cryptography.py +++ b/client/ayon_core/pipeline/traits/cryptography.py @@ -1,13 +1,13 @@ """Cryptography traits.""" from __future__ import annotations +from dataclasses import dataclass from typing import ClassVar, Optional -from pydantic import Field - from .trait import TraitBase +@dataclass class DigitallySigned(TraitBase): """Digitally signed trait. @@ -20,25 +20,22 @@ class DigitallySigned(TraitBase): id: ClassVar[str] = "ayon.cryptography.DigitallySigned.v1" name: ClassVar[str] = "DigitallySigned" description: ClassVar[str] = "Digitally signed trait." + persistent: ClassVar[bool] = True - +@dataclass class PGPSigned(DigitallySigned): """PGP signed trait. This trait holds PGP (RFC-4880) signed data. Attributes: - signature (str): PGP signature. + signed_data (str): Signed data. + clear_text (str): Clear text. """ id: ClassVar[str] = "ayon.cryptography.PGPSigned.v1" name: ClassVar[str] = "PGPSigned" description: ClassVar[str] = "PGP signed trait." - signed_data: str = Field( - ..., - description="Signed data." - ) - clear_text: Optional[str] = Field( - None, - description="Clear text." - ) + persistent: ClassVar[bool] = True + signed_data: str + clear_text: Optional[str] = None diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index be87a86cbc..6f38525c47 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -1,9 +1,11 @@ """Lifecycle traits.""" +from dataclasses import dataclass from typing import ClassVar from .trait import TraitBase, TraitValidationError +@dataclass class Transient(TraitBase): """Transient trait model. @@ -19,6 +21,7 @@ class Transient(TraitBase): name: ClassVar[str] = "Transient" description: ClassVar[str] = "Transient Trait Model" id: ClassVar[str] = "ayon.lifecycle.Transient.v1" + persistent: ClassVar[bool] = True # see note in Persistent def validate_trait(self, representation) -> None: # noqa: ANN001 """Validate representation is not Persistent. @@ -26,14 +29,16 @@ class Transient(TraitBase): Args: representation (Representation): Representation model. - Returns: - bool: True if representation is valid, False otherwise. + Raises: + TraitValidationError: If representation is marked as both + """ if representation.contains_trait(Persistent): msg = "Representation is marked as both Persistent and Transient." raise TraitValidationError(self.name, msg) +@dataclass class Persistent(TraitBase): """Persistent trait model. @@ -50,6 +55,10 @@ class Persistent(TraitBase): name: ClassVar[str] = "Persistent" description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" + # note that this affects persistence of the trait itself, not + # the representation. This is a class variable, so it is shared + # among all instances of the class. + persistent: bool = True def validate_trait(self, representation) -> None: # noqa: ANN001 """Validate representation is not Transient. @@ -57,6 +66,9 @@ class Persistent(TraitBase): Args: representation (Representation): Representation model. + Raises: + TraitValidationError: If representation is marked as both + """ if representation.contains_trait(Transient): msg = "Representation is marked as both Persistent and Transient." diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 0f8c175af5..3bf4a87a0b 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -1,13 +1,13 @@ """Metadata traits.""" from __future__ import annotations +from dataclasses import dataclass from typing import ClassVar, List, Optional -from pydantic import Field - from .trait import TraitBase +@dataclass class Tagged(TraitBase): """Tagged trait model. @@ -27,9 +27,11 @@ class Tagged(TraitBase): name: ClassVar[str] = "Tagged" description: ClassVar[str] = "Tagged Trait Model" id: ClassVar[str] = "ayon.meta.Tagged.v1" - tags: List[str] = Field(..., title="Tags") + persistent: ClassVar[bool] = True + tags: List[str] +@dataclass class TemplatePath(TraitBase): """TemplatePath trait model. @@ -51,10 +53,12 @@ class TemplatePath(TraitBase): name: ClassVar[str] = "TemplatePath" description: ClassVar[str] = "Template Path Trait Model" id: ClassVar[str] = "ayon.meta.TemplatePath.v1" - template: str = Field(..., title="Template Path") - data: dict = Field(..., title="Formatting Data") + persistent: ClassVar[bool] = True + template: str + data: dict +@dataclass class Variant(TraitBase): """Variant trait model. @@ -75,9 +79,11 @@ class Variant(TraitBase): name: ClassVar[str] = "Variant" description: ClassVar[str] = "Variant Trait Model" id: ClassVar[str] = "ayon.meta.Variant.v1" - variant: str = Field(..., title="Variant") + persistent: ClassVar[bool] = True + variant: str +@dataclass class KeepOriginalLocation(TraitBase): """Keep files in its original location. @@ -88,9 +94,10 @@ class KeepOriginalLocation(TraitBase): name: ClassVar[str] = "KeepOriginalLocation" description: ClassVar[str] = "Keep Original Location Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalLocation.v1" - persistent: bool = Field(default=False, title="Persistent") + persistent: ClassVar[bool] = False +@dataclass class KeepOriginalName(TraitBase): """Keep files in its original name. @@ -101,9 +108,10 @@ class KeepOriginalName(TraitBase): name: ClassVar[str] = "KeepOriginalName" description: ClassVar[str] = "Keep Original Name Trait Model" id: ClassVar[str] = "ayon.meta.KeepOriginalName.v1" - persistent: bool = Field(default=False, title="Persistent") + persistent: ClassVar[bool] = False +@dataclass class SourceApplication(TraitBase): """Metadata about the source (producing) application. @@ -115,22 +123,26 @@ class SourceApplication(TraitBase): Note that this is not really connected to any logic in ayon-applications addon. + Attributes: + application (str): Application name. + variant (str): Application variant. + version (str): Application version. + platform (str): Platform name (Windows, darwin, etc.). + host_name (str): AYON host name if applicable. """ name: ClassVar[str] = "SourceApplication" description: ClassVar[str] = "Source Application Trait Model" id: ClassVar[str] = "ayon.meta.SourceApplication.v1" - application: str = Field(..., title="Application Name") - variant: Optional[str] = Field( - None, title="Application Variant (e.g. Pro)") - version: Optional[str] = Field( - None, title="Application Version") - platform: Optional[str] = Field( - None, title="Platform Name (e.g. Windows)") - host_name: Optional[str] = Field( - None, title="AYON host Name if applicable") + persistent: ClassVar[bool] = True + application: str + variant: Optional[str] = None + version: Optional[str] = None + platform: Optional[str] = None + host_name: Optional[str] = None +@dataclass class IntendedUse(TraitBase): """Intended use of the representation. @@ -138,9 +150,13 @@ class IntendedUse(TraitBase): can be used in cases, where the other traits are not enough to describe the intended use. For example txt file with tracking points can be used as corner pin in After Effect but not in Nuke. - """ + Attributes: + use (str): Intended use description. + + """ name: ClassVar[str] = "IntendedUse" description: ClassVar[str] = "Intended Use Trait Model" id: ClassVar[str] = "ayon.meta.IntendedUse.v1" - use: str = Field(..., title="Intended Use") + persistent: ClassVar[bool] = True + use: str diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index 286336ea55..75025da02b 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -3,12 +3,12 @@ from __future__ import annotations import contextlib import re +from dataclasses import dataclass from enum import Enum, auto from re import Pattern from typing import TYPE_CHECKING, ClassVar, Optional import clique -from pydantic import Field, field_validator from .trait import MissingTraitError, TraitBase, TraitValidationError @@ -36,6 +36,7 @@ class GapPolicy(Enum): black = auto() +@dataclass class FrameRanged(TraitBase): """Frame ranged trait model. @@ -70,16 +71,16 @@ class FrameRanged(TraitBase): name: ClassVar[str] = "FrameRanged" description: ClassVar[str] = "Frame Ranged Trait" id: ClassVar[str] = "ayon.time.FrameRanged.v1" - frame_start: int = Field( - ..., title="Start Frame") - frame_end: int = Field( - ..., title="Frame Start") - frame_in: Optional[int] = Field(default=None, title="In Frame") - frame_out: Optional[int] = Field(default=None, title="Out Frame") - frames_per_second: str = Field(..., title="Frames Per Second") - step: Optional[int] = Field(default=1, title="Step") + persistent: ClassVar[bool] = True + frame_start: int + frame_end: int + frame_in: Optional[int] = None + frame_out: Optional[int] = None + frames_per_second: str = None + step: Optional[int] = None +@dataclass class Handles(TraitBase): """Handles trait model. @@ -98,14 +99,13 @@ class Handles(TraitBase): name: ClassVar[str] = "Handles" description: ClassVar[str] = "Handles Trait" id: ClassVar[str] = "ayon.time.Handles.v1" - inclusive: Optional[bool] = Field( - False, title="Handles are inclusive") # noqa: FBT003 - frame_start_handle: Optional[int] = Field( - 0, title="Frame Start Handle") - frame_end_handle: Optional[int] = Field( - 0, title="Frame End Handle") + persistent: ClassVar[bool] = True + inclusive: Optional[bool] = False + frame_start_handle: Optional[int] = None + frame_end_handle: Optional[int] = None +@dataclass class Sequence(TraitBase): """Sequence trait model. @@ -130,15 +130,12 @@ class Sequence(TraitBase): name: ClassVar[str] = "Sequence" description: ClassVar[str] = "Sequence Trait Model" id: ClassVar[str] = "ayon.time.Sequence.v1" - gaps_policy: Optional[GapPolicy] = Field( - default=GapPolicy.forbidden, title="Gaps Policy") - frame_padding: int = Field(..., title="Frame Padding") - frame_regex: Optional[Pattern] = Field( - default=None, title="Frame Regex") - frame_spec: Optional[str] = Field(default=None, - title="Frame Specification") + persistent: ClassVar[bool] = True + frame_padding: int + gaps_policy: Optional[GapPolicy] = GapPolicy.forbidden + frame_regex: Optional[Pattern] = None + frame_spec: Optional[str] = None - @field_validator("frame_regex") @classmethod def validate_frame_regex( cls, v: Optional[Pattern] @@ -426,15 +423,22 @@ class Sequence(TraitBase): # Do we need one for drop and non-drop frame? +@dataclass class SMPTETimecode(TraitBase): - """SMPTE Timecode trait model.""" + """SMPTE Timecode trait model. + + Attributes: + timecode (str): SMPTE Timecode HH:MM:SS:FF + """ name: ClassVar[str] = "Timecode" description: ClassVar[str] = "SMPTE Timecode Trait" id: ClassVar[str] = "ayon.time.SMPTETimecode.v1" - timecode: str = Field(..., title="SMPTE Timecode HH:MM:SS:FF") + persistent: ClassVar[bool] = True + timecode: str +@dataclass class Static(TraitBase): """Static time trait. @@ -444,3 +448,4 @@ class Static(TraitBase): name: ClassVar[str] = "Static" description: ClassVar[str] = "Static Time Trait" id: ClassVar[str] = "ayon.time.Static.v1" + persistent: ClassVar[bool] = True diff --git a/client/ayon_core/pipeline/traits/three_dimensional.py b/client/ayon_core/pipeline/traits/three_dimensional.py index 67f4415f73..d68fb99e61 100644 --- a/client/ayon_core/pipeline/traits/three_dimensional.py +++ b/client/ayon_core/pipeline/traits/three_dimensional.py @@ -1,11 +1,11 @@ """3D traits.""" +from dataclasses import dataclass from typing import ClassVar -from pydantic import Field - from .trait import TraitBase +@dataclass class Spatial(TraitBase): """Spatial trait model. @@ -29,11 +29,13 @@ class Spatial(TraitBase): id: ClassVar[str] = "ayon.3d.Spatial.v1" name: ClassVar[str] = "Spatial" description: ClassVar[str] = "Spatial trait model." - up_axis: str = Field(..., title="Up axis") - handedness: str = Field(..., title="Handedness") - meters_per_unit: float = Field(..., title="Meters per unit") + persistent: ClassVar[bool] = True + up_axis: str + handedness: str + meters_per_unit: float +@dataclass class Geometry(TraitBase): """Geometry type trait model. @@ -45,8 +47,10 @@ class Geometry(TraitBase): id: ClassVar[str] = "ayon.3d.Geometry.v1" name: ClassVar[str] = "Geometry" description: ClassVar[str] = "Geometry trait model." + persistent: ClassVar[bool] = True +@dataclass class Shader(TraitBase): """Shader trait model. @@ -58,8 +62,10 @@ class Shader(TraitBase): id: ClassVar[str] = "ayon.3d.Shader.v1" name: ClassVar[str] = "Shader" description: ClassVar[str] = "Shader trait model." + persistent: ClassVar[bool] = True +@dataclass class Lighting(TraitBase): """Lighting trait model. @@ -71,8 +77,10 @@ class Lighting(TraitBase): id: ClassVar[str] = "ayon.3d.Lighting.v1" name: ClassVar[str] = "Lighting" description: ClassVar[str] = "Lighting trait model." + persistent: ClassVar[bool] = True +@dataclass class IESProfile(TraitBase): """IES profile (IES-LM-64) type trait model. @@ -82,3 +90,4 @@ class IESProfile(TraitBase): id: ClassVar[str] = "ayon.3d.IESProfile.v1" name: ClassVar[str] = "IESProfile" description: ClassVar[str] = "IES profile trait model." + persistent: ClassVar[bool] = True diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index f15c525495..01a7641c59 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -3,16 +3,9 @@ from __future__ import annotations import re from abc import ABC, abstractmethod +from dataclasses import dataclass from typing import TYPE_CHECKING, Generic, Optional, TypeVar -import pydantic.alias_generators -from pydantic import ( - AliasGenerator, - BaseModel, - ConfigDict, - Field, -) - if TYPE_CHECKING: from .representation import Representation @@ -20,25 +13,15 @@ if TYPE_CHECKING: T = TypeVar("T", bound="TraitBase") -class TraitBase(ABC, BaseModel): +@dataclass +class TraitBase(ABC): """Base trait model. This model must be used as a base for all trait models. - It is using Pydantic BaseModel for serialization and validation. ``id``, ``name``, and ``description`` are abstract attributes that must be implemented in the derived classes. """ - model_config = ConfigDict( - alias_generator=AliasGenerator( - serialization_alias=pydantic.alias_generators.to_camel, - ) - ) - - persistent: bool = Field( - default=True, title="Persistent", - description="Whether the trait is persistent (integrated) or not.") - @property @abstractmethod def id(self) -> str: diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 77aa5767d6..93d7d8c86a 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -2,16 +2,16 @@ from __future__ import annotations import re +from dataclasses import dataclass from typing import TYPE_CHECKING, ClassVar, Optional -from pydantic import Field, field_validator - from .trait import TraitBase if TYPE_CHECKING: from .content import FileLocation, FileLocations +@dataclass class Image(TraitBase): """Image trait model. @@ -26,8 +26,10 @@ class Image(TraitBase): name: ClassVar[str] = "Image" description: ClassVar[str] = "Image Trait" id: ClassVar[str] = "ayon.2d.Image.v1" + persistent: ClassVar[bool] = True +@dataclass class PixelBased(TraitBase): """PixelBased trait model. @@ -45,11 +47,13 @@ class PixelBased(TraitBase): name: ClassVar[str] = "PixelBased" description: ClassVar[str] = "PixelBased Trait Model" id: ClassVar[str] = "ayon.2d.PixelBased.v1" - display_window_width: int = Field(..., title="Display Window Width") - display_window_height: int = Field(..., title="Display Window Height") - pixel_aspect_ratio: float = Field(..., title="Pixel Aspect Ratio") + persistent: ClassVar[bool] = True + display_window_width: int + display_window_height: int + pixel_aspect_ratio: float +@dataclass class Planar(TraitBase): """Planar trait model. @@ -57,7 +61,7 @@ class Planar(TraitBase): Todo: * (antirotor): Is this really a planar configuration? As with - bitplanes and everything? If it serves as differentiator for + bit planes and everything? If it serves as differentiator for Deep images, should it be named differently? Like Raster? Attributes: @@ -70,9 +74,11 @@ class Planar(TraitBase): name: ClassVar[str] = "Planar" description: ClassVar[str] = "Planar Trait Model" id: ClassVar[str] = "ayon.2d.Planar.v1" - planar_configuration: str = Field(..., title="Planar-based Image") + persistent: ClassVar[bool] = True + planar_configuration: str +@dataclass class Deep(TraitBase): """Deep trait model. @@ -87,8 +93,10 @@ class Deep(TraitBase): name: ClassVar[str] = "Deep" description: ClassVar[str] = "Deep Trait Model" id: ClassVar[str] = "ayon.2d.Deep.v1" + persistent: ClassVar[bool] = True +@dataclass class Overscan(TraitBase): """Overscan trait model. @@ -108,12 +116,14 @@ class Overscan(TraitBase): name: ClassVar[str] = "Overscan" description: ClassVar[str] = "Overscan Trait" id: ClassVar[str] = "ayon.2d.Overscan.v1" - left: int = Field(..., title="Left Overscan") - right: int = Field(..., title="Right Overscan") - top: int = Field(..., title="Top Overscan") - bottom: int = Field(..., title="Bottom Overscan") + persistent: ClassVar[bool] = True + left: int + right: int + top: int + bottom: int +@dataclass class UDIM(TraitBase): """UDIM trait model. @@ -124,16 +134,18 @@ class UDIM(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version udim (int): UDIM value. + udim_regex (str): UDIM regex. """ name: ClassVar[str] = "UDIM" description: ClassVar[str] = "UDIM Trait" id: ClassVar[str] = "ayon.2d.UDIM.v1" - udim: list[int] = Field(..., title="UDIM") - udim_regex: Optional[str] = Field( - default=r"(?:\.|_)(?P\d+)\.\D+\d?$", title="UDIM Regex") + persistent: ClassVar[bool] = True + udim: list[int] + udim_regex: Optional[str] = r"(?:\.|_)(?P\d+)\.\D+\d?$" - @field_validator("udim_regex") + # field validator for udim_regex - this works in pydantic model v2 but not + # with the pure data classes @classmethod def validate_frame_regex(cls, v: Optional[str]) -> Optional[str]: """Validate udim regex. diff --git a/client/pyproject.toml b/client/pyproject.toml index d61baee2c4..edf7f57317 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -10,7 +10,6 @@ pyblish-base = "^1.8.11" speedcopy = "^2.1" six = "^1.15" qtawesome = "0.7.3" -pydantic = "^2.9.2" [ayon.runtimeDependencies] aiohttp-middlewares = "^2.0.0" diff --git a/pyproject.toml b/pyproject.toml index ac291ab636..c8256adfca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ readme = "README.md" [tool.poetry.dependencies] python = ">=3.9.1,<3.10" -pydantic = "^2.9.2" pre-commit = "^4.0.0" clique = "^2" pyblish-base = "^1.8" From d0e591067156b381c3ced96ed6703b013aeced7d Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 12 Mar 2025 17:47:21 +0100 Subject: [PATCH 131/626] Remove long deprecated `LoaderPlugin.fname` property Make sure to remove all usages of `self.fname` from any `LoaderPlugin` in your addons --- client/ayon_core/pipeline/load/plugins.py | 13 ------------- client/ayon_core/pipeline/load/utils.py | 6 ------ 2 files changed, 19 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 1fb906fd65..6075916369 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -229,19 +229,6 @@ class LoaderPlugin(list): """ return cls.options or [] - @property - def fname(self): - """Backwards compatibility with deprecation warning""" - - self.log.warning(( - "DEPRECATION WARNING: Source - Loader plugin {}." - " The 'fname' property on the Loader plugin will be removed in" - " future versions of OpenPype. Planned version to drop the support" - " is 3.16.6 or 3.17.0." - ).format(self.__class__.__name__)) - if hasattr(self, "_fname"): - return self._fname - @classmethod def get_representation_name_aliases(cls, representation_name: str): """Return representation names to which switching is allowed from diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index de8e1676e7..b130161190 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -316,12 +316,6 @@ def load_with_repre_context( ) loader = Loader() - - # Backwards compatibility: Originally the loader's __init__ required the - # representation context to set `fname` attribute to the filename to load - # Deprecated - to be removed in OpenPype 3.16.6 or 3.17.0. - loader._fname = get_representation_path_from_context(repre_context) - return loader.load(repre_context, name, namespace, options) From ffc76e639a5d516140950da3c9a2c3a9d305c773 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 12 Mar 2025 21:50:06 +0100 Subject: [PATCH 132/626] Remove deprecated `convert_for_ffmpeg` --- client/ayon_core/lib/__init__.py | 2 - client/ayon_core/lib/transcoding.py | 135 +--------------------------- 2 files changed, 2 insertions(+), 135 deletions(-) diff --git a/client/ayon_core/lib/__init__.py b/client/ayon_core/lib/__init__.py index 03ed574081..0c64b88d11 100644 --- a/client/ayon_core/lib/__init__.py +++ b/client/ayon_core/lib/__init__.py @@ -97,7 +97,6 @@ from .profiles_filtering import ( from .transcoding import ( get_transcode_temp_directory, should_convert_for_ffmpeg, - convert_for_ffmpeg, convert_input_paths_for_ffmpeg, get_ffprobe_data, get_ffprobe_streams, @@ -196,7 +195,6 @@ __all__ = [ "get_transcode_temp_directory", "should_convert_for_ffmpeg", - "convert_for_ffmpeg", "convert_input_paths_for_ffmpeg", "get_ffprobe_data", "get_ffprobe_streams", diff --git a/client/ayon_core/lib/transcoding.py b/client/ayon_core/lib/transcoding.py index 1fda014bd8..c4030b3f97 100644 --- a/client/ayon_core/lib/transcoding.py +++ b/client/ayon_core/lib/transcoding.py @@ -526,137 +526,6 @@ def should_convert_for_ffmpeg(src_filepath): return False -# Deprecated since 2022 4 20 -# - Reason - Doesn't convert sequences right way: Can't handle gaps, reuse -# first frame for all frames and changes filenames when input -# is sequence. -# - use 'convert_input_paths_for_ffmpeg' instead -def convert_for_ffmpeg( - first_input_path, - output_dir, - input_frame_start=None, - input_frame_end=None, - logger=None -): - """Convert source file to format supported in ffmpeg. - - Currently can convert only exrs. - - Args: - first_input_path (str): Path to first file of a sequence or a single - file path for non-sequential input. - output_dir (str): Path to directory where output will be rendered. - Must not be same as input's directory. - input_frame_start (int): Frame start of input. - input_frame_end (int): Frame end of input. - logger (logging.Logger): Logger used for logging. - - Raises: - ValueError: If input filepath has extension not supported by function. - Currently is supported only ".exr" extension. - """ - if logger is None: - logger = logging.getLogger(__name__) - - logger.warning(( - "DEPRECATED: 'ayon_core.lib.transcoding.convert_for_ffmpeg' is" - " deprecated function of conversion for FFMpeg. Please replace usage" - " with 'ayon_core.lib.transcoding.convert_input_paths_for_ffmpeg'" - )) - - ext = os.path.splitext(first_input_path)[1].lower() - if ext != ".exr": - raise ValueError(( - "Function 'convert_for_ffmpeg' currently support only" - " \".exr\" extension. Got \"{}\"." - ).format(ext)) - - is_sequence = False - if input_frame_start is not None and input_frame_end is not None: - is_sequence = int(input_frame_end) != int(input_frame_start) - - input_info = get_oiio_info_for_input(first_input_path, logger=logger) - - # Change compression only if source compression is "dwaa" or "dwab" - # - they're not supported in ffmpeg - compression = input_info["attribs"].get("compression") - if compression in ("dwaa", "dwab"): - compression = "none" - - # Prepare subprocess arguments - oiio_cmd = get_oiio_tool_args( - "oiiotool", - # Don't add any additional attributes - "--nosoftwareattrib", - ) - # Add input compression if available - if compression: - oiio_cmd.extend(["--compression", compression]) - - # Collect channels to export - input_arg, channels_arg = get_oiio_input_and_channel_args(input_info) - - oiio_cmd.extend([ - input_arg, first_input_path, - # Tell oiiotool which channels should be put to top stack (and output) - "--ch", channels_arg, - # Use first subimage - "--subimage", "0" - ]) - - # Add frame definitions to arguments - if is_sequence: - oiio_cmd.extend([ - "--frames", "{}-{}".format(input_frame_start, input_frame_end) - ]) - - for attr_name, attr_value in input_info["attribs"].items(): - if not isinstance(attr_value, str): - continue - - # Remove attributes that have string value longer than allowed length - # for ffmpeg or when contain prohibited symbols - erase_reason = "Missing reason" - erase_attribute = False - if len(attr_value) > MAX_FFMPEG_STRING_LEN: - erase_reason = "has too long value ({} chars).".format( - len(attr_value) - ) - erase_attribute = True - - if not erase_attribute: - for char in NOT_ALLOWED_FFMPEG_CHARS: - if char in attr_value: - erase_attribute = True - erase_reason = ( - "contains unsupported character \"{}\"." - ).format(char) - break - - if erase_attribute: - # Set attribute to empty string - logger.info(( - "Removed attribute \"{}\" from metadata because {}." - ).format(attr_name, erase_reason)) - oiio_cmd.extend(["--eraseattrib", attr_name]) - - # Add last argument - path to output - if is_sequence: - ext = os.path.splitext(first_input_path)[1] - base_filename = "tmp.%{:0>2}d{}".format( - len(str(input_frame_end)), ext - ) - else: - base_filename = os.path.basename(first_input_path) - output_path = os.path.join(output_dir, base_filename) - oiio_cmd.extend([ - "-o", output_path - ]) - - logger.debug("Conversion command: {}".format(" ".join(oiio_cmd))) - run_subprocess(oiio_cmd, logger=logger) - - def convert_input_paths_for_ffmpeg( input_paths, output_dir, @@ -664,7 +533,7 @@ def convert_input_paths_for_ffmpeg( ): """Convert source file to format supported in ffmpeg. - Currently can convert only exrs. The input filepaths should be files + Can currently convert only EXRs. The input filepaths should be files with same type. Information about input is loaded only from first found file. @@ -692,7 +561,7 @@ def convert_input_paths_for_ffmpeg( if ext != ".exr": raise ValueError(( - "Function 'convert_for_ffmpeg' currently support only" + "Function 'convert_input_paths_for_ffmpeg' currently only supports" " \".exr\" extension. Got \"{}\"." ).format(ext)) From 12f6d76043986b8965bd6fc8d6402299b9bf52ea Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 12 Mar 2025 22:01:21 +0100 Subject: [PATCH 133/626] Remove deprecated `StdOutBroker` import fallback --- client/ayon_core/tools/stdout_broker/app.py | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 client/ayon_core/tools/stdout_broker/app.py diff --git a/client/ayon_core/tools/stdout_broker/app.py b/client/ayon_core/tools/stdout_broker/app.py deleted file mode 100644 index ae73db1bb9..0000000000 --- a/client/ayon_core/tools/stdout_broker/app.py +++ /dev/null @@ -1,12 +0,0 @@ -import warnings -from .broker import StdOutBroker - -warnings.warn( - ( - "Import of 'StdOutBroker' from 'ayon_core.tools.stdout_broker.app'" - " is deprecated. Please use 'ayon_core.tools.stdout_broker' instead." - ), - DeprecationWarning -) - -__all__ = ("StdOutBroker", ) From 5540e7923a5f3dc2cc6179deccc783e9c33888c0 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 13 Mar 2025 10:59:38 +0100 Subject: [PATCH 134/626] Update client/ayon_core/lib/transcoding.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/lib/transcoding.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/lib/transcoding.py b/client/ayon_core/lib/transcoding.py index c4030b3f97..3e77f39a8f 100644 --- a/client/ayon_core/lib/transcoding.py +++ b/client/ayon_core/lib/transcoding.py @@ -561,9 +561,9 @@ def convert_input_paths_for_ffmpeg( if ext != ".exr": raise ValueError(( - "Function 'convert_input_paths_for_ffmpeg' currently only supports" - " \".exr\" extension. Got \"{}\"." - ).format(ext)) + "Function 'convert_input_paths_for_ffmpeg' currently supports" + f" only \".exr\" extension. Got \"{ext}\"." + )) input_info = get_oiio_info_for_input(first_input_path, logger=logger) From 8424ad39078b3610894b0e53142a9b01ea6c5811 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 13 Mar 2025 11:00:59 +0100 Subject: [PATCH 135/626] Remove redundant brackets --- client/ayon_core/lib/transcoding.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/lib/transcoding.py b/client/ayon_core/lib/transcoding.py index 3e77f39a8f..8c84e1c4dc 100644 --- a/client/ayon_core/lib/transcoding.py +++ b/client/ayon_core/lib/transcoding.py @@ -560,10 +560,10 @@ def convert_input_paths_for_ffmpeg( ext = os.path.splitext(first_input_path)[1].lower() if ext != ".exr": - raise ValueError(( + raise ValueError( "Function 'convert_input_paths_for_ffmpeg' currently supports" f" only \".exr\" extension. Got \"{ext}\"." - )) + ) input_info = get_oiio_info_for_input(first_input_path, logger=logger) From d5b2642e8d3f8b3bc6ba48b7dd3ab994efc2c32f Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 13 Mar 2025 14:55:40 +0200 Subject: [PATCH 136/626] implement `createprojectstructure` cli action. --- client/ayon_core/cli.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index d7cd3ba7f5..21354bec4a 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -22,7 +22,7 @@ from ayon_core.lib.env_tools import ( compute_env_variables_structure, merge_env_variables, ) - +from ayon_core.pipeline import project_folders @click.group(invoke_without_command=True) @@ -258,6 +258,28 @@ def _set_global_environments() -> None: os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" +@main_cli.command() +@click.option( + "--project", + type=str, + help="Define project (project must be set).", + required=True) +def createprojectstructure( + project, +): + """Create project folder structure as defined in setting + `ayon+settings://core/project_folder_structure` + + Args: + project (str): The name of the project for which you + want to create its additional folder structure. + + """ + + print(f">>> Creating project folder structure for project '{project}'.") + project_folders.create_project_folders(project) + + def _set_addons_environments(addons_manager): """Set global environments for AYON addons.""" From 4f6ea8709226fd8a3ddfb12bc2aeedb1ae45b100 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 13 Mar 2025 14:59:10 +0200 Subject: [PATCH 137/626] Implement `Create Project Folder Structure` web action --- server/__init__.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/server/__init__.py b/server/__init__.py index d60f50f471..1ae5284f4d 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -1,6 +1,11 @@ from typing import Any from ayon_server.addons import BaseServerAddon +from ayon_server.actions import ( + ActionExecutor, + ExecuteResponseModel, + SimpleActionManifest, +) from .settings import ( CoreSettings, @@ -9,6 +14,9 @@ from .settings import ( ) +IDENTIFIER_PREFIX = "core.launch" + + class CoreAddon(BaseServerAddon): settings_model = CoreSettings @@ -26,3 +34,54 @@ class CoreAddon(BaseServerAddon): return await super().convert_settings_overrides( source_version, overrides ) + + async def get_simple_actions( + self, + project_name: str | None = None, + variant: str = "production", + ) -> list[SimpleActionManifest]: + """Return a list of simple actions provided by the addon""" + output = [] + + # Add 'Create Project Folder Structure' action to folders. + output.append( + SimpleActionManifest( + identifier=f"{IDENTIFIER_PREFIX}.createprojectstructure", + label="Create Project Folder Structure", + icon={ + "type": "material-symbols", + "name": "create_new_folder", + }, + order=100, + entity_type="folder", + entity_subtypes=None, + allow_multiselection=False, + ) + ) + + return output + + async def execute_action( + self, + executor: "ActionExecutor", + ) -> "ExecuteResponseModel": + """Execute actions. + + Note: + Executes CLI actions defined in the + addon's client code or other addons. + + """ + + project_name = executor.context.project_name + + if executor.identifier == \ + f"{IDENTIFIER_PREFIX}.createprojectstructure": + return await executor.get_launcher_action_response( + args=[ + "createprojectstructure", + "--project", project_name, + ] + ) + + raise ValueError(f"Unknown action: {executor.identifier}") From 6c650748637691c999f95ba4b2b53637f7c2770c Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 13 Mar 2025 15:00:10 +0200 Subject: [PATCH 138/626] remove `CreateProjectFoldersAction` launcher action. --- .../plugins/actions/create_project_folders.py | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100644 client/ayon_core/plugins/actions/create_project_folders.py diff --git a/client/ayon_core/plugins/actions/create_project_folders.py b/client/ayon_core/plugins/actions/create_project_folders.py deleted file mode 100644 index 934a9169d7..0000000000 --- a/client/ayon_core/plugins/actions/create_project_folders.py +++ /dev/null @@ -1,29 +0,0 @@ -from ayon_core.pipeline import LauncherAction, project_folders - - -class CreateProjectFoldersAction(LauncherAction): - """Create project folders as defined in settings.""" - name = "create_project_folders" - label = "Create Project Folders" - icon = "sitemap" - color = "#e0e1e1" - order = 1000 - - def is_compatible(self, selection) -> bool: - - # Disable when the project folder structure setting is empty - # in settings - project_settings = selection.get_project_settings() - folder_structure = ( - project_settings["core"]["project_folder_structure"] - ).strip() - if not folder_structure or folder_structure == "{}": - return False - - return ( - selection.is_project_selected - and not selection.is_folder_selected - ) - - def process(self, selection, **kwargs): - project_folders.create_project_folders(selection.project_name) From 0c5d95d3d105e2d5dde69ec68967e09a85f358b4 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Tue, 18 Mar 2025 17:11:43 +0100 Subject: [PATCH 139/626] :bug: dataclasses don't have model_dump --- client/ayon_core/pipeline/traits/representation.py | 10 +++++----- client/ayon_core/pipeline/traits/trait.py | 11 ++++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index 43b0397597..c9604c4183 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -391,7 +391,7 @@ class Representation(Generic[T]): # noqa: PLR0904 """ return { - trait_id: trait.model_dump() + trait_id: trait.as_dict() for trait_id, trait in self._data.items() if trait and trait_id } @@ -593,10 +593,6 @@ class Representation(Generic[T]): # noqa: PLR0904 ) raise IncompatibleTraitVersionError(msg) from e - if requested_version is None: - trait_class = e.found_trait - requested_version = found_version - if found_version is None: msg = ( f"Trait {e.found_trait.id} found with no version, " @@ -604,6 +600,10 @@ class Representation(Generic[T]): # noqa: PLR0904 ) raise IncompatibleTraitVersionError(msg) from e + if requested_version is None: + trait_class = e.found_trait + requested_version = found_version + if requested_version > found_version: error_msg = ( f"Requested trait version {requested_version} is " diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index 01a7641c59..b618b9907b 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -3,7 +3,7 @@ from __future__ import annotations import re from abc import ABC, abstractmethod -from dataclasses import dataclass +from dataclasses import asdict, dataclass from typing import TYPE_CHECKING, Generic, Optional, TypeVar if TYPE_CHECKING: @@ -79,6 +79,15 @@ class TraitBase(ABC): """ return re.sub(r"\.v\d+$", "", str(cls.id)) + def as_dict(self) -> dict: + """Return trait as dictionary. + + Returns: + dict: Trait as dictionary. + + """ + return asdict(self) + class IncompatibleTraitVersionError(Exception): """Incompatible trait version exception. From 8b501187a46218cce92f4bb0a55f778188a2b2da Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:07:30 +0200 Subject: [PATCH 140/626] move the function above private functions --- client/ayon_core/cli.py | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index ad108f59fc..eef0b80d54 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -237,26 +237,6 @@ def version(build): print(os.environ["AYON_VERSION"]) -def _set_global_environments() -> None: - """Set global AYON environments.""" - # First resolve general environment - general_env = parse_env_variables_structure(get_general_environments()) - - # Merge environments with current environments and update values - merged_env = merge_env_variables( - compute_env_variables_structure(general_env), - dict(os.environ) - ) - env = compute_env_variables_structure(merged_env) - os.environ.clear() - os.environ.update(env) - - # Hardcoded default values - # Change scale factor only if is not set - if "QT_AUTO_SCREEN_SCALE_FACTOR" not in os.environ: - os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" - - @main_cli.command() @click.option( "--project", @@ -279,6 +259,26 @@ def createprojectstructure( project_folders.create_project_folders(project) +def _set_global_environments() -> None: + """Set global AYON environments.""" + # First resolve general environment + general_env = parse_env_variables_structure(get_general_environments()) + + # Merge environments with current environments and update values + merged_env = merge_env_variables( + compute_env_variables_structure(general_env), + dict(os.environ) + ) + env = compute_env_variables_structure(merged_env) + os.environ.clear() + os.environ.update(env) + + # Hardcoded default values + # Change scale factor only if is not set + if "QT_AUTO_SCREEN_SCALE_FACTOR" not in os.environ: + os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" + + def _set_addons_environments(addons_manager): """Set global environments for AYON addons.""" From 7cf02d97ae58340b26289e5af36da77524d6c634 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:10:11 +0200 Subject: [PATCH 141/626] update help of project argument in create project structure. --- client/ayon_core/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index eef0b80d54..aaec9efba0 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -241,7 +241,7 @@ def version(build): @click.option( "--project", type=str, - help="Define project (project must be set).", + help="Project name", required=True) def createprojectstructure( project, From 71819f1ed6dbade2817ec6184f812d3809dd3100 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:10:57 +0200 Subject: [PATCH 142/626] refactor dunction name to `create_project_structure` --- client/ayon_core/cli.py | 2 +- server/__init__.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index aaec9efba0..84e5428938 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -243,7 +243,7 @@ def version(build): type=str, help="Project name", required=True) -def createprojectstructure( +def create_project_structure( project, ): """Create project folder structure as defined in setting diff --git a/server/__init__.py b/server/__init__.py index 1ae5284f4d..2521061822 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -46,7 +46,7 @@ class CoreAddon(BaseServerAddon): # Add 'Create Project Folder Structure' action to folders. output.append( SimpleActionManifest( - identifier=f"{IDENTIFIER_PREFIX}.createprojectstructure", + identifier=f"{IDENTIFIER_PREFIX}.create_project_structure", label="Create Project Folder Structure", icon={ "type": "material-symbols", @@ -76,10 +76,10 @@ class CoreAddon(BaseServerAddon): project_name = executor.context.project_name if executor.identifier == \ - f"{IDENTIFIER_PREFIX}.createprojectstructure": + f"{IDENTIFIER_PREFIX}.create_project_structure": return await executor.get_launcher_action_response( args=[ - "createprojectstructure", + "create_project_structure", "--project", project_name, ] ) From 3636f5d9ccf10d410a6621fa7f349124e26d653f Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:12:15 +0200 Subject: [PATCH 143/626] fix command argument --- server/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/__init__.py b/server/__init__.py index 2521061822..904d006e00 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -79,7 +79,7 @@ class CoreAddon(BaseServerAddon): f"{IDENTIFIER_PREFIX}.create_project_structure": return await executor.get_launcher_action_response( args=[ - "create_project_structure", + "create-project-structure", "--project", project_name, ] ) From 1331167e1390c696933a8d4d71ebf05eb2ecbd49 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:13:00 +0200 Subject: [PATCH 144/626] update identifier prefix --- server/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/__init__.py b/server/__init__.py index 904d006e00..7a1d181b1b 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -14,7 +14,7 @@ from .settings import ( ) -IDENTIFIER_PREFIX = "core.launch" +IDENTIFIER_PREFIX = "core" class CoreAddon(BaseServerAddon): From 45109825af75492f4c693234cf96f162af1bfcf0 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:14:56 +0200 Subject: [PATCH 145/626] update function type hints and docstring --- server/__init__.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/server/__init__.py b/server/__init__.py index 7a1d181b1b..1b9e7717c9 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -63,15 +63,9 @@ class CoreAddon(BaseServerAddon): async def execute_action( self, - executor: "ActionExecutor", - ) -> "ExecuteResponseModel": - """Execute actions. - - Note: - Executes CLI actions defined in the - addon's client code or other addons. - - """ + executor: ActionExecutor, + ) -> ExecuteResponseModel: + """Execute webactions.""" project_name = executor.context.project_name From ff7617850de783a5e2a61a6250fdd4657e5477d3 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:22:27 +0200 Subject: [PATCH 146/626] only import the needed function --- client/ayon_core/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index 84e5428938..186e11dfb5 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -22,7 +22,7 @@ from ayon_core.lib.env_tools import ( compute_env_variables_structure, merge_env_variables, ) -from ayon_core.pipeline import project_folders +from ayon_core.pipeline.project_folders import create_project_folders @click.group(invoke_without_command=True) @@ -256,7 +256,7 @@ def create_project_structure( """ print(f">>> Creating project folder structure for project '{project}'.") - project_folders.create_project_folders(project) + create_project_folders(project) def _set_global_environments() -> None: From 207f6d8a93387a5ab4c95d053a315b067ccffb65 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 19 Mar 2025 12:24:07 +0200 Subject: [PATCH 147/626] move import to the function. --- client/ayon_core/cli.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index 186e11dfb5..dc794c41c2 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -22,7 +22,6 @@ from ayon_core.lib.env_tools import ( compute_env_variables_structure, merge_env_variables, ) -from ayon_core.pipeline.project_folders import create_project_folders @click.group(invoke_without_command=True) @@ -255,6 +254,8 @@ def create_project_structure( """ + from ayon_core.pipeline.project_folders import create_project_folders + print(f">>> Creating project folder structure for project '{project}'.") create_project_folders(project) From 92cc5cd06b1cffe2308866607bc2b5756d3d127c Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 19 Mar 2025 18:47:09 +0100 Subject: [PATCH 148/626] :bug: replace published path in traits after copy and add some more tests --- .../plugins/publish/integrate_traits.py | 59 +++++++++++++-- .../plugins/publish/test_integrate_traits.py | 71 +++++++++++++++++++ 2 files changed, 123 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 72a7ddd479..2a6755093e 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -4,9 +4,10 @@ from __future__ import annotations import contextlib import copy import hashlib +import json from dataclasses import dataclass from pathlib import Path -from typing import TYPE_CHECKING, Any, List +from typing import TYPE_CHECKING, Any import pyblish.api from ayon_api import ( @@ -85,6 +86,7 @@ class TransferItem: template: str template_data: dict[str, Any] representation: Representation + related_trait: FileLocation @staticmethod def get_size(file_path: Path) -> int: @@ -146,7 +148,7 @@ class RepresentationEntity: status: str -def get_instance_families(instance: pyblish.api.Instance) -> List[str]: +def get_instance_families(instance: pyblish.api.Instance) -> list[str]: """Get all families of the instance. Todo: @@ -156,7 +158,7 @@ def get_instance_families(instance: pyblish.api.Instance) -> List[str]: instance (pyblish.api.Instance): Instance to get families from. Returns: - List[str]: List of families. + list[str]: List of families. """ family = instance.data.get("family") @@ -207,10 +209,39 @@ def get_changed_attributes( return changes +def prepare_for_json(data: dict[str, Any]) -> dict[str, Any]: + """Prepare data for JSON serialization. + + If there are values that json cannot serialize, this function will + convert them to strings. + + Args: + data (dict[str, Any]): Data to prepare. + + Returns: + dict[str, Any]: Prepared data. + + Raises: + TypeError: If the data cannot be converted to JSON. + + """ + prepared = {} + for key, value in data.items(): + if isinstance(value, dict): + value = prepare_for_json(value) + try: + json.dumps(value) + except TypeError: + value = value.as_posix() if issubclass( + value.__class__, Path) else str(value) + prepared[key] = value + return prepared + + class IntegrateTraits(pyblish.api.InstancePlugin): """Integrate representations with traits.""" - label = "Integrate Asset" + label = "Integrate Traits of an Asset" order = pyblish.api.IntegratorOrder log: logging.Logger @@ -226,7 +257,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): """ # 1) skip farm and integrate == False - if not instance.data.get("integrate"): + if instance.data.get("integrate", True) is False: self.log.debug("Instance is marked to skip integrating. Skipping") return @@ -246,7 +277,8 @@ class IntegrateTraits(pyblish.api.InstancePlugin): instance.data["representations_with_traits"] ) - representations: list[Representation] = instance.data["representations_with_traits"] # noqa: E501 + representations: list[Representation] = ( + instance.data["representations_with_traits"]) # noqa: E501 if not representations: self.log.debug( "Instance has no persistent representations. Skipping") @@ -284,6 +316,10 @@ class IntegrateTraits(pyblish.api.InstancePlugin): self.log.debug( "Transferred files %s", [file_transactions.transferred]) + # replace original paths with the destination in traits. + for transfer in transfers: + transfer.related_trait.file_path = transfer.destination + # 9) Create representation entities for representation in representations: representation_entity = new_representation_entity( @@ -300,8 +336,14 @@ class IntegrateTraits(pyblish.api.InstancePlugin): ) # add traits to representation entity representation_entity["traits"] = representation.traits_as_dict() + op_session.create_entity( + project_name=instance.context.data["projectName"], + entity_type="representation", + data=prepare_for_json(representation_entity), + ) # 10) Commit the session to AYON + self.log.debug("{}".format(op_session.to_data())) op_session.commit() def get_transfers_from_representations( @@ -805,7 +847,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_data = copy.deepcopy(instance.data["anatomyData"]) template_data["representation"] = representation.name template_data["version"] = instance.data["version"] - template_data["hierarchy"] = instance.data["hierarchy"] + # template_data["hierarchy"] = instance.data["hierarchy"] # add colorspace data to template data if representation.contains_trait(ColorManaged): @@ -938,6 +980,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template=template_item.template, template_data=template_item.template_data, representation=representation, + related_trait=file_loc ) ) @@ -995,6 +1038,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template=template_item.template, template_data=template_item.template_data, representation=representation, + related_trait=file_loc ) ) # add template path and the data to resolve it @@ -1052,6 +1096,7 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template=template_item.template, template_data=template_item.template_data, representation=representation, + related_trait=file_loc ) ) # add template path and the data to resolve it diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 98f02bdff6..1fa80d7b8a 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -237,6 +237,8 @@ def mock_context( return context + + def test_get_template_name(mock_context: pyblish.api.Context) -> None: """Test get_template_name. @@ -252,6 +254,75 @@ def test_get_template_name(mock_context: pyblish.api.Context) -> None: assert template_name == "default" +class TestGetSize: + @staticmethod + def get_size(file_path: Path) -> int: + """Get size of the file. + + Args: + file_path (Path): File path. + + Returns: + int: Size of the file. + + """ + return file_path.stat().st_size + + @pytest.mark.parametrize( + "file_path, expected_size", + [ + (Path("./test_file_1.txt"), 10), # id: happy_path_small_file + (Path("./test_file_2.txt"), 1024), # id: happy_path_medium_file + (Path("./test_file_3.txt"), 10485760) # id: happy_path_large_file + ], + ids=["happy_path_small_file", "happy_path_medium_file", "happy_path_large_file"] + ) + def test_get_size_happy_path(self, file_path: Path, expected_size: int, tmp_path: Path): + # Arrange + file_path = tmp_path / file_path + file_path.write_bytes(b"\0" * expected_size) + + # Act + size = self.get_size(file_path) + + # Assert + assert size == expected_size + + + @pytest.mark.parametrize( + "file_path, expected_size", + [ + (Path("./test_file_empty.txt"), 0) # id: edge_case_empty_file + ], + ids=["edge_case_empty_file"] + ) + def test_get_size_edge_cases(self, file_path: Path, expected_size: int, tmp_path: Path): + # Arrange + file_path = tmp_path / file_path + file_path.touch() # Create an empty file + + # Act + size = self.get_size(file_path) + + # Assert + assert size == expected_size + + @pytest.mark.parametrize( + "file_path, expected_exception", + [ + (Path("./non_existent_file.txt"), FileNotFoundError), # id: error_file_not_found + (123, TypeError) # id: error_invalid_input_type + ], + ids=["error_file_not_found", "error_invalid_input_type"] + ) + def test_get_size_error_cases(self, file_path, expected_exception, tmp_path): + + # Act & Assert + with pytest.raises(expected_exception): + file_path = tmp_path / file_path + self.get_size(file_path) + + def test_filter_lifecycle() -> None: """Test filter_lifecycle.""" integrator = IntegrateTraits() From 4283d0b4534a93d1a79c8c86350eb348aef0904e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 27 Mar 2025 12:59:15 +0100 Subject: [PATCH 149/626] Allow disabling removal of rendered files on farm renders With this disabled the `metadata.json` and work area renders will remain on disk after a publish even if the folder is not a persistent staging dir --- .../plugins/publish/collect_rendered_files.py | 7 +++++-- server/settings/publish_plugins.py | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_rendered_files.py b/client/ayon_core/plugins/publish/collect_rendered_files.py index deecf7ba24..c69dddd6ec 100644 --- a/client/ayon_core/plugins/publish/collect_rendered_files.py +++ b/client/ayon_core/plugins/publish/collect_rendered_files.py @@ -31,6 +31,9 @@ class CollectRenderedFiles(pyblish.api.ContextPlugin): # Keep "filesequence" for backwards compatibility of older jobs targets = ["filesequence", "farm"] label = "Collect rendered frames" + settings_category = "core" + + remove_files = True _context = None @@ -120,7 +123,7 @@ class CollectRenderedFiles(pyblish.api.ContextPlugin): self._fill_staging_dir(repre_data, anatomy) representations.append(repre_data) - if not staging_dir_persistent: + if self.remove_files and not staging_dir_persistent: add_repre_files_for_cleanup(instance, repre_data) instance.data["representations"] = representations @@ -170,7 +173,7 @@ class CollectRenderedFiles(pyblish.api.ContextPlugin): os.environ.update(session_data) staging_dir_persistent = self._process_path(data, anatomy) - if not staging_dir_persistent: + if self.remove_files and not staging_dir_persistent: context.data["cleanupFullPaths"].append(path) context.data["cleanupEmptyDirs"].append( os.path.dirname(path) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index c9c66e65d9..029eab5fc4 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -925,6 +925,20 @@ class IntegrateHeroVersionModel(BaseSettingsModel): "hero versions.") +class CollectRenderedFilesModel(BaseSettingsModel): + remove_files: bool = SettingsField( + True, + title="Remove rendered files", + description=( + "Remove rendered files and metadata json on publish.\n\n" + "Note that when enabled but the render is to a configured " + "persistent staging directory the files will not be removed. " + "However with this disabled the files will **not** be removed in " + "either case." + ) + ) + + class CleanUpModel(BaseSettingsModel): _isGroup = True paterns: list[str] = SettingsField( # codespell:ignore paterns @@ -1026,6 +1040,10 @@ class PublishPuginsModel(BaseSettingsModel): default_factory=IntegrateHeroVersionModel, title="Integrate Hero Version" ) + CollectRenderedFiles: CollectRenderedFilesModel = SettingsField( + default_factory=CollectRenderedFilesModel, + title="Clean up farm rendered files" + ) CleanUp: CleanUpModel = SettingsField( default_factory=CleanUpModel, title="Clean Up" @@ -1410,6 +1428,9 @@ DEFAULT_PUBLISH_VALUES = { ], "use_hardlinks": False }, + "CollectRenderedFiles": { + "remove_files": True + }, "CleanUp": { "paterns": [], # codespell:ignore paterns "remove_temp_renders": False From 4152f9fc5e4cbcf2ef253781ee244ec1619c89fb Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 Mar 2025 17:12:15 +0100 Subject: [PATCH 150/626] =?UTF-8?q?=F0=9F=A4=96obey=20our=20machine=20over?= =?UTF-8?q?lords,=20implement=20their=20kind=20suggestions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 4 +--- tests/client/ayon_core/pipeline/traits/test_content_traits.py | 2 +- ...wo_dimesional_traits.py => test_two_dimensional_traits.py} | 0 3 files changed, 2 insertions(+), 4 deletions(-) rename tests/client/ayon_core/pipeline/traits/{test_two_dimesional_traits.py => test_two_dimensional_traits.py} (100%) diff --git a/pyproject.toml b/pyproject.toml index 24d5300626..d3113041e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,7 +79,7 @@ pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["ALL"] ignore = [ - "PTH", + "PTH", "ANN101", # must be set in older version of ruff "ANN204", "COM812", @@ -97,8 +97,6 @@ ignore = [ "S404", # subprocess module is possibly insecure "PLC0415", # import must be on top of the file "CPY001", # missing copyright header - "UP045" - ] # Allow fix for all enabled rules (when `--fix`) is provided. diff --git a/tests/client/ayon_core/pipeline/traits/test_content_traits.py b/tests/client/ayon_core/pipeline/traits/test_content_traits.py index 4aa149b8ee..3fcbd04ac0 100644 --- a/tests/client/ayon_core/pipeline/traits/test_content_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_content_traits.py @@ -122,7 +122,7 @@ def test_file_locations_validation() -> None: with pytest.raises(TraitValidationError): file_locations_trait.validate_trait(representation) - # invalid representation with mutliple file locations but + # invalid representation with multiple file locations but # unrelated to either Sequence or Bundle traits representation = Representation(name="test", traits=[ FileLocations(file_paths=[ diff --git a/tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py b/tests/client/ayon_core/pipeline/traits/test_two_dimensional_traits.py similarity index 100% rename from tests/client/ayon_core/pipeline/traits/test_two_dimesional_traits.py rename to tests/client/ayon_core/pipeline/traits/test_two_dimensional_traits.py From 45d0e05892aca00fa8a723c1f8564d259b033264 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 Mar 2025 17:20:26 +0100 Subject: [PATCH 151/626] :alembic: fix tests --- tests/client/ayon_core/pipeline/traits/test_traits.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index b990c074d3..a1cd4792e9 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -21,18 +21,18 @@ REPRESENTATION_DATA: dict = { "file_path": Path("/path/to/file"), "file_size": 1024, "file_hash": None, - "persistent": True, + # "persistent": True, }, - Image.id: {"persistent": True}, + Image.id: {}, PixelBased.id: { "display_window_width": 1920, "display_window_height": 1080, "pixel_aspect_ratio": 1.0, - "persistent": True, + # "persistent": True, }, Planar.id: { "planar_configuration": "RGB", - "persistent": True, + # "persistent": True, }, } From a008145a94132c028e43e2c8f9d0f22ce8726b0e Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 Mar 2025 17:20:41 +0100 Subject: [PATCH 152/626] :dog: fix linter issues --- client/ayon_core/pipeline/traits/content.py | 3 ++- client/ayon_core/pipeline/traits/cryptography.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 9bb43fcdb3..5a19daedac 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -59,7 +59,8 @@ class LocatableContent(TraitBase): description (str): Trait description. id (str): id should be namespaced trait name with version location (str): Location. - is_templated (Optional[bool]): Is the location templated? Default is None. + is_templated (Optional[bool]): Is the location templated? + Default is None. """ name: ClassVar[str] = "LocatableContent" diff --git a/client/ayon_core/pipeline/traits/cryptography.py b/client/ayon_core/pipeline/traits/cryptography.py index d9445bd543..7fcbb1b387 100644 --- a/client/ayon_core/pipeline/traits/cryptography.py +++ b/client/ayon_core/pipeline/traits/cryptography.py @@ -22,6 +22,7 @@ class DigitallySigned(TraitBase): description: ClassVar[str] = "Digitally signed trait." persistent: ClassVar[bool] = True + @dataclass class PGPSigned(DigitallySigned): """PGP signed trait. From ed6e557afef30154cad4634a740247f57e9b14be Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Thu, 27 Mar 2025 17:30:31 +0100 Subject: [PATCH 153/626] :bug: fix poetry.lock so GH test action can run --- poetry.lock | 74 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7db190bdd2..d68f07f84b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "appdirs" @@ -6,6 +6,7 @@ version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, @@ -17,18 +18,19 @@ version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] [[package]] name = "ayon-python-api" @@ -36,6 +38,7 @@ version = "1.0.11" description = "AYON Python API" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "ayon-python-api-1.0.11.tar.gz", hash = "sha256:3497237c379979268c321304c7d19cb2844d699f6ac34c21293f5dac29c13531"}, {file = "ayon_python_api-1.0.11-py3-none-any.whl", hash = "sha256:f6134c29c8c8a36cdb2882f9404dd43817bd6636d663b3cd2344de9f1fc1e4b2"}, @@ -86,6 +89,7 @@ version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, @@ -97,6 +101,7 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -108,6 +113,7 @@ version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["dev"] files = [ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, @@ -237,6 +243,7 @@ version = "2.0.0" description = "Manage collections with common numerical component" optional = false python-versions = ">=3.0, <4.0" +groups = ["dev"] files = [ {file = "clique-2.0.0-py2.py3-none-any.whl", hash = "sha256:45e2a4c6078382e0b217e5e369494279cf03846d95ee601f93290bed5214c22e"}, {file = "clique-2.0.0.tar.gz", hash = "sha256:6e1115dbf21b1726f4b3db9e9567a662d6bdf72487c4a0a1f8cb7f10cf4f4754"}, @@ -253,6 +260,7 @@ version = "2.3.0" description = "Codespell" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, @@ -261,7 +269,7 @@ files = [ [package.extras] dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"] hard-encoding-detection = ["chardet"] -toml = ["tomli"] +toml = ["tomli ; python_version < \"3.11\""] types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"] [[package]] @@ -270,6 +278,7 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -292,6 +301,7 @@ version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -303,6 +313,7 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -317,6 +328,7 @@ version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, @@ -325,7 +337,7 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "ghp-import" @@ -377,6 +389,7 @@ version = "2.6.3" description = "File identification library for Python" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd"}, {file = "identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02"}, @@ -391,6 +404,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -452,6 +466,7 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -862,6 +877,7 @@ version = "5.2.0" description = "Rolling backport of unittest.mock for all Pythons" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f"}, {file = "mock-5.2.0.tar.gz", hash = "sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0"}, @@ -878,6 +894,7 @@ version = "1.14.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e971c1c667007f9f2b397ffa80fa8e1e0adccff336e5e77e74cb5f22868bee87"}, {file = "mypy-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e86aaeaa3221a278c66d3d673b297232947d873773d61ca3ee0e28b2ff027179"}, @@ -931,6 +948,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -942,6 +960,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -953,6 +972,7 @@ version = "0.17.0" description = "Editorial interchange format and API" optional = false python-versions = "!=3.9.0,>=3.7" +groups = ["dev"] files = [ {file = "OpenTimelineIO-0.17.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:2dd31a570cabfd6227c1b1dd0cc038da10787492c26c55de058326e21fe8a313"}, {file = "OpenTimelineIO-0.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5a1da5d4803d1ba5e846b181a9e0f4a392c76b9acc5e08947772bc086f2ebfc0"}, @@ -994,7 +1014,7 @@ files = [ [package.extras] dev = ["check-manifest", "coverage (>=4.5)", "flake8 (>=3.5)", "urllib3 (>=1.24.3)"] -view = ["PySide2 (>=5.11,<6.0)", "PySide6 (>=6.2,<7.0)"] +view = ["PySide2 (>=5.11,<6.0) ; platform_machine == \"x86_64\"", "PySide6 (>=6.2,<7.0) ; platform_machine == \"aarch64\""] [[package]] name = "packaging" @@ -1002,6 +1022,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -1041,6 +1062,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -1057,6 +1079,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -1072,6 +1095,7 @@ version = "4.0.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, @@ -1090,6 +1114,7 @@ version = "1.8.12" description = "Plug-in driven automation framework for content" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pyblish-base-1.8.12.tar.gz", hash = "sha256:ebc184eb038864380555227a8b58055dd24ece7e6ef7f16d33416c718512871b"}, {file = "pyblish_base-1.8.12-py2.py3-none-any.whl", hash = "sha256:2cbe956bfbd4175a2d7d22b344cd345800f4d4437153434ab658fc12646a11e8"}, @@ -1150,6 +1175,7 @@ version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -1172,6 +1198,7 @@ version = "1.0.2" description = "pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout)" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytest_print-1.0.2-py3-none-any.whl", hash = "sha256:3ae7891085dddc3cd697bd6956787240107fe76d6b5cdcfcd782e33ca6543de9"}, {file = "pytest_print-1.0.2.tar.gz", hash = "sha256:2780350a7bbe7117f99c5d708dc7b0431beceda021b1fd3f11200670d7f33679"}, @@ -1204,6 +1231,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1281,6 +1309,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -1302,6 +1331,7 @@ version = "0.9.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367"}, {file = "ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7"}, @@ -1329,6 +1359,7 @@ version = "3.0.2" description = "Python helper for Semantic Versioning (https://semver.org)" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"}, {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"}, @@ -1369,6 +1400,7 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -1404,12 +1436,25 @@ files = [ {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] +[[package]] +name = "tomlkit" +version = "0.13.2" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] + [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -1421,6 +1466,7 @@ version = "1.3.8" description = "ASCII transliterations of Unicode text" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "Unidecode-1.3.8-py3-none-any.whl", hash = "sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39"}, {file = "Unidecode-1.3.8.tar.gz", hash = "sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4"}, @@ -1432,13 +1478,14 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1464,6 +1511,7 @@ version = "20.28.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, @@ -1476,7 +1524,7 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] [[package]] name = "watchdog" @@ -1542,6 +1590,6 @@ test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.funct type = ["pytest-mypy"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.9.1,<3.10" -content-hash = "8e5b1f886eb608198752e1ce84f6bc89d1c8d53a5eeabff84a4272538f81403f" +content-hash = "f1ea28d3e849c446fd7659d39232703f4eee72f6e9250138234bc9e122ee256f" From d20942892f0f6b00c5b5abdf867351b25c2f247b Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 31 Mar 2025 14:45:31 +0200 Subject: [PATCH 154/626] Used new enum for template names from Anatomy --- server/settings/publish_plugins.py | 13 +++++++++++-- server/settings/tools.py | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 39a9c028f9..c32d8d360c 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -7,6 +7,7 @@ from ayon_server.settings import ( normalize_name, ensure_unique_names, task_types_enum, + anatomy_template_items_enum ) from ayon_server.types import ColorRGBA_uint8 @@ -889,7 +890,11 @@ class IntegrateANTemplateNameProfileModel(BaseSettingsModel): default_factory=list, title="Task names" ) - template_name: str = SettingsField("", title="Template name") + template_name: str = SettingsField( + "", + title="Template name", + enum_resolver=anatomy_template_items_enum(category="publish") + ) class IntegrateHeroTemplateNameProfileModel(BaseSettingsModel): @@ -910,7 +915,11 @@ class IntegrateHeroTemplateNameProfileModel(BaseSettingsModel): default_factory=list, title="Task names" ) - template_name: str = SettingsField("", title="Template name") + template_name: str = SettingsField( + "", + title="Template name", + enum_resolver=anatomy_template_items_enum(category="publish") + ) class IntegrateHeroVersionModel(BaseSettingsModel): diff --git a/server/settings/tools.py b/server/settings/tools.py index 32c72e7a98..d1e6cb50eb 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -5,6 +5,7 @@ from ayon_server.settings import ( normalize_name, ensure_unique_names, task_types_enum, + anatomy_template_items_enum ) @@ -283,7 +284,11 @@ class PublishTemplateNameProfile(BaseSettingsModel): task_names: list[str] = SettingsField( default_factory=list, title="Task names" ) - template_name: str = SettingsField("", title="Template name") + template_name: str = SettingsField( + "", + title="Template name", + enum_resolver=anatomy_template_items_enum(category="publish") + ) class CustomStagingDirProfileModel(BaseSettingsModel): @@ -306,7 +311,11 @@ class CustomStagingDirProfileModel(BaseSettingsModel): custom_staging_dir_persistent: bool = SettingsField( False, title="Custom Staging Folder Persistent" ) - template_name: str = SettingsField("", title="Template Name") + template_name: str = SettingsField( + "", + title="Template name", + enum_resolver=anatomy_template_items_enum + ) class PublishToolModel(BaseSettingsModel): From 7d7fd313fa7d75d6eb92f2cd1120b192b1ca8b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 31 Mar 2025 15:42:06 +0200 Subject: [PATCH 155/626] :recycle: wrap trait based instance into functions --- client/ayon_core/pipeline/publish/__init__.py | 10 +++ client/ayon_core/pipeline/publish/lib.py | 71 ++++++++++++++++++- .../plugins/publish/integrate_traits.py | 14 ++-- 3 files changed, 90 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/pipeline/publish/__init__.py b/client/ayon_core/pipeline/publish/__init__.py index 5363e0b378..ede7fc3a35 100644 --- a/client/ayon_core/pipeline/publish/__init__.py +++ b/client/ayon_core/pipeline/publish/__init__.py @@ -46,6 +46,11 @@ from .lib import ( get_publish_instance_families, main_cli_publish, + + add_trait_representations, + get_trait_representations, + has_trait_representations, + set_trait_representations, ) from .abstract_expected_files import ExpectedFiles @@ -104,4 +109,9 @@ __all__ = ( "RenderInstance", "AbstractCollectRender", + + "add_trait_representations", + "get_trait_representations", + "has_trait_representations", + "set_trait_representations", ) diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index 49ecab2221..f1dda288a6 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -6,7 +6,7 @@ import inspect import copy import warnings import xml.etree.ElementTree -from typing import Optional, Union, List +from typing import TYPE_CHECKING, Optional, Union, List import ayon_api import pyblish.util @@ -27,6 +27,11 @@ from .constants import ( DEFAULT_HERO_PUBLISH_TEMPLATE, ) +if TYPE_CHECKING: + from ayon_core.pipeline.traits import Representation + + +TRAIT_INSTANCE_KEY: str = "representations_with_traits" def get_template_name_profiles( project_name, project_settings=None, logger=None @@ -1062,3 +1067,67 @@ def main_cli_publish( sys.exit(1) log.info("Publish finished.") + + +def has_trait_representations( + instance: pyblish.api.Instance) -> bool: + """Check if instance has trait representation. + + Args: + instance (pyblish.api.Instance): Instance to check. + + Returns: + True: Instance has trait representation. + False: Instance does not have trait representation. + + """ + return bool(instance.data.get(TRAIT_INSTANCE_KEY)) + + +def add_trait_representations( + instance: pyblish.api.Instance, + representations: list[Representation] +): + """Add trait representations to instance. + + Args: + instance (pyblish.api.Instance): Instance to add trait + representations to. + representations (list[Representation]): List of representation + trait based representations to add. + + """ + if not has_trait_representations(instance): + instance.data[TRAIT_INSTANCE_KEY] = [] + instance.data[TRAIT_INSTANCE_KEY].extend(representations) + + +def set_trait_representations( + instance: pyblish.api.Instance, + representations: list[Representation] +): + """Set trait representations to instance. + + Args: + instance (pyblish.api.Instance): Instance to set trait + representations to. + representations (list[Representation]): List of trait + based representations. + + """ + instance.data[TRAIT_INSTANCE_KEY] = representations + + +def get_trait_representations( + instance: pyblish.api.Instance) -> list[Representation]: + """Get trait representations from instance. + + Args: + instance (pyblish.api.Instance): Instance to get trait + representations from. + + Returns: + list[Representation]: List of representation names. + + """ + return instance.data.get(TRAIT_INSTANCE_KEY, []) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index 72a7ddd479..5587d64604 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -29,6 +29,9 @@ from ayon_core.lib.file_transaction import ( from ayon_core.pipeline.publish import ( PublishError, get_publish_template_name, + has_trait_representations, + get_trait_representations, + set_trait_representations, ) from ayon_core.pipeline.traits import ( UDIM, @@ -236,17 +239,20 @@ class IntegrateTraits(pyblish.api.InstancePlugin): return # TODO (antirotor): Find better name for the key - if not instance.data.get("representations_with_traits"): + if not has_trait_representations(instance): self.log.debug( "Instance has no representations with traits. Skipping") return # 2) filter representations based on LifeCycle traits - instance.data["representations_with_traits"] = self.filter_lifecycle( - instance.data["representations_with_traits"] + set_trait_representations( + instance, + self.filter_lifecycle(get_trait_representations(instance)) ) - representations: list[Representation] = instance.data["representations_with_traits"] # noqa: E501 + representations: list[Representation] = get_trait_representations( + instance + ) if not representations: self.log.debug( "Instance has no persistent representations. Skipping") From ff8d4f5ddaa0c974a4a9a96553778f2b18139c85 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 1 Apr 2025 11:54:56 +0200 Subject: [PATCH 156/626] Added missed argument --- server/settings/tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/settings/tools.py b/server/settings/tools.py index d1e6cb50eb..28ceeedbe4 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -314,7 +314,7 @@ class CustomStagingDirProfileModel(BaseSettingsModel): template_name: str = SettingsField( "", title="Template name", - enum_resolver=anatomy_template_items_enum + enum_resolver=anatomy_template_items_enum(category="publish") ) From 7dad20d9c98c71c37db2bbdba22b32249c0001e4 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 1 Apr 2025 12:07:10 +0200 Subject: [PATCH 157/626] Bump up required server version --- package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.py b/package.py index 9af45719a7..51851c0f5f 100644 --- a/package.py +++ b/package.py @@ -6,7 +6,7 @@ client_dir = "ayon_core" plugin_for = ["ayon_server"] -ayon_server_version = ">=1.0.3,<2.0.0" +ayon_server_version = ">=1.7.5,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = {} From 93ea50cac145de2e568c6f17480fe487e62ec10c Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 1 Apr 2025 12:15:22 +0200 Subject: [PATCH 158/626] Update correct category --- server/settings/publish_plugins.py | 2 +- server/settings/tools.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index c32d8d360c..028cf9fffa 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -918,7 +918,7 @@ class IntegrateHeroTemplateNameProfileModel(BaseSettingsModel): template_name: str = SettingsField( "", title="Template name", - enum_resolver=anatomy_template_items_enum(category="publish") + enum_resolver=anatomy_template_items_enum(category="hero") ) diff --git a/server/settings/tools.py b/server/settings/tools.py index 28ceeedbe4..b003ef2244 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -314,7 +314,7 @@ class CustomStagingDirProfileModel(BaseSettingsModel): template_name: str = SettingsField( "", title="Template name", - enum_resolver=anatomy_template_items_enum(category="publish") + enum_resolver=anatomy_template_items_enum(category="staging") ) From d8c442e7f56a511c22376dadd828cda715ae19c4 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 2 Apr 2025 15:00:44 +0200 Subject: [PATCH 159/626] Update OCIO config paths and compatible addons - Added a new compatible addon with version requirement. - Updated existing OCIO config paths for ACES 1.3 and added support for ACES 2.0. - Adjusted labels and descriptions for clarity on OCIO versions. --- package.py | 4 +++- server/settings/main.py | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/package.py b/package.py index af3342f3f2..bb8278151d 100644 --- a/package.py +++ b/package.py @@ -9,4 +9,6 @@ plugin_for = ["ayon_server"] ayon_server_version = ">=1.0.3,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} -ayon_compatible_addons = {} +ayon_compatible_addons = { + "ayon_ocio": ">=1.2.0", +} diff --git a/server/settings/main.py b/server/settings/main.py index 261bd7fc04..520c533aab 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -72,18 +72,30 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ { - "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 "label": "ACES 1.3 Studio (OCIO v2)", "description": ( "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") }, { - "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", + "value": "{BUILTIN_OCIO_ROOT}/studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio", # noqa: E501 + "label": "ACES 1.3 Studio (OCIO v2.1)", + "description": ( + "Aces 1.3 Studio OCIO config file. Requires OCIO v2.1.") + }, + { + "value": "{BUILTIN_OCIO_ROOT}/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 + "label": "ACES 2.0 Studio (OCIO v2.4)", + "description": ( + "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") + }, + { + "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/aces_1.2/config.ocio", "label": "ACES 1.2", "description": "Aces 1.2 OCIO config file." }, { - "value": "{BUILTIN_OCIO_ROOT}/nuke-default/config.ocio", + "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/nuke-default/config.ocio", "label": "Nuke default", }, ] From ee213afce408dfb90e1b3265f16cdb19e59cfd66 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 2 Apr 2025 15:02:19 +0200 Subject: [PATCH 160/626] Update OCIO config paths and add comments - Added line length comments to OCIO config paths - No functional changes, just improved code clarity --- server/settings/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index 520c533aab..a7d82ec363 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -90,12 +90,12 @@ def _ocio_built_in_paths(): "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") }, { - "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/aces_1.2/config.ocio", + "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/aces_1.2/config.ocio", # noqa: E501 "label": "ACES 1.2", "description": "Aces 1.2 OCIO config file." }, { - "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/nuke-default/config.ocio", + "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/nuke-default/config.ocio", # noqa: E501 "label": "Nuke default", }, ] From 89a494b43f5d1a3c27a95f88d13458462381ebb5 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Apr 2025 11:28:52 +0200 Subject: [PATCH 161/626] Added profile targeting Hero --- server/settings/tools.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/server/settings/tools.py b/server/settings/tools.py index b003ef2244..6b07910454 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -291,6 +291,29 @@ class PublishTemplateNameProfile(BaseSettingsModel): ) +class HeroTemplateNameProfile(BaseSettingsModel): + _layout = "expanded" + product_types: list[str] = SettingsField( + default_factory=list, + title="Product types" + ) + # TODO this should use hosts enum + hosts: list[str] = SettingsField(default_factory=list, title="Hosts") + task_types: list[str] = SettingsField( + default_factory=list, + title="Task types", + enum_resolver=task_types_enum + ) + task_names: list[str] = SettingsField( + default_factory=list, title="Task names" + ) + template_name: str = SettingsField( + "", + title="Template name", + enum_resolver=anatomy_template_items_enum(category="hero") + ) + + class CustomStagingDirProfileModel(BaseSettingsModel): active: bool = SettingsField(True, title="Is active") hosts: list[str] = SettingsField(default_factory=list, title="Host names") @@ -323,7 +346,7 @@ class PublishToolModel(BaseSettingsModel): default_factory=list, title="Template name profiles" ) - hero_template_name_profiles: list[PublishTemplateNameProfile] = ( + hero_template_name_profiles: list[HeroTemplateNameProfile] = ( SettingsField( default_factory=list, title="Hero template name profiles" From 172fc27fa00fef89df35adc4a73ff913ba85ce85 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:49:04 +0200 Subject: [PATCH 162/626] remove applications action logic --- client/ayon_core/tools/launcher/abstract.py | 16 -- client/ayon_core/tools/launcher/control.py | 5 - .../tools/launcher/models/actions.py | 255 +----------------- .../tools/launcher/ui/actions_widget.py | 73 +---- 4 files changed, 8 insertions(+), 341 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index ea0842f24d..9189418c1c 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -307,22 +307,6 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): """ pass - @abstractmethod - def set_application_force_not_open_workfile( - self, project_name, folder_id, task_id, action_ids, enabled - ): - """This is application action related to force not open last workfile. - - Args: - project_name (Union[str, None]): Project name. - folder_id (Union[str, None]): Folder id. - task_id (Union[str, None]): Task id. - action_ids (Iterable[str]): Action identifiers. - enabled (bool): New value of force not open workfile. - - """ - pass - @abstractmethod def refresh(self): """Refresh everything, models, ui etc. diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index 45cb2b7945..671c831505 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -135,12 +135,7 @@ class BaseLauncherController( return self._actions_model.get_action_items( project_name, folder_id, task_id) - def set_application_force_not_open_workfile( - self, project_name, folder_id, task_id, action_ids, enabled ): - self._actions_model.set_application_force_not_open_workfile( - project_name, folder_id, task_id, action_ids, enabled - ) def trigger_action(self, project_name, folder_id, task_id, identifier): self._actions_model.trigger_action( diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index e1612e2b9f..1676ab6ec3 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,117 +1,12 @@ import os from ayon_core import resources -from ayon_core.lib import Logger, AYONSettingsRegistry from ayon_core.addon import AddonsManager from ayon_core.pipeline.actions import ( discover_launcher_actions, - LauncherAction, LauncherActionSelection, register_launcher_action_path, ) -from ayon_core.pipeline.workfile import should_use_last_workfile_on_launch - -try: - # Available since applications addon 0.2.4 - from ayon_applications.action import ApplicationAction -except ImportError: - # Backwards compatibility from 0.3.3 (24/06/10) - # TODO: Remove in future releases - class ApplicationAction(LauncherAction): - """Action to launch an application. - - Application action based on 'ApplicationManager' system. - - Handling of applications in launcher is not ideal and should be - completely redone from scratch. This is just a temporary solution - to keep backwards compatibility with AYON launcher. - - Todos: - Move handling of errors to frontend. - """ - - # Application object - application = None - # Action attributes - name = None - label = None - label_variant = None - group = None - icon = None - color = None - order = 0 - data = {} - project_settings = {} - project_entities = {} - - _log = None - - @property - def log(self): - if self._log is None: - self._log = Logger.get_logger(self.__class__.__name__) - return self._log - - def is_compatible(self, selection): - if not selection.is_task_selected: - return False - - project_entity = self.project_entities[selection.project_name] - apps = project_entity["attrib"].get("applications") - if not apps or self.application.full_name not in apps: - return False - - project_settings = self.project_settings[selection.project_name] - only_available = project_settings["applications"]["only_available"] - if only_available and not self.application.find_executable(): - return False - return True - - def _show_message_box(self, title, message, details=None): - from qtpy import QtWidgets, QtGui - from ayon_core import style - - dialog = QtWidgets.QMessageBox() - icon = QtGui.QIcon(resources.get_ayon_icon_filepath()) - dialog.setWindowIcon(icon) - dialog.setStyleSheet(style.load_stylesheet()) - dialog.setWindowTitle(title) - dialog.setText(message) - if details: - dialog.setDetailedText(details) - dialog.exec_() - - def process(self, selection, **kwargs): - """Process the full Application action""" - - from ayon_applications import ( - ApplicationExecutableNotFound, - ApplicationLaunchFailed, - ) - - try: - self.application.launch( - project_name=selection.project_name, - folder_path=selection.folder_path, - task_name=selection.task_name, - **self.data - ) - - except ApplicationExecutableNotFound as exc: - details = exc.details - msg = exc.msg - log_msg = str(msg) - if details: - log_msg += "\n" + details - self.log.warning(log_msg) - self._show_message_box( - "Application executable not found", msg, details - ) - - except ApplicationLaunchFailed as exc: - msg = str(exc) - self.log.warning(msg, exc_info=True) - self._show_message_box("Application launch failed", msg) # class Action: @@ -160,9 +55,6 @@ class ActionItem: action if it has same 'label' and have set 'variant_label'. icon (dict[str, str]): Icon definition. order (int): Action ordering. - is_application (bool): Is action application action. - force_not_open_workfile (bool): Force not open workfile. Application - related. full_label (Optional[str]): Full label, if not set it is generated from 'label' and 'variant_label'. """ @@ -174,8 +66,6 @@ class ActionItem: variant_label, icon, order, - is_application, - force_not_open_workfile, full_label=None ): self.identifier = identifier @@ -183,8 +73,6 @@ class ActionItem: self.variant_label = variant_label self.icon = icon self.order = order - self.is_application = is_application - self.force_not_open_workfile = force_not_open_workfile self._full_label = full_label def copy(self): @@ -206,8 +94,6 @@ class ActionItem: "variant_label": self.variant_label, "icon": self.icon, "order": self.order, - "is_application": self.is_application, - "force_not_open_workfile": self.force_not_open_workfile, "full_label": self._full_label, } @@ -264,8 +150,6 @@ class ActionsModel: controller (AbstractLauncherBackend): Controller instance. """ - _not_open_workfile_reg_key = "force_not_open_workfile" - def __init__(self, controller): self._controller = controller @@ -275,8 +159,6 @@ class ActionsModel: self._actions = None self._action_items = {} - self._launcher_tool_reg = AYONSettingsRegistry("launcher_tool") - self._addons_manager = None @property @@ -294,34 +176,6 @@ class ActionsModel: self._get_action_objects() self._controller.emit_event("actions.refresh.finished") - def _should_start_last_workfile( - self, - project_name, - task_id, - identifier, - host_name, - not_open_workfile_actions - ): - if identifier in not_open_workfile_actions: - return not not_open_workfile_actions[identifier] - - task_name = None - task_type = None - if task_id is not None: - task_entity = self._controller.get_task_entity( - project_name, task_id - ) - task_name = task_entity["name"] - task_type = task_entity["taskType"] - - output = should_use_last_workfile_on_launch( - project_name, - host_name, - task_name, - task_type - ) - return output - def get_action_items(self, project_name, folder_id, task_id): """Get actions for project. @@ -332,46 +186,18 @@ class ActionsModel: Returns: list[ActionItem]: List of actions. + """ - not_open_workfile_actions = self._get_no_last_workfile_for_context( - project_name, folder_id, task_id) selection = self._prepare_selection(project_name, folder_id, task_id) output = [] action_items = self._get_action_items(project_name) for identifier, action in self._get_action_objects().items(): - if not action.is_compatible(selection): - continue + if action.is_compatible(selection): + output.append(action_items[identifier]) - action_item = action_items[identifier] - # Handling of 'force_not_open_workfile' for applications - if action_item.is_application: - action_item = action_item.copy() - start_last_workfile = self._should_start_last_workfile( - project_name, - task_id, - identifier, - action.application.host_name, - not_open_workfile_actions - ) - action_item.force_not_open_workfile = ( - not start_last_workfile - ) - - output.append(action_item) return output - def set_application_force_not_open_workfile( - self, project_name, folder_id, task_id, action_ids, enabled ): - no_workfile_reg_data = self._get_no_last_workfile_reg_data() - project_data = no_workfile_reg_data.setdefault(project_name, {}) - folder_data = project_data.setdefault(folder_id, {}) - task_data = folder_data.setdefault(task_id, {}) - for action_id in action_ids: - task_data[action_id] = enabled - self._launcher_tool_reg.set_item( - self._not_open_workfile_reg_key, no_workfile_reg_data - ) def trigger_action(self, project_name, folder_id, task_id, identifier): selection = self._prepare_selection(project_name, folder_id, task_id) @@ -390,18 +216,6 @@ class ActionsModel: "full_label": action_label, } ) - if isinstance(action, ApplicationAction): - per_action = self._get_no_last_workfile_for_context( - project_name, folder_id, task_id - ) - start_last_workfile = self._should_start_last_workfile( - project_name, - task_id, - identifier, - action.application.host_name, - per_action - ) - action.data["start_last_workfile"] = start_last_workfile action.process(selection) except Exception as exc: @@ -424,27 +238,6 @@ class ActionsModel: self._addons_manager = AddonsManager() return self._addons_manager - def _get_no_last_workfile_reg_data(self): - try: - no_workfile_reg_data = self._launcher_tool_reg.get_item( - self._not_open_workfile_reg_key) - except ValueError: - no_workfile_reg_data = {} - self._launcher_tool_reg.set_item( - self._not_open_workfile_reg_key, no_workfile_reg_data) - return no_workfile_reg_data - - def _get_no_last_workfile_for_context( - self, project_name, folder_id, task_id - ): - not_open_workfile_reg_data = self._get_no_last_workfile_reg_data() - return ( - not_open_workfile_reg_data - .get(project_name, {}) - .get(folder_id, {}) - .get(task_id, {}) - ) - def _prepare_selection(self, project_name, folder_id, task_id): project_entity = None if project_name: @@ -470,7 +263,6 @@ class ActionsModel: register_launcher_action_path(path) self._discovered_actions = ( discover_launcher_actions() - + self._get_applications_action_classes() ) return self._discovered_actions @@ -498,10 +290,9 @@ class ActionsModel: action_items = {} for identifier, action in self._get_action_objects().items(): - is_application = isinstance(action, ApplicationAction) # Backwards compatibility from 0.3.3 (24/06/10) # TODO: Remove in future releases - if is_application and hasattr(action, "project_settings"): + if hasattr(action, "project_settings"): action.project_entities[project_name] = project_entity action.project_settings[project_name] = project_settings @@ -515,45 +306,7 @@ class ActionsModel: variant_label, icon, action.order, - is_application, - False ) action_items[identifier] = item self._action_items[project_name] = action_items return action_items - - def _get_applications_action_classes(self): - addons_manager = self._get_addons_manager() - applications_addon = addons_manager.get_enabled_addon("applications") - if hasattr(applications_addon, "get_applications_action_classes"): - return applications_addon.get_applications_action_classes() - - # Backwards compatibility from 0.3.3 (24/06/10) - # TODO: Remove in future releases - actions = [] - if applications_addon is None: - return actions - - manager = applications_addon.get_applications_manager() - for full_name, application in manager.applications.items(): - if not application.enabled: - continue - - action = type( - "app_{}".format(full_name), - (ApplicationAction,), - { - "identifier": "application.{}".format(full_name), - "application": application, - "name": application.name, - "label": application.group.label, - "label_variant": application.label, - "group": None, - "icon": application.icon, - "color": getattr(application, "color", None), - "order": getattr(application, "order", None) or 0, - "data": {} - } - ) - actions.append(action) - return actions diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index c64d718172..5131501074 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -11,12 +11,10 @@ from .resources import get_options_image_path ANIMATION_LEN = 7 ACTION_ID_ROLE = QtCore.Qt.UserRole + 1 -ACTION_IS_APPLICATION_ROLE = QtCore.Qt.UserRole + 2 -ACTION_IS_GROUP_ROLE = QtCore.Qt.UserRole + 3 -ACTION_SORT_ROLE = QtCore.Qt.UserRole + 4 -ANIMATION_START_ROLE = QtCore.Qt.UserRole + 5 -ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 6 -FORCE_NOT_OPEN_WORKFILE_ROLE = QtCore.Qt.UserRole + 7 +ACTION_IS_GROUP_ROLE = QtCore.Qt.UserRole + 2 +ACTION_SORT_ROLE = QtCore.Qt.UserRole + 3 +ANIMATION_START_ROLE = QtCore.Qt.UserRole + 4 +ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 5 def _variant_label_sort_getter(action_item): @@ -144,11 +142,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setData(icon, QtCore.Qt.DecorationRole) item.setData(is_group, ACTION_IS_GROUP_ROLE) item.setData(action_item.order, ACTION_SORT_ROLE) - item.setData( - action_item.is_application, ACTION_IS_APPLICATION_ROLE) - item.setData( - action_item.force_not_open_workfile, - FORCE_NOT_OPEN_WORKFILE_ROLE) items_by_id[action_item.identifier] = item action_items_by_id[action_item.identifier] = action_item @@ -263,13 +256,6 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): super(ActionDelegate, self).paint(painter, option, index) - if index.data(FORCE_NOT_OPEN_WORKFILE_ROLE): - rect = QtCore.QRectF( - option.rect.x(), option.rect.y() + option.rect.height(), 5, 5) - painter.setPen(QtCore.Qt.NoPen) - painter.setBrush(QtGui.QColor(200, 0, 0)) - painter.drawEllipse(rect) - if not index.data(ACTION_IS_GROUP_ROLE): return @@ -360,14 +346,11 @@ class ActionsWidget(QtWidgets.QWidget): animation_timer.timeout.connect(self._on_animation) view.clicked.connect(self._on_clicked) - view.customContextMenuRequested.connect(self._on_context_menu) model.refreshed.connect(self._on_model_refresh) self._animated_items = set() self._animation_timer = animation_timer - self._context_menu = None - self._flick = flick self._view = view self._model = model @@ -416,54 +399,6 @@ class ActionsWidget(QtWidgets.QWidget): self._animated_items.add(action_id) self._animation_timer.start() - def _on_context_menu(self, point): - """Creates menu to force skip opening last workfile.""" - index = self._view.indexAt(point) - if not index.isValid(): - return - - if not index.data(ACTION_IS_APPLICATION_ROLE): - return - - menu = QtWidgets.QMenu(self._view) - checkbox = QtWidgets.QCheckBox( - "Skip opening last workfile.", menu) - if index.data(FORCE_NOT_OPEN_WORKFILE_ROLE): - checkbox.setChecked(True) - - action_id = index.data(ACTION_ID_ROLE) - is_group = index.data(ACTION_IS_GROUP_ROLE) - if is_group: - action_items = self._model.get_group_items(action_id) - else: - action_items = [self._model.get_action_item_by_id(action_id)] - action_ids = {action_item.identifier for action_item in action_items} - checkbox.stateChanged.connect( - lambda: self._on_checkbox_changed( - action_ids, checkbox.isChecked() - ) - ) - action = QtWidgets.QWidgetAction(menu) - action.setDefaultWidget(checkbox) - - menu.addAction(action) - - self._context_menu = menu - global_point = self.mapToGlobal(point) - menu.exec_(global_point) - self._context_menu = None - - def _on_checkbox_changed(self, action_ids, is_checked): - if self._context_menu is not None: - self._context_menu.close() - - project_name = self._model.get_selected_project_name() - folder_id = self._model.get_selected_folder_id() - task_id = self._model.get_selected_task_id() - self._controller.set_application_force_not_open_workfile( - project_name, folder_id, task_id, action_ids, is_checked) - self._model.refresh() - def _on_clicked(self, index): if not index or not index.isValid(): return From 05ba75c5e928c22267da9cb4435ea1d341e92f89 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:54:39 +0200 Subject: [PATCH 163/626] added more options how to icon can be defined --- client/ayon_core/tools/utils/lib.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 4b303c0143..424e04cbd0 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -1,11 +1,13 @@ import os import sys +import io import contextlib import collections import traceback from functools import partial from typing import Union, Any +import ayon_api from qtpy import QtWidgets, QtCore, QtGui import qtawesome import qtmaterialsymbols @@ -485,6 +487,9 @@ class _IconsCache: if isinstance(color, QtGui.QColor): color = color.name() parts = [icon_type, icon_def["name"] or "", color] + + elif icon_type in {"url", "ayon_url"}: + parts = [icon_type, icon_def["url"]] return "|".join(parts) @classmethod @@ -517,6 +522,18 @@ class _IconsCache: if qtmaterialsymbols.get_icon_name_char(icon_name) is not None: icon = qtmaterialsymbols.get_icon(icon_name, icon_color) + elif icon_type == "url": + url = icon_def["url"] + icon = QtGui.QPixmap(url) + + elif icon_type == "ayon_url": + url = ayon_api.get_base_url() + icon_def["url"] + stream = io.BytesIO() + ayon_api.download_file_to_stream(url, stream) + pix = QtGui.QPixmap() + pix.loadFromData(stream.getvalue()) + icon = QtGui.QIcon(pix) + if icon is None: icon = cls.get_default() cls._cache[cache_key] = icon From 9123994881100c2864399938c2480213eb219bde Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:55:13 +0200 Subject: [PATCH 164/626] added baseic way to show webactions --- .../tools/launcher/models/actions.py | 83 ++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 1676ab6ec3..e4ac6cdc1e 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,6 +1,9 @@ import os +import ayon_api + from ayon_core import resources +from ayon_core.lib import Logger, NestedCacheItem, CacheItem from ayon_core.addon import AddonsManager from ayon_core.pipeline.actions import ( discover_launcher_actions, @@ -48,6 +51,7 @@ class ActionItem: Get rid of application specific logic. Args: + action_type (Literal["webaction", "local"]): Type of action. identifier (str): Unique identifier of action item. label (str): Action label. variant_label (Union[str, None]): Variant label, full label is @@ -55,24 +59,32 @@ class ActionItem: action if it has same 'label' and have set 'variant_label'. icon (dict[str, str]): Icon definition. order (int): Action ordering. + addon_name (str): Addon name. + addon_version (str): Addon version. full_label (Optional[str]): Full label, if not set it is generated from 'label' and 'variant_label'. """ def __init__( self, + action_type, identifier, label, variant_label, icon, order, + addon_name=None, + addon_version=None, full_label=None ): + self.action_type = action_type self.identifier = identifier self.label = label self.variant_label = variant_label self.icon = icon self.order = order + self.addon_name = addon_name + self.addon_version = addon_version self._full_label = full_label def copy(self): @@ -158,6 +170,9 @@ class ActionsModel: self._discovered_actions = None self._actions = None self._action_items = {} + self._webaction_items = NestedCacheItem( + levels=2, default_factory=list + ) self._addons_manager = None @@ -194,12 +209,13 @@ class ActionsModel: for identifier, action in self._get_action_objects().items(): if action.is_compatible(selection): output.append(action_items[identifier]) + output.extend(self._get_webactions(selection)) return output + def trigger_action( + self, acton_type, project_name, folder_id, task_id, identifier ): - - def trigger_action(self, project_name, folder_id, task_id, identifier): selection = self._prepare_selection(project_name, folder_id, task_id) failed = False error_message = None @@ -251,6 +267,68 @@ class ActionsModel: project_settings=project_settings, ) + def _get_webactions(self, selection: LauncherActionSelection): + if not selection.is_project_selected: + return [] + + entity_type = None + entity_id = None + entity_subtypes = [] + if selection.is_task_selected: + entity_type = "task" + entity_id = selection.task_entity["id"] + entity_subtypes = [selection.task_entity["taskType"]] + + elif selection.is_folder_selected: + entity_type = "folder" + entity_id = selection.folder_entity["id"] + entity_subtypes = [selection.folder_entity["folderType"]] + + entity_ids = [] + if entity_id: + entity_ids.append(entity_id) + + project_name = selection.project_name + cache: CacheItem = self._webaction_items[project_name][entity_id] + if cache.is_valid: + return cache.get_data() + + context = { + "projectName": project_name, + "entityType": entity_type, + "entitySubtypes": entity_subtypes, + "entityIds": entity_ids, + } + response = ayon_api.post("actions/list", **context) + try: + response.raise_for_status() + except Exception: + self.log.warning("Failed to collect webactions.", exc_info=True) + return [] + + action_items = [] + for action in response.data["actions"]: + # NOTE Settings variant may be important for triggering? + # - action["variant"] + icon = action["icon"] + if icon["type"] == "url" and icon["url"].startswith("/"): + icon["type"] = "ayon_url" + action_items.append(ActionItem( + "webaction", + action["identifier"], + # action["category"], + action["label"], + None, + action["icon"], + action["order"], + action["addonName"], + action["addonVersion"], + )) + + cache.update_data(action_items) + + return cache.get_data() + def _get_discovered_action_classes(self): if self._discovered_actions is None: # NOTE We don't need to register the paths, but that would @@ -301,6 +379,7 @@ class ActionsModel: icon = get_action_icon(action) item = ActionItem( + "local", identifier, label, variant_label, From 04a2f08fea82ce4f546f673d4859f6a6116712ae Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Apr 2025 18:05:54 +0200 Subject: [PATCH 165/626] Added new Pre and Post Loader Hooks Added functions to register/deregister them. --- client/ayon_core/pipeline/__init__.py | 24 ++++++++ client/ayon_core/pipeline/load/__init__.py | 24 ++++++++ client/ayon_core/pipeline/load/plugins.py | 66 ++++++++++++++++++++++ 3 files changed, 114 insertions(+) diff --git a/client/ayon_core/pipeline/__init__.py b/client/ayon_core/pipeline/__init__.py index 41bcd0dbd1..c6903f1b8e 100644 --- a/client/ayon_core/pipeline/__init__.py +++ b/client/ayon_core/pipeline/__init__.py @@ -42,6 +42,18 @@ from .load import ( register_loader_plugin_path, deregister_loader_plugin, + discover_loader_pre_hook_plugin, + register_loader_pre_hook_plugin, + deregister_loader_pre_hook_plugin, + register_loader_pre_hook_plugin_path, + deregister_loader_pre_hook_plugin_path, + + discover_loader_post_hook_plugin, + register_loader_post_hook_plugin, + deregister_loader_post_hook_plugin, + register_loader_post_hook_plugin_path, + deregister_loader_post_hook_plugin_path, + load_container, remove_container, update_container, @@ -160,6 +172,18 @@ __all__ = ( "register_loader_plugin_path", "deregister_loader_plugin", + "discover_loader_pre_hook_plugin", + "register_loader_pre_hook_plugin", + "deregister_loader_pre_hook_plugin", + "register_loader_pre_hook_plugin_path", + "deregister_loader_pre_hook_plugin_path", + + "discover_loader_post_hook_plugin", + "register_loader_post_hook_plugin", + "deregister_loader_post_hook_plugin", + "register_loader_post_hook_plugin_path", + "deregister_loader_post_hook_plugin_path", + "load_container", "remove_container", "update_container", diff --git a/client/ayon_core/pipeline/load/__init__.py b/client/ayon_core/pipeline/load/__init__.py index bdc5ece620..fdbcaec1b9 100644 --- a/client/ayon_core/pipeline/load/__init__.py +++ b/client/ayon_core/pipeline/load/__init__.py @@ -49,6 +49,18 @@ from .plugins import ( deregister_loader_plugin_path, register_loader_plugin_path, deregister_loader_plugin, + + discover_loader_pre_hook_plugin, + register_loader_pre_hook_plugin, + deregister_loader_pre_hook_plugin, + register_loader_pre_hook_plugin_path, + deregister_loader_pre_hook_plugin_path, + + discover_loader_post_hook_plugin, + register_loader_post_hook_plugin, + deregister_loader_post_hook_plugin, + register_loader_post_hook_plugin_path, + deregister_loader_post_hook_plugin_path, ) @@ -103,4 +115,16 @@ __all__ = ( "deregister_loader_plugin_path", "register_loader_plugin_path", "deregister_loader_plugin", + + "discover_loader_pre_hook_plugin", + "register_loader_pre_hook_plugin", + "deregister_loader_pre_hook_plugin", + "register_loader_pre_hook_plugin_path", + "deregister_loader_pre_hook_plugin_path", + + "discover_loader_post_hook_plugin", + "register_loader_post_hook_plugin", + "deregister_loader_post_hook_plugin", + "register_loader_post_hook_plugin_path", + "deregister_loader_post_hook_plugin_path", ) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index b601914acd..553e88c2f7 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -1,5 +1,6 @@ import os import logging +from typing import ClassVar from ayon_core.settings import get_project_settings from ayon_core.pipeline.plugin_discover import ( @@ -264,6 +265,30 @@ class ProductLoaderPlugin(LoaderPlugin): """ +class PreLoadHookPlugin: + """Plugin that should be run before any Loaders in 'loaders' + + Should be used as non-invasive method to enrich core loading process. + Any external studio might want to modify loaded data before or afte + they are loaded without need to override existing core plugins. + """ + loaders: ClassVar[set[str]] + + def process(self, context, name=None, namespace=None, options=None): + pass + +class PostLoadHookPlugin: + """Plugin that should be run after any Loaders in 'loaders' + + Should be used as non-invasive method to enrich core loading process. + Any external studio might want to modify loaded data before or afte + they are loaded without need to override existing core plugins. + loaders: ClassVar[set[str]] + """ + def process(self, context, name=None, namespace=None, options=None): + pass + + def discover_loader_plugins(project_name=None): from ayon_core.lib import Logger from ayon_core.pipeline import get_current_project_name @@ -300,3 +325,44 @@ def deregister_loader_plugin_path(path): def register_loader_plugin_path(path): return register_plugin_path(LoaderPlugin, path) + + +def discover_loader_pre_hook_plugin(project_name=None): + plugins = discover(PreLoadHookPlugin) + return plugins + +def register_loader_pre_hook_plugin(plugin): + return register_plugin(PreLoadHookPlugin, plugin) + + +def deregister_loader_pre_hook_plugin(plugin): + deregister_plugin(PreLoadHookPlugin, plugin) + + +def register_loader_pre_hook_plugin_path(path): + return register_plugin_path(PreLoadHookPlugin, path) + + +def deregister_loader_pre_hook_plugin_path(path): + deregister_plugin_path(PreLoadHookPlugin, path) + + +def discover_loader_post_hook_plugin(): + plugins = discover(PostLoadHookPlugin) + return plugins + + +def register_loader_post_hook_plugin(plugin): + return register_plugin(PostLoadHookPlugin, plugin) + + +def deregister_loader_post_hook_plugin(plugin): + deregister_plugin(PostLoadHookPlugin, plugin) + + +def register_loader_post_hook_plugin_path(path): + return register_plugin_path(PostLoadHookPlugin, path) + + +def deregister_loader_post_hook_plugin_path(path): + deregister_plugin_path(PostLoadHookPlugin, path) From 7ec99b3715e800643a373eb20ccc9df7301ca2ec Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 3 Apr 2025 18:06:31 +0200 Subject: [PATCH 166/626] Initial implementation of pre/post loader hooks --- .../ayon_core/tools/loader/models/actions.py | 110 ++++++++++++++++-- 1 file changed, 101 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/tools/loader/models/actions.py b/client/ayon_core/tools/loader/models/actions.py index cfe91cadab..c188bf1609 100644 --- a/client/ayon_core/tools/loader/models/actions.py +++ b/client/ayon_core/tools/loader/models/actions.py @@ -9,6 +9,7 @@ import ayon_api from ayon_core.lib import NestedCacheItem from ayon_core.pipeline.load import ( discover_loader_plugins, + discover_loader_pre_hook_plugin, ProductLoaderPlugin, filter_repre_contexts_by_loader, get_loader_identifier, @@ -17,6 +18,8 @@ from ayon_core.pipeline.load import ( load_with_product_contexts, LoadError, IncompatibleLoaderError, + get_loaders_by_name + ) from ayon_core.tools.loader.abstract import ActionItem @@ -50,6 +53,8 @@ class LoaderActionsModel: levels=1, lifetime=self.loaders_cache_lifetime) self._repre_loaders = NestedCacheItem( levels=1, lifetime=self.loaders_cache_lifetime) + self._hook_loaders_by_identifier = NestedCacheItem( + levels=1, lifetime=self.loaders_cache_lifetime) def reset(self): """Reset the model with all cached items.""" @@ -58,6 +63,7 @@ class LoaderActionsModel: self._loaders_by_identifier.reset() self._product_loaders.reset() self._repre_loaders.reset() + self._hook_loaders_by_identifier.reset() def get_versions_action_items(self, project_name, version_ids): """Get action items for given version ids. @@ -143,12 +149,14 @@ class LoaderActionsModel: ACTIONS_MODEL_SENDER, ) loader = self._get_loader_by_identifier(project_name, identifier) + hooks = self._get_hook_loaders_by_identifier(project_name, identifier) if representation_ids is not None: error_info = self._trigger_representation_loader( loader, options, project_name, representation_ids, + hooks ) elif version_ids is not None: error_info = self._trigger_version_loader( @@ -156,6 +164,7 @@ class LoaderActionsModel: options, project_name, version_ids, + hooks ) else: raise NotImplementedError( @@ -307,22 +316,40 @@ class LoaderActionsModel: we want to show loaders for? Returns: - tuple[list[ProductLoaderPlugin], list[LoaderPlugin]]: Discovered - loader plugins. + tuple( + list[ProductLoaderPlugin], + list[LoaderPlugin], + ): Discovered loader plugins. """ loaders_by_identifier_c = self._loaders_by_identifier[project_name] product_loaders_c = self._product_loaders[project_name] repre_loaders_c = self._repre_loaders[project_name] + hook_loaders_by_identifier_c = self._hook_loaders_by_identifier[project_name] if loaders_by_identifier_c.is_valid: - return product_loaders_c.get_data(), repre_loaders_c.get_data() + return ( + product_loaders_c.get_data(), + repre_loaders_c.get_data(), + hook_loaders_by_identifier_c.get_data() + ) # Get all representation->loader combinations available for the # index under the cursor, so we can list the user the options. available_loaders = self._filter_loaders_by_tool_name( project_name, discover_loader_plugins(project_name) ) - + hook_loaders_by_identifier = {} + pre_load_hook_plugins = discover_loader_pre_hook_plugin(project_name) + loaders_by_name = get_loaders_by_name() + for hook_plugin in pre_load_hook_plugins: + for load_plugin_name in hook_plugin.loaders: + load_plugin = loaders_by_name.get(load_plugin_name) + if not load_plugin: + continue + if not load_plugin.enabled: + continue + identifier = get_loader_identifier(load_plugin) + hook_loaders_by_identifier.setdefault(identifier, {}).setdefault("pre", []).append(hook_plugin) repre_loaders = [] product_loaders = [] loaders_by_identifier = {} @@ -340,6 +367,8 @@ class LoaderActionsModel: loaders_by_identifier_c.update_data(loaders_by_identifier) product_loaders_c.update_data(product_loaders) repre_loaders_c.update_data(repre_loaders) + hook_loaders_by_identifier_c.update_data(hook_loaders_by_identifier) + return product_loaders, repre_loaders def _get_loader_by_identifier(self, project_name, identifier): @@ -349,6 +378,13 @@ class LoaderActionsModel: loaders_by_identifier = loaders_by_identifier_c.get_data() return loaders_by_identifier.get(identifier) + def _get_hook_loaders_by_identifier(self, project_name, identifier): + if not self._hook_loaders_by_identifier[project_name].is_valid: + self._get_loaders(project_name) + hook_loaders_by_identifier_c = self._hook_loaders_by_identifier[project_name] + hook_loaders_by_identifier_c = hook_loaders_by_identifier_c.get_data() + return hook_loaders_by_identifier_c.get(identifier) + def _actions_sorter(self, action_item): """Sort the Loaders by their order and then their name. @@ -606,6 +642,7 @@ class LoaderActionsModel: options, project_name, version_ids, + hooks=None ): """Trigger version loader. @@ -655,7 +692,7 @@ class LoaderActionsModel: }) return self._load_products_by_loader( - loader, product_contexts, options + loader, product_contexts, options, hooks=hooks ) def _trigger_representation_loader( @@ -664,6 +701,7 @@ class LoaderActionsModel: options, project_name, representation_ids, + hooks ): """Trigger representation loader. @@ -716,10 +754,16 @@ class LoaderActionsModel: }) return self._load_representations_by_loader( - loader, repre_contexts, options + loader, repre_contexts, options, hooks ) - def _load_representations_by_loader(self, loader, repre_contexts, options): + def _load_representations_by_loader( + self, + loader, + repre_contexts, + options, + hooks=None + ): """Loops through list of repre_contexts and loads them with one loader Args: @@ -737,12 +781,26 @@ class LoaderActionsModel: if version < 0: version = "Hero" try: + for hook_plugin in hooks.get("pre", []): + hook_plugin.process( + loader, + repre_context, + options=options + ) + load_with_repre_context( loader, repre_context, options=options ) + for hook_plugin in hooks.get("post", []): + hook_plugin.process( + loader, + repre_context, + options=options + ) + except IncompatibleLoaderError as exc: print(exc) error_info.append(( @@ -770,7 +828,13 @@ class LoaderActionsModel: )) return error_info - def _load_products_by_loader(self, loader, version_contexts, options): + def _load_products_by_loader( + self, + loader, + version_contexts, + options, + hooks=None + ): """Triggers load with ProductLoader type of loaders. Warning: @@ -791,12 +855,26 @@ class LoaderActionsModel: product_name = context.get("product", {}).get("name") or "N/A" product_names.append(product_name) try: + for hook_plugin in hooks.get("pre", []): + hook_plugin.process( + loader, + version_contexts, + options=options + ) + load_with_product_contexts( loader, version_contexts, - options=options + options=options, ) + for hook_plugin in hooks.get("post", []): + hook_plugin.process( + loader, + version_contexts, + options=options + ) + except Exception as exc: formatted_traceback = None if not isinstance(exc, LoadError): @@ -817,12 +895,26 @@ class LoaderActionsModel: version_context.get("product", {}).get("name") or "N/A" ) try: + for hook_plugin in hooks.get("pre", []): + hook_plugin.process( + loader, + version_contexts, + options=options + ) + load_with_product_context( loader, version_context, options=options ) + for hook_plugin in hooks.get("post", []): + hook_plugin.process( + loader, + version_context, + options=options + ) + except Exception as exc: formatted_traceback = None if not isinstance(exc, LoadError): From 698fef28330ce277ec9310535c1bb9277443dc5c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:43:24 +0200 Subject: [PATCH 167/626] added helper function to get settings variant --- client/ayon_core/lib/__init__.py | 2 ++ client/ayon_core/lib/ayon_info.py | 24 ++++++++++++++++++++---- client/ayon_core/settings/lib.py | 9 ++------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/lib/__init__.py b/client/ayon_core/lib/__init__.py index 92c3966e77..ad906774d3 100644 --- a/client/ayon_core/lib/__init__.py +++ b/client/ayon_core/lib/__init__.py @@ -132,6 +132,7 @@ from .ayon_info import ( is_staging_enabled, is_dev_mode_enabled, is_in_tests, + get_settings_variant, ) terminal = Terminal @@ -242,4 +243,5 @@ __all__ = [ "is_staging_enabled", "is_dev_mode_enabled", "is_in_tests", + "get_settings_variant", ] diff --git a/client/ayon_core/lib/ayon_info.py b/client/ayon_core/lib/ayon_info.py index 7e194a824e..1a7e4cca76 100644 --- a/client/ayon_core/lib/ayon_info.py +++ b/client/ayon_core/lib/ayon_info.py @@ -78,15 +78,15 @@ def is_using_ayon_console(): return "ayon_console" in executable_filename -def is_headless_mode_enabled(): +def is_headless_mode_enabled() -> bool: return os.getenv("AYON_HEADLESS_MODE") == "1" -def is_staging_enabled(): +def is_staging_enabled() -> bool: return os.getenv("AYON_USE_STAGING") == "1" -def is_in_tests(): +def is_in_tests() -> bool: """Process is running in automatic tests mode. Returns: @@ -96,7 +96,7 @@ def is_in_tests(): return os.environ.get("AYON_IN_TESTS") == "1" -def is_dev_mode_enabled(): +def is_dev_mode_enabled() -> bool: """Dev mode is enabled in AYON. Returns: @@ -106,6 +106,22 @@ def is_dev_mode_enabled(): return os.getenv("AYON_USE_DEV") == "1" +def get_settings_variant() -> str: + """Get AYON settings variant. + + Returns: + str: Settings variant. + + """ + if is_dev_mode_enabled(): + return os.environ["AYON_BUNDLE_NAME"] + + if is_staging_enabled(): + return "staging" + + return "production" + + def get_ayon_info(): executable_args = get_ayon_launcher_args() if is_running_from_build(): diff --git a/client/ayon_core/settings/lib.py b/client/ayon_core/settings/lib.py index aa56fa8326..72af07799f 100644 --- a/client/ayon_core/settings/lib.py +++ b/client/ayon_core/settings/lib.py @@ -56,14 +56,9 @@ class _AyonSettingsCache: @classmethod def _get_variant(cls): if _AyonSettingsCache.variant is None: - from ayon_core.lib import is_staging_enabled, is_dev_mode_enabled - - variant = "production" - if is_dev_mode_enabled(): - variant = cls._get_bundle_name() - elif is_staging_enabled(): - variant = "staging" + from ayon_core.lib import get_settings_variant + variant = get_settings_variant() # Cache variant _AyonSettingsCache.variant = variant From 9a816436786cb3b4387cf4d7e09692329982e6ee Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:45:23 +0200 Subject: [PATCH 168/626] added addon name and version to action data --- client/ayon_core/tools/launcher/abstract.py | 14 ++++++-- client/ayon_core/tools/launcher/control.py | 22 ++++++++++--- .../tools/launcher/models/actions.py | 9 ++++- .../tools/launcher/ui/actions_widget.py | 33 +++++++++++++++---- 4 files changed, 65 insertions(+), 13 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index 9189418c1c..372e84c149 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -295,14 +295,24 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def trigger_action(self, project_name, folder_id, task_id, action_id): + def trigger_action( + self, + action_type, + action_id, + project_name, + folder_id, + task_id, + ): """Trigger action on given context. Args: + action_type (Literal["webaction", "local"]): Action type. + action_id (str): Action identifier. project_name (Union[str, None]): Project name. folder_id (Union[str, None]): Folder id. task_id (Union[str, None]): Task id. - action_id (str): Action identifier. + addon_name (Union[str, None]): Addon name. + addon_version (Union[str, None]): Addon version. """ pass diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index 671c831505..5b7eb1ab4a 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -32,7 +32,7 @@ class BaseLauncherController( @property def event_system(self): - """Inner event system for workfiles tool controller. + """Inner event system for launcher tool controller. Is used for communication with UI. Event system is created on demand. @@ -135,11 +135,25 @@ class BaseLauncherController( return self._actions_model.get_action_items( project_name, folder_id, task_id) + def trigger_action( + self, + action_type, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, ): - - def trigger_action(self, project_name, folder_id, task_id, identifier): self._actions_model.trigger_action( - project_name, folder_id, task_id, identifier) + action_type, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ) # General methods def refresh(self): diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index e4ac6cdc1e..7ab9b33ecd 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -214,7 +214,14 @@ class ActionsModel: return output def trigger_action( - self, acton_type, project_name, folder_id, task_id, identifier + self, + acton_type, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, ): selection = self._prepare_selection(project_name, folder_id, task_id) failed = False diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 5131501074..f46af4bf61 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -11,10 +11,13 @@ from .resources import get_options_image_path ANIMATION_LEN = 7 ACTION_ID_ROLE = QtCore.Qt.UserRole + 1 -ACTION_IS_GROUP_ROLE = QtCore.Qt.UserRole + 2 -ACTION_SORT_ROLE = QtCore.Qt.UserRole + 3 -ANIMATION_START_ROLE = QtCore.Qt.UserRole + 4 -ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 5 +ACTION_TYPE_ROLE = QtCore.Qt.UserRole + 2 +ACTION_IS_GROUP_ROLE = QtCore.Qt.UserRole + 3 +ACTION_SORT_ROLE = QtCore.Qt.UserRole + 4 +ACTION_ADDON_NAME_ROLE = QtCore.Qt.UserRole + 5 +ACTION_ADDON_VERSION_ROLE = QtCore.Qt.UserRole + 6 +ANIMATION_START_ROLE = QtCore.Qt.UserRole + 7 +ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 8 def _variant_label_sort_getter(action_item): @@ -141,6 +144,9 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setData(label, QtCore.Qt.DisplayRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(is_group, ACTION_IS_GROUP_ROLE) + item.setData(action_item.action_type, ACTION_TYPE_ROLE) + item.setData(action_item.addon_name, ACTION_ADDON_NAME_ROLE) + item.setData(action_item.addon_version, ACTION_ADDON_VERSION_ROLE) item.setData(action_item.order, ACTION_SORT_ROLE) items_by_id[action_item.identifier] = item action_items_by_id[action_item.identifier] = action_item @@ -411,8 +417,17 @@ class ActionsWidget(QtWidgets.QWidget): task_id = self._model.get_selected_task_id() if not is_group: + action_type = index.data(ACTION_TYPE_ROLE) + addon_name = index.data(ACTION_ADDON_NAME_ROLE) + addon_version = index.data(ACTION_ADDON_VERSION_ROLE) self._controller.trigger_action( - project_name, folder_id, task_id, action_id + action_type, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, ) self._start_animation(index) return @@ -434,6 +449,12 @@ class ActionsWidget(QtWidgets.QWidget): action_item = actions_mapping[result] self._controller.trigger_action( - project_name, folder_id, task_id, action_item.identifier + action_item.action_type, + action_item.identifier, + project_name, + folder_id, + task_id, + action_item.addon_name, + action_item.addon_version, ) self._start_animation(index) From d07e3b937241ca637e298690494235b3c8c50431 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:46:41 +0200 Subject: [PATCH 169/626] implemented webaction trigger --- .../tools/launcher/models/actions.py | 116 +++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 7ab9b33ecd..648833e421 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,9 +1,17 @@ import os +import platform +import subprocess +from urllib.parse import urlencode import ayon_api from ayon_core import resources -from ayon_core.lib import Logger, NestedCacheItem, CacheItem +from ayon_core.lib import ( + Logger, + NestedCacheItem, + CacheItem, + get_settings_variant, +) from ayon_core.addon import AddonsManager from ayon_core.pipeline.actions import ( discover_launcher_actions, @@ -176,6 +184,8 @@ class ActionsModel: self._addons_manager = None + self._variant = get_settings_variant() + @property def log(self): if self._log is None: @@ -223,6 +233,17 @@ class ActionsModel: addon_name, addon_version, ): + if acton_type == "webaction": + self._trigger_webaction( + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ) + return + selection = self._prepare_selection(project_name, folder_id, task_id) failed = False error_message = None @@ -306,8 +327,8 @@ class ActionsModel: "entitySubtypes": entity_subtypes, "entityIds": entity_ids, } - response = ayon_api.post("actions/list", **context) try: + response = ayon_api.post("actions/list", **context) response.raise_for_status() except Exception: self.log.warning("Failed to collect webactions.", exc_info=True) @@ -336,6 +357,97 @@ class ActionsModel: return cache.get_data() + def _trigger_webaction( + self, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ): + entity_type = None + entity_ids = [] + if task_id: + entity_type = "task" + entity_ids.append(task_id) + elif folder_id: + entity_type = "folder" + entity_ids.append(folder_id) + + query = { + "addonName": addon_name, + "addonVersion": addon_version, + "identifier": identifier, + "variant": self._variant, + } + url = f"actions/execute?{urlencode(query)}" + context = { + "projectName": project_name, + "entityType": entity_type, + "entityIds": entity_ids, + } + + # TODO pass label in as argument? + action_label= "Webaction" + + failed = False + error_message = None + try: + self._controller.emit_event( + "action.trigger.started", + { + "identifier": identifier, + "full_label": action_label, + } + ) + response = ayon_api.post(url, **context) + response.raise_for_status() + data = response.data + if data["success"] == True: + self._handle_webaction_response(data) + else: + error_message = data["message"] + failed = True + + except Exception as exc: + self.log.warning("Action trigger failed.", exc_info=True) + failed = True + error_message = str(exc) + + self._controller.emit_event( + "action.trigger.finished", + { + "identifier": identifier, + "failed": failed, + "error_message": error_message, + "full_label": action_label, + } + ) + + def _handle_webaction_response(self, data): + response_type = data["type"] + # Nothing to do + if response_type == "server": + return + + if response_type == "launcher": + uri = data["uri"] + # There might be a better way to do this? + # Not sure if all linux distributions have 'xdg-open' available + platform_name = platform.system().lower() + if platform_name == "windows": + os.startfile(uri) + elif platform_name == "darwin": + subprocess.run(["open", uri]) + else: + subprocess.run(["xdg-open", uri]) + return + + raise Exception( + "Unknown webaction response type '{response_type}'" + ) + def _get_discovered_action_classes(self): if self._discovered_actions is None: # NOTE We don't need to register the paths, but that would From 777b835e86b7915e50408214da1f458c35247479 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:07:42 +0200 Subject: [PATCH 170/626] added 'transparent' icon type --- client/ayon_core/tools/utils/lib.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 424e04cbd0..4814e625df 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -490,6 +490,13 @@ class _IconsCache: elif icon_type in {"url", "ayon_url"}: parts = [icon_type, icon_def["url"]] + + elif icon_type == "transparent": + size = icon_def.get("size") + if size is None: + size = 256 + parts = [icon_type, str(size)] + return "|".join(parts) @classmethod @@ -534,6 +541,14 @@ class _IconsCache: pix.loadFromData(stream.getvalue()) icon = QtGui.QIcon(pix) + elif icon_type == "transparent": + size = icon_def.get("size") + if size is None: + size = 256 + pix = QtGui.QPixmap(size, size) + pix.fill(QtCore.Qt.transparent) + icon = QtGui.QIcon(pix) + if icon is None: icon = cls.get_default() cls._cache[cache_key] = icon From 39170381a0d8255521aa1fa23ba828a538b06db2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:08:01 +0200 Subject: [PATCH 171/626] handle empty icon in actions widget --- client/ayon_core/tools/launcher/ui/actions_widget.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index f46af4bf61..4ba407042d 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -128,7 +128,10 @@ class ActionsQtModel(QtGui.QStandardItemModel): action_items_by_id = {} for action_item_info in all_action_items_info: action_item, is_group = action_item_info - icon = get_qt_icon(action_item.icon) + icon_def = action_item.icon + if not icon_def: + icon_def = {"type": "transparent", "size": 256} + icon = get_qt_icon(icon_def) if is_group: label = action_item.label else: From 4d1ad759cade765f783f96515e61d47a5d9e7f26 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:08:35 +0200 Subject: [PATCH 172/626] handle missing icon in action manifest --- client/ayon_core/tools/launcher/models/actions.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 648833e421..0834fdd5eb 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -338,16 +338,17 @@ class ActionsModel: for action in response.data["actions"]: # NOTE Settings variant may be important for triggering? # - action["variant"] - icon = action["icon"] - if icon["type"] == "url" and icon["url"].startswith("/"): + icon = action.get("icon") + if icon and icon["type"] == "url" and icon["url"].startswith("/"): icon["type"] = "ayon_url" + action_items.append(ActionItem( "webaction", action["identifier"], # action["category"], action["label"], None, - action["icon"], + icon, action["order"], action["addonName"], action["addonVersion"], From 2cd0b0ddbfdc8086156a2dee50aada811a3233c8 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 4 Apr 2025 14:47:19 +0200 Subject: [PATCH 173/626] Update OCIO config paths for cleaner structure - Removed redundant directory from ACES 1.2 path - Simplified Nuke default config path --- server/settings/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index a7d82ec363..21612ee362 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -90,12 +90,12 @@ def _ocio_built_in_paths(): "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") }, { - "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/aces_1.2/config.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", # noqa: E501 "label": "ACES 1.2", "description": "Aces 1.2 OCIO config file." }, { - "value": "{BUILTIN_OCIO_ROOT}/OpenColorIOConfigs/nuke-default/config.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/nuke-default/config.ocio", # noqa: E501 "label": "Nuke default", }, ] From e76691ea6e62473a923e9ae576d161a418f5e288 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 15:39:32 +0200 Subject: [PATCH 174/626] Moved usage of hooks out of UI actions to utils It is assumed that utils could be used in some kind 'load API', `actions` are tightly bound to UI loading. --- client/ayon_core/pipeline/load/utils.py | 74 +++++++++++++++++-- .../ayon_core/tools/loader/models/actions.py | 49 ++---------- 2 files changed, 72 insertions(+), 51 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index de8e1676e7..d280aa3407 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -288,7 +288,13 @@ def get_representation_context(project_name, representation): def load_with_repre_context( - Loader, repre_context, namespace=None, name=None, options=None, **kwargs + Loader, + repre_context, + namespace=None, + name=None, + options=None, + hooks=None, + **kwargs ): # Ensure the Loader is compatible for the representation @@ -322,11 +328,24 @@ def load_with_repre_context( # Deprecated - to be removed in OpenPype 3.16.6 or 3.17.0. loader._fname = get_representation_path_from_context(repre_context) - return loader.load(repre_context, name, namespace, options) + return _load_context( + Loader, + repre_context, + name, + namespace, + options, + hooks + ) def load_with_product_context( - Loader, product_context, namespace=None, name=None, options=None, **kwargs + Loader, + product_context, + namespace=None, + name=None, + options=None, + hooks=None, + **kwargs ): # Ensure options is a dictionary when no explicit options provided @@ -344,12 +363,24 @@ def load_with_product_context( Loader.__name__, product_context["folder"]["path"] ) ) - - return Loader().load(product_context, name, namespace, options) + return _load_context( + Loader, + product_context, + name, + namespace, + options, + hooks + ) def load_with_product_contexts( - Loader, product_contexts, namespace=None, name=None, options=None, **kwargs + Loader, + product_contexts, + namespace=None, + name=None, + options=None, + hooks=None, + **kwargs ): # Ensure options is a dictionary when no explicit options provided @@ -371,8 +402,37 @@ def load_with_product_contexts( Loader.__name__, joined_product_names ) ) + return _load_context( + Loader, + product_contexts, + name, + namespace, + options, + hooks + ) - return Loader().load(product_contexts, name, namespace, options) + +def _load_context(Loader, contexts, hooks, name, namespace, options): + """Helper function to wrap hooks around generic load function. + + Only dynamic part is different context(s) to be loaded. + """ + for hook_plugin in hooks.get("pre", []): + hook_plugin.process( + contexts, + name, + namespace, + options, + ) + load_return = Loader().load(contexts, name, namespace, options) + for hook_plugin in hooks.get("post", []): + hook_plugin.process( + contexts, + name, + namespace, + options, + ) + return load_return def load_container( diff --git a/client/ayon_core/tools/loader/models/actions.py b/client/ayon_core/tools/loader/models/actions.py index c188bf1609..7151dbdaec 100644 --- a/client/ayon_core/tools/loader/models/actions.py +++ b/client/ayon_core/tools/loader/models/actions.py @@ -781,26 +781,14 @@ class LoaderActionsModel: if version < 0: version = "Hero" try: - for hook_plugin in hooks.get("pre", []): - hook_plugin.process( - loader, - repre_context, - options=options - ) load_with_repre_context( loader, repre_context, - options=options + options=options, + hooks=hooks ) - for hook_plugin in hooks.get("post", []): - hook_plugin.process( - loader, - repre_context, - options=options - ) - except IncompatibleLoaderError as exc: print(exc) error_info.append(( @@ -855,26 +843,12 @@ class LoaderActionsModel: product_name = context.get("product", {}).get("name") or "N/A" product_names.append(product_name) try: - for hook_plugin in hooks.get("pre", []): - hook_plugin.process( - loader, - version_contexts, - options=options - ) - load_with_product_contexts( loader, version_contexts, options=options, + hooks=hooks ) - - for hook_plugin in hooks.get("post", []): - hook_plugin.process( - loader, - version_contexts, - options=options - ) - except Exception as exc: formatted_traceback = None if not isinstance(exc, LoadError): @@ -895,26 +869,13 @@ class LoaderActionsModel: version_context.get("product", {}).get("name") or "N/A" ) try: - for hook_plugin in hooks.get("pre", []): - hook_plugin.process( - loader, - version_contexts, - options=options - ) - load_with_product_context( loader, version_context, - options=options + options=options, + hooks=hooks ) - for hook_plugin in hooks.get("post", []): - hook_plugin.process( - loader, - version_context, - options=options - ) - except Exception as exc: formatted_traceback = None if not isinstance(exc, LoadError): From f10564ffb83dce99bd623aa10b5cb622f6d9ffa5 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 16:25:59 +0200 Subject: [PATCH 175/626] Removed unnecessary functions --- client/ayon_core/pipeline/load/__init__.py | 4 ---- client/ayon_core/pipeline/load/plugins.py | 9 --------- 2 files changed, 13 deletions(-) diff --git a/client/ayon_core/pipeline/load/__init__.py b/client/ayon_core/pipeline/load/__init__.py index fdbcaec1b9..7f9734f94e 100644 --- a/client/ayon_core/pipeline/load/__init__.py +++ b/client/ayon_core/pipeline/load/__init__.py @@ -50,13 +50,11 @@ from .plugins import ( register_loader_plugin_path, deregister_loader_plugin, - discover_loader_pre_hook_plugin, register_loader_pre_hook_plugin, deregister_loader_pre_hook_plugin, register_loader_pre_hook_plugin_path, deregister_loader_pre_hook_plugin_path, - discover_loader_post_hook_plugin, register_loader_post_hook_plugin, deregister_loader_post_hook_plugin, register_loader_post_hook_plugin_path, @@ -116,13 +114,11 @@ __all__ = ( "register_loader_plugin_path", "deregister_loader_plugin", - "discover_loader_pre_hook_plugin", "register_loader_pre_hook_plugin", "deregister_loader_pre_hook_plugin", "register_loader_pre_hook_plugin_path", "deregister_loader_pre_hook_plugin_path", - "discover_loader_post_hook_plugin", "register_loader_post_hook_plugin", "deregister_loader_post_hook_plugin", "register_loader_post_hook_plugin_path", diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 553e88c2f7..6b1591221a 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -327,10 +327,6 @@ def register_loader_plugin_path(path): return register_plugin_path(LoaderPlugin, path) -def discover_loader_pre_hook_plugin(project_name=None): - plugins = discover(PreLoadHookPlugin) - return plugins - def register_loader_pre_hook_plugin(plugin): return register_plugin(PreLoadHookPlugin, plugin) @@ -347,11 +343,6 @@ def deregister_loader_pre_hook_plugin_path(path): deregister_plugin_path(PreLoadHookPlugin, path) -def discover_loader_post_hook_plugin(): - plugins = discover(PostLoadHookPlugin) - return plugins - - def register_loader_post_hook_plugin(plugin): return register_plugin(PostLoadHookPlugin, plugin) From 92600726b3e9e08a5f3f7f7d63d3919cf436b011 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 16:27:50 +0200 Subject: [PATCH 176/626] Extracted get_hook_loaders_by_identifier to utils --- client/ayon_core/pipeline/load/__init__.py | 2 ++ client/ayon_core/pipeline/load/utils.py | 32 +++++++++++++++++++ .../ayon_core/tools/loader/models/actions.py | 16 ++-------- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/client/ayon_core/pipeline/load/__init__.py b/client/ayon_core/pipeline/load/__init__.py index 7f9734f94e..eaba8cd78d 100644 --- a/client/ayon_core/pipeline/load/__init__.py +++ b/client/ayon_core/pipeline/load/__init__.py @@ -24,6 +24,7 @@ from .utils import ( get_loader_identifier, get_loaders_by_name, + get_hook_loaders_by_identifier, get_representation_path_from_context, get_representation_path, @@ -89,6 +90,7 @@ __all__ = ( "get_loader_identifier", "get_loaders_by_name", + "get_hook_loaders_by_identifier", "get_representation_path_from_context", "get_representation_path", diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index d280aa3407..9d3635a186 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -16,6 +16,7 @@ from ayon_core.lib import ( ) from ayon_core.pipeline import ( Anatomy, + discover ) log = logging.getLogger(__name__) @@ -1149,3 +1150,34 @@ def filter_containers(containers, project_name): uptodate_containers.append(container) return output + + +def get_hook_loaders_by_identifier(): + """Discovers pre/post hooks for loader plugins. + + Returns: + (dict) {"LoaderName": {"pre": ["PreLoader1"], "post":["PreLoader2]} + """ + # beware of circular imports! + from .plugins import PreLoadHookPlugin, PostLoadHookPlugin + hook_loaders_by_identifier = {} + _get_hook_loaders(hook_loaders_by_identifier, PreLoadHookPlugin, "pre") + _get_hook_loaders(hook_loaders_by_identifier, PostLoadHookPlugin, "post") + return hook_loaders_by_identifier + + +def _get_hook_loaders(hook_loaders_by_identifier, loader_plugin, loader_type): + load_hook_plugins = discover(loader_plugin) + loaders_by_name = get_loaders_by_name() + for hook_plugin in load_hook_plugins: + for load_plugin_name in hook_plugin.loaders: + load_plugin = loaders_by_name.get(load_plugin_name) + if not load_plugin: + continue + if not load_plugin.enabled: + continue + identifier = get_loader_identifier(load_plugin) + (hook_loaders_by_identifier.setdefault(identifier, {}) + .setdefault(loader_type, []).append( + hook_plugin) + ) diff --git a/client/ayon_core/tools/loader/models/actions.py b/client/ayon_core/tools/loader/models/actions.py index 7151dbdaec..71bd0c1289 100644 --- a/client/ayon_core/tools/loader/models/actions.py +++ b/client/ayon_core/tools/loader/models/actions.py @@ -18,7 +18,8 @@ from ayon_core.pipeline.load import ( load_with_product_contexts, LoadError, IncompatibleLoaderError, - get_loaders_by_name + get_loaders_by_name, + get_hook_loaders_by_identifier ) from ayon_core.tools.loader.abstract import ActionItem @@ -338,18 +339,7 @@ class LoaderActionsModel: available_loaders = self._filter_loaders_by_tool_name( project_name, discover_loader_plugins(project_name) ) - hook_loaders_by_identifier = {} - pre_load_hook_plugins = discover_loader_pre_hook_plugin(project_name) - loaders_by_name = get_loaders_by_name() - for hook_plugin in pre_load_hook_plugins: - for load_plugin_name in hook_plugin.loaders: - load_plugin = loaders_by_name.get(load_plugin_name) - if not load_plugin: - continue - if not load_plugin.enabled: - continue - identifier = get_loader_identifier(load_plugin) - hook_loaders_by_identifier.setdefault(identifier, {}).setdefault("pre", []).append(hook_plugin) + hook_loaders_by_identifier = get_hook_loaders_by_identifier() repre_loaders = [] product_loaders = [] loaders_by_identifier = {} From 969358d37a73abcbaf09df63137260b089a732df Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 16:30:38 +0200 Subject: [PATCH 177/626] Removed missed unnecessary functions --- client/ayon_core/pipeline/__init__.py | 4 ---- client/ayon_core/tools/loader/models/actions.py | 1 - 2 files changed, 5 deletions(-) diff --git a/client/ayon_core/pipeline/__init__.py b/client/ayon_core/pipeline/__init__.py index c6903f1b8e..beb5fa5ac2 100644 --- a/client/ayon_core/pipeline/__init__.py +++ b/client/ayon_core/pipeline/__init__.py @@ -42,13 +42,11 @@ from .load import ( register_loader_plugin_path, deregister_loader_plugin, - discover_loader_pre_hook_plugin, register_loader_pre_hook_plugin, deregister_loader_pre_hook_plugin, register_loader_pre_hook_plugin_path, deregister_loader_pre_hook_plugin_path, - discover_loader_post_hook_plugin, register_loader_post_hook_plugin, deregister_loader_post_hook_plugin, register_loader_post_hook_plugin_path, @@ -172,13 +170,11 @@ __all__ = ( "register_loader_plugin_path", "deregister_loader_plugin", - "discover_loader_pre_hook_plugin", "register_loader_pre_hook_plugin", "deregister_loader_pre_hook_plugin", "register_loader_pre_hook_plugin_path", "deregister_loader_pre_hook_plugin_path", - "discover_loader_post_hook_plugin", "register_loader_post_hook_plugin", "deregister_loader_post_hook_plugin", "register_loader_post_hook_plugin_path", diff --git a/client/ayon_core/tools/loader/models/actions.py b/client/ayon_core/tools/loader/models/actions.py index 71bd0c1289..07195f4b05 100644 --- a/client/ayon_core/tools/loader/models/actions.py +++ b/client/ayon_core/tools/loader/models/actions.py @@ -9,7 +9,6 @@ import ayon_api from ayon_core.lib import NestedCacheItem from ayon_core.pipeline.load import ( discover_loader_plugins, - discover_loader_pre_hook_plugin, ProductLoaderPlugin, filter_repre_contexts_by_loader, get_loader_identifier, From 42d869973c40ae8508d620fc904ce29ea5909e10 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 16:42:23 +0200 Subject: [PATCH 178/626] Fixed circular import --- client/ayon_core/pipeline/load/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index 9d3635a186..910ffb2eac 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -16,7 +16,6 @@ from ayon_core.lib import ( ) from ayon_core.pipeline import ( Anatomy, - discover ) log = logging.getLogger(__name__) @@ -413,7 +412,7 @@ def load_with_product_contexts( ) -def _load_context(Loader, contexts, hooks, name, namespace, options): +def _load_context(Loader, contexts, name, namespace, options, hooks): """Helper function to wrap hooks around generic load function. Only dynamic part is different context(s) to be loaded. @@ -1160,6 +1159,7 @@ def get_hook_loaders_by_identifier(): """ # beware of circular imports! from .plugins import PreLoadHookPlugin, PostLoadHookPlugin + hook_loaders_by_identifier = {} _get_hook_loaders(hook_loaders_by_identifier, PreLoadHookPlugin, "pre") _get_hook_loaders(hook_loaders_by_identifier, PostLoadHookPlugin, "post") @@ -1167,6 +1167,8 @@ def get_hook_loaders_by_identifier(): def _get_hook_loaders(hook_loaders_by_identifier, loader_plugin, loader_type): + from ..plugin_discover import discover + load_hook_plugins = discover(loader_plugin) loaders_by_name = get_loaders_by_name() for hook_plugin in load_hook_plugins: From 3961f8a5e2282834d6852d49192527365d0e8b8c Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:07:53 +0200 Subject: [PATCH 179/626] Added get_hook_loaders_by_identifier to pipeline API --- client/ayon_core/pipeline/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/ayon_core/pipeline/__init__.py b/client/ayon_core/pipeline/__init__.py index beb5fa5ac2..0a805b16dc 100644 --- a/client/ayon_core/pipeline/__init__.py +++ b/client/ayon_core/pipeline/__init__.py @@ -61,6 +61,7 @@ from .load import ( get_representation_path, get_representation_context, get_repres_contexts, + get_hook_loaders_by_identifier ) from .publish import ( @@ -240,6 +241,8 @@ __all__ = ( "register_workfile_build_plugin_path", "deregister_workfile_build_plugin_path", + "get_hook_loaders_by_identifier", + # Backwards compatible function names "install", "uninstall", From a963f8c137896ec326695c01fdefa509cde9d510 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:08:13 +0200 Subject: [PATCH 180/626] Added get_hook_loaders_by_identifier SceneInventory controller --- client/ayon_core/tools/sceneinventory/control.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/tools/sceneinventory/control.py b/client/ayon_core/tools/sceneinventory/control.py index 60d9bc77a9..acbd67b14d 100644 --- a/client/ayon_core/tools/sceneinventory/control.py +++ b/client/ayon_core/tools/sceneinventory/control.py @@ -5,6 +5,7 @@ from ayon_core.host import HostBase from ayon_core.pipeline import ( registered_host, get_current_context, + get_hook_loaders_by_identifier ) from ayon_core.tools.common_models import HierarchyModel, ProjectsModel @@ -35,6 +36,8 @@ class SceneInventoryController: self._projects_model = ProjectsModel(self) self._event_system = self._create_event_system() + self._hooks_by_identifier = get_hook_loaders_by_identifier() + def get_host(self) -> HostBase: return self._host @@ -115,6 +118,10 @@ class SceneInventoryController: return self._containers_model.get_version_items( project_name, product_ids) + def get_hook_loaders_by_identifier(self): + """Returns lists of pre|post hooks per Loader identifier.""" + return self._hooks_by_identifier + # Site Sync methods def is_sitesync_enabled(self): return self._sitesync_model.is_sitesync_enabled() From 761ef4b4af343496c42a2236b373069210b0758f Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:08:33 +0200 Subject: [PATCH 181/626] Added update methods for Loader Hooks --- client/ayon_core/pipeline/load/plugins.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 6b1591221a..af38cf4c45 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -277,6 +277,10 @@ class PreLoadHookPlugin: def process(self, context, name=None, namespace=None, options=None): pass + def update(self, container, context): + pass + + class PostLoadHookPlugin: """Plugin that should be run after any Loaders in 'loaders' @@ -288,6 +292,9 @@ class PostLoadHookPlugin: def process(self, context, name=None, namespace=None, options=None): pass + def update(self, container, context): + pass + def discover_loader_plugins(project_name=None): from ayon_core.lib import Logger From f44b81a7e58c645481b9653378ece6a72f09f154 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:09:06 +0200 Subject: [PATCH 182/626] Pass hook_loaders_by_id in SceneInventory view --- client/ayon_core/tools/sceneinventory/view.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/sceneinventory/view.py b/client/ayon_core/tools/sceneinventory/view.py index bb95e37d4e..75d3d9a680 100644 --- a/client/ayon_core/tools/sceneinventory/view.py +++ b/client/ayon_core/tools/sceneinventory/view.py @@ -1100,11 +1100,16 @@ class SceneInventoryView(QtWidgets.QTreeView): containers_by_id = self._controller.get_containers_by_item_ids( item_ids ) + hook_loaders_by_id = self._controller.get_hook_loaders_by_identifier() try: for item_id, item_version in zip(item_ids, versions): container = containers_by_id[item_id] try: - update_container(container, item_version) + update_container( + container, + item_version, + hook_loaders_by_id + ) except AssertionError: log.warning("Update failed", exc_info=True) self._show_version_error_dialog( From a5c10767fd3352aa2c7772d16b0e04d094b198fd Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:09:32 +0200 Subject: [PATCH 183/626] Added loader hooks to update_container --- client/ayon_core/pipeline/load/utils.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index 910ffb2eac..abef1bc500 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -520,7 +520,7 @@ def remove_container(container): return Loader().remove(container) -def update_container(container, version=-1): +def update_container(container, version=-1, hooks_by_identifier=None): """Update a container""" from ayon_core.pipeline import get_current_project_name @@ -616,7 +616,20 @@ def update_container(container, version=-1): if not path or not os.path.exists(path): raise ValueError("Path {} doesn't exist".format(path)) - return Loader().update(container, context) + loader_identifier = get_loader_identifier(Loader) + hooks = hooks_by_identifier.get(loader_identifier, {}) + for hook_plugin in hooks.get("pre", []): + hook_plugin.update( + context, + container + ) + update_return = Loader().update(container, context) + for hook_plugin in hooks.get("post", []): + hook_plugin.update( + context, + container + ) + return update_return def switch_container(container, representation, loader_plugin=None): From 82ae29dc12ce92ee748b9c19feab40dc80c4b877 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:10:47 +0200 Subject: [PATCH 184/626] Lazy initialization of get_hook_loaders_by_identifier --- client/ayon_core/tools/sceneinventory/control.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/sceneinventory/control.py b/client/ayon_core/tools/sceneinventory/control.py index acbd67b14d..e6fb459129 100644 --- a/client/ayon_core/tools/sceneinventory/control.py +++ b/client/ayon_core/tools/sceneinventory/control.py @@ -36,7 +36,7 @@ class SceneInventoryController: self._projects_model = ProjectsModel(self) self._event_system = self._create_event_system() - self._hooks_by_identifier = get_hook_loaders_by_identifier() + self._hooks_by_identifier = None def get_host(self) -> HostBase: return self._host @@ -120,6 +120,8 @@ class SceneInventoryController: def get_hook_loaders_by_identifier(self): """Returns lists of pre|post hooks per Loader identifier.""" + if self._hooks_by_identifier is None: + self._hooks_by_identifier = get_hook_loaders_by_identifier() return self._hooks_by_identifier # Site Sync methods From f609d2f5c44e2caf18b7f512e207b2eb6aeab856 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:19:24 +0200 Subject: [PATCH 185/626] Added switch methods to Loader Hooks --- client/ayon_core/pipeline/load/plugins.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index af38cf4c45..e930f034ce 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -280,6 +280,9 @@ class PreLoadHookPlugin: def update(self, container, context): pass + def switch(self, container, context): + pass + class PostLoadHookPlugin: """Plugin that should be run after any Loaders in 'loaders' @@ -295,6 +298,9 @@ class PostLoadHookPlugin: def update(self, container, context): pass + def switch(self, container, context): + pass + def discover_loader_plugins(project_name=None): from ayon_core.lib import Logger From 3a2d831ca632fdbfc93bf2789bdc7501424d5262 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 4 Apr 2025 17:20:09 +0200 Subject: [PATCH 186/626] Added Loader Hooks to switch_container --- client/ayon_core/pipeline/load/utils.py | 27 ++++++++++++++++--- .../sceneinventory/switch_dialog/dialog.py | 8 +++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index abef1bc500..94e7ad53a6 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -632,15 +632,22 @@ def update_container(container, version=-1, hooks_by_identifier=None): return update_return -def switch_container(container, representation, loader_plugin=None): +def switch_container( + container, + representation, + loader_plugin=None, + hooks_by_identifier=None +): """Switch a container to representation Args: container (dict): container information representation (dict): representation entity + loader_plugin (LoaderPlugin) + hooks_by_identifier (dict): {"pre": [PreHookPlugin1], "post":[]} Returns: - function call + return from function call """ from ayon_core.pipeline import get_current_project_name @@ -679,7 +686,21 @@ def switch_container(container, representation, loader_plugin=None): loader = loader_plugin(context) - return loader.switch(container, context) + loader_identifier = get_loader_identifier(loader) + hooks = hooks_by_identifier.get(loader_identifier, {}) + for hook_plugin in hooks.get("pre", []): + hook_plugin.switch( + context, + container + ) + switch_return = loader.switch(container, context) + for hook_plugin in hooks.get("post", []): + hook_plugin.switch( + context, + container + ) + + return switch_return def _fix_representation_context_compatibility(repre_context): diff --git a/client/ayon_core/tools/sceneinventory/switch_dialog/dialog.py b/client/ayon_core/tools/sceneinventory/switch_dialog/dialog.py index a6d88ed44a..c878cad079 100644 --- a/client/ayon_core/tools/sceneinventory/switch_dialog/dialog.py +++ b/client/ayon_core/tools/sceneinventory/switch_dialog/dialog.py @@ -1339,8 +1339,14 @@ class SwitchAssetDialog(QtWidgets.QDialog): repre_entity = repres_by_name[container_repre_name] error = None + hook_loaders_by_id = self._controller.get_hook_loaders_by_identifier() try: - switch_container(container, repre_entity, loader) + switch_container( + container, + repre_entity, + loader, + hook_loaders_by_id + ) except ( LoaderSwitchNotImplementedError, IncompatibleLoaderError, From 0070edb34b7ff68d79d3bb50593c478c1ab39774 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 7 Apr 2025 09:56:37 +0200 Subject: [PATCH 187/626] Updated docstrings --- client/ayon_core/tools/sceneinventory/control.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/sceneinventory/control.py b/client/ayon_core/tools/sceneinventory/control.py index e6fb459129..c4e59699c3 100644 --- a/client/ayon_core/tools/sceneinventory/control.py +++ b/client/ayon_core/tools/sceneinventory/control.py @@ -119,7 +119,11 @@ class SceneInventoryController: project_name, product_ids) def get_hook_loaders_by_identifier(self): - """Returns lists of pre|post hooks per Loader identifier.""" + """Returns lists of pre|post hooks per Loader identifier. + + Returns: + (dict) {"LoaderName": {"pre": ["PreLoader1"], "post":["PreLoader2]} + """ if self._hooks_by_identifier is None: self._hooks_by_identifier = get_hook_loaders_by_identifier() return self._hooks_by_identifier From 310174fd1a0fba4b0713475bc89e28385fe18e0e Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 7 Apr 2025 10:18:19 +0200 Subject: [PATCH 188/626] Fix calling hook --- client/ayon_core/pipeline/load/utils.py | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index 94e7ad53a6..d251dff06f 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -417,16 +417,16 @@ def _load_context(Loader, contexts, name, namespace, options, hooks): Only dynamic part is different context(s) to be loaded. """ - for hook_plugin in hooks.get("pre", []): - hook_plugin.process( + for hook_plugin_cls in hooks.get("pre", []): + hook_plugin_cls().process( contexts, name, namespace, options, ) load_return = Loader().load(contexts, name, namespace, options) - for hook_plugin in hooks.get("post", []): - hook_plugin.process( + for hook_plugin_cls in hooks.get("post", []): + hook_plugin_cls().process( contexts, name, namespace, @@ -618,14 +618,14 @@ def update_container(container, version=-1, hooks_by_identifier=None): loader_identifier = get_loader_identifier(Loader) hooks = hooks_by_identifier.get(loader_identifier, {}) - for hook_plugin in hooks.get("pre", []): - hook_plugin.update( + for hook_plugin_cls in hooks.get("pre", []): + hook_plugin_cls().update( context, container ) update_return = Loader().update(container, context) - for hook_plugin in hooks.get("post", []): - hook_plugin.update( + for hook_plugin_cls in hooks.get("post", []): + hook_plugin_cls().update( context, container ) @@ -688,14 +688,14 @@ def switch_container( loader_identifier = get_loader_identifier(loader) hooks = hooks_by_identifier.get(loader_identifier, {}) - for hook_plugin in hooks.get("pre", []): - hook_plugin.switch( + for hook_plugin_cls in hooks.get("pre", []): + hook_plugin_cls().switch( context, container ) switch_return = loader.switch(container, context) - for hook_plugin in hooks.get("post", []): - hook_plugin.switch( + for hook_plugin_cls in hooks.get("post", []): + hook_plugin_cls().switch( context, container ) @@ -1205,8 +1205,8 @@ def _get_hook_loaders(hook_loaders_by_identifier, loader_plugin, loader_type): load_hook_plugins = discover(loader_plugin) loaders_by_name = get_loaders_by_name() - for hook_plugin in load_hook_plugins: - for load_plugin_name in hook_plugin.loaders: + for hook_plugin_cls in load_hook_plugins: + for load_plugin_name in hook_plugin_cls.loaders: load_plugin = loaders_by_name.get(load_plugin_name) if not load_plugin: continue @@ -1215,5 +1215,5 @@ def _get_hook_loaders(hook_loaders_by_identifier, loader_plugin, loader_type): identifier = get_loader_identifier(load_plugin) (hook_loaders_by_identifier.setdefault(identifier, {}) .setdefault(loader_type, []).append( - hook_plugin) + hook_plugin_cls) ) From a0002774301c859b5b6906dc630500e117fed32f Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 7 Apr 2025 10:57:58 +0200 Subject: [PATCH 189/626] Update naming Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/pipeline/load/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index e930f034ce..9f9c6c223f 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -284,7 +284,7 @@ class PreLoadHookPlugin: pass -class PostLoadHookPlugin: +class PostLoaderHookPlugin: """Plugin that should be run after any Loaders in 'loaders' Should be used as non-invasive method to enrich core loading process. From d11a8d2731c2e22abf8da7c45103690b6b660535 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 7 Apr 2025 10:58:07 +0200 Subject: [PATCH 190/626] Update naming Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/pipeline/load/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 9f9c6c223f..40a5eeb1a8 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -265,7 +265,7 @@ class ProductLoaderPlugin(LoaderPlugin): """ -class PreLoadHookPlugin: +class PreLoaderHookPlugin: """Plugin that should be run before any Loaders in 'loaders' Should be used as non-invasive method to enrich core loading process. From 70cf7fe5d41d282a23c8e974479ef32112d0081a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 7 Apr 2025 10:58:25 +0200 Subject: [PATCH 191/626] Import annotations Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/pipeline/load/plugins.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 40a5eeb1a8..4ac1b3076d 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -1,3 +1,4 @@ +from __future__ import annotations import os import logging from typing import ClassVar From c97b58fc05acd85a5dfda2552c963ec0a6de24e2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:10:39 +0200 Subject: [PATCH 192/626] fix boolean comparison --- client/ayon_core/tools/launcher/models/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 0834fdd5eb..3e46520ae5 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -405,7 +405,7 @@ class ActionsModel: response = ayon_api.post(url, **context) response.raise_for_status() data = response.data - if data["success"] == True: + if data["success"] is True: self._handle_webaction_response(data) else: error_message = data["message"] From 0ec82bd34d83542949ab27ae209c012082714916 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Mon, 7 Apr 2025 18:48:12 +0200 Subject: [PATCH 193/626] check project name when adding or executing `create_project_structure` --- server/__init__.py | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/server/__init__.py b/server/__init__.py index 1b9e7717c9..1de7412d18 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -43,21 +43,22 @@ class CoreAddon(BaseServerAddon): """Return a list of simple actions provided by the addon""" output = [] - # Add 'Create Project Folder Structure' action to folders. - output.append( - SimpleActionManifest( - identifier=f"{IDENTIFIER_PREFIX}.create_project_structure", - label="Create Project Folder Structure", - icon={ - "type": "material-symbols", - "name": "create_new_folder", - }, - order=100, - entity_type="folder", - entity_subtypes=None, - allow_multiselection=False, + if project_name: + # Add 'Create Project Folder Structure' action to folders. + output.append( + SimpleActionManifest( + identifier=f"{IDENTIFIER_PREFIX}.createprojectstructure", + label="Create Project Folder Structure", + icon={ + "type": "material-symbols", + "name": "create_new_folder", + }, + order=100, + entity_type="folder", + entity_subtypes=None, + allow_multiselection=False, + ) ) - ) return output @@ -71,6 +72,14 @@ class CoreAddon(BaseServerAddon): if executor.identifier == \ f"{IDENTIFIER_PREFIX}.create_project_structure": + + if not project_name: + raise ValueError( + f"Can't execute {executor.identifier} because" + " of missing project name." + ) + return + return await executor.get_launcher_action_response( args=[ "create-project-structure", From 7a7f4b44a04af44d9d3fc8debaaefa52f297c81c Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Mon, 7 Apr 2025 18:51:02 +0200 Subject: [PATCH 194/626] use logger from backend with fallback to nxtools --- pyproject.toml | 1 + server/__init__.py | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 94badd2f1a..6b8997d66c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ attrs = "^25.0.0" pyblish-base = "^1.8.7" clique = "^2.0.0" opentimelineio = "^0.17.0" +nxtools = "^1.6" [tool.ruff] diff --git a/server/__init__.py b/server/__init__.py index 1de7412d18..aafd8d6fa5 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -6,6 +6,10 @@ from ayon_server.actions import ( ExecuteResponseModel, SimpleActionManifest, ) +try: + from ayon_server.logging import logger +except ImportError: + from nxtools import logging as logger from .settings import ( CoreSettings, @@ -74,7 +78,7 @@ class CoreAddon(BaseServerAddon): f"{IDENTIFIER_PREFIX}.create_project_structure": if not project_name: - raise ValueError( + logger.error( f"Can't execute {executor.identifier} because" " of missing project name." ) @@ -87,4 +91,4 @@ class CoreAddon(BaseServerAddon): ] ) - raise ValueError(f"Unknown action: {executor.identifier}") + logger.debug(f"Unknown action: {executor.identifier}") From 01069f62ac38d4f7b0668fbd21a2ee7ecdd3a60f Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Mon, 7 Apr 2025 19:24:59 +0200 Subject: [PATCH 195/626] update poetry lock --- poetry.lock | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 96e1dc0f4c..235bb6770d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "appdirs" @@ -887,6 +887,22 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] +[[package]] +name = "nxtools" +version = "1.6" +description = "nxtools is a set of various tools and helpers used by Nebula broadcast automation system and other software by imm studios, z.s." +optional = false +python-versions = ">=3.6,<4.0" +groups = ["dev"] +files = [ + {file = "nxtools-1.6-py3-none-any.whl", hash = "sha256:cde2d2c19193a2bd9c8071eeb3f121474ec34ab5c014de9a90f0c434cdfee716"}, + {file = "nxtools-1.6.tar.gz", hash = "sha256:e91839eef643483a3165165a46a693ad976d40a393ee5476a341e4e8bb102b92"}, +] + +[package.dependencies] +colorama = ">=0.4.4,<0.5.0" +Unidecode = ">=1.2.0,<2.0.0" + [[package]] name = "opentimelineio" version = "0.17.0" @@ -1512,4 +1528,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.9.1,<3.10" -content-hash = "24b6215b9c20a4f64f844d3deb121618aef510b1c5ee54242e50305db6c0c4f4" +content-hash = "c0d98dae3faeed5237f286362f9d280ab17c3d42f7cd41fdd69ee4546983c553" From 44fc6f75ab1352cc8106543d612cbea64db0d03d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 10:40:52 +0200 Subject: [PATCH 196/626] Typo --- client/ayon_core/pipeline/load/plugins.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index e930f034ce..4a503d6f1e 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -269,7 +269,7 @@ class PreLoadHookPlugin: """Plugin that should be run before any Loaders in 'loaders' Should be used as non-invasive method to enrich core loading process. - Any external studio might want to modify loaded data before or afte + Any external studio might want to modify loaded data before or after they are loaded without need to override existing core plugins. """ loaders: ClassVar[set[str]] @@ -288,7 +288,7 @@ class PostLoadHookPlugin: """Plugin that should be run after any Loaders in 'loaders' Should be used as non-invasive method to enrich core loading process. - Any external studio might want to modify loaded data before or afte + Any external studio might want to modify loaded data before or after they are loaded without need to override existing core plugins. loaders: ClassVar[set[str]] """ From 2fe9381471c619c2bff46ea0dfb50d4d5f8dc9ce Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 10:44:21 +0200 Subject: [PATCH 197/626] Added loaded container to Post process arguments --- client/ayon_core/pipeline/load/plugins.py | 9 ++++++++- client/ayon_core/pipeline/load/utils.py | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 4a503d6f1e..1719ee8c07 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -292,7 +292,14 @@ class PostLoadHookPlugin: they are loaded without need to override existing core plugins. loaders: ClassVar[set[str]] """ - def process(self, context, name=None, namespace=None, options=None): + def process( + self, + container, + context, + name=None, + namespace=None, + options=None + ): pass def update(self, container, context): diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index d251dff06f..471d93bb63 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -427,6 +427,7 @@ def _load_context(Loader, contexts, name, namespace, options, hooks): load_return = Loader().load(contexts, name, namespace, options) for hook_plugin_cls in hooks.get("post", []): hook_plugin_cls().process( + load_return, contexts, name, namespace, From fb1879a645e6f16f0bb9dd81349b3cd052b7d91c Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 10:46:11 +0200 Subject: [PATCH 198/626] Updated names --- client/ayon_core/pipeline/load/utils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index 471d93bb63..718316a4c2 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -424,16 +424,16 @@ def _load_context(Loader, contexts, name, namespace, options, hooks): namespace, options, ) - load_return = Loader().load(contexts, name, namespace, options) + loaded_container = Loader().load(contexts, name, namespace, options) for hook_plugin_cls in hooks.get("post", []): hook_plugin_cls().process( - load_return, + loaded_container, contexts, name, namespace, options, ) - return load_return + return loaded_container def load_container( @@ -624,13 +624,13 @@ def update_container(container, version=-1, hooks_by_identifier=None): context, container ) - update_return = Loader().update(container, context) + updated_container = Loader().update(container, context) for hook_plugin_cls in hooks.get("post", []): hook_plugin_cls().update( context, container ) - return update_return + return updated_container def switch_container( @@ -694,14 +694,14 @@ def switch_container( context, container ) - switch_return = loader.switch(container, context) + switched_container = loader.switch(container, context) for hook_plugin_cls in hooks.get("post", []): hook_plugin_cls().switch( context, container ) - return switch_return + return switched_container def _fix_representation_context_compatibility(repre_context): From 1e5f5446a77d5b0872a02498d31b4925a9c7cefa Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 10:49:04 +0200 Subject: [PATCH 199/626] Renamed loaders to more descriptive --- client/ayon_core/pipeline/load/plugins.py | 5 +++-- client/ayon_core/pipeline/load/utils.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 1719ee8c07..26363a40d9 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -272,7 +272,7 @@ class PreLoadHookPlugin: Any external studio might want to modify loaded data before or after they are loaded without need to override existing core plugins. """ - loaders: ClassVar[set[str]] + loader_identifiers: ClassVar[set[str]] def process(self, context, name=None, namespace=None, options=None): pass @@ -290,8 +290,9 @@ class PostLoadHookPlugin: Should be used as non-invasive method to enrich core loading process. Any external studio might want to modify loaded data before or after they are loaded without need to override existing core plugins. - loaders: ClassVar[set[str]] """ + loader_identifiers: ClassVar[set[str]] + def process( self, container, diff --git a/client/ayon_core/pipeline/load/utils.py b/client/ayon_core/pipeline/load/utils.py index 718316a4c2..c61d743d05 100644 --- a/client/ayon_core/pipeline/load/utils.py +++ b/client/ayon_core/pipeline/load/utils.py @@ -1207,7 +1207,7 @@ def _get_hook_loaders(hook_loaders_by_identifier, loader_plugin, loader_type): load_hook_plugins = discover(loader_plugin) loaders_by_name = get_loaders_by_name() for hook_plugin_cls in load_hook_plugins: - for load_plugin_name in hook_plugin_cls.loaders: + for load_plugin_name in hook_plugin_cls.loader_identifiers: load_plugin = loaders_by_name.get(load_plugin_name) if not load_plugin: continue From 8c90fac2b5568cd1e5f38417216d062eab1254bc Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 12:36:21 +0200 Subject: [PATCH 200/626] Fix renamed class names --- client/ayon_core/pipeline/load/plugins.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 02efe5b43a..d069508bfa 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -350,32 +350,32 @@ def register_loader_plugin_path(path): def register_loader_pre_hook_plugin(plugin): - return register_plugin(PreLoadHookPlugin, plugin) + return register_plugin(PreLoaderHookPlugin, plugin) def deregister_loader_pre_hook_plugin(plugin): - deregister_plugin(PreLoadHookPlugin, plugin) + deregister_plugin(PreLoaderHookPlugin, plugin) def register_loader_pre_hook_plugin_path(path): - return register_plugin_path(PreLoadHookPlugin, path) + return register_plugin_path(PreLoaderHookPlugin, path) def deregister_loader_pre_hook_plugin_path(path): - deregister_plugin_path(PreLoadHookPlugin, path) + deregister_plugin_path(PreLoaderHookPlugin, path) def register_loader_post_hook_plugin(plugin): - return register_plugin(PostLoadHookPlugin, plugin) + return register_plugin(PostLoaderHookPlugin, plugin) def deregister_loader_post_hook_plugin(plugin): - deregister_plugin(PostLoadHookPlugin, plugin) + deregister_plugin(PostLoaderHookPlugin, plugin) def register_loader_post_hook_plugin_path(path): - return register_plugin_path(PostLoadHookPlugin, path) + return register_plugin_path(PostLoaderHookPlugin, path) def deregister_loader_post_hook_plugin_path(path): - deregister_plugin_path(PostLoadHookPlugin, path) + deregister_plugin_path(PostLoaderHookPlugin, path) From 5bb3d2f407714d259cdc364c7a34ca1878fbbbdd Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 16:34:58 +0200 Subject: [PATCH 201/626] Refactored existing logic for reusing last rendered frame --- .../plugins/publish/extract_review.py | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index df87abba91..f3adfdcf74 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -403,12 +403,25 @@ class ExtractReview(pyblish.api.InstancePlugin): files_to_clean = [] if temp_data["input_is_sequence"]: self.log.debug("Checking sequence to fill gaps in sequence..") - files_to_clean = self.fill_sequence_gaps( - files=temp_data["origin_repre"]["files"], - staging_dir=new_repre["stagingDir"], - start_frame=temp_data["frame_start"], - end_frame=temp_data["frame_end"] - ) + + files = temp_data["origin_repre"]["files"] + collections = clique.assemble( + files, + patterns=[clique.PATTERNS["frames"]], + minimum_items=1 + )[0] + if len(collections) != 1: + raise KnownPublishError( + "Multiple collections {} found.".format(collections)) + + collection = collections[0] + if fill_type == "existing": + files_to_clean = self.fill_sequence_gaps_from_existing( + collection=collection, + staging_dir=new_repre["stagingDir"], + start_frame=temp_data["frame_start"], + end_frame=temp_data["frame_end"], + ) # create or update outputName output_name = new_repre.get("outputName", "") @@ -883,6 +896,13 @@ class ExtractReview(pyblish.api.InstancePlugin): def fill_sequence_gaps(self, files, staging_dir, start_frame, end_frame): # type: (list, str, int, int) -> list + def fill_sequence_gaps_from_existing( + self, + collection, + staging_dir: str, + start_frame: int, + end_frame: int + ) -> list: """Fill missing files in sequence by duplicating existing ones. This will take nearest frame file and copy it with so as to fill @@ -890,7 +910,7 @@ class ExtractReview(pyblish.api.InstancePlugin): hole ahead. Args: - files (list): List of representation files. + collection (clique.collection) staging_dir (str): Path to staging directory. start_frame (int): Sequence start (no matter what files are there) end_frame (int): Sequence end (no matter what files are there) @@ -903,19 +923,12 @@ class ExtractReview(pyblish.api.InstancePlugin): KnownPublishError: if more than one collection is obtained. """ - collections = clique.assemble(files)[0] - if len(collections) != 1: - raise KnownPublishError( - "Multiple collections {} found.".format(collections)) - - col = collections[0] - # Prepare which hole is filled with what frame # - the frame is filled only with already existing frames - prev_frame = next(iter(col.indexes)) + prev_frame = next(iter(collection.indexes)) hole_frame_to_nearest = {} for frame in range(int(start_frame), int(end_frame) + 1): - if frame in col.indexes: + if frame in collection.indexes: prev_frame = frame else: # Use previous frame as source for hole @@ -923,7 +936,7 @@ class ExtractReview(pyblish.api.InstancePlugin): # Calculate paths added_files = [] - col_format = col.format("{head}{padding}{tail}") + col_format = collection.format("{head}{padding}{tail}") for hole_frame, src_frame in hole_frame_to_nearest.items(): hole_fpath = os.path.join(staging_dir, col_format % hole_frame) src_fpath = os.path.join(staging_dir, col_format % src_frame) From 25a94412396175d3e8934ceb0f838b5c934aa751 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 16:35:50 +0200 Subject: [PATCH 202/626] Added extension to temp_data --- client/ayon_core/plugins/publish/extract_review.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index f3adfdcf74..5c1de70c24 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -591,6 +591,8 @@ class ExtractReview(pyblish.api.InstancePlugin): ext = os.path.splitext(repre["files"][0])[1].replace(".", "") if ext.lower() in self.alpha_exts: input_allow_bg = True + else: + ext = os.path.splitext(repre["files"])[1].replace(".", "") return { "fps": float(instance.data["fps"]), @@ -611,7 +613,8 @@ class ExtractReview(pyblish.api.InstancePlugin): "input_allow_bg": input_allow_bg, "with_audio": with_audio, "without_handles": without_handles, - "handles_are_set": handles_are_set + "handles_are_set": handles_are_set, + "ext": ext } def _ffmpeg_arguments( From b5170670065e76baff535076c409d429765ac5ac Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 8 Apr 2025 16:38:37 +0200 Subject: [PATCH 203/626] Implemented new blank frame fills --- .../plugins/publish/extract_review.py | 62 ++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 5c1de70c24..83893443d9 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -422,6 +422,15 @@ class ExtractReview(pyblish.api.InstancePlugin): start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) + elif fill_type == "blank": + files_to_clean = self.fill_sequence_gaps_with_blanks( + collection=collection, + staging_dir=new_repre["stagingDir"], + resolution_width=temp_data["resolution_width"], + resolution_height=temp_data["resolution_height"], + extension=temp_data["ext"], + ) + # create or update outputName output_name = new_repre.get("outputName", "") @@ -897,8 +906,57 @@ class ExtractReview(pyblish.api.InstancePlugin): return all_args - def fill_sequence_gaps(self, files, staging_dir, start_frame, end_frame): - # type: (list, str, int, int) -> list + def fill_sequence_gaps_with_blanks( + self, + collection: str, + staging_dir: str, + resolution_width: int, + resolution_height: int, + extension: str, + ): + """Fills missing files by blank frame. + + Args: + collection (clique.collection) + staging_dir (str): Path to staging directory. + resolution_width (int): width of source frame + resolution_height (int): height of source frame + extension (str) + + Returns: + list of added files. Those should be cleaned after work + is done. + + """ + blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") + command = get_ffmpeg_tool_args("ffmpeg") + + command.extend([ + "-f", "lavfi", + "-i", "color=c=black:s={}x{}:d=1".format( + resolution_width, resolution_height + ), + "-tune", "stillimage", + "-frames: v" , 1, + blank_frame_path + ]) + + self.log.debug("Executing: {}".format(" ".join(command))) + output = run_subprocess( + command, logger=self.log + ) + self.log.debug("Output: {}".format(output)) + + added_files = [blank_frame_path] + + for missing_frame_name in collection.holes(): + hole_fpath = os.path.join(staging_dir, missing_frame_name) + speedcopy.copyfile(blank_frame_path, hole_fpath) + added_files.append(hole_fpath) + + return added_files + + def fill_sequence_gaps_from_existing( self, collection, From 2af6e95df2831bfe7e5e3e2ebea6ed196146e56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 9 Apr 2025 11:48:09 +0200 Subject: [PATCH 204/626] :recycle: update help and linter issues --- client/ayon_core/pipeline/publish/lib.py | 8 +- client/ayon_core/pipeline/traits/README.md | 114 +++++++++++--------- client/ayon_core/pipeline/traits/content.py | 4 +- pyproject.toml | 6 +- 4 files changed, 71 insertions(+), 61 deletions(-) diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index f1dda288a6..0c1029d282 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -1075,11 +1075,11 @@ def has_trait_representations( Args: instance (pyblish.api.Instance): Instance to check. - + Returns: True: Instance has trait representation. False: Instance does not have trait representation. - + """ return bool(instance.data.get(TRAIT_INSTANCE_KEY)) @@ -1087,7 +1087,7 @@ def has_trait_representations( def add_trait_representations( instance: pyblish.api.Instance, representations: list[Representation] -): +) -> None: """Add trait representations to instance. Args: @@ -1105,7 +1105,7 @@ def add_trait_representations( def set_trait_representations( instance: pyblish.api.Instance, representations: list[Representation] -): +) -> None: """Set trait representations to instance. Args: diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 1566b4f353..3e8ff2449d 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -57,15 +57,15 @@ There are also some assumptions and limitations - like that if `files` in the representation are list they need to be sequence of files (it can't be a bunch of unrelated files). -This system is very flexible in one way, but it lack few very important things: +This system is very flexible in one way, but it lacks few very important things: - it is not clearly defined - you can add easily keys, values, tags but without unforeseeable consequences - it cannot handle "bundles" - multiple files that needs to be versioned together and belong together -- it cannot describe important information that you can't get from the file itself or -it is very pricy (like axis orientation and units from alembic files) +- it cannot describe important information that you can't get from the file itself, or +it is very expensive (like axis orientation and units from alembic files) ### New Representation model @@ -81,7 +81,7 @@ it is based on `TraitBase`. It shouldn't really duplicate information that is available in a moment of loading (or any usage) by other means. It should contain information that couldn't be determined by the file, or the AYON context. Some of those traits are aligned with [OpenAssetIO Media Creation](https://github.com/OpenAssetIO/OpenAssetIO-MediaCreation) with hopes of maintained compatibility (it -should be easy enough to convert between OpenAssetIO Traits and AOYN Traits). +should be easy enough to convert between OpenAssetIO Traits and AYON Traits). #### Details: Representation @@ -114,10 +114,10 @@ image = rep[Image.id] ``` > [!NOTE] -> Trait and their ids - every Trait has its id as s string with -> version appended - so **Image** has `ayon.2d.Image.v1`. This is is used on +> Trait and their ids - every Trait has its id as a string with +> version appended - so **Image** has `ayon.2d.Image.v1`. This is used on > several places (you see its use above for indexing traits). When querying, -> you can also omit the version at the end and it will try its best to find +> you can also omit the version at the end, and it will try its best to find > the latest possible version. More on that in [Traits]() You can construct the `Representation` from dictionary (for example @@ -145,44 +145,44 @@ all it's traits. As mentioned there are several traits defined directly in **ayon-core**. They are namespaced to different packages based on their use: -| namespace | trait | description -|---|---|--- -| color | ColorManaged | hold color management information -| content | MimeType | use MIME type (RFC 2046) to describe content (like image/jpeg) -| | LocatableContent | describe some location (file or URI) -| | FileLocation | path to file, with size and checksum -| | FileLocations | list of `FileLocation` -| | RootlessLocation | Path where root is replaced with AYON root token -| | Compressed | describes compression (of file or other) -| | Bundle | list of list of Traits - compound of inseparable "sub-representations" -| | Fragment | compound type marking the representation as a part of larger group of representations -| cryptography | DigitallySigned | Type traits marking data to be digitally signed -| | PGPSigned | Representation is signed by [PGP](https://www.openpgp.org/) -| lifecycle | Transient | Marks the representation to be temporary - not to be stored. -| | Persistent | Representation should be integrated (stored). Opposite of Transient. -| meta | Tagged | holds list of tag strings. -| | TemplatePath | Template consisted of tokens/keys and data to be used to resolve the template into string -| | Variant | Used to differentiate between data variants of the same output (mp4 as h.264 and h.265 for example) -| | KeepOriginalLocation | Marks the representation to keep the original location of the file -| | KeepOriginalName | Marks the representation to keep the original name of the file -| | SourceApplication | Holds information about producing application, about it's version, variant and platform. -| | IntendedUse | For specifying the intended use of the representation if it cannot be easily determined by other traits. -| three dimensional | Spatial | Spatial information like up-axis, units and handedness. -| | Geometry | Type trait to mark the representation as a geometry. -| | Shader | Type trait to mark the representation as a Shader. -| | Lighting | Type trait to mark the representation as Lighting. -| | IESProfile | States that the representation is IES Profile -| time | FrameRanged | Contains start and end frame information with in and out. -| | Handless | define additional frames at the end or beginning and if those frames are inclusive of the range or not. -| | Sequence | Describes sequence of frames and how the frames are defined in that sequence. -| | SMPTETimecode | Adds timecode information in SMPTE format. -| | Static | Marks the content as not time-variant. -| two dimensional | Image | Type traits of image. -| | PixelBased | Defines resolution and pixel aspect for the image data. -| | Planar | Whether pixel data is in planar configuration or packed. -| | Deep | Image encodes deep pixel data. -| | Overscan | holds overscan/underscan information (added pixels to bottom/sides) -| | UDIM | Representation is UDIM tile set +| namespace | trait | description | +|-------------------|----------------------|----------------------------------------------------------------------------------------------------------| +| color | ColorManaged | hold color management information | +| content | MimeType | use MIME type (RFC 2046) to describe content (like image/jpeg) | +| | LocatableContent | describe some location (file or URI) | +| | FileLocation | path to file, with size and checksum | +| | FileLocations | list of `FileLocation` | +| | RootlessLocation | Path where root is replaced with AYON root token | +| | Compressed | describes compression (of file or other) | +| | Bundle | list of list of Traits - compound of inseparable "sub-representations" | +| | Fragment | compound type marking the representation as a part of larger group of representations | +| cryptography | DigitallySigned | Type traits marking data to be digitally signed | +| | PGPSigned | Representation is signed by [PGP](https://www.openpgp.org/) | +| lifecycle | Transient | Marks the representation to be temporary - not to be stored. | +| | Persistent | Representation should be integrated (stored). Opposite of Transient. | +| meta | Tagged | holds list of tag strings. | +| | TemplatePath | Template consisted of tokens/keys and data to be used to resolve the template into string | +| | Variant | Used to differentiate between data variants of the same output (mp4 as h.264 and h.265 for example) | +| | KeepOriginalLocation | Marks the representation to keep the original location of the file | +| | KeepOriginalName | Marks the representation to keep the original name of the file | +| | SourceApplication | Holds information about producing application, about it's version, variant and platform. | +| | IntendedUse | For specifying the intended use of the representation if it cannot be easily determined by other traits. | +| three dimensional | Spatial | Spatial information like up-axis, units and handedness. | +| | Geometry | Type trait to mark the representation as a geometry. | +| | Shader | Type trait to mark the representation as a Shader. | +| | Lighting | Type trait to mark the representation as Lighting. | +| | IESProfile | States that the representation is IES Profile. | +| time | FrameRanged | Contains start and end frame information with in and out. | +| | Handless | define additional frames at the end or beginning and if those frames are inclusive of the range or not. | +| | Sequence | Describes sequence of frames and how the frames are defined in that sequence. | +| | SMPTETimecode | Adds timecode information in SMPTE format. | +| | Static | Marks the content as not time-variant. | +| two dimensional | Image | Type traits of image. | +| | PixelBased | Defines resolution and pixel aspect for the image data. | +| | Planar | Whether pixel data is in planar configuration or packed. | +| | Deep | Image encodes deep pixel data. | +| | Overscan | holds overscan/underscan information (added pixels to bottom/sides). | +| | UDIM | Representation is UDIM tile set. | Traits are Python data classes with optional validation and helper methods. If they implement `TraitBase.validate(Representation)` method, they can validate against all other traits @@ -193,7 +193,7 @@ in the representation if needed. > easily resolve pydantic-core dependency (as it is binary written in Rust). > [!NOTE] -> Every trait has id, name and some human readable description. Every trait +> Every trait has id, name and some human-readable description. Every trait > also has `persistent` property that is by default set to True. This > Controls whether this trait should be stored with the persistent representation > or not. Useful for traits to be used just to control the publishing process. @@ -211,6 +211,8 @@ from ayon_core.pipeline.traits import ( Persistent, Representation, Static, + + TraitValidationError, ) rep = Representation(name="reference image", traits=[ @@ -318,8 +320,18 @@ class MyAddon(AYONAddon, ITraits): ## Developer notes -### Pydantic models -If you want to use MyPy linter, you need to make sure that -optional fields typed as `Optional[Type]` needs to set default value -using `default` or `default_factory` parameter. Otherwise MyPy will -complain about missing named arguments. +Adding new trait based representations in to publish Instance and working with them is using +set of helper function defined in `ayon_core.pipeline.publish` module. These are: + +* add_trait_representations +* get_trait_representations +* has_trait_representations +* set_trait_representations + +And their main purpose is to handle the key under which the representation +is stored in the instance data. This is done to avoid name clashes with +other representations. The key is defined in the `AYON_PUBLISH_REPRESENTATION_KEY`. +It is strongly recommended to use those functions instead of +directly accessing the instance data. This is to ensure that the +code will work even if the key is changed in the future. + diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index 5a19daedac..bad90f5875 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -5,8 +5,8 @@ import contextlib import re from dataclasses import dataclass -# TC003 is there because Path in TYPECHECKING will fail in tests -from pathlib import Path # noqa: TC003 +# TCH003 is there because Path in TYPECHECKING will fail in tests +from pathlib import Path # noqa: TCH003 from typing import ClassVar, Generator, Optional from .representation import Representation diff --git a/pyproject.toml b/pyproject.toml index c5f2aff2d7..1ab501fbce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ pytest = "^8.0" pytest-print = "^1.0" ayon-python-api = "^1.0" # linting dependencies -ruff = "^0.9.3" +ruff = "^0.11.4" pre-commit = "^4" codespell = "^2.2.6" semver = "^3.0.2" @@ -80,7 +80,6 @@ exclude = [ line-length = 79 indent-width = 4 - # Assume Python 3.9 target-version = "py39" @@ -91,7 +90,7 @@ pydocstyle.convention = "google" select = ["ALL"] ignore = [ "PTH", - # "ANN101", # must be set in older version of ruff + # "ANN001", # must be set in older version of ruff "ANN204", "COM812", "S603", @@ -100,7 +99,6 @@ ignore = [ "UP006", # support for older python version (type vs. Type) "UP007", # ..^ "UP035", # .. - "UP045", # Use `X | None` for type annotations "ARG002", "INP001", # add `__init__.py` to namespaced package "FIX002", # FIX all TODOs From 46f72685b11e7a372dfe04ef11820a7a483032c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 9 Apr 2025 12:21:21 +0200 Subject: [PATCH 205/626] :memo: add loader and publisher info to docs --- client/ayon_core/pipeline/traits/README.md | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 3e8ff2449d..235d8a367c 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -317,6 +317,122 @@ class MyAddon(AYONAddon, ITraits): MyTraitBar, ] ``` +## Usage in Loaders + +In loaders, you can implement `is_compatible_loader()` method to check if the +representation is compatible with the loader. You can use `Representation.from_dict()` to +create the representation from the context. You can also use `Representation.contains_traits()` +to check if the representation contains the required traits. You can even check for specific +values in the traits. + +You can use similar concepts directly in the `load()` method to get the traits. Here is +an example of how to use the traits in the hypothetical Maya loader: + +```python +"""Alembic loader using traits.""" +from __future__ import annotations +import json +from typing import Any, TypeVar, Type +from ayon_maya.api.plugin import MayaLoader +from ayon_core.pipeline.traits import ( + FileLocation, + Spatial, + + Representation, + TraitBase, +) + +T = TypeVar("T", bound=TraitBase) + + +class AlembicTraitLoader(MayaLoader): + """Alembic loader using traits.""" + label = "Alembic Trait Loader" + ... + + required_traits: list[T] = [ + FileLocation, + Spatial, + ] + + @staticmethod + def is_compatible_loader(context: dict[str, Any]) -> bool: + traits_raw = context["representation"].get("traits") + if not traits_raw: + return False + + # construct Representation object from the context + representation = Representation.from_dict( + name=context["representation"]["name"], + representation_id=context["representation"]["id"], + trait_data=json.loads(traits_raw), + ) + + # check if the representation is compatible with this loader + if representation.contains_traits(AlembicTraitLoader.required_traits): + # you can also check for specific values in traits here + return True + return False + + ... +``` + +## Usage Publishing plugins + +You can create the representations in the same way as mentioned in the examples above. +Straightforward way is to use `Representation` class and add the traits to it. Collect +traits in list and then pass them to the `Representation` constructor. You should add +the new Representation to the instance data using `add_trait_representations()` function. + +```python +class SomeExtractor(Extractor): + """Some extractor.""" + ... + + def extract(self, instance: Instance) -> None: + """Extract the data.""" + # get the path to the file + path = self.get_path(instance) + + # create the representation + traits: list[TraitBase] = [ + Geometry(), + MimeType(mime_type="application/abc"), + Persistent(), + Spatial( + up_axis=cmds.upAxis(q=True, axis=True), + meters_per_unit=maya_units_to_meters_per_unit( + instance.context.data["linearUnits"]), + handedness="right", + ), + ] + + if instance.data.get("frameStart"): + traits.append( + FrameRanged( + frame_start=instance.data["frameStart"], + frame_end=instance.data["frameEnd"], + frames_per_second=instance.context.data["fps"], + ) + ) + + representation = Representation( + name="alembic", + traits=[ + FileLocation( + file_path=Path(path), + file_size=os.path.getsize(path), + file_hash=get_file_hash(Path(path)) + ), + *traits], + ) + + add_trait_representations( + instance, + [representation], + ) + ... +``` ## Developer notes From f66ff742f7171994e289cdb3b7a9a9a0501bf3c4 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 9 Apr 2025 15:38:19 +0200 Subject: [PATCH 206/626] Updates review extract to improve quality Improves review extraction by: - Switches output extension to '.png' for better image quality. - Adds compression level to ffmpeg command. - Adds scaling to the video filter. - Forces re-encoding for lossy formats. --- .../plugins/publish/extract_otio_review.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_otio_review.py b/client/ayon_core/plugins/publish/extract_otio_review.py index 7a9a020ff0..e96c1a1b6b 100644 --- a/client/ayon_core/plugins/publish/extract_otio_review.py +++ b/client/ayon_core/plugins/publish/extract_otio_review.py @@ -54,7 +54,7 @@ class ExtractOTIOReview( # plugin default attributes to_width = 1280 to_height = 720 - output_ext = ".jpg" + output_ext = ".png" def process(self, instance): # Not all hosts can import these modules. @@ -474,6 +474,7 @@ class ExtractOTIOReview( command.extend([ "-start_number", str(in_frame_start), + "-compression_level", "5", "-framerate", str(sequence_fps), "-i", input_path ]) @@ -510,6 +511,11 @@ class ExtractOTIOReview( "-tune", "stillimage" ]) + if video or sequence: + command.extend([ + "-vf", f"scale={self.to_width}:{self.to_height}:flags=lanczos" + ]) + # add output attributes command.extend([ "-start_number", str(out_frame_start) @@ -520,9 +526,12 @@ class ExtractOTIOReview( input_extension and self.output_ext == input_extension ): - command.extend([ - "-c", "copy" - ]) + if input_extension.lower() in [ + '.png', '.tif', '.tiff', '.dpx', '.exr']: + command.extend(["-c", "copy"]) + else: + # For lossy formats, force re-encode + command.extend(["-pix_fmt", "rgba"]) # add output path at the end command.append(output_path) From edc0aa5867684eceed3da3a809567ab60f3ecc17 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 9 Apr 2025 15:56:39 +0200 Subject: [PATCH 207/626] Remove unnecessary E501 comments --- server/settings/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index 21612ee362..f49866dc95 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -90,12 +90,12 @@ def _ocio_built_in_paths(): "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") }, { - "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", "label": "ACES 1.2", "description": "Aces 1.2 OCIO config file." }, { - "value": "{BUILTIN_OCIO_ROOT}/nuke-default/config.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/nuke-default/config.ocio", "label": "Nuke default", }, ] From d076f152fd4c13cf4b66ef668537d2ce41cfcecb Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 9 Apr 2025 18:22:07 +0200 Subject: [PATCH 208/626] Renamed files_to_clean as now its dictionary --- client/ayon_core/plugins/publish/extract_review.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 83893443d9..ec2569e3f6 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -416,14 +416,14 @@ class ExtractReview(pyblish.api.InstancePlugin): collection = collections[0] if fill_type == "existing": - files_to_clean = self.fill_sequence_gaps_from_existing( + added_frames_and_files = self.fill_sequence_gaps_from_existing( collection=collection, staging_dir=new_repre["stagingDir"], start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) elif fill_type == "blank": - files_to_clean = self.fill_sequence_gaps_with_blanks( + added_frames_and_files = self.fill_sequence_gaps_with_blanks( collection=collection, staging_dir=new_repre["stagingDir"], resolution_width=temp_data["resolution_width"], @@ -487,8 +487,8 @@ class ExtractReview(pyblish.api.InstancePlugin): run_subprocess(subprcs_cmd, shell=True, logger=self.log) # delete files added to fill gaps - if files_to_clean: - for f in files_to_clean: + if added_frames_and_files: + for f in added_frames_and_files.values(): os.unlink(f) new_repre.update({ From 6c404c88e970c872ba4acf860d1d1850d91e80fb Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 9 Apr 2025 18:23:43 +0200 Subject: [PATCH 209/626] Added filling by previous published version --- .../plugins/publish/extract_review.py | 124 +++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index ec2569e3f6..1cffcaf68c 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import os import re import copy @@ -5,6 +7,7 @@ import json import shutil import subprocess from abc import ABC, abstractmethod +from typing import Dict, Any import clique import speedcopy @@ -29,6 +32,7 @@ from ayon_core.pipeline.publish import ( get_publish_instance_label, ) from ayon_core.pipeline.publish.lib import add_repre_files_for_cleanup +from ayon_api import get_last_version_by_product_name, get_representations def frame_to_timecode(frame: int, fps: float) -> str: @@ -430,7 +434,24 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_height=temp_data["resolution_height"], extension=temp_data["ext"], ) - + elif fill_type == "previous": + added_frames_and_files = self.fill_sequence_gaps_with_previous( + collection=collection, + staging_dir=new_repre["stagingDir"], + instance=instance, + current_repre=repre, + start_frame=temp_data["frame_start"], + end_frame=temp_data["frame_end"], + ) + # fallback to original workflow + if added_frames_and_files is None: + added_frames_and_files = self.fill_sequence_gaps_from_existing( + collection=collection, + staging_dir=new_repre["stagingDir"], + start_frame=temp_data["frame_start"], + end_frame=temp_data["frame_end"], + ) + temp_data["filled_files"] = added_frames_and_files # create or update outputName output_name = new_repre.get("outputName", "") @@ -906,6 +927,99 @@ class ExtractReview(pyblish.api.InstancePlugin): return all_args + def fill_sequence_gaps_with_previous( + self, + collection: str, + staging_dir: str, + instance: pyblish.plugin.Instance, + current_repre: Dict[Any, Any], + start_frame: int, + end_frame: int + ) -> Dict[int, str] | None: + """Tries to replace missing frames from ones from last version""" + repre_file_paths = self._get_last_version_files( + instance, current_repre) + if repre_file_paths is None: + # issues in getting last version files, falling back + return None + + prev_collection = clique.assemble( + repre_file_paths, + patterns=[clique.PATTERNS["frames"]], + minimum_items=1 + )[0][0] + prev_col_format = prev_collection.format("{head}{padding}{tail}") + + added_files = {} + anatomy = instance.context.data["anatomy"] + col_format = collection.format("{head}{padding}{tail}") + for frame in range(start_frame, end_frame + 1): + if frame in collection.indexes: + continue + hole_fpath = os.path.join(staging_dir, col_format % frame) + + previous_version_path = prev_col_format % frame + # limits too large padding coming from Anatomy + previous_version_path = ( + os.path.join( + anatomy.fill_root(os.path.dirname(previous_version_path)), + os.path.basename(previous_version_path) + ) + ) + if not os.path.exists(previous_version_path): + self.log.warning( + "Missing frame should be replaced from " + f"'{previous_version_path}' but that doesn't exist. " + "Falling back to filling from currently last rendered." + ) + return None + + self.log.warning( + f"Replacing missing '{hole_fpath}' with " + f"'{previous_version_path}'" + ) + speedcopy.copyfile(previous_version_path, hole_fpath) + added_files[frame] = hole_fpath + + return added_files + + def _get_last_version_files( + self, + instance: pyblish.plugin.Instance, + current_repre: Dict[Any, Any], + ): + product_name = instance.data["productName"] + project_name = instance.data["projectEntity"]["name"] + folder_entity = instance.data["folderEntity"] + + version_entity = get_last_version_by_product_name( + project_name, + product_name, + folder_entity["id"], + fields={"id"} + ) + if not version_entity: + return None + + repres = get_representations( + project_name, + version_ids=[version_entity["id"]] + ) + matching_repre = None + for repre in repres: + if repre["name"] == current_repre["name"]: + matching_repre = repre + break + if not matching_repre: + return None + + repre_file_paths = [ + file_info["path"] + for file_info in matching_repre["files"] + ] + + return repre_file_paths + def fill_sequence_gaps_with_blanks( self, collection: str, @@ -1052,6 +1166,14 @@ class ExtractReview(pyblish.api.InstancePlugin): # Make sure to have full path to one input file full_input_path_single_file = full_input_path + filled_files = temp_data.get("filled_files", {}) + if filled_files: + first_frame, first_file = list(filled_files.items())[0] + if first_file < full_input_path_single_file: + self.log.warning(f"Using filled frame: '{first_file}'") + full_input_path_single_file = first_file + temp_data["first_sequence_frame"] = first_frame + filename_suffix = output_def["filename_suffix"] output_ext = output_def.get("ext") From be54d9deb815aa03c615bf5629af8bd6f708f0bd Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 9 Apr 2025 18:24:27 +0200 Subject: [PATCH 210/626] Missed renamed variable initialization --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 1cffcaf68c..61fbf2d90d 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -404,7 +404,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ) temp_data = self.prepare_temp_data(instance, repre, output_def) - files_to_clean = [] + added_frames_and_files = {} if temp_data["input_is_sequence"]: self.log.debug("Checking sequence to fill gaps in sequence..") From 3fe0c251dfdf449dc037706368cc87585c5771dc Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 9 Apr 2025 18:29:20 +0200 Subject: [PATCH 211/626] Refactored filling by blanks --- .../plugins/publish/extract_review.py | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 61fbf2d90d..8c3186d390 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -430,6 +430,8 @@ class ExtractReview(pyblish.api.InstancePlugin): added_frames_and_files = self.fill_sequence_gaps_with_blanks( collection=collection, staging_dir=new_repre["stagingDir"], + start_frame=temp_data["frame_start"], + end_frame=temp_data["frame_end"], resolution_width=temp_data["resolution_width"], resolution_height=temp_data["resolution_height"], extension=temp_data["ext"], @@ -1024,24 +1026,13 @@ class ExtractReview(pyblish.api.InstancePlugin): self, collection: str, staging_dir: str, + start_frame: int, + end_frame: int, resolution_width: int, resolution_height: int, extension: str, - ): - """Fills missing files by blank frame. - - Args: - collection (clique.collection) - staging_dir (str): Path to staging directory. - resolution_width (int): width of source frame - resolution_height (int): height of source frame - extension (str) - - Returns: - list of added files. Those should be cleaned after work - is done. - - """ + ) -> Dict[int, str] | None: + """Fills missing files by blank frame.""" blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") command = get_ffmpeg_tool_args("ffmpeg") @@ -1063,14 +1054,16 @@ class ExtractReview(pyblish.api.InstancePlugin): added_files = [blank_frame_path] - for missing_frame_name in collection.holes(): - hole_fpath = os.path.join(staging_dir, missing_frame_name) + col_format = collection.format("{head}{padding}{tail}") + for frame in range(start_frame, end_frame + 1): + if frame in collection.indexes: + continue + hole_fpath = os.path.join(staging_dir, col_format % frame) speedcopy.copyfile(blank_frame_path, hole_fpath) - added_files.append(hole_fpath) + added_files[frame] = hole_fpath return added_files - def fill_sequence_gaps_from_existing( self, collection, From 0860fd130254a7a93916f50155e2370a5285d753 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 9 Apr 2025 18:29:45 +0200 Subject: [PATCH 212/626] Updated return type --- client/ayon_core/plugins/publish/extract_review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 8c3186d390..fdb7a887f8 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1084,7 +1084,7 @@ class ExtractReview(pyblish.api.InstancePlugin): end_frame (int): Sequence end (no matter what files are there) Returns: - list of added files. Those should be cleaned after work + dict[int, str] of added files. Those should be cleaned after work is done. Raises: @@ -1113,7 +1113,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "Missing previously detected file: {}".format(src_fpath)) speedcopy.copyfile(src_fpath, hole_fpath) - added_files.append(hole_fpath) + added_files[hole_frame] = hole_fpath return added_files From 51f86e5c5743f3252bbc60745f44f806ff386457 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 11:20:55 +0200 Subject: [PATCH 213/626] Bump server dependency version --- package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.py b/package.py index 9f01049fb9..d9edc36cdd 100644 --- a/package.py +++ b/package.py @@ -6,7 +6,7 @@ client_dir = "ayon_core" plugin_for = ["ayon_server"] -ayon_server_version = ">=1.7.5,<2.0.0" +ayon_server_version = ">=1.7.6,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = {} From f14a00b51024d876076c0c6b1a1d534d16ddb13d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 14:59:36 +0200 Subject: [PATCH 214/626] Implemented review from explicit frames --- .../plugins/publish/extract_review.py | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index fdb7a887f8..1d6aec6d1d 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -453,6 +453,14 @@ class ExtractReview(pyblish.api.InstancePlugin): start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) + elif fill_type == "only_rendered": + temp_data["explicit_frames"] = [ + os.path.join( + new_repre["stagingDir"], file + ).replace("\\", "/") + for file in files + ] + temp_data["filled_files"] = added_frames_and_files # create or update outputName @@ -514,6 +522,10 @@ class ExtractReview(pyblish.api.InstancePlugin): for f in added_frames_and_files.values(): os.unlink(f) + if (temp_data["explicit_frames_metadata_path"] + and os.path.exists(temp_data["explicit_frames_metadata_path"])): + os.unlink(temp_data["explicit_frames_metadata_path"]) + new_repre.update({ "fps": temp_data["fps"], "name": "{}_{}".format(output_name, output_ext), @@ -646,7 +658,9 @@ class ExtractReview(pyblish.api.InstancePlugin): "with_audio": with_audio, "without_handles": without_handles, "handles_are_set": handles_are_set, - "ext": ext + "ext": ext, + "explicit_frames": [], # absolute paths to rendered files + "explicit_frames_metadata_path": None # abs path to metadata file } def _ffmpeg_arguments( @@ -728,7 +742,8 @@ class ExtractReview(pyblish.api.InstancePlugin): if layer_name: ffmpeg_input_args.extend(["-layer", layer_name]) - if temp_data["input_is_sequence"]: + explicit_frames = temp_data["explicit_frames"] + if temp_data["input_is_sequence"] and not explicit_frames: # Set start frame of input sequence (just frame in filename) # - definition of input filepath # - add handle start if output should be without handles @@ -755,7 +770,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "-to", "{:0.10f}".format(duration_seconds) ]) - if temp_data["output_is_sequence"]: + if temp_data["output_is_sequence"] and not explicit_frames: # Set start frame of output sequence (just frame in filename) # - this is definition of an output ffmpeg_output_args.extend([ @@ -786,10 +801,29 @@ class ExtractReview(pyblish.api.InstancePlugin): "-frames:v", str(output_frames_len) ]) - # Add video/image input path - ffmpeg_input_args.extend([ - "-i", path_to_subprocess_arg(temp_data["full_input_path"]) - ]) + if not explicit_frames: + # Add video/image input path + ffmpeg_input_args.extend([ + "-i", path_to_subprocess_arg(temp_data["full_input_path"]) + ]) + else: + staging_dir = os.path.dirname(temp_data["full_input_path"]) + explicit_frames_path = os.path.join( + staging_dir, "explicit_frames.txt") + with open(explicit_frames_path, "w") as fp: + lines = [ + f"file {file}" + for file in temp_data["explicit_frames"] + ] + fp.write("\n".join(lines)) + temp_data["explicit_frames_metadata_path"] = explicit_frames_path + + # let ffmpeg use only rendered files, might have gaps + ffmpeg_input_args.extend([ + "-f", "concat", + "-safe", "0", + "-i", path_to_subprocess_arg(explicit_frames_path) + ]) # Add audio arguments if there are any. Skipped when output are images. if not temp_data["output_ext_is_image"] and temp_data["with_audio"]: From c210f62e1980a0784d231477d7488be45b38d09d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:12:15 +0200 Subject: [PATCH 215/626] Added fill_missing_frames to settings --- server/settings/publish_plugins.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 39a9c028f9..3a0e932606 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -12,6 +12,14 @@ from ayon_server.settings import ( from ayon_server.types import ColorRGBA_uint8 +def _handle_missing_frames_enum(): + return [ + {"value": "closest_existing", "label": "Use closest existing"}, + {"value": "blank", "label": "Generate blank frame"}, + {"value": "previous_version", "label": "Use previous version"}, + {"value": "only_rendered", "label": "Use only rendered"}, + ] + class EnabledModel(BaseSettingsModel): enabled: bool = SettingsField(True) @@ -642,6 +650,12 @@ class ExtractReviewOutputDefModel(BaseSettingsModel): default_factory=ExtractReviewLetterBox, title="Letter Box" ) + fill_missing_frames:str = SettingsField( + title="Handle missing frames", + description="How to handle frames that are missing from entity frame " + "range.", + enum_resolver=_handle_missing_frames_enum + ) @validator("name") def validate_name(cls, value): @@ -1261,7 +1275,8 @@ DEFAULT_PUBLISH_VALUES = { "fill_color": [0, 0, 0, 1.0], "line_thickness": 0, "line_color": [255, 0, 0, 1.0] - } + }, + "fill_missing_frames": "closest_existing" }, { "name": "h264", @@ -1311,7 +1326,8 @@ DEFAULT_PUBLISH_VALUES = { "fill_color": [0, 0, 0, 1.0], "line_thickness": 0, "line_color": [255, 0, 0, 1.0] - } + }, + "fill_missing_frames": "closest_existing" } ] } From deea9366bc4fde68efcdccf30d78a59015573548 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:20:51 +0200 Subject: [PATCH 216/626] Fix initialization --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 1d6aec6d1d..66841203b6 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1137,7 +1137,7 @@ class ExtractReview(pyblish.api.InstancePlugin): hole_frame_to_nearest[frame] = prev_frame # Calculate paths - added_files = [] + added_files = {} col_format = collection.format("{head}{padding}{tail}") for hole_frame, src_frame in hole_frame_to_nearest.items(): hole_fpath = os.path.join(staging_dir, col_format % hole_frame) From 8a9c95a69b150f5b40db44d9f6bea7d2ed2609ce Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:38:49 +0200 Subject: [PATCH 217/626] Use fill_missing_frames from Settings --- client/ayon_core/plugins/publish/extract_review.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 66841203b6..1299b16f84 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -420,13 +420,16 @@ class ExtractReview(pyblish.api.InstancePlugin): collection = collections[0] if fill_type == "existing": + + fill_missing_frames = _output_def["fill_missing_frames"] + if fill_missing_frames == "closest_existing": added_frames_and_files = self.fill_sequence_gaps_from_existing( collection=collection, staging_dir=new_repre["stagingDir"], start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) - elif fill_type == "blank": + elif fill_missing_frames == "blank": added_frames_and_files = self.fill_sequence_gaps_with_blanks( collection=collection, staging_dir=new_repre["stagingDir"], @@ -436,7 +439,7 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_height=temp_data["resolution_height"], extension=temp_data["ext"], ) - elif fill_type == "previous": + elif fill_missing_frames == "previous_version": added_frames_and_files = self.fill_sequence_gaps_with_previous( collection=collection, staging_dir=new_repre["stagingDir"], @@ -453,7 +456,7 @@ class ExtractReview(pyblish.api.InstancePlugin): start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) - elif fill_type == "only_rendered": + elif fill_missing_frames == "only_rendered": temp_data["explicit_frames"] = [ os.path.join( new_repre["stagingDir"], file From 050db01c82eb18af31d7cd0adf18d095c3e41ed7 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:39:45 +0200 Subject: [PATCH 218/626] Remove blank frame --- client/ayon_core/plugins/publish/extract_review.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 1299b16f84..a3892bec62 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -438,6 +438,7 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_width=temp_data["resolution_width"], resolution_height=temp_data["resolution_height"], extension=temp_data["ext"], + temp_data=temp_data ) elif fill_missing_frames == "previous_version": added_frames_and_files = self.fill_sequence_gaps_with_previous( @@ -525,9 +526,8 @@ class ExtractReview(pyblish.api.InstancePlugin): for f in added_frames_and_files.values(): os.unlink(f) - if (temp_data["explicit_frames_metadata_path"] - and os.path.exists(temp_data["explicit_frames_metadata_path"])): - os.unlink(temp_data["explicit_frames_metadata_path"]) + for f in temp_data["paths_to_remove"]: + os.unlink(f) new_repre.update({ "fps": temp_data["fps"], @@ -663,7 +663,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "handles_are_set": handles_are_set, "ext": ext, "explicit_frames": [], # absolute paths to rendered files - "explicit_frames_metadata_path": None # abs path to metadata file + "paths_to_remove": [] } def _ffmpeg_arguments( @@ -819,7 +819,7 @@ class ExtractReview(pyblish.api.InstancePlugin): for file in temp_data["explicit_frames"] ] fp.write("\n".join(lines)) - temp_data["explicit_frames_metadata_path"] = explicit_frames_path + temp_data["paths_to_remove"].append(explicit_frames_path) # let ffmpeg use only rendered files, might have gaps ffmpeg_input_args.extend([ @@ -1068,9 +1068,11 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_width: int, resolution_height: int, extension: str, + temp_data: Dict[str, Any] ) -> Dict[int, str] | None: """Fills missing files by blank frame.""" blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") + temp_data["paths_to_remove"].append(blank_frame_path) command = get_ffmpeg_tool_args("ffmpeg") command.extend([ From 9415668912a43b96de29c77e34607f64af4ae2d0 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:40:07 +0200 Subject: [PATCH 219/626] Fix initialization --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index a3892bec62..9b4e36ca8e 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1091,7 +1091,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ) self.log.debug("Output: {}".format(output)) - added_files = [blank_frame_path] + added_files = {} col_format = collection.format("{head}{padding}{tail}") for frame in range(start_frame, end_frame + 1): From 488c29e97942a8107d65ca5697ce9c5ba2ba39a7 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:40:19 +0200 Subject: [PATCH 220/626] Fix command --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 9b4e36ca8e..06743d476c 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1081,7 +1081,7 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_width, resolution_height ), "-tune", "stillimage", - "-frames: v" , 1, + "-frames:v", "1", blank_frame_path ]) From 12b2ed84a3064fc541007a228a0e38d923ea021a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:57:19 +0200 Subject: [PATCH 221/626] Fix local rendering --- client/ayon_core/plugins/publish/extract_review.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 06743d476c..1370aa1fd1 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -411,15 +411,12 @@ class ExtractReview(pyblish.api.InstancePlugin): files = temp_data["origin_repre"]["files"] collections = clique.assemble( files, - patterns=[clique.PATTERNS["frames"]], - minimum_items=1 )[0] if len(collections) != 1: raise KnownPublishError( "Multiple collections {} found.".format(collections)) collection = collections[0] - if fill_type == "existing": fill_missing_frames = _output_def["fill_missing_frames"] if fill_missing_frames == "closest_existing": From 832beb1732ede03e7babc2ea2c497fb28cfe1a0a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 11 Apr 2025 18:59:57 +0200 Subject: [PATCH 222/626] Refactor names --- .../plugins/publish/extract_review.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 1370aa1fd1..ed789ae895 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -404,7 +404,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ) temp_data = self.prepare_temp_data(instance, repre, output_def) - added_frames_and_files = {} + new_frame_files = {} if temp_data["input_is_sequence"]: self.log.debug("Checking sequence to fill gaps in sequence..") @@ -420,14 +420,14 @@ class ExtractReview(pyblish.api.InstancePlugin): fill_missing_frames = _output_def["fill_missing_frames"] if fill_missing_frames == "closest_existing": - added_frames_and_files = self.fill_sequence_gaps_from_existing( + new_frame_files = self.fill_sequence_gaps_from_existing( collection=collection, staging_dir=new_repre["stagingDir"], start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) elif fill_missing_frames == "blank": - added_frames_and_files = self.fill_sequence_gaps_with_blanks( + new_frame_files = self.fill_sequence_gaps_with_blanks( collection=collection, staging_dir=new_repre["stagingDir"], start_frame=temp_data["frame_start"], @@ -438,7 +438,7 @@ class ExtractReview(pyblish.api.InstancePlugin): temp_data=temp_data ) elif fill_missing_frames == "previous_version": - added_frames_and_files = self.fill_sequence_gaps_with_previous( + new_frame_files = self.fill_sequence_gaps_with_previous( collection=collection, staging_dir=new_repre["stagingDir"], instance=instance, @@ -447,13 +447,14 @@ class ExtractReview(pyblish.api.InstancePlugin): end_frame=temp_data["frame_end"], ) # fallback to original workflow - if added_frames_and_files is None: - added_frames_and_files = self.fill_sequence_gaps_from_existing( + if new_frame_files is None: + new_frame_files = ( + self.fill_sequence_gaps_from_existing( collection=collection, staging_dir=new_repre["stagingDir"], start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], - ) + )) elif fill_missing_frames == "only_rendered": temp_data["explicit_frames"] = [ os.path.join( @@ -462,7 +463,7 @@ class ExtractReview(pyblish.api.InstancePlugin): for file in files ] - temp_data["filled_files"] = added_frames_and_files + temp_data["filled_files"] = new_frame_files # create or update outputName output_name = new_repre.get("outputName", "") @@ -519,8 +520,8 @@ class ExtractReview(pyblish.api.InstancePlugin): run_subprocess(subprcs_cmd, shell=True, logger=self.log) # delete files added to fill gaps - if added_frames_and_files: - for f in added_frames_and_files.values(): + if new_frame_files: + for f in new_frame_files.values(): os.unlink(f) for f in temp_data["paths_to_remove"]: From e61266bc82be539911209cce6fc433fcc9c70ac7 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 14 Apr 2025 12:14:00 +0200 Subject: [PATCH 223/626] Skip validation for explicit frames --- client/ayon_core/plugins/publish/extract_review.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index ed789ae895..31cb3763da 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -462,6 +462,13 @@ class ExtractReview(pyblish.api.InstancePlugin): ).replace("\\", "/") for file in files ] + frame_start = min(collection.indexes) + frame_end = max(collection.indexes) + # modify range for burnins + instance.data["frameStart"] = frame_start + instance.data["frameEnd"] = frame_end + temp_data["frame_start"] = frame_start + temp_data["frame_end"] = frame_end temp_data["filled_files"] = new_frame_files From a4db943903af482f0689f6574013042ff4051963 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 14 Apr 2025 14:22:24 +0200 Subject: [PATCH 224/626] Added default directly to enum Used if additional output defs are present. --- server/settings/publish_plugins.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 3a0e932606..f9893add1d 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -652,6 +652,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel): ) fill_missing_frames:str = SettingsField( title="Handle missing frames", + default="closest_existing", description="How to handle frames that are missing from entity frame " "range.", enum_resolver=_handle_missing_frames_enum From f8ab13dd2aff1b5d13367c1b460305e5c4422a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Je=C5=BEek?= Date: Mon, 14 Apr 2025 15:50:20 +0200 Subject: [PATCH 225/626] Update client/ayon_core/plugins/publish/extract_otio_review.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_otio_review.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_otio_review.py b/client/ayon_core/plugins/publish/extract_otio_review.py index e96c1a1b6b..f7babc2b7f 100644 --- a/client/ayon_core/plugins/publish/extract_otio_review.py +++ b/client/ayon_core/plugins/publish/extract_otio_review.py @@ -527,7 +527,8 @@ class ExtractOTIOReview( and self.output_ext == input_extension ): if input_extension.lower() in [ - '.png', '.tif', '.tiff', '.dpx', '.exr']: + ".png", ".tif", ".tiff", ".dpx", ".exr" + ]: command.extend(["-c", "copy"]) else: # For lossy formats, force re-encode From e3c04bde8fa1cfbbc97d2f458afac7bd9314d5b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 14 Apr 2025 17:30:00 +0200 Subject: [PATCH 226/626] :recycle: revert my awesome ruff rules to please the lazy crowd --- pyproject.toml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4844f65807..10e477ca9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,26 +87,8 @@ target-version = "py39" preview = true pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. -select = ["ALL"] -ignore = [ - "PTH", - # "ANN001", # must be set in older version of ruff - "ANN204", - "COM812", - "S603", - "ERA001", - "TRY003", - "UP006", # support for older python version (type vs. Type) - "UP007", # ..^ - "UP035", # .. - "ARG002", - "INP001", # add `__init__.py` to namespaced package - "FIX002", # FIX all TODOs - "TD003", # missing issue link - "S404", # subprocess module is possibly insecure - "PLC0415", # import must be on top of the file - "CPY001", # missing copyright header -] +select = ["E", "F", "W"] +ignore = [] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] From 0ada57c25bff29b80403255a0f37a91c73254654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 14 Apr 2025 17:40:22 +0200 Subject: [PATCH 227/626] :dog: fix linting issues in tests --- .../plugins/publish/test_integrate_traits.py | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 1fa80d7b8a..c66dda1630 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -9,9 +9,6 @@ from typing import TYPE_CHECKING import pyblish.api import pytest -from ayon_api.operations import ( - OperationsSession, -) from ayon_core.lib.file_transaction import ( FileTransaction, @@ -44,9 +41,6 @@ from ayon_core.settings import get_project_settings from ayon_api.operations import ( OperationsSession, - new_product_entity, - new_representation_entity, - new_version_entity, ) if TYPE_CHECKING: @@ -237,8 +231,6 @@ def mock_context( return context - - def test_get_template_name(mock_context: pyblish.api.Context) -> None: """Test get_template_name. @@ -275,9 +267,12 @@ class TestGetSize: (Path("./test_file_2.txt"), 1024), # id: happy_path_medium_file (Path("./test_file_3.txt"), 10485760) # id: happy_path_large_file ], - ids=["happy_path_small_file", "happy_path_medium_file", "happy_path_large_file"] + ids=["happy_path_small_file", + "happy_path_medium_file", + "happy_path_large_file"] ) - def test_get_size_happy_path(self, file_path: Path, expected_size: int, tmp_path: Path): + def test_get_size_happy_path( + self, file_path: Path, expected_size: int, tmp_path: Path): # Arrange file_path = tmp_path / file_path file_path.write_bytes(b"\0" * expected_size) @@ -288,7 +283,6 @@ class TestGetSize: # Assert assert size == expected_size - @pytest.mark.parametrize( "file_path, expected_size", [ @@ -296,10 +290,11 @@ class TestGetSize: ], ids=["edge_case_empty_file"] ) - def test_get_size_edge_cases(self, file_path: Path, expected_size: int, tmp_path: Path): + def test_get_size_edge_cases( + self, file_path: Path, expected_size: int, tmp_path: Path): # Arrange file_path = tmp_path / file_path - file_path.touch() # Create an empty file + file_path.touch() # Create an empty file # Act size = self.get_size(file_path) @@ -310,12 +305,16 @@ class TestGetSize: @pytest.mark.parametrize( "file_path, expected_exception", [ - (Path("./non_existent_file.txt"), FileNotFoundError), # id: error_file_not_found - (123, TypeError) # id: error_invalid_input_type + ( + Path("./non_existent_file.txt"), + FileNotFoundError + ), # id: error_file_not_found + (123, TypeError) # id: error_invalid_input_type ], ids=["error_file_not_found", "error_invalid_input_type"] ) - def test_get_size_error_cases(self, file_path, expected_exception, tmp_path): + def test_get_size_error_cases( + self, file_path, expected_exception, tmp_path): # Act & Assert with pytest.raises(expected_exception): @@ -439,5 +438,5 @@ def test_get_transfers_from_representation( file_transactions.process() for representation in representations: - files = integrator._get_legacy_files_for_representation( # noqa: SLF001 + _ = integrator._get_legacy_files_for_representation( # noqa: SLF001 transfers, representation, anatomy=instance.data["anatomy"]) From b5961dcb92ec4b7fe85916061adc828476c40b15 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:52:25 +0200 Subject: [PATCH 228/626] enable preview in ruff linting --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 3da97e6b2a..89f1d2a2cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -83,6 +83,7 @@ indent-width = 4 target-version = "py39" [tool.ruff.lint] +preview = true # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["E", "F", "W"] ignore = [] From b403fccf0524f38450694ce065aedb3b3c172bad Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:54:45 +0200 Subject: [PATCH 229/626] fix new line chars --- client/ayon_core/cli.py | 2 -- client/ayon_core/lib/attribute_definitions.py | 4 +--- client/ayon_core/lib/ayon_connection.py | 2 ++ client/ayon_core/lib/terminal.py | 1 + client/ayon_core/plugins/load/export_otio.py | 1 + .../plugins/publish/collect_anatomy_instance_data.py | 1 - .../ayon_core/plugins/publish/collect_farm_env_variables.py | 1 - .../plugins/publish/collect_otio_subset_resources.py | 3 --- client/ayon_core/scripts/otio_burnin.py | 1 - client/ayon_core/scripts/slates/slate_base/base.py | 1 - client/ayon_core/tools/console_interpreter/ui/widgets.py | 1 - client/ayon_core/tools/tray/lib.py | 1 - .../pipeline/editorial/test_collect_otio_frame_ranges.py | 1 + .../ayon_core/pipeline/editorial/test_extract_otio_review.py | 2 ++ .../pipeline/editorial/test_media_range_with_retimes.py | 3 ++- 15 files changed, 10 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index 6f89a6d17d..322c294cfb 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -24,7 +24,6 @@ from ayon_core.lib.env_tools import ( ) - @click.group(invoke_without_command=True) @click.pass_context @click.option("--use-staging", is_flag=True, @@ -173,7 +172,6 @@ def contextselection( main(output_path, project, folder, strict) - @main_cli.command( context_settings=dict( ignore_unknown_options=True, diff --git a/client/ayon_core/lib/attribute_definitions.py b/client/ayon_core/lib/attribute_definitions.py index 6b334aa16a..cb74fea0f1 100644 --- a/client/ayon_core/lib/attribute_definitions.py +++ b/client/ayon_core/lib/attribute_definitions.py @@ -22,12 +22,10 @@ import clique if typing.TYPE_CHECKING: from typing import Self, Tuple, Union, TypedDict, Pattern - class EnumItemDict(TypedDict): label: str value: Any - EnumItemsInputType = Union[ Dict[Any, str], List[Tuple[Any, str]], @@ -35,7 +33,6 @@ if typing.TYPE_CHECKING: List[EnumItemDict] ] - class FileDefItemDict(TypedDict): directory: str filenames: List[str] @@ -289,6 +286,7 @@ AttrDefType = TypeVar("AttrDefType", bound=AbstractAttrDef) # UI attribute definitions won't hold value # ----------------------------------------- + class UIDef(AbstractAttrDef): is_value_def = False diff --git a/client/ayon_core/lib/ayon_connection.py b/client/ayon_core/lib/ayon_connection.py index 1132d77aaa..32aa5ad629 100644 --- a/client/ayon_core/lib/ayon_connection.py +++ b/client/ayon_core/lib/ayon_connection.py @@ -177,10 +177,12 @@ def initialize_ayon_connection(force=False): return _new_get_last_versions( con, *args, **kwargs ) + def _lv_by_pi_wrapper(*args, **kwargs): return _new_get_last_version_by_product_id( con, *args, **kwargs ) + def _lv_by_pn_wrapper(*args, **kwargs): return _new_get_last_version_by_product_name( con, *args, **kwargs diff --git a/client/ayon_core/lib/terminal.py b/client/ayon_core/lib/terminal.py index 10fcc79a27..ea23feeb95 100644 --- a/client/ayon_core/lib/terminal.py +++ b/client/ayon_core/lib/terminal.py @@ -39,6 +39,7 @@ class Terminal: """ from ayon_core.lib import env_value_to_bool + log_no_colors = env_value_to_bool( "AYON_LOG_NO_COLORS", default=None ) diff --git a/client/ayon_core/plugins/load/export_otio.py b/client/ayon_core/plugins/load/export_otio.py index e7a844aed3..8094490246 100644 --- a/client/ayon_core/plugins/load/export_otio.py +++ b/client/ayon_core/plugins/load/export_otio.py @@ -22,6 +22,7 @@ from ayon_core.tools.utils import show_message_dialog OTIO = None FRAME_SPLITTER = "__frame_splitter__" + def _import_otio(): global OTIO if OTIO is None: diff --git a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py index 677ebb04a2..2fcf562dd0 100644 --- a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py +++ b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py @@ -394,7 +394,6 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin): if aov: anatomy_data["aov"] = aov - def _fill_folder_data(self, instance, project_entity, anatomy_data): # QUESTION: should we make sure that all folder data are popped if # folder data cannot be found? diff --git a/client/ayon_core/plugins/publish/collect_farm_env_variables.py b/client/ayon_core/plugins/publish/collect_farm_env_variables.py index 2782ea86ac..39c421381d 100644 --- a/client/ayon_core/plugins/publish/collect_farm_env_variables.py +++ b/client/ayon_core/plugins/publish/collect_farm_env_variables.py @@ -43,4 +43,3 @@ class CollectCoreJobEnvVars(pyblish.api.ContextPlugin): if value: self.log.debug(f"Setting job env: {key}: {value}") env[key] = value - diff --git a/client/ayon_core/plugins/publish/collect_otio_subset_resources.py b/client/ayon_core/plugins/publish/collect_otio_subset_resources.py index f1fa6a817d..275b8a7f55 100644 --- a/client/ayon_core/plugins/publish/collect_otio_subset_resources.py +++ b/client/ayon_core/plugins/publish/collect_otio_subset_resources.py @@ -194,7 +194,6 @@ class CollectOtioSubsetResources( repre = self._create_representation( frame_start, frame_end, file=filename) - else: _trim = False dirname, filename = os.path.split(media_ref.target_url) @@ -209,7 +208,6 @@ class CollectOtioSubsetResources( repre = self._create_representation( frame_start, frame_end, file=filename, trim=_trim) - instance.data["originalDirname"] = self.staging_dir # add representation to instance data @@ -221,7 +219,6 @@ class CollectOtioSubsetResources( instance.data["representations"].append(repre) - self.log.debug(instance.data) def _create_representation(self, start, end, **kwargs): diff --git a/client/ayon_core/scripts/otio_burnin.py b/client/ayon_core/scripts/otio_burnin.py index cb72606222..77eeecaff6 100644 --- a/client/ayon_core/scripts/otio_burnin.py +++ b/client/ayon_core/scripts/otio_burnin.py @@ -173,7 +173,6 @@ class ModifiedBurnins(ffmpeg_burnins.Burnins): if frame_end is not None: options["frame_end"] = frame_end - options["label"] = align self._add_burnin(text, align, options, DRAWTEXT) diff --git a/client/ayon_core/scripts/slates/slate_base/base.py b/client/ayon_core/scripts/slates/slate_base/base.py index e1648c916a..91793d511d 100644 --- a/client/ayon_core/scripts/slates/slate_base/base.py +++ b/client/ayon_core/scripts/slates/slate_base/base.py @@ -353,7 +353,6 @@ class BaseObj: self.items[item.id] = item item.fill_data_format() - def reset(self): for item in self.items.values(): item.reset() diff --git a/client/ayon_core/tools/console_interpreter/ui/widgets.py b/client/ayon_core/tools/console_interpreter/ui/widgets.py index 2b9361666e..3dc55b081c 100644 --- a/client/ayon_core/tools/console_interpreter/ui/widgets.py +++ b/client/ayon_core/tools/console_interpreter/ui/widgets.py @@ -248,4 +248,3 @@ class EnhancedTabBar(QtWidgets.QTabBar): else: super().mouseReleaseEvent(event) - diff --git a/client/ayon_core/tools/tray/lib.py b/client/ayon_core/tools/tray/lib.py index 13ee1eea5c..deb49b9711 100644 --- a/client/ayon_core/tools/tray/lib.py +++ b/client/ayon_core/tools/tray/lib.py @@ -738,4 +738,3 @@ def main(force=False): sys.exit(1) main() - diff --git a/tests/client/ayon_core/pipeline/editorial/test_collect_otio_frame_ranges.py b/tests/client/ayon_core/pipeline/editorial/test_collect_otio_frame_ranges.py index 20f0c05804..2f67ee244c 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_collect_otio_frame_ranges.py +++ b/tests/client/ayon_core/pipeline/editorial/test_collect_otio_frame_ranges.py @@ -101,6 +101,7 @@ def test_image_sequence(): expected_data, ) + def test_media_retimed(): """ EXR image sequence. diff --git a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py index 8ad2e44b06..45191a2c53 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py +++ b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py @@ -215,6 +215,7 @@ def test_short_movie_tail_gap_handles(): assert calls == expected + def test_multiple_review_clips_no_gap(): """ Use multiple review clips (image sequence). @@ -298,6 +299,7 @@ def test_multiple_review_clips_no_gap(): assert calls == expected + def test_multiple_review_clips_with_gap(): """ Use multiple review clips (image sequence) with gap. diff --git a/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py b/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py index 112d00b3e4..b475d629bb 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py +++ b/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py @@ -257,7 +257,6 @@ def test_movie_timewarp(): ) - def test_img_sequence_no_handles(): """ Img sequence clip (no embedded timecode) @@ -334,6 +333,7 @@ def test_img_sequence_relative_source_range(): expected_data ) + def test_img_sequence_conform_to_23_976fps(): """ Img sequence clip @@ -409,6 +409,7 @@ def test_img_sequence_reverse_speed_no_tc(): handle_end=0, ) + def test_img_sequence_reverse_speed_from_24_to_23_976fps(): """ Img sequence clip From 486be39faaa6711cf4b61d965fef24a50a34c329 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:55:48 +0200 Subject: [PATCH 230/626] fix whitespaces --- client/ayon_core/addon/utils.py | 2 +- client/ayon_core/pipeline/create/context.py | 8 ++++---- client/ayon_core/pipeline/create/structures.py | 2 +- client/ayon_core/pipeline/farm/pyblish_functions.py | 2 +- client/ayon_core/pipeline/staging_dir.py | 2 +- client/ayon_core/plugins/load/delete_old_versions.py | 2 +- client/ayon_core/plugins/publish/collect_hierarchy.py | 2 +- client/ayon_core/plugins/publish/extract_review.py | 2 +- .../ayon_core/plugins/publish/integrate_resources_path.py | 2 +- client/ayon_core/scripts/slates/slate_base/base.py | 2 +- client/ayon_core/tools/creator/window.py | 2 +- .../tools/experimental_tools/pyblish_debug_stepper.py | 4 ++-- client/ayon_core/tools/loader/ui/window.py | 6 +++--- client/ayon_core/tools/publisher/models/create.py | 8 ++++---- 14 files changed, 23 insertions(+), 23 deletions(-) diff --git a/client/ayon_core/addon/utils.py b/client/ayon_core/addon/utils.py index f983e37d3c..bb365f42e1 100644 --- a/client/ayon_core/addon/utils.py +++ b/client/ayon_core/addon/utils.py @@ -37,7 +37,7 @@ def _handle_error( if process_context.headless: if detail: print(detail) - print(f"{10*'*'}\n{message}\n{10*'*'}") + print(f"{10 * '*'}\n{message}\n{10 * '*'}") return current_dir = os.path.dirname(os.path.abspath(__file__)) diff --git a/client/ayon_core/pipeline/create/context.py b/client/ayon_core/pipeline/create/context.py index 6ac6685647..f0d9fa8927 100644 --- a/client/ayon_core/pipeline/create/context.py +++ b/client/ayon_core/pipeline/create/context.py @@ -872,7 +872,7 @@ class CreateContext: """ return self._event_hub.add_callback(INSTANCE_ADDED_TOPIC, callback) - def add_instances_removed_callback (self, callback): + def add_instances_removed_callback(self, callback): """Register callback for removed instances. Event is triggered when instances are already removed from context. @@ -933,7 +933,7 @@ class CreateContext: """ self._event_hub.add_callback(VALUE_CHANGED_TOPIC, callback) - def add_pre_create_attr_defs_change_callback (self, callback): + def add_pre_create_attr_defs_change_callback(self, callback): """Register callback to listen pre-create attribute changes. Create plugin can trigger refresh of pre-create attributes. Usage of @@ -961,7 +961,7 @@ class CreateContext: PRE_CREATE_ATTR_DEFS_CHANGED_TOPIC, callback ) - def add_create_attr_defs_change_callback (self, callback): + def add_create_attr_defs_change_callback(self, callback): """Register callback to listen create attribute changes. Create plugin changed attribute definitions of instance. @@ -986,7 +986,7 @@ class CreateContext: """ self._event_hub.add_callback(CREATE_ATTR_DEFS_CHANGED_TOPIC, callback) - def add_publish_attr_defs_change_callback (self, callback): + def add_publish_attr_defs_change_callback(self, callback): """Register callback to listen publish attribute changes. Publish plugin changed attribute definitions of instance of context. diff --git a/client/ayon_core/pipeline/create/structures.py b/client/ayon_core/pipeline/create/structures.py index 6b45a5c610..d7ba6b9c24 100644 --- a/client/ayon_core/pipeline/create/structures.py +++ b/client/ayon_core/pipeline/create/structures.py @@ -369,7 +369,7 @@ class PublishAttributes: return copy.deepcopy(self._origin_data) def attribute_value_changed(self, key, changes): - self._parent.publish_attribute_value_changed(key, changes) + self._parent.publish_attribute_value_changed(key, changes) def set_publish_plugin_attr_defs( self, diff --git a/client/ayon_core/pipeline/farm/pyblish_functions.py b/client/ayon_core/pipeline/farm/pyblish_functions.py index c6f3ae7115..77a2f1d4c0 100644 --- a/client/ayon_core/pipeline/farm/pyblish_functions.py +++ b/client/ayon_core/pipeline/farm/pyblish_functions.py @@ -1,4 +1,4 @@ -from __future__ import annotations +from __future__ import annotations import copy import os import re diff --git a/client/ayon_core/pipeline/staging_dir.py b/client/ayon_core/pipeline/staging_dir.py index 1cb2979415..a172c177fd 100644 --- a/client/ayon_core/pipeline/staging_dir.py +++ b/client/ayon_core/pipeline/staging_dir.py @@ -209,7 +209,7 @@ def get_staging_dir_info( staging_dir_config = get_staging_dir_config( project_entity["name"], task_type, - task_name , + task_name, product_type, product_name, host_name, diff --git a/client/ayon_core/plugins/load/delete_old_versions.py b/client/ayon_core/plugins/load/delete_old_versions.py index f8c45baff6..3a42ccba7e 100644 --- a/client/ayon_core/plugins/load/delete_old_versions.py +++ b/client/ayon_core/plugins/load/delete_old_versions.py @@ -211,7 +211,7 @@ class DeleteOldVersions(load.ProductLoaderPlugin): f"This will keep only the last {versions_to_keep} " f"versions for the {num_contexts} selected product{s}." ) - informative_text="Warning: This will delete files from disk" + informative_text = "Warning: This will delete files from disk" detailed_text = ( f"Keep only {versions_to_keep} versions for:\n{contexts_list}" ) diff --git a/client/ayon_core/plugins/publish/collect_hierarchy.py b/client/ayon_core/plugins/publish/collect_hierarchy.py index 266c2e1458..56b48c37f6 100644 --- a/client/ayon_core/plugins/publish/collect_hierarchy.py +++ b/client/ayon_core/plugins/publish/collect_hierarchy.py @@ -50,7 +50,7 @@ class CollectHierarchy(pyblish.api.ContextPlugin): "comments": instance.data.get("comments", []), } - shot_data["attributes"] = {} + shot_data["attributes"] = {} SHOT_ATTRS = ( "handleStart", "handleEnd", diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index df87abba91..a15886451b 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1333,7 +1333,7 @@ class ExtractReview(pyblish.api.InstancePlugin): bg_red, bg_green, bg_blue = overscan_color else: # Backwards compatibility - bg_red, bg_green, bg_blue, _ = overscan_color + bg_red, bg_green, bg_blue, _ = overscan_color overscan_color_value = "#{0:0>2X}{1:0>2X}{2:0>2X}".format( bg_red, bg_green, bg_blue diff --git a/client/ayon_core/plugins/publish/integrate_resources_path.py b/client/ayon_core/plugins/publish/integrate_resources_path.py index 56dc0e5ef7..b518f7f6f1 100644 --- a/client/ayon_core/plugins/publish/integrate_resources_path.py +++ b/client/ayon_core/plugins/publish/integrate_resources_path.py @@ -7,7 +7,7 @@ class IntegrateResourcesPath(pyblish.api.InstancePlugin): label = "Integrate Resources Path" order = pyblish.api.IntegratorOrder - 0.05 - families = ["clip", "projectfile", "plate"] + families = ["clip", "projectfile", "plate"] def process(self, instance): resources = instance.data.get("resources") or [] diff --git a/client/ayon_core/scripts/slates/slate_base/base.py b/client/ayon_core/scripts/slates/slate_base/base.py index 91793d511d..a4427bbb86 100644 --- a/client/ayon_core/scripts/slates/slate_base/base.py +++ b/client/ayon_core/scripts/slates/slate_base/base.py @@ -175,7 +175,7 @@ class BaseObj: self.log.warning("Invalid range '{}'".format(part)) continue - for idx in range(sub_parts[0], sub_parts[1]+1): + for idx in range(sub_parts[0], sub_parts[1] + 1): indexes.append(idx) return indexes diff --git a/client/ayon_core/tools/creator/window.py b/client/ayon_core/tools/creator/window.py index 5bdc6da9b6..5d1c0a272a 100644 --- a/client/ayon_core/tools/creator/window.py +++ b/client/ayon_core/tools/creator/window.py @@ -492,7 +492,7 @@ def show(parent=None): try: module.window.close() - del(module.window) + del module.window except (AttributeError, RuntimeError): pass diff --git a/client/ayon_core/tools/experimental_tools/pyblish_debug_stepper.py b/client/ayon_core/tools/experimental_tools/pyblish_debug_stepper.py index 33de4bf036..a485c682a1 100644 --- a/client/ayon_core/tools/experimental_tools/pyblish_debug_stepper.py +++ b/client/ayon_core/tools/experimental_tools/pyblish_debug_stepper.py @@ -32,7 +32,7 @@ from qtpy import QtWidgets, QtCore, QtGui import pyblish.api from ayon_core import style -TAB = 4* " " +TAB = 4 * " " HEADER_SIZE = "15px" KEY_COLOR = QtGui.QColor("#ffffff") @@ -243,7 +243,7 @@ class DebugUI(QtWidgets.QDialog): self._set_window_title(plugin=result["plugin"]) - print(10*"<", result["plugin"].__name__, 10*">") + print(10 * "<", result["plugin"].__name__, 10 * ">") plugin_order = result["plugin"].order plugin_name = result["plugin"].__name__ diff --git a/client/ayon_core/tools/loader/ui/window.py b/client/ayon_core/tools/loader/ui/window.py index 3d2e15c630..b70f5554c7 100644 --- a/client/ayon_core/tools/loader/ui/window.py +++ b/client/ayon_core/tools/loader/ui/window.py @@ -519,9 +519,9 @@ class LoaderWindow(QtWidgets.QWidget): thumbnail_paths.discard(None) if thumbnail_paths: - self._thumbnails_widget.set_current_thumbnail_paths( - thumbnail_paths - ) + self._thumbnails_widget.set_current_thumbnail_paths( + thumbnail_paths + ) else: self._thumbnails_widget.set_current_thumbnails(None) diff --git a/client/ayon_core/tools/publisher/models/create.py b/client/ayon_core/tools/publisher/models/create.py index 9644af43e0..900168eaef 100644 --- a/client/ayon_core/tools/publisher/models/create.py +++ b/client/ayon_core/tools/publisher/models/create.py @@ -461,19 +461,19 @@ class CreateModel: self._create_context.add_instances_added_callback( self._cc_added_instance ) - self._create_context.add_instances_removed_callback ( + self._create_context.add_instances_removed_callback( self._cc_removed_instance ) self._create_context.add_value_changed_callback( self._cc_value_changed ) - self._create_context.add_pre_create_attr_defs_change_callback ( + self._create_context.add_pre_create_attr_defs_change_callback( self._cc_pre_create_attr_changed ) - self._create_context.add_create_attr_defs_change_callback ( + self._create_context.add_create_attr_defs_change_callback( self._cc_create_attr_changed ) - self._create_context.add_publish_attr_defs_change_callback ( + self._create_context.add_publish_attr_defs_change_callback( self._cc_publish_attr_changed ) From b0ac87b7b12006dc8b3fffe441b91a884cc65ce5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:56:21 +0200 Subject: [PATCH 231/626] handle unused variables --- client/ayon_core/lib/vendor_bin_utils.py | 4 ++-- client/ayon_core/pipeline/delivery.py | 4 ++-- client/ayon_core/pipeline/farm/pyblish_functions.py | 2 +- client/ayon_core/pipeline/schema/__init__.py | 2 +- client/ayon_core/pipeline/workfile/path_resolving.py | 4 ++-- client/ayon_core/plugins/publish/integrate.py | 2 +- client/ayon_core/scripts/slates/slate_base/items.py | 12 ++++++------ client/ayon_core/tools/publisher/models/publish.py | 2 +- client/ayon_core/tools/utils/tasks_widget.py | 2 +- client/ayon_core/tools/workfiles/models/workfiles.py | 2 +- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/client/ayon_core/lib/vendor_bin_utils.py b/client/ayon_core/lib/vendor_bin_utils.py index 41654476c2..412a9292cc 100644 --- a/client/ayon_core/lib/vendor_bin_utils.py +++ b/client/ayon_core/lib/vendor_bin_utils.py @@ -162,7 +162,7 @@ def find_tool_in_custom_paths(paths, tool, validation_func=None): # Handle cases when path is just an executable # - it allows to use executable from PATH # - basename must match 'tool' value (without extension) - extless_path, ext = os.path.splitext(path) + extless_path, _ext = os.path.splitext(path) if extless_path == tool: executable_path = find_executable(tool) if executable_path and ( @@ -181,7 +181,7 @@ def find_tool_in_custom_paths(paths, tool, validation_func=None): # If path is a file validate it if os.path.isfile(normalized): - basename, ext = os.path.splitext(os.path.basename(path)) + basename, _ext = os.path.splitext(os.path.basename(path)) # Check if the filename has actually the sane bane as 'tool' if basename == tool: executable_path = find_executable(normalized) diff --git a/client/ayon_core/pipeline/delivery.py b/client/ayon_core/pipeline/delivery.py index 55c840f3a5..e686b739ae 100644 --- a/client/ayon_core/pipeline/delivery.py +++ b/client/ayon_core/pipeline/delivery.py @@ -255,7 +255,7 @@ def deliver_sequence( report_items[""].append(msg) return report_items, 0 - dir_path, file_name = os.path.split(str(src_path)) + dir_path, _file_name = os.path.split(str(src_path)) context = repre["context"] ext = context.get("ext", context.get("representation")) @@ -270,7 +270,7 @@ def deliver_sequence( # context.representation could be .psd ext = ext.replace("..", ".") - src_collections, remainder = clique.assemble(os.listdir(dir_path)) + src_collections, _remainder = clique.assemble(os.listdir(dir_path)) src_collection = None for col in src_collections: if col.tail != ext: diff --git a/client/ayon_core/pipeline/farm/pyblish_functions.py b/client/ayon_core/pipeline/farm/pyblish_functions.py index 77a2f1d4c0..812e9b0321 100644 --- a/client/ayon_core/pipeline/farm/pyblish_functions.py +++ b/client/ayon_core/pipeline/farm/pyblish_functions.py @@ -1168,7 +1168,7 @@ def prepare_cache_representations(skeleton_data, exp_files, anatomy): """ representations = [] - collections, remainders = clique.assemble(exp_files) + collections, _remainders = clique.assemble(exp_files) log = Logger.get_logger("farm_publishing") diff --git a/client/ayon_core/pipeline/schema/__init__.py b/client/ayon_core/pipeline/schema/__init__.py index d16755696d..5e4e8a668d 100644 --- a/client/ayon_core/pipeline/schema/__init__.py +++ b/client/ayon_core/pipeline/schema/__init__.py @@ -41,7 +41,7 @@ def validate(data, schema=None): if not _CACHED: _precache() - root, schema = data["schema"].rsplit(":", 1) + _root, schema = data["schema"].rsplit(":", 1) if isinstance(schema, str): schema = _cache[schema + ".json"] diff --git a/client/ayon_core/pipeline/workfile/path_resolving.py b/client/ayon_core/pipeline/workfile/path_resolving.py index 61c6e5b876..9b2fe25199 100644 --- a/client/ayon_core/pipeline/workfile/path_resolving.py +++ b/client/ayon_core/pipeline/workfile/path_resolving.py @@ -329,9 +329,9 @@ def get_last_workfile( Returns: str: Last or first workfile as filename of full path to filename. - """ - filename, version = get_last_workfile_with_version( + """ + filename, _version = get_last_workfile_with_version( workdir, file_template, fill_data, extensions ) if filename is None: diff --git a/client/ayon_core/plugins/publish/integrate.py b/client/ayon_core/plugins/publish/integrate.py index 8e57980ba6..f1e066018c 100644 --- a/client/ayon_core/plugins/publish/integrate.py +++ b/client/ayon_core/plugins/publish/integrate.py @@ -683,7 +683,7 @@ class IntegrateAsset(pyblish.api.InstancePlugin): elif is_sequence_representation: # Collection of files (sequence) - src_collections, remainders = clique.assemble(files) + src_collections, _remainders = clique.assemble(files) src_collection = src_collections[0] destination_indexes = list(src_collection.indexes) diff --git a/client/ayon_core/scripts/slates/slate_base/items.py b/client/ayon_core/scripts/slates/slate_base/items.py index ec3358ed5e..eb7859a6e1 100644 --- a/client/ayon_core/scripts/slates/slate_base/items.py +++ b/client/ayon_core/scripts/slates/slate_base/items.py @@ -282,7 +282,7 @@ class ItemTable(BaseItem): value.draw(image, drawer) def value_width(self): - row_heights, col_widths = self.size_values + _row_heights, col_widths = self.size_values width = 0 for _width in col_widths: width += _width @@ -292,7 +292,7 @@ class ItemTable(BaseItem): return width def value_height(self): - row_heights, col_widths = self.size_values + row_heights, _col_widths = self.size_values height = 0 for _height in row_heights: height += _height @@ -569,21 +569,21 @@ class TableField(BaseItem): @property def item_pos_x(self): - pos_x, pos_y, width, height = ( + pos_x, _pos_y, _width, _height = ( self.parent.content_pos_info_by_cord(self.row_idx, self.col_idx) ) return pos_x @property def item_pos_y(self): - pos_x, pos_y, width, height = ( + _pos_x, pos_y, _width, _height = ( self.parent.content_pos_info_by_cord(self.row_idx, self.col_idx) ) return pos_y @property def value_pos_x(self): - pos_x, pos_y, width, height = ( + pos_x, _pos_y, width, _height = ( self.parent.content_pos_info_by_cord(self.row_idx, self.col_idx) ) alignment_hor = self.style["alignment-horizontal"].lower() @@ -605,7 +605,7 @@ class TableField(BaseItem): @property def value_pos_y(self): - pos_x, pos_y, width, height = ( + _pos_x, pos_y, _width, height = ( self.parent.content_pos_info_by_cord(self.row_idx, self.col_idx) ) diff --git a/client/ayon_core/tools/publisher/models/publish.py b/client/ayon_core/tools/publisher/models/publish.py index 97a956b18f..97070d106f 100644 --- a/client/ayon_core/tools/publisher/models/publish.py +++ b/client/ayon_core/tools/publisher/models/publish.py @@ -358,7 +358,7 @@ class PublishReportMaker: exception = result.get("error") if exception: - fname, line_no, func, exc = exception.traceback + fname, line_no, func, _ = exception.traceback # Conversion of exception into string may crash try: diff --git a/client/ayon_core/tools/utils/tasks_widget.py b/client/ayon_core/tools/utils/tasks_widget.py index 9118611c23..744eb6060a 100644 --- a/client/ayon_core/tools/utils/tasks_widget.py +++ b/client/ayon_core/tools/utils/tasks_widget.py @@ -575,7 +575,7 @@ class TasksWidget(QtWidgets.QWidget): if self._tasks_model.is_refreshing: return - parent_id, task_id, task_name, _ = self._get_selected_item_ids() + _parent_id, task_id, task_name, _ = self._get_selected_item_ids() self._controller.set_selected_task(task_id, task_name) self.selection_changed.emit() diff --git a/client/ayon_core/tools/workfiles/models/workfiles.py b/client/ayon_core/tools/workfiles/models/workfiles.py index c621a44937..cc034571f3 100644 --- a/client/ayon_core/tools/workfiles/models/workfiles.py +++ b/client/ayon_core/tools/workfiles/models/workfiles.py @@ -462,7 +462,7 @@ class WorkfileEntitiesModel: anatomy = self._controller.project_anatomy workdir, filename = os.path.split(filepath) - success, rootless_dir = anatomy.find_root_template_from_path(workdir) + _, rootless_dir = anatomy.find_root_template_from_path(workdir) return "/".join([ os.path.normpath(rootless_dir).replace("\\", "/"), filename From dc6bb42013b83c68328205bae226d048db6febb5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:56:33 +0200 Subject: [PATCH 232/626] define docstyle convention --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 89f1d2a2cf..4c4272cc30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,6 +84,7 @@ target-version = "py39" [tool.ruff.lint] preview = true +pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["E", "F", "W"] ignore = [] From c82537008f2439fc4591475939d281b651246ee6 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 13:56:43 +0200 Subject: [PATCH 233/626] Refactor proper variable names --- client/ayon_core/plugins/publish/extract_review.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 31cb3763da..93f1098f4c 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -528,11 +528,11 @@ class ExtractReview(pyblish.api.InstancePlugin): # delete files added to fill gaps if new_frame_files: - for f in new_frame_files.values(): - os.unlink(f) + for filepath in new_frame_files.values(): + os.unlink(filepath) - for f in temp_data["paths_to_remove"]: - os.unlink(f) + for filepath in temp_data["paths_to_remove"]: + os.unlink(filepath) new_repre.update({ "fps": temp_data["fps"], From 1019eded3bd2dccd479c396f37ae83184d9530b0 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 13:59:01 +0200 Subject: [PATCH 234/626] Refactor filled_files are always initialized --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 93f1098f4c..f39bc0cff8 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1203,7 +1203,7 @@ class ExtractReview(pyblish.api.InstancePlugin): # Make sure to have full path to one input file full_input_path_single_file = full_input_path - filled_files = temp_data.get("filled_files", {}) + filled_files = temp_data["filled_files"] if filled_files: first_frame, first_file = list(filled_files.items())[0] if first_file < full_input_path_single_file: From 4c305d9596ce1f8bc1907e83968b55a750940811 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 14:00:17 +0200 Subject: [PATCH 235/626] Refactor renamed explicit_frames to explicit_input_paths --- client/ayon_core/plugins/publish/extract_review.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index f39bc0cff8..6e31d11dce 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -456,7 +456,7 @@ class ExtractReview(pyblish.api.InstancePlugin): end_frame=temp_data["frame_end"], )) elif fill_missing_frames == "only_rendered": - temp_data["explicit_frames"] = [ + temp_data["explicit_input_paths"] = [ os.path.join( new_repre["stagingDir"], file ).replace("\\", "/") @@ -667,7 +667,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "without_handles": without_handles, "handles_are_set": handles_are_set, "ext": ext, - "explicit_frames": [], # absolute paths to rendered files + "explicit_input_paths": [], # absolute paths to rendered files "paths_to_remove": [] } @@ -750,8 +750,8 @@ class ExtractReview(pyblish.api.InstancePlugin): if layer_name: ffmpeg_input_args.extend(["-layer", layer_name]) - explicit_frames = temp_data["explicit_frames"] - if temp_data["input_is_sequence"] and not explicit_frames: + explicit_input_paths = temp_data["explicit_input_paths"] + if temp_data["input_is_sequence"] and not explicit_input_paths: # Set start frame of input sequence (just frame in filename) # - definition of input filepath # - add handle start if output should be without handles @@ -778,7 +778,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "-to", "{:0.10f}".format(duration_seconds) ]) - if temp_data["output_is_sequence"] and not explicit_frames: + if temp_data["output_is_sequence"] and not explicit_input_paths: # Set start frame of output sequence (just frame in filename) # - this is definition of an output ffmpeg_output_args.extend([ @@ -809,7 +809,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "-frames:v", str(output_frames_len) ]) - if not explicit_frames: + if not explicit_input_paths: # Add video/image input path ffmpeg_input_args.extend([ "-i", path_to_subprocess_arg(temp_data["full_input_path"]) @@ -821,7 +821,7 @@ class ExtractReview(pyblish.api.InstancePlugin): with open(explicit_frames_path, "w") as fp: lines = [ f"file {file}" - for file in temp_data["explicit_frames"] + for file in temp_data["explicit_input_paths"] ] fp.write("\n".join(lines)) temp_data["paths_to_remove"].append(explicit_frames_path) From 8b8d29042a6eb83b3c7973ee1d07fda4db552a62 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 14:01:26 +0200 Subject: [PATCH 236/626] Refactor reordered import --- client/ayon_core/plugins/publish/extract_review.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 6e31d11dce..0192964422 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -13,6 +13,8 @@ import clique import speedcopy import pyblish.api +from ayon_api import get_last_version_by_product_name, get_representations + from ayon_core.lib import ( get_ffmpeg_tool_args, filter_profiles, @@ -32,7 +34,6 @@ from ayon_core.pipeline.publish import ( get_publish_instance_label, ) from ayon_core.pipeline.publish.lib import add_repre_files_for_cleanup -from ayon_api import get_last_version_by_product_name, get_representations def frame_to_timecode(frame: int, fps: float) -> str: From efb3a01f4b4fe79de85e73e35b28ceab025a8594 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 14:02:15 +0200 Subject: [PATCH 237/626] Removed unnecessary import --- client/ayon_core/plugins/publish/extract_review.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 0192964422..0a1089ec9f 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1,5 +1,3 @@ -from __future__ import annotations - import os import re import copy From 6df129b93f3460778f4fec02f8736efd1a2c62d4 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 15 Apr 2025 16:37:56 +0200 Subject: [PATCH 238/626] Optimizes review encoding for image sequences Simplifies the encoding process for image sequences by removing the conditional check for specific image formats when using the 'copy' codec. This ensures consistent and efficient handling of image sequence encoding for review purposes. --- .../ayon_core/plugins/publish/extract_otio_review.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_otio_review.py b/client/ayon_core/plugins/publish/extract_otio_review.py index f7babc2b7f..908d78ca0d 100644 --- a/client/ayon_core/plugins/publish/extract_otio_review.py +++ b/client/ayon_core/plugins/publish/extract_otio_review.py @@ -526,13 +526,10 @@ class ExtractOTIOReview( input_extension and self.output_ext == input_extension ): - if input_extension.lower() in [ - ".png", ".tif", ".tiff", ".dpx", ".exr" - ]: - command.extend(["-c", "copy"]) - else: - # For lossy formats, force re-encode - command.extend(["-pix_fmt", "rgba"]) + command.extend(["-c", "copy"]) + else: + # For lossy formats, force re-encode + command.extend(["-pix_fmt", "rgba"]) # add output path at the end command.append(output_path) From 1a0e099b00312a94707fb63627730593f7b0a4d4 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:05:22 +0200 Subject: [PATCH 239/626] added config fields into actions model --- .../tools/launcher/models/actions.py | 101 ++++++++++++++++-- 1 file changed, 94 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 3e46520ae5..33a72bf7ad 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,4 +1,5 @@ import os +import copy import platform import subprocess from urllib.parse import urlencode @@ -69,6 +70,7 @@ class ActionItem: order (int): Action ordering. addon_name (str): Addon name. addon_version (str): Addon version. + config_fields (list[dict]): Config fields for webaction. full_label (Optional[str]): Full label, if not set it is generated from 'label' and 'variant_label'. """ @@ -83,8 +85,11 @@ class ActionItem: order, addon_name=None, addon_version=None, + config_fields=None, full_label=None ): + if config_fields is None: + config_fields = [] self.action_type = action_type self.identifier = identifier self.label = label @@ -93,6 +98,7 @@ class ActionItem: self.order = order self.addon_name = addon_name self.addon_version = addon_version + self.config_fields = config_fields self._full_label = full_label def copy(self): @@ -115,6 +121,7 @@ class ActionItem: "icon": self.icon, "order": self.order, "full_label": self._full_label, + "config_fields": copy.deepcopy(self.config_fields), } @classmethod @@ -277,6 +284,72 @@ class ActionsModel: } ) + def get_action_config_values( + self, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ): + selection = self._prepare_selection(project_name, folder_id, task_id) + if not selection.is_project_selected: + return {} + + context = self._get_webaction_context(selection) + + query = { + "addonName": addon_name, + "addonVersion": addon_version, + "identifier": identifier, + "variant": self._variant, + } + url = f"actions/config?{urlencode(query)}" + try: + response = ayon_api.post(url, **context) + response.raise_for_status() + except Exception: + self.log.warning( + "Failed to collect webaction config values.", + exc_info=True + ) + return {} + return response.data + + def set_action_config_values( + self, + identifier, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + values, + ): + selection = self._prepare_selection(project_name, folder_id, task_id) + if not selection.is_project_selected: + return {} + + context = self._get_webaction_context(selection) + context["value"] = values + + query = { + "addonName": addon_name, + "addonVersion": addon_version, + "identifier": identifier, + "variant": self._variant, + } + url = f"actions/config?{urlencode(query)}" + try: + response = ayon_api.post(url, **context) + response.raise_for_status() + except Exception: + self.log.warning( + "Failed to store webaction config values.", + exc_info=True + ) + def _get_addons_manager(self): if self._addons_manager is None: self._addons_manager = AddonsManager() @@ -295,9 +368,9 @@ class ActionsModel: project_settings=project_settings, ) - def _get_webactions(self, selection: LauncherActionSelection): + def _get_webaction_context(self, selection: LauncherActionSelection): if not selection.is_project_selected: - return [] + return None entity_type = None entity_id = None @@ -317,16 +390,27 @@ class ActionsModel: entity_ids.append(entity_id) project_name = selection.project_name - cache: CacheItem = self._webaction_items[project_name][entity_id] - if cache.is_valid: - return cache.get_data() - - context = { + return { "projectName": project_name, "entityType": entity_type, "entitySubtypes": entity_subtypes, "entityIds": entity_ids, } + + def _get_webactions(self, selection: LauncherActionSelection): + if not selection.is_project_selected: + return [] + + context = self._get_webaction_context(selection) + project_name = selection.project_name + entity_id = None + if context["entityIds"]: + entity_id = context["entityIds"][0] + + cache: CacheItem = self._webaction_items[project_name][entity_id] + if cache.is_valid: + return cache.get_data() + try: response = ayon_api.post("actions/list", **context) response.raise_for_status() @@ -342,6 +426,8 @@ class ActionsModel: if icon and icon["type"] == "url" and icon["url"].startswith("/"): icon["type"] = "ayon_url" + config_fields = action.get("configFields") or [] + action_items.append(ActionItem( "webaction", action["identifier"], @@ -352,6 +438,7 @@ class ActionsModel: action["order"], action["addonName"], action["addonVersion"], + config_fields, )) cache.update_data(action_items) From 4d6978490ff75a15048fd9ed480f4e11b090aa61 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:05:33 +0200 Subject: [PATCH 240/626] added new methods to controller --- client/ayon_core/tools/launcher/abstract.py | 27 +++++++++++++++ client/ayon_core/tools/launcher/control.py | 38 +++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index 372e84c149..dd65c95167 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -302,6 +302,8 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): project_name, folder_id, task_id, + addon_name, + addon_version, ): """Trigger action on given context. @@ -317,6 +319,31 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): """ pass + @abstractmethod + def get_action_config_values( + self, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ): + pass + + @abstractmethod + def set_action_config_values( + self, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + values, + ): + pass + @abstractmethod def refresh(self): """Refresh everything, models, ui etc. diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index 5b7eb1ab4a..445b17ac38 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -155,6 +155,44 @@ class BaseLauncherController( addon_version, ) + def get_action_config_values( + self, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ): + return self._actions_model.get_action_config_values( + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ) + + def set_action_config_values( + self, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + values, + ): + return self._actions_model.set_action_config_values( + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + values, + ) + # General methods def refresh(self): self._emit_event("controller.refresh.started") From 99a7d2f5321bc6d42cdc1e8ba3c912a6b7e3a85a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:06:39 +0200 Subject: [PATCH 241/626] implemented base of action config UI --- .../tools/launcher/ui/actions_widget.py | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 4ba407042d..2f7133b863 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -1,10 +1,21 @@ import time +import uuid import collections from qtpy import QtWidgets, QtCore, QtGui +from ayon_core import style +from ayon_core.lib.attribute_definitions import ( + UILabelDef, + EnumDef, + TextDef, + BoolDef, + NumberDef, + HiddenDef, +) from ayon_core.tools.flickcharm import FlickCharm from ayon_core.tools.utils import get_qt_icon +from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog from .resources import get_options_image_path @@ -168,6 +179,12 @@ class ActionsQtModel(QtGui.QStandardItemModel): self._action_items_by_id = action_items_by_id self.refreshed.emit() + def get_action_config_fields(self, action_id: str): + action_item = self._action_items_by_id.get(action_id) + if action_item is not None: + return action_item.config_fields + return None + def _on_selection_project_changed(self, event): self._selected_project_name = event["project_name"] self._selected_folder_id = None @@ -355,6 +372,7 @@ class ActionsWidget(QtWidgets.QWidget): animation_timer.timeout.connect(self._on_animation) view.clicked.connect(self._on_clicked) + view.customContextMenuRequested.connect(self._on_context_menu) model.refreshed.connect(self._on_model_refresh) self._animated_items = set() @@ -365,6 +383,8 @@ class ActionsWidget(QtWidgets.QWidget): self._model = model self._proxy_model = proxy_model + self._config_widget = None + self._set_row_height(1) def refresh(self): @@ -461,3 +481,114 @@ class ActionsWidget(QtWidgets.QWidget): action_item.addon_version, ) self._start_animation(index) + + def _on_context_menu(self, point): + """Creates menu to force skip opening last workfile.""" + index = self._view.indexAt(point) + if not index.isValid(): + return + + action_id = index.data(ACTION_ID_ROLE) + if not action_id: + return + + config_fields = self._model.get_action_config_fields(action_id) + if not config_fields: + return + + values = self._controller.get_action_config_values( + action_id, + project_name=self._model.get_selected_project_name(), + folder_id=self._model.get_selected_folder_id(), + task_id=self._model.get_selected_task_id(), + addon_name=index.data(ACTION_ADDON_NAME_ROLE), + addon_version=index.data(ACTION_ADDON_VERSION_ROLE), + ) + + dialog = self._create_config_dialog(config_fields) + result = dialog.exec_() + if result == QtWidgets.QDialog.Rejected: + return + new_values = dialog.get_values() + self._controller.set_action_config_values( + action_id, + project_name=self._model.get_selected_project_name(), + folder_id=self._model.get_selected_folder_id(), + task_id=self._model.get_selected_task_id(), + addon_name=index.data(ACTION_ADDON_NAME_ROLE), + addon_version=index.data(ACTION_ADDON_VERSION_ROLE), + values=new_values, + ) + + def _create_config_dialog(self, config_fields): + """Creates config widget.""" + """ + type="label" text + type="text" label value placeholder regex multiline syntax + type="boolean" label value + type="select" label value options + type="multiselect" label value options + type="hidden" value + type="integer" label value placeholder min max + type="float" label value placeholder min max + """ + attr_defs = [] + for config_field in config_fields: + field_type = config_field["type"] + attr_def = None + if field_type == "label": + attr_def = UILabelDef( + config_field["text"], key=uuid.uuid4().hex + ) + elif field_type == "boolean": + attr_def = BoolDef( + config_field["name"], + default=config_field["value"], + label=config_field["label"], + ) + elif field_type == "text": + attr_def = TextDef( + config_field["name"], + default=config_field["value"], + label=config_field["label"], + placeholder=config_field["placeholder"], + multiline=config_field["multiline"], + regex=config_field["regex"], + # syntax=config_field["syntax"], + ) + elif field_type in ("integer", "float"): + attr_def = NumberDef( + config_field["name"], + default=config_field["value"], + label=config_field["label"], + decimals=0 if field_type == "integer" else 5, + placeholder=config_field["placeholder"], + min_value=config_field.get("min"), + max_value=config_field.get("max"), + ) + elif field_type in ("select", "multiselect"): + attr_def = EnumDef( + config_field["name"], + default=config_field["value"], + label=config_field["label"], + options=config_field["options"], + multi_select=field_type == "multiselect", + ) + elif field_type == "hidden": + attr_def = HiddenDef( + config_field["name"], + default=config_field["value"], + ) + + if attr_def is None: + print(f"Unknown config field type: {field_type}") + attr_def = UILabelDef( + f"Unknown field type '{field_type}", + key=uuid.uuid4().hex + ) + attr_defs.append(attr_def) + + dialog = AttributeDefinitionsDialog(attr_defs, parent=self) + dialog.setWindowTitle("Action Config") + dialog.setStyleSheet(style.load_stylesheet()) + return dialog From 6dcd8f29d0564a68f8a24b4c1737a0da290f5929 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:06:52 +0200 Subject: [PATCH 242/626] implemented helper method to set values of dialog --- client/ayon_core/tools/attribute_defs/dialog.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/attribute_defs/dialog.py b/client/ayon_core/tools/attribute_defs/dialog.py index ef717d576a..53405105f5 100644 --- a/client/ayon_core/tools/attribute_defs/dialog.py +++ b/client/ayon_core/tools/attribute_defs/dialog.py @@ -5,7 +5,7 @@ from .widgets import AttributeDefinitionsWidget class AttributeDefinitionsDialog(QtWidgets.QDialog): def __init__(self, attr_defs, parent=None): - super(AttributeDefinitionsDialog, self).__init__(parent) + super().__init__(parent) attrs_widget = AttributeDefinitionsWidget(attr_defs, self) @@ -31,3 +31,6 @@ class AttributeDefinitionsDialog(QtWidgets.QDialog): def get_values(self): return self._attrs_widget.current_value() + + def set_values(self, values): + self._attrs_widget.set_value(values) From 63408d7d8307b530ea303cf51aaa52f26cb3c725 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:07:20 +0200 Subject: [PATCH 243/626] use current values for UI --- client/ayon_core/tools/launcher/ui/actions_widget.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 2f7133b863..0dad290c0a 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -506,6 +506,7 @@ class ActionsWidget(QtWidgets.QWidget): ) dialog = self._create_config_dialog(config_fields) + dialog.set_values(values) result = dialog.exec_() if result == QtWidgets.QDialog.Rejected: return From 79b09e6a7be9b186c01a1991bf68f81f25e876ba Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:18:01 +0200 Subject: [PATCH 244/626] move types to docstring --- .../tools/launcher/ui/actions_widget.py | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 0dad290c0a..99fd249918 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -522,16 +522,19 @@ class ActionsWidget(QtWidgets.QWidget): ) def _create_config_dialog(self, config_fields): - """Creates config widget.""" - """ - type="label" text - type="text" label value placeholder regex multiline syntax - type="boolean" label value - type="select" label value options - type="multiselect" label value options - type="hidden" value - type="integer" label value placeholder min max - type="float" label value placeholder min max + """Creates config widget. + + Types: + label - 'text' + text - 'label', 'value', 'placeholder', 'regex', + 'multiline', 'syntax' + boolean - 'label', 'value' + select - 'label', 'value', 'options' + multiselect - 'label', 'value', 'options' + hidden - 'value' + integer - 'label', 'value', 'placeholder', 'min', 'max' + float - 'label', 'value', 'placeholder', 'min', 'max' + """ attr_defs = [] for config_field in config_fields: From cdf8764bb13c452eca607fa5aa9a05db14921724 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 15 Apr 2025 17:18:28 +0200 Subject: [PATCH 245/626] Fix return type --- client/ayon_core/plugins/publish/extract_review.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 0a1089ec9f..3a7c6a6b1e 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -5,7 +5,7 @@ import json import shutil import subprocess from abc import ABC, abstractmethod -from typing import Dict, Any +from typing import Dict, Any, Union import clique import speedcopy @@ -978,7 +978,7 @@ class ExtractReview(pyblish.api.InstancePlugin): current_repre: Dict[Any, Any], start_frame: int, end_frame: int - ) -> Dict[int, str] | None: + ) -> Union[Dict[int, str], None]: """Tries to replace missing frames from ones from last version""" repre_file_paths = self._get_last_version_files( instance, current_repre) @@ -1073,7 +1073,7 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_height: int, extension: str, temp_data: Dict[str, Any] - ) -> Dict[int, str] | None: + ) -> Union[Dict[int, str], None]: """Fills missing files by blank frame.""" blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") temp_data["paths_to_remove"].append(blank_frame_path) From 0fdff60147f61b0a31a94b9a7f19ce022f6e8380 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Tue, 15 Apr 2025 19:08:14 +0200 Subject: [PATCH 246/626] remove the poetry.lock - again --- poetry.lock | 1531 --------------------------------------------------- 1 file changed, 1531 deletions(-) delete mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 235bb6770d..0000000000 --- a/poetry.lock +++ /dev/null @@ -1,1531 +0,0 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. - -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] - -[[package]] -name = "attrs" -version = "25.1.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, - {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, -] - -[package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] - -[[package]] -name = "ayon-python-api" -version = "1.0.12" -description = "AYON Python API" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "ayon-python-api-1.0.12.tar.gz", hash = "sha256:8e4c03436df8afdda4c6ad4efce436068771995bb0153a90e003364afa0e7f55"}, - {file = "ayon_python_api-1.0.12-py3-none-any.whl", hash = "sha256:65f61c2595dd6deb26fed5e3fda7baef887f475fa4b21df12513646ddccf4a7d"}, -] - -[package.dependencies] -appdirs = ">=1,<2" -requests = ">=2.27.1" -Unidecode = ">=1.3.0" - -[[package]] -name = "babel" -version = "2.17.0" -description = "Internationalization utilities" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, - {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, -] - -[package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] - -[[package]] -name = "backrefs" -version = "5.8" -description = "A wrapper around re and regex that adds additional back references." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d"}, - {file = "backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b"}, - {file = "backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486"}, - {file = "backrefs-5.8-py313-none-any.whl", hash = "sha256:e3a63b073867dbefd0536425f43db618578528e3896fb77be7141328642a1585"}, - {file = "backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc"}, - {file = "backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd"}, -] - -[package.extras] -extras = ["regex"] - -[[package]] -name = "certifi" -version = "2025.1.31" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, -] - -[[package]] -name = "cfgv" -version = "3.4.0" -description = "Validate configuration and produce human readable error messages." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, - {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, - {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, -] - -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "clique" -version = "2.0.0" -description = "Manage collections with common numerical component" -optional = false -python-versions = ">=3.0, <4.0" -groups = ["dev"] -files = [ - {file = "clique-2.0.0-py2.py3-none-any.whl", hash = "sha256:45e2a4c6078382e0b217e5e369494279cf03846d95ee601f93290bed5214c22e"}, - {file = "clique-2.0.0.tar.gz", hash = "sha256:6e1115dbf21b1726f4b3db9e9567a662d6bdf72487c4a0a1f8cb7f10cf4f4754"}, -] - -[package.extras] -dev = ["lowdown (>=0.2.0,<1)", "pytest (>=2.3.5,<5)", "pytest-cov (>=2,<3)", "pytest-runner (>=2.7,<3)", "sphinx (>=2,<4)", "sphinx-rtd-theme (>=0.1.6,<1)"] -doc = ["lowdown (>=0.2.0,<1)", "sphinx (>=2,<4)", "sphinx-rtd-theme (>=0.1.6,<1)"] -test = ["pytest (>=2.3.5,<5)", "pytest-cov (>=2,<3)", "pytest-runner (>=2.7,<3)"] - -[[package]] -name = "codespell" -version = "2.4.1" -description = "Fix common misspellings in text files" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "codespell-2.4.1-py3-none-any.whl", hash = "sha256:3dadafa67df7e4a3dbf51e0d7315061b80d265f9552ebd699b3dd6834b47e425"}, - {file = "codespell-2.4.1.tar.gz", hash = "sha256:299fcdcb09d23e81e35a671bbe746d5ad7e8385972e65dbb833a2eaac33c01e5"}, -] - -[package.extras] -dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"] -hard-encoding-detection = ["chardet"] -toml = ["tomli ; python_version < \"3.11\""] -types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "csscompressor" -version = "0.9.5" -description = "A python port of YUI CSS Compressor" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05"}, -] - -[[package]] -name = "distlib" -version = "0.3.9" -description = "Distribution utilities" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "filelock" -version = "3.17.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, - {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] - -[package.dependencies] -python-dateutil = ">=2.8.1" - -[package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] - -[[package]] -name = "griffe" -version = "1.6.2" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "griffe-1.6.2-py3-none-any.whl", hash = "sha256:6399f7e663150e4278a312a8e8a14d2f3d7bd86e2ef2f8056a1058e38579c2ee"}, - {file = "griffe-1.6.2.tar.gz", hash = "sha256:3a46fa7bd83280909b63c12b9a975732a927dd97809efe5b7972290b606c5d91"}, -] - -[package.dependencies] -colorama = ">=0.4" - -[[package]] -name = "htmlmin2" -version = "0.1.13" -description = "An HTML Minifier" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2"}, -] - -[[package]] -name = "identify" -version = "2.6.7" -description = "File identification library for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "identify-2.6.7-py2.py3-none-any.whl", hash = "sha256:155931cb617a401807b09ecec6635d6c692d180090a1cedca8ef7d58ba5b6aa0"}, - {file = "identify-2.6.7.tar.gz", hash = "sha256:3fa266b42eba321ee0b2bb0936a6a6b9e36a1351cbb69055b3082f4193035684"}, -] - -[package.extras] -license = ["ukkonen"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "importlib-metadata" -version = "8.6.1" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e"}, - {file = "importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580"}, -] - -[package.dependencies] -zipp = ">=3.20" - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] - -[[package]] -name = "importlib-resources" -version = "6.5.2" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec"}, - {file = "importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] -type = ["pytest-mypy"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, - {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jsmin" -version = "3.0.1" -description = "JavaScript minifier." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc"}, -] - -[[package]] -name = "markdown" -version = "3.7" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, - {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markdown-checklist" -version = "0.4.4" -description = "Python Markdown extension for task lists with checkboxes" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "markdown-checklist-0.4.4.tar.gz", hash = "sha256:69c93850798b1e01cdc6fcd4a80592d941f669f6451bbf69c71a4ffd1142f849"}, -] - -[package.dependencies] -markdown = "*" - -[package.extras] -coverage = ["coverage", "figleaf"] -testing = ["pytest"] - -[[package]] -name = "markupsafe" -version = "3.0.2" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "mdx-gh-links" -version = "0.4" -description = "An extension to Python-Markdown which adds support for shorthand links to GitHub users, repositories, issues and commits." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "mdx_gh_links-0.4-py3-none-any.whl", hash = "sha256:9057bca1fa5280bf1fcbf354381e46c9261cc32c2d5c0407801f8a910be5f099"}, - {file = "mdx_gh_links-0.4.tar.gz", hash = "sha256:41d5aac2ab201425aa0a19373c4095b79e5e015fdacfe83c398199fe55ca3686"}, -] - -[package.dependencies] -markdown = ">=3.0.0" - -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] - -[[package]] -name = "mike" -version = "2.1.3" -description = "Manage multiple versions of your MkDocs-powered documentation" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "mike-2.1.3-py3-none-any.whl", hash = "sha256:d90c64077e84f06272437b464735130d380703a76a5738b152932884c60c062a"}, - {file = "mike-2.1.3.tar.gz", hash = "sha256:abd79b8ea483fb0275b7972825d3082e5ae67a41820f8d8a0dc7a3f49944e810"}, -] - -[package.dependencies] -importlib-metadata = "*" -importlib-resources = "*" -jinja2 = ">=2.7" -mkdocs = ">=1.0" -pyparsing = ">=3.0" -pyyaml = ">=5.1" -pyyaml-env-tag = "*" -verspec = "*" - -[package.extras] -dev = ["coverage", "flake8 (>=3.0)", "flake8-quotes", "shtab"] -test = ["coverage", "flake8 (>=3.0)", "flake8-quotes", "shtab"] - -[[package]] -name = "mkdocs" -version = "1.6.1" -description = "Project documentation with Markdown." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, - {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, -] - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -jinja2 = ">=2.11.1" -markdown = ">=3.3.6" -markupsafe = ">=2.0.1" -mergedeep = ">=1.3.4" -mkdocs-get-deps = ">=0.2.0" -packaging = ">=20.5" -pathspec = ">=0.11.1" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] - -[[package]] -name = "mkdocs-autoapi" -version = "0.4.0" -description = "MkDocs plugin providing automatic API reference generation" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "mkdocs_autoapi-0.4.0-py3-none-any.whl", hash = "sha256:ce2b5e8b4d1df37bd1273a6bce1dded152107e2280cedbfa085cea10edf8531b"}, - {file = "mkdocs_autoapi-0.4.0.tar.gz", hash = "sha256:409c2da8eb297ef51381b066744ac1cdf846220bcc779bdba680fbc5a080df1e"}, -] - -[package.dependencies] -mkdocs = ">=1.4.0" -mkdocstrings = ">=0.19.0" - -[package.extras] -python = ["mkdocstrings[python] (>=0.19.0)"] -python-legacy = ["mkdocstrings[python-legacy] (>=0.19.0)"] -vba = ["mkdocstrings-vba (>=0.0.10)"] - -[[package]] -name = "mkdocs-autorefs" -version = "1.4.1" -description = "Automatically link across pages in MkDocs." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mkdocs_autorefs-1.4.1-py3-none-any.whl", hash = "sha256:9793c5ac06a6ebbe52ec0f8439256e66187badf4b5334b5fde0b128ec134df4f"}, - {file = "mkdocs_autorefs-1.4.1.tar.gz", hash = "sha256:4b5b6235a4becb2b10425c2fa191737e415b37aa3418919db33e5d774c9db079"}, -] - -[package.dependencies] -Markdown = ">=3.3" -markupsafe = ">=2.0.1" -mkdocs = ">=1.1" - -[[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, - {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} -mergedeep = ">=1.3.4" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" - -[[package]] -name = "mkdocs-material" -version = "9.6.9" -description = "Documentation that simply works" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mkdocs_material-9.6.9-py3-none-any.whl", hash = "sha256:6e61b7fb623ce2aa4622056592b155a9eea56ff3487d0835075360be45a4c8d1"}, - {file = "mkdocs_material-9.6.9.tar.gz", hash = "sha256:a4872139715a1f27b2aa3f3dc31a9794b7bbf36333c0ba4607cf04786c94f89c"}, -] - -[package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.0,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" - -[package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -description = "Extension pack for Python Markdown and MkDocs Material." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, -] - -[[package]] -name = "mkdocs-minify-plugin" -version = "0.8.0" -description = "An MkDocs plugin to minify HTML, JS or CSS files prior to being written to disk" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d"}, - {file = "mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6"}, -] - -[package.dependencies] -csscompressor = ">=0.9.5" -htmlmin2 = ">=0.1.13" -jsmin = ">=3.0.1" -mkdocs = ">=1.4.1" - -[[package]] -name = "mkdocstrings" -version = "0.29.0" -description = "Automatic documentation from sources, for MkDocs." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mkdocstrings-0.29.0-py3-none-any.whl", hash = "sha256:8ea98358d2006f60befa940fdebbbc88a26b37ecbcded10be726ba359284f73d"}, - {file = "mkdocstrings-0.29.0.tar.gz", hash = "sha256:3657be1384543ce0ee82112c3e521bbf48e41303aa0c229b9ffcccba057d922e"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} -Jinja2 = ">=2.11.1" -Markdown = ">=3.6" -MarkupSafe = ">=1.1" -mkdocs = ">=1.6" -mkdocs-autorefs = ">=1.4" -pymdown-extensions = ">=6.3" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} - -[package.extras] -crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=1.16.2)"] -python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] - -[[package]] -name = "mkdocstrings-python" -version = "1.16.8" -description = "A Python handler for mkdocstrings." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mkdocstrings_python-1.16.8-py3-none-any.whl", hash = "sha256:211b7aaf776cd45578ecb531e5ad0d3a35a8be9101a6bfa10de38a69af9d8fd8"}, - {file = "mkdocstrings_python-1.16.8.tar.gz", hash = "sha256:9453ccae69be103810c1cf6435ce71c8f714ae37fef4d87d16aa92a7c800fe1d"}, -] - -[package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" -typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "mkdocstrings-shell" -version = "1.0.3" -description = "A shell scripts/libraries handler for mkdocstrings." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mkdocstrings_shell-1.0.3-py3-none-any.whl", hash = "sha256:b23ebe43d06c9c19a541548f34d42ee4e4324ae06423eba8a9136e295c67f345"}, - {file = "mkdocstrings_shell-1.0.3.tar.gz", hash = "sha256:3bdea6a1e794a5d0e15d461f33b92e0b9f3b9a1e2c33671d9a2b7d83c761096a"}, -] - -[package.dependencies] -mkdocstrings = ">=0.28.3" -shellman = ">=1.0.2" - -[[package]] -name = "mock" -version = "5.1.0" -description = "Rolling backport of unittest.mock for all Pythons" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "mock-5.1.0-py3-none-any.whl", hash = "sha256:18c694e5ae8a208cdb3d2c20a993ca1a7b0efa258c247a1e565150f477f83744"}, - {file = "mock-5.1.0.tar.gz", hash = "sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d"}, -] - -[package.extras] -build = ["blurb", "twine", "wheel"] -docs = ["sphinx"] -test = ["pytest", "pytest-cov"] - -[[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "nxtools" -version = "1.6" -description = "nxtools is a set of various tools and helpers used by Nebula broadcast automation system and other software by imm studios, z.s." -optional = false -python-versions = ">=3.6,<4.0" -groups = ["dev"] -files = [ - {file = "nxtools-1.6-py3-none-any.whl", hash = "sha256:cde2d2c19193a2bd9c8071eeb3f121474ec34ab5c014de9a90f0c434cdfee716"}, - {file = "nxtools-1.6.tar.gz", hash = "sha256:e91839eef643483a3165165a46a693ad976d40a393ee5476a341e4e8bb102b92"}, -] - -[package.dependencies] -colorama = ">=0.4.4,<0.5.0" -Unidecode = ">=1.2.0,<2.0.0" - -[[package]] -name = "opentimelineio" -version = "0.17.0" -description = "Editorial interchange format and API" -optional = false -python-versions = "!=3.9.0,>=3.7" -groups = ["dev"] -files = [ - {file = "OpenTimelineIO-0.17.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:2dd31a570cabfd6227c1b1dd0cc038da10787492c26c55de058326e21fe8a313"}, - {file = "OpenTimelineIO-0.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5a1da5d4803d1ba5e846b181a9e0f4a392c76b9acc5e08947772bc086f2ebfc0"}, - {file = "OpenTimelineIO-0.17.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3527977aec8202789a42d60e1e0dc11b4154f585ef72921760445f43e7967a00"}, - {file = "OpenTimelineIO-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b3aafb4c50455832ed2627c2cac654b896473a5c1f8348ddc07c10be5cfbd59"}, - {file = "OpenTimelineIO-0.17.0-cp310-cp310-win32.whl", hash = "sha256:fee45af9f6330773893cd0858e92f8256bb5bde4229b44a76f03e59a9fb1b1b6"}, - {file = "OpenTimelineIO-0.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:d51887619689c21d67cc4b11b1088f99ae44094513315e7a144be00f1393bfa8"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:cbf05c3e8c0187969f79e91f7495d1f0dc3609557874d8e601ba2e072c70ddb1"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d3430c3f4e88c5365d7b6afbee920b0815b62ecf141abe44cd739c9eedc04284"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1912345227b0bd1654c7153863eadbcee60362aa46340678e576e5d2aa3106a"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51e06eb11a868d970c1534e39faf916228d5163bf3598076d408d8f393ab0bd4"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-win32.whl", hash = "sha256:5c3a3f4780b25a8c1a80d788becba691d12b629069ad8783d0db21027639276f"}, - {file = "OpenTimelineIO-0.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:43c8726b33af30ba42928972192311ea0f986edbbd5f74651bada182d4fe805c"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:9a9af4105a088c0ab131780e49db268db7e37871aac33db842de6b2b16f14e39"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8e653ad1dd3b85f5c312a742dc24b61b330964aa391dc5bc072fe8b9c85adff1"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a77823c27a1b93c6b87682372c3734ac5fddc10bfe53875e657d43c60fb885"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4f4efcf3ddd81b62c4feb49a0bcc309b50ffeb6a8c48ab173d169a029006f4d"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-win32.whl", hash = "sha256:9872ab74a20bb2bb3a50af04e80fe9238998d67d6be4e30e45aebe25d3eefac6"}, - {file = "OpenTimelineIO-0.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:c83b78be3312d3152d7e07ab32b0086fe220acc2a5b035b70ad69a787c0ece62"}, - {file = "OpenTimelineIO-0.17.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:0e671a6f2a1f772445bb326c7640dc977cfc3db589fe108a783a0311939cfac8"}, - {file = "OpenTimelineIO-0.17.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b931a3189b4ce064f06f15a89fe08ef4de01f7dcf0abc441fe2e02ef2a3311bb"}, - {file = "OpenTimelineIO-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923cb54d806c981cf1e91916c3e57fba5664c22f37763dd012bad5a5a7bd4db4"}, - {file = "OpenTimelineIO-0.17.0-cp37-cp37m-win32.whl", hash = "sha256:8e16598c5084dcb21df3d83978b0e5f72300af9edd4cdcb85e3b0ba5da0df4e8"}, - {file = "OpenTimelineIO-0.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7eed5033494888fb3f802af50e60559e279b2f398802748872903c2f54efd2c9"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:118baa22b9227da5003bee653601a68686ae2823682dcd7d13c88178c63081c3"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:43389eacdee2169de454e1c79ecfea82f54a9e73b67151427a9b621349a22b7f"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17659b1e6aa42ed617a942f7a2bfc6ecc375d0464ec127ce9edf896278ecaee9"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36d5ea8cfbebf3c9013cc680eef5be48bffb515aafa9dc31e99bf66052a4ca3d"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-win32.whl", hash = "sha256:cc67c74eb4b73bc0f7d135d3ff3dbbd86b2d451a9b142690a8d1631ad79c46f2"}, - {file = "OpenTimelineIO-0.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:69b39079bee6fa4aff34c6ad6544df394bc7388483fa5ce958ecd16e243a53ad"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a33554894dea17c22feec0201991e705c2c90a679ba2a012a0c558a7130df711"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6b1ad3b3155370245b851b2f7b60006b2ebbb5bb76dd0fdc49bb4dce73fa7d96"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:030454a9c0e9e82e5a153119f9afb8f3f4e64a3b27f80ac0dcde44b029fd3f3f"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce64376a28919533bd4f744ff8885118abefa73f78fd408f95fa7a9489855b6"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-win32.whl", hash = "sha256:fa8cdceb25f9003c3c0b5b32baef2c764949d88b867161ddc6f44f48f6bbfa4a"}, - {file = "OpenTimelineIO-0.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:fbcf8a000cd688633c8dc5d22e91912013c67c674329eba603358e3b54da32bf"}, - {file = "opentimelineio-0.17.0.tar.gz", hash = "sha256:10ef324e710457e9977387cd9ef91eb24a9837bfb370aec3330f9c0f146cea85"}, -] - -[package.extras] -dev = ["check-manifest", "coverage (>=4.5)", "flake8 (>=3.5)", "urllib3 (>=1.24.3)"] -view = ["PySide2 (>=5.11,<6.0) ; platform_machine == \"x86_64\"", "PySide6 (>=6.2,<7.0) ; platform_machine == \"aarch64\""] - -[[package]] -name = "packaging" -version = "24.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, -] - -[[package]] -name = "paginate" -version = "0.5.7" -description = "Divides large result sets into pages for easier browsing" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, -] - -[package.extras] -dev = ["pytest", "tox"] -lint = ["black"] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pre-commit" -version = "3.8.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, - {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "pyblish-base" -version = "1.8.12" -description = "Plug-in driven automation framework for content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "pyblish-base-1.8.12.tar.gz", hash = "sha256:ebc184eb038864380555227a8b58055dd24ece7e6ef7f16d33416c718512871b"}, - {file = "pyblish_base-1.8.12-py2.py3-none-any.whl", hash = "sha256:2cbe956bfbd4175a2d7d22b344cd345800f4d4437153434ab658fc12646a11e8"}, -] - -[[package]] -name = "pygments" -version = "2.19.1" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, - {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pymdown-extensions" -version = "10.14.3" -description = "Extension pack for Python Markdown." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, - {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, -] - -[package.dependencies] -markdown = ">=3.6" -pyyaml = "*" - -[package.extras] -extra = ["pygments (>=2.19.1)"] - -[[package]] -name = "pyparsing" -version = "3.2.3" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf"}, - {file = "pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be"}, -] - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - -[[package]] -name = "pytest" -version = "8.3.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-print" -version = "1.0.2" -description = "pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout)" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pytest_print-1.0.2-py3-none-any.whl", hash = "sha256:3ae7891085dddc3cd697bd6956787240107fe76d6b5cdcfcd782e33ca6543de9"}, - {file = "pytest_print-1.0.2.tar.gz", hash = "sha256:2780350a7bbe7117f99c5d708dc7b0431beceda021b1fd3f11200670d7f33679"}, -] - -[package.dependencies] -pytest = ">=8.3.2" - -[package.extras] -test = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "pytest-mock (>=3.14)"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["dev"] -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] - -[package.dependencies] -pyyaml = "*" - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "ruff" -version = "0.3.7" -description = "An extremely fast Python linter and code formatter, written in Rust." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0e8377cccb2f07abd25e84fc5b2cbe48eeb0fea9f1719cad7caedb061d70e5ce"}, - {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:15a4d1cc1e64e556fa0d67bfd388fed416b7f3b26d5d1c3e7d192c897e39ba4b"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28bdf3d7dc71dd46929fafeec98ba89b7c3550c3f0978e36389b5631b793663"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:379b67d4f49774ba679593b232dcd90d9e10f04d96e3c8ce4a28037ae473f7bb"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c060aea8ad5ef21cdfbbe05475ab5104ce7827b639a78dd55383a6e9895b7c51"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ebf8f615dde968272d70502c083ebf963b6781aacd3079081e03b32adfe4d58a"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48098bd8f5c38897b03604f5428901b65e3c97d40b3952e38637b5404b739a2"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8a4fda219bf9024692b1bc68c9cff4b80507879ada8769dc7e985755d662ea"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c44e0149f1d8b48c4d5c33d88c677a4aa22fd09b1683d6a7ff55b816b5d074f"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3050ec0af72b709a62ecc2aca941b9cd479a7bf2b36cc4562f0033d688e44fa1"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a29cc38e4c1ab00da18a3f6777f8b50099d73326981bb7d182e54a9a21bb4ff7"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b15cc59c19edca917f51b1956637db47e200b0fc5e6e1878233d3a938384b0b"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e491045781b1e38b72c91247cf4634f040f8d0cb3e6d3d64d38dcf43616650b4"}, - {file = "ruff-0.3.7-py3-none-win32.whl", hash = "sha256:bc931de87593d64fad3a22e201e55ad76271f1d5bfc44e1a1887edd0903c7d9f"}, - {file = "ruff-0.3.7-py3-none-win_amd64.whl", hash = "sha256:5ef0e501e1e39f35e03c2acb1d1238c595b8bb36cf7a170e7c1df1b73da00e74"}, - {file = "ruff-0.3.7-py3-none-win_arm64.whl", hash = "sha256:789e144f6dc7019d1f92a812891c645274ed08af6037d11fc65fcbc183b7d59f"}, - {file = "ruff-0.3.7.tar.gz", hash = "sha256:d5c1aebee5162c2226784800ae031f660c350e7a3402c4d1f8ea4e97e232e3ba"}, -] - -[[package]] -name = "semver" -version = "3.0.4" -description = "Python helper for Semantic Versioning (https://semver.org)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746"}, - {file = "semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602"}, -] - -[[package]] -name = "shellman" -version = "1.0.2" -description = "Write documentation in comments and render it with templates." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "shellman-1.0.2-py3-none-any.whl", hash = "sha256:f8c960fd2d3785e195f86fcd8f110a8d51a950e759d82c14a5af0bd71b918b3c"}, - {file = "shellman-1.0.2.tar.gz", hash = "sha256:48cba79d6415c0d013ad4dfd2205ed81b0e468795d1886dcda943ac78eaffd38"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} -jinja2 = ">=3" -typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "six" -version = "1.17.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["dev"] -files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, -] - -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - -[[package]] -name = "tomlkit" -version = "0.13.2" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, - {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "unidecode" -version = "1.3.8" -description = "ASCII transliterations of Unicode text" -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "Unidecode-1.3.8-py3-none-any.whl", hash = "sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39"}, - {file = "Unidecode-1.3.8.tar.gz", hash = "sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4"}, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, - {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "verspec" -version = "0.1.0" -description = "Flexible version handling" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31"}, - {file = "verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e"}, -] - -[package.extras] -test = ["coverage", "flake8 (>=3.7)", "mypy", "pretend", "pytest"] - -[[package]] -name = "virtualenv" -version = "20.29.2" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "virtualenv-20.29.2-py3-none-any.whl", hash = "sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a"}, - {file = "virtualenv-20.29.2.tar.gz", hash = "sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] - -[[package]] -name = "watchdog" -version = "6.0.0" -description = "Filesystem events monitoring" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, - {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, - {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, - {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, - {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "zipp" -version = "3.21.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, - {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] -type = ["pytest-mypy"] - -[metadata] -lock-version = "2.1" -python-versions = ">=3.9.1,<3.10" -content-hash = "c0d98dae3faeed5237f286362f9d280ab17c3d42f7cd41fdd69ee4546983c553" From 95bf29263da48f913a146c847bc8e961e3bc9827 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 16 Apr 2025 10:33:59 +0200 Subject: [PATCH 247/626] fix spacing --- client/ayon_core/tools/launcher/models/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 33a72bf7ad..f80f2cc443 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -477,7 +477,7 @@ class ActionsModel: } # TODO pass label in as argument? - action_label= "Webaction" + action_label = "Webaction" failed = False error_message = None From 4f9f7724accd32b762f1b9d145b9aec4b2c27413 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 16 Apr 2025 10:35:41 +0200 Subject: [PATCH 248/626] fix original intnetion of thumbnail created logging --- client/ayon_core/plugins/publish/extract_thumbnail.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 18393022ed..b72862ea22 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -164,7 +164,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): instance.context.data["cleanupFullPaths"].append(dst_staging) oiio_supported = is_oiio_supported() - repre_thumb_created = False + thumbnail_created = False for repre in filtered_repres: # Reset for each iteration to handle cases where multiple # reviewable thumbnails are needed @@ -241,6 +241,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): if not repre_thumb_created: continue + thumbnail_created = True if len(explicit_repres) > 1: repre_name = "thumbnail_{}".format(repre["outputName"]) else: @@ -294,7 +295,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # There is no need to create more then one thumbnail break - if not repre_thumb_created: + if not thumbnail_created: self.log.warning("Thumbnail has not been created.") def _is_review_instance(self, instance): From d0999af4efaf6abcee42b4165f7919e6253b97b0 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 16 Apr 2025 11:14:55 +0200 Subject: [PATCH 249/626] added aces subfolders --- server/settings/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index f49866dc95..97434d0b93 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -72,19 +72,19 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ { - "value": "{BUILTIN_OCIO_ROOT}/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 "label": "ACES 1.3 Studio (OCIO v2)", "description": ( "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") }, { - "value": "{BUILTIN_OCIO_ROOT}/studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio", # noqa: E501 "label": "ACES 1.3 Studio (OCIO v2.1)", "description": ( "Aces 1.3 Studio OCIO config file. Requires OCIO v2.1.") }, { - "value": "{BUILTIN_OCIO_ROOT}/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_2.0/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 "label": "ACES 2.0 Studio (OCIO v2.4)", "description": ( "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") From 2cd692d1dafd00a207a02ff8c4c857ed7a15c652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Apr 2025 11:51:06 +0200 Subject: [PATCH 250/626] :recycle: fix temp pytes-ayon dependency to pass tests --- pyproject.toml | 14 ++++++++++---- .../plugins/publish/test_integrate_traits.py | 6 ++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 10e477ca9b..32953bed45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,10 +26,6 @@ codespell = "^2.2.6" semver = "^3.0.2" mypy = "^1.14.0" mock = "^5.0.0" -attrs = "^25.0.0" -pyblish-base = "^1.8.7" -clique = "^2.0.0" -opentimelineio = "^0.17.0" tomlkit = "^0.13.2" requests = "^2.32.3" mkdocs-material = "^9.6.7" @@ -42,6 +38,16 @@ pymdown-extensions = "^10.14.3" mike = "^2.1.3" mkdocstrings-shell = "^1.0.2" +[tool.poetry.group.test.dependencies] +attrs = "^25.0.0" +pyblish-base = "^1.8.7" +clique = "^2.0.0" +opentimelineio = "^0.17.0" +speedcopy = "^2.1" +qtpy="^2.4.3" +pyside6 = "^6.5.2" +pytest-ayon = { git = "https://github.com/ynput/pytest-ayon.git", branch = "chore/align-dependencies" } + [tool.ruff] # Exclude a variety of commonly ignored directories. diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index c66dda1630..71fcb928c0 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -76,6 +76,7 @@ def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: def mock_context( project: pytest_ayon.ProjectInfo, single_file: Path, + folder_path: Path, sequence_files: list[Path]) -> pyblish.api.Context: """Return a mock instance. @@ -104,6 +105,10 @@ def mock_context( instance = context.create_instance("mock_instance") instance.data["source"] = "test_source" instance.data["families"] = ["render"] + + parents = project.folder_entity["path"].lstrip("/").split("/") + hierarchy = "/".join(parents) if parents else "" + instance.data["anatomyData"] = { "project": { "name": project.project_name, @@ -121,6 +126,7 @@ def mock_context( "name": project.product.name, "type": "test" # pytest-ayon doesn't return the product type yet }, + "hierarchy": hierarchy, } instance.data["folderEntity"] = project.folder_entity From 7b0b5a46ecc5ea3c270d1eb308e02d11f924bfa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Apr 2025 12:23:56 +0200 Subject: [PATCH 251/626] :alembic: stop running tests requiring AYON server by default this is to ensure test will still run on GH. --- pyproject.toml | 8 ++++++++ .../ayon_core/plugins/publish/test_integrate_traits.py | 5 ++++- tools/manage.ps1 | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 16e7a53230..d940829a69 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -152,3 +152,11 @@ addopts = "-ra -q" testpaths = [ "client/ayon_core/tests" ] +markers = [ + "unit: Unit tests", + "integration: Integration tests", + "api: API tests", + "cli: CLI tests", + "slow: Slow tests", + "server: Tests that require a running AYON server", +] diff --git a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py index 71fcb928c0..abb605a121 100644 --- a/tests/client/ayon_core/plugins/publish/test_integrate_traits.py +++ b/tests/client/ayon_core/plugins/publish/test_integrate_traits.py @@ -76,7 +76,6 @@ def sequence_files(tmp_path_factory: pytest.TempPathFactory) -> list[Path]: def mock_context( project: pytest_ayon.ProjectInfo, single_file: Path, - folder_path: Path, sequence_files: list[Path]) -> pyblish.api.Context: """Return a mock instance. @@ -237,6 +236,7 @@ def mock_context( return context +@pytest.mark.server def test_get_template_name(mock_context: pyblish.api.Context) -> None: """Test get_template_name. @@ -355,6 +355,7 @@ def test_filter_lifecycle() -> None: assert filtered[0] == persistent_representation +@pytest.mark.server def test_prepare_product( project: pytest_ayon.ProjectInfo, mock_context: pyblish.api.Context) -> None: @@ -375,6 +376,7 @@ def test_prepare_product( } +@pytest.mark.server def test_prepare_version( project: pytest_ayon.ProjectInfo, mock_context: pyblish.api.Context) -> None: @@ -403,6 +405,7 @@ def test_prepare_version( } +@pytest.mark.server def test_get_transfers_from_representation( mock_context: pyblish.api.Context) -> None: """Test get_transfers_from_representation. diff --git a/tools/manage.ps1 b/tools/manage.ps1 index 8324277713..306a61e30d 100755 --- a/tools/manage.ps1 +++ b/tools/manage.ps1 @@ -242,7 +242,7 @@ function Run-From-Code { function Run-Tests { $Poetry = "$RepoRoot\.poetry\bin\poetry.exe" - $RunArgs = @( "run", "pytest", "$($RepoRoot)/tests") + $RunArgs = @( "run", "pytest", "$($RepoRoot)/tests", "-m", "not server") & $Poetry $RunArgs @arguments } From caf3eb58b8630c85a4d65cd049b773da0ba562ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Apr 2025 12:32:32 +0200 Subject: [PATCH 252/626] :alembic: add server marks to shell script too --- tools/manage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/manage.sh b/tools/manage.sh index 86ae7155c5..5362374045 100755 --- a/tools/manage.sh +++ b/tools/manage.sh @@ -186,7 +186,7 @@ run_command () { run_tests () { echo -e "${BIGreen}>>>${RST} Running tests..." shift; # will remove first arg ("run-tests") from the "$@" - "$POETRY_HOME/bin/poetry" run pytest ./tests + "$POETRY_HOME/bin/poetry" run pytest ./tests -m "not server" } main () { From 02827106cfe0bbbd9c2d23b07932cea3f0874512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 16 Apr 2025 12:32:58 +0200 Subject: [PATCH 253/626] :dog: remove `preview` flag this will be at the end added by another PR --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d940829a69..30cb5aab9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,7 +90,6 @@ indent-width = 4 target-version = "py39" [tool.ruff.lint] -preview = true pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. select = ["E", "F", "W"] From ce1375443f7728f9fd6b199b0912610a23dc95b2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 16 Apr 2025 14:45:47 +0200 Subject: [PATCH 254/626] set 'referer' header --- client/ayon_core/tools/launcher/models/actions.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index f80f2cc443..9e566f5958 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -489,7 +489,11 @@ class ActionsModel: "full_label": action_label, } ) - response = ayon_api.post(url, **context) + + conn = ayon_api.get_server_api_connection() + headers = conn.get_headers() + headers["referer"] = conn.get_base_url() + response = ayon_api.raw_post(url, headers=headers, json=context) response.raise_for_status() data = response.data if data["success"] is True: From 8d253033332e55b46ca0bcbeca59da50d078cdd7 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 16 Apr 2025 21:53:17 +0200 Subject: [PATCH 255/626] Revert defaults so removal of rendered files is disabled by default --- client/ayon_core/plugins/publish/collect_rendered_files.py | 2 +- server/settings/publish_plugins.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_rendered_files.py b/client/ayon_core/plugins/publish/collect_rendered_files.py index c69dddd6ec..5c68af888f 100644 --- a/client/ayon_core/plugins/publish/collect_rendered_files.py +++ b/client/ayon_core/plugins/publish/collect_rendered_files.py @@ -33,7 +33,7 @@ class CollectRenderedFiles(pyblish.api.ContextPlugin): label = "Collect rendered frames" settings_category = "core" - remove_files = True + remove_files = False _context = None diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index e6a146a9d8..5f5891e4f4 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -931,7 +931,7 @@ class IntegrateHeroVersionModel(BaseSettingsModel): class CollectRenderedFilesModel(BaseSettingsModel): remove_files: bool = SettingsField( - True, + False, title="Remove rendered files", description=( "Remove rendered files and metadata json on publish.\n\n" @@ -1447,7 +1447,7 @@ DEFAULT_PUBLISH_VALUES = { "enabled": True, }, "CollectRenderedFiles": { - "remove_files": True + "remove_files": False }, "CleanUp": { "paterns": [], # codespell:ignore paterns From 644765cb85b5c786a3a7a59af4a00a623587eb38 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 16 Apr 2025 22:03:02 +0200 Subject: [PATCH 256/626] Remove redundant duplicate lines of code --- client/ayon_core/pipeline/farm/pyblish_functions.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/client/ayon_core/pipeline/farm/pyblish_functions.py b/client/ayon_core/pipeline/farm/pyblish_functions.py index c6f3ae7115..e10bcc9bb1 100644 --- a/client/ayon_core/pipeline/farm/pyblish_functions.py +++ b/client/ayon_core/pipeline/farm/pyblish_functions.py @@ -660,14 +660,6 @@ def _get_legacy_product_name_and_group( warnings.warn("Using legacy product name for renders", DeprecationWarning) - if not source_product_name.startswith(product_type): - resulting_group_name = '{}{}{}{}{}'.format( - product_type, - task_name[0].upper(), task_name[1:], - source_product_name[0].upper(), source_product_name[1:]) - else: - resulting_group_name = source_product_name - # create product name `` if not source_product_name.startswith(product_type): resulting_group_name = '{}{}{}{}{}'.format( From ca12d13a40a8c3b03117c60a211828064e989bb2 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 17 Apr 2025 12:50:28 +0200 Subject: [PATCH 257/626] Improves thumbnail extraction reliability Enhances thumbnail extraction by retrying without seeking if the initial attempt fails. This addresses issues where the generated thumbnail file is either missing or empty. It also calculates the seek position more accurately and avoid seeking for very short videos. --- .../plugins/publish/extract_thumbnail.py | 65 +++++++++++++++---- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index b72862ea22..89bb9a90ab 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -486,25 +486,37 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # Set video input attributes max_int = str(2147483647) video_data = get_ffprobe_data(video_file_path, logger=self.log) - # Use duration of the individual streams since it is returned with - # higher decimal precision than 'format.duration'. We need this - # more precise value for calculating the correct amount of frames - # for higher FPS ranges or decimal ranges, e.g. 29.97 FPS - duration = max( - float(stream.get("duration", 0)) - for stream in video_data["streams"] - if stream.get("codec_type") == "video" - ) + # Get duration or use a safe default (single frame) + duration = 0 + for stream in video_data["streams"]: + if stream.get("codec_type") == "video": + stream_duration = float(stream.get("duration", 0)) + if stream_duration > duration: + duration = stream_duration + + # For very short videos, just use the first frame + # Calculate seek position safely + seek_position = 0 + if duration > 0.1: # Only use timestamp calculation for videos longer than 0.1 seconds + seek_position = duration * self.duration_split + + # Build command args cmd_args = [ "-y", - "-ss", str(duration * self.duration_split), "-i", video_file_path, "-analyzeduration", max_int, "-probesize", max_int, - "-frames:v", "1" ] + # Only add -ss if we're seeking to a specific position + if seek_position > 0: + cmd_args.insert(1, "-ss") + cmd_args.insert(2, str(seek_position)) + + # Ensure we extract exactly one frame + cmd_args.extend(["-frames:v", "1"]) + # add output file path cmd_args.append(output_thumb_file_path) @@ -517,9 +529,34 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # run subprocess self.log.debug("Executing: {}".format(" ".join(cmd))) run_subprocess(cmd, logger=self.log) - self.log.debug( - "Thumbnail created: {}".format(output_thumb_file_path)) - return output_thumb_file_path + + # Verify the output file was created + if os.path.exists(output_thumb_file_path) and os.path.getsize(output_thumb_file_path) > 0: + self.log.debug( + "Thumbnail created: {}".format(output_thumb_file_path)) + return output_thumb_file_path + else: + self.log.warning( + "Output file was not created or is empty: {}".format(output_thumb_file_path)) + + # Fallback to extracting the first frame without seeking + if "-ss" in cmd_args: + self.log.debug("Trying fallback without seeking") + # Remove -ss and its value + ss_index = cmd_args.index("-ss") + cmd_args.pop(ss_index) # Remove -ss + cmd_args.pop(ss_index) # Remove the timestamp value + + # Create new command and try again + cmd = get_ffmpeg_tool_args("ffmpeg", *cmd_args) + self.log.debug("Fallback command: {}".format(" ".join(cmd))) + run_subprocess(cmd, logger=self.log) + + if os.path.exists(output_thumb_file_path) and os.path.getsize(output_thumb_file_path) > 0: + self.log.debug("Fallback thumbnail created: {}".format(output_thumb_file_path)) + return output_thumb_file_path + + return None except RuntimeError as error: self.log.warning( "Failed intermediate thumb source using ffmpeg: {}".format( From bf44622c057fd6d45c8a270ae24ee0f71eb89abc Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 17 Apr 2025 12:55:02 +0200 Subject: [PATCH 258/626] Improves thumbnail extraction reliability Ensures thumbnail extraction falls back to the first frame if the initial attempt fails, handling potential issues with seek position calculation or output file creation. This enhances the robustness of the thumbnail creation process. --- .../plugins/publish/extract_thumbnail.py | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 89bb9a90ab..e5108444f7 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -498,7 +498,8 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # For very short videos, just use the first frame # Calculate seek position safely seek_position = 0 - if duration > 0.1: # Only use timestamp calculation for videos longer than 0.1 seconds + # Only use timestamp calculation for videos longer than 0.1 seconds + if duration > 0.1: seek_position = duration * self.duration_split # Build command args @@ -531,13 +532,17 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): run_subprocess(cmd, logger=self.log) # Verify the output file was created - if os.path.exists(output_thumb_file_path) and os.path.getsize(output_thumb_file_path) > 0: + if ( + os.path.exists(output_thumb_file_path) + and os.path.getsize(output_thumb_file_path) > 0 + ): self.log.debug( "Thumbnail created: {}".format(output_thumb_file_path)) return output_thumb_file_path else: self.log.warning( - "Output file was not created or is empty: {}".format(output_thumb_file_path)) + "Output file was not created or is empty: {}".format( + output_thumb_file_path)) # Fallback to extracting the first frame without seeking if "-ss" in cmd_args: @@ -549,11 +554,18 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # Create new command and try again cmd = get_ffmpeg_tool_args("ffmpeg", *cmd_args) - self.log.debug("Fallback command: {}".format(" ".join(cmd))) + self.log.debug("Fallback command: {}".format( + " ".join(cmd))) run_subprocess(cmd, logger=self.log) - if os.path.exists(output_thumb_file_path) and os.path.getsize(output_thumb_file_path) > 0: - self.log.debug("Fallback thumbnail created: {}".format(output_thumb_file_path)) + if ( + os.path.exists(output_thumb_file_path) + and os.path.getsize(output_thumb_file_path) > 0 + ): + self.log.debug( + "Fallback thumbnail created: {}".format( + output_thumb_file_path) + ) return output_thumb_file_path return None From ba80b3b9b459d74d5aface7b39509316cd6d808b Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 17 Apr 2025 17:31:08 +0200 Subject: [PATCH 259/626] Added flags for ffmpeg not skipping some frames because DTS --- client/ayon_core/plugins/publish/extract_review.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index e8ed4c80fc..3615cc53c9 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -829,7 +829,9 @@ class ExtractReview(pyblish.api.InstancePlugin): ffmpeg_input_args.extend([ "-f", "concat", "-safe", "0", - "-i", path_to_subprocess_arg(explicit_frames_path) + "-fflags", "+genpts+igndts", + "-i", path_to_subprocess_arg(explicit_frames_path), + "-r", "25" ]) # Add audio arguments if there are any. Skipped when output are images. From 867dae4c6af3fd4e64a6727b22e6a0991311b2b2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 12:12:24 +0200 Subject: [PATCH 260/626] pass action label to trigger action --- client/ayon_core/tools/launcher/abstract.py | 2 + client/ayon_core/tools/launcher/control.py | 2 + .../tools/launcher/models/actions.py | 6 +-- .../tools/launcher/ui/actions_widget.py | 52 ++++++++++--------- 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index dd65c95167..c62faa28db 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -297,6 +297,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): @abstractmethod def trigger_action( self, + action_label, action_type, action_id, project_name, @@ -308,6 +309,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): """Trigger action on given context. Args: + action_label (str): Action label. action_type (Literal["webaction", "local"]): Action type. action_id (str): Action identifier. project_name (Union[str, None]): Project name. diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index 445b17ac38..cdd8806421 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -137,6 +137,7 @@ class BaseLauncherController( def trigger_action( self, + action_label, action_type, identifier, project_name, @@ -146,6 +147,7 @@ class BaseLauncherController( addon_version, ): self._actions_model.trigger_action( + action_label, action_type, identifier, project_name, diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 9e566f5958..e36143f9df 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -232,6 +232,7 @@ class ActionsModel: def trigger_action( self, + action_label, acton_type, identifier, project_name, @@ -242,6 +243,7 @@ class ActionsModel: ): if acton_type == "webaction": self._trigger_webaction( + action_label, identifier, project_name, folder_id, @@ -447,6 +449,7 @@ class ActionsModel: def _trigger_webaction( self, + action_label, identifier, project_name, folder_id, @@ -476,9 +479,6 @@ class ActionsModel: "entityIds": entity_ids, } - # TODO pass label in as argument? - action_label = "Webaction" - failed = False error_message = None try: diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 99fd249918..69b5f76c29 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -438,23 +438,36 @@ class ActionsWidget(QtWidgets.QWidget): project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() + if is_group: + action_item = self._show_menu_on_group(action_id) + if action_item is None: + return - if not is_group: + action_id = action_item.identifier + action_label = action_item.full_label + action_type = action_item.action_type + addon_name = action_item.addon_name + addon_version = action_item.addon_version + else: + action_label = index.data(QtCore.Qt.DisplayRole) action_type = index.data(ACTION_TYPE_ROLE) addon_name = index.data(ACTION_ADDON_NAME_ROLE) addon_version = index.data(ACTION_ADDON_VERSION_ROLE) - self._controller.trigger_action( - action_type, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ) - self._start_animation(index) - return + self._controller.trigger_action( + action_label, + action_type, + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version, + ) + self._start_animation(index) + self._start_animation(index) + + def _show_menu_on_group(self, action_id): action_items = self._model.get_group_items(action_id) menu = QtWidgets.QMenu(self) @@ -467,20 +480,9 @@ class ActionsWidget(QtWidgets.QWidget): result = menu.exec_(QtGui.QCursor.pos()) if not result: - return + return None - action_item = actions_mapping[result] - - self._controller.trigger_action( - action_item.action_type, - action_item.identifier, - project_name, - folder_id, - task_id, - action_item.addon_name, - action_item.addon_version, - ) - self._start_animation(index) + return actions_mapping[result] def _on_context_menu(self, point): """Creates menu to force skip opening last workfile.""" From a39462497423327691675d0735ef9ac3ecd6e5f5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:28:51 +0200 Subject: [PATCH 261/626] don't skip other validations for string match --- client/ayon_core/tools/utils/projects_widget.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/tools/utils/projects_widget.py b/client/ayon_core/tools/utils/projects_widget.py index 88d8a6c9f5..b88b2f410a 100644 --- a/client/ayon_core/tools/utils/projects_widget.py +++ b/client/ayon_core/tools/utils/projects_widget.py @@ -351,13 +351,14 @@ class ProjectSortFilterProxy(QtCore.QSortFilterProxyModel): return True string_pattern = self.filterRegularExpression().pattern() - if string_pattern: - return string_pattern.lower() in project_name.lower() + if ( + string_pattern + and string_pattern.lower() not in project_name.lower() + ): + return False # Current project keep always visible - default = super(ProjectSortFilterProxy, self).filterAcceptsRow( - source_row, source_parent - ) + default = super().filterAcceptsRow(source_row, source_parent) if not default: return default From 922d19137c0e7df497fc7be53fcf7472da8fd7b5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:19:48 +0200 Subject: [PATCH 262/626] change order of filters --- client/ayon_core/tools/utils/projects_widget.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/tools/utils/projects_widget.py b/client/ayon_core/tools/utils/projects_widget.py index b88b2f410a..c340be2f83 100644 --- a/client/ayon_core/tools/utils/projects_widget.py +++ b/client/ayon_core/tools/utils/projects_widget.py @@ -350,6 +350,14 @@ class ProjectSortFilterProxy(QtCore.QSortFilterProxyModel): if project_name is None: return True + # Make sure current project is visible + if index.data(PROJECT_IS_CURRENT_ROLE): + return True + + default = super().filterAcceptsRow(source_row, source_parent) + if not default: + return default + string_pattern = self.filterRegularExpression().pattern() if ( string_pattern @@ -357,15 +365,6 @@ class ProjectSortFilterProxy(QtCore.QSortFilterProxyModel): ): return False - # Current project keep always visible - default = super().filterAcceptsRow(source_row, source_parent) - if not default: - return default - - # Make sure current project is visible - if index.data(PROJECT_IS_CURRENT_ROLE): - return True - if ( self._filter_inactive and not index.data(PROJECT_IS_ACTIVE_ROLE) From f67002961a0c8093dcfdef0169df1a30b596d132 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:26:46 +0200 Subject: [PATCH 263/626] added option to run detached process --- client/ayon_core/lib/__init__.py | 2 + client/ayon_core/lib/execute.py | 87 +++++++++++++++++++++++--------- 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/client/ayon_core/lib/__init__.py b/client/ayon_core/lib/__init__.py index ad906774d3..fff221b8a7 100644 --- a/client/ayon_core/lib/__init__.py +++ b/client/ayon_core/lib/__init__.py @@ -62,6 +62,7 @@ from .execute import ( run_subprocess, run_detached_process, run_ayon_launcher_process, + run_detached_ayon_launcher_process, path_to_subprocess_arg, CREATE_NO_WINDOW ) @@ -162,6 +163,7 @@ __all__ = [ "run_subprocess", "run_detached_process", "run_ayon_launcher_process", + "run_detached_ayon_launcher_process", "path_to_subprocess_arg", "CREATE_NO_WINDOW", diff --git a/client/ayon_core/lib/execute.py b/client/ayon_core/lib/execute.py index 516ea958f5..d632c63049 100644 --- a/client/ayon_core/lib/execute.py +++ b/client/ayon_core/lib/execute.py @@ -201,29 +201,7 @@ def clean_envs_for_ayon_process(env=None): return env -def run_ayon_launcher_process(*args, add_sys_paths=False, **kwargs): - """Execute AYON process with passed arguments and wait. - - Wrapper for 'run_process' which prepends AYON executable arguments - before passed arguments and define environments if are not passed. - - Values from 'os.environ' are used for environments if are not passed. - They are cleaned using 'clean_envs_for_ayon_process' function. - - Example: - ``` - run_ayon_process("run", "") - ``` - - Args: - *args (str): ayon-launcher cli arguments. - **kwargs (Any): Keyword arguments for subprocess.Popen. - - Returns: - str: Full output of subprocess concatenated stdout and stderr. - - """ - args = get_ayon_launcher_args(*args) +def _prepare_ayon_launcher_env(add_sys_paths: bool, kwargs): env = kwargs.pop("env", None) # Keep env untouched if are passed and not empty if not env: @@ -239,8 +217,7 @@ def run_ayon_launcher_process(*args, add_sys_paths=False, **kwargs): new_pythonpath.append(path) lookup_set.add(path) env["PYTHONPATH"] = os.pathsep.join(new_pythonpath) - - return run_subprocess(args, env=env, **kwargs) + return env def run_detached_process(args, **kwargs): @@ -314,6 +291,66 @@ def run_detached_process(args, **kwargs): return process +def run_ayon_launcher_process( + *args, add_sys_paths=False, **kwargs +): + """Execute AYON process with passed arguments and wait. + + Wrapper for 'run_process' which prepends AYON executable arguments + before passed arguments and define environments if are not passed. + + Values from 'os.environ' are used for environments if are not passed. + They are cleaned using 'clean_envs_for_ayon_process' function. + + Example: + ``` + run_ayon_process("run", "") + ``` + + Args: + *args (str): ayon-launcher cli arguments. + add_sys_paths (bool): Add system paths to PYTHONPATH. + **kwargs (Any): Keyword arguments for subprocess.Popen. + + Returns: + str: Full output of subprocess concatenated stdout and stderr. + + """ + args = get_ayon_launcher_args(*args) + env = _prepare_ayon_launcher_env(add_sys_paths, kwargs) + return run_subprocess(args, env=env, **kwargs) + + +def run_detached_ayon_launcher_process( + *args, add_sys_paths=False, **kwargs +): + """Execute AYON process with passed arguments and wait. + + Wrapper for 'run_process' which prepends AYON executable arguments + before passed arguments and define environments if are not passed. + + Values from 'os.environ' are used for environments if are not passed. + They are cleaned using 'clean_envs_for_ayon_process' function. + + Example: + ``` + run_ayon_process("run", "") + ``` + + Args: + *args (str): ayon-launcher cli arguments. + add_sys_paths (bool): Add system paths to PYTHONPATH. + **kwargs (Any): Keyword arguments for subprocess.Popen. + + Returns: + str: Full output of subprocess concatenated stdout and stderr. + + """ + args = get_ayon_launcher_args(*args) + env = _prepare_ayon_launcher_env(add_sys_paths, kwargs) + return run_detached_process(args, env=env, **kwargs) + + def path_to_subprocess_arg(path): """Prepare path for subprocess arguments. From d84f33b174772deaf132eca757ee14f2357c969f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:28:58 +0200 Subject: [PATCH 264/626] use run detached ayon launcher process to run webactions --- .../ayon_core/tools/launcher/models/actions.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index e36143f9df..7e7efd8ed9 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,7 +1,5 @@ import os import copy -import platform -import subprocess from urllib.parse import urlencode import ayon_api @@ -12,6 +10,7 @@ from ayon_core.lib import ( NestedCacheItem, CacheItem, get_settings_variant, + run_detached_ayon_launcher_process, ) from ayon_core.addon import AddonsManager from ayon_core.pipeline.actions import ( @@ -524,16 +523,11 @@ class ActionsModel: return if response_type == "launcher": - uri = data["uri"] - # There might be a better way to do this? - # Not sure if all linux distributions have 'xdg-open' available - platform_name = platform.system().lower() - if platform_name == "windows": - os.startfile(uri) - elif platform_name == "darwin": - subprocess.run(["open", uri]) - else: - subprocess.run(["xdg-open", uri]) + # Run AYON launcher process with uri in arguments + # NOTE This does pass environment variables of current process + # to the subprocess. + # NOTE We could 'take action' directly and use the arguments here + run_detached_ayon_launcher_process(data["uri"]) return raise Exception( From 9e21c4d01fee1cd2b40245b0290733a9a7b9f33c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:59:28 +0200 Subject: [PATCH 265/626] handle missing 'color' --- client/ayon_core/tools/launcher/ui/actions_widget.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 69b5f76c29..d5d4a69cc5 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -142,7 +142,13 @@ class ActionsQtModel(QtGui.QStandardItemModel): icon_def = action_item.icon if not icon_def: icon_def = {"type": "transparent", "size": 256} - icon = get_qt_icon(icon_def) + icon_def = transparent_icon.copy() + elif icon_def.get("type") == "material-symbols": + if "name" not in icon_def: + icon_def = transparent_icon.copy() + elif not icon_def.get("color"): + icon_def["color"] = "#f5f5f5" + if is_group: label = action_item.label else: From 31803b0104fbb868d1cc31902f09bc35a99129ec Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:59:44 +0200 Subject: [PATCH 266/626] don't fail whole UI if icon cannot be parsed --- .../ayon_core/tools/launcher/ui/actions_widget.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index d5d4a69cc5..fe946c6079 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -5,6 +5,7 @@ import collections from qtpy import QtWidgets, QtCore, QtGui from ayon_core import style +from ayon_core.lib import Logger from ayon_core.lib.attribute_definitions import ( UILabelDef, EnumDef, @@ -56,7 +57,8 @@ class ActionsQtModel(QtGui.QStandardItemModel): refreshed = QtCore.Signal() def __init__(self, controller): - super(ActionsQtModel, self).__init__() + self._log = Logger.get_logger(self.__class__.__name__) + super().__init__() controller.register_event_callback( "selection.project.changed", @@ -134,6 +136,7 @@ class ActionsQtModel(QtGui.QStandardItemModel): all_action_items_info.append((first_item, len(action_items) > 1)) groups_by_id[first_item.identifier] = action_items + transparent_icon = {"type": "transparent", "size": 256} new_items = [] items_by_id = {} action_items_by_id = {} @@ -141,7 +144,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): action_item, is_group = action_item_info icon_def = action_item.icon if not icon_def: - icon_def = {"type": "transparent", "size": 256} icon_def = transparent_icon.copy() elif icon_def.get("type") == "material-symbols": if "name" not in icon_def: @@ -149,6 +151,15 @@ class ActionsQtModel(QtGui.QStandardItemModel): elif not icon_def.get("color"): icon_def["color"] = "#f5f5f5" + try: + icon = get_qt_icon(icon_def) + except Exception: + self._log.warning( + "Failed to parse icon definition", exc_info=True + ) + # Use empty icon if failed to parse definition + icon = get_qt_icon(transparent_icon.copy()) + if is_group: label = action_item.label else: From f2390a7c0602818ecb2c83813382125cc6ca2f07 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:00:08 +0200 Subject: [PATCH 267/626] use correct color value --- client/ayon_core/tools/launcher/ui/actions_widget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index fe946c6079..549f54fc52 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -149,7 +149,7 @@ class ActionsQtModel(QtGui.QStandardItemModel): if "name" not in icon_def: icon_def = transparent_icon.copy() elif not icon_def.get("color"): - icon_def["color"] = "#f5f5f5" + icon_def["color"] = "#f4f5f5" try: icon = get_qt_icon(icon_def) From 6440974d5d511b4acafbe4a4541725f9a9784054 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:05:26 +0200 Subject: [PATCH 268/626] raise error when running server action --- client/ayon_core/tools/launcher/models/actions.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 7e7efd8ed9..70ba69d960 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -518,9 +518,10 @@ class ActionsModel: def _handle_webaction_response(self, data): response_type = data["type"] - # Nothing to do if response_type == "server": - return + raise Exception( + "Please use AYON web UI to run the action." + ) if response_type == "launcher": # Run AYON launcher process with uri in arguments From 4b385c141f59e034ce7e640de6367ad736fed2c9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:11:31 +0200 Subject: [PATCH 269/626] change place where missing key is handled --- .../tools/launcher/ui/actions_widget.py | 5 ----- client/ayon_core/tools/utils/constants.py | 1 + client/ayon_core/tools/utils/lib.py | 21 ++++++++++++++----- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 549f54fc52..396859f3bf 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -145,11 +145,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): icon_def = action_item.icon if not icon_def: icon_def = transparent_icon.copy() - elif icon_def.get("type") == "material-symbols": - if "name" not in icon_def: - icon_def = transparent_icon.copy() - elif not icon_def.get("color"): - icon_def["color"] = "#f4f5f5" try: icon = get_qt_icon(icon_def) diff --git a/client/ayon_core/tools/utils/constants.py b/client/ayon_core/tools/utils/constants.py index 0c92e3ccc8..b590d1d778 100644 --- a/client/ayon_core/tools/utils/constants.py +++ b/client/ayon_core/tools/utils/constants.py @@ -14,3 +14,4 @@ except AttributeError: DEFAULT_PROJECT_LABEL = "< Default >" PROJECT_NAME_ROLE = QtCore.Qt.UserRole + 101 PROJECT_IS_ACTIVE_ROLE = QtCore.Qt.UserRole + 102 +DEFAULT_WEB_ICON_COLOR = "#f4f5f5" diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 4814e625df..4a1325dc91 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -19,7 +19,12 @@ from ayon_core.style import ( from ayon_core.resources import get_image_path from ayon_core.lib import Logger -from .constants import CHECKED_INT, UNCHECKED_INT, PARTIALLY_CHECKED_INT +from .constants import ( + CHECKED_INT, + UNCHECKED_INT, + PARTIALLY_CHECKED_INT, + DEFAULT_WEB_ICON_COLOR, +) log = Logger.get_logger(__name__) @@ -482,8 +487,14 @@ class _IconsCache: if icon_type == "path": parts = [icon_type, icon_def["path"]] - elif icon_type in {"awesome-font", "material-symbols"}: - color = icon_def["color"] or "" + elif icon_type == "awesome-font": + color = icon_def.get("color") or "" + if isinstance(color, QtGui.QColor): + color = color.name() + parts = [icon_type, icon_def["name"] or "", color] + + elif icon_type == "material-symbols": + color = icon_def.get("color") or DEFAULT_WEB_ICON_COLOR if isinstance(color, QtGui.QColor): color = color.name() parts = [icon_type, icon_def["name"] or "", color] @@ -517,7 +528,7 @@ class _IconsCache: elif icon_type == "awesome-font": icon_name = icon_def["name"] - icon_color = icon_def["color"] + icon_color = icon_def.get("color") icon = cls.get_qta_icon_by_name_and_color(icon_name, icon_color) if icon is None: icon = cls.get_qta_icon_by_name_and_color( @@ -525,7 +536,7 @@ class _IconsCache: elif icon_type == "material-symbols": icon_name = icon_def["name"] - icon_color = icon_def["color"] + icon_color = icon_def.get("color") or DEFAULT_WEB_ICON_COLOR if qtmaterialsymbols.get_icon_name_char(icon_name) is not None: icon = qtmaterialsymbols.get_icon(icon_name, icon_color) From 33df9ec9f57e92a299a5f88f5a9c754bc97eebda Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:19:54 +0200 Subject: [PATCH 270/626] fox example --- client/ayon_core/lib/execute.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/lib/execute.py b/client/ayon_core/lib/execute.py index d632c63049..27af3d44ca 100644 --- a/client/ayon_core/lib/execute.py +++ b/client/ayon_core/lib/execute.py @@ -304,7 +304,7 @@ def run_ayon_launcher_process( Example: ``` - run_ayon_process("run", "") + run_ayon_launcher_process("run", "") ``` Args: @@ -334,7 +334,7 @@ def run_detached_ayon_launcher_process( Example: ``` - run_ayon_process("run", "") + run_detached_ayon_launcher_process("run", "") ``` Args: From 71dc3650ace89b6ee77583ad43dd05690be32fa9 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 23 Apr 2025 10:25:51 +0200 Subject: [PATCH 271/626] Adds explicit resolution override to publisher Adds a plugin that allows users to explicitly override the resolution settings (width, height, pixel aspect) of instances during the publishing process. This provides a way to ensure consistency and accuracy in resolution values across different tasks and product types. The plugin is configurable through the AYON settings, allowing administrators to define the available resolution options and the product types for which the override is enabled. --- .../publish/collect_explicit_resolution.py | 104 ++++++++++++++++++ server/settings/publish_plugins.py | 92 +++++++++++++++- 2 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 client/ayon_core/plugins/publish/collect_explicit_resolution.py diff --git a/client/ayon_core/plugins/publish/collect_explicit_resolution.py b/client/ayon_core/plugins/publish/collect_explicit_resolution.py new file mode 100644 index 0000000000..3ff08cbd34 --- /dev/null +++ b/client/ayon_core/plugins/publish/collect_explicit_resolution.py @@ -0,0 +1,104 @@ +import pyblish.api +from ayon_core.lib import EnumDef +from ayon_core.pipeline import colorspace +from ayon_core.pipeline import publish +from ayon_core.pipeline.publish import PublishError + + +class CollectExplicitResolution( + pyblish.api.InstancePlugin, + publish.AYONPyblishPluginMixin +): + """Collect explicit user defined resolution attributes for instances""" + + label = "Choose Explicit Resolution" + order = pyblish.api.CollectorOrder + 0.49 + settings_category = "core" + + enabled = False + + default_resolution_item = (None, "Don't override") + # Settings + product_types = [] + options = [] + + # caching resoluton items + resolution_items = None + + def process(self, instance): + """Process the instance and collect explicit resolution attributes""" + + # Get the values from the instance data + values = self.get_attr_values_from_data(instance.data) + resolution_value = values.get("explicit_resolution", None) + if resolution_value is None: + return + + # Get the width, height and pixel_aspect from the resolution value + resolution_data = self._get_resolution_values(resolution_value) + + # Set the values to the instance data + instance.data.update(resolution_data) + + def _get_resolution_values(self, resolution_value): + """ + Returns width, height and pixel_aspect from the resolution value + + Arguments: + resolution_value (str): resolution value + + Returns: + dict: dictionary with width, height and pixel_aspect + """ + resolution_items = self._get_resolution_items() + item_values = None + # check if resolution_value is in cached items + if resolution_value in resolution_items: + item_values = resolution_items[resolution_value] + + if item_values: + # if the item is in the cache, get the values from it + return { + "resolutionWidth": item_values["width"], + "resolutionHeight": item_values["height"], + "pixelAspect": item_values["pixel_aspect"] + } + else: + raise PublishError( + f"Invalid resolution value: {resolution_value}") + + @classmethod + def _get_resolution_items(cls): + if cls.resolution_items is None: + resolution_items = {} + for item in cls.options: + item_text = f"{item['width']}x{item['height']}x{item['pixel_aspect']}" + resolution_items[item_text] = item + + cls.resolution_items = resolution_items + + return cls.resolution_items + + @classmethod + def get_attr_defs_for_instance( + cls, create_context, instance + ): + if instance.product_type not in cls.product_types: + return [] + + # Get the resolution items + resolution_items = cls._get_resolution_items() + + items = [cls.default_resolution_item] + # Add all cached resolution items to the dropdown options + for item_text in resolution_items: + items.append((item_text, item_text)) + + return [ + EnumDef( + "explicit_resolution", + items, + default="Don't override", + label="Override Resolution" + ) + ] diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 5f5891e4f4..7ad6c9c506 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -1,4 +1,6 @@ +from collections.abc import Iterable from pydantic import validator +from typing import Any from ayon_server.settings import ( BaseSettingsModel, @@ -8,7 +10,7 @@ from ayon_server.settings import ( ensure_unique_names, task_types_enum, ) - +from ayon_server.exceptions import BadRequestException from ayon_server.types import ColorRGBA_uint8 @@ -157,6 +159,77 @@ class CollectUSDLayerContributionsModel(BaseSettingsModel): return value +class ResolutionOptionsModel(BaseSettingsModel): + _layout = "compact" + width: int = SettingsField( + 1920, + ge=0, + le=100000, + title="Width", + description=( + "Width resolution number value"), + placeholder="Width" + ) + height: int = SettingsField( + 1080, + title="Height", + ge=0, + le=100000, + description=( + "Height resolution number value"), + placeholder="Height" + ) + pixel_aspect: float = SettingsField( + 1.0, + title="Pixel aspect", + ge=0.0, + le=100000.0, + description=( + "Pixel Aspect resolution decimal number value"), + placeholder="Pixel aspect" + ) + + +def ensure_unique_resolution_option( + objects: Iterable[Any], field_name: str | None = None) -> None: # noqa: C901 + """Ensure a list of objects have unique option attributes. + + This function checks if the list of objects has unique 'width', + 'height' and 'pixel_aspect' properties. + """ + options = [] + for obj in objects: + item_test_text = f"{obj.width}x{obj.height}x{obj.pixel_aspect}" + if item_test_text not in options: + options.append(item_test_text) + else: + raise BadRequestException( + f"Duplicate option '{item_test_text}'") + + +class CollectExplicitResolutionModel(BaseSettingsModel): + enabled: bool = SettingsField(True, title="Enabled") + product_types: list[str] = SettingsField( + default_factory=list, + title="Product types", + description=( + "Only activate the attribute for following product types." + ) + ) + options: list[ResolutionOptionsModel] = SettingsField( + default_factory=list, + title="Resolution options", + description=( + "Options to be provided in publisher attribute" + ) + ) + + @validator("options") + def validate_unique_options(cls, value): + ensure_unique_resolution_option(value) + return value + + class AyonEntityURIModel(BaseSettingsModel): use_ayon_entity_uri: bool = SettingsField( title="Use AYON Entity URI", @@ -988,6 +1061,10 @@ class PublishPuginsModel(BaseSettingsModel): title="Collect USD Layer Contributions", ) ) + CollectExplicitResolution: CollectExplicitResolutionModel = SettingsField( + default_factory=CollectExplicitResolutionModel, + title="Collect Explicit Resolution" + ) ValidateEditorialAssetName: ValidateBaseModel = SettingsField( default_factory=ValidateBaseModel, title="Validate Editorial Asset Name" @@ -1162,6 +1239,19 @@ DEFAULT_PUBLISH_VALUES = { }, ] }, + "CollectExplicitResolution": { + "enabled": True, + "product_types": [ + "shot" + ], + "options": [ + { + "width": 2048, + "height": 1080, + "aspect_ratio": 1.5, + } + ] + }, "ValidateEditorialAssetName": { "enabled": True, "optional": False, From 4141ce30b403e40dddda5eb288c3a79ef3c4f45d Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 23 Apr 2025 10:39:14 +0200 Subject: [PATCH 272/626] add compatible harmony addon version to package.py --- package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.py b/package.py index a4ffe1a20d..0358c2f4cd 100644 --- a/package.py +++ b/package.py @@ -9,4 +9,6 @@ plugin_for = ["ayon_server"] ayon_server_version = ">=1.0.3,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} -ayon_compatible_addons = {} +ayon_compatible_addons = { + "harmony": ">0.4.0", +} From 71d37d8b59ee3be0b5dcb784b4b478d40c5d2288 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:04:41 +0200 Subject: [PATCH 273/626] Updated command creation Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_review.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 3615cc53c9..a4eb1140ac 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1079,9 +1079,8 @@ class ExtractReview(pyblish.api.InstancePlugin): """Fills missing files by blank frame.""" blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") temp_data["paths_to_remove"].append(blank_frame_path) - command = get_ffmpeg_tool_args("ffmpeg") - - command.extend([ + command = get_ffmpeg_tool_args( + "ffmpeg", "-f", "lavfi", "-i", "color=c=black:s={}x{}:d=1".format( resolution_width, resolution_height @@ -1089,7 +1088,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "-tune", "stillimage", "-frames:v", "1", blank_frame_path - ]) + ) self.log.debug("Executing: {}".format(" ".join(command))) output = run_subprocess( From c53de6d226ff48b8c30baaf4889563eb373e058f Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:05:08 +0200 Subject: [PATCH 274/626] Formatting change Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- server/settings/publish_plugins.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index d487649f65..dbbbb9609d 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -20,6 +20,7 @@ def _handle_missing_frames_enum(): {"value": "only_rendered", "label": "Use only rendered"}, ] + class EnabledModel(BaseSettingsModel): enabled: bool = SettingsField(True) From 46d27ff7a4942fee39edf42ccab72cc05226fe40 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:05:24 +0200 Subject: [PATCH 275/626] Formatting change Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- server/settings/publish_plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index dbbbb9609d..cbe3894975 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -651,7 +651,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel): default_factory=ExtractReviewLetterBox, title="Letter Box" ) - fill_missing_frames:str = SettingsField( + fill_missing_frames: str = SettingsField( title="Handle missing frames", default="closest_existing", description="How to handle frames that are missing from entity frame " From 6d008edbada3d1ac3776b1ae51dc044c6454cb25 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:05:56 +0200 Subject: [PATCH 276/626] Refactor first file query Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index a4eb1140ac..265bbb0828 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1205,7 +1205,7 @@ class ExtractReview(pyblish.api.InstancePlugin): filled_files = temp_data["filled_files"] if filled_files: - first_frame, first_file = list(filled_files.items())[0] + first_frame, first_file = next(iter(filled_files.items())) if first_file < full_input_path_single_file: self.log.warning(f"Using filled frame: '{first_file}'") full_input_path_single_file = first_file From cc1ba078ed9f65608eb2a3035597bcf25c668d51 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:07:33 +0200 Subject: [PATCH 277/626] Changed variable name Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 265bbb0828..48bb2819ff 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -819,8 +819,8 @@ class ExtractReview(pyblish.api.InstancePlugin): staging_dir, "explicit_frames.txt") with open(explicit_frames_path, "w") as fp: lines = [ - f"file {file}" - for file in temp_data["explicit_input_paths"] + f"file {path}" + for path in temp_data["explicit_input_paths"] ] fp.write("\n".join(lines)) temp_data["paths_to_remove"].append(explicit_frames_path) From 24ec921ff6abce87a11f34a1162c11c310fbb634 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:08:18 +0200 Subject: [PATCH 278/626] Formatting change Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 48bb2819ff..cec6dd742c 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -829,7 +829,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ffmpeg_input_args.extend([ "-f", "concat", "-safe", "0", - "-fflags", "+genpts+igndts", + "-fflags", "+genpts+igndts", "-i", path_to_subprocess_arg(explicit_frames_path), "-r", "25" ]) From ed2d0baaf27d25053c7b755e8587815346f9ea63 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:12:43 +0200 Subject: [PATCH 279/626] Renamed key --- client/ayon_core/plugins/publish/extract_review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index cec6dd742c..b8c75ff60a 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -433,7 +433,7 @@ class ExtractReview(pyblish.api.InstancePlugin): end_frame=temp_data["frame_end"], resolution_width=temp_data["resolution_width"], resolution_height=temp_data["resolution_height"], - extension=temp_data["ext"], + extension=temp_data["input_ext"], temp_data=temp_data ) elif fill_missing_frames == "previous_version": @@ -665,7 +665,7 @@ class ExtractReview(pyblish.api.InstancePlugin): "with_audio": with_audio, "without_handles": without_handles, "handles_are_set": handles_are_set, - "ext": ext, + "input_ext": ext, "explicit_input_paths": [], # absolute paths to rendered files "paths_to_remove": [] } From 1836daad6251065e684b2bb4c7908475fecd2851 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:14:04 +0200 Subject: [PATCH 280/626] Refactor condition --- client/ayon_core/plugins/publish/extract_review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index b8c75ff60a..252b3c7b6f 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -624,6 +624,8 @@ class ExtractReview(pyblish.api.InstancePlugin): input_is_sequence = self.input_is_sequence(repre) input_allow_bg = False first_sequence_frame = None + + ext = os.path.splitext(repre["files"])[1].replace(".", "") if input_is_sequence and repre["files"]: # Calculate first frame that should be used cols, _ = clique.assemble(repre["files"]) @@ -642,8 +644,6 @@ class ExtractReview(pyblish.api.InstancePlugin): ext = os.path.splitext(repre["files"][0])[1].replace(".", "") if ext.lower() in self.alpha_exts: input_allow_bg = True - else: - ext = os.path.splitext(repre["files"])[1].replace(".", "") return { "fps": float(instance.data["fps"]), From 3e042f4bcd1003793c1498822f88d37ca64538e2 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:17:19 +0200 Subject: [PATCH 281/626] Fixed return type --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 252b3c7b6f..9b2a139515 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1114,7 +1114,7 @@ class ExtractReview(pyblish.api.InstancePlugin): staging_dir: str, start_frame: int, end_frame: int - ) -> list: + ) -> Dict[int, str]: """Fill missing files in sequence by duplicating existing ones. This will take nearest frame file and copy it with so as to fill From 23bd9706d6b83d2b8b81d54d49d0111bf4579cda Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:20:45 +0200 Subject: [PATCH 282/626] Replaced Union with Optional --- client/ayon_core/plugins/publish/extract_review.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 9b2a139515..2577714675 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -5,7 +5,7 @@ import json import shutil import subprocess from abc import ABC, abstractmethod -from typing import Dict, Any, Union +from typing import Dict, Any, Optional import clique import speedcopy @@ -980,7 +980,7 @@ class ExtractReview(pyblish.api.InstancePlugin): current_repre: Dict[Any, Any], start_frame: int, end_frame: int - ) -> Union[Dict[int, str], None]: + ) -> Optional[Dict[int, str]]: """Tries to replace missing frames from ones from last version""" repre_file_paths = self._get_last_version_files( instance, current_repre) @@ -1075,7 +1075,7 @@ class ExtractReview(pyblish.api.InstancePlugin): resolution_height: int, extension: str, temp_data: Dict[str, Any] - ) -> Union[Dict[int, str], None]: + ) -> Optional[Dict[int, str]]: """Fills missing files by blank frame.""" blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") temp_data["paths_to_remove"].append(blank_frame_path) From f73c6eccefe73ba61757231b5627cb6524959a8d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:29:17 +0200 Subject: [PATCH 283/626] Simplified argument --- client/ayon_core/plugins/publish/extract_review.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 2577714675..699bf42876 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -441,7 +441,7 @@ class ExtractReview(pyblish.api.InstancePlugin): collection=collection, staging_dir=new_repre["stagingDir"], instance=instance, - current_repre=repre, + current_repre_name=repre["name"], start_frame=temp_data["frame_start"], end_frame=temp_data["frame_end"], ) @@ -977,13 +977,13 @@ class ExtractReview(pyblish.api.InstancePlugin): collection: str, staging_dir: str, instance: pyblish.plugin.Instance, - current_repre: Dict[Any, Any], + current_repre_name: str, start_frame: int, end_frame: int ) -> Optional[Dict[int, str]]: """Tries to replace missing frames from ones from last version""" repre_file_paths = self._get_last_version_files( - instance, current_repre) + instance, current_repre_name) if repre_file_paths is None: # issues in getting last version files, falling back return None @@ -1031,7 +1031,7 @@ class ExtractReview(pyblish.api.InstancePlugin): def _get_last_version_files( self, instance: pyblish.plugin.Instance, - current_repre: Dict[Any, Any], + current_repre_name: str, ): product_name = instance.data["productName"] project_name = instance.data["projectEntity"]["name"] @@ -1052,7 +1052,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ) matching_repre = None for repre in repres: - if repre["name"] == current_repre["name"]: + if repre["name"] == current_repre_name: matching_repre = repre break if not matching_repre: From fe78983491556d82716d146a0e83f3e44de0e190 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 23 Apr 2025 14:53:56 +0200 Subject: [PATCH 284/626] Fix condition --- client/ayon_core/plugins/publish/extract_review.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 699bf42876..312b594acd 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -625,7 +625,6 @@ class ExtractReview(pyblish.api.InstancePlugin): input_allow_bg = False first_sequence_frame = None - ext = os.path.splitext(repre["files"])[1].replace(".", "") if input_is_sequence and repre["files"]: # Calculate first frame that should be used cols, _ = clique.assemble(repre["files"]) @@ -644,6 +643,8 @@ class ExtractReview(pyblish.api.InstancePlugin): ext = os.path.splitext(repre["files"][0])[1].replace(".", "") if ext.lower() in self.alpha_exts: input_allow_bg = True + else: + ext = os.path.splitext(repre["files"])[1].replace(".", "") return { "fps": float(instance.data["fps"]), From 80e0fa6b17052cfdafc7635ae53cf2d5d1d4dec6 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 23 Apr 2025 20:05:59 +0200 Subject: [PATCH 285/626] Correctly check whether sequence has any frames in the returned holes collection. As per [`clique.Collection.holes` documentation](https://clique.readthedocs.io/en/stable/api_reference/collection.html#clique.collection.Collection.holes): > Return Collection of missing indexes. --- client/ayon_core/plugins/publish/extract_color_transcode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_color_transcode.py b/client/ayon_core/plugins/publish/extract_color_transcode.py index 1f2c2a89af..6cf30857a4 100644 --- a/client/ayon_core/plugins/publish/extract_color_transcode.py +++ b/client/ayon_core/plugins/publish/extract_color_transcode.py @@ -280,7 +280,7 @@ class ExtractOIIOTranscode(publish.Extractor): collection = collections[0] frames = list(collection.indexes) - if collection.holes(): + if collection.holes().indexes: return files_to_convert frame_str = "{}-{}#".format(frames[0], frames[-1]) From bc509fcf0084d465ff4d51f0f3391a03298e799f Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 11:37:26 +0200 Subject: [PATCH 286/626] Simplified querying for old repre --- .../ayon_core/plugins/publish/extract_review.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 312b594acd..b56e5a2ac0 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1047,17 +1047,16 @@ class ExtractReview(pyblish.api.InstancePlugin): if not version_entity: return None - repres = get_representations( + matching_repres = get_representations( project_name, - version_ids=[version_entity["id"]] + version_ids=[version_entity["id"]], + representation_names=[current_repre_name], + fields={"files"} ) - matching_repre = None - for repre in repres: - if repre["name"] == current_repre_name: - matching_repre = repre - break - if not matching_repre: + + if not matching_repres: return None + matching_repre = list(matching_repres)[0] repre_file_paths = [ file_info["path"] From e9d3462da28bf114bef0b950f897f9ef740cf9a9 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 11:39:44 +0200 Subject: [PATCH 287/626] Fix description --- server/settings/publish_plugins.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index cbe3894975..47dd5ebfb0 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -654,8 +654,7 @@ class ExtractReviewOutputDefModel(BaseSettingsModel): fill_missing_frames: str = SettingsField( title="Handle missing frames", default="closest_existing", - description="How to handle frames that are missing from entity frame " - "range.", + description="How to handle gaps in sequence frame ranges.", enum_resolver=_handle_missing_frames_enum ) From 468ab32b9a8c21e2add24bbdce7aad64ffe9ae50 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 24 Apr 2025 11:44:43 +0200 Subject: [PATCH 288/626] Remove unused import and add trailing commas --- .../plugins/publish/collect_explicit_resolution.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_explicit_resolution.py b/client/ayon_core/plugins/publish/collect_explicit_resolution.py index 3ff08cbd34..1aa7147627 100644 --- a/client/ayon_core/plugins/publish/collect_explicit_resolution.py +++ b/client/ayon_core/plugins/publish/collect_explicit_resolution.py @@ -1,13 +1,12 @@ import pyblish.api from ayon_core.lib import EnumDef -from ayon_core.pipeline import colorspace from ayon_core.pipeline import publish from ayon_core.pipeline.publish import PublishError class CollectExplicitResolution( pyblish.api.InstancePlugin, - publish.AYONPyblishPluginMixin + publish.AYONPyblishPluginMixin, ): """Collect explicit user defined resolution attributes for instances""" @@ -61,7 +60,7 @@ class CollectExplicitResolution( return { "resolutionWidth": item_values["width"], "resolutionHeight": item_values["height"], - "pixelAspect": item_values["pixel_aspect"] + "pixelAspect": item_values["pixel_aspect"], } else: raise PublishError( @@ -72,7 +71,8 @@ class CollectExplicitResolution( if cls.resolution_items is None: resolution_items = {} for item in cls.options: - item_text = f"{item['width']}x{item['height']}x{item['pixel_aspect']}" + item_text = ( + f"{item['width']}x{item['height']}x{item['pixel_aspect']}") resolution_items[item_text] = item cls.resolution_items = resolution_items @@ -81,7 +81,7 @@ class CollectExplicitResolution( @classmethod def get_attr_defs_for_instance( - cls, create_context, instance + cls, create_context, instance, ): if instance.product_type not in cls.product_types: return [] @@ -99,6 +99,6 @@ class CollectExplicitResolution( "explicit_resolution", items, default="Don't override", - label="Override Resolution" - ) + label="Override Resolution", + ), ] From 5410d69ad2137a91d51a1260f254470e605da125 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 12:09:54 +0200 Subject: [PATCH 289/626] Simplified fill_root logic I must be wrong in my previous tests, it works even this simple way. --- client/ayon_core/plugins/publish/extract_review.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index b56e5a2ac0..a53e8eee8f 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1005,13 +1005,7 @@ class ExtractReview(pyblish.api.InstancePlugin): hole_fpath = os.path.join(staging_dir, col_format % frame) previous_version_path = prev_col_format % frame - # limits too large padding coming from Anatomy - previous_version_path = ( - os.path.join( - anatomy.fill_root(os.path.dirname(previous_version_path)), - os.path.basename(previous_version_path) - ) - ) + previous_version_path = anatomy.fill_root(previous_version_path) if not os.path.exists(previous_version_path): self.log.warning( "Missing frame should be replaced from " From 4a38e1175f4b6c9304ce233fe3bf8af58d2c41b8 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 13:20:33 +0200 Subject: [PATCH 290/626] Fix rendering explicit frames This seems only safe way --- .../plugins/publish/extract_review.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index a53e8eee8f..0c4b99cf66 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -526,12 +526,12 @@ class ExtractReview(pyblish.api.InstancePlugin): run_subprocess(subprcs_cmd, shell=True, logger=self.log) # delete files added to fill gaps - if new_frame_files: - for filepath in new_frame_files.values(): - os.unlink(filepath) - - for filepath in temp_data["paths_to_remove"]: - os.unlink(filepath) + # if new_frame_files: + # for filepath in new_frame_files.values(): + # # os.unlink(filepath) + # + # for filepath in temp_data["paths_to_remove"]: + # os.unlink(filepath) new_repre.update({ "fps": temp_data["fps"], @@ -818,9 +818,10 @@ class ExtractReview(pyblish.api.InstancePlugin): staging_dir = os.path.dirname(temp_data["full_input_path"]) explicit_frames_path = os.path.join( staging_dir, "explicit_frames.txt") + frame_duration = 1 / temp_data["fps"] with open(explicit_frames_path, "w") as fp: lines = [ - f"file {path}" + f"file '{path}'{os.linesep}duration {frame_duration}" for path in temp_data["explicit_input_paths"] ] fp.write("\n".join(lines)) @@ -830,9 +831,8 @@ class ExtractReview(pyblish.api.InstancePlugin): ffmpeg_input_args.extend([ "-f", "concat", "-safe", "0", - "-fflags", "+genpts+igndts", "-i", path_to_subprocess_arg(explicit_frames_path), - "-r", "25" + "-r", str(temp_data["fps"]) ]) # Add audio arguments if there are any. Skipped when output are images. From e5d673c0209c065112bcd8e192c5889b68b5d16e Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 13:23:40 +0200 Subject: [PATCH 291/626] Reverted unwanted commenting out --- client/ayon_core/plugins/publish/extract_review.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index 0c4b99cf66..daa58e0e93 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -525,13 +525,13 @@ class ExtractReview(pyblish.api.InstancePlugin): run_subprocess(subprcs_cmd, shell=True, logger=self.log) - # delete files added to fill gaps - # if new_frame_files: - # for filepath in new_frame_files.values(): - # # os.unlink(filepath) - # - # for filepath in temp_data["paths_to_remove"]: - # os.unlink(filepath) + #delete files added to fill gaps + if new_frame_files: + for filepath in new_frame_files.values(): + os.unlink(filepath) + + for filepath in temp_data["paths_to_remove"]: + os.unlink(filepath) new_repre.update({ "fps": temp_data["fps"], From 026ec6419673c8c896524bb83ce74fd315243050 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 24 Apr 2025 14:19:53 +0200 Subject: [PATCH 292/626] Fix typo Co-authored-by: Roy Nieterau --- client/ayon_core/plugins/publish/extract_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index daa58e0e93..f824e1db3c 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -525,7 +525,7 @@ class ExtractReview(pyblish.api.InstancePlugin): run_subprocess(subprcs_cmd, shell=True, logger=self.log) - #delete files added to fill gaps + # delete files added to fill gaps if new_frame_files: for filepath in new_frame_files.values(): os.unlink(filepath) From f47c0b4027eccc0ce17962c3298a21f5ce3745d0 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 29 Apr 2025 16:21:40 +0800 Subject: [PATCH 293/626] If there is no valid review representation for thumbnail creation, make sure the representation is with the image content so that it can create thumbnail --- .../plugins/publish/extract_thumbnail.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index b72862ea22..adcd7be846 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -17,7 +17,7 @@ from ayon_core.lib import ( ) from ayon_core.lib.transcoding import convert_colorspace -from ayon_core.lib.transcoding import VIDEO_EXTENSIONS +from ayon_core.lib.transcoding import VIDEO_EXTENSIONS, IMAGE_EXTENSIONS class ExtractThumbnail(pyblish.api.InstancePlugin): @@ -349,7 +349,8 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): continue if "review" not in tags: - continue + if not self._is_valid_media_repre(repre): + continue if not repre.get("files"): self.log.debug(( @@ -360,6 +361,21 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): filtered_repres.append(repre) return filtered_repres + def _is_valid_media_repre(self, repre): + """Check if representation contains valid media files""" + files = repre.get("files") + if not files: + return False + + # Get first file's extension + if isinstance(files, (list, tuple)): + first_file = files[0] + else: + first_file = files + + ext = os.path.splitext(first_file)[1].lower() + return ext in IMAGE_EXTENSIONS + def _create_thumbnail_oiio( self, src_path, From 59e986dde23fb53cac335ca454b7405d9579ec1e Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 29 Apr 2025 16:23:27 +0800 Subject: [PATCH 294/626] add debug message into self._is_valid_media_repre --- client/ayon_core/plugins/publish/extract_thumbnail.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index adcd7be846..47710de5f6 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -365,6 +365,9 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): """Check if representation contains valid media files""" files = repre.get("files") if not files: + self.log.debug(( + "Representation \"{}\" doesn't have files. Skipping" + ).format(repre["name"])) return False # Get first file's extension From 637b157fd387c5d7943c2f57ec3508aaa79a3823 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 29 Apr 2025 16:24:28 +0800 Subject: [PATCH 295/626] rename self._is_valid_media_repre to self._is_valid_image_repre --- client/ayon_core/plugins/publish/extract_thumbnail.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 47710de5f6..b48e6a69b7 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -349,7 +349,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): continue if "review" not in tags: - if not self._is_valid_media_repre(repre): + if not self._is_valid_images_repre(repre): continue if not repre.get("files"): @@ -361,8 +361,8 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): filtered_repres.append(repre) return filtered_repres - def _is_valid_media_repre(self, repre): - """Check if representation contains valid media files""" + def _is_valid_images_repre(self, repre): + """Check if representation contains valid image files""" files = repre.get("files") if not files: self.log.debug(( From 625e782d7e2065bde600f3cd6c99387b411a3d10 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 29 Apr 2025 16:32:17 +0800 Subject: [PATCH 296/626] improve the docstring --- client/ayon_core/plugins/publish/extract_thumbnail.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index b48e6a69b7..6e0d899f30 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -362,7 +362,14 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): return filtered_repres def _is_valid_images_repre(self, repre): - """Check if representation contains valid image files""" + """Check if representation contains valid image files + + Args: + repre (dict): representation + + Returns: + bool: whether the representation has the valid image content + """ files = repre.get("files") if not files: self.log.debug(( From c0db02f7b519eb36ab249f60d5c122053cca862d Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 29 Apr 2025 17:14:14 +0800 Subject: [PATCH 297/626] improve the check on the valid representations for thumbnail creation --- .../plugins/publish/extract_thumbnail.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 6e0d899f30..cb941a53a9 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -336,7 +336,8 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): return need_thumb_repres def _get_filtered_repres(self, instance): - filtered_repres = [] + review_repres = [] + other_repres = [] src_repres = instance.data.get("representations") or [] for repre in src_repres: @@ -348,18 +349,22 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # to be published locally continue - if "review" not in tags: - if not self._is_valid_images_repre(repre): - continue - if not repre.get("files"): self.log.debug(( "Representation \"{}\" doesn't have files. Skipping" ).format(repre["name"])) continue - filtered_repres.append(repre) - return filtered_repres + has_review_tag = "review" in tags + if not has_review_tag and not self._is_valid_images_repre(repre): + continue + + if has_review_tag: + review_repres.append(repre) + else: + other_repres.append(repre) + + return review_repres + other_repres def _is_valid_images_repre(self, repre): """Check if representation contains valid image files @@ -372,9 +377,6 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): """ files = repre.get("files") if not files: - self.log.debug(( - "Representation \"{}\" doesn't have files. Skipping" - ).format(repre["name"])) return False # Get first file's extension @@ -384,7 +386,8 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): first_file = files ext = os.path.splitext(first_file)[1].lower() - return ext in IMAGE_EXTENSIONS + + return ext in IMAGE_EXTENSIONS or ext in VIDEO_EXTENSIONS def _create_thumbnail_oiio( self, From 4bb0e14106cb65e5937225695ef336c5e87a3a1d Mon Sep 17 00:00:00 2001 From: Kayla Man <64118225+moonyuet@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:10:01 +0800 Subject: [PATCH 298/626] Update client/ayon_core/plugins/publish/extract_thumbnail.py Co-authored-by: Roy Nieterau --- client/ayon_core/plugins/publish/extract_thumbnail.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index cb941a53a9..9592264ee2 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -356,12 +356,9 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): continue has_review_tag = "review" in tags - if not has_review_tag and not self._is_valid_images_repre(repre): - continue - if has_review_tag: review_repres.append(repre) - else: + elif self._is_valid_images_repre(repre): other_repres.append(repre) return review_repres + other_repres From 212a918b3151b9d69ec0eafc69f911b61561e259 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:25:49 +0200 Subject: [PATCH 299/626] added base ruff config file --- ruff.toml | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 ruff.toml diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 0000000000..153a5c7d88 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,74 @@ +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".ipynb_checkpoints", + ".mypy_cache", + ".nox", + ".pants.d", + ".pyenv", + ".pytest_cache", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "site-packages", + "venv", +] + +# Same as Black. +line-length = 79 +indent-width = 4 + +[lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or +# McCabe complexity (`C901`) by default. +select = ["E", "F", "W"] +ignore = [] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" + +# Enable auto-formatting of code examples in docstrings. Markdown, +# reStructuredText code/literal blocks and doctests are all supported. +# +# This is currently disabled by default, but it is planned for this +# to be opt-out in the future. +docstring-code-format = false + +# Set the line length limit used when formatting code snippets in +# docstrings. +# +# This only has an effect when the `docstring-code-format` setting is +# enabled. +docstring-code-line-length = "dynamic" From 644f79bf0d67341f05474240840fe129faa459eb Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:29:17 +0200 Subject: [PATCH 300/626] added specific ignores --- ruff.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ruff.toml b/ruff.toml index 153a5c7d88..e94728c0fc 100644 --- a/ruff.toml +++ b/ruff.toml @@ -26,6 +26,8 @@ exclude = [ "node_modules", "site-packages", "venv", + "vendor", + "generated", ] # Same as Black. @@ -46,6 +48,14 @@ unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" +exclude = [ + "client/ayon_core/modules/click_wrap.py", + "client/ayon_core/scripts/slates/__init__.py" +] + +[lint.per-file-ignores] +"client/ayon_core/lib/__init__.py" = ["E402"] + [format] # Like Black, use double quotes for strings. quote-style = "double" From 79dbdb38e2c682a126d0c7f75aad00f6ecabef02 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:29:36 +0200 Subject: [PATCH 301/626] added linting details --- ruff.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruff.toml b/ruff.toml index e94728c0fc..49dd7a8c17 100644 --- a/ruff.toml +++ b/ruff.toml @@ -35,9 +35,9 @@ line-length = 79 indent-width = 4 [lint] +preview = true +pydocstyle.convention = "google" # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. -# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or -# McCabe complexity (`C901`) by default. select = ["E", "F", "W"] ignore = [] From 9f7f1ed314d6e2419b587053229e2bb870812765 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:29:43 +0200 Subject: [PATCH 302/626] added target python --- ruff.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruff.toml b/ruff.toml index 49dd7a8c17..701055a65a 100644 --- a/ruff.toml +++ b/ruff.toml @@ -34,6 +34,9 @@ exclude = [ line-length = 79 indent-width = 4 +# Assume Python 3.9 +target-version = "py39" + [lint] preview = true pydocstyle.convention = "google" From 87514ba2e30a13e30d2bccfe6db6bd5962a87b8c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:30:02 +0200 Subject: [PATCH 303/626] remove ruff config from pyproject.toml --- pyproject.toml | 76 -------------------------------------------------- 1 file changed, 76 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4c4272cc30..309b0f91a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,82 +41,6 @@ pymdown-extensions = "^10.14.3" mike = "^2.1.3" mkdocstrings-shell = "^1.0.2" - -[tool.ruff] -# Exclude a variety of commonly ignored directories. -exclude = [ - ".bzr", - ".direnv", - ".eggs", - ".git", - ".git-rewrite", - ".hg", - ".ipynb_checkpoints", - ".mypy_cache", - ".nox", - ".pants.d", - ".pyenv", - ".pytest_cache", - ".pytype", - ".ruff_cache", - ".svn", - ".tox", - ".venv", - ".vscode", - "__pypackages__", - "_build", - "buck-out", - "build", - "dist", - "node_modules", - "site-packages", - "venv", - "vendor", - "generated", -] - -# Same as Black. -line-length = 79 -indent-width = 4 - -# Assume Python 3.9 -target-version = "py39" - -[tool.ruff.lint] -preview = true -pydocstyle.convention = "google" -# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. -select = ["E", "F", "W"] -ignore = [] - -# Allow fix for all enabled rules (when `--fix`) is provided. -fixable = ["ALL"] -unfixable = [] - -# Allow unused variables when underscore-prefixed. -dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" - -exclude = [ - "client/ayon_core/modules/click_wrap.py", - "client/ayon_core/scripts/slates/__init__.py" -] - -[tool.ruff.lint.per-file-ignores] -"client/ayon_core/lib/__init__.py" = ["E402"] - -[tool.ruff.format] -# Like Black, use double quotes for strings. -quote-style = "double" - -# Like Black, indent with spaces, rather than tabs. -indent-style = "space" - -# Like Black, respect magic trailing commas. -skip-magic-trailing-comma = false - -# Like Black, automatically detect the appropriate line ending. -line-ending = "auto" - [tool.codespell] # Ignore words that are not in the dictionary. ignore-words-list = "ayon,ynput,parms,parm,hda,developpement" From 2cb2a71e51e37614a12fc0c23378b61d57eee716 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:31:07 +0200 Subject: [PATCH 304/626] remove outdated paths --- pyproject.toml | 2 +- ruff.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 309b0f91a1..51f6048d8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,7 +49,7 @@ ignore-words-list = "ayon,ynput,parms,parm,hda,developpement" # Remove with next codespell release (>2.2.6) ignore-regex = ".*codespell:ignore.*" -skip = "./.*,./package/*,*/vendor/*,*/unreal/integration/*,*/aftereffects/api/extension/js/libs/*" +skip = "./.*,./package/*,*/client/ayon_core/vendor/*" count = true quiet-level = 3 diff --git a/ruff.toml b/ruff.toml index 701055a65a..f9b073e818 100644 --- a/ruff.toml +++ b/ruff.toml @@ -52,7 +52,6 @@ unfixable = [] dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" exclude = [ - "client/ayon_core/modules/click_wrap.py", "client/ayon_core/scripts/slates/__init__.py" ] From 591bf7c57be83a34677e4df720a42dd02d6b6017 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 14:01:01 +0200 Subject: [PATCH 305/626] bump ruff version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 51f6048d8a..3d85c30eda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ pytest = "^8.0" pytest-print = "^1.0" ayon-python-api = "^1.0" # linting dependencies -ruff = "^0.3.3" +ruff = "0.11.7" pre-commit = "^3.6.2" codespell = "^2.2.6" semver = "^3.0.2" From c32cdba660ae1d30bfb22831cb3d63dfec325d82 Mon Sep 17 00:00:00 2001 From: Kayla Man <64118225+moonyuet@users.noreply.github.com> Date: Tue, 29 Apr 2025 20:40:50 +0800 Subject: [PATCH 306/626] Update client/ayon_core/plugins/publish/extract_thumbnail.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_thumbnail.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 9592264ee2..f67c571c90 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -372,15 +372,10 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): Returns: bool: whether the representation has the valid image content """ - files = repre.get("files") - if not files: - return False - # Get first file's extension - if isinstance(files, (list, tuple)): - first_file = files[0] - else: - first_file = files + first_file = repre["files"] + if isinstance(first_file, (list, tuple)): + first_file = first_file[0] ext = os.path.splitext(first_file)[1].lower() From 6d517d5e87074d7b4d4295c96e9bb405b36306b2 Mon Sep 17 00:00:00 2001 From: Kayla Man <64118225+moonyuet@users.noreply.github.com> Date: Tue, 29 Apr 2025 20:41:01 +0800 Subject: [PATCH 307/626] Update client/ayon_core/plugins/publish/extract_thumbnail.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/extract_thumbnail.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index f67c571c90..3a428c46a7 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -355,8 +355,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): ).format(repre["name"])) continue - has_review_tag = "review" in tags - if has_review_tag: + if "review" in tags: review_repres.append(repre) elif self._is_valid_images_repre(repre): other_repres.append(repre) From 0f977b92840eda1a55e7489d651232c3dbe512f5 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 29 Apr 2025 15:52:48 +0200 Subject: [PATCH 308/626] Add addon version compatibility --- package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.py b/package.py index 0358c2f4cd..d1e2fac5ca 100644 --- a/package.py +++ b/package.py @@ -11,4 +11,6 @@ ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = { "harmony": ">0.4.0", + "fusion": ">=0.3.3", + "openrv": ">=1.0.2" } From 5d8e3e37c1f32ad5e314588dc2210b13b3d57eb1 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 29 Apr 2025 15:53:00 +0200 Subject: [PATCH 309/626] Cosmetics --- package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.py b/package.py index d1e2fac5ca..9fbb6a7000 100644 --- a/package.py +++ b/package.py @@ -12,5 +12,5 @@ ayon_required_addons = {} ayon_compatible_addons = { "harmony": ">0.4.0", "fusion": ">=0.3.3", - "openrv": ">=1.0.2" + "openrv": ">=1.0.2", } From 20435c18bcb770f0fe03a1144181a917d09670ac Mon Sep 17 00:00:00 2001 From: Ynbot Date: Tue, 29 Apr 2025 13:56:28 +0000 Subject: [PATCH 310/626] [Automated] Add generated package files from main --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 01e431577e..6bc1e253c4 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.1.8+dev" +__version__ = "1.1.9" diff --git a/package.py b/package.py index 0358c2f4cd..111cfd08d0 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.1.8+dev" +version = "1.1.9" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index 3d85c30eda..dd85bba802 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.1.8+dev" +version = "1.1.9" description = "" authors = ["Ynput Team "] readme = "README.md" From 839550d0cf5d89cbe6e2dc3fbf4306d8b383b628 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 29 Apr 2025 13:57:15 +0000 Subject: [PATCH 311/626] chore(): update bug report / version --- .github/ISSUE_TEMPLATE/bug_report.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c0ab04abef..f602156aea 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,16 @@ body: label: Version description: What version are you running? Look to AYON Tray options: + - 1.1.9 + - 1.1.8 + - 1.1.7 + - 1.1.6 + - 1.1.5 + - 1.1.4 + - 1.1.3 + - 1.1.2 + - 1.1.1 + - 1.1.0 - 1.0.14 - 1.0.13 - 1.0.12 From abe038ee16d657d59e1bcb03b3c5e324e7fcff1c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:13:02 +0200 Subject: [PATCH 312/626] bump version to 1.1.9+dev --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 6bc1e253c4..ed56f67bb4 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.1.9" +__version__ = "1.1.9+dev" diff --git a/package.py b/package.py index 111cfd08d0..d28ebd059f 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.1.9" +version = "1.1.9+dev" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index dd85bba802..5a89fbf7e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.1.9" +version = "1.1.9+dev" description = "" authors = ["Ynput Team "] readme = "README.md" From b85e6b72cbad55190a0a539ca0ef9fd3d5de5b4a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 29 Apr 2025 17:05:13 +0200 Subject: [PATCH 313/626] run update bug report after release trigger --- .github/workflows/update_bug_report.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update_bug_report.yml b/.github/workflows/update_bug_report.yml index 1e5da414bb..98a8454e4b 100644 --- a/.github/workflows/update_bug_report.yml +++ b/.github/workflows/update_bug_report.yml @@ -1,10 +1,11 @@ name: 🐞 Update Bug Report on: + workflow_run: + workflows: ["🚀 Release Trigger"] + types: + - completed workflow_dispatch: - release: - # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release - types: [published] jobs: update-bug-report: From 52d0cc8748707fb694c333b8f78693e0928d5759 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 30 Apr 2025 17:00:09 +0200 Subject: [PATCH 314/626] :sparkles: add hook to filter paths --- .../hooks/pre_remove_launcher_paths.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 client/ayon_core/hooks/pre_remove_launcher_paths.py diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py new file mode 100644 index 0000000000..a96978b368 --- /dev/null +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -0,0 +1,36 @@ +""""Pre launch hook to remove launcher paths from the system.""" +import os +from ayon_applications import PreLaunchHook, LaunchTypes + + +class PreRemoveLauncherPaths(PreLaunchHook): + """Remove launcher paths from the system. + + This hook is used to remove launcher paths from the system before launching + an application. It is used to ensure that the application is launched with + the correct environment variables. Especially for Windows, where + paths in `PATH` are used to load DLLs. This is important to avoid + conflicts with other applications that may have the same DLLs in their + paths. + """ + + order = 1 + + platforms = {"linux", "windows", "darwin"} + launch_types = {LaunchTypes.local} + + def execute(self): + # Remove launcher paths from the system + paths = [] + try: + ayon_root = self.launch_context.env["AYON_ROOT"] + except KeyError: + self.log.warning("AYON_ROOT not found in environment variables.") + return + + paths.extend( + path + for path in self.launch_context.env.get("PATH", "").split(os.pathsep) + if not path.startswith(ayon_root) + ) + self.launch_context.env["PATH"] = os.pathsep.join(paths) From cd7c4a37783b3c53b8e934a8524a18941c9ac0c0 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 30 Apr 2025 17:20:44 +0200 Subject: [PATCH 315/626] :recycle: make checks safer --- client/ayon_core/hooks/pre_remove_launcher_paths.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py index a96978b368..800df0c214 100644 --- a/client/ayon_core/hooks/pre_remove_launcher_paths.py +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -23,14 +23,14 @@ class PreRemoveLauncherPaths(PreLaunchHook): # Remove launcher paths from the system paths = [] try: - ayon_root = self.launch_context.env["AYON_ROOT"] + ayon_root = os.path.normpath(self.launch_context.env["AYON_ROOT"]) except KeyError: self.log.warning("AYON_ROOT not found in environment variables.") return paths.extend( path - for path in self.launch_context.env.get("PATH", "").split(os.pathsep) - if not path.startswith(ayon_root) + for path in self.launch_context.env.get("PATH").split(os.pathsep) + if not os.path.normpath(path).startswith(ayon_root) ) self.launch_context.env["PATH"] = os.pathsep.join(paths) From 1f48b1568d0a988e749e42436ac545547756d726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Wed, 30 Apr 2025 19:02:55 +0200 Subject: [PATCH 316/626] Update client/ayon_core/hooks/pre_remove_launcher_paths.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hooks/pre_remove_launcher_paths.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py index 800df0c214..ee6ebd8950 100644 --- a/client/ayon_core/hooks/pre_remove_launcher_paths.py +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -30,7 +30,7 @@ class PreRemoveLauncherPaths(PreLaunchHook): paths.extend( path - for path in self.launch_context.env.get("PATH").split(os.pathsep) + for path in self.launch_context.env.get("PATH", "").split(os.pathsep) if not os.path.normpath(path).startswith(ayon_root) ) self.launch_context.env["PATH"] = os.pathsep.join(paths) From edabad6c13ec98e05a3b8c3f4d0e1b32b462165c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Wed, 30 Apr 2025 19:07:30 +0200 Subject: [PATCH 317/626] Update client/ayon_core/hooks/pre_remove_launcher_paths.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hooks/pre_remove_launcher_paths.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py index ee6ebd8950..4e3835d08b 100644 --- a/client/ayon_core/hooks/pre_remove_launcher_paths.py +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -22,11 +22,7 @@ class PreRemoveLauncherPaths(PreLaunchHook): def execute(self): # Remove launcher paths from the system paths = [] - try: - ayon_root = os.path.normpath(self.launch_context.env["AYON_ROOT"]) - except KeyError: - self.log.warning("AYON_ROOT not found in environment variables.") - return + ayon_root = os.path.normpath(os.environ["AYON_ROOT"]) paths.extend( path From 624dfcccadb4595d90f5c92127a30fbca99be897 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 2 May 2025 14:46:23 +0200 Subject: [PATCH 318/626] :recycle: some refactoring --- .../hooks/pre_remove_launcher_paths.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py index 4e3835d08b..96ee997501 100644 --- a/client/ayon_core/hooks/pre_remove_launcher_paths.py +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -1,6 +1,10 @@ """"Pre launch hook to remove launcher paths from the system.""" +from __future__ import annotations + import os -from ayon_applications import PreLaunchHook, LaunchTypes +from typing import ClassVar + +from ayon_applications import PreLaunchHook class PreRemoveLauncherPaths(PreLaunchHook): @@ -15,18 +19,17 @@ class PreRemoveLauncherPaths(PreLaunchHook): """ order = 1 + launch_types: ClassVar[set] = set() - platforms = {"linux", "windows", "darwin"} - launch_types = {LaunchTypes.local} - - def execute(self): + def execute(self) -> None: + """Execute the hook.""" # Remove launcher paths from the system - paths = [] ayon_root = os.path.normpath(os.environ["AYON_ROOT"]) - paths.extend( + paths = [ path - for path in self.launch_context.env.get("PATH", "").split(os.pathsep) + for path in self.launch_context.env.get( + "PATH", "").split(os.pathsep) if not os.path.normpath(path).startswith(ayon_root) - ) + ] self.launch_context.env["PATH"] = os.pathsep.join(paths) From 917e32cb13923dfdc77d4bbdd1b041ee8492f3f4 Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 2 May 2025 14:47:46 +0200 Subject: [PATCH 319/626] :recycle: remove unnecessary type hinting --- client/ayon_core/hooks/pre_remove_launcher_paths.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/client/ayon_core/hooks/pre_remove_launcher_paths.py b/client/ayon_core/hooks/pre_remove_launcher_paths.py index 96ee997501..df27e512d0 100644 --- a/client/ayon_core/hooks/pre_remove_launcher_paths.py +++ b/client/ayon_core/hooks/pre_remove_launcher_paths.py @@ -1,8 +1,5 @@ """"Pre launch hook to remove launcher paths from the system.""" -from __future__ import annotations - import os -from typing import ClassVar from ayon_applications import PreLaunchHook @@ -17,9 +14,7 @@ class PreRemoveLauncherPaths(PreLaunchHook): conflicts with other applications that may have the same DLLs in their paths. """ - order = 1 - launch_types: ClassVar[set] = set() def execute(self) -> None: """Execute the hook.""" From 0063465626bb81f4a8cf9579576d406b473e189b Mon Sep 17 00:00:00 2001 From: Ynbot Date: Fri, 2 May 2025 12:51:59 +0000 Subject: [PATCH 320/626] [Automated] Add generated package files from main --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index ed56f67bb4..af87dbce6c 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.1.9+dev" +__version__ = "1.2.0" diff --git a/package.py b/package.py index 6229131f63..d6c58f223a 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.1.9+dev" +version = "1.2.0" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index 5a89fbf7e3..2ce6d971dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.1.9+dev" +version = "1.2.0" description = "" authors = ["Ynput Team "] readme = "README.md" From 75110078618beab1f636bf26c24dcfd9b0393c75 Mon Sep 17 00:00:00 2001 From: Ynbot Date: Fri, 2 May 2025 12:52:33 +0000 Subject: [PATCH 321/626] [Automated] Update version in package.py for develop --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index af87dbce6c..4fd7bde336 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.2.0" +__version__ = "1.2.0+dev" diff --git a/package.py b/package.py index d6c58f223a..1695cc7808 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.2.0" +version = "1.2.0+dev" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index 2ce6d971dd..c7e2bb5000 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.2.0" +version = "1.2.0+dev" description = "" authors = ["Ynput Team "] readme = "README.md" From 3bd3c2f6f5bf85c95f172b1b97e2e2a685b09fcf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 12:53:24 +0000 Subject: [PATCH 322/626] chore(): update bug report / version --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index f602156aea..c1e18faf55 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,7 @@ body: label: Version description: What version are you running? Look to AYON Tray options: + - 1.2.0 - 1.1.9 - 1.1.8 - 1.1.7 From 47f8dcdce6871e96e295d0ab6d00957877360666 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 5 May 2025 12:05:01 +0200 Subject: [PATCH 323/626] Updates OCIO config paths Updates the built-in OCIO config paths to correct versioning and descriptions, ensuring accurate configuration options. --- server/settings/main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index 97434d0b93..a582763b4b 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -72,10 +72,10 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ { - "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 - "label": "ACES 1.3 Studio (OCIO v2)", + "value": "{BUILTIN_OCIO_ROOT}/aces_2.0/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 + "label": "ACES 2.0 Studio (OCIO v2.4)", "description": ( - "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") + "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") }, { "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio", # noqa: E501 @@ -84,10 +84,10 @@ def _ocio_built_in_paths(): "Aces 1.3 Studio OCIO config file. Requires OCIO v2.1.") }, { - "value": "{BUILTIN_OCIO_ROOT}/aces_2.0/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 - "label": "ACES 2.0 Studio (OCIO v2.4)", + "value": "{BUILTIN_OCIO_ROOT}/aces_1.3/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio", # noqa: E501 + "label": "ACES 1.3 Studio (OCIO v2)", "description": ( - "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") + "Aces 1.3 Studio OCIO config file. Requires OCIO v2.") }, { "value": "{BUILTIN_OCIO_ROOT}/aces_1.2/config.ocio", From 8ef5c45eba8d074a01432c8f4373239baa33210d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 5 May 2025 16:05:26 +0200 Subject: [PATCH 324/626] Generate blank frame only if necessary --- .../plugins/publish/extract_review.py | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index f824e1db3c..de1c785475 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -1071,8 +1071,35 @@ class ExtractReview(pyblish.api.InstancePlugin): temp_data: Dict[str, Any] ) -> Optional[Dict[int, str]]: """Fills missing files by blank frame.""" + + blank_frame_path = None + + added_files = {} + + col_format = collection.format("{head}{padding}{tail}") + for frame in range(start_frame, end_frame + 1): + if frame in collection.indexes: + continue + hole_fpath = os.path.join(staging_dir, col_format % frame) + if blank_frame_path is None: + blank_frame_path = self._create_blank_frame( + staging_dir, extension, resolution_width, resolution_height + ) + temp_data["paths_to_remove"].append(blank_frame_path) + speedcopy.copyfile(blank_frame_path, hole_fpath) + added_files[frame] = hole_fpath + + return added_files + + def _create_blank_frame( + self, + staging_dir, + extension, + resolution_width, + resolution_height + ): blank_frame_path = os.path.join(staging_dir, f"blank.{extension}") - temp_data["paths_to_remove"].append(blank_frame_path) + command = get_ffmpeg_tool_args( "ffmpeg", "-f", "lavfi", @@ -1090,17 +1117,7 @@ class ExtractReview(pyblish.api.InstancePlugin): ) self.log.debug("Output: {}".format(output)) - added_files = {} - - col_format = collection.format("{head}{padding}{tail}") - for frame in range(start_frame, end_frame + 1): - if frame in collection.indexes: - continue - hole_fpath = os.path.join(staging_dir, col_format % frame) - speedcopy.copyfile(blank_frame_path, hole_fpath) - added_files[frame] = hole_fpath - - return added_files + return blank_frame_path def fill_sequence_gaps_from_existing( self, From 34d66c65bc55bc1c421eb1033b75a7e5c390cbd2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 14:04:35 +0200 Subject: [PATCH 325/626] split trigger or action and webaction --- client/ayon_core/tools/launcher/abstract.py | 35 ++++++++++---- client/ayon_core/tools/launcher/control.py | 26 +++++++--- .../tools/launcher/models/actions.py | 48 ++++++++++++------- .../tools/launcher/ui/actions_widget.py | 17 +++---- client/ayon_core/tools/launcher/ui/window.py | 7 +++ 5 files changed, 93 insertions(+), 40 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index c62faa28db..004d03bccb 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -297,26 +297,45 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): @abstractmethod def trigger_action( self, - action_label, - action_type, action_id, project_name, folder_id, task_id, - addon_name, - addon_version, ): """Trigger action on given context. Args: - action_label (str): Action label. - action_type (Literal["webaction", "local"]): Action type. action_id (str): Action identifier. project_name (Union[str, None]): Project name. folder_id (Union[str, None]): Folder id. task_id (Union[str, None]): Task id. - addon_name (Union[str, None]): Addon name. - addon_version (Union[str, None]): Addon version. + + """ + pass + + @abstractmethod + def trigger_webaction( + self, + identifier, + project_name, + folder_id, + task_id, + action_label, + addon_name, + addon_version, + form_data=None, + ): + """Trigger action on given context. + + Args: + identifier (str): Action identifier. + project_name (Union[str, None]): Project name. + folder_id (Union[str, None]): Folder id. + task_id (Union[str, None]): Task id. + action_label (str): Action label. + addon_name (str): Addon name. + addon_version (str): Addon version. + form_data (Optional[dict[str, Any]]): Form values of action. """ pass diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index cdd8806421..a69288dda1 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -137,24 +137,38 @@ class BaseLauncherController( def trigger_action( self, - action_label, - action_type, identifier, project_name, folder_id, task_id, - addon_name, - addon_version, ): self._actions_model.trigger_action( - action_label, - action_type, identifier, project_name, folder_id, task_id, + ) + + def trigger_webaction( + self, + identifier, + project_name, + folder_id, + task_id, + action_label, + addon_name, + addon_version, + form_data=None, + ): + self._actions_model.trigger_webaction( + identifier, + project_name, + folder_id, + task_id, + action_label, addon_name, addon_version, + form_data, ) def get_action_config_values( diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 70ba69d960..d2b8e432f7 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -231,27 +231,11 @@ class ActionsModel: def trigger_action( self, - action_label, - acton_type, identifier, project_name, folder_id, task_id, - addon_name, - addon_version, ): - if acton_type == "webaction": - self._trigger_webaction( - action_label, - identifier, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ) - return - selection = self._prepare_selection(project_name, folder_id, task_id) failed = False error_message = None @@ -285,6 +269,38 @@ class ActionsModel: } ) + def trigger_webaction( + self, + identifier, + project_name, + folder_id, + task_id, + action_label, + addon_name, + addon_version, + form_data, + ): + entity_type = None + entity_ids = [] + if task_id: + entity_type = "task" + entity_ids.append(task_id) + elif folder_id: + entity_type = "folder" + entity_ids.append(folder_id) + + query = { + "addonName": addon_name, + "addonVersion": addon_version, + "identifier": identifier, + "variant": self._variant, + } + url = f"actions/execute?{urlencode(query)}" + context = { + "projectName": project_name, + "entityType": entity_type, + "entityIds": entity_ids, + } def get_action_config_values( self, identifier, diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 396859f3bf..65f6a810d1 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -466,16 +466,13 @@ class ActionsWidget(QtWidgets.QWidget): addon_name = index.data(ACTION_ADDON_NAME_ROLE) addon_version = index.data(ACTION_ADDON_VERSION_ROLE) - self._controller.trigger_action( - action_label, - action_type, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ) + args = [action_id, project_name, folder_id, task_id] + if action_type == "webaction": + args.extend([action_label, addon_name, addon_version]) + self._controller.trigger_webaction(*args) + else: + self._controller.trigger_action(*args) + self._start_animation(index) self._start_animation(index) diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index aa336108ed..b814ed9467 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -128,6 +128,10 @@ class LauncherWindow(QtWidgets.QWidget): "action.trigger.finished", self._on_action_trigger_finished, ) + controller.register_event_callback( + "webaction.trigger.started", + self._on_webaction_trigger_started, + ) self._controller = controller @@ -223,6 +227,9 @@ class LauncherWindow(QtWidgets.QWidget): return self._echo("Failed: {}".format(event["error_message"])) + def _on_webaction_trigger_started(self, event): + self._echo("Running webaction: {}".format(event["full_label"])) + def _is_page_slide_anim_running(self): return ( self._page_slide_anim.state() == QtCore.QAbstractAnimation.Running From 83386806c7d98c13dc004051bba07c56ed7d2f0e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 14:05:18 +0200 Subject: [PATCH 326/626] basic implementation of webactions handling --- .../tools/launcher/models/actions.py | 252 ++++++++++-------- .../tools/launcher/ui/actions_widget.py | 20 ++ client/ayon_core/tools/launcher/ui/window.py | 20 ++ 3 files changed, 178 insertions(+), 114 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index d2b8e432f7..0d23dc53d5 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,6 +1,9 @@ import os import copy +import webbrowser +from dataclasses import dataclass, asdict from urllib.parse import urlencode +from typing import Any, Optional import ayon_api @@ -20,38 +23,6 @@ from ayon_core.pipeline.actions import ( ) -# class Action: -# def __init__(self, label, icon=None, identifier=None): -# self._label = label -# self._icon = icon -# self._callbacks = [] -# self._identifier = identifier or uuid.uuid4().hex -# self._checked = True -# self._checkable = False -# -# def set_checked(self, checked): -# self._checked = checked -# -# def set_checkable(self, checkable): -# self._checkable = checkable -# -# def set_label(self, label): -# self._label = label -# -# def add_callback(self, callback): -# self._callbacks = callback -# -# -# class Menu: -# def __init__(self, label, icon=None): -# self.label = label -# self.icon = icon -# self._actions = [] -# -# def add_action(self, action): -# self._actions.append(action) - - class ActionItem: """Item representing single action to trigger. @@ -128,6 +99,38 @@ class ActionItem: return cls(**data) +@dataclass +class WebactionForm: + fields: list[dict[str, Any]] + title: str + submit_label: str + submit_icon: str + cancel_label: str + cancel_icon: str + + +@dataclass +class WebactionResponse: + response_type: str + success: bool + message: Optional[str] = None + clipboard_text: Optional[str] = None + form: Optional[WebactionForm] = None + error_message: Optional[str] = None + + def to_data(self): + return asdict(self) + + @classmethod + def from_data(cls, data): + data = data.copy() + form = data["form"] + if form: + data["form"] = WebactionForm(**form) + + return cls(**data) + + def get_action_icon(action): """Get action icon info. @@ -301,6 +304,53 @@ class ActionsModel: "entityType": entity_type, "entityIds": entity_ids, } + if form_data is not None: + context["formData"] = form_data + + try: + self._controller.emit_event( + "webaction.trigger.started", + { + "identifier": identifier, + "full_label": action_label, + } + ) + + conn = ayon_api.get_server_api_connection() + # Add 'referer' header to the request + # - ayon-api 1.1.1 adds the value to the header automatically + headers = conn.get_headers() + if "referer" in headers: + headers = None + else: + headers["referer"] = conn.get_base_url() + response = ayon_api.raw_post(url, headers=headers, json=context) + response.raise_for_status() + handle_response = self._handle_webaction_response(response.data) + + except Exception: + self.log.warning("Action trigger failed.", exc_info=True) + handle_response = WebactionResponse( + "unknown", + False, + error_message="Failed to trigger webaction.", + ) + + data = handle_response.to_data() + data.update({ + "identifier": identifier, + "action_label": action_label, + "project_name": project_name, + "folder_id": folder_id, + "task_id": task_id, + "addon_name": addon_name, + "addon_version": addon_version, + }) + self._controller.emit_event( + "webaction.trigger.finished", + data, + ) + def get_action_config_values( self, identifier, @@ -444,13 +494,18 @@ class ActionsModel: icon["type"] = "ayon_url" config_fields = action.get("configFields") or [] + variant_label = action["label"] + group_label = action.get("groupLabel") + if not group_label: + group_label = variant_label + variant_label = None action_items.append(ActionItem( "webaction", action["identifier"], + group_label, + variant_label, # action["category"], - action["label"], - None, icon, action["order"], action["addonName"], @@ -459,97 +514,66 @@ class ActionsModel: )) cache.update_data(action_items) - return cache.get_data() - def _trigger_webaction( - self, - action_label, - identifier, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ): - entity_type = None - entity_ids = [] - if task_id: - entity_type = "task" - entity_ids.append(task_id) - elif folder_id: - entity_type = "folder" - entity_ids.append(folder_id) - - query = { - "addonName": addon_name, - "addonVersion": addon_version, - "identifier": identifier, - "variant": self._variant, - } - url = f"actions/execute?{urlencode(query)}" - context = { - "projectName": project_name, - "entityType": entity_type, - "entityIds": entity_ids, - } - - failed = False - error_message = None - try: - self._controller.emit_event( - "action.trigger.started", - { - "identifier": identifier, - "full_label": action_label, - } - ) - - conn = ayon_api.get_server_api_connection() - headers = conn.get_headers() - headers["referer"] = conn.get_base_url() - response = ayon_api.raw_post(url, headers=headers, json=context) - response.raise_for_status() - data = response.data - if data["success"] is True: - self._handle_webaction_response(data) - else: - error_message = data["message"] - failed = True - - except Exception as exc: - self.log.warning("Action trigger failed.", exc_info=True) - failed = True - error_message = str(exc) - - self._controller.emit_event( - "action.trigger.finished", - { - "identifier": identifier, - "failed": failed, - "error_message": error_message, - "full_label": action_label, - } - ) - - def _handle_webaction_response(self, data): + def _handle_webaction_response(self, data) -> WebactionResponse: response_type = data["type"] + # Backwards compatibility -> 'server' type is not available since + # AYON backend 1.8.3 if response_type == "server": - raise Exception( - "Please use AYON web UI to run the action." + return WebactionResponse( + response_type, + False, + error_message="Please use AYON web UI to run the action.", ) - if response_type == "launcher": + payload = data.get("payload") or {} + + # TODO handle 'extra_download' + download_uri = payload.get("extra_download") + if download_uri is not None: + # TODO check if uri is relative or absolute + webbrowser.open_new_tab(download_uri) + + response = WebactionResponse( + response_type, + data["success"], + data.get("message"), + payload.get("extra_clipboard"), + ) + if response_type == "simple": + pass + + elif response_type == "redirect": + # NOTE unused 'newTab' key because we always have to + # open new tab from desktop app. + if not webbrowser.open_new_tab(payload["uri"]): + payload.error_message = "Failed to open web browser." + + elif response_type == "form": + response.form = payload["form"] + + elif response_type == "launcher": # Run AYON launcher process with uri in arguments # NOTE This does pass environment variables of current process # to the subprocess. # NOTE We could 'take action' directly and use the arguments here - run_detached_ayon_launcher_process(data["uri"]) - return + if payload is not None: + uri = payload["uri"] + else: + uri = data["uri"] + run_detached_ayon_launcher_process(uri) - raise Exception( - "Unknown webaction response type '{response_type}'" - ) + elif response_type in ("query", "navigate"): + response.error_message = ( + "Please use AYON web UI to run the action." + ) + + else: + self.log.warning(f"Unknown webaction response type '{response_type}'") + response.error_message = "Unknown webaction response type." + + return response def _get_discovered_action_classes(self): if self._discovered_actions is None: diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 65f6a810d1..c7d373bde8 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -402,6 +402,26 @@ class ActionsWidget(QtWidgets.QWidget): def refresh(self): self._model.refresh() + def handle_webaction_form_event(self, event): + # NOTE The 'ActionsWidget' should be responsible for handling this + # but because we're showing messages to user it is handled by window + identifier = event["identifier"] + dialog = self._create_config_dialog(event["form"]) + result = dialog.exec_() + if result == QtWidgets.QDialog.Rejected: + return + form_data = dialog.get_values() + self._controller.trigger_webaction( + identifier, + event["project_name"], + event["folder_id"], + event["task_id"], + event["action_label"], + event["addon_name"], + event["addon_version"], + form_data, + ) + def _set_row_height(self, rows): self.setMinimumHeight(rows * 75) diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index b814ed9467..2b27bfbd50 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -132,6 +132,10 @@ class LauncherWindow(QtWidgets.QWidget): "webaction.trigger.started", self._on_webaction_trigger_started, ) + controller.register_event_callback( + "webaction.trigger.finished", + self._on_webaction_trigger_finished, + ) self._controller = controller @@ -230,6 +234,22 @@ class LauncherWindow(QtWidgets.QWidget): def _on_webaction_trigger_started(self, event): self._echo("Running webaction: {}".format(event["full_label"])) + def _on_webaction_trigger_finished(self, event): + clipboard_text = event["clipboard_text"] + if clipboard_text: + clipboard = QtWidgets.QApplication.clipboard() + clipboard.setText(filled_source) + + # TODO use toast messages + if event["message"]: + self._echo(event["message"]) + + if event["error_message"]: + self._echo(event["message"]) + + if event["form"]: + self._actions_widget.handle_webaction_form_event(event) + def _is_page_slide_anim_running(self): return ( self._page_slide_anim.state() == QtCore.QAbstractAnimation.Running From c7526b590f74687ebc877d5c47247def04900714 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 14:07:40 +0200 Subject: [PATCH 327/626] revert dialog conditions --- client/ayon_core/tools/launcher/ui/actions_widget.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index c7d373bde8..5fb6441ffb 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -408,7 +408,7 @@ class ActionsWidget(QtWidgets.QWidget): identifier = event["identifier"] dialog = self._create_config_dialog(event["form"]) result = dialog.exec_() - if result == QtWidgets.QDialog.Rejected: + if result != QtWidgets.QDialog.Accepted : return form_data = dialog.get_values() self._controller.trigger_webaction( @@ -539,7 +539,7 @@ class ActionsWidget(QtWidgets.QWidget): dialog = self._create_config_dialog(config_fields) dialog.set_values(values) result = dialog.exec_() - if result == QtWidgets.QDialog.Rejected: + if result != QtWidgets.QDialog.Accepted: return new_values = dialog.get_values() self._controller.set_action_config_values( From acd591691b4fddaaab6104d6b17cc8c4e4e65f20 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 14:15:56 +0200 Subject: [PATCH 328/626] better download uri handling --- client/ayon_core/tools/launcher/models/actions.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 0d23dc53d5..77299cf8b2 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,9 +1,9 @@ import os import copy -import webbrowser from dataclasses import dataclass, asdict -from urllib.parse import urlencode +from urllib.parse import urlencode, urlparse from typing import Any, Optional +import webbrowser import ayon_api @@ -529,10 +529,15 @@ class ActionsModel: payload = data.get("payload") or {} - # TODO handle 'extra_download' download_uri = payload.get("extra_download") if download_uri is not None: - # TODO check if uri is relative or absolute + # Find out if is relative or absolute URL + if not urlparse(download_uri).scheme: + ayon_url = ayon_api.get_base_url().rstrip("/") + path = download_uri.lstrip("/") + download_uri = f"{ayon_url}/{path}" + + # Use webbrowser to open file webbrowser.open_new_tab(download_uri) response = WebactionResponse( From 4728258a76a4dee83d779ebdc1bab4411a1f2b3f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 16:37:20 +0200 Subject: [PATCH 329/626] download image from url --- client/ayon_core/tools/utils/lib.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 4a1325dc91..6985254382 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -4,6 +4,7 @@ import io import contextlib import collections import traceback +import urllib.request from functools import partial from typing import Union, Any @@ -542,10 +543,18 @@ class _IconsCache: elif icon_type == "url": url = icon_def["url"] - icon = QtGui.QPixmap(url) + try: + content = urllib.request.urlopen(url).read() + pix = QtGui.QPixmap() + pix.loadFromData(content) + icon = QtGui.QIcon(pix) + except Exception as exc: + log.warning(f"Failed to download image '{url}'") + icon = None elif icon_type == "ayon_url": - url = ayon_api.get_base_url() + icon_def["url"] + url = icon_def["url"].lstrip("/") + url = f"{ayon_api.get_base_url()}/{url}" stream = io.BytesIO() ayon_api.download_file_to_stream(url, stream) pix = QtGui.QPixmap() From 34dcc7840b70551e83a9433169a2912e6dbc5a10 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 16:37:39 +0200 Subject: [PATCH 330/626] added more options to attribute definitions dialog --- .../ayon_core/tools/attribute_defs/dialog.py | 68 +++++++++++++++++-- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/tools/attribute_defs/dialog.py b/client/ayon_core/tools/attribute_defs/dialog.py index 53405105f5..7423d58475 100644 --- a/client/ayon_core/tools/attribute_defs/dialog.py +++ b/client/ayon_core/tools/attribute_defs/dialog.py @@ -1,22 +1,58 @@ -from qtpy import QtWidgets +from __future__ import annotations + +from typing import Optional + +from qtpy import QtWidgets, QtGui + +from ayon_core.style import load_stylesheet +from ayon_core.resources import get_ayon_icon_filepath +from ayon_core.lib import AbstractAttrDef from .widgets import AttributeDefinitionsWidget class AttributeDefinitionsDialog(QtWidgets.QDialog): - def __init__(self, attr_defs, parent=None): + def __init__( + self, + attr_defs: list[AbstractAttrDef], + title: Optional[str] = None, + submit_label: Optional[str] = None, + cancel_label: Optional[str] = None, + submit_icon: Optional[QtGui.QIcon] = None, + cancel_icon: Optional[QtGui.QIcon] = None, + parent: Optional[QtWidgets.QWidget] = None, + ): super().__init__(parent) + if title: + self.setWindowTitle(title) + + icon = QtGui.QIcon(get_ayon_icon_filepath()) + self.setWindowIcon(icon) + self.setStyleSheet(load_stylesheet()) + attrs_widget = AttributeDefinitionsWidget(attr_defs, self) + if submit_label is None: + submit_label = "OK" + + if cancel_label is None: + cancel_label = "Cancel" + btns_widget = QtWidgets.QWidget(self) - ok_btn = QtWidgets.QPushButton("OK", btns_widget) - cancel_btn = QtWidgets.QPushButton("Cancel", btns_widget) + cancel_btn = QtWidgets.QPushButton(cancel_label, btns_widget) + submit_btn = QtWidgets.QPushButton(submit_label, btns_widget) + + if submit_icon is not None: + submit_btn.setIcon(submit_icon) + + if cancel_icon is not None: + cancel_btn.setIcon(cancel_icon) btns_layout = QtWidgets.QHBoxLayout(btns_widget) btns_layout.setContentsMargins(0, 0, 0, 0) btns_layout.addStretch(1) - btns_layout.addWidget(ok_btn, 0) + btns_layout.addWidget(submit_btn, 0) btns_layout.addWidget(cancel_btn, 0) main_layout = QtWidgets.QVBoxLayout(self) @@ -24,13 +60,33 @@ class AttributeDefinitionsDialog(QtWidgets.QDialog): main_layout.addStretch(1) main_layout.addWidget(btns_widget, 0) - ok_btn.clicked.connect(self.accept) + submit_btn.clicked.connect(self.accept) cancel_btn.clicked.connect(self.reject) self._attrs_widget = attrs_widget + self._submit_btn = submit_btn + self._cancel_btn = cancel_btn def get_values(self): return self._attrs_widget.current_value() def set_values(self, values): self._attrs_widget.set_value(values) + + def set_submit_label(self, text: str): + self._submit_btn.setText(text) + + def set_submit_icon(self, icon: QtGui.QIcon): + self._submit_btn.setIcon(icon) + + def set_submit_visible(self, visible: bool): + self._submit_btn.setVisible(visible) + + def set_cancel_label(self, text: str): + self._cancel_btn.setText(text) + + def set_cancel_icon(self, icon: QtGui.QIcon): + self._cancel_btn.setIcon(icon) + + def set_cancel_visible(self, visible: bool): + self._cancel_btn.setVisible(visible) From 149c9049a2d9ceb6b7409c935e2d9be0eb637951 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:07:34 +0200 Subject: [PATCH 331/626] added markdown label --- client/ayon_core/tools/utils/__init__.py | 2 ++ client/ayon_core/tools/utils/widgets.py | 28 ++++++++++++++++++++++++ client/pyproject.toml | 1 + 3 files changed, 31 insertions(+) diff --git a/client/ayon_core/tools/utils/__init__.py b/client/ayon_core/tools/utils/__init__.py index 9206af9beb..8688430c71 100644 --- a/client/ayon_core/tools/utils/__init__.py +++ b/client/ayon_core/tools/utils/__init__.py @@ -6,6 +6,7 @@ from .widgets import ( CustomTextComboBox, PlaceholderLineEdit, PlaceholderPlainTextEdit, + MarkdownLabel, ElideLabel, HintedLineEdit, ExpandingTextEdit, @@ -91,6 +92,7 @@ __all__ = ( "CustomTextComboBox", "PlaceholderLineEdit", "PlaceholderPlainTextEdit", + "MarkdownLabel", "ElideLabel", "HintedLineEdit", "ExpandingTextEdit", diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index 0cd6d68ab3..a95f34006b 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -6,6 +6,11 @@ from qtpy import QtWidgets, QtCore, QtGui import qargparse import qtawesome +try: + import markdown +except (ImportError, SyntaxError): + markdown = None + from ayon_core.style import ( get_objected_colors, get_style_image_path, @@ -131,6 +136,29 @@ class PlaceholderPlainTextEdit(QtWidgets.QPlainTextEdit): viewport.setPalette(filter_palette) +class MarkdownLabel(QtWidgets.QLabel): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Enable word wrap by default + self.setWordWrap(True) + + self.setText(self.text()) + + def setText(self, text): + super().setText(self._md_to_html(text)) + + @staticmethod + def _md_to_html(text): + if markdown is None: + # This does add style definition to the markdown which does not + # feel natural in the UI (but still better than raw MD). + doc = QtGui.QTextDocument() + doc.setMarkdown(text) + return doc.toHtml() + return markdown.markdown(text) + + class ElideLabel(QtWidgets.QLabel): """Label which elide text. diff --git a/client/pyproject.toml b/client/pyproject.toml index edf7f57317..6416d9b8e1 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -4,6 +4,7 @@ description="AYON core addon." [tool.poetry.dependencies] python = ">=3.9.1,<3.10" +markdown = "^3.4.1" clique = "1.6.*" jsonschema = "^2.6.0" pyblish-base = "^1.8.11" From c29d14d0291e69e0b768bea198e73981cd42ff90 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:07:51 +0200 Subject: [PATCH 332/626] use markdown label for attribute definitions label --- client/ayon_core/tools/attribute_defs/widgets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/attribute_defs/widgets.py b/client/ayon_core/tools/attribute_defs/widgets.py index dbd65fd215..004a3bd921 100644 --- a/client/ayon_core/tools/attribute_defs/widgets.py +++ b/client/ayon_core/tools/attribute_defs/widgets.py @@ -22,6 +22,7 @@ from ayon_core.tools.utils import ( FocusSpinBox, FocusDoubleSpinBox, MultiSelectionComboBox, + MarkdownLabel, PlaceholderLineEdit, PlaceholderPlainTextEdit, set_style_property, @@ -350,7 +351,7 @@ class SeparatorAttrWidget(_BaseAttrDefWidget): class LabelAttrWidget(_BaseAttrDefWidget): def _ui_init(self): - input_widget = QtWidgets.QLabel(self) + input_widget = MarkdownLabel(self) label = self.attr_def.label if label: input_widget.setText(str(label)) From 27dc51a090b018fc073a692ec31de371a49635e6 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:08:08 +0200 Subject: [PATCH 333/626] enhance actions utils in loader --- client/ayon_core/tools/loader/ui/actions_utils.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/actions_utils.py b/client/ayon_core/tools/loader/ui/actions_utils.py index 5a988ef4c2..b601cd95bd 100644 --- a/client/ayon_core/tools/loader/ui/actions_utils.py +++ b/client/ayon_core/tools/loader/ui/actions_utils.py @@ -84,15 +84,17 @@ def _get_options(action, action_item, parent): if not getattr(action, "optioned", False) or not options: return {} + dialog_title = action.label + " Options" if isinstance(options[0], AbstractAttrDef): qargparse_options = False - dialog = AttributeDefinitionsDialog(options, parent) + dialog = AttributeDefinitionsDialog( + options, title=dialog_title, parent=parent + ) else: qargparse_options = True dialog = OptionDialog(parent) dialog.create(options) - - dialog.setWindowTitle(action.label + " Options") + dialog.setWindowTitle(dialog_title) if not dialog.exec_(): return None From 1a7b137f592cae963bd0096196c8bda9bfd057a9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:08:28 +0200 Subject: [PATCH 334/626] better detection of ayon url --- client/ayon_core/tools/launcher/models/actions.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 77299cf8b2..0ce51ad9ef 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -490,8 +490,9 @@ class ActionsModel: # NOTE Settings variant may be important for triggering? # - action["variant"] icon = action.get("icon") - if icon and icon["type"] == "url" and icon["url"].startswith("/"): - icon["type"] = "ayon_url" + if icon and icon["type"] == "url": + if not urlparse(icon["url"]).scheme: + icon["type"] = "ayon_url" config_fields = action.get("configFields") or [] variant_label = action["label"] From bb168a1186565fedfd93729777d04bd995987f09 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:08:45 +0200 Subject: [PATCH 335/626] actually fill form correctly --- .../tools/launcher/models/actions.py | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 0ce51ad9ef..d5a412e33a 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -557,7 +557,28 @@ class ActionsModel: payload.error_message = "Failed to open web browser." elif response_type == "form": - response.form = payload["form"] + submit_icon = payload["submit_icon"] or None + cancel_icon = payload["cancel_icon"] or None + if submit_icon: + submit_icon = { + "type": "material-symbols", + "name": submit_icon, + } + + if cancel_icon: + cancel_icon = { + "type": "material-symbols", + "name": cancel_icon, + } + + response.form = WebactionForm( + fields=payload["fields"], + title=payload["title"], + submit_label=payload["submit_label"], + cancel_label=payload["cancel_label"], + submit_icon=submit_icon, + cancel_icon=cancel_icon, + ) elif response_type == "launcher": # Run AYON launcher process with uri in arguments From 0fc29ae46fe2da9150ca934cb5e80e015b7613d8 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:09:00 +0200 Subject: [PATCH 336/626] show form correctly --- .../tools/launcher/ui/actions_widget.py | 74 ++++++++++++++++--- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 5fb6441ffb..1b8fa2c495 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -4,7 +4,6 @@ import collections from qtpy import QtWidgets, QtCore, QtGui -from ayon_core import style from ayon_core.lib import Logger from ayon_core.lib.attribute_definitions import ( UILabelDef, @@ -406,9 +405,26 @@ class ActionsWidget(QtWidgets.QWidget): # NOTE The 'ActionsWidget' should be responsible for handling this # but because we're showing messages to user it is handled by window identifier = event["identifier"] - dialog = self._create_config_dialog(event["form"]) + form = event["form"] + submit_icon = form["submit_icon"] + if submit_icon: + submit_icon = get_qt_icon(submit_icon) + + cancel_icon = form["cancel_icon"] + if cancel_icon: + cancel_icon = get_qt_icon(cancel_icon) + + dialog = self._create_attrs_dialog( + form["fields"], + form["title"], + form["submit_label"], + form["cancel_label"], + submit_icon, + cancel_icon, + ) + dialog.setMinimumSize(380, 180) result = dialog.exec_() - if result != QtWidgets.QDialog.Accepted : + if result != QtWidgets.QDialog.Accepted: return form_data = dialog.get_values() self._controller.trigger_webaction( @@ -536,7 +552,12 @@ class ActionsWidget(QtWidgets.QWidget): addon_version=index.data(ACTION_ADDON_VERSION_ROLE), ) - dialog = self._create_config_dialog(config_fields) + dialog = self._create_attrs_dialog( + config_fields, + "Action Config", + "Save", + "Cancel", + ) dialog.set_values(values) result = dialog.exec_() if result != QtWidgets.QDialog.Accepted: @@ -552,8 +573,16 @@ class ActionsWidget(QtWidgets.QWidget): values=new_values, ) - def _create_config_dialog(self, config_fields): - """Creates config widget. + def _create_attrs_dialog( + self, + config_fields, + title, + submit_label, + cancel_label, + submit_icon=None, + cancel_icon=None, + ): + """Creates attribute definitions dialog. Types: label - 'text' @@ -572,8 +601,11 @@ class ActionsWidget(QtWidgets.QWidget): field_type = config_field["type"] attr_def = None if field_type == "label": + label = config_field.get("text") + if label is None: + label = config_field["value"] attr_def = UILabelDef( - config_field["text"], key=uuid.uuid4().hex + label, key=uuid.uuid4().hex ) elif field_type == "boolean": attr_def = BoolDef( @@ -604,10 +636,10 @@ class ActionsWidget(QtWidgets.QWidget): elif field_type in ("select", "multiselect"): attr_def = EnumDef( config_field["name"], + items=config_field["options"], default=config_field["value"], label=config_field["label"], - options=config_field["options"], - multi_select=field_type == "multiselect", + multiselection=field_type == "multiselect", ) elif field_type == "hidden": attr_def = HiddenDef( @@ -623,7 +655,25 @@ class ActionsWidget(QtWidgets.QWidget): ) attr_defs.append(attr_def) - dialog = AttributeDefinitionsDialog(attr_defs, parent=self) - dialog.setWindowTitle("Action Config") - dialog.setStyleSheet(style.load_stylesheet()) + dialog = AttributeDefinitionsDialog( + attr_defs, + title=title, + parent=self, + ) + if submit_label: + dialog.set_submit_label(submit_label) + else: + dialog.set_submit_visible(False) + + if submit_icon: + dialog.set_submit_icon(submit_icon) + + if cancel_label: + dialog.set_cancel_label(cancel_label) + else: + dialog.set_cancel_visible(False) + + if cancel_icon: + dialog.set_cancel_icon(cancel_icon) + return dialog From cd635385229e0a664354b9a289dbccac93c1c3bd Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:12:59 +0200 Subject: [PATCH 337/626] fix variable name --- client/ayon_core/tools/launcher/ui/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index 2b27bfbd50..3f3e4bb1de 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -238,7 +238,7 @@ class LauncherWindow(QtWidgets.QWidget): clipboard_text = event["clipboard_text"] if clipboard_text: clipboard = QtWidgets.QApplication.clipboard() - clipboard.setText(filled_source) + clipboard.setText(clipboard_text) # TODO use toast messages if event["message"]: From d7d3d1b376b723483e78aa1ae5bedb0d24487176 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:13:53 +0200 Subject: [PATCH 338/626] log traceback --- client/ayon_core/tools/utils/lib.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 6985254382..9ee89fbf3a 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -548,8 +548,10 @@ class _IconsCache: pix = QtGui.QPixmap() pix.loadFromData(content) icon = QtGui.QIcon(pix) - except Exception as exc: - log.warning(f"Failed to download image '{url}'") + except Exception: + log.warning( + f"Failed to download image '{url}'", exc_info=True + ) icon = None elif icon_type == "ayon_url": From 6bcf514ba284bedcac25d5bd8ef9aa1c43fc5e14 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:22:21 +0200 Subject: [PATCH 339/626] add TypeError to avoid typehint issues --- client/ayon_core/tools/utils/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index a95f34006b..a19b0a8966 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -8,7 +8,7 @@ import qtawesome try: import markdown -except (ImportError, SyntaxError): +except (ImportError, SyntaxError, TypeError): markdown = None from ayon_core.style import ( From 839eecc5fd2eba723a9b736d485f17c5b69520a3 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:41:37 +0200 Subject: [PATCH 340/626] remove unused variable --- client/ayon_core/tools/attribute_defs/widgets.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/ayon_core/tools/attribute_defs/widgets.py b/client/ayon_core/tools/attribute_defs/widgets.py index 004a3bd921..1e948b2d28 100644 --- a/client/ayon_core/tools/attribute_defs/widgets.py +++ b/client/ayon_core/tools/attribute_defs/widgets.py @@ -248,12 +248,10 @@ class AttributeDefinitionsWidget(QtWidgets.QWidget): def set_value(self, value): new_value = copy.deepcopy(value) - unused_keys = set(new_value.keys()) for widget in self._widgets_by_id.values(): attr_def = widget.attr_def if attr_def.key not in new_value: continue - unused_keys.remove(attr_def.key) widget_value = new_value[attr_def.key] if widget_value is None: From 0cbdda1a5ee394508e851574e195f0d2320d0e2f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:41:51 +0200 Subject: [PATCH 341/626] store the values into variables --- .../tools/launcher/ui/actions_widget.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 1b8fa2c495..2de8808101 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -543,13 +543,18 @@ class ActionsWidget(QtWidgets.QWidget): if not config_fields: return + project_name = self._model.get_selected_project_name() + folder_id = self._model.get_selected_folder_id() + task_id = self._model.get_selected_task_id() + addon_name = index.data(ACTION_ADDON_NAME_ROLE) + addon_version = index.data(ACTION_ADDON_VERSION_ROLE) values = self._controller.get_action_config_values( action_id, - project_name=self._model.get_selected_project_name(), - folder_id=self._model.get_selected_folder_id(), - task_id=self._model.get_selected_task_id(), - addon_name=index.data(ACTION_ADDON_NAME_ROLE), - addon_version=index.data(ACTION_ADDON_VERSION_ROLE), + project_name=project_name, + folder_id=folder_id, + task_id=task_id, + addon_name=addon_name, + addon_version=addon_version, ) dialog = self._create_attrs_dialog( @@ -565,11 +570,11 @@ class ActionsWidget(QtWidgets.QWidget): new_values = dialog.get_values() self._controller.set_action_config_values( action_id, - project_name=self._model.get_selected_project_name(), - folder_id=self._model.get_selected_folder_id(), - task_id=self._model.get_selected_task_id(), - addon_name=index.data(ACTION_ADDON_NAME_ROLE), - addon_version=index.data(ACTION_ADDON_VERSION_ROLE), + project_name=project_name, + folder_id=folder_id, + task_id=task_id, + addon_name=addon_name, + addon_version=addon_version, values=new_values, ) From d5063e0042aa9118a665a84282eb72c78645518e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 7 May 2025 17:59:21 +0200 Subject: [PATCH 342/626] convert default values to correct type --- .../ayon_core/tools/launcher/ui/actions_widget.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 2de8808101..36d1a6a7e1 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -613,9 +613,13 @@ class ActionsWidget(QtWidgets.QWidget): label, key=uuid.uuid4().hex ) elif field_type == "boolean": + value = config_field["value"] + if isinstance(value, str): + value = value.lower() == "true" + attr_def = BoolDef( config_field["name"], - default=config_field["value"], + default=value, label=config_field["label"], ) elif field_type == "text": @@ -629,9 +633,14 @@ class ActionsWidget(QtWidgets.QWidget): # syntax=config_field["syntax"], ) elif field_type in ("integer", "float"): + value = config_field["value"] + if field_type == "integer": + value = int(value) + else: + value = float(value) attr_def = NumberDef( config_field["name"], - default=config_field["value"], + default=value, label=config_field["label"], decimals=0 if field_type == "integer" else 5, placeholder=config_field["placeholder"], From 93b59710b25303d105960e3ef370086f167c1b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Je=C5=BEek?= Date: Thu, 8 May 2025 17:27:52 +0200 Subject: [PATCH 343/626] Apply suggestions from code review Co-authored-by: Robin De Lillo Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../publish/collect_explicit_resolution.py | 18 +++++++++--------- server/settings/publish_plugins.py | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_explicit_resolution.py b/client/ayon_core/plugins/publish/collect_explicit_resolution.py index 1aa7147627..1a388d5487 100644 --- a/client/ayon_core/plugins/publish/collect_explicit_resolution.py +++ b/client/ayon_core/plugins/publish/collect_explicit_resolution.py @@ -50,21 +50,21 @@ class CollectExplicitResolution( dict: dictionary with width, height and pixel_aspect """ resolution_items = self._get_resolution_items() - item_values = None - # check if resolution_value is in cached items - if resolution_value in resolution_items: - item_values = resolution_items[resolution_value] + # ensure resolution_value is part of expected items + item_values = resolution_items.get(resolution_value) + # if the item is in the cache, get the values from it if item_values: - # if the item is in the cache, get the values from it return { "resolutionWidth": item_values["width"], "resolutionHeight": item_values["height"], "pixelAspect": item_values["pixel_aspect"], } - else: - raise PublishError( - f"Invalid resolution value: {resolution_value}") + + raise PublishError( + f"Invalid resolution value: {resolution_value} " + f"expected choices: {resolution_items}" + ) @classmethod def _get_resolution_items(cls): @@ -72,7 +72,7 @@ class CollectExplicitResolution( resolution_items = {} for item in cls.options: item_text = ( - f"{item['width']}x{item['height']}x{item['pixel_aspect']}") + f"{item['width']}x{item['height']} ({item['pixel_aspect']})") resolution_items[item_text] = item cls.resolution_items = resolution_items diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 7ad6c9c506..cce312c2f8 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -191,21 +191,21 @@ class ResolutionOptionsModel(BaseSettingsModel): def ensure_unique_resolution_option( - objects: Iterable[Any], field_name: str | None = None) -> None: # noqa: C901 + objects: list[Any], field_name: str | None = None) -> None: # noqa: C901 """Ensure a list of objects have unique option attributes. This function checks if the list of objects has unique 'width', 'height' and 'pixel_aspect' properties. """ - options = [] + options = set() for obj in objects: item_test_text = f"{obj.width}x{obj.height}x{obj.pixel_aspect}" - if item_test_text not in options: - options.append(item_test_text) - else: + if item_test_text in options: raise BadRequestException( f"Duplicate option '{item_test_text}'") + options.add(item_test_text) + class CollectExplicitResolutionModel(BaseSettingsModel): enabled: bool = SettingsField(True, title="Enabled") @@ -218,14 +218,14 @@ class CollectExplicitResolutionModel(BaseSettingsModel): ) options: list[ResolutionOptionsModel] = SettingsField( default_factory=list, - title="Resolution options", + title="Resolution choices", description=( - "Options to be provided in publisher attribute" + "Available resolution choices to be displayed in the publishers attribute." ) ) @validator("options") - def validate_unique_options(cls, value): + def validate_unique_resolution_options(cls, value): ensure_unique_resolution_option(value) return value From 753960ca9ace6aafe067e85a0e7384f868a999a6 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Thu, 8 May 2025 17:33:08 +0200 Subject: [PATCH 344/626] Refactors explicit resolution collection Changes the collector order to ensure correct execution. Renames the "Override Resolution" label to "Force product resolution" for clarity. Removes default resolution values from server settings. The explicit resolution is intended to be defined on the instance level, not as a global default. --- .../plugins/publish/collect_explicit_resolution.py | 4 ++-- server/settings/publish_plugins.py | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_explicit_resolution.py b/client/ayon_core/plugins/publish/collect_explicit_resolution.py index 1a388d5487..7d70271846 100644 --- a/client/ayon_core/plugins/publish/collect_explicit_resolution.py +++ b/client/ayon_core/plugins/publish/collect_explicit_resolution.py @@ -11,7 +11,7 @@ class CollectExplicitResolution( """Collect explicit user defined resolution attributes for instances""" label = "Choose Explicit Resolution" - order = pyblish.api.CollectorOrder + 0.49 + order = pyblish.api.CollectorOrder - 0.091 settings_category = "core" enabled = False @@ -99,6 +99,6 @@ class CollectExplicitResolution( "explicit_resolution", items, default="Don't override", - label="Override Resolution", + label="Force product resolution", ), ] diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index cce312c2f8..4b75fb46b6 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -1244,13 +1244,7 @@ DEFAULT_PUBLISH_VALUES = { "product_types": [ "shot" ], - "options": [ - { - "width": 2048, - "height": 1080, - "aspect_ratio": 1.5, - } - ] + "options": [] }, "ValidateEditorialAssetName": { "enabled": True, From 131b4fb61916c5ac6595a896eda975f72d67aedd Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 9 May 2025 10:32:04 +0200 Subject: [PATCH 345/626] safe key access --- .../tools/launcher/ui/actions_widget.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 36d1a6a7e1..8973b34f07 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -620,16 +620,16 @@ class ActionsWidget(QtWidgets.QWidget): attr_def = BoolDef( config_field["name"], default=value, - label=config_field["label"], + label=config_field.get("label"), ) elif field_type == "text": attr_def = TextDef( config_field["name"], default=config_field["value"], - label=config_field["label"], - placeholder=config_field["placeholder"], - multiline=config_field["multiline"], - regex=config_field["regex"], + label=config_field.get("label"), + placeholder=config_field.get("placeholder"), + multiline=config_field.get("multiline", False), + regex=config_field.get("regex"), # syntax=config_field["syntax"], ) elif field_type in ("integer", "float"): @@ -641,9 +641,9 @@ class ActionsWidget(QtWidgets.QWidget): attr_def = NumberDef( config_field["name"], default=value, - label=config_field["label"], + label=config_field.get("label"), decimals=0 if field_type == "integer" else 5, - placeholder=config_field["placeholder"], + placeholder=config_field.get("placeholder"), min_value=config_field.get("min"), max_value=config_field.get("max"), ) @@ -651,8 +651,8 @@ class ActionsWidget(QtWidgets.QWidget): attr_def = EnumDef( config_field["name"], items=config_field["options"], - default=config_field["value"], - label=config_field["label"], + default=config_field.get("value"), + label=config_field.get("label"), multiselection=field_type == "multiselect", ) elif field_type == "hidden": From 824dc0cc81d30618afc0afead8c584c99be8f53a Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 9 May 2025 10:50:20 +0200 Subject: [PATCH 346/626] Improves readability of resolution display Updates the format of resolution items displayed in the publisher's attribute for better readability. Removes an unused import from server settings. --- .../ayon_core/plugins/publish/collect_explicit_resolution.py | 4 +++- server/settings/publish_plugins.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_explicit_resolution.py b/client/ayon_core/plugins/publish/collect_explicit_resolution.py index 7d70271846..3ea3d42102 100644 --- a/client/ayon_core/plugins/publish/collect_explicit_resolution.py +++ b/client/ayon_core/plugins/publish/collect_explicit_resolution.py @@ -72,7 +72,9 @@ class CollectExplicitResolution( resolution_items = {} for item in cls.options: item_text = ( - f"{item['width']}x{item['height']} ({item['pixel_aspect']})") + f"{item['width']}x{item['height']} " + f"({item['pixel_aspect']})" + ) resolution_items[item_text] = item cls.resolution_items = resolution_items diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 56c8a929b1..0d8489d8ff 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -1,4 +1,3 @@ -from collections.abc import Iterable from pydantic import validator from typing import Any @@ -221,7 +220,8 @@ class CollectExplicitResolutionModel(BaseSettingsModel): default_factory=list, title="Resolution choices", description=( - "Available resolution choices to be displayed in the publishers attribute." + "Available resolution choices to be displayed in " + "the publishers attribute." ) ) From 5f18f638d30ef445d946e75fd643c829b9dfdee4 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 9 May 2025 10:59:23 +0200 Subject: [PATCH 347/626] formatting fix --- client/ayon_core/tools/launcher/models/actions.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index d5a412e33a..ad1ea3835f 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -597,7 +597,9 @@ class ActionsModel: ) else: - self.log.warning(f"Unknown webaction response type '{response_type}'") + self.log.warning( + f"Unknown webaction response type '{response_type}'" + ) response.error_message = "Unknown webaction response type." return response From 9bf848f1a81d5f6d0ec041f5c97f7df017ddd7e2 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 9 May 2025 11:30:24 +0200 Subject: [PATCH 348/626] Create explicit_frames.txt as temp file --- client/ayon_core/plugins/publish/extract_review.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_review.py b/client/ayon_core/plugins/publish/extract_review.py index de1c785475..87208f5574 100644 --- a/client/ayon_core/plugins/publish/extract_review.py +++ b/client/ayon_core/plugins/publish/extract_review.py @@ -6,6 +6,7 @@ import shutil import subprocess from abc import ABC, abstractmethod from typing import Dict, Any, Optional +import tempfile import clique import speedcopy @@ -815,10 +816,13 @@ class ExtractReview(pyblish.api.InstancePlugin): "-i", path_to_subprocess_arg(temp_data["full_input_path"]) ]) else: - staging_dir = os.path.dirname(temp_data["full_input_path"]) - explicit_frames_path = os.path.join( - staging_dir, "explicit_frames.txt") frame_duration = 1 / temp_data["fps"] + + explicit_frames_meta = tempfile.NamedTemporaryFile( + mode="w", prefix="explicit_frames", suffix=".txt", delete=False + ) + explicit_frames_meta.close() + explicit_frames_path = explicit_frames_meta.name with open(explicit_frames_path, "w") as fp: lines = [ f"file '{path}'{os.linesep}duration {frame_duration}" From 92aa7e1ccb89103da0e7addfa5405b77fd4258b1 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 9 May 2025 11:53:15 +0200 Subject: [PATCH 349/626] Updates ayon_ocio addon version Updates the minimum compatible version of the 'ayon_ocio' addon. This ensures compatibility with the latest features and fixes in the addon. --- package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.py b/package.py index 0dad0b9792..601d703857 100644 --- a/package.py +++ b/package.py @@ -10,7 +10,7 @@ ayon_server_version = ">=1.7.6,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = { - "ayon_ocio": ">=1.2.0", + "ayon_ocio": ">=1.2.1", "harmony": ">0.4.0", "fusion": ">=0.3.3", "openrv": ">=1.0.2", From 73a45f5f6f201f5a54f47a45a4c2e1f44c4fe825 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 9 May 2025 11:59:46 +0200 Subject: [PATCH 350/626] more config fields conversion fixes --- .../tools/launcher/ui/actions_widget.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 8973b34f07..3d96b90b6e 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -606,9 +606,9 @@ class ActionsWidget(QtWidgets.QWidget): field_type = config_field["type"] attr_def = None if field_type == "label": - label = config_field.get("text") + label = config_field.get("value") if label is None: - label = config_field["value"] + label = config_field.get("text") attr_def = UILabelDef( label, key=uuid.uuid4().hex ) @@ -625,7 +625,7 @@ class ActionsWidget(QtWidgets.QWidget): elif field_type == "text": attr_def = TextDef( config_field["name"], - default=config_field["value"], + default=config_field.get("value"), label=config_field.get("label"), placeholder=config_field.get("placeholder"), multiline=config_field.get("multiline", False), @@ -633,11 +633,12 @@ class ActionsWidget(QtWidgets.QWidget): # syntax=config_field["syntax"], ) elif field_type in ("integer", "float"): - value = config_field["value"] - if field_type == "integer": - value = int(value) - else: - value = float(value) + value = config_field.get("value") + if isinstance(value, str): + if field_type == "integer": + value = int(value) + else: + value = float(value) attr_def = NumberDef( config_field["name"], default=value, @@ -658,7 +659,7 @@ class ActionsWidget(QtWidgets.QWidget): elif field_type == "hidden": attr_def = HiddenDef( config_field["name"], - default=config_field["value"], + default=config_field.get("value"), ) if attr_def is None: From e4c5b0d0a53d2382199f4cbc92ed3785a8bb8a12 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 9 May 2025 11:59:52 +0200 Subject: [PATCH 351/626] Fixes typo in default OCIO config path Corrects a typo in the built-in OCIO config path. It appends the missing ".ocio" extension to the ACES 2.0 Studio config path, ensuring that the OCIO configuration is correctly recognized and loaded. --- server/settings/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/settings/main.py b/server/settings/main.py index a582763b4b..dd6af0a104 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -72,7 +72,7 @@ def _fallback_ocio_config_profile_types(): def _ocio_built_in_paths(): return [ { - "value": "{BUILTIN_OCIO_ROOT}/aces_2.0/studio-config-v3.0.0_aces-v2.0_ocio-v2.4", # noqa: E501 + "value": "{BUILTIN_OCIO_ROOT}/aces_2.0/studio-config-v3.0.0_aces-v2.0_ocio-v2.4.ocio", # noqa: E501 "label": "ACES 2.0 Studio (OCIO v2.4)", "description": ( "Aces 2.0 Studio OCIO config file. Requires OCIO v2.4.") From c7faefa99489fe67b3014ebed5b9f8d6e6a0092e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 9 May 2025 14:22:00 +0200 Subject: [PATCH 352/626] reverse the replacements --- .../ayon_core/pipeline/create/product_name.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/pipeline/create/product_name.py b/client/ayon_core/pipeline/create/product_name.py index 0daec8a7ad..ecffa4a340 100644 --- a/client/ayon_core/pipeline/create/product_name.py +++ b/client/ayon_core/pipeline/create/product_name.py @@ -52,15 +52,15 @@ def get_product_name_template( # TODO remove formatting keys replacement template = ( matching_profile["template"] - .replace("{task[name]}", "{task}") - .replace("{Task[name]}", "{Task}") - .replace("{TASK[NAME]}", "{TASK}") - .replace("{product[type]}", "{family}") - .replace("{Product[type]}", "{Family}") - .replace("{PRODUCT[TYPE]}", "{FAMILY}") - .replace("{folder[name]}", "{asset}") - .replace("{Folder[name]}", "{Asset}") - .replace("{FOLDER[NAME]}", "{ASSET}") + .replace("{task}", "{task[name]}") + .replace("{Task}", "{Task[name]}") + .replace("{TASK}", "{TASK[NAME]}") + .replace("{family}", "{product[type]}") + .replace("{Family}", "{Product[type]}") + .replace("{FAMILY}", "{PRODUCT[TYPE]}") + .replace("{asset}", "{folder[name]}") + .replace("{Asset}", "{Folder[name]}") + .replace("{ASSET}", "{FOLDER[NAME]}") ) # Make sure template is set (matching may have empty string) From 0d7ced6fc660facf17b3afd8136a10d25a85fb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Fri, 9 May 2025 16:44:55 +0200 Subject: [PATCH 353/626] Update client/ayon_core/plugins/publish/integrate_hero_version.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/integrate_hero_version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_hero_version.py b/client/ayon_core/plugins/publish/integrate_hero_version.py index 69864cce8a..1315c114c3 100644 --- a/client/ayon_core/plugins/publish/integrate_hero_version.py +++ b/client/ayon_core/plugins/publish/integrate_hero_version.py @@ -427,9 +427,9 @@ class IntegrateHeroVersion( with ThreadPoolExecutor(max_workers=8) as executor: futures = [ executor.submit(self.copy_file, src_path, dst_path) - for src_path, dst_path - in itertools.chain(src_to_dst_file_paths, - other_file_paths_mapping) + for src_path, dst_path in itertools.chain( + src_to_dst_file_paths, other_file_paths_mapping + ) ] as_completed_stop_and_raise_on_error(executor, futures) From ee7d045413a59ac6c9be922fee1c979d345e087d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Fri, 9 May 2025 17:15:38 +0200 Subject: [PATCH 354/626] :recycle: refactor function name and remove speedcopy fallback --- client/ayon_core/lib/file_transaction.py | 17 ++++++----------- .../plugins/publish/integrate_hero_version.py | 12 ++++-------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/client/ayon_core/lib/file_transaction.py b/client/ayon_core/lib/file_transaction.py index bf206b535c..d720ff8d30 100644 --- a/client/ayon_core/lib/file_transaction.py +++ b/client/ayon_core/lib/file_transaction.py @@ -1,18 +1,13 @@ import concurrent.futures import os import logging -import sys import errno from concurrent.futures import ThreadPoolExecutor, Future from typing import List, Optional from ayon_core.lib import create_hard_link -# this is needed until speedcopy for linux is fixed -if sys.platform == "win32": - from speedcopy import copyfile -else: - from shutil import copyfile +from speedcopy import copyfile class DuplicateDestinationError(ValueError): @@ -118,7 +113,7 @@ class FileTransaction: executor.submit(self._backup_file, dst, src) for dst, (src, _) in self._transfers.items() ] - as_completed_stop_and_raise_on_error( + wait_for_future_errors( executor, backup_futures, logger=self.log) # Submit transfer tasks @@ -126,7 +121,7 @@ class FileTransaction: executor.submit(self._transfer_file, dst, src, opts) for dst, (src, opts) in self._transfers.items() ] - as_completed_stop_and_raise_on_error( + wait_for_future_errors( executor, transfer_futures, logger=self.log) def _backup_file(self, dst, src): @@ -228,7 +223,7 @@ class FileTransaction: return src == dst -def as_completed_stop_and_raise_on_error( +def wait_for_future_errors( executor: ThreadPoolExecutor, futures: List[Future], logger: Optional[logging.Logger] = None): @@ -237,7 +232,7 @@ def as_completed_stop_and_raise_on_error( The ThreadPoolExecutor only cancels pending futures on exception but will still complete those that are running - each which also themselves could - fail. We log all exceptions, but re-raise the last exception only. + fail. We log all exceptions but re-raise the last exception only. """ if logger is None: logger = logging.getLogger(__name__) @@ -246,7 +241,7 @@ def as_completed_stop_and_raise_on_error( exception = future.exception() if exception: # As soon as an error occurs, stop executing more futures. - # Running workers however, will still complete so we also want + # Running workers, however, will still be complete, so we also want # to log those errors if any occurred on them. executor.shutdown(wait=True, cancel_futures=True) break diff --git a/client/ayon_core/plugins/publish/integrate_hero_version.py b/client/ayon_core/plugins/publish/integrate_hero_version.py index 1315c114c3..43f93da293 100644 --- a/client/ayon_core/plugins/publish/integrate_hero_version.py +++ b/client/ayon_core/plugins/publish/integrate_hero_version.py @@ -3,13 +3,9 @@ import copy import errno import itertools import shutil -import sys from concurrent.futures import ThreadPoolExecutor -# this is needed until speedcopy for linux is fixed -if sys.platform == "win32": - from speedcopy import copyfile -else: - from shutil import copyfile + +from speedcopy import copyfile import clique import pyblish.api @@ -21,7 +17,7 @@ from ayon_api.operations import ( from ayon_api.utils import create_entity_id from ayon_core.lib import create_hard_link, source_hash -from ayon_core.lib.file_transaction import as_completed_stop_and_raise_on_error +from ayon_core.lib.file_transaction import wait_for_future_errors from ayon_core.pipeline.publish import ( get_publish_template_name, OptionalPyblishPluginMixin, @@ -431,7 +427,7 @@ class IntegrateHeroVersion( src_to_dst_file_paths, other_file_paths_mapping ) ] - as_completed_stop_and_raise_on_error(executor, futures) + wait_for_future_errors(executor, futures) # Update prepared representation etity data with files # and integrate it to server. From 57b808e92477042a2caef41517dbd2284669c0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Je=C5=BEek?= Date: Mon, 12 May 2025 13:46:54 +0200 Subject: [PATCH 355/626] Apply suggestions from code review Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../plugins/publish/extract_thumbnail.py | 53 +++++++++---------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index e5108444f7..3626c5f381 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -497,7 +497,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # For very short videos, just use the first frame # Calculate seek position safely - seek_position = 0 + seek_position = 0.0 # Only use timestamp calculation for videos longer than 0.1 seconds if duration > 0.1: seek_position = duration * self.duration_split @@ -539,36 +539,31 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): self.log.debug( "Thumbnail created: {}".format(output_thumb_file_path)) return output_thumb_file_path - else: - self.log.warning( - "Output file was not created or is empty: {}".format( - output_thumb_file_path)) - - # Fallback to extracting the first frame without seeking - if "-ss" in cmd_args: - self.log.debug("Trying fallback without seeking") - # Remove -ss and its value - ss_index = cmd_args.index("-ss") - cmd_args.pop(ss_index) # Remove -ss - cmd_args.pop(ss_index) # Remove the timestamp value - - # Create new command and try again - cmd = get_ffmpeg_tool_args("ffmpeg", *cmd_args) - self.log.debug("Fallback command: {}".format( - " ".join(cmd))) - run_subprocess(cmd, logger=self.log) - - if ( - os.path.exists(output_thumb_file_path) - and os.path.getsize(output_thumb_file_path) > 0 - ): - self.log.debug( - "Fallback thumbnail created: {}".format( - output_thumb_file_path) - ) - return output_thumb_file_path + self.log.warning("Output file was not created or is empty") + # Try to create thumbnail without offset + # - skip if offset did not happen + if "-ss" not in cmd_args: return None + + self.log.debug("Trying fallback without offset") + # Remove -ss and its value + ss_index = cmd_args.index("-ss") + cmd_args.pop(ss_index) # Remove -ss + cmd_args.pop(ss_index) # Remove the timestamp value + + # Create new command and try again + cmd = get_ffmpeg_tool_args("ffmpeg", *cmd_args) + self.log.debug("Fallback command: {}".format(" ".join(cmd))) + run_subprocess(cmd, logger=self.log) + + if ( + os.path.exists(output_thumb_file_path) + and os.path.getsize(output_thumb_file_path) > 0 + ): + self.log.debug(f"Fallback thumbnail created") + return output_thumb_file_path + return None except RuntimeError as error: self.log.warning( "Failed intermediate thumb source using ffmpeg: {}".format( From fe3995f07de627e9866e913b1054290c10d24847 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 12 May 2025 13:56:43 +0200 Subject: [PATCH 356/626] Applied suggestions from @iLLicit Simplifies the ffmpeg command construction by moving the seek position argument to the beginning of the command list if a seek position is specified, leading to a clearer and more maintainable structure. This also ensures that the output path is always the last argument passed to ffmpeg. --- .../plugins/publish/extract_thumbnail.py | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 3626c5f381..9f58be7d94 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -503,20 +503,19 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): seek_position = duration * self.duration_split # Build command args - cmd_args = [ - "-y", + cmd_args = [] + if seek_position > 0.0: + cmd_args.extend(["--ss", str(seek_position)]) + + # Add generic ffmpeg commands + cmd_args.extend([ "-i", video_file_path, "-analyzeduration", max_int, "-probesize", max_int, - ] - - # Only add -ss if we're seeking to a specific position - if seek_position > 0: - cmd_args.insert(1, "-ss") - cmd_args.insert(2, str(seek_position)) - - # Ensure we extract exactly one frame - cmd_args.extend(["-frames:v", "1"]) + "-y", + "-frames:v", "1", + output_thumb_file_path + ]) # add output file path cmd_args.append(output_thumb_file_path) From f0be8cd87704fb82ff946b50dde8418a88a95f5d Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 12 May 2025 13:56:43 +0200 Subject: [PATCH 357/626] Applied suggestions from @iLLiCiTiT Simplifies the ffmpeg command construction by moving the seek position argument to the beginning of the command list if a seek position is specified, leading to a clearer and more maintainable structure. This also ensures that the output path is always the last argument passed to ffmpeg. --- .../plugins/publish/extract_thumbnail.py | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 3626c5f381..9f58be7d94 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -503,20 +503,19 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): seek_position = duration * self.duration_split # Build command args - cmd_args = [ - "-y", + cmd_args = [] + if seek_position > 0.0: + cmd_args.extend(["--ss", str(seek_position)]) + + # Add generic ffmpeg commands + cmd_args.extend([ "-i", video_file_path, "-analyzeduration", max_int, "-probesize", max_int, - ] - - # Only add -ss if we're seeking to a specific position - if seek_position > 0: - cmd_args.insert(1, "-ss") - cmd_args.insert(2, str(seek_position)) - - # Ensure we extract exactly one frame - cmd_args.extend(["-frames:v", "1"]) + "-y", + "-frames:v", "1", + output_thumb_file_path + ]) # add output file path cmd_args.append(output_thumb_file_path) From 9791fda4f6a4e8b898227700f9df4a119845c97b Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 12 May 2025 14:02:45 +0200 Subject: [PATCH 358/626] Applied suggestions from @iLLiCiTiT Ensures that any generated thumbnail files that are empty are removed to prevent issues with subsequent processing or storage. --- client/ayon_core/plugins/publish/extract_thumbnail.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 9f58be7d94..4b93b6514e 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -569,6 +569,13 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): error) ) return None + finally: + # Remove output file if is empty + if ( + os.path.exists(output_thumb_file_path) + and os.path.getsize(output_thumb_file_path) == 0 + ): + os.remove(output_thumb_file_path) def _get_resolution_arg( self, From 2ac35d6dd8021c892c6c664b59066d29a9a950ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Je=C5=BEek?= Date: Mon, 12 May 2025 14:57:42 +0200 Subject: [PATCH 359/626] Apply suggestions from code review Co-authored-by: Robin De Lillo --- client/ayon_core/plugins/publish/extract_otio_review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_otio_review.py b/client/ayon_core/plugins/publish/extract_otio_review.py index 908d78ca0d..f217be551c 100644 --- a/client/ayon_core/plugins/publish/extract_otio_review.py +++ b/client/ayon_core/plugins/publish/extract_otio_review.py @@ -474,7 +474,6 @@ class ExtractOTIOReview( command.extend([ "-start_number", str(in_frame_start), - "-compression_level", "5", "-framerate", str(sequence_fps), "-i", input_path ]) @@ -513,7 +512,8 @@ class ExtractOTIOReview( if video or sequence: command.extend([ - "-vf", f"scale={self.to_width}:{self.to_height}:flags=lanczos" + "-vf", f"scale={self.to_width}:{self.to_height}:flags=lanczos", + "-compression_level", "5", ]) # add output attributes From ce40d020d9a0c51f86066401e267ad3961fed91f Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 12 May 2025 15:38:14 +0200 Subject: [PATCH 360/626] Updates image format to png and adds scaling Updates the image format for review outputs to PNG, adds scaling and compression to the ffmpeg calls, and includes pixel format specification for better compatibility and quality. --- .../editorial/test_extract_otio_review.py | 82 +++++++++++-------- 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py index 45191a2c53..a46ea149d7 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py +++ b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py @@ -103,17 +103,18 @@ def test_image_sequence_with_embedded_tc_and_handles_out_of_range(): # 10 head black handles generated from gap (991-1000) "/path/to/ffmpeg -t 0.4166666666666667 -r 24.0 -f lavfi -i " "color=c=black:s=1280x720 -tune stillimage -start_number 991 " - "C:/result/output.%04d.jpg", + "-pix_fmt rgba C:/result/output.%04d.png", # 10 tail black handles generated from gap (1102-1111) "/path/to/ffmpeg -t 0.4166666666666667 -r 24.0 -f lavfi -i " "color=c=black:s=1280x720 -tune stillimage -start_number 1102 " - "C:/result/output.%04d.jpg", + "-pix_fmt rgba C:/result/output.%04d.png", # Report from source exr (1001-1101) with enforce framerate "/path/to/ffmpeg -start_number 1000 -framerate 24.0 -i " - f"C:\\exr_embedded_tc{os.sep}output.%04d.exr -start_number 1001 " - "C:/result/output.%04d.jpg" + f"C:\\exr_embedded_tc{os.sep}output.%04d.exr " + "-vf scale=1280:720:flags=lanczos -compression_level 5 " + "-start_number 1001 -pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -130,20 +131,22 @@ def test_image_sequence_and_handles_out_of_range(): expected = [ # 5 head black frames generated from gap (991-995) - "/path/to/ffmpeg -t 0.2 -r 25.0 -f lavfi -i color=c=black:s=1280x720" - " -tune stillimage -start_number 991 C:/result/output.%04d.jpg", + "/path/to/ffmpeg -t 0.2 -r 25.0 -f lavfi -i color=c=black:s=1280x720 " + "-tune stillimage -start_number 991 -pix_fmt rgba " + "C:/result/output.%04d.png", # 9 tail back frames generated from gap (1097-1105) - "/path/to/ffmpeg -t 0.36 -r 25.0 -f lavfi -i color=c=black:s=1280x720" - " -tune stillimage -start_number 1097 C:/result/output.%04d.jpg", + "/path/to/ffmpeg -t 0.36 -r 25.0 -f lavfi -i color=c=black:s=1280x720 " + "-tune stillimage -start_number 1097 -pix_fmt rgba C:/result/output.%04d.png", # Report from source tiff (996-1096) # 996-1000 = additional 5 head frames # 1001-1095 = source range conformed to 25fps # 1096-1096 = additional 1 tail frames "/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i " - f"C:\\tif_seq{os.sep}output.%04d.tif -start_number 996" - f" C:/result/output.%04d.jpg" + f"C:\\tif_seq{os.sep}output.%04d.tif " + "-vf scale=1280:720:flags=lanczos -compression_level 5 -start_number 996 " + "-pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -164,7 +167,7 @@ def test_movie_with_embedded_tc_no_gap_handles(): # - duration = 68fr (source) + 20fr (handles) = 88frames = 3.666s "/path/to/ffmpeg -ss 0.16666666666666666 -t 3.6666666666666665 " "-i C:\\data\\qt_embedded_tc.mov -start_number 991 " - "C:/result/output.%04d.jpg" + "-pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -181,12 +184,12 @@ def test_short_movie_head_gap_handles(): expected = [ # 10 head black frames generated from gap (991-1000) "/path/to/ffmpeg -t 0.4 -r 25.0 -f lavfi -i color=c=black:s=1280x720" - " -tune stillimage -start_number 991 C:/result/output.%04d.jpg", + " -tune stillimage -start_number 991 -pix_fmt rgba C:/result/output.%04d.png", # source range + 10 tail frames # duration = 50fr (source) + 10fr (tail handle) = 60 fr = 2.4s "/path/to/ffmpeg -ss 0.0 -t 2.4 -i C:\\data\\movie.mp4" - " -start_number 1001 C:/result/output.%04d.jpg" + " -start_number 1001 -pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -204,13 +207,13 @@ def test_short_movie_tail_gap_handles(): # 10 tail black frames generated from gap (1067-1076) "/path/to/ffmpeg -t 0.4166666666666667 -r 24.0 -f lavfi -i " "color=c=black:s=1280x720 -tune stillimage -start_number 1067 " - "C:/result/output.%04d.jpg", + "-pix_fmt rgba C:/result/output.%04d.png", # 10 head frames + source range # duration = 10fr (head handle) + 66fr (source) = 76fr = 3.16s "/path/to/ffmpeg -ss 1.0416666666666667 -t 3.1666666666666665 -i " "C:\\data\\qt_no_tc_24fps.mov -start_number 991" - " C:/result/output.%04d.jpg" + " -pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -239,62 +242,75 @@ def test_multiple_review_clips_no_gap(): # 10 head black frames generated from gap (991-1000) '/path/to/ffmpeg -t 0.4 -r 25.0 -f lavfi' ' -i color=c=black:s=1280x720 -tune ' - 'stillimage -start_number 991 C:/result/output.%04d.jpg', + 'stillimage -start_number 991 -pix_fmt rgba C:/result/output.%04d.png', # Alternance 25fps tiff sequence and 24fps exr sequence # for 100 frames each '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1001 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1001 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 24.0 -i ' f'C:\\with_tc{os.sep}output.%04d.exr ' - '-start_number 1102 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1102 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1198 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1198 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 24.0 -i ' f'C:\\with_tc{os.sep}output.%04d.exr ' - '-start_number 1299 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1299 -pix_fmt rgba C:/result/output.%04d.png', # Repeated 25fps tiff sequence multiple times till the end '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1395 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1395 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1496 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1496 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1597 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1597 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1698 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1698 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1799 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1799 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 1900 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1900 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 2001 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 2001 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 2102 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 2102 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i ' f'C:\\no_tc{os.sep}output.%04d.tif ' - '-start_number 2203 C:/result/output.%04d.jpg' + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 2203 -pix_fmt rgba C:/result/output.%04d.png' ] assert calls == expected @@ -323,15 +339,17 @@ def test_multiple_review_clips_with_gap(): # Gap on review track (12 frames) '/path/to/ffmpeg -t 0.5 -r 24.0 -f lavfi' ' -i color=c=black:s=1280x720 -tune ' - 'stillimage -start_number 991 C:/result/output.%04d.jpg', + 'stillimage -start_number 991 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 24.0 -i ' f'C:\\with_tc{os.sep}output.%04d.exr ' - '-start_number 1003 C:/result/output.%04d.jpg', + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1003 -pix_fmt rgba C:/result/output.%04d.png', '/path/to/ffmpeg -start_number 1000 -framerate 24.0 -i ' f'C:\\with_tc{os.sep}output.%04d.exr ' - '-start_number 1091 C:/result/output.%04d.jpg' + '-vf scale=1280:720:flags=lanczos -compression_level 5 ' + '-start_number 1091 -pix_fmt rgba C:/result/output.%04d.png' ] assert calls == expected From 9137d1c0bb7336a0d849f5488d30531aa16372b7 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 12 May 2025 15:50:06 +0200 Subject: [PATCH 361/626] Adds scaling and compression to ffmpeg calls Updates the ffmpeg calls within the editorial extraction tests to include scaling and compression parameters. This ensures consistent image quality and size across different source media. --- .../editorial/test_extract_otio_review.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py index a46ea149d7..6a74df7f43 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py +++ b/tests/client/ayon_core/pipeline/editorial/test_extract_otio_review.py @@ -137,7 +137,8 @@ def test_image_sequence_and_handles_out_of_range(): # 9 tail back frames generated from gap (1097-1105) "/path/to/ffmpeg -t 0.36 -r 25.0 -f lavfi -i color=c=black:s=1280x720 " - "-tune stillimage -start_number 1097 -pix_fmt rgba C:/result/output.%04d.png", + "-tune stillimage -start_number 1097 -pix_fmt rgba " + "C:/result/output.%04d.png", # Report from source tiff (996-1096) # 996-1000 = additional 5 head frames @@ -145,8 +146,8 @@ def test_image_sequence_and_handles_out_of_range(): # 1096-1096 = additional 1 tail frames "/path/to/ffmpeg -start_number 1000 -framerate 25.0 -i " f"C:\\tif_seq{os.sep}output.%04d.tif " - "-vf scale=1280:720:flags=lanczos -compression_level 5 -start_number 996 " - "-pix_fmt rgba C:/result/output.%04d.png" + "-vf scale=1280:720:flags=lanczos -compression_level 5 " + "-start_number 996 -pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -166,8 +167,9 @@ def test_movie_with_embedded_tc_no_gap_handles(): # - first_frame = 14 src - 10 (head tail) = frame 4 = 0.1666s # - duration = 68fr (source) + 20fr (handles) = 88frames = 3.666s "/path/to/ffmpeg -ss 0.16666666666666666 -t 3.6666666666666665 " - "-i C:\\data\\qt_embedded_tc.mov -start_number 991 " - "-pix_fmt rgba C:/result/output.%04d.png" + "-i C:\\data\\qt_embedded_tc.mov -vf scale=1280:720:flags=lanczos " + "-compression_level 5 -start_number 991 -pix_fmt rgba " + "C:/result/output.%04d.png" ] assert calls == expected @@ -184,12 +186,14 @@ def test_short_movie_head_gap_handles(): expected = [ # 10 head black frames generated from gap (991-1000) "/path/to/ffmpeg -t 0.4 -r 25.0 -f lavfi -i color=c=black:s=1280x720" - " -tune stillimage -start_number 991 -pix_fmt rgba C:/result/output.%04d.png", + " -tune stillimage -start_number 991 -pix_fmt rgba " + "C:/result/output.%04d.png", # source range + 10 tail frames # duration = 50fr (source) + 10fr (tail handle) = 60 fr = 2.4s - "/path/to/ffmpeg -ss 0.0 -t 2.4 -i C:\\data\\movie.mp4" - " -start_number 1001 -pix_fmt rgba C:/result/output.%04d.png" + "/path/to/ffmpeg -ss 0.0 -t 2.4 -i C:\\data\\movie.mp4 -vf " + "scale=1280:720:flags=lanczos -compression_level 5 " + "-start_number 1001 -pix_fmt rgba C:/result/output.%04d.png" ] assert calls == expected @@ -212,8 +216,9 @@ def test_short_movie_tail_gap_handles(): # 10 head frames + source range # duration = 10fr (head handle) + 66fr (source) = 76fr = 3.16s "/path/to/ffmpeg -ss 1.0416666666666667 -t 3.1666666666666665 -i " - "C:\\data\\qt_no_tc_24fps.mov -start_number 991" - " -pix_fmt rgba C:/result/output.%04d.png" + "C:\\data\\qt_no_tc_24fps.mov -vf scale=1280:720:flags=lanczos " + "-compression_level 5 -start_number 991 -pix_fmt rgba " + "C:/result/output.%04d.png" ] assert calls == expected From 30c08ad2c26b286e320fac90ac1d61e8e7e57cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 12 May 2025 17:50:41 +0200 Subject: [PATCH 362/626] :pencil: fix some typos --- .../plugins/publish/integrate_traits.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/plugins/publish/integrate_traits.py b/client/ayon_core/plugins/publish/integrate_traits.py index ec6bdfa283..38c9ecdeb4 100644 --- a/client/ayon_core/plugins/publish/integrate_traits.py +++ b/client/ayon_core/plugins/publish/integrate_traits.py @@ -66,7 +66,7 @@ if TYPE_CHECKING: @dataclass(frozen=True) class TransferItem: - """Represents single transfer item. + """Represents a single transfer item. Source file path, destination file path, template that was used to construct the destination path, template data that was used in the @@ -93,7 +93,7 @@ class TransferItem: @staticmethod def get_size(file_path: Path) -> int: - """Get size of the file. + """Get the size of the file. Args: file_path (Path): File path. @@ -759,12 +759,12 @@ class IntegrateTraits(pyblish.api.InstancePlugin): def get_rootless_path(self, anatomy: Anatomy, path: str) -> str: r"""Get rootless variant of the path. - Returns, if possible, path without absolute portion from the root - (e.g. 'c:\' or '/opt/..'). This is basically wrapper for the + Returns, if possible, a path without an absolute portion from the root + (e.g. 'c:\' or '/opt/..'). This is basically a wrapper for the meth:`Anatomy.find_root_template_from_path` method that displays - warning if root path is not found. + a warning if the root path is not found. - This information is platform dependent and shouldn't be captured. + This information is platform-dependent and shouldn't be captured. For example:: 'c:/projects/MyProject1/Assets/publish...' @@ -955,9 +955,9 @@ class IntegrateTraits(pyblish.api.InstancePlugin): template_padding = template_item.anatomy.templates_obj.frame_padding dst_padding = max(template_padding, dst_padding) - # go through all frames in the sequence - # find their corresponding file locations - # format their template and add them to transfers + # Go through all frames in the sequence and + # find their corresponding file locations, then + # format their template and add them to transfers. for frame in frames: file_loc: FileLocation = representation.get_trait( FileLocations).get_file_location_for_frame( From 52c03faf4b31594e67a4da1bd452f8f3fc16fbd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Mon, 12 May 2025 17:51:27 +0200 Subject: [PATCH 363/626] :sparkles: add function to get traits from addons --- client/ayon_core/pipeline/traits/utils.py | 46 +++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index ef22122124..7d579a76ce 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -1,18 +1,21 @@ """Utility functions for traits.""" from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional +import pyblish.api from clique import assemble +from ayon_core.addon import AddonsManager, ITraits from ayon_core.pipeline.traits.temporal import FrameRanged if TYPE_CHECKING: from pathlib import Path + from ayon_core.pipeline.traits.trait import TraitBase def get_sequence_from_files(paths: list[Path]) -> FrameRanged: - """Get original frame range from files. + """Get the original frame range from files. Note that this cannot guess frame rate, so it's set to 25. This will also fail on paths that cannot be assembled into @@ -42,10 +45,47 @@ def get_sequence_from_files(paths: list[Path]) -> FrameRanged: first_frame = sorted_frames[0] # Get last frame for padding last_frame = sorted_frames[-1] - # Use padding from collection of length of last frame as string + # Use padding from a collection of the last frame lengths as string # padding = max(col.padding, len(str(last_frame))) return FrameRanged( frame_start=first_frame, frame_end=last_frame, frames_per_second="25.0" ) + + +def get_available_traits( + addons_manager: Optional[AddonsManager] = None +) -> Optional[list[TraitBase]]: + """Get available traits from active addons. + + Args: + addons_manager (Optional[AddonsManager]): Addons manager instance. + If not provided, a new one will be created. Within pyblish + plugins, you can use an already collected instance of + AddonsManager from context `context.data["ayonAddonsManager"]`. + + Returns: + list[TraitBase]: List of available traits. + + """ + if addons_manager is None: + # Create a new instance of AddonsManager + addons_manager = AddonsManager() + + # Get active addons + enabled_addons = addons_manager.get_enabled_addons() + traits = [] + for addon in enabled_addons: + if not issubclass(type(addon), ITraits): + # Skip addons not providing traits + continue + # Get traits from addon + addon_traits = addon.get_addon_traits() + if addon_traits: + # Add traits to a list + for trait in addon_traits: + if trait not in traits: + traits.append(trait) + + return traits From 54c10cd6dad7e78a32b5e084ec0e58e6d111b932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Tue, 13 May 2025 12:16:12 +0200 Subject: [PATCH 364/626] Update client/ayon_core/pipeline/publish/lib.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/pipeline/publish/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index 0c1029d282..85b70f11be 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -1081,7 +1081,7 @@ def has_trait_representations( False: Instance does not have trait representation. """ - return bool(instance.data.get(TRAIT_INSTANCE_KEY)) + return TRAIT_INSTANCE_KEY in instance.data def add_trait_representations( From ae9c6d4218e1c67f1ebba63d6412ef0648bf8067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Tue, 13 May 2025 12:17:01 +0200 Subject: [PATCH 365/626] Update client/ayon_core/pipeline/publish/lib.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/pipeline/publish/lib.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index 85b70f11be..f5d5d8acdb 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -1097,9 +1097,8 @@ def add_trait_representations( trait based representations to add. """ - if not has_trait_representations(instance): - instance.data[TRAIT_INSTANCE_KEY] = [] - instance.data[TRAIT_INSTANCE_KEY].extend(representations) + repres = instance.data.setdefault(TRAIT_INSTANCE_KEY, []) + repres.extend(representations) def set_trait_representations( From 0508b841d000c98611e1a03428f4fb29f9d56be3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Tue, 13 May 2025 12:20:43 +0200 Subject: [PATCH 366/626] :dog: fix ruff --- client/ayon_core/pipeline/publish/lib.py | 1 + client/ayon_core/pipeline/traits/utils.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index f5d5d8acdb..464b2b6d8f 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -33,6 +33,7 @@ if TYPE_CHECKING: TRAIT_INSTANCE_KEY: str = "representations_with_traits" + def get_template_name_profiles( project_name, project_settings=None, logger=None ): diff --git a/client/ayon_core/pipeline/traits/utils.py b/client/ayon_core/pipeline/traits/utils.py index 7d579a76ce..4cb9a643fa 100644 --- a/client/ayon_core/pipeline/traits/utils.py +++ b/client/ayon_core/pipeline/traits/utils.py @@ -3,7 +3,6 @@ from __future__ import annotations from typing import TYPE_CHECKING, Optional -import pyblish.api from clique import assemble from ayon_core.addon import AddonsManager, ITraits From d01afd073a7501152bf0a94dd81b997bde5defde Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Tue, 13 May 2025 16:06:53 +0200 Subject: [PATCH 367/626] Simplifies debug log message Removes unnecessary f-string formatting in a debug log message within the thumbnail extraction process. This simplifies the log output and improves readability. --- client/ayon_core/plugins/publish/extract_thumbnail.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 7f698d3b2b..2b08d663de 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -580,7 +580,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): os.path.exists(output_thumb_file_path) and os.path.getsize(output_thumb_file_path) > 0 ): - self.log.debug(f"Fallback thumbnail created") + self.log.debug("Fallback thumbnail created") return output_thumb_file_path return None except RuntimeError as error: From f5f145287222802155088755269866e6bb42ce11 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 14 May 2025 10:20:21 +0200 Subject: [PATCH 368/626] Fixes ffmpeg seek argument Corrects the ffmpeg command-line argument for specifying the seek position. It changes from '--ss' to '-ss', which is the correct flag. --- client/ayon_core/plugins/publish/extract_thumbnail.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/ayon_core/plugins/publish/extract_thumbnail.py b/client/ayon_core/plugins/publish/extract_thumbnail.py index 2b08d663de..69bb9007f9 100644 --- a/client/ayon_core/plugins/publish/extract_thumbnail.py +++ b/client/ayon_core/plugins/publish/extract_thumbnail.py @@ -525,7 +525,7 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): # Build command args cmd_args = [] if seek_position > 0.0: - cmd_args.extend(["--ss", str(seek_position)]) + cmd_args.extend(["-ss", str(seek_position)]) # Add generic ffmpeg commands cmd_args.extend([ @@ -537,9 +537,6 @@ class ExtractThumbnail(pyblish.api.InstancePlugin): output_thumb_file_path ]) - # add output file path - cmd_args.append(output_thumb_file_path) - # create ffmpeg command cmd = get_ffmpeg_tool_args( "ffmpeg", From 9b8229fa811777c1794063de63ea7be8866b57ba Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 14 May 2025 16:29:49 +0200 Subject: [PATCH 369/626] Fixes: Uses correct fallback data key The code now uses the correct key ("fallback_type") to access the fallback type from the configuration data, ensuring the correct config path is retrieved when no product is found. --- client/ayon_core/pipeline/colorspace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/colorspace.py b/client/ayon_core/pipeline/colorspace.py index 8c4f97ab1c..4b1d14d570 100644 --- a/client/ayon_core/pipeline/colorspace.py +++ b/client/ayon_core/pipeline/colorspace.py @@ -834,7 +834,7 @@ def _get_global_config_data( if not product_entities_by_name: # in case no product was found we need to use fallback - fallback_type = fallback_data["type"] + fallback_type = fallback_data["fallback_type"] return _get_config_path_from_profile_data( fallback_data, fallback_type, template_data ) From 4d6f5be7f5c2788825ae5d4542dd20d63dec1a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 14 May 2025 18:50:39 +0200 Subject: [PATCH 370/626] :pencil: some fixes, mostly docstrings --- client/ayon_core/pipeline/traits/README.md | 38 ++++++++--------- client/ayon_core/pipeline/traits/color.py | 4 +- client/ayon_core/pipeline/traits/content.py | 28 ++++++------- client/ayon_core/pipeline/traits/lifecycle.py | 6 +-- client/ayon_core/pipeline/traits/meta.py | 20 ++++----- .../pipeline/traits/representation.py | 29 ++++++------- client/ayon_core/pipeline/traits/temporal.py | 42 +++++++++---------- client/ayon_core/pipeline/traits/trait.py | 12 +++--- .../pipeline/traits/two_dimensional.py | 20 +++++---- .../ayon_core/pipeline/traits/test_traits.py | 24 +++++++++++ 10 files changed, 126 insertions(+), 97 deletions(-) diff --git a/client/ayon_core/pipeline/traits/README.md b/client/ayon_core/pipeline/traits/README.md index 235d8a367c..96ced3692c 100644 --- a/client/ayon_core/pipeline/traits/README.md +++ b/client/ayon_core/pipeline/traits/README.md @@ -3,12 +3,12 @@ ## Introduction The Representation is the lowest level entity, describing the concrete data chunk that -pipeline can act on. It can be specific file or just a set of metadata. Idea is that one +pipeline can act on. It can be a specific file or just a set of metadata. Idea is that one product version can have multiple representations - **Image** product can be jpeg or tiff, both formats are representation of the same source. ### Brief look into the past (and current state) -So far, representation was defined as dict-like structure: +So far, representation was defined as a dict-like structure: ```python { "name": "foo", @@ -18,9 +18,9 @@ So far, representation was defined as dict-like structure: } ``` -This is minimal form, but it can have additional keys like `frameStart`, `fps`, `resolutionWidth`, and more. Thare is also `tags` key that can hold `review`, `thumbnail`, `delete`, `toScanline` and other tag that are controlling the processing. +This is minimal form, but it can have additional keys like `frameStart`, `fps`, `resolutionWidth`, and more. Thare is also `tags` key that can hold `review`, `thumbnail`, `delete`, `toScanline` and other tags that are controlling the processing. -This will be *"translated"* to similar structure in database: +This will be *"translated"* to the similar structure in the database: ```python { @@ -57,12 +57,12 @@ There are also some assumptions and limitations - like that if `files` in the representation are list they need to be sequence of files (it can't be a bunch of unrelated files). -This system is very flexible in one way, but it lacks few very important things: +This system is very flexible in one way, but it lacks a few very important things: -- it is not clearly defined - you can add easily keys, values, tags but without +- it is not clearly defined — you can add easily keys, values, tags but without unforeseeable consequences -- it cannot handle "bundles" - multiple files that needs to be versioned together and +- it cannot handle "bundles" — multiple files that need to be versioned together and belong together - it cannot describe important information that you can't get from the file itself, or it is very expensive (like axis orientation and units from alembic files) @@ -70,7 +70,7 @@ it is very expensive (like axis orientation and units from alembic files) ### New Representation model -The idea about new representation model is obviously around solving points mentioned +The idea about a new representation model is about solving points mentioned above and also adding some benefits, like consistent IDE hints, typing, built-in validators and much more. @@ -78,7 +78,7 @@ above and also adding some benefits, like consistent IDE hints, typing, built-in The new representation is "just" a dictionary of traits. Trait can be anything provided it is based on `TraitBase`. It shouldn't really duplicate information that is -available in a moment of loading (or any usage) by other means. It should contain +available at the moment of loading (or any usage) by other means. It should contain information that couldn't be determined by the file, or the AYON context. Some of those traits are aligned with [OpenAssetIO Media Creation](https://github.com/OpenAssetIO/OpenAssetIO-MediaCreation) with hopes of maintained compatibility (it should be easy enough to convert between OpenAssetIO Traits and AYON Traits). @@ -114,18 +114,18 @@ image = rep[Image.id] ``` > [!NOTE] -> Trait and their ids - every Trait has its id as a string with +> Trait and their ids — every Trait has its id as a string with a > version appended - so **Image** has `ayon.2d.Image.v1`. This is used on > several places (you see its use above for indexing traits). When querying, > you can also omit the version at the end, and it will try its best to find > the latest possible version. More on that in [Traits]() -You can construct the `Representation` from dictionary (for example +You can construct the `Representation` from dictionary (for example, serialized as JSON) using `Representation.from_dict()`, or you can serialize `Representation` to dict to store with `Representation.traits_as_dict()`. -Every time representation is created, new id is generated. You can pass existing -id when creating new representation instance. +Every time representation is created, a new id is generated. You can pass existing +id when creating the new representation instance. ##### Equality @@ -200,7 +200,7 @@ in the representation if needed. ## Examples -Create simple image representation to be integrated by AYON: +Create a simple image representation to be integrated by AYON: ```python from pathlib import Path @@ -252,8 +252,8 @@ except MissingTraitError: print(f"resolution isn't set on {rep.name}") ``` -Accessing non-existent traits will result in exception. To test if -representation has some specific trait, you can use `.contains_trait()` method. +Accessing non-existent traits will result in an exception. To test if +the representation has some specific trait, you can use `.contains_trait()` method. You can also prepare the whole representation data as a dict and @@ -381,7 +381,7 @@ class AlembicTraitLoader(MayaLoader): You can create the representations in the same way as mentioned in the examples above. Straightforward way is to use `Representation` class and add the traits to it. Collect -traits in list and then pass them to the `Representation` constructor. You should add +traits in the list and then pass them to the `Representation` constructor. You should add the new Representation to the instance data using `add_trait_representations()` function. ```python @@ -436,8 +436,8 @@ class SomeExtractor(Extractor): ## Developer notes -Adding new trait based representations in to publish Instance and working with them is using -set of helper function defined in `ayon_core.pipeline.publish` module. These are: +Adding new trait-based representations in to the publishing Instance and working with them is using +a set of helper function defined in `ayon_core.pipeline.publish` module. These are: * add_trait_representations * get_trait_representations diff --git a/client/ayon_core/pipeline/traits/color.py b/client/ayon_core/pipeline/traits/color.py index 491131c8bc..6da7b86ae7 100644 --- a/client/ayon_core/pipeline/traits/color.py +++ b/client/ayon_core/pipeline/traits/color.py @@ -1,4 +1,4 @@ -"""Color management related traits.""" +"""Color-management-related traits.""" from __future__ import annotations from dataclasses import dataclass @@ -11,7 +11,7 @@ from .trait import TraitBase class ColorManaged(TraitBase): """Color managed trait. - Holds color management information. Can be used with Image related + Holds color management information. Can be used with Image-related traits to define color space and config. Sync with OpenAssetIO MediaCreation Traits. diff --git a/client/ayon_core/pipeline/traits/content.py b/client/ayon_core/pipeline/traits/content.py index bad90f5875..42c162d28f 100644 --- a/client/ayon_core/pipeline/traits/content.py +++ b/client/ayon_core/pipeline/traits/content.py @@ -33,7 +33,7 @@ class MimeType(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version mime_type (str): Mime type like image/jpeg. """ @@ -57,7 +57,7 @@ class LocatableContent(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version location (str): Location. is_templated (Optional[bool]): Is the location templated? Default is None. @@ -82,7 +82,7 @@ class FileLocation(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version file_path (str): File path. file_size (Optional[int]): File size in bytes. file_hash (Optional[str]): File hash. @@ -108,7 +108,7 @@ class FileLocations(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version file_paths (list of FileLocation): File locations. """ @@ -136,7 +136,7 @@ class FileLocations(TraitBase): frame: int, sequence_trait: Optional[Sequence] = None, ) -> Optional[FileLocation]: - """Get file location for a frame. + """Get a file location for a frame. This method will return the file location for a given frame. If the frame is not found in the file paths, it will return None. @@ -166,7 +166,7 @@ class FileLocations(TraitBase): """Validate the trait. This method validates the trait against others in the representation. - In particular, it checks that the sequence trait is present and if + In particular, it checks that the sequence trait is present, and if so, it will compare the frame range to the file paths. Args: @@ -187,8 +187,8 @@ class FileLocations(TraitBase): if not representation.contains_trait(Sequence) \ and not representation.contains_trait(UDIM): # we have multiple files, but it is not a sequence - # or UDIM tile set what it it then? If the files are not related - # to each other then this representation is invalid. + # or UDIM tile set what is it then? If the files are not related + # to each other, then this representation is invalid. msg = ( "Multiple file locations defined, but no Sequence " "or UDIM trait defined. If the files are not related to " @@ -254,7 +254,7 @@ class FileLocations(TraitBase): f"({len(frames_from_spec)})" ) raise TraitValidationError(self.name, msg) - # if there is frame spec on the Sequence trait + # if there is a frame spec on the Sequence trait, # we should not validate the frame range from the files. # the rest is validated by Sequence validators. return @@ -354,7 +354,7 @@ class RootlessLocation(TraitBase): """RootlessLocation trait model. RootlessLocation trait is a trait that represents a file path that is - without specific root. To obtain absolute path, the root needs to be + without a specific root. To get the absolute path, the root needs to be resolved by AYON. Rootless path can be used on multiple platforms. Example:: @@ -366,7 +366,7 @@ class RootlessLocation(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version rootless_path (str): Rootless path. """ @@ -391,7 +391,7 @@ class Compressed(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version compression_type (str): Compression type. """ @@ -431,7 +431,7 @@ class Bundle(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version items (list[list[TraitBase]]): List of representations. """ @@ -442,7 +442,7 @@ class Bundle(TraitBase): items: list[list[TraitBase]] def to_representations(self) -> Generator[Representation]: - """Convert bundle to representations. + """Convert a bundle to representations. Yields: Representation: Representation of the bundle. diff --git a/client/ayon_core/pipeline/traits/lifecycle.py b/client/ayon_core/pipeline/traits/lifecycle.py index b1b72f8fcb..4845f04779 100644 --- a/client/ayon_core/pipeline/traits/lifecycle.py +++ b/client/ayon_core/pipeline/traits/lifecycle.py @@ -15,7 +15,7 @@ class Transient(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with the version """ name: ClassVar[str] = "Transient" @@ -50,13 +50,13 @@ class Persistent(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with the version """ name: ClassVar[str] = "Persistent" description: ClassVar[str] = "Persistent Trait Model" id: ClassVar[str] = "ayon.lifecycle.Persistent.v1" - # note that this affects persistence of the trait itself, not + # Note that this affects the persistence of the trait itself, not # the representation. This is a class variable, so it is shared # among all instances of the class. persistent: bool = True diff --git a/client/ayon_core/pipeline/traits/meta.py b/client/ayon_core/pipeline/traits/meta.py index 3bf4a87a0b..26edf3ffb6 100644 --- a/client/ayon_core/pipeline/traits/meta.py +++ b/client/ayon_core/pipeline/traits/meta.py @@ -11,7 +11,7 @@ from .trait import TraitBase class Tagged(TraitBase): """Tagged trait model. - This trait can hold list of tags. + This trait can hold a list of tags. Example:: @@ -20,7 +20,7 @@ class Tagged(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version tags (List[str]): Tags. """ @@ -36,7 +36,7 @@ class TemplatePath(TraitBase): """TemplatePath trait model. This model represents a template path with formatting data. - Template path can be Anatomy template and data is used to format it. + Template path can be an Anatomy template and data is used to format it. Example:: @@ -45,7 +45,7 @@ class TemplatePath(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version template (str): Template path. data (dict[str]): Formatting data. """ @@ -72,7 +72,7 @@ class Variant(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version variant (str): Variant name. """ @@ -115,8 +115,8 @@ class KeepOriginalName(TraitBase): class SourceApplication(TraitBase): """Metadata about the source (producing) application. - This can be useful in cases, where this information is - needed but it cannot be determined from other means - like + This can be useful in cases where this information is + needed, but it cannot be determined from other means - like .txt files used for various motion tracking applications that must be interpreted by the loader. @@ -147,9 +147,9 @@ class IntendedUse(TraitBase): """Intended use of the representation. This trait describes the intended use of the representation. It - can be used in cases, where the other traits are not enough to - describe the intended use. For example txt file with tracking - points can be used as corner pin in After Effect but not in Nuke. + can be used in cases where the other traits are not enough to + describe the intended use. For example, a txt file with tracking + points can be used as a corner pin in After Effect but not in Nuke. Attributes: use (str): Intended use description. diff --git a/client/ayon_core/pipeline/traits/representation.py b/client/ayon_core/pipeline/traits/representation.py index c9604c4183..f76d5df99f 100644 --- a/client/ayon_core/pipeline/traits/representation.py +++ b/client/ayon_core/pipeline/traits/representation.py @@ -31,7 +31,7 @@ T = TypeVar("T", bound="TraitBase") def _get_version_from_id(_id: str) -> Optional[int]: - """Get version from ID. + """Get the version from ID. Args: _id (str): ID. @@ -47,15 +47,16 @@ def _get_version_from_id(_id: str) -> Optional[int]: class Representation(Generic[T]): # noqa: PLR0904 """Representation of products. - Representation defines collection of individual properties that describe - the specific "form" of the product. Each property is represented by a - trait therefore the Representation is a collection of traits. + Representation defines a collection of individual properties that describe + the specific "form" of the product. A trait represents a set of + properties therefore, the Representation is a collection of traits. It holds methods to add, remove, get, and check for the existence of a - trait in the representation. It also provides a method to get all the + trait in the representation. Note: - `PLR0904` is rule for checking number of public methods in a class. + `PLR0904` is the rule for checking the number of public methods + in a class. Arguments: name (str): Representation name. Must be unique within instance. @@ -141,7 +142,7 @@ class Representation(Generic[T]): # noqa: PLR0904 trait already exists. Defaults to False. Raises: - ValueError: If the trait ID is not provided or the trait already + ValueError: If the trait ID is not provided, or the trait already exists. """ @@ -423,7 +424,7 @@ class Representation(Generic[T]): # noqa: PLR0904 @staticmethod def _get_version_from_id(trait_id: str) -> Union[int, None]: # sourcery skip: use-named-expression - """Check if the trait has version specified. + """Check if the trait has a version specified. Args: trait_id (str): Trait ID. @@ -498,11 +499,11 @@ class Representation(Generic[T]): # noqa: PLR0904 klass = getattr(module, attr_name) if not inspect.isclass(klass): continue - # this needs to be done because of the bug? in + # This needs to be done because of the bug? In # python ABCMeta, where ``issubclass`` is not working # if it hits the GenericAlias (that is in fact # tuple[int, int]). This is added to the scope by - # ``types`` module. + # the ``types`` module. if type(klass) is GenericAlias: continue if issubclass(klass, TraitBase) \ @@ -518,8 +519,8 @@ class Representation(Generic[T]): # noqa: PLR0904 """Get the trait class with corresponding to given ID. This method will search for the trait class in all the modules except - the blacklisted modules. There is some issue in Pydantic where - ``issubclass`` is not working properly so we are excluding explicitly + the blocklisted modules. There is some issue in Pydantic where + ``issubclass`` is not working properly, so we are excluding explicit modules with offending classes. This list can be updated as needed to speed up the search. @@ -540,7 +541,7 @@ class Representation(Generic[T]): # noqa: PLR0904 for trait_class in trait_candidates: if trait_class.id == trait_id: - # we found direct match + # we found a direct match return trait_class # if we didn't find direct match, we will search for the highest @@ -670,7 +671,7 @@ class Representation(Generic[T]): # noqa: PLR0904 try: trait_class = cls.get_trait_class_by_trait_id(trait_id) except UpgradableTraitError as e: - # we found newer version of trait, we will upgrade the data + # we found a newer version of trait, we will upgrade the data if hasattr(e.trait, "upgrade"): traits.append(e.trait.upgrade(value)) else: diff --git a/client/ayon_core/pipeline/traits/temporal.py b/client/ayon_core/pipeline/traits/temporal.py index dd11daa975..9ad5424eee 100644 --- a/client/ayon_core/pipeline/traits/temporal.py +++ b/client/ayon_core/pipeline/traits/temporal.py @@ -21,7 +21,7 @@ if TYPE_CHECKING: class GapPolicy(Enum): """Gap policy enumeration. - This type defines how to handle gaps in sequence. + This type defines how to handle gaps in a sequence. Attributes: forbidden (int): Gaps are forbidden. @@ -40,7 +40,7 @@ class GapPolicy(Enum): class FrameRanged(TraitBase): """Frame ranged trait model. - Model representing a frame ranged trait. + Model representing a frame-ranged trait. Sync with OpenAssetIO MediaCreation Traits. For compatibility with OpenAssetIO, we'll need to handle different names of attributes: @@ -52,14 +52,14 @@ class FrameRanged(TraitBase): Note: frames_per_second is a string to allow various precision formats. FPS is a floating point number, but it can be also represented as a fraction (e.g. "30000/1001") or as a decimal - or even as irrational number. We need to support all these + or even as an irrational number. We need to support all these formats. To work with FPS, we'll need some helper function to convert FPS to Decimal from string. Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version frame_start (int): Frame start. frame_end (int): Frame end. frame_in (int): Frame in. @@ -90,7 +90,7 @@ class Handles(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version inclusive (bool): Handles are inclusive. frame_start_handle (int): Frame start handle. frame_end_handle (int): Frame end handle. @@ -116,7 +116,7 @@ class Sequence(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version gaps_policy (GapPolicy): Gaps policy - how to handle gaps in sequence. frame_padding (int): Frame padding. @@ -162,7 +162,7 @@ class Sequence(TraitBase): """Validate the trait.""" super().validate_trait(representation) - # if there is FileLocations trait, run validation + # if there is a FileLocations trait, run validation # on it as well with contextlib.suppress(MissingTraitError): @@ -182,9 +182,9 @@ class Sequence(TraitBase): from .content import FileLocations file_locs: FileLocations = representation.get_trait( FileLocations) - # validate if file locations on representation - # matches the frame list (if any) - # we need to extend the expected frames with Handles + # Validate if the file locations on representation + # match the frame list (if any). + # We need to extend the expected frames with Handles. frame_start = None frame_end = None handles_frame_start = None @@ -192,7 +192,7 @@ class Sequence(TraitBase): with contextlib.suppress(MissingTraitError): handles: Handles = representation.get_trait(Handles) # if handles are inclusive, they should be already - # accounted in the FrameRaged frame spec + # accounted for in the FrameRaged frame spec if not handles.inclusive: handles_frame_start = handles.frame_start_handle handles_frame_end = handles.frame_end_handle @@ -218,16 +218,16 @@ class Sequence(TraitBase): frame_end: Optional[int] = None, handles_frame_start: Optional[int] = None, handles_frame_end: Optional[int] = None) -> None: - """Validate frame list. + """Validate a frame list. This will take FileLocations trait and validate if the file locations match the frame list specification. - For example, if frame list is "1-10,20-30,40-50", then + For example, if the frame list is "1-10,20-30,40-50", then the frame numbers in the file locations should match these frames. - It will skip the validation if frame list is not provided. + It will skip the validation if the frame list is not provided. Args: file_locations (FileLocations): File locations trait. @@ -237,7 +237,7 @@ class Sequence(TraitBase): handles_frame_end (Optional[int]): Frame end handle. Raises: - TraitValidationError: If frame list does not match + TraitValidationError: If the frame list does not match the expected frames. """ @@ -341,7 +341,7 @@ class Sequence(TraitBase): def _get_collection( file_locations: FileLocations, regex: Optional[Pattern] = None) -> clique.Collection: - r"""Get collection from file locations. + r"""Get the collection from file locations. Args: file_locations (FileLocations): File locations trait. @@ -355,7 +355,7 @@ class Sequence(TraitBase): clique.Collection: Collection instance. Raises: - ValueError: If zero or multiple collections found. + ValueError: If zero or multiple of collections are found. """ patterns = [regex] if regex else None @@ -382,7 +382,7 @@ class Sequence(TraitBase): """ src_collection = Sequence._get_collection(file_locations) padding = src_collection.padding - # sometimes Clique doens't get the padding right so + # sometimes Clique doesn't get the padding right, so # we need to calculate it manually if padding == 0: padding = len(str(max(src_collection.indexes))) @@ -394,7 +394,7 @@ class Sequence(TraitBase): file_locations: FileLocations, regex: Optional[Pattern] = None, ) -> list[int]: - r"""Get frame list. + r"""Get the frame list. Args: file_locations (FileLocations): File locations trait. @@ -412,9 +412,9 @@ class Sequence(TraitBase): return list(src_collection.indexes) def get_frame_pattern(self) -> Pattern: - """Get frame regex as pattern. + """Get frame regex as a pattern. - If the regex is string, it will compile it to the pattern. + If the regex is a string, it will compile it to the pattern. Returns: Pattern: Compiled regex pattern. diff --git a/client/ayon_core/pipeline/traits/trait.py b/client/ayon_core/pipeline/traits/trait.py index b618b9907b..85f8e07630 100644 --- a/client/ayon_core/pipeline/traits/trait.py +++ b/client/ayon_core/pipeline/traits/trait.py @@ -56,7 +56,7 @@ class TraitBase(ABC): @classmethod def get_version(cls) -> Optional[int]: # sourcery skip: use-named-expression - """Get trait version from ID. + """Get a trait version from ID. This assumes Trait ID ends with `.v{version}`. If not, it will return None. @@ -71,16 +71,16 @@ class TraitBase(ABC): @classmethod def get_versionless_id(cls) -> str: - """Get trait ID without version. + """Get a trait ID without a version. Returns: - str: Trait ID without version. + str: Trait ID without a version. """ return re.sub(r"\.v\d+$", "", str(cls.id)) def as_dict(self) -> dict: - """Return trait as dictionary. + """Return a trait as a dictionary. Returns: dict: Trait as dictionary. @@ -101,8 +101,8 @@ class UpgradableTraitError(Exception, Generic[T]): """Upgradable trait version exception. This exception is raised when the trait can upgrade existing data - meant for older versions of the trait. It must implement `upgrade` - method that will take old trait data as argument to handle the upgrade. + meant for older versions of the trait. It must implement an `upgrade` + method that will take old trait data as an argument to handle the upgrade. """ trait: T diff --git a/client/ayon_core/pipeline/traits/two_dimensional.py b/client/ayon_core/pipeline/traits/two_dimensional.py index 93d7d8c86a..d94294bf74 100644 --- a/client/ayon_core/pipeline/traits/two_dimensional.py +++ b/client/ayon_core/pipeline/traits/two_dimensional.py @@ -20,7 +20,7 @@ class Image(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with version """ name: ClassVar[str] = "Image" @@ -33,12 +33,12 @@ class Image(TraitBase): class PixelBased(TraitBase): """PixelBased trait model. - Pixel related trait for image data. + The pixel-related trait for image data. Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version display_window_width (int): Width of the image display window. display_window_height (int): Height of the image display window. pixel_aspect_ratio (float): Pixel aspect ratio. @@ -87,7 +87,7 @@ class Deep(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version """ name: ClassVar[str] = "Deep" @@ -106,7 +106,7 @@ class Overscan(TraitBase): Attributes: name (str): Trait name. description (str): Trait description. - id (str): id should be namespaced trait name with version + id (str): id should be a namespaced trait name with a version left (int): Left overscan/underscan. right (int): Right overscan/underscan. top (int): Top overscan/underscan. @@ -144,8 +144,8 @@ class UDIM(TraitBase): udim: list[int] udim_regex: Optional[str] = r"(?:\.|_)(?P\d+)\.\D+\d?$" - # field validator for udim_regex - this works in pydantic model v2 but not - # with the pure data classes + # Field validator for udim_regex - this works in the pydantic model v2 + # but not with the pure data classes. @classmethod def validate_frame_regex(cls, v: Optional[str]) -> Optional[str]: """Validate udim regex. @@ -177,6 +177,8 @@ class UDIM(TraitBase): Optional[FileLocation]: File location. """ + if not self.udim_regex: + return None pattern = re.compile(self.udim_regex) for location in file_locations.file_paths: result = re.search(pattern, location.file_path.name) @@ -188,7 +190,7 @@ class UDIM(TraitBase): def get_udim_from_file_location( self, file_location: FileLocation) -> Optional[int]: - """Get UDIM from file location. + """Get UDIM from the file location. Args: file_location (FileLocation): File location. @@ -197,6 +199,8 @@ class UDIM(TraitBase): Optional[int]: UDIM value. """ + if not self.udim_regex: + return None pattern = re.compile(self.udim_regex) result = re.search(pattern, file_location.file_path.name) if result: diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index a1cd4792e9..a204c59cb7 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -378,3 +378,27 @@ def test_representation_equality() -> None: assert rep_d != rep_e # because of the trait difference assert rep_d != rep_f + +def test_get_repre_by_name(): + """Test getting representation by name.""" + rep_a = Representation(name="test_a", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + ]) + rep_b = Representation(name="test_b", traits=[ + FileLocation(file_path=Path("/path/to/file"), file_size=1024), + Image(), + PixelBased( + display_window_width=1920, + display_window_height=1080, + pixel_aspect_ratio=1.0), + Planar(planar_configuration="RGB"), + ]) + + representations = [rep_a, rep_b] + repre = next(rep for rep in representations if rep.name == "test_a") From 7a5e7a96f1aef43463c86957f93ecfee8319d602 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 16 May 2025 17:50:26 +0200 Subject: [PATCH 371/626] Fixes frame string formatting for transcoding Ensures the frame string used for transcoding includes the correct padding, based on the collection's padding attribute. This resolves issues where the output file sequence name was not correctly formatted, leading to transcoding failures. --- client/ayon_core/plugins/publish/extract_color_transcode.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/extract_color_transcode.py b/client/ayon_core/plugins/publish/extract_color_transcode.py index 6cf30857a4..1e86b91484 100644 --- a/client/ayon_core/plugins/publish/extract_color_transcode.py +++ b/client/ayon_core/plugins/publish/extract_color_transcode.py @@ -283,7 +283,11 @@ class ExtractOIIOTranscode(publish.Extractor): if collection.holes().indexes: return files_to_convert - frame_str = "{}-{}#".format(frames[0], frames[-1]) + # Get the padding from the collection + # This is the number of digits used in the frame numbers + padding = collection.padding + + frame_str = "{}-{}%0{}d".format(frames[0], frames[-1], padding) file_name = "{}{}{}".format(collection.head, frame_str, collection.tail) From 0e49ada807336dacdb88c85df5d83c3e695e3afb Mon Sep 17 00:00:00 2001 From: Ynbot Date: Wed, 21 May 2025 07:25:28 +0000 Subject: [PATCH 372/626] [Automated] Add generated package files from main --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 4fd7bde336..533862fa9a 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.2.0+dev" +__version__ = "1.3.0" diff --git a/package.py b/package.py index 601d703857..7406e70aec 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.2.0+dev" +version = "1.3.0" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index c7e2bb5000..fda22073ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.2.0+dev" +version = "1.3.0" description = "" authors = ["Ynput Team "] readme = "README.md" From 3df127ec3b57d2619fc66db79e6f5f035c815a76 Mon Sep 17 00:00:00 2001 From: Ynbot Date: Wed, 21 May 2025 07:26:06 +0000 Subject: [PATCH 373/626] [Automated] Update version in package.py for develop --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 533862fa9a..64842b5976 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.3.0" +__version__ = "1.3.0+dev" diff --git a/package.py b/package.py index 7406e70aec..32fedd859b 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.3.0" +version = "1.3.0+dev" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index fda22073ff..4034d6c0c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.3.0" +version = "1.3.0+dev" description = "" authors = ["Ynput Team "] readme = "README.md" From c020f821dca71138d48225d8cd32fa51bd8b1835 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 21 May 2025 07:27:00 +0000 Subject: [PATCH 374/626] chore(): update bug report / version --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c1e18faf55..9dbe32b018 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,7 @@ body: label: Version description: What version are you running? Look to AYON Tray options: + - 1.3.0 - 1.2.0 - 1.1.9 - 1.1.8 From f036a1ffb9c3b14e16298648e29edde40f6c5762 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 17:53:03 +0200 Subject: [PATCH 375/626] add soft dependency for applications addon --- package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/package.py b/package.py index 32fedd859b..0eb559a3d9 100644 --- a/package.py +++ b/package.py @@ -11,6 +11,7 @@ ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = { "ayon_ocio": ">=1.2.1", + "applications": ">=1.1.2", "harmony": ">0.4.0", "fusion": ">=0.3.3", "openrv": ">=1.0.2", From f35afa3a9ffd0c8f3a2eff29ea178e9b139bc6ad Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 17:53:16 +0200 Subject: [PATCH 376/626] bump required server version --- package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.py b/package.py index 0eb559a3d9..e348950571 100644 --- a/package.py +++ b/package.py @@ -6,7 +6,7 @@ client_dir = "ayon_core" plugin_for = ["ayon_server"] -ayon_server_version = ">=1.7.6,<2.0.0" +ayon_server_version = ">=1.8.4,<2.0.0" ayon_launcher_version = ">=1.0.2" ayon_required_addons = {} ayon_compatible_addons = { From 3e4a1d7118d9fae7250ea129b598390388e4fc32 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 18:25:03 +0200 Subject: [PATCH 377/626] use toast messages --- .../tools/launcher/models/actions.py | 12 ++- client/ayon_core/tools/launcher/ui/window.py | 94 ++++++++++++------- 2 files changed, 69 insertions(+), 37 deletions(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index ad1ea3835f..25335a7ecf 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,5 +1,6 @@ import os import copy +import uuid from dataclasses import dataclass, asdict from urllib.parse import urlencode, urlparse from typing import Any, Optional @@ -244,6 +245,7 @@ class ActionsModel: error_message = None action_label = identifier action_items = self._get_action_items(project_name) + trigger_id = uuid.uuid4().hex try: action = self._actions[identifier] action_item = action_items[identifier] @@ -251,6 +253,7 @@ class ActionsModel: self._controller.emit_event( "action.trigger.started", { + "trigger_id": trigger_id, "identifier": identifier, "full_label": action_label, } @@ -265,6 +268,7 @@ class ActionsModel: self._controller.emit_event( "action.trigger.finished", { + "trigger_id": trigger_id, "identifier": identifier, "failed": failed, "error_message": error_message, @@ -307,10 +311,13 @@ class ActionsModel: if form_data is not None: context["formData"] = form_data + trigger_id = uuid.uuid4().hex + failed = False try: self._controller.emit_event( "webaction.trigger.started", { + "trigger_id": trigger_id, "identifier": identifier, "full_label": action_label, } @@ -329,6 +336,7 @@ class ActionsModel: handle_response = self._handle_webaction_response(response.data) except Exception: + failed = True self.log.warning("Action trigger failed.", exc_info=True) handle_response = WebactionResponse( "unknown", @@ -338,8 +346,10 @@ class ActionsModel: data = handle_response.to_data() data.update({ + "trigger_failed": failed, + "trigger_id": trigger_id, "identifier": identifier, - "action_label": action_label, + "full_label": action_label, "project_name": project_name, "folder_id": folder_id, "task_id": task_id, diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index 3f3e4bb1de..7236e3dbf4 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -1,9 +1,9 @@ from qtpy import QtWidgets, QtCore, QtGui -from ayon_core import style -from ayon_core import resources +from ayon_core import style, resources from ayon_core.tools.launcher.control import BaseLauncherController +from ayon_core.tools.utils import MessageOverlayObject from .projects_widget import ProjectsWidget from .hierarchy_page import HierarchyPage @@ -41,6 +41,8 @@ class LauncherWindow(QtWidgets.QWidget): self._controller = controller + overlay_object = MessageOverlayObject(self) + # Main content - Pages & Actions content_body = QtWidgets.QSplitter(self) @@ -78,26 +80,18 @@ class LauncherWindow(QtWidgets.QWidget): content_body.setSizes([580, 160]) # Footer - footer_widget = QtWidgets.QWidget(self) - - # - Message label - message_label = QtWidgets.QLabel(footer_widget) - + # footer_widget = QtWidgets.QWidget(self) + # # action_history = ActionHistory(footer_widget) # action_history.setStatusTip("Show Action History") - - footer_layout = QtWidgets.QHBoxLayout(footer_widget) - footer_layout.setContentsMargins(0, 0, 0, 0) - footer_layout.addWidget(message_label, 1) + # + # footer_layout = QtWidgets.QHBoxLayout(footer_widget) + # footer_layout.setContentsMargins(0, 0, 0, 0) # footer_layout.addWidget(action_history, 0) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(content_body, 1) - layout.addWidget(footer_widget, 0) - - message_timer = QtCore.QTimer() - message_timer.setInterval(self.message_interval) - message_timer.setSingleShot(True) + # layout.addWidget(footer_widget, 0) actions_refresh_timer = QtCore.QTimer() actions_refresh_timer.setInterval(self.refresh_interval) @@ -109,7 +103,6 @@ class LauncherWindow(QtWidgets.QWidget): page_slide_anim.setEasingCurve(QtCore.QEasingCurve.OutQuad) projects_page.refreshed.connect(self._on_projects_refresh) - message_timer.timeout.connect(self._on_message_timeout) actions_refresh_timer.timeout.connect( self._on_actions_refresh_timeout) page_slide_anim.valueChanged.connect( @@ -137,6 +130,8 @@ class LauncherWindow(QtWidgets.QWidget): self._on_webaction_trigger_finished, ) + self._overlay_object = overlay_object + self._controller = controller self._is_on_projects_page = True @@ -149,11 +144,8 @@ class LauncherWindow(QtWidgets.QWidget): self._projects_page = projects_page self._hierarchy_page = hierarchy_page self._actions_widget = actions_widget - - self._message_label = message_label # self._action_history = action_history - self._message_timer = message_timer self._actions_refresh_timer = actions_refresh_timer self._page_slide_anim = page_slide_anim @@ -193,13 +185,6 @@ class LauncherWindow(QtWidgets.QWidget): else: self._refresh_on_activate = True - def _echo(self, message): - self._message_label.setText(str(message)) - self._message_timer.start() - - def _on_message_timeout(self): - self._message_label.setText("") - def _on_project_selection_change(self, event): project_name = event["project_name"] self._selected_project_name = project_name @@ -223,16 +208,38 @@ class LauncherWindow(QtWidgets.QWidget): self._hierarchy_page.refresh() self._actions_widget.refresh() + def _show_toast_message(self, message, success=True, message_id=None): + message_type = None + if not success: + message_type = "error" + + self._overlay_object.add_message( + message, message_type, message_id=message_id + ) + def _on_action_trigger_started(self, event): - self._echo("Running action: {}".format(event["full_label"])) + self._show_toast_message( + "Running action: {}".format(event["full_label"]), + message_id=event["trigger_id"], + ) def _on_action_trigger_finished(self, event): - if not event["failed"]: - return - self._echo("Failed: {}".format(event["error_message"])) + action_label = event["full_label"] + if event["failed"]: + message = f"Failed to run action: {action_label}" + else: + message = f"Action finished: {action_label}" + self._show_toast_message( + message, + not event["failed"], + message_id=event["trigger_id"], + ) def _on_webaction_trigger_started(self, event): - self._echo("Running webaction: {}".format(event["full_label"])) + self._show_toast_message( + "Running webaction: {}".format(event["full_label"]), + message_id=event["trigger_id"], + ) def _on_webaction_trigger_finished(self, event): clipboard_text = event["clipboard_text"] @@ -240,12 +247,27 @@ class LauncherWindow(QtWidgets.QWidget): clipboard = QtWidgets.QApplication.clipboard() clipboard.setText(clipboard_text) - # TODO use toast messages - if event["message"]: - self._echo(event["message"]) + action_label = event["full_label"] + # Avoid to show exception message + if event["trigger_failed"]: + self._show_toast_message( + f"Failed to run action: {action_label}", + message_id=event["trigger_id"] + ) + return + # Failed to run webaction, e.g. because of missing webaction handling + # - not reported by server if event["error_message"]: - self._echo(event["message"]) + self._show_toast_message( + event["error_message"], + success=False, + message_id=event["trigger_id"] + ) + return + + if event["message"]: + self._show_toast_message(event["message"]) if event["form"]: self._actions_widget.handle_webaction_form_event(event) From 1de2eccedb5d109f1b5d33dc6e9674d7c00128b0 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 18:27:48 +0200 Subject: [PATCH 378/626] Unified messages a little --- client/ayon_core/tools/launcher/ui/window.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index 7236e3dbf4..c17fe6e549 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -219,16 +219,16 @@ class LauncherWindow(QtWidgets.QWidget): def _on_action_trigger_started(self, event): self._show_toast_message( - "Running action: {}".format(event["full_label"]), + "Running: {}".format(event["full_label"]), message_id=event["trigger_id"], ) def _on_action_trigger_finished(self, event): action_label = event["full_label"] if event["failed"]: - message = f"Failed to run action: {action_label}" + message = f"Failed to run: {action_label}" else: - message = f"Action finished: {action_label}" + message = f"Finished: {action_label}" self._show_toast_message( message, not event["failed"], @@ -237,7 +237,7 @@ class LauncherWindow(QtWidgets.QWidget): def _on_webaction_trigger_started(self, event): self._show_toast_message( - "Running webaction: {}".format(event["full_label"]), + "Running: {}".format(event["full_label"]), message_id=event["trigger_id"], ) @@ -251,7 +251,7 @@ class LauncherWindow(QtWidgets.QWidget): # Avoid to show exception message if event["trigger_failed"]: self._show_toast_message( - f"Failed to run action: {action_label}", + f"Failed to run: {action_label}", message_id=event["trigger_id"] ) return From e971ffd09ce49dc879ed7ea9fa2a22b67a4352e5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 18:27:58 +0200 Subject: [PATCH 379/626] use success from response --- client/ayon_core/tools/launcher/ui/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/window.py b/client/ayon_core/tools/launcher/ui/window.py index c17fe6e549..7fde8518b0 100644 --- a/client/ayon_core/tools/launcher/ui/window.py +++ b/client/ayon_core/tools/launcher/ui/window.py @@ -267,7 +267,7 @@ class LauncherWindow(QtWidgets.QWidget): return if event["message"]: - self._show_toast_message(event["message"]) + self._show_toast_message(event["message"], event["success"]) if event["form"]: self._actions_widget.handle_webaction_form_event(event) From b1e4598fbd6c044a101252ee709175934b9fd64c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:35:58 +0200 Subject: [PATCH 380/626] remove duplicated animation start --- client/ayon_core/tools/launcher/ui/actions_widget.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 3d96b90b6e..fca27e3b6e 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -510,7 +510,6 @@ class ActionsWidget(QtWidgets.QWidget): self._controller.trigger_action(*args) self._start_animation(index) - self._start_animation(index) def _show_menu_on_group(self, action_id): action_items = self._model.get_group_items(action_id) From ecec0aa69d4086b5ba3d94ce84837d18c283046f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:39:11 +0200 Subject: [PATCH 381/626] use logger formatting --- client/ayon_core/tools/utils/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index 9ee89fbf3a..ecf5dc1bc5 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -550,7 +550,7 @@ class _IconsCache: icon = QtGui.QIcon(pix) except Exception: log.warning( - f"Failed to download image '{url}'", exc_info=True + f"Failed to download image '%s'", url, exc_info=True ) icon = None From 44da9f5a0d0b9cd88326af6e0121a1011b252582 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:41:53 +0200 Subject: [PATCH 382/626] add type-hints to '_prepare_ayon_launcher_env' --- client/ayon_core/lib/execute.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/lib/execute.py b/client/ayon_core/lib/execute.py index 27af3d44ca..1eb2659a11 100644 --- a/client/ayon_core/lib/execute.py +++ b/client/ayon_core/lib/execute.py @@ -1,3 +1,4 @@ +from __future__ import annotations import os import sys import subprocess @@ -201,7 +202,9 @@ def clean_envs_for_ayon_process(env=None): return env -def _prepare_ayon_launcher_env(add_sys_paths: bool, kwargs): +def _prepare_ayon_launcher_env( + add_sys_paths: bool, kwargs: dict +) -> dict[str, str]: env = kwargs.pop("env", None) # Keep env untouched if are passed and not empty if not env: From 80d32558636da39dc6245893a36b3761579e1951 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:45:33 +0200 Subject: [PATCH 383/626] fix return type --- client/ayon_core/lib/execute.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/lib/execute.py b/client/ayon_core/lib/execute.py index 1eb2659a11..c0d86ea07a 100644 --- a/client/ayon_core/lib/execute.py +++ b/client/ayon_core/lib/execute.py @@ -346,7 +346,8 @@ def run_detached_ayon_launcher_process( **kwargs (Any): Keyword arguments for subprocess.Popen. Returns: - str: Full output of subprocess concatenated stdout and stderr. + subprocess.Popen: Pointer to launched process but it is possible that + launched process is already killed (on linux). """ args = get_ayon_launcher_args(*args) From 4b1f1a95848d261ac6c7fcbbdf7d57d882baf904 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:45:39 +0200 Subject: [PATCH 384/626] add typehints --- client/ayon_core/lib/execute.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/lib/execute.py b/client/ayon_core/lib/execute.py index c0d86ea07a..7c6efde35c 100644 --- a/client/ayon_core/lib/execute.py +++ b/client/ayon_core/lib/execute.py @@ -295,8 +295,8 @@ def run_detached_process(args, **kwargs): def run_ayon_launcher_process( - *args, add_sys_paths=False, **kwargs -): + *args, add_sys_paths: bool = False, **kwargs +) -> str: """Execute AYON process with passed arguments and wait. Wrapper for 'run_process' which prepends AYON executable arguments @@ -325,8 +325,8 @@ def run_ayon_launcher_process( def run_detached_ayon_launcher_process( - *args, add_sys_paths=False, **kwargs -): + *args, add_sys_paths: bool = False, **kwargs +) -> subprocess.Popen: """Execute AYON process with passed arguments and wait. Wrapper for 'run_process' which prepends AYON executable arguments From 316c7e7e389e227010bfc8b700a398afe8a96ea8 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 21 May 2025 19:47:53 +0200 Subject: [PATCH 385/626] remove unnecessary f string --- client/ayon_core/tools/utils/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/utils/lib.py b/client/ayon_core/tools/utils/lib.py index ecf5dc1bc5..f7919a3317 100644 --- a/client/ayon_core/tools/utils/lib.py +++ b/client/ayon_core/tools/utils/lib.py @@ -550,7 +550,7 @@ class _IconsCache: icon = QtGui.QIcon(pix) except Exception: log.warning( - f"Failed to download image '%s'", url, exc_info=True + "Failed to download image '%s'", url, exc_info=True ) icon = None From 00c34602e2a4789c6e042d8485d062f2371086a3 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 21 May 2025 23:15:44 +0200 Subject: [PATCH 386/626] Add setting to define a minimum amount of characters required for a comment on every publish --- client/ayon_core/tools/publisher/abstract.py | 25 ++++++++++++ client/ayon_core/tools/publisher/control.py | 17 ++++++++- client/ayon_core/tools/publisher/window.py | 40 +++++++++++++++++++- server/settings/tools.py | 9 +++++ 4 files changed, 88 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/publisher/abstract.py b/client/ayon_core/tools/publisher/abstract.py index 4ed91813d3..6d0027d35d 100644 --- a/client/ayon_core/tools/publisher/abstract.py +++ b/client/ayon_core/tools/publisher/abstract.py @@ -1,4 +1,5 @@ from abc import ABC, abstractmethod +from dataclasses import dataclass, asdict from typing import ( Optional, Dict, @@ -28,6 +29,19 @@ if TYPE_CHECKING: from .models import CreatorItem, PublishErrorInfo, InstanceItem +@dataclass +class CommentDef: + """Comment attribute definition.""" + minimum_chars_required: int + + def to_data(self): + return asdict(self) + + @classmethod + def from_data(cls, data): + return cls(**data) + + class CardMessageTypes: standard = None info = "info" @@ -135,6 +149,17 @@ class AbstractPublisherCommon(ABC): pass + @abstractmethod + def get_comment_def(self) -> CommentDef: + """Get comment attribute definition. + + This can define how the Comment field should behave, like having + a minimum amount of required characters before being allowed to + publish. + + """ + pass + class AbstractPublisherBackend(AbstractPublisherCommon): @abstractmethod diff --git a/client/ayon_core/tools/publisher/control.py b/client/ayon_core/tools/publisher/control.py index 98fdda08cf..ef2e122692 100644 --- a/client/ayon_core/tools/publisher/control.py +++ b/client/ayon_core/tools/publisher/control.py @@ -20,7 +20,8 @@ from .models import ( from .abstract import ( AbstractPublisherBackend, AbstractPublisherFrontend, - CardMessageTypes + CardMessageTypes, + CommentDef, ) @@ -601,3 +602,17 @@ class PublisherController( def _start_publish(self, up_validation): self._publish_model.set_publish_up_validation(up_validation) self._publish_model.start_publish(wait=True) + + def get_comment_def(self) -> CommentDef: + # Take the cached settings from the Create Context + settings = self.get_create_context().get_current_project_settings() + comment_minimum_required_chars: int = ( + settings + .get("core", {}) + .get("tools", {}) + .get("publish", {}) + .get("comment_minimum_required_chars", 0) + ) + return CommentDef( + minimum_chars_required=comment_minimum_required_chars + ) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index ed5b909a55..a967aef21c 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -245,6 +245,12 @@ class PublisherWindow(QtWidgets.QDialog): show_timer.setInterval(1) show_timer.timeout.connect(self._on_show_timer) + comment_invalid_timer = QtCore.QTimer() + comment_invalid_timer.setInterval(2500) + comment_invalid_timer.timeout.connect( + self._on_comment_invalid_timeout + ) + errors_dialog_message_timer = QtCore.QTimer() errors_dialog_message_timer.setInterval(100) errors_dialog_message_timer.timeout.connect( @@ -395,6 +401,7 @@ class PublisherWindow(QtWidgets.QDialog): self._app_event_listener_installed = False self._show_timer = show_timer + self._comment_invalid_timer = comment_invalid_timer self._show_counter = 0 self._window_is_visible = False @@ -823,15 +830,44 @@ class PublisherWindow(QtWidgets.QDialog): self._controller.set_comment(self._comment_input.text()) def _on_validate_clicked(self): - if self._save_changes(False): + if self._start_publish_preflight() and self._save_changes(False): self._set_publish_comment() self._controller.validate() def _on_publish_clicked(self): - if self._save_changes(False): + if self._start_publish_preflight() and self._save_changes(False): self._set_publish_comment() self._controller.publish() + def _start_publish_preflight(self) -> bool: + # Validate comment length + comment_def = self.controller.get_comment_def() + if comment_def.minimum_chars_required: + char_count = len(self._comment_input.text()) + if char_count < comment_def.minimum_chars_required: + self._overlay_object.add_message( + "Please enter a comment of at least " + f"{comment_def.minimum_chars_required} characters", + message_type="error" + ) + self._invalidate_comment_field() + return False + return True + + def _invalidate_comment_field(self): + self._comment_invalid_timer.start() + self._comment_input.setStyleSheet( + "border-style: solid;" + "border-width: 1px;" + "border-color: #DD2020" + ) + # Set focus so user can start typing and is pointed towards the field + self._comment_input.setFocus() + + def _on_comment_invalid_timeout(self): + # Reset style + self._comment_input.setStyleSheet("") + def _set_footer_enabled(self, enabled): self._save_btn.setEnabled(True) self._reset_btn.setEnabled(True) diff --git a/server/settings/tools.py b/server/settings/tools.py index 6b07910454..2b33efaa8b 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -342,6 +342,14 @@ class CustomStagingDirProfileModel(BaseSettingsModel): class PublishToolModel(BaseSettingsModel): + comment_minimum_required_chars: int = SettingsField( + 0, + title="Publish comment minimum required characters", + description=( + "Minimum number of characters required in the comment field " + "before the publisher UI is allowed to continue publishing" + ) + ) template_name_profiles: list[PublishTemplateNameProfile] = SettingsField( default_factory=list, title="Template name profiles" @@ -570,6 +578,7 @@ DEFAULT_TOOLS_VALUES = { "product_type_filter_profiles": [] }, "publish": { + "comment_minimum_required_chars": 0, "template_name_profiles": [ { "product_types": [], From 2047e38aae273fc2106b864744000e7af60b47c8 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 21 May 2025 23:28:50 +0200 Subject: [PATCH 387/626] Access through the private member --- client/ayon_core/tools/publisher/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index a967aef21c..4932b578e2 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -841,7 +841,7 @@ class PublisherWindow(QtWidgets.QDialog): def _start_publish_preflight(self) -> bool: # Validate comment length - comment_def = self.controller.get_comment_def() + comment_def = self._controller.get_comment_def() if comment_def.minimum_chars_required: char_count = len(self._comment_input.text()) if char_count < comment_def.minimum_chars_required: From e9d70fa49d0155c55f38240f50bdf01493296cb1 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 12:24:49 +0200 Subject: [PATCH 388/626] keep webactions cached for 20 seconds --- client/ayon_core/tools/launcher/models/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 25335a7ecf..6457319a01 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -189,7 +189,7 @@ class ActionsModel: self._actions = None self._action_items = {} self._webaction_items = NestedCacheItem( - levels=2, default_factory=list + levels=2, default_factory=list, lifetime=20, ) self._addons_manager = None From 0368e5e6f819d511c876c66279e40869249b1403 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 12:25:00 +0200 Subject: [PATCH 389/626] hard reset webactions on refresh --- client/ayon_core/tools/launcher/models/actions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 6457319a01..04ed9e115c 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -206,6 +206,7 @@ class ActionsModel: self._discovered_actions = None self._actions = None self._action_items = {} + self._webaction_items.reset() self._controller.emit_event("actions.refresh.started") self._get_action_objects() From 46f6198ba36c23448c16f7133982753e16b58a55 Mon Sep 17 00:00:00 2001 From: Ynbot Date: Thu, 22 May 2025 12:31:33 +0000 Subject: [PATCH 390/626] [Automated] Add generated package files from main --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 64842b5976..1b2f0defaa 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.3.0+dev" +__version__ = "1.3.1" diff --git a/package.py b/package.py index 32fedd859b..8161d63b1c 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.3.0+dev" +version = "1.3.1" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index 4034d6c0c6..79158e1010 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.3.0+dev" +version = "1.3.1" description = "" authors = ["Ynput Team "] readme = "README.md" From 6379f6726271ce848bc21c130bf28e30f8cdb302 Mon Sep 17 00:00:00 2001 From: Ynbot Date: Thu, 22 May 2025 12:32:10 +0000 Subject: [PATCH 391/626] [Automated] Update version in package.py for develop --- client/ayon_core/version.py | 2 +- package.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 1b2f0defaa..9c43e80bf1 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'core' version.""" -__version__ = "1.3.1" +__version__ = "1.3.1+dev" diff --git a/package.py b/package.py index 8161d63b1c..47e3b39083 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "1.3.1" +version = "1.3.1+dev" client_dir = "ayon_core" diff --git a/pyproject.toml b/pyproject.toml index 79158e1010..f919a9589b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ [tool.poetry] name = "ayon-core" -version = "1.3.1" +version = "1.3.1+dev" description = "" authors = ["Ynput Team "] readme = "README.md" From 1fe653c8b7323a1e84d48e6dd5684543b8b7793c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 22 May 2025 12:33:06 +0000 Subject: [PATCH 392/626] chore(): update bug report / version --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9dbe32b018..f71c6e2c29 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,7 @@ body: label: Version description: What version are you running? Look to AYON Tray options: + - 1.3.1 - 1.3.0 - 1.2.0 - 1.1.9 From f22206e54ca5434734fb197662648f6e3e199d7d Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 15:30:33 +0200 Subject: [PATCH 393/626] use 'MarkdownText' format if is available --- client/ayon_core/tools/utils/widgets.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index a19b0a8966..aea2eca6a2 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -143,10 +143,18 @@ class MarkdownLabel(QtWidgets.QLabel): # Enable word wrap by default self.setWordWrap(True) + text_format_available = hasattr(QtCore.Qt, "MarkdownText") + if text_format_available: + self.setTextFormat(QtCore.Qt.MarkdownText) + + self._text_format_available = text_format_available + self.setText(self.text()) def setText(self, text): - super().setText(self._md_to_html(text)) + if not self._text_format_available: + text = self._md_to_html(text) + super().setText(text) @staticmethod def _md_to_html(text): From d02eeac660d6028fc065eef079aa2720569e87bb Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 17:02:01 +0200 Subject: [PATCH 394/626] move ActionItem to abstract.py --- client/ayon_core/tools/launcher/abstract.py | 77 +++++++++++++++++++ .../tools/launcher/models/actions.py | 77 +------------------ 2 files changed, 78 insertions(+), 76 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index 004d03bccb..678ece6510 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -1,4 +1,81 @@ +from __future__ import annotations + +import copy from abc import ABC, abstractmethod +from typing import Optional, Any + + +class ActionItem: + """Item representing single action to trigger. + + Args: + action_type (Literal["webaction", "local"]): Type of action. + identifier (str): Unique identifier of action item. + label (str): Action label. + variant_label (Union[str, None]): Variant label, full label is + concatenated with space. Actions are grouped under single + action if it has same 'label' and have set 'variant_label'. + icon (dict[str, str]): Icon definition. + order (int): Action ordering. + addon_name (Optional[str]): Addon name. + addon_version (Optional[str]): Addon version. + config_fields (Optional[list[dict]]): Config fields for webaction. + full_label (Optional[str]): Full label, if not set it is generated + from 'label' and 'variant_label'. + + """ + def __init__( + self, + action_type: str, + identifier: str, + label: str, + variant_label: Optional[str], + icon: dict[str, str], + order: int, + addon_name: Optional[str] = None, + addon_version: Optional[str] = None, + config_fields: Optional[list[dict]] = None, + full_label: Optional[str] = None, + ): + if config_fields is None: + config_fields = [] + self.action_type = action_type + self.identifier = identifier + self.label = label + self.variant_label = variant_label + self.icon = icon + self.order = order + self.addon_name = addon_name + self.addon_version = addon_version + self.config_fields = config_fields + self._full_label = full_label + + def copy(self): + return self.from_data(self.to_data()) + + @property + def full_label(self): + if self._full_label is None: + if self.variant_label: + self._full_label = " ".join([self.label, self.variant_label]) + else: + self._full_label = self.label + return self._full_label + + def to_data(self) -> dict[str, Any]: + return { + "identifier": self.identifier, + "label": self.label, + "variant_label": self.variant_label, + "icon": self.icon, + "order": self.order, + "full_label": self._full_label, + "config_fields": copy.deepcopy(self.config_fields), + } + + @classmethod + def from_data(cls, data: dict[str, Any]) -> "ActionItem": + return cls(**data) class AbstractLauncherCommon(ABC): diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 04ed9e115c..a1ef789574 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -1,5 +1,4 @@ import os -import copy import uuid from dataclasses import dataclass, asdict from urllib.parse import urlencode, urlparse @@ -23,81 +22,7 @@ from ayon_core.pipeline.actions import ( register_launcher_action_path, ) - -class ActionItem: - """Item representing single action to trigger. - - Todos: - Get rid of application specific logic. - - Args: - action_type (Literal["webaction", "local"]): Type of action. - identifier (str): Unique identifier of action item. - label (str): Action label. - variant_label (Union[str, None]): Variant label, full label is - concatenated with space. Actions are grouped under single - action if it has same 'label' and have set 'variant_label'. - icon (dict[str, str]): Icon definition. - order (int): Action ordering. - addon_name (str): Addon name. - addon_version (str): Addon version. - config_fields (list[dict]): Config fields for webaction. - full_label (Optional[str]): Full label, if not set it is generated - from 'label' and 'variant_label'. - """ - - def __init__( - self, - action_type, - identifier, - label, - variant_label, - icon, - order, - addon_name=None, - addon_version=None, - config_fields=None, - full_label=None - ): - if config_fields is None: - config_fields = [] - self.action_type = action_type - self.identifier = identifier - self.label = label - self.variant_label = variant_label - self.icon = icon - self.order = order - self.addon_name = addon_name - self.addon_version = addon_version - self.config_fields = config_fields - self._full_label = full_label - - def copy(self): - return self.from_data(self.to_data()) - - @property - def full_label(self): - if self._full_label is None: - if self.variant_label: - self._full_label = " ".join([self.label, self.variant_label]) - else: - self._full_label = self.label - return self._full_label - - def to_data(self): - return { - "identifier": self.identifier, - "label": self.label, - "variant_label": self.variant_label, - "icon": self.icon, - "order": self.order, - "full_label": self._full_label, - "config_fields": copy.deepcopy(self.config_fields), - } - - @classmethod - def from_data(cls, data): - return cls(**data) +from ayon_core.tools.launcher.abstract import ActionItem @dataclass From 4954992e56591dde4bb56f79b28cb5538528a734 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 17:02:59 +0200 Subject: [PATCH 395/626] added some typehints --- client/ayon_core/tools/launcher/abstract.py | 59 ++++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index 678ece6510..36dc696cf6 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -165,7 +165,9 @@ class AbstractLauncherBackend(AbstractLauncherCommon): class AbstractLauncherFrontEnd(AbstractLauncherCommon): # Entity items for UI @abstractmethod - def get_project_items(self, sender=None): + def get_project_items( + self, sender: Optional[str] = None + ) -> list[ProjectItem]: """Project items for all projects. This function may trigger events 'projects.refresh.started' and @@ -183,7 +185,9 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_folder_type_items(self, project_name, sender=None): + def get_folder_type_items( + self, project_name: str, sender: Optional[str] = None + ) -> list[FolderTypeItem]: """Folder type items for a project. This function may trigger events with topics @@ -203,7 +207,9 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_task_type_items(self, project_name, sender=None): + def get_task_type_items( + self, project_name: str, sender: Optional[str] = None + ) -> list[TaskTypeItem]: """Task type items for a project. This function may trigger events with topics @@ -223,7 +229,9 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_folder_items(self, project_name, sender=None): + def get_folder_items( + self, project_name: str, sender: Optional[str] = None + ) -> list[FolderItem]: """Folder items to visualize project hierarchy. This function may trigger events 'folders.refresh.started' and @@ -242,7 +250,9 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_task_items(self, project_name, folder_id, sender=None): + def get_task_items( + self, project_name: str, folder_id: str, sender: Optional[str] = None + ) -> list[TaskItem]: """Task items. This function may trigger events 'tasks.refresh.started' and @@ -262,7 +272,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_selected_project_name(self): + def get_selected_project_name(self) -> Optional[str]: """Selected project name. Returns: @@ -272,7 +282,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_selected_folder_id(self): + def get_selected_folder_id(self) -> Optional[str]: """Selected folder id. Returns: @@ -282,7 +292,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_selected_task_id(self): + def get_selected_task_id(self) -> Optional[str]: """Selected task id. Returns: @@ -292,7 +302,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_selected_task_name(self): + def get_selected_task_name(self) -> Optional[str]: """Selected task name. Returns: @@ -302,7 +312,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_selected_context(self): + def get_selected_context(self) -> dict[str, Optional[str]]: """Get whole selected context. Example: @@ -320,7 +330,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def set_selected_project(self, project_name): + def set_selected_project(self, project_name: Optional[str]): """Change selected folder. Args: @@ -331,7 +341,7 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def set_selected_folder(self, folder_id): + def set_selected_folder(self, folder_id: Optional[str]): """Change selected folder. Args: @@ -342,7 +352,9 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def set_selected_task(self, task_id, task_name): + def set_selected_task( + self, task_id: Optional[str], task_name: Optional[str] + ): """Change selected task. Args: @@ -356,7 +368,12 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): # Actions @abstractmethod - def get_action_items(self, project_name, folder_id, task_id): + def get_action_items( + self, + project_name: Optional[str], + folder_id: Optional[str], + task_id: Optional[str], + ) -> list[ActionItem]: """Get action items for given context. Args: @@ -374,10 +391,10 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): @abstractmethod def trigger_action( self, - action_id, - project_name, - folder_id, - task_id, + action_id: str, + project_name: Optional[str], + folder_id: Optional[str], + task_id: Optional[str], ): """Trigger action on given context. @@ -462,14 +479,16 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): pass @abstractmethod - def get_my_tasks_entity_ids(self, project_name: str): + def get_my_tasks_entity_ids( + self, project_name: str + ) -> dict[str, list[str]]: """Get entity ids for my tasks. Args: project_name (str): Project name. Returns: - dict[str, Union[list[str]]]: Folder and task ids. + dict[str, list[str]]: Folder and task ids. """ pass From ea5d5cfc7129819f2c2aa02577aa41d361571221 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 17:03:53 +0200 Subject: [PATCH 396/626] added missing imports --- client/ayon_core/tools/launcher/abstract.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index 36dc696cf6..a57f539261 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -4,6 +4,13 @@ import copy from abc import ABC, abstractmethod from typing import Optional, Any +from ayon_core.tools.common_models import ( + ProjectItem, + FolderItem, + FolderTypeItem, + TaskItem, + TaskTypeItem, +) class ActionItem: """Item representing single action to trigger. From 1f716ce103db4ff91a29a80af9892047247f6102 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 17:10:51 +0200 Subject: [PATCH 397/626] added helper class 'WebactionContext' to pass webaction info --- client/ayon_core/tools/launcher/abstract.py | 66 ++++++++------ client/ayon_core/tools/launcher/control.py | 61 ++----------- .../tools/launcher/models/actions.py | 91 ++++++++----------- .../tools/launcher/ui/actions_widget.py | 44 +++++---- 4 files changed, 105 insertions(+), 157 deletions(-) diff --git a/client/ayon_core/tools/launcher/abstract.py b/client/ayon_core/tools/launcher/abstract.py index a57f539261..c4404bb9fa 100644 --- a/client/ayon_core/tools/launcher/abstract.py +++ b/client/ayon_core/tools/launcher/abstract.py @@ -2,6 +2,7 @@ from __future__ import annotations import copy from abc import ABC, abstractmethod +from dataclasses import dataclass from typing import Optional, Any from ayon_core.tools.common_models import ( @@ -12,6 +13,18 @@ from ayon_core.tools.common_models import ( TaskTypeItem, ) + +@dataclass +class WebactionContext: + """Context used for methods related to webactions.""" + identifier: str + project_name: str + folder_id: str + task_id: str + addon_name: str + addon_version: str + + class ActionItem: """Item representing single action to trigger. @@ -417,25 +430,15 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): @abstractmethod def trigger_webaction( self, - identifier, - project_name, - folder_id, - task_id, - action_label, - addon_name, - addon_version, - form_data=None, + context: WebactionContext, + action_label: str, + form_data: Optional[dict[str, Any]] = None, ): """Trigger action on given context. Args: - identifier (str): Action identifier. - project_name (Union[str, None]): Project name. - folder_id (Union[str, None]): Folder id. - task_id (Union[str, None]): Task id. + context (WebactionContext): Webaction context. action_label (str): Action label. - addon_name (str): Addon name. - addon_version (str): Addon version. form_data (Optional[dict[str, Any]]): Form values of action. """ @@ -443,27 +446,32 @@ class AbstractLauncherFrontEnd(AbstractLauncherCommon): @abstractmethod def get_action_config_values( - self, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ): + self, context: WebactionContext + ) -> dict[str, Any]: + """Get action config values. + + Args: + context (WebactionContext): Webaction context. + + Returns: + dict[str, Any]: Action config values. + + """ pass @abstractmethod def set_action_config_values( self, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - values, + context: WebactionContext, + values: dict[str, Any], ): + """Set action config values. + + Args: + context (WebactionContext): Webaction context. + values (dict[str, Any]): Action config values. + + """ pass @abstractmethod diff --git a/client/ayon_core/tools/launcher/control.py b/client/ayon_core/tools/launcher/control.py index a69288dda1..fb9f950bd1 100644 --- a/client/ayon_core/tools/launcher/control.py +++ b/client/ayon_core/tools/launcher/control.py @@ -149,65 +149,16 @@ class BaseLauncherController( task_id, ) - def trigger_webaction( - self, - identifier, - project_name, - folder_id, - task_id, - action_label, - addon_name, - addon_version, - form_data=None, - ): + def trigger_webaction(self, context, action_label, form_data=None): self._actions_model.trigger_webaction( - identifier, - project_name, - folder_id, - task_id, - action_label, - addon_name, - addon_version, - form_data, + context, action_label, form_data ) - def get_action_config_values( - self, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ): - return self._actions_model.get_action_config_values( - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ) + def get_action_config_values(self, context): + return self._actions_model.get_action_config_values(context) - def set_action_config_values( - self, - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - values, - ): - return self._actions_model.set_action_config_values( - action_id, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - values, - ) + def set_action_config_values(self, context, values): + return self._actions_model.set_action_config_values(context, values) # General methods def refresh(self): diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index a1ef789574..2706af5580 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -21,8 +21,7 @@ from ayon_core.pipeline.actions import ( LauncherActionSelection, register_launcher_action_path, ) - -from ayon_core.tools.launcher.abstract import ActionItem +from ayon_core.tools.launcher.abstract import ActionItem, WebactionContext @dataclass @@ -202,19 +201,16 @@ class ActionsModel: } ) - def trigger_webaction( - self, - identifier, - project_name, - folder_id, - task_id, - action_label, - addon_name, - addon_version, - form_data, - ): + def trigger_webaction(self, context, action_label, form_data): entity_type = None entity_ids = [] + identifier = context.identifier + folder_id = context.folder_id + task_id = context.task_id + project_name = context.project_name + addon_name = context.addon_name + addon_version = context.addon_version + if task_id: entity_type = "task" entity_ids.append(task_id) @@ -229,13 +225,13 @@ class ActionsModel: "variant": self._variant, } url = f"actions/execute?{urlencode(query)}" - context = { + request_data = { "projectName": project_name, "entityType": entity_type, "entityIds": entity_ids, } if form_data is not None: - context["formData"] = form_data + request_data["formData"] = form_data trigger_id = uuid.uuid4().hex failed = False @@ -257,7 +253,9 @@ class ActionsModel: headers = None else: headers["referer"] = conn.get_base_url() - response = ayon_api.raw_post(url, headers=headers, json=context) + response = ayon_api.raw_post( + url, headers=headers, json=request_data + ) response.raise_for_status() handle_response = self._handle_webaction_response(response.data) @@ -287,30 +285,24 @@ class ActionsModel: data, ) - def get_action_config_values( - self, - identifier, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - ): - selection = self._prepare_selection(project_name, folder_id, task_id) + def get_action_config_values(self, context: WebactionContext): + selection = self._prepare_selection( + context.project_name, context.folder_id, context.task_id + ) if not selection.is_project_selected: return {} - context = self._get_webaction_context(selection) + request_data = self._get_webaction_request_data(selection) query = { - "addonName": addon_name, - "addonVersion": addon_version, - "identifier": identifier, + "addonName": context.addon_name, + "addonVersion": context.addon_version, + "identifier": context.identifier, "variant": self._variant, } url = f"actions/config?{urlencode(query)}" try: - response = ayon_api.post(url, **context) + response = ayon_api.post(url, **request_data) response.raise_for_status() except Exception: self.log.warning( @@ -320,32 +312,25 @@ class ActionsModel: return {} return response.data - def set_action_config_values( - self, - identifier, - project_name, - folder_id, - task_id, - addon_name, - addon_version, - values, - ): - selection = self._prepare_selection(project_name, folder_id, task_id) + def set_action_config_values(self, context, values): + selection = self._prepare_selection( + context.project_name, context.folder_id, context.task_id + ) if not selection.is_project_selected: return {} - context = self._get_webaction_context(selection) - context["value"] = values + request_data = self._get_webaction_request_data(selection) + request_data["value"] = values query = { - "addonName": addon_name, - "addonVersion": addon_version, - "identifier": identifier, + "addonName": context.addon_name, + "addonVersion": context.addon_version, + "identifier": context.identifier, "variant": self._variant, } url = f"actions/config?{urlencode(query)}" try: - response = ayon_api.post(url, **context) + response = ayon_api.post(url, **request_data) response.raise_for_status() except Exception: self.log.warning( @@ -371,7 +356,7 @@ class ActionsModel: project_settings=project_settings, ) - def _get_webaction_context(self, selection: LauncherActionSelection): + def _get_webaction_request_data(self, selection: LauncherActionSelection): if not selection.is_project_selected: return None @@ -404,18 +389,18 @@ class ActionsModel: if not selection.is_project_selected: return [] - context = self._get_webaction_context(selection) + request_data = self._get_webaction_request_data(selection) project_name = selection.project_name entity_id = None - if context["entityIds"]: - entity_id = context["entityIds"][0] + if request_data["entityIds"]: + entity_id = request_data["entityIds"][0] cache: CacheItem = self._webaction_items[project_name][entity_id] if cache.is_valid: return cache.get_data() try: - response = ayon_api.post("actions/list", **context) + response = ayon_api.post("actions/list", **request_data) response.raise_for_status() except Exception: self.log.warning("Failed to collect webactions.", exc_info=True) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index fca27e3b6e..e9447d1ccb 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -16,6 +16,7 @@ from ayon_core.lib.attribute_definitions import ( from ayon_core.tools.flickcharm import FlickCharm from ayon_core.tools.utils import get_qt_icon from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog +from ayon_core.tools.launcher.abstract import WebactionContext from .resources import get_options_image_path @@ -428,13 +429,15 @@ class ActionsWidget(QtWidgets.QWidget): return form_data = dialog.get_values() self._controller.trigger_webaction( - identifier, - event["project_name"], - event["folder_id"], - event["task_id"], + WebactionContext( + identifier, + event["project_name"], + event["folder_id"], + event["task_id"], + event["addon_name"], + event["addon_version"], + ), event["action_label"], - event["addon_name"], - event["addon_version"], form_data, ) @@ -502,12 +505,20 @@ class ActionsWidget(QtWidgets.QWidget): addon_name = index.data(ACTION_ADDON_NAME_ROLE) addon_version = index.data(ACTION_ADDON_VERSION_ROLE) - args = [action_id, project_name, folder_id, task_id] if action_type == "webaction": - args.extend([action_label, addon_name, addon_version]) - self._controller.trigger_webaction(*args) + context = WebactionContext( + action_id, + project_name, + folder_id, + task_id, + addon_name, + addon_version + ) + self._controller.trigger_webaction(context, action_label) else: - self._controller.trigger_action(*args) + self._controller.trigger_action( + action_id, project_name, folder_id, task_id + ) self._start_animation(index) @@ -547,7 +558,7 @@ class ActionsWidget(QtWidgets.QWidget): task_id = self._model.get_selected_task_id() addon_name = index.data(ACTION_ADDON_NAME_ROLE) addon_version = index.data(ACTION_ADDON_VERSION_ROLE) - values = self._controller.get_action_config_values( + context = WebactionContext( action_id, project_name=project_name, folder_id=folder_id, @@ -555,6 +566,7 @@ class ActionsWidget(QtWidgets.QWidget): addon_name=addon_name, addon_version=addon_version, ) + values = self._controller.get_action_config_values(context) dialog = self._create_attrs_dialog( config_fields, @@ -567,15 +579,7 @@ class ActionsWidget(QtWidgets.QWidget): if result != QtWidgets.QDialog.Accepted: return new_values = dialog.get_values() - self._controller.set_action_config_values( - action_id, - project_name=project_name, - folder_id=folder_id, - task_id=task_id, - addon_name=addon_name, - addon_version=addon_version, - values=new_values, - ) + self._controller.set_action_config_values(context, new_values) def _create_attrs_dialog( self, From 2cf4b0d119a450695be604139a6cb19b394f17bf Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 22 May 2025 17:12:09 +0200 Subject: [PATCH 398/626] Use more generic except --- client/ayon_core/tools/utils/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index aea2eca6a2..b842d3a4b8 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -8,7 +8,7 @@ import qtawesome try: import markdown -except (ImportError, SyntaxError, TypeError): +except Exception: markdown = None from ayon_core.style import ( From 7413f05adb0a04b739909533a083dc5066943876 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 22:15:24 +0200 Subject: [PATCH 399/626] Change staging dir persistence state to debug log instead of info to avoid clutter for the artist (artist doesn't care) --- .../plugins/publish/collect_managed_staging_dir.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_managed_staging_dir.py b/client/ayon_core/plugins/publish/collect_managed_staging_dir.py index 1034b9a716..62b007461a 100644 --- a/client/ayon_core/plugins/publish/collect_managed_staging_dir.py +++ b/client/ayon_core/plugins/publish/collect_managed_staging_dir.py @@ -32,16 +32,16 @@ class CollectManagedStagingDir(pyblish.api.InstancePlugin): label = "Collect Managed Staging Directory" order = pyblish.api.CollectorOrder + 0.4990 - def process(self, instance): + def process(self, instance: pyblish.api.Instance): """ Collect the staging data and stores it to the instance. Args: instance (object): The instance to inspect. """ staging_dir_path = get_instance_staging_dir(instance) - persistance = instance.data.get("stagingDir_persistent", False) + persistence: bool = instance.data.get("stagingDir_persistent", False) - self.log.info(( + self.log.debug( f"Instance staging dir was set to `{staging_dir_path}` " - f"and persistence is set to `{persistance}`" - )) + f"and persistence is set to `{persistence}`" + ) From b5b661e9829f4c91f9a6057b3dc6da66b442a2ee Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 23:11:53 +0200 Subject: [PATCH 400/626] Move attribute down (less important) --- server/settings/tools.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/server/settings/tools.py b/server/settings/tools.py index 2b33efaa8b..815ef40f8e 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -342,14 +342,6 @@ class CustomStagingDirProfileModel(BaseSettingsModel): class PublishToolModel(BaseSettingsModel): - comment_minimum_required_chars: int = SettingsField( - 0, - title="Publish comment minimum required characters", - description=( - "Minimum number of characters required in the comment field " - "before the publisher UI is allowed to continue publishing" - ) - ) template_name_profiles: list[PublishTemplateNameProfile] = SettingsField( default_factory=list, title="Template name profiles" @@ -366,6 +358,14 @@ class PublishToolModel(BaseSettingsModel): title="Custom Staging Dir Profiles" ) ) + comment_minimum_required_chars: int = SettingsField( + 0, + title="Publish comment minimum required characters", + description=( + "Minimum number of characters required in the comment field " + "before the publisher UI is allowed to continue publishing" + ) + ) class GlobalToolsModel(BaseSettingsModel): @@ -578,7 +578,6 @@ DEFAULT_TOOLS_VALUES = { "product_type_filter_profiles": [] }, "publish": { - "comment_minimum_required_chars": 0, "template_name_profiles": [ { "product_types": [], @@ -680,6 +679,7 @@ DEFAULT_TOOLS_VALUES = { "task_names": [], "template_name": "simpleUnrealTextureHero" } - ] + ], + "comment_minimum_required_chars": 0, } } From 1500c1cc331b3882ae3e78138915e6fe7df84dea Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 23:12:52 +0200 Subject: [PATCH 401/626] Remove redundant stylesheet overrides --- client/ayon_core/tools/publisher/window.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index 4932b578e2..6c856d8c3a 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -856,11 +856,7 @@ class PublisherWindow(QtWidgets.QDialog): def _invalidate_comment_field(self): self._comment_invalid_timer.start() - self._comment_input.setStyleSheet( - "border-style: solid;" - "border-width: 1px;" - "border-color: #DD2020" - ) + self._comment_input.setStyleSheet("border-color: #DD2020") # Set focus so user can start typing and is pointed towards the field self._comment_input.setFocus() From e35f3a59412feddc977e04390645abd79a2c282c Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 23:14:11 +0200 Subject: [PATCH 402/626] Update client/ayon_core/tools/publisher/window.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/tools/publisher/window.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index 4932b578e2..523281e193 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -842,16 +842,18 @@ class PublisherWindow(QtWidgets.QDialog): def _start_publish_preflight(self) -> bool: # Validate comment length comment_def = self._controller.get_comment_def() - if comment_def.minimum_chars_required: - char_count = len(self._comment_input.text()) - if char_count < comment_def.minimum_chars_required: - self._overlay_object.add_message( - "Please enter a comment of at least " - f"{comment_def.minimum_chars_required} characters", - message_type="error" - ) - self._invalidate_comment_field() - return False + char_count = len(self._comment_input.text()) + if ( + comment_def.minimum_chars_required + and char_count < comment_def.minimum_chars_required + ): + self._overlay_object.add_message( + "Please enter a comment of at least " + f"{comment_def.minimum_chars_required} characters", + message_type="error" + ) + self._invalidate_comment_field() + return False return True def _invalidate_comment_field(self): From d18e2622b72d5ad592b81880b244ad930228a7cc Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 23:15:40 +0200 Subject: [PATCH 403/626] Rename to `_validate_comment` --- client/ayon_core/tools/publisher/window.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index 6c856d8c3a..13d98a5398 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -830,16 +830,16 @@ class PublisherWindow(QtWidgets.QDialog): self._controller.set_comment(self._comment_input.text()) def _on_validate_clicked(self): - if self._start_publish_preflight() and self._save_changes(False): + if self._validate_comment() and self._save_changes(False): self._set_publish_comment() self._controller.validate() def _on_publish_clicked(self): - if self._start_publish_preflight() and self._save_changes(False): + if self._validate_comment() and self._save_changes(False): self._set_publish_comment() self._controller.publish() - def _start_publish_preflight(self) -> bool: + def _validate_comment(self) -> bool: # Validate comment length comment_def = self._controller.get_comment_def() if comment_def.minimum_chars_required: From f99550a74e0870eb8dbf638cf5017adce8446bd5 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 22 May 2025 23:20:03 +0200 Subject: [PATCH 404/626] Count chars with the comment input stripped - so that e.g. solely spaces (or trailing/starting spaces) do not count to the minimal required characters --- client/ayon_core/tools/publisher/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index 28c40d8b5a..ccc91e599f 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -842,7 +842,7 @@ class PublisherWindow(QtWidgets.QDialog): def _validate_comment(self) -> bool: # Validate comment length comment_def = self._controller.get_comment_def() - char_count = len(self._comment_input.text()) + char_count = len(self._comment_input.text().strip()) if ( comment_def.minimum_chars_required and char_count < comment_def.minimum_chars_required From cc7668d32b1f185dedf9f85961ead86d6dfc3c37 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 23 May 2025 09:25:02 +0200 Subject: [PATCH 405/626] Set config values on all items in group --- client/ayon_core/tools/launcher/ui/actions_widget.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index e9447d1ccb..c9c6e87f50 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -553,6 +553,8 @@ class ActionsWidget(QtWidgets.QWidget): if not config_fields: return + is_group = index.data(ACTION_IS_GROUP_ROLE) + project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() @@ -579,7 +581,15 @@ class ActionsWidget(QtWidgets.QWidget): if result != QtWidgets.QDialog.Accepted: return new_values = dialog.get_values() - self._controller.set_action_config_values(context, new_values) + if is_group: + action_items = self._model.get_group_items(action_id) + action_ids = [item.identifier for item in action_items] + else: + action_ids = [action_id] + + for action_id in action_ids: + context.identifier = action_id + self._controller.set_action_config_values(context, new_values) def _create_attrs_dialog( self, From b1bf4df9e00f8ab23260ea7bedba3400db782281 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 23 May 2025 10:45:13 +0200 Subject: [PATCH 406/626] Update client/ayon_core/tools/publisher/window.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/tools/publisher/window.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index ccc91e599f..af8ae13b8a 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -246,6 +246,7 @@ class PublisherWindow(QtWidgets.QDialog): show_timer.timeout.connect(self._on_show_timer) comment_invalid_timer = QtCore.QTimer() + comment_invalid_timer.setSingleShot(True) comment_invalid_timer.setInterval(2500) comment_invalid_timer.timeout.connect( self._on_comment_invalid_timeout From 539467d9ee206be109e2fc047599384457e694ce Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 23 May 2025 11:46:01 +0200 Subject: [PATCH 407/626] Set cursor at end of any existing text so that the user can directly continue with their comment Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/tools/publisher/window.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/ayon_core/tools/publisher/window.py b/client/ayon_core/tools/publisher/window.py index af8ae13b8a..dc086a3b48 100644 --- a/client/ayon_core/tools/publisher/window.py +++ b/client/ayon_core/tools/publisher/window.py @@ -862,6 +862,9 @@ class PublisherWindow(QtWidgets.QDialog): self._comment_input.setStyleSheet("border-color: #DD2020") # Set focus so user can start typing and is pointed towards the field self._comment_input.setFocus() + self._comment_input.setCursorPosition( + len(self._comment_input.text()) + ) def _on_comment_invalid_timeout(self): # Reset style From a4fd1e19af6db77142918404a307722d19728141 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 23 May 2025 16:52:20 +0200 Subject: [PATCH 408/626] add settings icon to each action --- client/ayon_core/style/style.css | 16 +++ .../tools/launcher/ui/actions_widget.py | 131 ++++++++++++++++-- 2 files changed, 139 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index 0e19702d53..70ab552f75 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -829,6 +829,22 @@ HintedLineEditButton { } /* Launcher specific stylesheets */ +ActionVariantWidget { + background: transparent; +} + +ActionVariantWidget[state="hover"], #OptionalActionOption[state="hover"] { + background: {color:bg-view-hover}; +} + +LauncherSettingsButton { + background: transparent; +} + +LauncherSettingsButton:hover { + border: 1px solid #f4f5f5; +} + #IconView[mode="icon"] { /* font size can't be set on items */ font-size: 9pt; diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index c9c6e87f50..e79dd0d74b 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -14,7 +14,7 @@ from ayon_core.lib.attribute_definitions import ( HiddenDef, ) from ayon_core.tools.flickcharm import FlickCharm -from ayon_core.tools.utils import get_qt_icon +from ayon_core.tools.utils import get_qt_icon, SquareButton from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog from ayon_core.tools.launcher.abstract import WebactionContext @@ -47,6 +47,93 @@ def _variant_label_sort_getter(action_item): return action_item.variant_label or "" +# --- Replacement for QAction for action variants --- +class LauncherSettingsButton(SquareButton): + _settings_icon = None + + def __init__(self, parent): + super().__init__(parent) + self.setIcon(self._get_settings_icon()) + + @classmethod + def _get_settings_icon(cls): + if cls._settings_icon is None: + cls._settings_icon = get_qt_icon({ + "type": "material-symbols", + "name": "settings", + }) + return cls._settings_icon + + +class ActionVariantWidget(QtWidgets.QFrame): + settings_requested = QtCore.Signal(str) + + def __init__(self, item_id, label, has_settings, parent): + super().__init__(parent) + + self.setMouseTracking(True) + + label_widget = QtWidgets.QLabel(label, self) + settings_btn = None + if has_settings: + settings_btn = LauncherSettingsButton(self) + + layout = QtWidgets.QHBoxLayout(self) + layout.setContentsMargins(6, 4, 4, 4) + layout.setSpacing(0) + layout.addWidget(label_widget, 1) + if settings_btn is not None: + layout.addSpacing(6) + layout.addWidget(settings_btn, 0) + + settings_btn.clicked.connect(self._on_settings_clicked) + + self._item_id = item_id + self._label_widget = label_widget + self._settings_btn = settings_btn + + def enterEvent(self, event): + """Handle mouse enter event.""" + self._set_hover_properties(True) + super().enterEvent(event) + + def leaveEvent(self, event): + """Handle mouse enter event.""" + self._set_hover_properties(False) + self.setProperty("state", "") + self.style().polish(self) + super().leaveEvent(event) + + def _on_settings_clicked(self): + self.settings_requested.emit(self._item_id) + + def _set_hover_properties(self, hovered): + state = "hover" if hovered else "" + if self.property("state") != state: + self.setProperty("state", state) + self.style().polish(self) + + +class ActionVariantAction(QtWidgets.QWidgetAction): + """Menu action with settings button.""" + settings_requested = QtCore.Signal(str) + + def __init__(self, item_id, label, has_settings, parent): + super().__init__(parent) + self._item_id = item_id + self._label = label + self._has_settings = has_settings + self._widget = None + + def createWidget(self, parent): + widget = ActionVariantWidget( + self._item_id, self._label, self._has_settings, parent + ) + widget.settings_requested.connect(self.settings_requested) + self._widget = widget + return widget + + class ActionsQtModel(QtGui.QStandardItemModel): """Qt model for actions. @@ -122,8 +209,10 @@ class ActionsQtModel(QtGui.QStandardItemModel): root_item = self.invisibleRootItem() all_action_items_info = [] + action_items_by_id = {} items_by_label = collections.defaultdict(list) for item in items: + action_items_by_id[item.identifier] = item if not item.variant_label: all_action_items_info.append((item, False)) else: @@ -139,7 +228,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): transparent_icon = {"type": "transparent", "size": 256} new_items = [] items_by_id = {} - action_items_by_id = {} for action_item_info in all_action_items_info: action_item, is_group = action_item_info icon_def = action_item.icon @@ -175,7 +263,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setData(action_item.addon_version, ACTION_ADDON_VERSION_ROLE) item.setData(action_item.order, ACTION_SORT_ROLE) items_by_id[action_item.identifier] = item - action_items_by_id[action_item.identifier] = action_item if new_items: root_item.appendRows(new_items) @@ -528,8 +615,31 @@ class ActionsWidget(QtWidgets.QWidget): menu = QtWidgets.QMenu(self) actions_mapping = {} + def on_settings_clicked(identifier): + # Close menu + menu.close() + + # Show config dialog + action_item = next( + item + for item in action_items + if item.identifier == identifier + ) + self._show_config_dialog( + identifier, + False, + action_item.addon_name, + action_item.addon_version, + ) + for action_item in action_items: - menu_action = QtWidgets.QAction(action_item.full_label) + menu_action = ActionVariantAction( + action_item.identifier, + action_item.full_label, + bool(action_item.config_fields), + menu, + ) + menu_action.settings_requested.connect(on_settings_clicked) menu.addAction(menu_action) actions_mapping[menu_action] = action_item @@ -548,18 +658,23 @@ class ActionsWidget(QtWidgets.QWidget): action_id = index.data(ACTION_ID_ROLE) if not action_id: return + is_group = index.data(ACTION_IS_GROUP_ROLE) + addon_name = index.data(ACTION_ADDON_NAME_ROLE) + addon_version = index.data(ACTION_ADDON_VERSION_ROLE) + self._show_config_dialog( + action_id, is_group, addon_name, addon_version + ) + def _show_config_dialog( + self, action_id, is_group, addon_name, addon_version + ): config_fields = self._model.get_action_config_fields(action_id) if not config_fields: return - is_group = index.data(ACTION_IS_GROUP_ROLE) - project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() - addon_name = index.data(ACTION_ADDON_NAME_ROLE) - addon_version = index.data(ACTION_ADDON_VERSION_ROLE) context = WebactionContext( action_id, project_name=project_name, From 6f40c92f808455275db651bdf9d7913d6a4583c9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 26 May 2025 10:51:52 +0200 Subject: [PATCH 409/626] fix style issues --- client/ayon_core/tools/launcher/ui/actions_widget.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index e79dd0d74b..e22b810b8d 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -92,6 +92,11 @@ class ActionVariantWidget(QtWidgets.QFrame): self._label_widget = label_widget self._settings_btn = settings_btn + def showEvent(self, event): + super().showEvent(event) + # Make sure to set up current state + self._set_hover_properties(self.underMouse()) + def enterEvent(self, event): """Handle mouse enter event.""" self._set_hover_properties(True) @@ -100,8 +105,6 @@ class ActionVariantWidget(QtWidgets.QFrame): def leaveEvent(self, event): """Handle mouse enter event.""" self._set_hover_properties(False) - self.setProperty("state", "") - self.style().polish(self) super().leaveEvent(event) def _on_settings_clicked(self): From 60f6e0cec059f320b831c944b30dd60a4442bd82 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 26 May 2025 10:52:48 +0200 Subject: [PATCH 410/626] simplified config dialog method --- .../tools/launcher/ui/actions_widget.py | 28 ++++++------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index e22b810b8d..8fb2b3e60a 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -382,7 +382,7 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): if index.data(ANIMATION_STATE_ROLE): self._draw_animation(painter, option, index) - super(ActionDelegate, self).paint(painter, option, index) + super().paint(painter, option, index) if not index.data(ACTION_IS_GROUP_ROLE): return @@ -623,17 +623,7 @@ class ActionsWidget(QtWidgets.QWidget): menu.close() # Show config dialog - action_item = next( - item - for item in action_items - if item.identifier == identifier - ) - self._show_config_dialog( - identifier, - False, - action_item.addon_name, - action_item.addon_version, - ) + self._show_config_dialog(identifier, False) for action_item in action_items: menu_action = ActionVariantAction( @@ -662,19 +652,17 @@ class ActionsWidget(QtWidgets.QWidget): if not action_id: return is_group = index.data(ACTION_IS_GROUP_ROLE) - addon_name = index.data(ACTION_ADDON_NAME_ROLE) - addon_version = index.data(ACTION_ADDON_VERSION_ROLE) - self._show_config_dialog( - action_id, is_group, addon_name, addon_version - ) + self._show_config_dialog(action_id, is_group) - def _show_config_dialog( - self, action_id, is_group, addon_name, addon_version - ): + def _show_config_dialog(self, action_id, is_group): + item = self._model.get_item_by_id(action_id) config_fields = self._model.get_action_config_fields(action_id) if not config_fields: return + addon_name = item.data(ACTION_ADDON_NAME_ROLE) + addon_version = item.data(ACTION_ADDON_VERSION_ROLE) + project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() From 9787f4ad88cfb2fa215154e53a0c79187b43f9bc Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 26 May 2025 12:23:03 +0200 Subject: [PATCH 411/626] fix number def creation --- client/ayon_core/tools/launcher/ui/actions_widget.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 8fb2b3e60a..25789054e1 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -763,9 +763,9 @@ class ActionsWidget(QtWidgets.QWidget): default=value, label=config_field.get("label"), decimals=0 if field_type == "integer" else 5, - placeholder=config_field.get("placeholder"), - min_value=config_field.get("min"), - max_value=config_field.get("max"), + # placeholder=config_field.get("placeholder"), + minimum=config_field.get("min"), + maximum=config_field.get("max"), ) elif field_type in ("select", "multiselect"): attr_def = EnumDef( From 3184b5a72d87e359b7e50e55d5a6b184e6c25a50 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 26 May 2025 14:58:05 +0200 Subject: [PATCH 412/626] use new 'get_project_root_overrides_by_site_id' --- client/ayon_core/pipeline/anatomy/anatomy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/anatomy/anatomy.py b/client/ayon_core/pipeline/anatomy/anatomy.py index 98bbaa9bdc..9885e383b7 100644 --- a/client/ayon_core/pipeline/anatomy/anatomy.py +++ b/client/ayon_core/pipeline/anatomy/anatomy.py @@ -462,8 +462,8 @@ class Anatomy(BaseAnatomy): Union[Dict[str, str], None]): Local root overrides. """ if not project_name: - return - return ayon_api.get_project_roots_for_site( + return None + return ayon_api.get_project_root_overrides_by_site_id( project_name, get_local_site_id() ) From 5baf624124b106d70d4f1a5d1592a28b8d3eec84 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 26 May 2025 17:55:20 +0200 Subject: [PATCH 413/626] remove mouse tracking --- client/ayon_core/tools/launcher/ui/actions_widget.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 25789054e1..57d657e5d5 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -71,7 +71,6 @@ class ActionVariantWidget(QtWidgets.QFrame): def __init__(self, item_id, label, has_settings, parent): super().__init__(parent) - self.setMouseTracking(True) label_widget = QtWidgets.QLabel(label, self) settings_btn = None From 0be94fc2d80a60e9c1cf3d8018a31e03b904cfeb Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 08:59:38 +0200 Subject: [PATCH 414/626] remove unnecessary line --- client/ayon_core/tools/launcher/ui/actions_widget.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 57d657e5d5..d6338bbb73 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -71,7 +71,6 @@ class ActionVariantWidget(QtWidgets.QFrame): def __init__(self, item_id, label, has_settings, parent): super().__init__(parent) - label_widget = QtWidgets.QLabel(label, self) settings_btn = None if has_settings: From 1b3a08af0189d649ab7eb413bf8b526784405401 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 27 May 2025 10:07:55 +0200 Subject: [PATCH 415/626] Revert exclude family check to maintain old behavior --- client/ayon_core/plugins/publish/cleanup.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/cleanup.py b/client/ayon_core/plugins/publish/cleanup.py index 109dc55c1d..53f1dea071 100644 --- a/client/ayon_core/plugins/publish/cleanup.py +++ b/client/ayon_core/plugins/publish/cleanup.py @@ -72,8 +72,13 @@ class CleanUp(pyblish.api.InstancePlugin): self.log.debug("Cleaning renders new...") self.clean_renders(instance, skip_cleanup_filepaths) + # TODO: Figure out whether this could be refactored to just a + # product_type in self.exclude_families check. product_type = instance.data["productType"] - if product_type in self.exclude_families: + if any( + exclude_family in product_type + for exclude_family in self.exclude_families + ): self.log.debug( "Skipping cleanup for instance because product " f"type is excluded from cleanup: {product_type}") From d5b9e814a732236b0b9dd153772e29195036abad Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 27 May 2025 10:08:43 +0200 Subject: [PATCH 416/626] Fix indent --- client/ayon_core/plugins/publish/cleanup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/plugins/publish/cleanup.py b/client/ayon_core/plugins/publish/cleanup.py index 53f1dea071..4daeacf754 100644 --- a/client/ayon_core/plugins/publish/cleanup.py +++ b/client/ayon_core/plugins/publish/cleanup.py @@ -76,8 +76,8 @@ class CleanUp(pyblish.api.InstancePlugin): # product_type in self.exclude_families check. product_type = instance.data["productType"] if any( - exclude_family in product_type - for exclude_family in self.exclude_families + exclude_family in product_type + for exclude_family in self.exclude_families ): self.log.debug( "Skipping cleanup for instance because product " From bf9c5b61a5c83d23f43dc05be861bc9fb6829fab Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 27 May 2025 10:13:43 +0200 Subject: [PATCH 417/626] Update client/ayon_core/plugins/publish/cleanup.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/plugins/publish/cleanup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/plugins/publish/cleanup.py b/client/ayon_core/plugins/publish/cleanup.py index 4daeacf754..681fe700a3 100644 --- a/client/ayon_core/plugins/publish/cleanup.py +++ b/client/ayon_core/plugins/publish/cleanup.py @@ -76,7 +76,7 @@ class CleanUp(pyblish.api.InstancePlugin): # product_type in self.exclude_families check. product_type = instance.data["productType"] if any( - exclude_family in product_type + product_type in exclude_family for exclude_family in self.exclude_families ): self.log.debug( From bc99edd74d5765968fb34aada785bf0eda72141b Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 10:47:46 +0200 Subject: [PATCH 418/626] remo identifier constance --- server/__init__.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/server/__init__.py b/server/__init__.py index aafd8d6fa5..c252f27762 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -18,9 +18,6 @@ from .settings import ( ) -IDENTIFIER_PREFIX = "core" - - class CoreAddon(BaseServerAddon): settings_model = CoreSettings @@ -51,7 +48,7 @@ class CoreAddon(BaseServerAddon): # Add 'Create Project Folder Structure' action to folders. output.append( SimpleActionManifest( - identifier=f"{IDENTIFIER_PREFIX}.createprojectstructure", + identifier="core.createprojectstructure", label="Create Project Folder Structure", icon={ "type": "material-symbols", @@ -74,9 +71,7 @@ class CoreAddon(BaseServerAddon): project_name = executor.context.project_name - if executor.identifier == \ - f"{IDENTIFIER_PREFIX}.create_project_structure": - + if executor.identifier == "core.createprojectstructure": if not project_name: logger.error( f"Can't execute {executor.identifier} because" From 6a7e1abf5da77d3d4884bed3e9db3f895cf325a5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 10:48:01 +0200 Subject: [PATCH 419/626] use new executor methods --- server/__init__.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/server/__init__.py b/server/__init__.py index c252f27762..208268bbf7 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -77,13 +77,26 @@ class CoreAddon(BaseServerAddon): f"Can't execute {executor.identifier} because" " of missing project name." ) + # Works since AYON server 1.8.3 + if hasattr(executor, "get_simple_response"): + return await executor.get_simple_response( + "Missing project name", success=False + ) return - return await executor.get_launcher_action_response( - args=[ - "create-project-structure", - "--project", project_name, - ] - ) + args = [ + "create-project-structure", "--project", project_name, + ] + # Works since AYON server 1.8.3 + if hasattr(executor, "get_launcher_response"): + return await executor.get_launcher_response(args) + + return await executor.get_launcher_action_response(args) logger.debug(f"Unknown action: {executor.identifier}") + # Works since AYON server 1.8.3 + if hasattr(executor, "get_simple_response"): + return await executor.get_simple_response( + "Unknown action", success=False + ) + return From 6dbbe75099326609cecd47db2de493ddb0a9027e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 10:50:58 +0200 Subject: [PATCH 420/626] remove unnecessary return --- server/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/server/__init__.py b/server/__init__.py index 208268bbf7..662c11679e 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -99,4 +99,3 @@ class CoreAddon(BaseServerAddon): return await executor.get_simple_response( "Unknown action", success=False ) - return From ef1c77bf4c3b225e2c023793865a7244bdafad84 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 10:51:43 +0200 Subject: [PATCH 421/626] change entity type to project --- server/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/__init__.py b/server/__init__.py index 662c11679e..620cb3285c 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -55,7 +55,7 @@ class CoreAddon(BaseServerAddon): "name": "create_new_folder", }, order=100, - entity_type="folder", + entity_type="project", entity_subtypes=None, allow_multiselection=False, ) From 39b85970e25839fddd81d9ed77803e0c22d5b0f1 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 11:03:14 +0200 Subject: [PATCH 422/626] simplified description --- server/settings/main.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/server/settings/main.py b/server/settings/main.py index a5129e69af..67f92f0037 100644 --- a/server/settings/main.py +++ b/server/settings/main.py @@ -302,13 +302,8 @@ class CoreSettings(BaseSettingsModel): widget="textarea", title="Project folder structure", description=( - "Defines project folders to create on 'Create project folders'." - "\n\n" - "- In the launcher, this only creates the folders on disk and " - " when the setting is empty it will be hidden from users in the" - " launcher.\n" - "- In `ayon-ftrack` this will create the folders on disk **and**" - " will also create ftrack entities. It is never hidden there." + "Defines project folders to create on disk" + " for 'Create project folders' action." ), section="---" ) From e86450c48df1bc78c400cfa750605192e1c48125 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 27 May 2025 12:57:56 +0200 Subject: [PATCH 423/626] Allow Templated Workfile Build to build from an AYON Entity URI instead of filepath or templated filepath. --- .../workfile/workfile_template_builder.py | 184 ++++++++++++------ 1 file changed, 121 insertions(+), 63 deletions(-) diff --git a/client/ayon_core/pipeline/workfile/workfile_template_builder.py b/client/ayon_core/pipeline/workfile/workfile_template_builder.py index 27da278c5e..319ebb954e 100644 --- a/client/ayon_core/pipeline/workfile/workfile_template_builder.py +++ b/client/ayon_core/pipeline/workfile/workfile_template_builder.py @@ -17,6 +17,7 @@ import collections import copy from abc import ABC, abstractmethod +import ayon_api from ayon_api import ( get_folders, get_folder_by_path, @@ -60,6 +61,28 @@ from ayon_core.pipeline.create import ( _NOT_SET = object() +def resolve_entity_uri(entity_uri: str) -> str: + """Resolve AYON entity URI to a filesystem path for local system.""" + response = ayon_api.post( + "resolve", + resolveRoots=True, + uris=[entity_uri] + ) + if response.status_code != 200: + raise RuntimeError( + f"Unable to resolve AYON entity URI filepath for " + f"'{entity_uri}': {response.text}" + ) + + entities = response.data[0]["entities"] + if len(entities) != 1: + raise RuntimeError( + f"Unable to resolve AYON entity URI '{entity_uri}' to a " + f"single filepath. Received data: {response.data}" + ) + return entities[0]["filePath"] + + class TemplateNotFound(Exception): """Exception raised when template does not exist.""" pass @@ -823,7 +846,6 @@ class AbstractTemplateBuilder(ABC): """ host_name = self.host_name - project_name = self.project_name task_name = self.current_task_name task_type = self.current_task_type @@ -836,6 +858,8 @@ class AbstractTemplateBuilder(ABC): } ) + print("Build profiles", build_profiles) + if not profile: raise TemplateProfileNotFound(( "No matching profile found for task '{}' of type '{}' " @@ -843,6 +867,15 @@ class AbstractTemplateBuilder(ABC): ).format(task_name, task_type, host_name)) path = profile["path"] + if not path: + raise TemplateLoadFailed(( + "Template path is not set.\n" + "Path need to be set in {}\\Template Workfile Build " + "Settings\\Profiles" + ).format(host_name.title())) + + resolved_path = self.resolve_template_path(path) + self.log.info(f"Found template at: '{resolved_path}'") # switch to remove placeholders after they are used keep_placeholder = profile.get("keep_placeholder") @@ -852,86 +885,111 @@ class AbstractTemplateBuilder(ABC): if keep_placeholder is None: keep_placeholder = True - if not path: - raise TemplateLoadFailed(( - "Template path is not set.\n" - "Path need to be set in {}\\Template Workfile Build " - "Settings\\Profiles" - ).format(host_name.title())) - - # Try to fill path with environments and anatomy roots - anatomy = Anatomy(project_name) - fill_data = { - key: value - for key, value in os.environ.items() - } - - fill_data["root"] = anatomy.roots - fill_data["project"] = { - "name": project_name, - "code": anatomy.project_code, - } - - path = self.resolve_template_path(path, fill_data) - - if path and os.path.exists(path): - self.log.info("Found template at: '{}'".format(path)) - return { - "path": path, - "keep_placeholder": keep_placeholder, - "create_first_version": create_first_version - } - - solved_path = None - while True: - try: - solved_path = anatomy.path_remapper(path) - except KeyError as missing_key: - raise KeyError( - "Could not solve key '{}' in template path '{}'".format( - missing_key, path)) - - if solved_path is None: - solved_path = path - if solved_path == path: - break - path = solved_path - - solved_path = os.path.normpath(solved_path) - if not os.path.exists(solved_path): - raise TemplateNotFound( - "Template found in AYON settings for task '{}' with host " - "'{}' does not exists. (Not found : {})".format( - task_name, host_name, solved_path)) - - self.log.info("Found template at: '{}'".format(solved_path)) - return { - "path": solved_path, + "path": resolved_path, "keep_placeholder": keep_placeholder, "create_first_version": create_first_version } - def resolve_template_path(self, path, fill_data) -> str: + def resolve_template_path(self, path, fill_data=None) -> str: """Resolve the template path. - By default, this does nothing except returning the path directly. + By default, this: + - Resolves AYON entity URI to a filesystem path + - Returns path directly if it exists on disk. + - Resolves template keys through anatomy and environment variables. This can be overridden in host integrations to perform additional resolving over the template. Like, `hou.text.expandString` in Houdini. + It's recommended to still call the super().resolve_template_path() + to ensure the basic resolving is done across all integrations. Arguments: path (str): The input path. - fill_data (dict[str, str]): Data to use for template formatting. + fill_data (dict[str, str]): Deprecated. This is computed inside + the method using the current environment and project settings. + Used to be the data to use for template formatting. Returns: str: The resolved path. """ - result = StringTemplate.format_template(path, fill_data) - if result.solved: - path = result.normalized() - return path + + # If the path is an AYON entity URI, then resolve the filepath + # through the backend + if path.startswith("ayon+entity://") or path.startswith("ayon://"): + # This is a special case where the path is an AYON entity URI + # We need to resolve it to a filesystem path + resolved_path = resolve_entity_uri(path) + if not os.path.exists(resolved_path): + raise TemplateNotFound( + "Template found in AYON settings for task '{}' with host " + "'{}' does not resolve AYON entity URI '{}' " + "to an existing file on disk: '{}'".format( + self.current_task_name, + self.host_name, + path, + resolved_path, + ) + ) + return resolved_path + + # If the path is set and it's found on disk, return it directly + if path and os.path.exists(path): + return path + + # Otherwise assume a path with template keys, we do a very mundane + # check whether `{` or `<` is present in the path. + if "{" in path or "<" in path: + # Resolve keys through anatomy + project_name = self.project_name + task_name = self.current_task_name + host_name = self.host_name + + # Try to fill path with environments and anatomy roots + anatomy = Anatomy(project_name) + fill_data = { + key: value + for key, value in os.environ.items() + } + + fill_data["root"] = anatomy.roots + fill_data["project"] = { + "name": project_name, + "code": anatomy.project_code, + } + + # Recursively remap anatomy paths + while True: + try: + solved_path = anatomy.path_remapper(path) + except KeyError as missing_key: + raise KeyError( + f"Could not solve key '{missing_key}'" + f" in template path '{path}'" + ) + + if solved_path is None: + solved_path = path + if solved_path == path: + break + path = solved_path + + solved_path = os.path.normpath(solved_path) + if not os.path.exists(solved_path): + raise TemplateNotFound( + "Template found in AYON settings for task '{}' with host " + "'{}' does not exists. (Not found : {})".format( + task_name, host_name, solved_path)) + + result = StringTemplate.format_template(path, fill_data) + if result.solved: + path = result.normalized() + return path + + raise TemplateNotFound( + f"Unable to resolve template path: '{path}'" + ) def emit_event(self, topic, data=None, source=None) -> Event: return self._event_system.emit(topic, data, source) From 956121ba9649d1013ee36b7e1949c871e1795981 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 27 May 2025 13:01:43 +0200 Subject: [PATCH 424/626] Remove debug print --- .../ayon_core/pipeline/workfile/workfile_template_builder.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/ayon_core/pipeline/workfile/workfile_template_builder.py b/client/ayon_core/pipeline/workfile/workfile_template_builder.py index 319ebb954e..f756190991 100644 --- a/client/ayon_core/pipeline/workfile/workfile_template_builder.py +++ b/client/ayon_core/pipeline/workfile/workfile_template_builder.py @@ -857,9 +857,6 @@ class AbstractTemplateBuilder(ABC): "task_names": task_name } ) - - print("Build profiles", build_profiles) - if not profile: raise TemplateProfileNotFound(( "No matching profile found for task '{}' of type '{}' " From d312101573e6505fa462390ab3da29aa441c3bcf Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 27 May 2025 18:29:12 +0200 Subject: [PATCH 425/626] use tooltip widget to show subactions --- client/ayon_core/style/style.css | 5 + .../tools/launcher/ui/actions_widget.py | 364 +++++++++++++----- 2 files changed, 267 insertions(+), 102 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index 70ab552f75..d75837a656 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -829,6 +829,11 @@ HintedLineEditButton { } /* Launcher specific stylesheets */ +ActionMenuToolTip { + border: 1px solid #555555; + background: {color:bg-inputs}; +} + ActionVariantWidget { background: transparent; } diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index d6338bbb73..071982e3fa 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -304,13 +304,219 @@ class ActionsQtModel(QtGui.QStandardItemModel): self.refresh() +class ActionMenuToolTip(QtWidgets.QFrame): + def __init__(self, parent): + super().__init__(parent) + + self.setWindowFlags(QtCore.Qt.ToolTip) + self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating, True) + self.setAutoFillBackground(True) + self.setBackgroundRole(QtGui.QPalette.Base) + + # Update size on show + show_timer = QtCore.QTimer() + show_timer.setSingleShot(True) + show_timer.setInterval(5) + + # Close widget if is not updated by event + close_timer = QtCore.QTimer() + close_timer.setSingleShot(True) + close_timer.setInterval(100) + + update_state_timer = QtCore.QTimer() + update_state_timer.setInterval(500) + + main_layout = QtWidgets.QVBoxLayout(self) + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + close_timer.timeout.connect(self.close) + show_timer.timeout.connect(self._on_show_timer) + update_state_timer.timeout.connect(self._on_update_state) + + self._main_layout = main_layout + self._show_timer = show_timer + self._close_timer = close_timer + self._update_state_timer = update_state_timer + + self._showed = False + self._mouse_entered = False + self._view_hovered = False + self._current_id = None + self._view = None + self._last_pos = QtCore.QPoint(0, 0) + self._widgets_by_id = {} + + def showEvent(self, event): + self._showed = True + self._update_state_timer.start() + super().showEvent(event) + + def closeEvent(self, event): + self._showed = False + self._update_state_timer.stop() + self._mouse_entered = False + super().closeEvent(event) + + def enterEvent(self, event): + self._mouse_entered = True + self._close_timer.stop() + super().leaveEvent(event) + + def leaveEvent(self, event): + self._mouse_entered = False + super().leaveEvent(event) + if not self._view_hovered: + self._close_timer.start() + + def mouse_entered_view(self): + self._view_hovered = True + + def mouse_left_view(self): + self._view_hovered = False + if not self._mouse_entered: + self._close_timer.start() + + def show_on_event(self, action_id, action_items, view, event): + self._close_timer.stop() + + self._view_hovered = True + + is_current = action_id == self._current_id + if not is_current: + self._current_id = action_id + self._view = view + self._update_items(view, action_items) + + # Nothing to show + if not self._widgets_by_id: + if self._showed: + self.close() + return + + # Make sure is visible + update_position = not is_current + if not self._showed: + update_position = True + self.show() + + self._last_pos = QtCore.QPoint(event.globalPos()) + if not update_position: + # Only resize if is current + self.resize(self.sizeHint()) + else: + # Set geometry to position + # - first make sure widget changes from '_update_items' + # are recalculated + app = QtWidgets.QApplication.instance() + app.processEvents() + self._on_update_state() + + self.raise_() + self._show_timer.start() + + def _on_show_timer(self): + size = self.sizeHint() + self.resize(size) + + def _on_update_state(self): + if not self._view_hovered: + return + size = self.sizeHint() + pos = self._last_pos + offset = 4 + self.setGeometry( + pos.x() + offset, pos.y() + offset, + size.width(), size.height() + ) + + def _update_items(self, view, action_items): + """Update items in the tooltip.""" + # This method can be used to update the content of the tooltip + # with new icon, text and settings button visibility. + + remove_ids = set(self._widgets_by_id.keys()) + new_ids = set() + widgets = [] + + any_has_settings = False + prepared_items = [] + for idx, action_item in enumerate(action_items): + has_settings = bool(action_item.config_fields) + if has_settings: + any_has_settings = True + prepared_items.append((idx, action_item, has_settings)) + + if any_has_settings or len(action_items) > 1: + for idx, action_item, has_settings in prepared_items: + widget = self._widgets_by_id.get(action_item.identifier) + icon = get_qt_icon(action_item.icon) + label = action_item.full_label + if widget is None: + widget = ActionVariantWidget( + action_item.identifier, label, has_settings, self + ) + widget.settings_requested.connect( + view.settings_requested + ) + new_ids.add(action_item.identifier) + self._widgets_by_id[action_item.identifier] = widget + else: + remove_ids.discard(action_item.identifier) + widgets.append((idx, widget)) + + for action_id in remove_ids: + widget = self._widgets_by_id.pop(action_id) + widget.setVisible(False) + self._main_layout.removeWidget(widget) + widget.deleteLater() + + for idx, widget in widgets: + self._main_layout.insertWidget(idx, widget, 0) + + class ActionDelegate(QtWidgets.QStyledItemDelegate): _cached_extender = {} def __init__(self, *args, **kwargs): - super(ActionDelegate, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self._anim_start_color = QtGui.QColor(178, 255, 246) self._anim_end_color = QtGui.QColor(5, 44, 50) + self._tooltip_widget = None + + def helpEvent(self, event, view, option, index): + if not index.isValid(): + if self._tooltip_widget is not None: + self._tooltip_widget.close() + return False + + action_id = index.data(ACTION_ID_ROLE) + model = index.model() + source_model = model.sourceModel() + if index.data(ACTION_IS_GROUP_ROLE): + action_items = source_model.get_group_items(action_id) + else: + action_items = [source_model.get_action_item_by_id(action_id)] + if self._tooltip_widget is None: + self._tooltip_widget = ActionMenuToolTip(view) + + self._tooltip_widget.show_on_event( + action_id, action_items, view, event + ) + event.setAccepted(True) + return True + + def close_tooltip(self): + if self._tooltip_widget is not None: + self._tooltip_widget.close() + + def mouse_entered_view(self): + if self._tooltip_widget is not None: + self._tooltip_widget.mouse_entered_view() + + def mouse_left_view(self): + if self._tooltip_widget is not None: + self._tooltip_widget.mouse_left_view() def _draw_animation(self, painter, option, index): grid_size = option.widget.gridSize() @@ -430,29 +636,51 @@ class ActionsProxyModel(QtCore.QSortFilterProxyModel): return True +class ActionsView(QtWidgets.QListView): + settings_requested = QtCore.Signal(str) + + def __init__(self, parent): + super().__init__(parent) + self.setProperty("mode", "icon") + self.setObjectName("IconView") + self.setViewMode(QtWidgets.QListView.IconMode) + self.setResizeMode(QtWidgets.QListView.Adjust) + self.setSelectionMode(QtWidgets.QListView.NoSelection) + self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.setWrapping(True) + self.setGridSize(QtCore.QSize(70, 75)) + self.setIconSize(QtCore.QSize(30, 30)) + self.setSpacing(0) + self.setWordWrap(True) + self.setToolTipDuration(150) + + delegate = ActionDelegate(self) + self.setItemDelegate(delegate) + + # Make view flickable + flick = FlickCharm(parent=self) + flick.activateOn(self) + + self._flick = flick + self._delegate = delegate + + def enterEvent(self, event): + super().enterEvent(event) + self._delegate.mouse_entered_view() + + def leaveEvent(self, event): + super().leaveEvent(event) + self._delegate.mouse_left_view() + + class ActionsWidget(QtWidgets.QWidget): def __init__(self, controller, parent): - super(ActionsWidget, self).__init__(parent) + super().__init__(parent) self._controller = controller - view = QtWidgets.QListView(self) - view.setProperty("mode", "icon") - view.setObjectName("IconView") - view.setViewMode(QtWidgets.QListView.IconMode) - view.setResizeMode(QtWidgets.QListView.Adjust) - view.setSelectionMode(QtWidgets.QListView.NoSelection) - view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - view.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) - view.setWrapping(True) - view.setGridSize(QtCore.QSize(70, 75)) - view.setIconSize(QtCore.QSize(30, 30)) - view.setSpacing(0) - view.setWordWrap(True) - - # Make view flickable - flick = FlickCharm(parent=view) - flick.activateOn(view) + view = ActionsView(self) model = ActionsQtModel(controller) @@ -460,9 +688,6 @@ class ActionsWidget(QtWidgets.QWidget): proxy_model.setSourceModel(model) view.setModel(proxy_model) - delegate = ActionDelegate(self) - view.setItemDelegate(delegate) - layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(view) @@ -472,13 +697,12 @@ class ActionsWidget(QtWidgets.QWidget): animation_timer.timeout.connect(self._on_animation) view.clicked.connect(self._on_clicked) - view.customContextMenuRequested.connect(self._on_context_menu) + view.settings_requested.connect(self._show_config_dialog) model.refreshed.connect(self._on_model_refresh) self._animated_items = set() self._animation_timer = animation_timer - self._flick = flick self._view = view self._model = model self._proxy_model = proxy_model @@ -572,37 +796,27 @@ class ActionsWidget(QtWidgets.QWidget): return is_group = index.data(ACTION_IS_GROUP_ROLE) + # TODO define and store what is default action for a group action_id = index.data(ACTION_ID_ROLE) project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() - if is_group: - action_item = self._show_menu_on_group(action_id) - if action_item is None: - return - - action_id = action_item.identifier - action_label = action_item.full_label - action_type = action_item.action_type - addon_name = action_item.addon_name - addon_version = action_item.addon_version - else: - action_label = index.data(QtCore.Qt.DisplayRole) - action_type = index.data(ACTION_TYPE_ROLE) - addon_name = index.data(ACTION_ADDON_NAME_ROLE) - addon_version = index.data(ACTION_ADDON_VERSION_ROLE) + action_type = index.data(ACTION_TYPE_ROLE) if action_type == "webaction": + action_item = self._model.get_action_item_by_id(action_id) context = WebactionContext( action_id, project_name, folder_id, task_id, - addon_name, - addon_version + action_item.addon_name, + action_item.add_version + ) + self._controller.trigger_webaction( + context, action_item.full_label ) - self._controller.trigger_webaction(context, action_label) else: self._controller.trigger_action( action_id, project_name, folder_id, task_id @@ -610,57 +824,12 @@ class ActionsWidget(QtWidgets.QWidget): self._start_animation(index) - def _show_menu_on_group(self, action_id): - action_items = self._model.get_group_items(action_id) - - menu = QtWidgets.QMenu(self) - actions_mapping = {} - - def on_settings_clicked(identifier): - # Close menu - menu.close() - - # Show config dialog - self._show_config_dialog(identifier, False) - - for action_item in action_items: - menu_action = ActionVariantAction( - action_item.identifier, - action_item.full_label, - bool(action_item.config_fields), - menu, - ) - menu_action.settings_requested.connect(on_settings_clicked) - menu.addAction(menu_action) - actions_mapping[menu_action] = action_item - - result = menu.exec_(QtGui.QCursor.pos()) - if not result: - return None - - return actions_mapping[result] - - def _on_context_menu(self, point): - """Creates menu to force skip opening last workfile.""" - index = self._view.indexAt(point) - if not index.isValid(): - return - - action_id = index.data(ACTION_ID_ROLE) - if not action_id: - return - is_group = index.data(ACTION_IS_GROUP_ROLE) - self._show_config_dialog(action_id, is_group) - - def _show_config_dialog(self, action_id, is_group): - item = self._model.get_item_by_id(action_id) + def _show_config_dialog(self, action_id): + action_item = self._model.get_action_item_by_id(action_id) config_fields = self._model.get_action_config_fields(action_id) if not config_fields: return - addon_name = item.data(ACTION_ADDON_NAME_ROLE) - addon_version = item.data(ACTION_ADDON_VERSION_ROLE) - project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() @@ -669,8 +838,8 @@ class ActionsWidget(QtWidgets.QWidget): project_name=project_name, folder_id=folder_id, task_id=task_id, - addon_name=addon_name, - addon_version=addon_version, + addon_name=action_item.addon_name, + addon_version=action_item.addon_version, ) values = self._controller.get_action_config_values(context) @@ -682,17 +851,8 @@ class ActionsWidget(QtWidgets.QWidget): ) dialog.set_values(values) result = dialog.exec_() - if result != QtWidgets.QDialog.Accepted: - return - new_values = dialog.get_values() - if is_group: - action_items = self._model.get_group_items(action_id) - action_ids = [item.identifier for item in action_items] - else: - action_ids = [action_id] - - for action_id in action_ids: - context.identifier = action_id + if result == QtWidgets.QDialog.Accepted: + new_values = dialog.get_values() self._controller.set_action_config_values(context, new_values) def _create_attrs_dialog( From 9416d8b1f98be3fcab730b00501f01fb7aefeff7 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 12:02:39 +0200 Subject: [PATCH 426/626] fix typo --- client/ayon_core/tools/launcher/ui/actions_widget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 071982e3fa..03906d3267 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -812,7 +812,7 @@ class ActionsWidget(QtWidgets.QWidget): folder_id, task_id, action_item.addon_name, - action_item.add_version + action_item.addon_version ) self._controller.trigger_webaction( context, action_item.full_label From 720e161deb931dc2ef2721e89e1b96718e7a6fc6 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 12:25:55 +0200 Subject: [PATCH 427/626] add clickable label to the shown menu --- .../tools/launcher/ui/actions_widget.py | 49 ++++++++++++++++--- client/ayon_core/tools/utils/widgets.py | 8 +-- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 03906d3267..15547db03f 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -14,7 +14,7 @@ from ayon_core.lib.attribute_definitions import ( HiddenDef, ) from ayon_core.tools.flickcharm import FlickCharm -from ayon_core.tools.utils import get_qt_icon, SquareButton +from ayon_core.tools.utils import get_qt_icon, SquareButton, ClickableLabel from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog from ayon_core.tools.launcher.abstract import WebactionContext @@ -66,12 +66,13 @@ class LauncherSettingsButton(SquareButton): class ActionVariantWidget(QtWidgets.QFrame): + action_triggered = QtCore.Signal(str) settings_requested = QtCore.Signal(str) def __init__(self, item_id, label, has_settings, parent): super().__init__(parent) - label_widget = QtWidgets.QLabel(label, self) + label_widget = ClickableLabel(label, self) settings_btn = None if has_settings: settings_btn = LauncherSettingsButton(self) @@ -85,6 +86,7 @@ class ActionVariantWidget(QtWidgets.QFrame): layout.addWidget(settings_btn, 0) settings_btn.clicked.connect(self._on_settings_clicked) + label_widget.clicked.connect(self._on_trigger) self._item_id = item_id self._label_widget = label_widget @@ -105,6 +107,9 @@ class ActionVariantWidget(QtWidgets.QFrame): self._set_hover_properties(False) super().leaveEvent(event) + def _on_trigger(self): + self.action_triggered.emit(self._item_id) + def _on_settings_clicked(self): self.settings_requested.emit(self._item_id) @@ -186,6 +191,18 @@ class ActionsQtModel(QtGui.QStandardItemModel): def get_item_by_id(self, action_id): return self._items_by_id.get(action_id) + def get_group_item_by_action_id(self, action_id): + item = self._items_by_id.get(action_id) + if item is not None: + return item + + for group_id, items in self._groups_by_id.items(): + for item in items: + if item.identifier == action_id: + return self._items_by_id[group_id] + + return None + def get_action_item_by_id(self, action_id): return self._action_items_by_id.get(action_id) @@ -456,8 +473,9 @@ class ActionMenuToolTip(QtWidgets.QFrame): widget = ActionVariantWidget( action_item.identifier, label, has_settings, self ) + widget.action_triggered.connect(self._on_trigger) widget.settings_requested.connect( - view.settings_requested + self._on_settings_trigger ) new_ids.add(action_item.identifier) self._widgets_by_id[action_item.identifier] = widget @@ -474,6 +492,15 @@ class ActionMenuToolTip(QtWidgets.QFrame): for idx, widget in widgets: self._main_layout.insertWidget(idx, widget, 0) + def _on_trigger(self, action_id): + self.close() + self._view.action_triggered.emit(action_id) + + def _on_settings_trigger(self, action_id): + """Handle settings button click.""" + self.close() + self._view.settings_requested.emit(action_id) + class ActionDelegate(QtWidgets.QStyledItemDelegate): _cached_extender = {} @@ -637,6 +664,7 @@ class ActionsProxyModel(QtCore.QSortFilterProxyModel): class ActionsView(QtWidgets.QListView): + action_triggered = QtCore.Signal(str) settings_requested = QtCore.Signal(str) def __init__(self, parent): @@ -697,6 +725,7 @@ class ActionsWidget(QtWidgets.QWidget): animation_timer.timeout.connect(self._on_animation) view.clicked.connect(self._on_clicked) + view.action_triggered.connect(self._trigger_action) view.settings_requested.connect(self._show_config_dialog) model.refreshed.connect(self._on_model_refresh) @@ -798,13 +827,15 @@ class ActionsWidget(QtWidgets.QWidget): is_group = index.data(ACTION_IS_GROUP_ROLE) # TODO define and store what is default action for a group action_id = index.data(ACTION_ID_ROLE) + self._trigger_action(action_id, index) + def _trigger_action(self, action_id, index=None): project_name = self._model.get_selected_project_name() folder_id = self._model.get_selected_folder_id() task_id = self._model.get_selected_task_id() + action_item = self._model.get_action_item_by_id(action_id) - action_type = index.data(ACTION_TYPE_ROLE) - if action_type == "webaction": + if action_item.action_type == "webaction": action_item = self._model.get_action_item_by_id(action_id) context = WebactionContext( action_id, @@ -822,7 +853,13 @@ class ActionsWidget(QtWidgets.QWidget): action_id, project_name, folder_id, task_id ) - self._start_animation(index) + if index is None: + item = self._model.get_group_item_by_action_id(action_id) + if item is not None: + index = self._proxy_model.mapFromSource(item.index()) + + if index is not None: + self._start_animation(index) def _show_config_dialog(self, action_id): action_item = self._model.get_action_item_by_id(action_id) diff --git a/client/ayon_core/tools/utils/widgets.py b/client/ayon_core/tools/utils/widgets.py index b842d3a4b8..234b8a5566 100644 --- a/client/ayon_core/tools/utils/widgets.py +++ b/client/ayon_core/tools/utils/widgets.py @@ -495,15 +495,15 @@ class ClickableLabel(QtWidgets.QLabel): """Label that catch left mouse click and can trigger 'clicked' signal.""" clicked = QtCore.Signal() - def __init__(self, parent): - super(ClickableLabel, self).__init__(parent) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) self._mouse_pressed = False def mousePressEvent(self, event): if event.button() == QtCore.Qt.LeftButton: self._mouse_pressed = True - super(ClickableLabel, self).mousePressEvent(event) + super().mousePressEvent(event) def mouseReleaseEvent(self, event): if self._mouse_pressed: @@ -511,7 +511,7 @@ class ClickableLabel(QtWidgets.QLabel): if self.rect().contains(event.pos()): self.clicked.emit() - super(ClickableLabel, self).mouseReleaseEvent(event) + super().mouseReleaseEvent(event) class ExpandBtnLabel(QtWidgets.QLabel): From f7c072ce2a339deeedd5d002c5eb17c1b63fbec7 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 13:17:41 +0200 Subject: [PATCH 428/626] show action icon in menu --- .../tools/launcher/ui/actions_widget.py | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 15547db03f..3760d8b470 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -14,7 +14,12 @@ from ayon_core.lib.attribute_definitions import ( HiddenDef, ) from ayon_core.tools.flickcharm import FlickCharm -from ayon_core.tools.utils import get_qt_icon, SquareButton, ClickableLabel +from ayon_core.tools.utils import ( + get_qt_icon, + SquareButton, + ClickableLabel, + PixmapLabel, +) from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog from ayon_core.tools.launcher.abstract import WebactionContext @@ -69,9 +74,13 @@ class ActionVariantWidget(QtWidgets.QFrame): action_triggered = QtCore.Signal(str) settings_requested = QtCore.Signal(str) - def __init__(self, item_id, label, has_settings, parent): + def __init__(self, item_id, icon, label, has_settings, parent): super().__init__(parent) + icon_widget = None + if icon: + icon_widget = PixmapLabel(icon.pixmap(512, 512), self) + label_widget = ClickableLabel(label, self) settings_btn = None if has_settings: @@ -80,6 +89,10 @@ class ActionVariantWidget(QtWidgets.QFrame): layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(6, 4, 4, 4) layout.setSpacing(0) + if icon_widget is not None: + layout.addWidget(icon_widget, 0) + layout.addSpacing(6) + layout.addWidget(label_widget, 1) if settings_btn is not None: layout.addSpacing(6) @@ -89,6 +102,7 @@ class ActionVariantWidget(QtWidgets.QFrame): label_widget.clicked.connect(self._on_trigger) self._item_id = item_id + self._icon_widget = icon_widget self._label_widget = label_widget self._settings_btn = settings_btn @@ -471,7 +485,11 @@ class ActionMenuToolTip(QtWidgets.QFrame): label = action_item.full_label if widget is None: widget = ActionVariantWidget( - action_item.identifier, label, has_settings, self + action_item.identifier, + icon, + label, + has_settings, + self ) widget.action_triggered.connect(self._on_trigger) widget.settings_requested.connect( From 74bdd09a165e1f4ed8073d7d7fa9d4479c54cdfe Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 13:20:46 +0200 Subject: [PATCH 429/626] fix ruff issue --- client/ayon_core/tools/launcher/ui/actions_widget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 3760d8b470..70d49d36c0 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -842,7 +842,7 @@ class ActionsWidget(QtWidgets.QWidget): if not index or not index.isValid(): return - is_group = index.data(ACTION_IS_GROUP_ROLE) + _is_group = index.data(ACTION_IS_GROUP_ROLE) # TODO define and store what is default action for a group action_id = index.data(ACTION_ID_ROLE) self._trigger_action(action_id, index) From ae88357f6e332b6d5cc8480390593a174c07fad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 28 May 2025 13:51:28 +0200 Subject: [PATCH 430/626] :sparkles: add product base compatibility check function simple function to handle transitional period until product base types are implemented and current use of product types is switched completely. --- client/ayon_core/pipeline/compatibility.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 client/ayon_core/pipeline/compatibility.py diff --git a/client/ayon_core/pipeline/compatibility.py b/client/ayon_core/pipeline/compatibility.py new file mode 100644 index 0000000000..de8c8f39a6 --- /dev/null +++ b/client/ayon_core/pipeline/compatibility.py @@ -0,0 +1,16 @@ +"""Package to handle compatibility checks for pipeline components.""" + + +def is_supporting_product_base_type() -> bool: + """Check support for product base types. + + This function checks if the current pipeline supports product base types. + Once this feature is implemented, it will return True. This should be used + in places where some kind of backward compatibility is needed to avoid + breaking existing functionality that relies on the current behavior. + + Returns: + bool: True if product base types are supported, False otherwise. + + """ + return False From 5cf146ee86303c36a5b32c800f81e6d8028de589 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 14:43:47 +0200 Subject: [PATCH 431/626] show the popup at the moment of hover --- client/ayon_core/style/style.css | 10 +- .../tools/launcher/ui/actions_widget.py | 271 +++++++++--------- 2 files changed, 147 insertions(+), 134 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index d75837a656..979365f874 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -843,10 +843,18 @@ ActionVariantWidget[state="hover"], #OptionalActionOption[state="hover"] { } LauncherSettingsButton { + icon-size: 15px; background: transparent; + border: 1px solid #f4f5f5; + padding: 1px 3px 1px 3px; } -LauncherSettingsButton:hover { +LauncherSettingsButton[inMenu="1"] { + border: none; + padding: 3px 5px 3px 5px; +} + +LauncherSettingsButton:hover, LauncherSettingsButton[inMenu="1"]:hover { border: 1px solid #f4f5f5; } diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 70d49d36c0..3a5401f362 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -17,7 +17,7 @@ from ayon_core.tools.flickcharm import FlickCharm from ayon_core.tools.utils import ( get_qt_icon, SquareButton, - ClickableLabel, + ClickableFrame, PixmapLabel, ) from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog @@ -30,11 +30,12 @@ ANIMATION_LEN = 7 ACTION_ID_ROLE = QtCore.Qt.UserRole + 1 ACTION_TYPE_ROLE = QtCore.Qt.UserRole + 2 ACTION_IS_GROUP_ROLE = QtCore.Qt.UserRole + 3 -ACTION_SORT_ROLE = QtCore.Qt.UserRole + 4 -ACTION_ADDON_NAME_ROLE = QtCore.Qt.UserRole + 5 -ACTION_ADDON_VERSION_ROLE = QtCore.Qt.UserRole + 6 -ANIMATION_START_ROLE = QtCore.Qt.UserRole + 7 -ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 8 +ACTION_HAS_CONFIGS_ROLE = QtCore.Qt.UserRole + 4 +ACTION_SORT_ROLE = QtCore.Qt.UserRole + 5 +ACTION_ADDON_NAME_ROLE = QtCore.Qt.UserRole + 6 +ACTION_ADDON_VERSION_ROLE = QtCore.Qt.UserRole + 7 +ANIMATION_START_ROLE = QtCore.Qt.UserRole + 8 +ANIMATION_STATE_ROLE = QtCore.Qt.UserRole + 9 def _variant_label_sort_getter(action_item): @@ -69,22 +70,51 @@ class LauncherSettingsButton(SquareButton): }) return cls._settings_icon + def set_is_in_menu(self, in_menu): + value = "1" if in_menu else "" + self.setProperty("inMenu", value) + self.style().polish(self) -class ActionVariantWidget(QtWidgets.QFrame): + +class ActionOverlayWidget(QtWidgets.QFrame): + config_requested = QtCore.Signal(str) + + def __init__(self, item_id, parent): + super().__init__(parent) + self._item_id = item_id + + settings_btn = LauncherSettingsButton(self) + + main_layout = QtWidgets.QGridLayout(self) + main_layout.setContentsMargins(5, 5, 0, 0) + main_layout.addWidget(settings_btn, 0, 0) + main_layout.setColumnStretch(1, 1) + main_layout.setRowStretch(1, 1) + + settings_btn.clicked.connect(self._on_settings_click) + + self.setAttribute(QtCore.Qt.WA_TranslucentBackground) + + def _on_settings_click(self): + self.config_requested.emit(self._item_id) + + +class ActionVariantWidget(ClickableFrame): action_triggered = QtCore.Signal(str) - settings_requested = QtCore.Signal(str) + config_requested = QtCore.Signal(str) - def __init__(self, item_id, icon, label, has_settings, parent): + def __init__(self, item_id, icon, label, has_configs, parent): super().__init__(parent) icon_widget = None if icon: icon_widget = PixmapLabel(icon.pixmap(512, 512), self) - label_widget = ClickableLabel(label, self) + label_widget = QtWidgets.QLabel(label, self) settings_btn = None - if has_settings: + if has_configs: settings_btn = LauncherSettingsButton(self) + settings_btn.set_is_in_menu(True) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(6, 4, 4, 4) @@ -99,7 +129,7 @@ class ActionVariantWidget(QtWidgets.QFrame): layout.addWidget(settings_btn, 0) settings_btn.clicked.connect(self._on_settings_clicked) - label_widget.clicked.connect(self._on_trigger) + self.clicked.connect(self._on_trigger) self._item_id = item_id self._icon_widget = icon_widget @@ -125,7 +155,7 @@ class ActionVariantWidget(QtWidgets.QFrame): self.action_triggered.emit(self._item_id) def _on_settings_clicked(self): - self.settings_requested.emit(self._item_id) + self.config_requested.emit(self._item_id) def _set_hover_properties(self, hovered): state = "hover" if hovered else "" @@ -134,26 +164,6 @@ class ActionVariantWidget(QtWidgets.QFrame): self.style().polish(self) -class ActionVariantAction(QtWidgets.QWidgetAction): - """Menu action with settings button.""" - settings_requested = QtCore.Signal(str) - - def __init__(self, item_id, label, has_settings, parent): - super().__init__(parent) - self._item_id = item_id - self._label = label - self._has_settings = has_settings - self._widget = None - - def createWidget(self, parent): - widget = ActionVariantWidget( - self._item_id, self._label, self._has_settings, parent - ) - widget.settings_requested.connect(self.settings_requested) - self._widget = widget - return widget - - class ActionsQtModel(QtGui.QStandardItemModel): """Qt model for actions. @@ -214,7 +224,6 @@ class ActionsQtModel(QtGui.QStandardItemModel): for item in items: if item.identifier == action_id: return self._items_by_id[group_id] - return None def get_action_item_by_id(self, action_id): @@ -276,9 +285,11 @@ class ActionsQtModel(QtGui.QStandardItemModel): icon = get_qt_icon(transparent_icon.copy()) if is_group: + has_configs = False label = action_item.label else: label = action_item.full_label + has_configs = bool(action_item.config_fields) item = self._items_by_id.get(action_item.identifier) if item is None: @@ -290,6 +301,7 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setData(label, QtCore.Qt.DisplayRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(is_group, ACTION_IS_GROUP_ROLE) + item.setData(has_configs, ACTION_HAS_CONFIGS_ROLE) item.setData(action_item.action_type, ACTION_TYPE_ROLE) item.setData(action_item.addon_name, ACTION_ADDON_NAME_ROLE) item.setData(action_item.addon_version, ACTION_ADDON_VERSION_ROLE) @@ -335,11 +347,14 @@ class ActionsQtModel(QtGui.QStandardItemModel): self.refresh() -class ActionMenuToolTip(QtWidgets.QFrame): +class ActionMenuPopup(QtWidgets.QFrame): + action_triggered = QtCore.Signal(str) + config_requested = QtCore.Signal(str) + def __init__(self, parent): super().__init__(parent) - self.setWindowFlags(QtCore.Qt.ToolTip) + self.setWindowFlags(QtCore.Qt.Popup) self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating, True) self.setAutoFillBackground(True) self.setBackgroundRole(QtGui.QPalette.Base) @@ -354,38 +369,29 @@ class ActionMenuToolTip(QtWidgets.QFrame): close_timer.setSingleShot(True) close_timer.setInterval(100) - update_state_timer = QtCore.QTimer() - update_state_timer.setInterval(500) - main_layout = QtWidgets.QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) close_timer.timeout.connect(self.close) show_timer.timeout.connect(self._on_show_timer) - update_state_timer.timeout.connect(self._on_update_state) self._main_layout = main_layout self._show_timer = show_timer self._close_timer = close_timer - self._update_state_timer = update_state_timer self._showed = False self._mouse_entered = False - self._view_hovered = False self._current_id = None - self._view = None self._last_pos = QtCore.QPoint(0, 0) self._widgets_by_id = {} def showEvent(self, event): self._showed = True - self._update_state_timer.start() super().showEvent(event) def closeEvent(self, event): self._showed = False - self._update_state_timer.stop() self._mouse_entered = False super().closeEvent(event) @@ -397,27 +403,15 @@ class ActionMenuToolTip(QtWidgets.QFrame): def leaveEvent(self, event): self._mouse_entered = False super().leaveEvent(event) - if not self._view_hovered: - self._close_timer.start() + self._close_timer.start() - def mouse_entered_view(self): - self._view_hovered = True - - def mouse_left_view(self): - self._view_hovered = False - if not self._mouse_entered: - self._close_timer.start() - - def show_on_event(self, action_id, action_items, view, event): + def show_items(self, action_id, action_items, pos): self._close_timer.stop() - self._view_hovered = True - is_current = action_id == self._current_id if not is_current: self._current_id = action_id - self._view = view - self._update_items(view, action_items) + self._update_items(action_items) # Nothing to show if not self._widgets_by_id: @@ -431,7 +425,6 @@ class ActionMenuToolTip(QtWidgets.QFrame): update_position = True self.show() - self._last_pos = QtCore.QPoint(event.globalPos()) if not update_position: # Only resize if is current self.resize(self.sizeHint()) @@ -441,7 +434,12 @@ class ActionMenuToolTip(QtWidgets.QFrame): # are recalculated app = QtWidgets.QApplication.instance() app.processEvents() - self._on_update_state() + size = self.sizeHint() + offset = 4 + self.setGeometry( + pos.x() + offset, pos.y() + offset, + size.width(), size.height() + ) self.raise_() self._show_timer.start() @@ -450,18 +448,7 @@ class ActionMenuToolTip(QtWidgets.QFrame): size = self.sizeHint() self.resize(size) - def _on_update_state(self): - if not self._view_hovered: - return - size = self.sizeHint() - pos = self._last_pos - offset = 4 - self.setGeometry( - pos.x() + offset, pos.y() + offset, - size.width(), size.height() - ) - - def _update_items(self, view, action_items): + def _update_items(self, action_items): """Update items in the tooltip.""" # This method can be used to update the content of the tooltip # with new icon, text and settings button visibility. @@ -470,16 +457,16 @@ class ActionMenuToolTip(QtWidgets.QFrame): new_ids = set() widgets = [] - any_has_settings = False + any_has_configs = False prepared_items = [] for idx, action_item in enumerate(action_items): - has_settings = bool(action_item.config_fields) - if has_settings: - any_has_settings = True - prepared_items.append((idx, action_item, has_settings)) + has_configs = bool(action_item.config_fields) + if has_configs: + any_has_configs = True + prepared_items.append((idx, action_item, has_configs)) - if any_has_settings or len(action_items) > 1: - for idx, action_item, has_settings in prepared_items: + if any_has_configs or len(action_items) > 1: + for idx, action_item, has_configs in prepared_items: widget = self._widgets_by_id.get(action_item.identifier) icon = get_qt_icon(action_item.icon) label = action_item.full_label @@ -488,12 +475,12 @@ class ActionMenuToolTip(QtWidgets.QFrame): action_item.identifier, icon, label, - has_settings, + has_configs, self ) widget.action_triggered.connect(self._on_trigger) - widget.settings_requested.connect( - self._on_settings_trigger + widget.config_requested.connect( + self._on_configs_trigger ) new_ids.add(action_item.identifier) self._widgets_by_id[action_item.identifier] = widget @@ -511,13 +498,12 @@ class ActionMenuToolTip(QtWidgets.QFrame): self._main_layout.insertWidget(idx, widget, 0) def _on_trigger(self, action_id): + self.action_triggered.emit(action_id) self.close() - self._view.action_triggered.emit(action_id) - def _on_settings_trigger(self, action_id): - """Handle settings button click.""" + def _on_configs_trigger(self, action_id): + self.config_requested.emit(action_id) self.close() - self._view.settings_requested.emit(action_id) class ActionDelegate(QtWidgets.QStyledItemDelegate): @@ -527,41 +513,12 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): super().__init__(*args, **kwargs) self._anim_start_color = QtGui.QColor(178, 255, 246) self._anim_end_color = QtGui.QColor(5, 44, 50) - self._tooltip_widget = None - def helpEvent(self, event, view, option, index): - if not index.isValid(): - if self._tooltip_widget is not None: - self._tooltip_widget.close() - return False + def sizeHint(self, option, index): + return option.widget.gridSize() - action_id = index.data(ACTION_ID_ROLE) - model = index.model() - source_model = model.sourceModel() - if index.data(ACTION_IS_GROUP_ROLE): - action_items = source_model.get_group_items(action_id) - else: - action_items = [source_model.get_action_item_by_id(action_id)] - if self._tooltip_widget is None: - self._tooltip_widget = ActionMenuToolTip(view) - - self._tooltip_widget.show_on_event( - action_id, action_items, view, event - ) - event.setAccepted(True) - return True - - def close_tooltip(self): - if self._tooltip_widget is not None: - self._tooltip_widget.close() - - def mouse_entered_view(self): - if self._tooltip_widget is not None: - self._tooltip_widget.mouse_entered_view() - - def mouse_left_view(self): - if self._tooltip_widget is not None: - self._tooltip_widget.mouse_left_view() + def updateEditorGeometry(self, editor, option, index): + editor.setGeometry(option.rect) def _draw_animation(self, painter, option, index): grid_size = option.widget.gridSize() @@ -683,7 +640,7 @@ class ActionsProxyModel(QtCore.QSortFilterProxyModel): class ActionsView(QtWidgets.QListView): action_triggered = QtCore.Signal(str) - settings_requested = QtCore.Signal(str) + config_requested = QtCore.Signal(str) def __init__(self, parent): super().__init__(parent) @@ -699,7 +656,7 @@ class ActionsView(QtWidgets.QListView): self.setIconSize(QtCore.QSize(30, 30)) self.setSpacing(0) self.setWordWrap(True) - self.setToolTipDuration(150) + self.setMouseTracking(True) delegate = ActionDelegate(self) self.setItemDelegate(delegate) @@ -708,16 +665,35 @@ class ActionsView(QtWidgets.QListView): flick = FlickCharm(parent=self) flick.activateOn(self) + popup_widget = ActionMenuPopup(self) + + popup_widget.action_triggered.connect(self.action_triggered) + popup_widget.config_requested.connect(self.config_requested) + self._flick = flick self._delegate = delegate + self._popup_widget = popup_widget - def enterEvent(self, event): - super().enterEvent(event) - self._delegate.mouse_entered_view() + def mouseMoveEvent(self, event): + """Handle mouse move event.""" + super().mouseMoveEvent(event) + # Update hover state for the item under mouse + index = self.indexAt(event.pos()) + if not index.isValid(): + return - def leaveEvent(self, event): - super().leaveEvent(event) - self._delegate.mouse_left_view() + if index.data(ACTION_IS_GROUP_ROLE): + self._show_group_popup(index) + + def _show_group_popup(self, index): + action_id = index.data(ACTION_ID_ROLE) + source_model = self.model().sourceModel() + action_items = source_model.get_group_items(action_id) + rect = self.rectForIndex(index) + pos = self.mapToGlobal(rect.topLeft()) + self._popup_widget.show_items( + action_id, action_items, pos + ) class ActionsWidget(QtWidgets.QWidget): @@ -744,7 +720,7 @@ class ActionsWidget(QtWidgets.QWidget): view.clicked.connect(self._on_clicked) view.action_triggered.connect(self._trigger_action) - view.settings_requested.connect(self._show_config_dialog) + view.config_requested.connect(self._on_config_request) model.refreshed.connect(self._on_model_refresh) self._animated_items = set() @@ -754,7 +730,7 @@ class ActionsWidget(QtWidgets.QWidget): self._model = model self._proxy_model = proxy_model - self._config_widget = None + self._overlay_widgets = [] self._set_row_height(1) @@ -808,6 +784,31 @@ class ActionsWidget(QtWidgets.QWidget): # Force repaint all items viewport = self._view.viewport() viewport.update() + self._add_overlay_widgets() + + def _add_overlay_widgets(self): + overlay_widgets = [] + viewport = self._view.viewport() + for row in range(self._proxy_model.rowCount()): + index = self._proxy_model.index(row, 0) + has_configs = index.data(ACTION_HAS_CONFIGS_ROLE) + widget = None + if has_configs: + item_id = index.data(ACTION_ID_ROLE) + widget = ActionOverlayWidget(item_id, viewport) + widget.config_requested.connect( + self._on_config_request + ) + overlay_widgets.append(widget) + self._view.setIndexWidget(index, widget) + + while self._overlay_widgets: + widget = self._overlay_widgets.pop(0) + widget.setVisible(False) + widget.setParent(None) + widget.deleteLater() + + self._overlay_widgets = overlay_widgets def _on_animation(self): time_now = time.time() @@ -842,8 +843,9 @@ class ActionsWidget(QtWidgets.QWidget): if not index or not index.isValid(): return - _is_group = index.data(ACTION_IS_GROUP_ROLE) - # TODO define and store what is default action for a group + is_group = index.data(ACTION_IS_GROUP_ROLE) + if is_group: + return action_id = index.data(ACTION_ID_ROLE) self._trigger_action(action_id, index) @@ -879,6 +881,9 @@ class ActionsWidget(QtWidgets.QWidget): if index is not None: self._start_animation(index) + def _on_config_request(self, action_id): + self._show_config_dialog(action_id) + def _show_config_dialog(self, action_id): action_item = self._model.get_action_item_by_id(action_id) config_fields = self._model.get_action_config_fields(action_id) From d082d4180bfc48fb49b05fafddf5b335b0a2e4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= Date: Wed, 28 May 2025 15:02:10 +0200 Subject: [PATCH 432/626] :recycle: add product base type feature detection to init --- client/ayon_core/pipeline/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/pipeline/__init__.py b/client/ayon_core/pipeline/__init__.py index 41bcd0dbd1..363e8a5218 100644 --- a/client/ayon_core/pipeline/__init__.py +++ b/client/ayon_core/pipeline/__init__.py @@ -100,6 +100,10 @@ from .context_tools import ( get_current_task_name ) +from .compatibility import ( + is_supporting_product_base_type, +) + from .workfile import ( discover_workfile_build_plugins, register_workfile_build_plugin, @@ -223,4 +227,7 @@ __all__ = ( # Backwards compatible function names "install", "uninstall", + + # Feature detection + "is_supporting_product_base_type", ) From 6b7322a5d28e3789b258260c20446c3526cdc490 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 17:44:36 +0200 Subject: [PATCH 433/626] change overlay expanding group --- client/ayon_core/style/style.css | 13 +- .../tools/launcher/ui/actions_widget.py | 352 +++++++++--------- 2 files changed, 176 insertions(+), 189 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index 979365f874..3595733774 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -829,17 +829,8 @@ HintedLineEditButton { } /* Launcher specific stylesheets */ -ActionMenuToolTip { - border: 1px solid #555555; - background: {color:bg-inputs}; -} - -ActionVariantWidget { - background: transparent; -} - -ActionVariantWidget[state="hover"], #OptionalActionOption[state="hover"] { - background: {color:bg-view-hover}; +ActionMenuPopup { + border: 1px solid {color:border}; } LauncherSettingsButton { diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 3a5401f362..78e976937f 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -99,71 +99,6 @@ class ActionOverlayWidget(QtWidgets.QFrame): self.config_requested.emit(self._item_id) -class ActionVariantWidget(ClickableFrame): - action_triggered = QtCore.Signal(str) - config_requested = QtCore.Signal(str) - - def __init__(self, item_id, icon, label, has_configs, parent): - super().__init__(parent) - - icon_widget = None - if icon: - icon_widget = PixmapLabel(icon.pixmap(512, 512), self) - - label_widget = QtWidgets.QLabel(label, self) - settings_btn = None - if has_configs: - settings_btn = LauncherSettingsButton(self) - settings_btn.set_is_in_menu(True) - - layout = QtWidgets.QHBoxLayout(self) - layout.setContentsMargins(6, 4, 4, 4) - layout.setSpacing(0) - if icon_widget is not None: - layout.addWidget(icon_widget, 0) - layout.addSpacing(6) - - layout.addWidget(label_widget, 1) - if settings_btn is not None: - layout.addSpacing(6) - layout.addWidget(settings_btn, 0) - - settings_btn.clicked.connect(self._on_settings_clicked) - self.clicked.connect(self._on_trigger) - - self._item_id = item_id - self._icon_widget = icon_widget - self._label_widget = label_widget - self._settings_btn = settings_btn - - def showEvent(self, event): - super().showEvent(event) - # Make sure to set up current state - self._set_hover_properties(self.underMouse()) - - def enterEvent(self, event): - """Handle mouse enter event.""" - self._set_hover_properties(True) - super().enterEvent(event) - - def leaveEvent(self, event): - """Handle mouse enter event.""" - self._set_hover_properties(False) - super().leaveEvent(event) - - def _on_trigger(self): - self.action_triggered.emit(self._item_id) - - def _on_settings_clicked(self): - self.config_requested.emit(self._item_id) - - def _set_hover_properties(self, hovered): - state = "hover" if hovered else "" - if self.property("state") != state: - self.setProperty("state", state) - self.style().polish(self) - - class ActionsQtModel(QtGui.QStandardItemModel): """Qt model for actions. @@ -299,6 +234,7 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setFlags(QtCore.Qt.ItemIsEnabled) item.setData(label, QtCore.Qt.DisplayRole) + item.setData(label, QtCore.Qt.ToolTipRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(is_group, ACTION_IS_GROUP_ROLE) item.setData(has_configs, ACTION_HAS_CONFIGS_ROLE) @@ -347,6 +283,42 @@ class ActionsQtModel(QtGui.QStandardItemModel): self.refresh() +class ActionMenuPopupModel(QtGui.QStandardItemModel): + def set_action_items(self, action_items): + """Set action items for the popup.""" + root_item = self.invisibleRootItem() + root_item.removeRows(0, root_item.rowCount()) + + transparent_icon = {"type": "transparent", "size": 256} + new_items = [] + for action_item in action_items: + icon_def = action_item.icon + if not icon_def: + icon_def = transparent_icon.copy() + + try: + icon = get_qt_icon(icon_def) + except Exception: + self._log.warning( + "Failed to parse icon definition", exc_info=True + ) + # Use empty icon if failed to parse definition + icon = get_qt_icon(transparent_icon.copy()) + + item = QtGui.QStandardItem() + item.setFlags(QtCore.Qt.ItemIsEnabled) + item.setData(action_item.full_label, QtCore.Qt.ToolTipRole) + item.setData(action_item.full_label, QtCore.Qt.DisplayRole) + item.setData(icon, QtCore.Qt.DecorationRole) + item.setData(action_item.identifier, ACTION_ID_ROLE) + item.setData(bool(action_item.config_fields), ACTION_HAS_CONFIGS_ROLE) + item.setData(action_item.order, ACTION_SORT_ROLE) + new_items.append(item) + + if new_items: + root_item.appendRows(new_items) + + class ActionMenuPopup(QtWidgets.QFrame): action_triggered = QtCore.Signal(str) config_requested = QtCore.Signal(str) @@ -354,7 +326,7 @@ class ActionMenuPopup(QtWidgets.QFrame): def __init__(self, parent): super().__init__(parent) - self.setWindowFlags(QtCore.Qt.Popup) + self.setWindowFlags(QtCore.Qt.Tool | QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating, True) self.setAutoFillBackground(True) self.setBackgroundRole(QtGui.QPalette.Base) @@ -369,22 +341,36 @@ class ActionMenuPopup(QtWidgets.QFrame): close_timer.setSingleShot(True) close_timer.setInterval(100) + view = ActionsView(self) + + model = ActionMenuPopupModel() + proxy_model = ActionsProxyModel() + proxy_model.setSourceModel(model) + + view.setModel(proxy_model) + view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + main_layout = QtWidgets.QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) + main_layout.addWidget(view, 0) close_timer.timeout.connect(self.close) show_timer.timeout.connect(self._on_show_timer) + view.clicked.connect(self._on_clicked) + view.config_requested.connect(self.config_requested) + + self._view = view + self._model = model + self._proxy_model = proxy_model - self._main_layout = main_layout self._show_timer = show_timer self._close_timer = close_timer self._showed = False - self._mouse_entered = False self._current_id = None self._last_pos = QtCore.QPoint(0, 0) - self._widgets_by_id = {} def showEvent(self, event): self._showed = True @@ -392,110 +378,103 @@ class ActionMenuPopup(QtWidgets.QFrame): def closeEvent(self, event): self._showed = False - self._mouse_entered = False super().closeEvent(event) def enterEvent(self, event): - self._mouse_entered = True - self._close_timer.stop() super().leaveEvent(event) + self._close_timer.stop() def leaveEvent(self, event): - self._mouse_entered = False super().leaveEvent(event) self._close_timer.start() def show_items(self, action_id, action_items, pos): + if not action_items: + if self._showed: + self._close_timer.start() + self._current_id = None + return + self._close_timer.stop() - is_current = action_id == self._current_id - if not is_current: + update_position = False + if action_id != self._current_id: + update_position = True self._current_id = action_id self._update_items(action_items) - # Nothing to show - if not self._widgets_by_id: - if self._showed: - self.close() - return - # Make sure is visible - update_position = not is_current if not self._showed: update_position = True self.show() - if not update_position: - # Only resize if is current - self.resize(self.sizeHint()) - else: + if update_position: # Set geometry to position # - first make sure widget changes from '_update_items' # are recalculated app = QtWidgets.QApplication.instance() app.processEvents() - size = self.sizeHint() - offset = 4 + size = self._get_size_hint() self.setGeometry( - pos.x() + offset, pos.y() + offset, - size.width(), size.height() + pos.x() - 1, pos.y() - 1, + size.width() + 4, size.height() + 4 ) + else: + # Only resize if is current + self._update_size() self.raise_() self._show_timer.start() + def _on_clicked(self, index): + if not index or not index.isValid(): + return + + action_id = index.data(ACTION_ID_ROLE) + self.action_triggered.emit(action_id) + def _on_show_timer(self): - size = self.sizeHint() + self._update_size() + + def _update_size(self): + size = self._get_size_hint() + self._view.setMaximumHeight(size.height()) self.resize(size) + def _get_size_hint(self): + grid_size = self._view.gridSize() + row_count = self._proxy_model.rowCount() + cols = 4 + rows = 1 + while True: + rows = row_count // cols + if row_count % cols: + rows += 1 + if rows <= cols: + break + cols += 1 + + if rows == 1: + cols = row_count + + width = ( + (cols * grid_size.width()) + + ((cols - 1) * self._view.spacing()) + + self._view.horizontalOffset() + 4 + ) + height = ( + (rows * grid_size.height()) + + ((rows - 1) * self._view.spacing()) + + self._view.verticalOffset() + 4 + ) + return QtCore.QSize(width, height) + def _update_items(self, action_items): """Update items in the tooltip.""" # This method can be used to update the content of the tooltip # with new icon, text and settings button visibility. - - remove_ids = set(self._widgets_by_id.keys()) - new_ids = set() - widgets = [] - - any_has_configs = False - prepared_items = [] - for idx, action_item in enumerate(action_items): - has_configs = bool(action_item.config_fields) - if has_configs: - any_has_configs = True - prepared_items.append((idx, action_item, has_configs)) - - if any_has_configs or len(action_items) > 1: - for idx, action_item, has_configs in prepared_items: - widget = self._widgets_by_id.get(action_item.identifier) - icon = get_qt_icon(action_item.icon) - label = action_item.full_label - if widget is None: - widget = ActionVariantWidget( - action_item.identifier, - icon, - label, - has_configs, - self - ) - widget.action_triggered.connect(self._on_trigger) - widget.config_requested.connect( - self._on_configs_trigger - ) - new_ids.add(action_item.identifier) - self._widgets_by_id[action_item.identifier] = widget - else: - remove_ids.discard(action_item.identifier) - widgets.append((idx, widget)) - - for action_id in remove_ids: - widget = self._widgets_by_id.pop(action_id) - widget.setVisible(False) - self._main_layout.removeWidget(widget) - widget.deleteLater() - - for idx, widget in widgets: - self._main_layout.insertWidget(idx, widget, 0) + self._model.set_action_items(action_items) + self._view.update_on_refresh() def _on_trigger(self, action_id): self.action_triggered.emit(action_id) @@ -651,6 +630,8 @@ class ActionsView(QtWidgets.QListView): self.setSelectionMode(QtWidgets.QListView.NoSelection) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.setContentsMargins(0, 0, 0, 0) + self.setViewportMargins(0, 0, 0, 0) self.setWrapping(True) self.setGridSize(QtCore.QSize(70, 75)) self.setIconSize(QtCore.QSize(30, 30)) @@ -665,36 +646,79 @@ class ActionsView(QtWidgets.QListView): flick = FlickCharm(parent=self) flick.activateOn(self) - popup_widget = ActionMenuPopup(self) - - popup_widget.action_triggered.connect(self.action_triggered) - popup_widget.config_requested.connect(self.config_requested) - + self._overlay_widgets = [] self._flick = flick self._delegate = delegate - self._popup_widget = popup_widget + self._popup_widget = None def mouseMoveEvent(self, event): """Handle mouse move event.""" super().mouseMoveEvent(event) # Update hover state for the item under mouse index = self.indexAt(event.pos()) - if not index.isValid(): - return - - if index.data(ACTION_IS_GROUP_ROLE): + if index.isValid() and index.data(ACTION_IS_GROUP_ROLE): self._show_group_popup(index) + elif self._popup_widget is not None: + self._popup_widget.close() + + def _get_popup_widget(self): + if self._popup_widget is None: + popup_widget = ActionMenuPopup(self) + + popup_widget.action_triggered.connect(self.action_triggered) + popup_widget.config_requested.connect(self.config_requested) + self._popup_widget = popup_widget + return self._popup_widget + def _show_group_popup(self, index): action_id = index.data(ACTION_ID_ROLE) - source_model = self.model().sourceModel() - action_items = source_model.get_group_items(action_id) - rect = self.rectForIndex(index) + model = self.model() + while hasattr(model, "sourceModel"): + model = model.sourceModel() + + if not hasattr(model, "get_group_items"): + return + + action_items = model.get_group_items(action_id) + rect = self.visualRect(index) pos = self.mapToGlobal(rect.topLeft()) - self._popup_widget.show_items( + + popup_widget = self._get_popup_widget() + popup_widget.show_items( action_id, action_items, pos ) + def update_on_refresh(self): + viewport = self.viewport() + viewport.update() + self._add_overlay_widgets() + + def _add_overlay_widgets(self): + overlay_widgets = [] + viewport = self.viewport() + model = self.model() + for row in range(model.rowCount()): + index = model.index(row, 0) + has_configs = index.data(ACTION_HAS_CONFIGS_ROLE) + widget = None + if has_configs: + item_id = index.data(ACTION_ID_ROLE) + widget = ActionOverlayWidget(item_id, viewport) + widget.config_requested.connect( + self.config_requested + ) + overlay_widgets.append(widget) + self.setIndexWidget(index, widget) + + while self._overlay_widgets: + widget = self._overlay_widgets.pop(0) + widget.setVisible(False) + widget.setParent(None) + widget.deleteLater() + + self._overlay_widgets = overlay_widgets + class ActionsWidget(QtWidgets.QWidget): def __init__(self, controller, parent): @@ -730,8 +754,6 @@ class ActionsWidget(QtWidgets.QWidget): self._model = model self._proxy_model = proxy_model - self._overlay_widgets = [] - self._set_row_height(1) def refresh(self): @@ -782,33 +804,7 @@ class ActionsWidget(QtWidgets.QWidget): def _on_model_refresh(self): self._proxy_model.sort(0) # Force repaint all items - viewport = self._view.viewport() - viewport.update() - self._add_overlay_widgets() - - def _add_overlay_widgets(self): - overlay_widgets = [] - viewport = self._view.viewport() - for row in range(self._proxy_model.rowCount()): - index = self._proxy_model.index(row, 0) - has_configs = index.data(ACTION_HAS_CONFIGS_ROLE) - widget = None - if has_configs: - item_id = index.data(ACTION_ID_ROLE) - widget = ActionOverlayWidget(item_id, viewport) - widget.config_requested.connect( - self._on_config_request - ) - overlay_widgets.append(widget) - self._view.setIndexWidget(index, widget) - - while self._overlay_widgets: - widget = self._overlay_widgets.pop(0) - widget.setVisible(False) - widget.setParent(None) - widget.deleteLater() - - self._overlay_widgets = overlay_widgets + self._view.update_on_refresh() def _on_animation(self): time_now = time.time() From e2bc5471d4446d63193fa9ae4098c76219f21f26 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 28 May 2025 18:26:26 +0200 Subject: [PATCH 434/626] better looks --- client/ayon_core/style/style.css | 31 +++++++++++++++++-- .../tools/launcher/ui/actions_widget.py | 26 +++++++++++----- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index 3595733774..c13b8b7aef 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -829,8 +829,35 @@ HintedLineEditButton { } /* Launcher specific stylesheets */ -ActionMenuPopup { - border: 1px solid {color:border}; +ActionsView[mode="icon"] { + /* font size can't be set on items */ + font-size: 9pt; + border: 0px; + padding: 0px; + margin: 0px; +} + +ActionsView[mode="icon"]::item { + padding-top: 8px; + padding-bottom: 4px; + border: 0px; + border-radius: 0.3em; +} + +ActionsView[mode="icon"]::item:hover { + color: {color:font-hover}; +} + +ActionsView[mode="icon"]::icon {} + +ActionMenuPopup #Wrapper { + border: 1px solid #f4f5f5; + border-radius: 0.3em; + background: {color:bg-inputs}; +} +ActionMenuPopup ActionsView[mode="icon"] { + background: transparent; + border: none; } LauncherSettingsButton { diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 78e976937f..bc0a129a22 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -319,7 +319,7 @@ class ActionMenuPopupModel(QtGui.QStandardItemModel): root_item.appendRows(new_items) -class ActionMenuPopup(QtWidgets.QFrame): +class ActionMenuPopup(QtWidgets.QWidget): action_triggered = QtCore.Signal(str) config_requested = QtCore.Signal(str) @@ -328,6 +328,7 @@ class ActionMenuPopup(QtWidgets.QFrame): self.setWindowFlags(QtCore.Qt.Tool | QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating, True) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) self.setAutoFillBackground(True) self.setBackgroundRole(QtGui.QPalette.Base) @@ -341,7 +342,10 @@ class ActionMenuPopup(QtWidgets.QFrame): close_timer.setSingleShot(True) close_timer.setInterval(100) - view = ActionsView(self) + wrapper = QtWidgets.QFrame(self) + wrapper.setObjectName("Wrapper") + + view = ActionsView(wrapper) model = ActionMenuPopupModel() proxy_model = ActionsProxyModel() @@ -351,10 +355,15 @@ class ActionMenuPopup(QtWidgets.QFrame): view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + wrapper_layout = QtWidgets.QVBoxLayout(wrapper) + wrapper_layout.setContentsMargins(0, 0, 0, 0) + wrapper_layout.setSpacing(0) + wrapper_layout.addWidget(view, 0) + main_layout = QtWidgets.QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) - main_layout.addWidget(view, 0) + main_layout.addWidget(wrapper, 0) close_timer.timeout.connect(self.close) show_timer.timeout.connect(self._on_show_timer) @@ -417,7 +426,7 @@ class ActionMenuPopup(QtWidgets.QFrame): size = self._get_size_hint() self.setGeometry( pos.x() - 1, pos.y() - 1, - size.width() + 4, size.height() + 4 + size.width(), size.height() ) else: # Only resize if is current @@ -457,15 +466,17 @@ class ActionMenuPopup(QtWidgets.QFrame): if rows == 1: cols = row_count + # QUESTION how to get the margins from Qt? + border = 2 * 1 width = ( (cols * grid_size.width()) + ((cols - 1) * self._view.spacing()) - + self._view.horizontalOffset() + 4 + + self._view.horizontalOffset() + border + 1 ) height = ( (rows * grid_size.height()) + ((rows - 1) * self._view.spacing()) - + self._view.verticalOffset() + 4 + + self._view.verticalOffset() + border + 1 ) return QtCore.QSize(width, height) @@ -566,7 +577,7 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): if index.data(ANIMATION_STATE_ROLE): self._draw_animation(painter, option, index) - + option.displayAlignment = QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop super().paint(painter, option, index) if not index.data(ACTION_IS_GROUP_ROLE): @@ -624,7 +635,6 @@ class ActionsView(QtWidgets.QListView): def __init__(self, parent): super().__init__(parent) self.setProperty("mode", "icon") - self.setObjectName("IconView") self.setViewMode(QtWidgets.QListView.IconMode) self.setResizeMode(QtWidgets.QListView.Adjust) self.setSelectionMode(QtWidgets.QListView.NoSelection) From 9327cf558a8f197231806eac1618cc962df59b36 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 29 May 2025 15:33:01 +0200 Subject: [PATCH 435/626] change icons and scale view on hover --- client/ayon_core/style/style.css | 22 +----- .../tools/launcher/ui/actions_widget.py | 71 +++++++++++------- .../tools/launcher/ui/resources/__init__.py | 7 -- .../tools/launcher/ui/resources/options.png | Bin 1772 -> 0 bytes client/ayon_core/tools/utils/widgets.py | 2 +- 5 files changed, 47 insertions(+), 55 deletions(-) delete mode 100644 client/ayon_core/tools/launcher/ui/resources/__init__.py delete mode 100644 client/ayon_core/tools/launcher/ui/resources/options.png diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index c13b8b7aef..e6009cf5a9 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -837,7 +837,7 @@ ActionsView[mode="icon"] { margin: 0px; } -ActionsView[mode="icon"]::item { +ActionsView[mode="icon"]::item { padding-top: 8px; padding-bottom: 4px; border: 0px; @@ -846,36 +846,20 @@ ActionsView[mode="icon"]::item { ActionsView[mode="icon"]::item:hover { color: {color:font-hover}; + background: #384350; } ActionsView[mode="icon"]::icon {} ActionMenuPopup #Wrapper { - border: 1px solid #f4f5f5; border-radius: 0.3em; - background: {color:bg-inputs}; + background: #14161A; } ActionMenuPopup ActionsView[mode="icon"] { background: transparent; border: none; } -LauncherSettingsButton { - icon-size: 15px; - background: transparent; - border: 1px solid #f4f5f5; - padding: 1px 3px 1px 3px; -} - -LauncherSettingsButton[inMenu="1"] { - border: none; - padding: 3px 5px 3px 5px; -} - -LauncherSettingsButton:hover, LauncherSettingsButton[inMenu="1"]:hover { - border: 1px solid #f4f5f5; -} - #IconView[mode="icon"] { /* font size can't be set on items */ font-size: 9pt; diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index bc0a129a22..01e6d4a7d1 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -16,15 +16,11 @@ from ayon_core.lib.attribute_definitions import ( from ayon_core.tools.flickcharm import FlickCharm from ayon_core.tools.utils import ( get_qt_icon, - SquareButton, - ClickableFrame, PixmapLabel, ) from ayon_core.tools.attribute_defs import AttributeDefinitionsDialog from ayon_core.tools.launcher.abstract import WebactionContext -from .resources import get_options_image_path - ANIMATION_LEN = 7 ACTION_ID_ROLE = QtCore.Qt.UserRole + 1 @@ -54,12 +50,12 @@ def _variant_label_sort_getter(action_item): # --- Replacement for QAction for action variants --- -class LauncherSettingsButton(SquareButton): +class LauncherSettingsLabel(PixmapLabel): _settings_icon = None def __init__(self, parent): - super().__init__(parent) - self.setIcon(self._get_settings_icon()) + icon = self._get_settings_icon() + super().__init__(icon.pixmap(256, 256), parent) @classmethod def _get_settings_icon(cls): @@ -70,11 +66,6 @@ class LauncherSettingsButton(SquareButton): }) return cls._settings_icon - def set_is_in_menu(self, in_menu): - value = "1" if in_menu else "" - self.setProperty("inMenu", value) - self.style().polish(self) - class ActionOverlayWidget(QtWidgets.QFrame): config_requested = QtCore.Signal(str) @@ -83,21 +74,17 @@ class ActionOverlayWidget(QtWidgets.QFrame): super().__init__(parent) self._item_id = item_id - settings_btn = LauncherSettingsButton(self) + settings_icon = LauncherSettingsLabel(self) + settings_icon.setToolTip("Right click for options") main_layout = QtWidgets.QGridLayout(self) main_layout.setContentsMargins(5, 5, 0, 0) - main_layout.addWidget(settings_btn, 0, 0) + main_layout.addWidget(settings_icon, 0, 0) main_layout.setColumnStretch(1, 1) main_layout.setRowStretch(1, 1) - settings_btn.clicked.connect(self._on_settings_click) - self.setAttribute(QtCore.Qt.WA_TranslucentBackground) - def _on_settings_click(self): - self.config_requested.emit(self._item_id) - class ActionsQtModel(QtGui.QStandardItemModel): """Qt model for actions. @@ -234,7 +221,7 @@ class ActionsQtModel(QtGui.QStandardItemModel): item.setFlags(QtCore.Qt.ItemIsEnabled) item.setData(label, QtCore.Qt.DisplayRole) - item.setData(label, QtCore.Qt.ToolTipRole) + # item.setData(label, QtCore.Qt.ToolTipRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(is_group, ACTION_IS_GROUP_ROLE) item.setData(has_configs, ACTION_HAS_CONFIGS_ROLE) @@ -307,7 +294,7 @@ class ActionMenuPopupModel(QtGui.QStandardItemModel): item = QtGui.QStandardItem() item.setFlags(QtCore.Qt.ItemIsEnabled) - item.setData(action_item.full_label, QtCore.Qt.ToolTipRole) + # item.setData(action_item.full_label, QtCore.Qt.ToolTipRole) item.setData(action_item.full_label, QtCore.Qt.DisplayRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(action_item.identifier, ACTION_ID_ROLE) @@ -346,6 +333,8 @@ class ActionMenuPopup(QtWidgets.QWidget): wrapper.setObjectName("Wrapper") view = ActionsView(wrapper) + view.setGridSize(QtCore.QSize(75, 80)) + view.setIconSize(QtCore.QSize(32, 32)) model = ActionMenuPopupModel() proxy_model = ActionsProxyModel() @@ -356,7 +345,7 @@ class ActionMenuPopup(QtWidgets.QWidget): view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) wrapper_layout = QtWidgets.QVBoxLayout(wrapper) - wrapper_layout.setContentsMargins(0, 0, 0, 0) + wrapper_layout.setContentsMargins(3, 3, 1, 1) wrapper_layout.setSpacing(0) wrapper_layout.addWidget(view, 0) @@ -373,6 +362,7 @@ class ActionMenuPopup(QtWidgets.QWidget): self._view = view self._model = model self._proxy_model = proxy_model + self._wrapper_layout = wrapper_layout self._show_timer = show_timer self._close_timer = close_timer @@ -425,7 +415,7 @@ class ActionMenuPopup(QtWidgets.QWidget): app.processEvents() size = self._get_size_hint() self.setGeometry( - pos.x() - 1, pos.y() - 1, + pos.x() - 5, pos.y() - 4, size.width(), size.height() ) else: @@ -439,6 +429,9 @@ class ActionMenuPopup(QtWidgets.QWidget): if not index or not index.isValid(): return + if not index.data(ACTION_HAS_CONFIGS_ROLE): + return + action_id = index.data(ACTION_ID_ROLE) self.action_triggered.emit(action_id) @@ -466,17 +459,18 @@ class ActionMenuPopup(QtWidgets.QWidget): if rows == 1: cols = row_count + m_l, m_t, m_r, m_b = self._wrapper_layout.getContentsMargins() # QUESTION how to get the margins from Qt? border = 2 * 1 width = ( (cols * grid_size.width()) + ((cols - 1) * self._view.spacing()) - + self._view.horizontalOffset() + border + 1 + + self._view.horizontalOffset() + border + m_l + m_r + 1 ) height = ( (rows * grid_size.height()) + ((rows - 1) * self._view.spacing()) - + self._view.verticalOffset() + border + 1 + + self._view.verticalOffset() + border + m_b + m_t + 1 ) return QtCore.QSize(width, height) @@ -498,6 +492,7 @@ class ActionMenuPopup(QtWidgets.QWidget): class ActionDelegate(QtWidgets.QStyledItemDelegate): _cached_extender = {} + _cached_extender_base_pix = None def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -561,7 +556,17 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): pix = cls._cached_extender.get(size) if pix is not None: return pix - pix = QtGui.QPixmap(get_options_image_path()).scaled( + + base_pix = cls._cached_extender_base_pix + if base_pix is None: + icon = get_qt_icon({ + "type": "material-symbols", + "name": "more_horiz", + }) + base_pix = icon.pixmap(128, 128) + cls._cached_extender_base_pix = base_pix + + pix = base_pix.scaled( size, size, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation @@ -643,8 +648,6 @@ class ActionsView(QtWidgets.QListView): self.setContentsMargins(0, 0, 0, 0) self.setViewportMargins(0, 0, 0, 0) self.setWrapping(True) - self.setGridSize(QtCore.QSize(70, 75)) - self.setIconSize(QtCore.QSize(30, 30)) self.setSpacing(0) self.setWordWrap(True) self.setMouseTracking(True) @@ -656,6 +659,8 @@ class ActionsView(QtWidgets.QListView): flick = FlickCharm(parent=self) flick.activateOn(self) + self.customContextMenuRequested.connect(self._on_context_menu) + self._overlay_widgets = [] self._flick = flick self._delegate = delegate @@ -672,6 +677,14 @@ class ActionsView(QtWidgets.QListView): elif self._popup_widget is not None: self._popup_widget.close() + def _on_context_menu(self, point): + """Creates menu to force skip opening last workfile.""" + index = self.indexAt(point) + if not index.isValid(): + return + action_id = index.data(ACTION_ID_ROLE) + self.config_requested.emit(action_id) + def _get_popup_widget(self): if self._popup_widget is None: popup_widget = ActionMenuPopup(self) @@ -737,6 +750,8 @@ class ActionsWidget(QtWidgets.QWidget): self._controller = controller view = ActionsView(self) + view.setGridSize(QtCore.QSize(70, 75)) + view.setIconSize(QtCore.QSize(30, 30)) model = ActionsQtModel(controller) diff --git a/client/ayon_core/tools/launcher/ui/resources/__init__.py b/client/ayon_core/tools/launcher/ui/resources/__init__.py deleted file mode 100644 index 27c59af2ba..0000000000 --- a/client/ayon_core/tools/launcher/ui/resources/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -import os - -RESOURCES_DIR = os.path.dirname(os.path.abspath(__file__)) - - -def get_options_image_path(): - return os.path.join(RESOURCES_DIR, "options.png") diff --git a/client/ayon_core/tools/launcher/ui/resources/options.png b/client/ayon_core/tools/launcher/ui/resources/options.png deleted file mode 100644 index a9617d0d1914634835f388c01479c672a8c8ffd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmb7^`B%~j7skJcd*X`HFm9u1j=6?t%;Iwb7j zwT|b(sB<3ljDb1wl4oJgfJ(AW&7Bpv&K*RI{SGm)zYu0jaC8|wa}(8OdA=SqaOrGq zQl&JypY*{sIl^1ofVAgks@SbOwLH%}dUorXyCcm^p8M0qpzTd|xz-DUnY^dOKTPeH z@AJ-CoGxRX%>y<5sp+n7Xk3?Ib+6{^?Cg%=d&rthvwyAl5BkShe>;4{WaeF*=5}tm ztt=TDXzceIC%r2%j9B($%Mh%fdW+^DZJMF}7T%OTA(YA8((QYh7f_5?|N5vQJC}2i zC0r;RJ>ErHqPC^l%s{3;^f+m96LRwULUx{B(Jk=u8K5KQK(F2Y*hE<*nGwM+6L<1iX zlK}t@mfr$Is`1VO02RGJA5=K0d~t%GY(ju`e_V2|K}V)SS?KCKM{H&_P7Y3Crp5mD z(`Z|5OJ5s)n{5lU+FfOFe`n~y1vEYAMcpmGYIrBiNw-)XnP|0HU<^ZOl*}9xr(R_s z-ktQ)Rp*UwVBUH#819d^g7kQOs&9HGq+ox_gXKk_@&4ncL<1u#E}<#6%&D0{)?q>@ z?Mq-Gs6s7mESn~{WhJteFd6)`mZ1U=UOLUm;q`|VcDE-YaVZ;Q~Te%Sofmu0UYVg!&X;RuJAt9igF;-A4LhWK?gT_dOlF*OOzD^7K zM0(b%SCz|j<0nL|yHR9|tdKubbevo`S#A{YvDG=|<+k;omrnFfC=_onNlmF}*P%aQ zz^g7hN^R`Pd;|)6L$)FXQese2SGyOAY{6{}Y=kB?Kv#n$PhZdf2ky zC~`-vdo>j`0wm``3CPJbVh^l!T^XN!WuMskOu14otdtzM{FZ(Ri1&Fi@A@7tB8dK~ zde}ZsK7UHkRttC-w4~8JO&(yw0aNwZM}4Ljqg`wPwrbtjQMQjA+>o+2e`K*~z`}^8 z$vMbbLM0Q2PC(c15PkyL_|q$ttu02DN;O3I7xQtiX;sVJ+ymk-oAE{EL?t$|+05dC zI@|D&m@;_t3WNN^wQ{8^-@~D`hWrV+gGfW9Ct4Myk1m@@3?wv$+$1JoCUMX~gcLy% zh~XxkM&oi1d}qIrrDlMz02j145nuS1%F=x$|b>QE}Uw_gWZT>QLRG z(V=0dJffRQo$`Clt5srtbzj?s=cCa_lk?tP8IX-f>!Ws5L@ck1<(p=DzydJQUDGyaDo3`;n#I_7#p1q zhXiA8A329}vHO`;fO84CeMF#Wsx?to(^2@VC=8r2mai3L)W}`t7f{yg}pV5{4$m~-H5NUJkTQN6t*Ssmw zEK7QvnhYK8CMbrSija`c4|B|61&Y%ub36cVDVz$Q7|_Ra`j1sDOF{i9-4hK;j#?7m zg4b(STtTXty_=b>KL8LX)j~j)sZmySrC>jPN|p?KUt2o6^)Rm87RP5K{aekI3Hu$u zbFte3N7JA8*R$kRE2H|HiFjp)Tf?0gH~)_%?0Q*P# Date: Thu, 29 May 2025 15:45:03 +0200 Subject: [PATCH 436/626] use lighter colors --- client/ayon_core/style/style.css | 4 ++-- client/ayon_core/tools/launcher/ui/actions_widget.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/style/style.css b/client/ayon_core/style/style.css index e6009cf5a9..4ef903540e 100644 --- a/client/ayon_core/style/style.css +++ b/client/ayon_core/style/style.css @@ -846,14 +846,14 @@ ActionsView[mode="icon"]::item { ActionsView[mode="icon"]::item:hover { color: {color:font-hover}; - background: #384350; + background: #424A57; } ActionsView[mode="icon"]::icon {} ActionMenuPopup #Wrapper { border-radius: 0.3em; - background: #14161A; + background: #353B46; } ActionMenuPopup ActionsView[mode="icon"] { background: transparent; diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 01e6d4a7d1..1097e7bfd0 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -55,7 +55,7 @@ class LauncherSettingsLabel(PixmapLabel): def __init__(self, parent): icon = self._get_settings_icon() - super().__init__(icon.pixmap(256, 256), parent) + super().__init__(icon.pixmap(64, 64), parent) @classmethod def _get_settings_icon(cls): @@ -563,7 +563,7 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): "type": "material-symbols", "name": "more_horiz", }) - base_pix = icon.pixmap(128, 128) + base_pix = icon.pixmap(64, 64) cls._cached_extender_base_pix = base_pix pix = base_pix.scaled( From 72990d3aa99286a8aa856276fce9ed00e3c6e1da Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 29 May 2025 16:12:40 +0200 Subject: [PATCH 437/626] added animation --- .../tools/launcher/ui/actions_widget.py | 80 +++++++++++++------ 1 file changed, 54 insertions(+), 26 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 1097e7bfd0..41f4990a9b 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -319,16 +319,15 @@ class ActionMenuPopup(QtWidgets.QWidget): self.setAutoFillBackground(True) self.setBackgroundRole(QtGui.QPalette.Base) - # Update size on show - show_timer = QtCore.QTimer() - show_timer.setSingleShot(True) - show_timer.setInterval(5) - # Close widget if is not updated by event close_timer = QtCore.QTimer() close_timer.setSingleShot(True) close_timer.setInterval(100) + expand_anim = QtCore.QVariantAnimation() + expand_anim.setDuration(60) + expand_anim.setEasingCurve(QtCore.QEasingCurve.InOutQuad) + wrapper = QtWidgets.QFrame(self) wrapper.setObjectName("Wrapper") @@ -355,7 +354,9 @@ class ActionMenuPopup(QtWidgets.QWidget): main_layout.addWidget(wrapper, 0) close_timer.timeout.connect(self.close) - show_timer.timeout.connect(self._on_show_timer) + expand_anim.valueChanged.connect(self._on_expand_anim) + expand_anim.finished.connect(self._on_expand_finish) + view.clicked.connect(self._on_clicked) view.config_requested.connect(self.config_requested) @@ -364,12 +365,12 @@ class ActionMenuPopup(QtWidgets.QWidget): self._proxy_model = proxy_model self._wrapper_layout = wrapper_layout - self._show_timer = show_timer self._close_timer = close_timer + self._expand_anim = expand_anim self._showed = False self._current_id = None - self._last_pos = QtCore.QPoint(0, 0) + self._first_anim_frame = False def showEvent(self, event): self._showed = True @@ -413,17 +414,21 @@ class ActionMenuPopup(QtWidgets.QWidget): # are recalculated app = QtWidgets.QApplication.instance() app.processEvents() - size = self._get_size_hint() + size, target_size = self._get_size_hint() self.setGeometry( pos.x() - 5, pos.y() - 4, size.width(), size.height() ) - else: - # Only resize if is current - self._update_size() + self._view.setMaximumHeight(size.height()) + + self._first_anim_frame = True + self._expand_anim.updateCurrentTime(0) + self._expand_anim.setStartValue(size) + self._expand_anim.setEndValue(target_size) + if self._expand_anim.state() != QtCore.QAbstractAnimation.Running: + self._expand_anim.start() self.raise_() - self._show_timer.start() def _on_clicked(self, index): if not index or not index.isValid(): @@ -435,13 +440,24 @@ class ActionMenuPopup(QtWidgets.QWidget): action_id = index.data(ACTION_ID_ROLE) self.action_triggered.emit(action_id) - def _on_show_timer(self): - self._update_size() + def _on_expand_anim(self, value): + if self._first_anim_frame: + _, size = self._get_size_hint() + self._expand_anim.setEndValue(size) + self._first_anim_frame = False - def _update_size(self): - size = self._get_size_hint() - self._view.setMaximumHeight(size.height()) - self.resize(size) + self._view.setMaximumHeight(value.height()) + self.resize(value) + + def _on_expand_finish(self): + # Make sure that size is recalculated if src and targe size is same + if not self._first_anim_frame: + return + + _, size = self._get_size_hint() + self._first_anim_frame = False + self._view.setMaximumHeight(value.height()) + self.resize(value) def _get_size_hint(self): grid_size = self._view.gridSize() @@ -462,17 +478,29 @@ class ActionMenuPopup(QtWidgets.QWidget): m_l, m_t, m_r, m_b = self._wrapper_layout.getContentsMargins() # QUESTION how to get the margins from Qt? border = 2 * 1 - width = ( - (cols * grid_size.width()) - + ((cols - 1) * self._view.spacing()) + single_width = ( + grid_size.width() + self._view.horizontalOffset() + border + m_l + m_r + 1 ) - height = ( - (rows * grid_size.height()) - + ((rows - 1) * self._view.spacing()) + single_height = ( + grid_size.height() + self._view.verticalOffset() + border + m_b + m_t + 1 ) - return QtCore.QSize(width, height) + total_width = single_width + total_height = single_height + if cols > 1: + total_width += ( + (cols - 1) * (self._view.spacing() + grid_size.width()) + ) + + if rows > 1: + total_height += ( + (rows - 1) * (grid_size.height() + self._view.spacing()) + ) + return ( + QtCore.QSize(single_width, single_height), + QtCore.QSize(total_width, total_height) + ) def _update_items(self, action_items): """Update items in the tooltip.""" From d57f4a0000ce743c63633439c058ed19b7747920 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 29 May 2025 16:14:29 +0200 Subject: [PATCH 438/626] formatting fix --- client/ayon_core/tools/launcher/ui/actions_widget.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 41f4990a9b..763baabc60 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -298,7 +298,10 @@ class ActionMenuPopupModel(QtGui.QStandardItemModel): item.setData(action_item.full_label, QtCore.Qt.DisplayRole) item.setData(icon, QtCore.Qt.DecorationRole) item.setData(action_item.identifier, ACTION_ID_ROLE) - item.setData(bool(action_item.config_fields), ACTION_HAS_CONFIGS_ROLE) + item.setData( + bool(action_item.config_fields), + ACTION_HAS_CONFIGS_ROLE + ) item.setData(action_item.order, ACTION_SORT_ROLE) new_items.append(item) From 365b4d85591930110533048eaee1d3e9a572f5cc Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 29 May 2025 16:14:35 +0200 Subject: [PATCH 439/626] fix variable name --- client/ayon_core/tools/launcher/ui/actions_widget.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 763baabc60..30498b3e9a 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -459,8 +459,8 @@ class ActionMenuPopup(QtWidgets.QWidget): _, size = self._get_size_hint() self._first_anim_frame = False - self._view.setMaximumHeight(value.height()) - self.resize(value) + self._view.setMaximumHeight(size.height()) + self.resize(size) def _get_size_hint(self): grid_size = self._view.gridSize() From 0e33ec97d2c4f6603ada98e5dc9b565fc13c9401 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 29 May 2025 17:07:18 +0200 Subject: [PATCH 440/626] change scrolling --- client/ayon_core/tools/launcher/ui/actions_widget.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index 30498b3e9a..ecc53e863b 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -675,6 +675,7 @@ class ActionsView(QtWidgets.QListView): self.setResizeMode(QtWidgets.QListView.Adjust) self.setSelectionMode(QtWidgets.QListView.NoSelection) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + self.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.setContentsMargins(0, 0, 0, 0) self.setViewportMargins(0, 0, 0, 0) @@ -683,6 +684,9 @@ class ActionsView(QtWidgets.QListView): self.setWordWrap(True) self.setMouseTracking(True) + vertical_scroll = self.verticalScrollBar() + vertical_scroll.setSingleStep(8) + delegate = ActionDelegate(self) self.setItemDelegate(delegate) From 91df75f8eaaf0b6a74113c1d4facfd9be597d90f Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Fri, 30 May 2025 16:10:20 +0200 Subject: [PATCH 441/626] :sparkles: add product base type support to loaders --- client/ayon_core/pipeline/load/plugins.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 4a11b929cc..7a92ed943d 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -1,3 +1,5 @@ +"""Plugins for loading representations and products into host applications.""" +from __future__ import annotations import os import logging @@ -15,7 +17,8 @@ from .utils import get_representation_path_from_context class LoaderPlugin(list): """Load representation into host application""" - product_types = set() + product_types: set[str] = set() + product_base_types: set[str] = set() representations = set() extensions = {"*"} order = 0 @@ -122,9 +125,11 @@ class LoaderPlugin(list): plugin_repre_names = cls.get_representations() plugin_product_types = cls.product_types + plugin_product_base_types = cls.product_base_types if ( not plugin_repre_names or not plugin_product_types + or not plugin_product_base_types or not cls.extensions ): return False @@ -147,10 +152,20 @@ class LoaderPlugin(list): if "*" in plugin_product_types: return True + plugin_product_base_types = set(plugin_product_base_types) + if "*" in plugin_product_base_types: + # If plugin supports all product base types, then it is compatible + # with any product type. + return True + product_entity = context["product"] product_type = product_entity["productType"] + product_base_type = product_entity.get("productBaseType") - return product_type in plugin_product_types + if product_type in plugin_product_types: + return True + + return product_base_type in plugin_product_base_types @classmethod def get_representations(cls): From fac933c16ab73d7f893e27ab6f0a022e2dd5dcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Samohel?= <33513211+antirotor@users.noreply.github.com> Date: Fri, 30 May 2025 16:46:18 +0200 Subject: [PATCH 442/626] :recycle: make the check backwards compatible Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- client/ayon_core/pipeline/load/plugins.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/pipeline/load/plugins.py b/client/ayon_core/pipeline/load/plugins.py index 7a92ed943d..32b96e3e7a 100644 --- a/client/ayon_core/pipeline/load/plugins.py +++ b/client/ayon_core/pipeline/load/plugins.py @@ -128,8 +128,7 @@ class LoaderPlugin(list): plugin_product_base_types = cls.product_base_types if ( not plugin_repre_names - or not plugin_product_types - or not plugin_product_base_types + or (not plugin_product_types and not plugin_product_base_types) or not cls.extensions ): return False From 5953e500cb8b297402931b0d96ac8692bcd37b6f Mon Sep 17 00:00:00 2001 From: Philippe Leprince Date: Wed, 4 Jun 2025 12:25:03 +0200 Subject: [PATCH 443/626] Update to the latest version. Add function to re-generate json mapping file. Signed-off-by: Philippe Leprince --- .../MaterialSymbolsOutlined-Regular.ttf | Bin 0 -> 854520 bytes .../MaterialSymbolsOutlined.codepoints | 312 +++++++++++++++++- .../resources/MaterialSymbolsOutlined.json | 310 ++++++++++++++++- .../resources/MaterialSymbolsOutlined.ttf | Bin 8638268 -> 0 bytes .../qtmaterialsymbols/resources/__init__.py | 22 +- 5 files changed, 634 insertions(+), 10 deletions(-) create mode 100644 client/ayon_core/vendor/python/qtmaterialsymbols/resources/MaterialSymbolsOutlined-Regular.ttf delete mode 100644 client/ayon_core/vendor/python/qtmaterialsymbols/resources/MaterialSymbolsOutlined.ttf diff --git a/client/ayon_core/vendor/python/qtmaterialsymbols/resources/MaterialSymbolsOutlined-Regular.ttf b/client/ayon_core/vendor/python/qtmaterialsymbols/resources/MaterialSymbolsOutlined-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..26f767e075341d120b8df8fee226d6ba10f13f1e GIT binary patch literal 854520 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

#ThaLj;JW6c8M%K2S#(-29Ram-FY@CW7`E5= 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 z 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 pJ@5m|BbUt#IM2l1R6 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

bVxP?U<`Y8x853}DZNABr9=>H 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 E`oE=YN{hJ+&*|TX=53j_c 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 z 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%0Aa3K^ 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 z̘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�xTM30Y{OiX84mN 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

#Rbiv`A9 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%0A>{m*7iS=U@zHLslkn6q9wd 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 z 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

AfjE}x{63C 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%0AHxj)B-q^N!RCHiV{-*!-rnjJ!oifTZ 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ⅆ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

c|M;>&YxN|68#w~(?fFo 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%0D;8V2zMJe$_3RgG*DqqL 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

MZ1d2Po<(y zTzKpQkLfyh`sBmzy72Jw!ou>y7tWkGb{Z=Ti_1qJI(G8RNnOj*#GWn9Of4)-O&p)& zHa9V|Fr#axRG6BcoGcV3rsa*IvrN}#{*D>gu6La4zo{I(wcioU;o)Ix`i&lRedC62 zkWV!P(|b7e-OCdRtegj5%!n0;ODZ`8%|*#2D4dQYyl#9gr7vOjWDwiL%yhlZlPw=K zly+Dp(Tj?ODU<5g@5B{iiOFQ$${DO#X#;-<+JR z<--aq*D&wuwgL`lIp|_+Tte$h0lj&40UXS*QiU2CQopMAJQdzGaQH&`cO7U#zbV+f*&3Zgn zM1^oYT?}VRr6TosRxvA|w@}ax65n-=Rg;I`h`rXK+?r3p&%R|)$_*OVA1W=ss}&>1 zHcL5!IHueCcW(ccy)+|(Q^ZUx`evaWk9+C#q{}C_ED$rzcB1BN8hc%~$HG|*5F&mK z!5E59C{I5>eWWPKa3sI)mc8jBt%xeg6&=cAiqB1` zc+BJ(NJk6UfBXXm^7+yM!CtHDel}?3mDXk}ZIIGu;eTM`mSQ#+(ZLpN4682^BG8tV z_NUotifT8ST_`Lmce+|b5)p|aX#bUcYveAKkqucBIb$|AV=e8IVN5OI>YBY>Z*5A3 zKtJ|e?LT|qYeyt?&_yL10{{LGh=6RJL=pJ^=}C4`F(j((zPJGy5<^(|oEx1$8UG*9 zBVYf{`>5cM%zN2@&{DC633I zGtoNM%y>NswsE&o0t0sfl5e-t1+iK~UlqXvD}C@TIngS1^pIlYq=IA*?A_&11|xM) zncF2B#}2Fvf)zfn_aFMf`x%+$W88aaYIr{A*u2Z&#O#Z9-p$~wwk4HJ8EYCdA+!Z!1wR?MUmB(h9gab%w zx(cdhmz}BWfU+5Cx^Q!+vxBHrS3B=DVYO5m*P=`stS9IITTo8`lQ=p@Bw|L2n>TL*xu%wnsETC zquN_t=Cqz$;ibI4^HX|t^TvAXedEg?D4{g61NvPFrQ41gEUE(f`LTW>m&c~X3Q}C* z@Uv0-?HPZcU1e|x z3o81{%Ro!c1I?gOs(?1B8MNA$&}v`sro7+f9QhuS|NnS7?OlVi{wkF9ArNP0) zT?^lZ@UZ}MP9VqR0OtxH5diTv{|HlIi6?PEq_oIugAt1ijOVLzz-NNP00~)rjDZgr zk#+BTzekT9`KQ*p6#3n6IL?Jx3=k4`^y{!II@ZO>?_}~FvFwERQ!b(sOD-%V%TBW1 z(XnAt)RCd07M#Gmi*thYDOa!(TSzvqe&~Y(AA@%?1eJR?KO73`!jkoV4YY|MR-h^z`rv;A(pU0=U?<)#W!!5oz7 zb%mX(JLQ`zjW_OWUcYuLF+J~L&nnz5*X@dP{$ZCS2R?kd(Y}g(qnrZ>axKwjd>0sj zW+powvC!o#?Od8WM;aZafPew=wFO%%-*%@=Mf=fZ@N?+=TFV`kp`#(SGrH+$m? z=SSop5D7nYO@?mg-@N?BEpPhplE>2JKVOc+8q_z=KRk;@rP(<1o%l2><$%iQQ#6Cr z%^-!cFRi5GCWa*8q`j9ub}SvPGBAF;pHS)3Ps3^BMw%SzhXdyAU23eq>OK4HFB!|z z&pi9=KT3i+AZpiI!;IpcI~YRTywgaHmj?4>k;%nU(;BhArZV&6^!J@>Yb(YCxtFkd z0iOI�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 z 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�w-*2~Q*E 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%0Dw*sB$tGvU$aBQm#`# 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%0A0926ZoOrx> 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

)dW74`J~uVhysOf<=gynNy-Run?^yG;uds)JEg` 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

    G1xlNuzd!Ej7h{l*_+kUV=`{EabmDvhL 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%0D!-D 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

    r-Xyk&o~}aPya{?D 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%0A7tzk+ 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%0Dp%pXM} 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

    (@pOg*gb;iD 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�|B<{GUesQm_9+71$=~9U#4g02 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ⅅH)r^zPx~ckhpA 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

    ?yn?hJOstl@xIWMdQ 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⪻ZTPFrRM$u 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≪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�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 MPkx4dn1QgsG2F6lc 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 z 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≫Y%)+iI$&YeKtsMLpjeN)i1;t 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

>+7P_#@mU@yl( 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