diff --git a/.github/workflows/release_trigger.yml b/.github/workflows/release_trigger.yml
index 01a3b3a682..4293e4a8e9 100644
--- a/.github/workflows/release_trigger.yml
+++ b/.github/workflows/release_trigger.yml
@@ -2,10 +2,23 @@ name: 🚀 Release Trigger
on:
workflow_dispatch:
+ inputs:
+ draft:
+ type: boolean
+ description: "Create Release Draft"
+ required: false
+ default: false
+ release_overwrite:
+ type: string
+ description: "Set Version Release Tag"
+ required: false
jobs:
call-release-trigger:
uses: ynput/ops-repo-automation/.github/workflows/release_trigger.yml@main
+ with:
+ draft: ${{ inputs.draft }}
+ release_overwrite: ${{ inputs.release_overwrite }}
secrets:
token: ${{ secrets.YNPUT_BOT_TOKEN }}
email: ${{ secrets.CI_EMAIL }}
diff --git a/client/ayon_core/lib/attribute_definitions.py b/client/ayon_core/lib/attribute_definitions.py
index 4877a45118..34956fd33f 100644
--- a/client/ayon_core/lib/attribute_definitions.py
+++ b/client/ayon_core/lib/attribute_definitions.py
@@ -327,8 +327,8 @@ class UISeparatorDef(UIDef):
class UILabelDef(UIDef):
type = "label"
- def __init__(self, label, key=None):
- super().__init__(label=label, key=key)
+ def __init__(self, label, key=None, *args, **kwargs):
+ super().__init__(label=label, key=key, *args, **kwargs)
def _def_type_compare(self, other: "UILabelDef") -> bool:
return self.label == other.label
@@ -523,7 +523,10 @@ class TextDef(AbstractAttrDef):
def serialize(self):
data = super().serialize()
- data["regex"] = self.regex.pattern
+ regex = None
+ if self.regex is not None:
+ regex = self.regex.pattern
+ data["regex"] = regex
data["multiline"] = self.multiline
data["placeholder"] = self.placeholder
return data
diff --git a/client/ayon_core/pipeline/create/structures.py b/client/ayon_core/pipeline/create/structures.py
index bcc9a87c49..ba4a373597 100644
--- a/client/ayon_core/pipeline/create/structures.py
+++ b/client/ayon_core/pipeline/create/structures.py
@@ -132,6 +132,10 @@ class AttributeValues:
def __contains__(self, key):
return key in self._attr_defs_by_key
+ def __iter__(self):
+ for key in self._attr_defs_by_key:
+ yield key
+
def get(self, key, default=None):
if key in self._attr_defs_by_key:
return self[key]
diff --git a/client/ayon_core/plugins/publish/extract_hierarchy_to_ayon.py b/client/ayon_core/plugins/publish/extract_hierarchy_to_ayon.py
index 60c92aa8b1..a169affc66 100644
--- a/client/ayon_core/plugins/publish/extract_hierarchy_to_ayon.py
+++ b/client/ayon_core/plugins/publish/extract_hierarchy_to_ayon.py
@@ -154,7 +154,9 @@ class ExtractHierarchyToAYON(pyblish.api.ContextPlugin):
# TODO check if existing entity have 'task' type
if task_entity is None:
task_entity = entity_hub.add_new_task(
- task_info["type"],
+ task_type=task_info["type"],
+ # TODO change 'parent_id' to 'folder_id' when ayon api
+ # is updated
parent_id=entity.id,
name=task_name
)
@@ -182,7 +184,7 @@ class ExtractHierarchyToAYON(pyblish.api.ContextPlugin):
folder_type = "Folder"
child_entity = entity_hub.add_new_folder(
- folder_type,
+ folder_type=folder_type,
parent_id=entity.id,
name=child_name
)
diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py
index cdcd28a9ce..16b1f37187 100644
--- a/server/settings/publish_plugins.py
+++ b/server/settings/publish_plugins.py
@@ -459,8 +459,8 @@ class ExtractReviewFilterModel(BaseSettingsModel):
single_frame_filter: str = SettingsField(
"everytime", # codespell:ignore everytime
description=(
- "Use output always / only if input is 1 frame"
- " image / only if has 2+ frames or is video"
+ "Use output **always** / only if input **is 1 frame**"
+ " image / only if has **2+ frames** or **is video**"
),
enum_resolver=extract_review_filter_enum
)