Skip to content

launcher

LauncherAction

Bases: object

A custom action available

Source code in client/ayon_core/pipeline/actions/launcher.py
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
class LauncherAction(object):
    """A custom action available"""
    name = None
    label = None
    icon = None
    color = None
    order = 0

    log = logging.getLogger("LauncherAction")
    log.propagate = True

    def is_compatible(self, selection):
        """Return whether the class is compatible with the Session.

        Args:
            selection (LauncherActionSelection): Data with selection.

        """
        return True

    def process(self, selection, **kwargs):
        """Process the action.

        Args:
            selection (LauncherActionSelection): Data with selection.
            **kwargs: Additional arguments.

        """
        pass

is_compatible(selection)

Return whether the class is compatible with the Session.

Parameters:

Name Type Description Default
selection LauncherActionSelection

Data with selection.

required
Source code in client/ayon_core/pipeline/actions/launcher.py
369
370
371
372
373
374
375
376
def is_compatible(self, selection):
    """Return whether the class is compatible with the Session.

    Args:
        selection (LauncherActionSelection): Data with selection.

    """
    return True

process(selection, **kwargs)

Process the action.

Parameters:

Name Type Description Default
selection LauncherActionSelection

Data with selection.

required
**kwargs

Additional arguments.

{}
Source code in client/ayon_core/pipeline/actions/launcher.py
378
379
380
381
382
383
384
385
386
def process(self, selection, **kwargs):
    """Process the action.

    Args:
        selection (LauncherActionSelection): Data with selection.
        **kwargs: Additional arguments.

    """
    pass

LauncherActionSelection

Object helper to pass selection to actions.

Object support backwards compatibility for 'session' from OpenPype where environment variable keys were used to define selection.

Parameters:

Name Type Description Default
project_name str

Selected project name.

required
folder_id str

Selected folder id.

required
task_id str

Selected task id.

required
folder_path Optional[str]

Selected folder path.

None
task_name Optional[str]

Selected task name.

None
project_entity Optional[dict[str, Any]]

Project entity.

None
folder_entity Optional[dict[str, Any]]

Folder entity.

None
task_entity Optional[dict[str, Any]]

Task entity.

None
Source code in client/ayon_core/pipeline/actions/launcher.py
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
class LauncherActionSelection:
    """Object helper to pass selection to actions.

    Object support backwards compatibility for 'session' from OpenPype where
    environment variable keys were used to define selection.

    Args:
        project_name (str): Selected project name.
        folder_id (str): Selected folder id.
        task_id (str): Selected task id.
        folder_path (Optional[str]): Selected folder path.
        task_name (Optional[str]): Selected task name.
        project_entity (Optional[dict[str, Any]]): Project entity.
        folder_entity (Optional[dict[str, Any]]): Folder entity.
        task_entity (Optional[dict[str, Any]]): Task entity.

    """
    def __init__(
        self,
        project_name,
        folder_id,
        task_id,
        workfile_id,
        folder_path=None,
        task_name=None,
        project_entity=None,
        folder_entity=None,
        task_entity=None,
        workfile_entity=None,
        project_settings=None,
    ):
        self._project_name = project_name
        self._folder_id = folder_id
        self._task_id = task_id
        self._workfile_id = workfile_id

        self._folder_path = folder_path
        self._task_name = task_name

        self._project_entity = project_entity
        self._folder_entity = folder_entity
        self._task_entity = task_entity
        self._workfile_entity = workfile_entity

        self._project_settings = project_settings

    def __getitem__(self, key):
        warnings.warn(
            (
                "Using deprecated access to selection data. Please use"
                " attributes and methods"
                " defined by 'LauncherActionSelection'."
            ),
            category=DeprecationWarning
        )
        if key in {"AYON_PROJECT_NAME", "AVALON_PROJECT"}:
            return self.project_name
        if key in {"AYON_FOLDER_PATH", "AVALON_ASSET"}:
            return self.folder_path
        if key in {"AYON_TASK_NAME", "AVALON_TASK"}:
            return self.task_name
        raise KeyError(f"Key: {key} not found")

    def __iter__(self):
        for key in self.keys():
            yield key

    def __contains__(self, key):
        warnings.warn(
            (
                "Using deprecated access to selection data. Please use"
                " attributes and methods"
                " defined by 'LauncherActionSelection'."
            ),
            category=DeprecationWarning
        )
        # Fake missing keys check for backwards compatibility
        if key in {
            "AYON_PROJECT_NAME",
            "AVALON_PROJECT",
        }:
            return self._project_name is not None
        if key in {
            "AYON_FOLDER_PATH",
            "AVALON_ASSET",
        }:
            return self._folder_id is not None
        if key in {
            "AYON_TASK_NAME",
            "AVALON_TASK",
        }:
            return self._task_id is not None
        return False

    def get(self, key, default=None):
        """

        Deprecated:
            Added for backwards compatibility with older actions.

        """
        warnings.warn(
            (
                "Using deprecated access to selection data. Please use"
                " attributes and methods"
                " defined by 'LauncherActionSelection'."
            ),
            category=DeprecationWarning
        )
        try:
            return self[key]
        except KeyError:
            return default

    def items(self):
        """

        Deprecated:
            Added for backwards compatibility with older actions.

        """
        for key, value in (
            ("AYON_PROJECT_NAME", self.project_name),
            ("AYON_FOLDER_PATH", self.folder_path),
            ("AYON_TASK_NAME", self.task_name),
        ):
            if value is not None:
                yield (key, value)

    def keys(self):
        """

        Deprecated:
            Added for backwards compatibility with older actions.

        """
        for key, _ in self.items():
            yield key

    def values(self):
        """

        Deprecated:
            Added for backwards compatibility with older actions.

        """
        for _, value in self.items():
            yield value

    def get_project_name(self):
        """Selected project name.

        Returns:
            Union[str, None]: Selected project name.

        """
        return self._project_name

    def get_folder_id(self):
        """Selected folder id.

        Returns:
            Union[str, None]: Selected folder id.

        """
        return self._folder_id

    def get_folder_path(self):
        """Selected folder path.

        Returns:
            Union[str, None]: Selected folder path.

        """
        if self._folder_id is None:
            return None
        if self._folder_path is None:
            self._folder_path = self.folder_entity["path"]
        return self._folder_path

    def get_task_id(self):
        """Selected task id.

        Returns:
            Union[str, None]: Selected task id.

        """
        return self._task_id

    def get_task_name(self):
        """Selected task name.

        Returns:
            Union[str, None]: Selected task name.

        """
        if self._task_id is None:
            return None
        if self._task_name is None:
            self._task_name = self.task_entity["name"]
        return self._task_name

    def get_workfile_id(self):
        """Selected workfile id.

        Returns:
            Union[str, None]: Selected workfile id.

        """
        return self._workfile_id

    def get_project_entity(self):
        """Project entity for the selection.

        Returns:
            Union[dict[str, Any], None]: Project entity.

        """
        if self._project_name is None:
            return None
        if self._project_entity is None:
            self._project_entity = ayon_api.get_project(self._project_name)
        return self._project_entity

    def get_folder_entity(self):
        """Folder entity for the selection.

        Returns:
            Union[dict[str, Any], None]: Folder entity.

        """
        if self._project_name is None or self._folder_id is None:
            return None
        if self._folder_entity is None:
            self._folder_entity = ayon_api.get_folder_by_id(
                self._project_name, self._folder_id
            )
        return self._folder_entity

    def get_task_entity(self):
        """Task entity for the selection.

        Returns:
            Union[dict[str, Any], None]: Task entity.

        """
        if (
            self._project_name is None
            or self._task_id is None
        ):
            return None
        if self._task_entity is None:
            self._task_entity = ayon_api.get_task_by_id(
                self._project_name, self._task_id
            )
        return self._task_entity

    def get_workfile_entity(self):
        """Workfile entity for the selection.

        Returns:
            Union[dict[str, Any], None]: Workfile entity.

        """
        if (
            self._project_name is None
            or self._workfile_id is None
        ):
            return None
        if self._workfile_entity is None:
            self._workfile_entity = ayon_api.get_workfile_info_by_id(
                self._project_name, self._workfile_id
            )
        return self._workfile_entity

    def get_project_settings(self):
        """Project settings for the selection.

        Returns:
            dict[str, Any]: Project settings or studio settings if
                project is not selected.

        """
        if self._project_settings is None:
            if self._project_name is None:
                settings = get_studio_settings()
            else:
                settings = get_project_settings(self._project_name)
            self._project_settings = settings
        return self._project_settings

    @property
    def is_project_selected(self):
        """Return whether a project is selected.

        Returns:
            bool: Whether a project is selected.

        """
        return self._project_name is not None

    @property
    def is_folder_selected(self):
        """Return whether a folder is selected.

        Returns:
            bool: Whether a folder is selected.

        """
        return self._folder_id is not None

    @property
    def is_task_selected(self):
        """Return whether a task is selected.

        Returns:
            bool: Whether a task is selected.

        """
        return self._task_id is not None

    @property
    def is_workfile_selected(self):
        """Return whether a task is selected.

        Returns:
            bool: Whether a task is selected.

        """
        return self._workfile_id is not None

    project_name = property(get_project_name)
    folder_id = property(get_folder_id)
    task_id = property(get_task_id)
    workfile_id = property(get_workfile_id)
    folder_path = property(get_folder_path)
    task_name = property(get_task_name)

    project_entity = property(get_project_entity)
    folder_entity = property(get_folder_entity)
    task_entity = property(get_task_entity)
    workfile_entity = property(get_workfile_entity)

