chris.models.data

Dataclasses describing objects returned from CUBE.

These classes are extended in the modules chris.models.logged_in and chris.models.public with methods to get objects from links.

  1"""
  2Dataclasses describing objects returned from CUBE.
  3
  4These classes are extended in the modules `chris.models.logged_in`
  5and `chris.models.public` with methods to get objects from links.
  6"""
  7
  8from dataclasses import dataclass
  9import datetime
 10from typing import Optional
 11
 12from serde import deserialize
 13
 14from chris.link.linked import LinkedModel
 15from chris.models.enums import PluginType, Status
 16from chris.models.types import *
 17
 18
 19@deserialize
 20@dataclass(frozen=True)
 21class UserData:
 22    """A *CUBE* user."""
 23
 24    url: UserUrl
 25    id: UserId
 26    username: Username
 27    email: str
 28
 29
 30# TODO It'd be better to use inheritance instead of optionals
 31@deserialize
 32@dataclass(frozen=True)
 33class PluginInstanceData(LinkedModel):
 34    """
 35    A *plugin instance* in _ChRIS_ is a computing job, i.e. an attempt to run
 36    a computation (a non-interactive command-line app) to produce data.
 37    """
 38
 39    url: PluginInstanceUrl
 40    id: PluginInstanceId
 41    title: str
 42    compute_resource_name: ComputeResourceName
 43    plugin_id: PluginId
 44    plugin_name: PluginName
 45    plugin_version: PluginVersion
 46    plugin_type: PluginType
 47
 48    pipeline_inst: Optional[int]
 49    feed_id: FeedId
 50    start_date: datetime.datetime
 51    end_date: datetime.datetime
 52    output_path: CubeFilePath
 53
 54    status: Status
 55
 56    summary: str
 57    raw: str
 58    owner_username: Username
 59    cpu_limit: int
 60    memory_limit: int
 61    number_of_workers: int
 62    gpu_limit: int
 63    error_code: CUBEErrorCode
 64
 65    previous: Optional[PluginInstanceUrl]
 66    feed: FeedUrl
 67    plugin: PluginUrl
 68    descendants: DescendantsUrl
 69    files: FilesUrl
 70    parameters: PluginInstanceParamtersUrl
 71    compute_resource: ComputeResourceUrl
 72    splits: SplitsUrl
 73
 74    previous_id: Optional[int] = None
 75    """
 76    FS plugins will not produce a `previous_id` value
 77    (even though they will return `"previous": null`)
 78    """
 79
 80    size: Optional[int] = None
 81    """
 82    IDK what it is the size of.
 83
 84    This field shows up when the plugin instance is maybe done,
 85    but not when the plugin instance is created.
 86    """
 87    template: Optional[dict] = None
 88    """
 89    Present only when getting a plugin instance.
 90    """
 91
 92
 93@deserialize
 94@dataclass(frozen=True)
 95class FeedData(LinkedModel):
 96    url: FeedUrl
 97    id: FeedId
 98    creation_date: datetime.datetime
 99    modification_date: datetime.datetime
100    name: str
101    creator_username: Username
102    created_jobs: int
103    waiting_jobs: int
104    scheduled_jobs: int
105    started_jobs: int
106    registering_jobs: int
107    finished_jobs: int
108    errored_jobs: int
109    cancelled_jobs: int
110    owner: list[UserUrl]
111    note: NoteUrl
112    tags: TagsUrl
113    taggings: TaggingsUrl
114    comments: CommentsUrl
115    files: FilesUrl
116    plugin_instances: PluginInstancesUrl
117
118
119@deserialize
120@dataclass(frozen=True)
121class FeedNoteData(LinkedModel):
122    url: FeedUrl
123    id: NoteId
124    title: str
125    content: str
126    feed: FeedUrl
@deserialize
@dataclass(frozen=True)
class UserData:
20@deserialize
21@dataclass(frozen=True)
22class UserData:
23    """A *CUBE* user."""
24
25    url: UserUrl
26    id: UserId
27    username: Username
28    email: str

A CUBE user.

UserData( url: chris.models.types.UserUrl, id: chris.models.types.UserId, username: chris.models.types.Username, email: str)
@deserialize
@dataclass(frozen=True)
class PluginInstanceData(chris.link.linked.LinkedModel):
32@deserialize
33@dataclass(frozen=True)
34class PluginInstanceData(LinkedModel):
35    """
36    A *plugin instance* in _ChRIS_ is a computing job, i.e. an attempt to run
37    a computation (a non-interactive command-line app) to produce data.
38    """
39
40    url: PluginInstanceUrl
41    id: PluginInstanceId
42    title: str
43    compute_resource_name: ComputeResourceName
44    plugin_id: PluginId
45    plugin_name: PluginName
46    plugin_version: PluginVersion
47    plugin_type: PluginType
48
49    pipeline_inst: Optional[int]
50    feed_id: FeedId
51    start_date: datetime.datetime
52    end_date: datetime.datetime
53    output_path: CubeFilePath
54
55    status: Status
56
57    summary: str
58    raw: str
59    owner_username: Username
60    cpu_limit: int
61    memory_limit: int
62    number_of_workers: int
63    gpu_limit: int
64    error_code: CUBEErrorCode
65
66    previous: Optional[PluginInstanceUrl]
67    feed: FeedUrl
68    plugin: PluginUrl
69    descendants: DescendantsUrl
70    files: FilesUrl
71    parameters: PluginInstanceParamtersUrl
72    compute_resource: ComputeResourceUrl
73    splits: SplitsUrl
74
75    previous_id: Optional[int] = None
76    """
77    FS plugins will not produce a `previous_id` value
78    (even though they will return `"previous": null`)
79    """
80
81    size: Optional[int] = None
82    """
83    IDK what it is the size of.
84
85    This field shows up when the plugin instance is maybe done,
86    but not when the plugin instance is created.
87    """
88    template: Optional[dict] = None
89    """
90    Present only when getting a plugin instance.
91    """

