Source code for flytekit.models.documentation

from dataclasses import dataclass
from enum import Enum
from typing import Optional

from flyteidl.admin import description_entity_pb2

from flytekit.models import common as _common_models


[docs] @dataclass class Description(_common_models.FlyteIdlEntity): """ Full user description with formatting preserved. This can be rendered by clients, such as the console or command line tools with in-tact formatting. """ class DescriptionFormat(Enum): UNKNOWN = 0 MARKDOWN = 1 HTML = 2 RST = 3 value: Optional[str] = None uri: Optional[str] = None icon_link: Optional[str] = None format: DescriptionFormat = DescriptionFormat.RST
[docs] def to_flyte_idl(self): return description_entity_pb2.Description( value=self.value if self.value else None, uri=self.uri if self.uri else None, format=self.format.value, icon_link=self.icon_link, )
[docs] @classmethod def from_flyte_idl(cls, pb2_object: description_entity_pb2.Description) -> "Description": return cls( value=pb2_object.value if pb2_object.value else None, uri=pb2_object.uri if pb2_object.uri else None, format=Description.DescriptionFormat(pb2_object.format), icon_link=pb2_object.icon_link if pb2_object.icon_link else None, )
[docs] @dataclass class SourceCode(_common_models.FlyteIdlEntity): """ Link to source code used to define this task or workflow. """ link: Optional[str] = None
[docs] def to_flyte_idl(self): return description_entity_pb2.SourceCode(link=self.link)
[docs] @classmethod def from_flyte_idl(cls, pb2_object: description_entity_pb2.SourceCode) -> "SourceCode": return cls(link=pb2_object.link) if pb2_object.link else None
[docs] @dataclass class Documentation(_common_models.FlyteIdlEntity): """ DescriptionEntity contains detailed description for the task/workflow/launch plan. Documentation could provide insight into the algorithms, business use case, etc. Args: short_description (str): One-liner overview of the entity. long_description (Optional[Description]): Full user description with formatting preserved. source_code (Optional[SourceCode]): link to source code used to define this entity """ short_description: Optional[str] = None long_description: Optional[Description] = None source_code: Optional[SourceCode] = None
[docs] def to_flyte_idl(self): return description_entity_pb2.DescriptionEntity( short_description=self.short_description, long_description=self.long_description.to_flyte_idl() if self.long_description else None, source_code=self.source_code.to_flyte_idl() if self.source_code else None, )
[docs] @classmethod def from_flyte_idl(cls, pb2_object: description_entity_pb2.DescriptionEntity) -> "Documentation": return cls( short_description=pb2_object.short_description, long_description=Description.from_flyte_idl(pb2_object.long_description) if pb2_object.long_description else None, source_code=SourceCode.from_flyte_idl(pb2_object.source_code) if pb2_object.source_code else None, )