is_folder_selected property

Return whether a folder is selected.

Returns:

Name Type Description
bool

Whether a folder is selected.

is_project_selected property

Return whether a project is selected.

Returns:

Name Type Description
bool

Whether a project is selected.

is_task_selected property

Return whether a task is selected.

Returns:

Name Type Description
bool

Whether a task is selected.

is_workfile_selected property

Return whether a task is selected.

Returns:

Name Type Description
bool

Whether a task is selected.

get(key, default=None)

Deprecated

Added for backwards compatibility with older actions.

Source code in client/ayon_core/pipeline/actions/launcher.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
def get(self, key, default=None):
    """

    Deprecated:
        Added for backwards compatibility with older actions.

    """
    warnings.warn(
        (
            "Using deprecated access to selection data. Please use"
            " attributes and methods"
            " defined by 'LauncherActionSelection'."
        ),
        category=DeprecationWarning
    )
    try:
        return self[key]
    except KeyError:
        return default

get_folder_entity()

Folder entity for the selection.

Returns:

Type Description

Union[dict[str, Any], None]: Folder entity.

Source code in client/ayon_core/pipeline/actions/launcher.py
238
239
240
241
242
243
244
245
246
247
248
249
250
251
def get_folder_entity(self):
    """Folder entity for the selection.

    Returns:
        Union[dict[str, Any], None]: Folder entity.

    """
    if self._project_name is None or self._folder_id is None:
        return None
    if self._folder_entity is None:
        self._folder_entity = ayon_api.get_folder_by_id(
            self._project_name, self._folder_id
        )
    return self._folder_entity

get_folder_id()

Selected folder id.

Returns:

Type Description

Union[str, None]: Selected folder id.

Source code in client/ayon_core/pipeline/actions/launcher.py
172
173
174
175
176
177
178
179
def get_folder_id(self):
    """Selected folder id.

    Returns:
        Union[str, None]: Selected folder id.

    """
    return self._folder_id

get_folder_path()

Selected folder path.

Returns:

Type Description

Union[str, None]: Selected folder path.

Source code in client/ayon_core/pipeline/actions/launcher.py
181
182
183
184
185
186
187
188
189
190
191
192
def get_folder_path(self):
    """Selected folder path.

    Returns:
        Union[str, None]: Selected folder path.

    """
    if self._folder_id is None:
        return None
    if self._folder_path is None:
        self._folder_path = self.folder_entity["path"]
    return self._folder_path

get_project_entity()

Project entity for the selection.

Returns:

Type Description

Union[dict[str, Any], None]: Project entity.

Source code in client/ayon_core/pipeline/actions/launcher.py
225
226
227
228
229
230
231
232
233
234
235
236
def get_project_entity(self):
    """Project entity for the selection.

    Returns:
        Union[dict[str, Any], None]: Project entity.

    """
    if self._project_name is None:
        return None
    if self._project_entity is None:
        self._project_entity = ayon_api.get_project(self._project_name)
    return self._project_entity

get_project_name()

Selected project name.

Returns:

Type Description

Union[str, None]: Selected project name.

Source code in client/ayon_core/pipeline/actions/launcher.py
163
164
165
166
167
168
169
170
def get_project_name(self):
    """Selected project name.

    Returns:
        Union[str, None]: Selected project name.

    """
    return self._project_name

get_project_settings()

Project settings for the selection.

Returns:

Type Description

dict[str, Any]: Project settings or studio settings if project is not selected.

Source code in client/ayon_core/pipeline/actions/launcher.py
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
def get_project_settings(self):
    """Project settings for the selection.

    Returns:
        dict[str, Any]: Project settings or studio settings if
            project is not selected.

    """
    if self._project_settings is None:
        if self._project_name is None:
            settings = get_studio_settings()
        else:
            settings = get_project_settings(self._project_name)
        self._project_settings = settings
    return self._project_settings

get_task_entity()

Task entity for the selection.

Returns:

Type Description

Union[dict[str, Any], None]: Task entity.

Source code in client/ayon_core/pipeline/actions/launcher.py
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
def get_task_entity(self):
    """Task entity for the selection.

    Returns:
        Union[dict[str, Any], None]: Task entity.

    """
    if (
        self._project_name is None
        or self._task_id is None
    ):
        return None
    if self._task_entity is None:
        self._task_entity = ayon_api.get_task_by_id(
            self._project_name, self._task_id
        )
    return self._task_entity

get_task_id()

Selected task id.

Returns:

Type Description

Union[str, None]: Selected task id.

Source code in client/ayon_core/pipeline/actions/launcher.py
194
195
196
197
198
199
200
201
def get_task_id(self):
    """Selected task id.

    Returns:
        Union[str, None]: Selected task id.

    """
    return self._task_id

get_task_name()

Selected task name.

Returns:

Type Description

Union[str, None]: Selected task name.

Source code in client/ayon_core/pipeline/actions/launcher.py
203
204
205
206
207
208
209
210
211
212
213
214
def get_task_name(self):
    """Selected task name.

    Returns:
        Union[str, None]: Selected task name.

    """
    if self._task_id is None:
        return None
    if self._task_name is None:
        self._task_name = self.task_entity["name"]
    return self._task_name

get_workfile_entity()

Workfile entity for the selection.

Returns:

Type Description

Union[dict[str, Any], None]: Workfile entity.

Source code in client/ayon_core/pipeline/actions/launcher.py
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
def get_workfile_entity(self):
    """Workfile entity for the selection.

    Returns:
        Union[dict[str, Any], None]: Workfile entity.

    """
    if (
        self._project_name is None
        or self._workfile_id is None
    ):
        return None
    if self._workfile_entity is None:
        self._workfile_entity = ayon_api.get_workfile_info_by_id(
            self._project_name, self._workfile_id
        )
    return self._workfile_entity

get_workfile_id()

Selected workfile id.

Returns:

Type Description

Union[str, None]: Selected workfile id.

Source code in client/ayon_core/pipeline/actions/launcher.py
216
217
218
219
220
221
222
223
def get_workfile_id(self):
    """Selected workfile id.

    Returns:
        Union[str, None]: Selected workfile id.

    """
    return self._workfile_id

items()

Deprecated

Added for backwards compatibility with older actions.

Source code in client/ayon_core/pipeline/actions/launcher.py
128
129
130
131
132
133
134
135
136
137
138
139
140
141
def items(self):
    """

    Deprecated:
        Added for backwards compatibility with older actions.

    """
    for key, value in (
        ("AYON_PROJECT_NAME", self.project_name),
        ("AYON_FOLDER_PATH", self.folder_path),
        ("AYON_TASK_NAME", self.task_name),
    ):
        if value is not None:
            yield (key, value)

keys()

Deprecated

Added for backwards compatibility with older actions.

Source code in client/ayon_core/pipeline/actions/launcher.py
143
144
145
146
147
148
149
150
151
def keys(self):
    """

    Deprecated:
        Added for backwards compatibility with older actions.

    """
    for key, _ in self.items():
        yield key

values()

Deprecated

Added for backwards compatibility with older actions.

Source code in client/ayon_core/pipeline/actions/launcher.py
153
154
155
156
157
158
159
160
161
def values(self):
    """

    Deprecated:
        Added for backwards compatibility with older actions.

    """
    for _, value in self.items():
        yield value