A plugin instance in _ChRIS_ is a computing job, i.e. an attempt to run a computation (a non-interactive command-line app) to produce data.

PluginInstanceData( s: aiohttp.client.ClientSession, max_search_requests: int, url: chris.models.types.PluginInstanceUrl, id: chris.models.types.PluginInstanceId, title: str, compute_resource_name: chris.models.types.ComputeResourceName, plugin_id: chris.models.types.PluginId, plugin_name: chris.models.types.PluginName, plugin_version: chris.models.types.PluginVersion, plugin_type: chris.models.enums.PluginType, pipeline_inst: Optional[int], feed_id: chris.models.types.FeedId, start_date: datetime.datetime, end_date: datetime.datetime, output_path: chris.models.types.CubeFilePath, status: chris.models.enums.Status, summary: str, raw: str, owner_username: chris.models.types.Username, cpu_limit: int, memory_limit: int, number_of_workers: int, gpu_limit: int, error_code: chris.models.types.CUBEErrorCode, previous: Optional[chris.models.types.PluginInstanceUrl], feed: chris.models.types.FeedUrl, plugin: chris.models.types.PluginUrl, descendants: chris.models.types.DescendantsUrl, files: chris.models.types.FilesUrl, parameters: chris.models.types.PluginInstanceParametersUrl, compute_resource: chris.models.types.ComputeResourceUrl, splits: chris.models.types.SplitsUrl, previous_id: Optional[int] = None, size: Optional[int] = None, template: Optional[dict] = None)
previous_id: Optional[int] = None

FS plugins will not produce a previous_id value (even though they will return "previous": null)

size: Optional[int] = None

IDK what it is the size of.

This field shows up when the plugin instance is maybe done, but not when the plugin instance is created.

template: Optional[dict] = None

Present only when getting a plugin instance.

Inherited Members
chris.link.linked.Linked
max_search_requests
@deserialize
@dataclass(frozen=True)
class FeedData(chris.link.linked.LinkedModel):
 94@deserialize
 95@dataclass(frozen=True)
 96class FeedData(LinkedModel):
 97    url: FeedUrl
 98    id: FeedId
 99    creation_date: datetime.datetime
100    modification_date: datetime.datetime
101    name: str
102    creator_username: Username
103    created_jobs: int
104    waiting_jobs: int
105    scheduled_jobs: int
106    started_jobs: int
107    registering_jobs: int
108    finished_jobs: int
109    errored_jobs: int
110    cancelled_jobs: int
111    owner: list[UserUrl]
112    note: NoteUrl
113    tags: TagsUrl
114    taggings: TaggingsUrl
115    comments: CommentsUrl
116    files: FilesUrl
117    plugin_instances: PluginInstancesUrl
FeedData( s: aiohttp.client.ClientSession, max_search_requests: int, url: chris.models.types.FeedUrl, id: chris.models.types.FeedId, creation_date: datetime.datetime, modification_date: datetime.datetime, name: str, creator_username: chris.models.types.Username, created_jobs: int, waiting_jobs: int, scheduled_jobs: int, started_jobs: int, registering_jobs: int, finished_jobs: int, errored_jobs: int, cancelled_jobs: int, owner: list[chris.models.types.UserUrl], note: chris.models.types.NoteUrl, tags: chris.models.types.TagsUrl, taggings: chris.models.types.TaggingsUrl, comments: chris.models.types.CommentsUrl, files: chris.models.types.FilesUrl, plugin_instances: chris.models.types.PluginInstancesUrl)
Inherited Members
chris.link.linked.Linked
max_search_requests
@deserialize
@dataclass(frozen=True)
class FeedNoteData(chris.link.linked.LinkedModel):
120@deserialize
121@dataclass(frozen=True)
122class FeedNoteData(LinkedModel):
123    url: FeedUrl
124    id: NoteId
125    title: str
126    content: str
127    feed: FeedUrl
FeedNoteData( s: aiohttp.client.ClientSession, max_search_requests: int, url: chris.models.types.FeedUrl, id: chris.models.types.NoteId, title: str, content: str, feed: chris.models.types.FeedUrl)
Inherited Members
chris.link.linked.Linked
max_search_requests