mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
implemented abstract host class
This commit is contained in:
parent
e834c8cf67
commit
6b6c93376e
2 changed files with 103 additions and 0 deletions
96
client/ayon_core/host/abstract.py
Normal file
96
client/ayon_core/host/abstract.py
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
import typing
|
||||||
|
from typing import Optional, Any
|
||||||
|
|
||||||
|
from .constants import ContextChangeReason
|
||||||
|
|
||||||
|
if typing.TYPE_CHECKING:
|
||||||
|
from ayon_core.pipeline import Anatomy
|
||||||
|
|
||||||
|
from .typing import HostContextData
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractHost(ABC):
|
||||||
|
"""Abstract definition of host implementation."""
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def log(self) -> logging.Logger:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def name(self) -> str:
|
||||||
|
"""Host name."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_current_context(self) -> HostContextData:
|
||||||
|
"""Get the current context of the host.
|
||||||
|
|
||||||
|
Current context is defined by project name, folder path and task name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
HostContextData: The current context of the host.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def set_current_context(
|
||||||
|
self,
|
||||||
|
folder_entity: dict[str, Any],
|
||||||
|
task_entity: dict[str, Any],
|
||||||
|
*,
|
||||||
|
reason: ContextChangeReason = ContextChangeReason.undefined,
|
||||||
|
project_entity: Optional[dict[str, Any]] = None,
|
||||||
|
anatomy: Optional[Anatomy] = None,
|
||||||
|
) -> HostContextData:
|
||||||
|
"""Change context of the host.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
folder_entity (dict[str, Any]): Folder entity.
|
||||||
|
task_entity (dict[str, Any]): Task entity.
|
||||||
|
reason (ContextChangeReason): Reason for change.
|
||||||
|
project_entity (dict[str, Any]): Project entity.
|
||||||
|
anatomy (Anatomy): Anatomy entity.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_current_project_name(self) -> str:
|
||||||
|
"""Get the current project name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[str]: The current project name.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_current_folder_path(self) -> Optional[str]:
|
||||||
|
"""Get the current folder path.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[str]: The current folder path.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_current_task_name(self) -> Optional[str]:
|
||||||
|
"""Get the current task name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[str]: The current task name.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_context_title(self) -> str:
|
||||||
|
"""Get the context title used in UIs."""
|
||||||
|
pass
|
||||||
7
client/ayon_core/host/typing.py
Normal file
7
client/ayon_core/host/typing.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
from typing import Optional, TypedDict
|
||||||
|
|
||||||
|
|
||||||
|
class HostContextData(TypedDict):
|
||||||
|
project_name: str
|
||||||
|
folder_path: Optional[str]
|
||||||
|
task_name: Optional[str]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue