tracdap-runtime 0.6.1.dev3__py3-none-any.whl → 0.6.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. tracdap/rt/_exec/actors.py +87 -10
  2. tracdap/rt/_exec/context.py +25 -1
  3. tracdap/rt/_exec/dev_mode.py +277 -221
  4. tracdap/rt/_exec/engine.py +79 -14
  5. tracdap/rt/_exec/functions.py +37 -8
  6. tracdap/rt/_exec/graph.py +2 -0
  7. tracdap/rt/_exec/graph_builder.py +118 -56
  8. tracdap/rt/_exec/runtime.py +108 -37
  9. tracdap/rt/_exec/server.py +345 -0
  10. tracdap/rt/_impl/config_parser.py +219 -49
  11. tracdap/rt/_impl/data.py +14 -0
  12. tracdap/rt/_impl/grpc/__init__.py +13 -0
  13. tracdap/rt/_impl/grpc/codec.py +99 -0
  14. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +51 -0
  15. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +61 -0
  16. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +183 -0
  17. tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py +33 -0
  18. tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.pyi +34 -0
  19. tracdap/rt/{metadata → _impl/grpc/tracdap/metadata}/custom_pb2.py +5 -5
  20. tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.pyi +15 -0
  21. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +51 -0
  22. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi +115 -0
  23. tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +28 -0
  24. tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi +22 -0
  25. tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +59 -0
  26. tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.pyi +109 -0
  27. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +76 -0
  28. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +177 -0
  29. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +63 -0
  30. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +119 -0
  31. tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +32 -0
  32. tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi +68 -0
  33. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +40 -0
  34. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +46 -0
  35. tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +39 -0
  36. tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.pyi +83 -0
  37. tracdap/rt/_impl/grpc/tracdap/metadata/stoarge_pb2.py +50 -0
  38. tracdap/rt/_impl/grpc/tracdap/metadata/stoarge_pb2.pyi +89 -0
  39. tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +34 -0
  40. tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.pyi +26 -0
  41. tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +30 -0
  42. tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.pyi +34 -0
  43. tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +47 -0
  44. tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.pyi +101 -0
  45. tracdap/rt/_impl/guard_rails.py +26 -6
  46. tracdap/rt/_impl/models.py +25 -0
  47. tracdap/rt/_impl/static_api.py +27 -9
  48. tracdap/rt/_impl/type_system.py +17 -0
  49. tracdap/rt/_impl/validation.py +10 -0
  50. tracdap/rt/_plugins/config_local.py +49 -0
  51. tracdap/rt/_version.py +1 -1
  52. tracdap/rt/api/hook.py +10 -3
  53. tracdap/rt/api/model_api.py +22 -0
  54. tracdap/rt/api/static_api.py +79 -19
  55. tracdap/rt/config/__init__.py +3 -3
  56. tracdap/rt/config/common.py +10 -0
  57. tracdap/rt/config/platform.py +9 -19
  58. tracdap/rt/config/runtime.py +2 -0
  59. tracdap/rt/ext/config.py +34 -0
  60. tracdap/rt/ext/embed.py +1 -3
  61. tracdap/rt/ext/plugins.py +47 -6
  62. tracdap/rt/launch/cli.py +7 -5
  63. tracdap/rt/launch/launch.py +49 -12
  64. tracdap/rt/metadata/__init__.py +24 -24
  65. tracdap/rt/metadata/common.py +7 -7
  66. tracdap/rt/metadata/custom.py +2 -0
  67. tracdap/rt/metadata/data.py +28 -5
  68. tracdap/rt/metadata/file.py +2 -0
  69. tracdap/rt/metadata/flow.py +66 -4
  70. tracdap/rt/metadata/job.py +56 -16
  71. tracdap/rt/metadata/model.py +10 -0
  72. tracdap/rt/metadata/object.py +3 -0
  73. tracdap/rt/metadata/object_id.py +9 -9
  74. tracdap/rt/metadata/search.py +35 -13
  75. tracdap/rt/metadata/stoarge.py +64 -6
  76. tracdap/rt/metadata/tag_update.py +21 -7
  77. tracdap/rt/metadata/type.py +28 -13
  78. {tracdap_runtime-0.6.1.dev3.dist-info → tracdap_runtime-0.6.3.dist-info}/METADATA +22 -19
  79. tracdap_runtime-0.6.3.dist-info/RECORD +112 -0
  80. {tracdap_runtime-0.6.1.dev3.dist-info → tracdap_runtime-0.6.3.dist-info}/WHEEL +1 -1
  81. tracdap/rt/config/common_pb2.py +0 -55
  82. tracdap/rt/config/job_pb2.py +0 -42
  83. tracdap/rt/config/platform_pb2.py +0 -71
  84. tracdap/rt/config/result_pb2.py +0 -37
  85. tracdap/rt/config/runtime_pb2.py +0 -42
  86. tracdap/rt/ext/_guard.py +0 -37
  87. tracdap/rt/metadata/common_pb2.py +0 -33
  88. tracdap/rt/metadata/data_pb2.py +0 -51
  89. tracdap/rt/metadata/file_pb2.py +0 -28
  90. tracdap/rt/metadata/flow_pb2.py +0 -55
  91. tracdap/rt/metadata/job_pb2.py +0 -76
  92. tracdap/rt/metadata/model_pb2.py +0 -51
  93. tracdap/rt/metadata/object_id_pb2.py +0 -32
  94. tracdap/rt/metadata/object_pb2.py +0 -35
  95. tracdap/rt/metadata/search_pb2.py +0 -39
  96. tracdap/rt/metadata/stoarge_pb2.py +0 -50
  97. tracdap/rt/metadata/tag_pb2.py +0 -34
  98. tracdap/rt/metadata/tag_update_pb2.py +0 -30
  99. tracdap/rt/metadata/type_pb2.py +0 -48
  100. tracdap_runtime-0.6.1.dev3.dist-info/RECORD +0 -96
  101. {tracdap_runtime-0.6.1.dev3.dist-info → tracdap_runtime-0.6.3.dist-info}/LICENSE +0 -0
  102. {tracdap_runtime-0.6.1.dev3.dist-info → tracdap_runtime-0.6.3.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from .custom import CustomDefinition
4
-
5
- from .common import MetadataFormat
6
- from .common import MetadataVersion
7
- from .common import TenantInfo
8
-
9
3
  from .type import BasicType
10
4
  from .type import TypeDescriptor
11
5
  from .type import DecimalValue
@@ -19,11 +13,6 @@ from .object_id import ObjectType
19
13
  from .object_id import TagHeader
20
14
  from .object_id import TagSelector
21
15
 
22
- from .file import FileDefinition
23
-
24
- from .tag_update import TagOperation
25
- from .tag_update import TagUpdate
26
-
27
16
  from .data import SchemaType
28
17
  from .data import PartType
29
18
  from .data import FieldSchema
@@ -32,11 +21,30 @@ from .data import SchemaDefinition
32
21
  from .data import PartKey
33
22
  from .data import DataDefinition
34
23
 
24
+ from .stoarge import CopyStatus
25
+ from .stoarge import IncarnationStatus
26
+ from .stoarge import StorageCopy
27
+ from .stoarge import StorageIncarnation
28
+ from .stoarge import StorageItem
29
+ from .stoarge import StorageDefinition
30
+
35
31
  from .model import ModelParameter
36
32
  from .model import ModelInputSchema
37
33
  from .model import ModelOutputSchema
38
34
  from .model import ModelDefinition
39
35
 
36
+ from .tag_update import TagOperation
37
+ from .tag_update import TagUpdate
38
+
39
+ from .job import JobType
40
+ from .job import JobStatusCode
41
+ from .job import JobDefinition
42
+ from .job import RunModelJob
43
+ from .job import RunFlowJob
44
+ from .job import ImportModelJob
45
+
46
+ from .file import FileDefinition
47
+
40
48
  from .search import SearchOperator
41
49
  from .search import LogicalOperator
42
50
  from .search import SearchTerm
@@ -50,20 +58,12 @@ from .flow import FlowSocket
50
58
  from .flow import FlowEdge
51
59
  from .flow import FlowDefinition
52
60
 
53
- from .stoarge import CopyStatus
54
- from .stoarge import IncarnationStatus
55
- from .stoarge import StorageCopy
56
- from .stoarge import StorageIncarnation
57
- from .stoarge import StorageItem
58
- from .stoarge import StorageDefinition
59
-
60
- from .job import JobType
61
- from .job import JobStatusCode
62
- from .job import JobDefinition
63
- from .job import RunModelJob
64
- from .job import RunFlowJob
65
- from .job import ImportModelJob
61
+ from .custom import CustomDefinition
66
62
 
67
63
  from .object import ObjectDefinition
68
64
 
69
65
  from .tag import Tag
66
+
67
+ from .common import MetadataFormat
68
+ from .common import MetadataVersion
69
+ from .common import TenantInfo
@@ -14,13 +14,13 @@ class MetadataFormat(_enum.Enum):
14
14
  metadata stored in the metadata database.
15
15
  """
16
16
 
17
- METADATA_FORMAT_NOT_SET = 0,
17
+ METADATA_FORMAT_NOT_SET = 0
18
18
 
19
- PROTO = 1,
19
+ PROTO = 1
20
20
 
21
- JSON = 2,
21
+ JSON = 2
22
22
 
23
- YAML = 3,
23
+ YAML = 3
24
24
 
25
25
 
26
26
  class MetadataVersion(_enum.Enum):
@@ -37,11 +37,11 @@ class MetadataVersion(_enum.Enum):
37
37
  or to run upgrades of metadata stored in an older metadata format.
38
38
  """
39
39
 
40
- METADATA_VERSION_NOT_SET = 0,
40
+ METADATA_VERSION_NOT_SET = 0
41
41
 
42
- V1 = 1,
42
+ V1 = 1
43
43
 
44
- CURRENT = 1,
44
+ CURRENT = 1
45
45
 
46
46
 
47
47
  @_dc.dataclass
@@ -9,6 +9,8 @@ import enum as _enum # noqa
9
9
  @_dc.dataclass
10
10
  class CustomDefinition:
11
11
 
12
+ """Define a custom object that can be stored and managed in the TRAC metadata store"""
13
+
12
14
  customSchemaType: str = None
13
15
 
14
16
  customSchemaVersion: int = None
@@ -20,23 +20,40 @@ class SchemaType(_enum.Enum):
20
20
  :class:`SchemaDefinition <SchemaDefinition>`
21
21
  """
22
22
 
23
- SCHEMA_TYPE_NOT_SET = 0,
23
+ SCHEMA_TYPE_NOT_SET = 0
24
24
 
25
- TABLE = 1,
25
+ TABLE = 1
26
+
27
+ """Tabular data"""
26
28
 
27
29
 
28
30
  class PartType(_enum.Enum):
29
31
 
30
- PART_ROOT = 0,
32
+ """Partitioning scheme applied to a dataset"""
33
+
34
+ PART_ROOT = 0
35
+
36
+ """Dataset has a single partition called the root partition (this is the default)"""
37
+
38
+ PART_BY_RANGE = 1
31
39
 
32
- PART_BY_RANGE = 1,
40
+ """Partition by range over an ordered variable (not available yet)"""
33
41
 
34
- PART_BY_VALUE = 2,
42
+ PART_BY_VALUE = 2
43
+
44
+ """Partition by value over a categorical variable (not available yet)"""
35
45
 
36
46
 
37
47
  @_dc.dataclass
38
48
  class FieldSchema:
39
49
 
50
+ """
51
+ Schema for an individual field in a tabular dataset
52
+
53
+ .. seealso::
54
+ :class:`TableSchema <TableSchema>`
55
+ """
56
+
40
57
  fieldName: str = None
41
58
 
42
59
  fieldOrder: int = None
@@ -59,6 +76,8 @@ class FieldSchema:
59
76
  @_dc.dataclass
60
77
  class TableSchema:
61
78
 
79
+ """Schema for a tabular dataset"""
80
+
62
81
  fields: _tp.List[FieldSchema] = _dc.field(default_factory=list)
63
82
 
64
83
 
@@ -89,6 +108,8 @@ class SchemaDefinition:
89
108
  @_dc.dataclass
90
109
  class PartKey:
91
110
 
111
+ """Partition key for tabular datasets"""
112
+
92
113
  opaqueKey: str = None
93
114
 
94
115
  partType: PartType = PartType.PART_ROOT
@@ -103,6 +124,8 @@ class PartKey:
103
124
  @_dc.dataclass
104
125
  class DataDefinition:
105
126
 
127
+ """Define a dataset that can be stored and managed in the TRAC platform"""
128
+
106
129
  @_dc.dataclass
107
130
  class Delta:
108
131
 
@@ -12,6 +12,8 @@ from .object_id import * # noqa
12
12
  @_dc.dataclass
13
13
  class FileDefinition:
14
14
 
15
+ """Describes a file object stored in the TRAC platform"""
16
+
15
17
  name: str = None
16
18
 
17
19
  extension: str = None
@@ -13,20 +13,48 @@ from .tag_update import * # noqa
13
13
 
14
14
  class FlowNodeType(_enum.Enum):
15
15
 
16
- NODE_TYPE_NOT_SET = 0,
16
+ """
17
+ Specify the type of an individual flow node
18
+
19
+ .. seealso::
20
+ :class:`FlowNode <FlowNode>`
21
+ """
17
22
 
18
- INPUT_NODE = 1,
23
+ NODE_TYPE_NOT_SET = 0
19
24
 
20
- OUTPUT_NODE = 2,
25
+ INPUT_NODE = 1
21
26
 
22
- MODEL_NODE = 3,
27
+ """Input nodes described inputs to the flow, such as a files or datasets"""
28
+
29
+ OUTPUT_NODE = 2
30
+
31
+ """Output nodes describe outputs the flow produces, such as a files or datasets"""
32
+
33
+ MODEL_NODE = 3
34
+
35
+ """Model nodes are placeholders for TRAC models that will be supplied at runtime"""
36
+
37
+ PARAMETER_NODE = 4
38
+
39
+ """Parameter nodes allow explicit mapping of parameters into models
40
+ (TRAC can infer parameters by name if they are not defined explicitly)
41
+ """
23
42
 
24
43
 
25
44
  @_dc.dataclass
26
45
  class FlowNode:
27
46
 
47
+ """
48
+ Describes an individual node in a flow
49
+
50
+ .. seealso::
51
+ :class:`FlowDefinition <FlowDefinition>`
52
+ """
53
+
28
54
  nodeType: FlowNodeType = FlowNodeType.NODE_TYPE_NOT_SET
29
55
 
56
+ parameters: _tp.List[str] = _dc.field(default_factory=list)
57
+
30
58
  inputs: _tp.List[str] = _dc.field(default_factory=list)
31
59
 
32
60
  outputs: _tp.List[str] = _dc.field(default_factory=list)
@@ -35,12 +63,28 @@ class FlowNode:
35
63
 
36
64
  nodeAttrs: _tp.List[TagUpdate] = _dc.field(default_factory=list)
37
65
 
66
+ nodeProps: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
67
+
38
68
  label: str = None
39
69
 
40
70
 
41
71
  @_dc.dataclass
42
72
  class FlowSocket:
43
73
 
74
+ """
75
+ A socket is a point of connection for wiring up the edges in a flow
76
+
77
+ For parameter, input and output nodes the socket is just the node name and the socket field will be blank.
78
+ For models, the node name refers to a model node and the socket is the name of the parameter, input or output
79
+ being connected. E.g. these two sockets could be used to connect a flow input to a model, using an edge::
80
+
81
+ flow_input_socket = { "node": "my_input_dataset", socket: "" }
82
+ model_input_socket = { "node": "my_model", "socket": "input_1" }.
83
+
84
+ .. seealso::
85
+ :class:`FlowEdge <FlowEdge>`
86
+ """
87
+
44
88
  node: str = None
45
89
 
46
90
  socket: str = None
@@ -49,6 +93,13 @@ class FlowSocket:
49
93
  @_dc.dataclass
50
94
  class FlowEdge:
51
95
 
96
+ """
97
+ A connection between two nodes in a flow
98
+
99
+ .. seealso::
100
+ :class:`FlowSocket <FlowSocket>`
101
+ """
102
+
52
103
  source: FlowSocket = None
53
104
 
54
105
  target: FlowSocket = None
@@ -57,6 +108,17 @@ class FlowEdge:
57
108
  @_dc.dataclass
58
109
  class FlowDefinition:
59
110
 
111
+ """
112
+ A flow defines an execution graph as a set of connections between models and data
113
+
114
+ A flow describes the shape of the execution graph, it does not fix in advance the set
115
+ of models and datasets that will go into it. When a RUN_FLOW job is created, the job
116
+ matches the flow with a set of models, inputs, outputs and parameters.
117
+
118
+ .. seealso::
119
+ :class:`JobDefinition <JobDefinition>`
120
+ """
121
+
60
122
  nodes: _tp.Dict[str, FlowNode] = _dc.field(default_factory=dict)
61
123
 
62
124
  edges: _tp.List[FlowEdge] = _dc.field(default_factory=list)
@@ -12,45 +12,79 @@ from .tag_update import * # noqa
12
12
 
13
13
  class JobType(_enum.Enum):
14
14
 
15
- JOB_TYPE_NOT_SET = 0,
15
+ """Specify the type of an individual TRAC job"""
16
16
 
17
- RUN_MODEL = 1,
17
+ JOB_TYPE_NOT_SET = 0
18
18
 
19
- RUN_FLOW = 2,
19
+ RUN_MODEL = 1
20
20
 
21
- IMPORT_MODEL = 3,
21
+ """Run a single model, with parameters and inputs"""
22
22
 
23
- IMPORT_DATA = 4,
23
+ RUN_FLOW = 2
24
+
25
+ """Run a flow with all its models, parameters and inputs"""
26
+
27
+ IMPORT_MODEL = 3
28
+
29
+ """Import a model into the platform"""
30
+
31
+ IMPORT_DATA = 4
32
+
33
+ """Import data into the platform"""
24
34
 
25
35
 
26
36
  class JobStatusCode(_enum.Enum):
27
37
 
28
- JOB_STATUS_CODE_NOT_SET = 0,
38
+ """Indicate the status of a job in the TRAC platform"""
39
+
40
+ JOB_STATUS_CODE_NOT_SET = 0
41
+
42
+ PREPARING = 1
43
+
44
+ """The job is being set up"""
45
+
46
+ VALIDATED = 2
47
+
48
+ """The job has passed validation and is ok to run (dry-run operations may return this status)"""
29
49
 
30
- PREPARING = 1,
50
+ PENDING = 3
31
51
 
32
- VALIDATED = 2,
52
+ """The job is being set up"""
33
53
 
34
- PENDING = 3,
54
+ QUEUED = 4
35
55
 
36
- QUEUED = 4,
56
+ """The job is queued in TRAC, waiting for available resources"""
37
57
 
38
- SUBMITTED = 5,
58
+ SUBMITTED = 5
39
59
 
40
- RUNNING = 6,
60
+ """The job has been submitted for execution but has not yet started"""
41
61
 
42
- FINISHING = 7,
62
+ RUNNING = 6
43
63
 
44
- SUCCEEDED = 8,
64
+ """The job is currently running"""
45
65
 
46
- FAILED = 9,
66
+ FINISHING = 7
47
67
 
48
- CANCELLED = 10,
68
+ """Job execution completed, the platform is cleaning up and validating the outputs"""
69
+
70
+ SUCCEEDED = 8
71
+
72
+ """The job completed successfully and the results are available"""
73
+
74
+ FAILED = 9
75
+
76
+ """The job failed and has been terminated or rejected"""
77
+
78
+ CANCELLED = 10
79
+
80
+ """The job was cancelled by a user of the platform"""
49
81
 
50
82
 
51
83
  @_dc.dataclass
52
84
  class JobDefinition:
53
85
 
86
+ """Define a job to run on the TRAC platform"""
87
+
54
88
  jobType: JobType = JobType.JOB_TYPE_NOT_SET
55
89
 
56
90
  runModel: _tp.Optional[RunModelJob] = None
@@ -63,6 +97,8 @@ class JobDefinition:
63
97
  @_dc.dataclass
64
98
  class RunModelJob:
65
99
 
100
+ """Specification for a RuN_MODEL job"""
101
+
66
102
  model: TagSelector = None
67
103
 
68
104
  parameters: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
@@ -79,6 +115,8 @@ class RunModelJob:
79
115
  @_dc.dataclass
80
116
  class RunFlowJob:
81
117
 
118
+ """Specification for a RUN_FLOW job"""
119
+
82
120
  flow: TagSelector = None
83
121
 
84
122
  parameters: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
@@ -97,6 +135,8 @@ class RunFlowJob:
97
135
  @_dc.dataclass
98
136
  class ImportModelJob:
99
137
 
138
+ """Specification for an IMPORT_MODEL job"""
139
+
100
140
  language: str = None
101
141
 
102
142
  repository: str = None
@@ -21,6 +21,8 @@ class ModelParameter:
21
21
 
22
22
  defaultValue: _tp.Optional[Value] = None
23
23
 
24
+ paramProps: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
25
+
24
26
 
25
27
  @_dc.dataclass
26
28
  class ModelInputSchema:
@@ -41,6 +43,10 @@ class ModelInputSchema:
41
43
 
42
44
  label: _tp.Optional[str] = None
43
45
 
46
+ optional: bool = None
47
+
48
+ inputProps: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
49
+
44
50
 
45
51
  @_dc.dataclass
46
52
  class ModelOutputSchema:
@@ -62,6 +68,10 @@ class ModelOutputSchema:
62
68
 
63
69
  label: _tp.Optional[str] = None
64
70
 
71
+ optional: bool = None
72
+
73
+ outputProps: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
74
+
65
75
 
66
76
  @_dc.dataclass
67
77
  class ModelDefinition:
@@ -6,6 +6,7 @@ import dataclasses as _dc # noqa
6
6
  import enum as _enum # noqa
7
7
 
8
8
  from .object_id import * # noqa
9
+ from .type import * # noqa
9
10
  from .data import * # noqa
10
11
  from .model import * # noqa
11
12
  from .flow import * # noqa
@@ -69,3 +70,5 @@ class ObjectDefinition:
69
70
  storage: _tp.Optional[StorageDefinition] = None
70
71
 
71
72
  schema: _tp.Optional[SchemaDefinition] = None
73
+
74
+ objectProps: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
@@ -17,23 +17,23 @@ class ObjectType(_enum.Enum):
17
17
  :class:`ObjectDefinition <ObjectDefinition>`
18
18
  """
19
19
 
20
- OBJECT_TYPE_NOT_SET = 0,
20
+ OBJECT_TYPE_NOT_SET = 0
21
21
 
22
- DATA = 1,
22
+ DATA = 1
23
23
 
24
- MODEL = 2,
24
+ MODEL = 2
25
25
 
26
- FLOW = 3,
26
+ FLOW = 3
27
27
 
28
- JOB = 4,
28
+ JOB = 4
29
29
 
30
- FILE = 5,
30
+ FILE = 5
31
31
 
32
- CUSTOM = 6,
32
+ CUSTOM = 6
33
33
 
34
- STORAGE = 7,
34
+ STORAGE = 7
35
35
 
36
- SCHEMA = 8,
36
+ SCHEMA = 8
37
37
 
38
38
 
39
39
  @_dc.dataclass
@@ -18,9 +18,11 @@ class SearchOperator(_enum.Enum):
18
18
  :class:`SearchTerm <SearchTerm>`
19
19
  """
20
20
 
21
- SEARCH_OPERATOR_NOT_SET = 0,
21
+ SEARCH_OPERATOR_NOT_SET = 0
22
22
 
23
- EQ = 1, """EQUALS
23
+ EQ = 1
24
+
25
+ """EQUALS
24
26
 
25
27
  The EQ operator matches a tag when the tag has an attribute that matches the
26
28
  search term exactly, i.e. attribute name, type and value all match. For
@@ -32,7 +34,9 @@ class SearchOperator(_enum.Enum):
32
34
  for this reason it is not recommended to use the EQ operator with FLOAT values.
33
35
  """
34
36
 
35
- NE = 2, """DOES NOT EQUAL
37
+ NE = 2
38
+
39
+ """DOES NOT EQUAL
36
40
 
37
41
  The NE operator matches a tag precisely when the EQ operator does not match it.
38
42
  This could be because the tag attribute does not match the search term, or because
@@ -48,7 +52,9 @@ class SearchOperator(_enum.Enum):
48
52
  for this reason it is not recommended to use the NE operator with FLOAT values.
49
53
  """
50
54
 
51
- LT = 3, """LESS THAN
55
+ LT = 3
56
+
57
+ """LESS THAN
52
58
 
53
59
  The LT operator matches a tag when the tag has an attribute with a value less than
54
60
  the search parameter. The LT operator will only match single-valued attributes.
@@ -58,7 +64,9 @@ class SearchOperator(_enum.Enum):
58
64
  even if one or more of the individual values matches the search term.
59
65
  """
60
66
 
61
- LE = 4, """LESS THAN OR EQUAL TO
67
+ LE = 4
68
+
69
+ """LESS THAN OR EQUAL TO
62
70
 
63
71
  The LE operator matches a tag when the tag has an attribute with a value less than
64
72
  or equal to the search parameter. The LE operator will only match single-valued
@@ -69,7 +77,9 @@ class SearchOperator(_enum.Enum):
69
77
  even if one or more of the individual values matches the search term.
70
78
  """
71
79
 
72
- GT = 5, """GREATER THAN
80
+ GT = 5
81
+
82
+ """GREATER THAN
73
83
 
74
84
  The GT operator matches a tag when the tag has an attribute with a value greater than
75
85
  the search parameter. The GT operator will only match single-valued attributes.
@@ -79,7 +89,9 @@ class SearchOperator(_enum.Enum):
79
89
  even if one or more of the individual values matches the search term.
80
90
  """
81
91
 
82
- GE = 6, """GREATER THAN OR EQUAL TO
92
+ GE = 6
93
+
94
+ """GREATER THAN OR EQUAL TO
83
95
 
84
96
  The GE operator matches a tag when the tag has an attribute with a value greater than
85
97
  or equal to the search parameter. The GE operator will only match single-valued
@@ -90,7 +102,9 @@ class SearchOperator(_enum.Enum):
90
102
  even if one or more of the individual values matches the search term.
91
103
  """
92
104
 
93
- IN = 7, """IN
105
+ IN = 7
106
+
107
+ """IN
94
108
 
95
109
  The IN operator matches a tag when the tag has an attribute whose value is matched
96
110
  exactly by an item in the list of values provided. For multi-valued attributes, the
@@ -103,7 +117,9 @@ class SearchOperator(_enum.Enum):
103
117
  for this reason it is not recommended to use the IN operator with FLOAT values.
104
118
  """
105
119
 
106
- EXISTS = 8, """EXISTS
120
+ EXISTS = 8
121
+
122
+ """EXISTS
107
123
 
108
124
  If an attribute type is provided the EXISTS operator matches a tag of specified
109
125
  name when the tag has an attribute whose type is matched with type provided attribute
@@ -121,23 +137,29 @@ class LogicalOperator(_enum.Enum):
121
137
  :class:`LogicalExpression <LogicalExpression>`
122
138
  """
123
139
 
124
- LOGICAL_OPERATOR_NOT_SET = 0,
140
+ LOGICAL_OPERATOR_NOT_SET = 0
141
+
142
+ AND = 1
125
143
 
126
- AND = 1, """LOGICAL AND
144
+ """LOGICAL AND
127
145
 
128
146
  The AND operator combines two or more search expressions, the logical expression
129
147
  will match only when all sub-expressions match. The order of sub-expressions is
130
148
  not important.
131
149
  """
132
150
 
133
- OR = 2, """LOGICAL OR
151
+ OR = 2
152
+
153
+ """LOGICAL OR
134
154
 
135
155
  The OR operator combines two or more search expressions, the logical expression
136
156
  will match when any of the sub-expressions match. The order of sub-expressions
137
157
  is not important.
138
158
  """
139
159
 
140
- NOT = 3, """LOGICAL NOT
160
+ NOT = 3
161
+
162
+ """LOGICAL NOT
141
163
 
142
164
  The NOT operator applies to a single sub-expression, the logical expression will
143
165
  match precisely when the sub-expression does not match.