Skip to content

manifest

ManifestV1

Bases: _ManifestBaseV1

Manifest schema version 1.

Attributes:

Name Type Description
task_list list[TaskManifestV1]
Source code in fractal_server/app/schemas/v1/manifest.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
class ManifestV1(_ManifestBaseV1):
    """
    Manifest schema version 1.

    Attributes:
        task_list:
    """

    task_list: list[TaskManifestV1]

    @validator("manifest_version")
    def manifest_version_1(cls, value):
        if value != "1":
            raise ValueError(f"Wrong manifest version (given {value})")

TaskManifestV1

Bases: _TaskManifestBaseV1

Task manifest schema version 1.

Source code in fractal_server/app/schemas/v1/manifest.py
105
106
107
108
109
110
class TaskManifestV1(_TaskManifestBaseV1):
    """
    Task manifest schema version 1.
    """

    pass

_ManifestBaseV1

Bases: BaseModel

Base class for ManifestV1.

Packages containing tasks are required to include a special file __FRACTAL_MANIFEST__.json in order to be discovered and used by Fractal.

This model class and the model classes it depends on provide the base schema to read, write and validate manifests.

Attributes:

Name Type Description
manifest_version str

A version string that provides indication for compatibility between manifests as the schema evolves. This is for instance used by Fractal to determine which subclass of the present base class needs be used to read and validate the input.

task_list

list[TaskManifestType] The list of tasks, represented as specified by subclasses of the _TaskManifestBase (a.k.a. TaskManifestType)

has_args_schemas bool

True if the manifest incldues JSON Schemas for the arguments of each task.

args_schema_version Optional[str]

Label of how args_schemas were generated (e.g. pydantic_v1).

Source code in fractal_server/app/schemas/v1/manifest.py
 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
class _ManifestBaseV1(BaseModel):
    """
    Base class for `ManifestV1`.

    Packages containing tasks are required to include a special file
    `__FRACTAL_MANIFEST__.json` in order to be discovered and used by Fractal.

    This model class and the model classes it depends on provide the base
    schema to read, write and validate manifests.

    Attributes:
        manifest_version:
            A version string that provides indication for compatibility between
            manifests as the schema evolves. This is for instance used by
            Fractal to determine which subclass of the present base class needs
            be used to read and validate the input.
        task_list : list[TaskManifestType]
            The list of tasks, represented as specified by subclasses of the
            _TaskManifestBase (a.k.a. TaskManifestType)
        has_args_schemas:
            `True` if the manifest incldues JSON Schemas for the arguments of
            each task.
        args_schema_version:
            Label of how `args_schema`s were generated (e.g. `pydantic_v1`).
    """

    manifest_version: str
    task_list: list[TaskManifestType]
    has_args_schemas: bool = False
    args_schema_version: Optional[str]

    @root_validator()
    def _check_args_schemas_are_present(cls, values):
        has_args_schemas = values["has_args_schemas"]
        task_list = values["task_list"]
        if has_args_schemas:
            for task in task_list:
                if task.args_schema is None:
                    raise ValueError(
                        f'has_args_schemas={has_args_schemas} but task "'
                        f'{task.name}" has args_schema={task.args_schema}.'
                    )
        return values

_TaskManifestBaseV1

Bases: BaseModel

Base class for TaskManifestV1.

Represents a task within a manfest

Attributes:

Name Type Description
name str

The task name

executable str

Path to the executable relative to the package root

Note: by package root we mean "as it will be installed". If a package Pkg installs in the folder pkg the executable pkg/executable.py, this attribute must contain only executable.py.

input_type str

The input type accepted by the task

output_type str

The output type returned by the task

meta Optional[dict[str, Any]]

Additional information about the package, such as hash of the executable, specific runtime requirements (e.g., need_gpu=True), etc.

args_schema Optional[dict[str, Any]]

JSON Schema for task arguments

docs_info Optional[str]

Additional information about the Task, coming from the docstring.

docs_link Optional[HttpUrl]

Link to Task docs.

Source code in fractal_server/app/schemas/v1/manifest.py
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
class _TaskManifestBaseV1(BaseModel):
    """
    Base class for `TaskManifestV1`.

    Represents a task within a manfest

    Attributes:
        name:
            The task name
        executable:
            Path to the executable relative to the package root

            Note: by package root we mean "as it will be installed". If a
            package `Pkg` installs in the folder `pkg` the executable
            `pkg/executable.py`, this attribute must contain only
            `executable.py`.
        input_type:
            The input type accepted by the task
        output_type:
            The output type returned by the task
        meta:
            Additional information about the package, such as hash of the
            executable, specific runtime requirements (e.g., need_gpu=True),
            etc.
        args_schema:
            JSON Schema for task arguments
        docs_info:
            Additional information about the Task, coming from the docstring.
        docs_link:
            Link to Task docs.
    """

    name: str
    executable: str
    input_type: str
    output_type: str
    meta: Optional[dict[str, Any]] = Field(default_factory=dict)
    args_schema: Optional[dict[str, Any]]
    docs_info: Optional[str]
    docs_link: Optional[HttpUrl]