tracdap-runtime 0.6.5__py3-none-any.whl → 0.7.0__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 (89) hide show
  1. tracdap/rt/__init__.py +6 -5
  2. tracdap/rt/_exec/actors.py +6 -5
  3. tracdap/rt/_exec/context.py +278 -110
  4. tracdap/rt/_exec/dev_mode.py +237 -143
  5. tracdap/rt/_exec/engine.py +223 -64
  6. tracdap/rt/_exec/functions.py +31 -6
  7. tracdap/rt/_exec/graph.py +15 -5
  8. tracdap/rt/_exec/graph_builder.py +301 -203
  9. tracdap/rt/_exec/runtime.py +13 -10
  10. tracdap/rt/_exec/server.py +6 -5
  11. tracdap/rt/_impl/__init__.py +6 -5
  12. tracdap/rt/_impl/config_parser.py +17 -9
  13. tracdap/rt/_impl/data.py +284 -172
  14. tracdap/rt/_impl/ext/__init__.py +14 -0
  15. tracdap/rt/_impl/ext/sql.py +117 -0
  16. tracdap/rt/_impl/ext/storage.py +58 -0
  17. tracdap/rt/_impl/grpc/__init__.py +6 -5
  18. tracdap/rt/_impl/grpc/codec.py +6 -5
  19. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +62 -54
  20. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +37 -2
  21. tracdap/rt/_impl/guard_rails.py +6 -5
  22. tracdap/rt/_impl/models.py +6 -5
  23. tracdap/rt/_impl/repos.py +6 -5
  24. tracdap/rt/_impl/schemas.py +6 -5
  25. tracdap/rt/_impl/shim.py +6 -5
  26. tracdap/rt/_impl/static_api.py +30 -16
  27. tracdap/rt/_impl/storage.py +8 -7
  28. tracdap/rt/_impl/type_system.py +6 -5
  29. tracdap/rt/_impl/util.py +16 -5
  30. tracdap/rt/_impl/validation.py +72 -18
  31. tracdap/rt/_plugins/__init__.py +6 -5
  32. tracdap/rt/_plugins/_helpers.py +6 -5
  33. tracdap/rt/_plugins/config_local.py +6 -5
  34. tracdap/rt/_plugins/format_arrow.py +6 -5
  35. tracdap/rt/_plugins/format_csv.py +6 -5
  36. tracdap/rt/_plugins/format_parquet.py +6 -5
  37. tracdap/rt/_plugins/repo_git.py +6 -5
  38. tracdap/rt/_plugins/repo_local.py +6 -5
  39. tracdap/rt/_plugins/repo_pypi.py +6 -5
  40. tracdap/rt/_plugins/storage_aws.py +6 -5
  41. tracdap/rt/_plugins/storage_azure.py +6 -5
  42. tracdap/rt/_plugins/storage_gcp.py +6 -5
  43. tracdap/rt/_plugins/storage_local.py +6 -5
  44. tracdap/rt/_plugins/storage_sql.py +418 -0
  45. tracdap/rt/_plugins/storage_sql_dialects.py +118 -0
  46. tracdap/rt/_version.py +7 -6
  47. tracdap/rt/api/__init__.py +23 -5
  48. tracdap/rt/api/experimental.py +85 -37
  49. tracdap/rt/api/hook.py +16 -5
  50. tracdap/rt/api/model_api.py +110 -90
  51. tracdap/rt/api/static_api.py +142 -100
  52. tracdap/rt/config/common.py +26 -27
  53. tracdap/rt/config/job.py +5 -6
  54. tracdap/rt/config/platform.py +41 -42
  55. tracdap/rt/config/result.py +5 -6
  56. tracdap/rt/config/runtime.py +6 -7
  57. tracdap/rt/exceptions.py +13 -7
  58. tracdap/rt/ext/__init__.py +6 -5
  59. tracdap/rt/ext/config.py +6 -5
  60. tracdap/rt/ext/embed.py +6 -5
  61. tracdap/rt/ext/plugins.py +6 -5
  62. tracdap/rt/ext/repos.py +6 -5
  63. tracdap/rt/ext/storage.py +6 -5
  64. tracdap/rt/launch/__init__.py +10 -5
  65. tracdap/rt/launch/__main__.py +6 -5
  66. tracdap/rt/launch/cli.py +6 -5
  67. tracdap/rt/launch/launch.py +38 -15
  68. tracdap/rt/metadata/__init__.py +4 -0
  69. tracdap/rt/metadata/common.py +2 -3
  70. tracdap/rt/metadata/custom.py +3 -4
  71. tracdap/rt/metadata/data.py +30 -31
  72. tracdap/rt/metadata/file.py +6 -7
  73. tracdap/rt/metadata/flow.py +22 -23
  74. tracdap/rt/metadata/job.py +89 -45
  75. tracdap/rt/metadata/model.py +26 -27
  76. tracdap/rt/metadata/object.py +11 -12
  77. tracdap/rt/metadata/object_id.py +23 -24
  78. tracdap/rt/metadata/resource.py +0 -1
  79. tracdap/rt/metadata/search.py +15 -16
  80. tracdap/rt/metadata/stoarge.py +22 -23
  81. tracdap/rt/metadata/tag.py +8 -9
  82. tracdap/rt/metadata/tag_update.py +11 -12
  83. tracdap/rt/metadata/type.py +38 -38
  84. {tracdap_runtime-0.6.5.dist-info → tracdap_runtime-0.7.0.dist-info}/LICENSE +1 -1
  85. {tracdap_runtime-0.6.5.dist-info → tracdap_runtime-0.7.0.dist-info}/METADATA +4 -2
  86. tracdap_runtime-0.7.0.dist-info/RECORD +121 -0
  87. {tracdap_runtime-0.6.5.dist-info → tracdap_runtime-0.7.0.dist-info}/WHEEL +1 -1
  88. tracdap_runtime-0.6.5.dist-info/RECORD +0 -116
  89. {tracdap_runtime-0.6.5.dist-info → tracdap_runtime-0.7.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -14,7 +13,7 @@ class ObjectType(_enum.Enum):
14
13
  Enumeration of TRAC's core object types.
15
14
 
16
15
  .. seealso::
17
- :class:`ObjectDefinition <ObjectDefinition>`
16
+ :py:obj:`ObjectDefinition <ObjectDefinition>`
18
17
  """
19
18
 
20
19
  OBJECT_TYPE_NOT_SET = 0
@@ -43,20 +42,20 @@ class TagHeader:
43
42
  A tag header describes the identity and version of an object.
44
43
 
45
44
  .. seealso::
46
- :class:`Tag <Tag>`,
47
- :class:`ObjectDefinition <ObjectDefinition>`
45
+ :py:obj:`Tag <Tag>`,
46
+ :py:obj:`ObjectDefinition <ObjectDefinition>`
48
47
  """
49
48
 
50
- objectType: ObjectType = ObjectType.OBJECT_TYPE_NOT_SET
49
+ objectType: "ObjectType" = ObjectType.OBJECT_TYPE_NOT_SET
51
50
 
52
51
  """
53
52
  Object type of the object this tag is associated with.
54
53
 
55
54
  .. seealso::
56
- :class:`ObjectType <ObjectType>`
55
+ :py:obj:`ObjectType <ObjectType>`
57
56
  """
58
57
 
59
- objectId: str = ""
58
+ objectId: "str" = ""
60
59
 
61
60
  """
62
61
  Object ID of the object this tag is associated with.
@@ -64,27 +63,27 @@ class TagHeader:
64
63
  Object IDs are UUIDs (RFC4122, https://www.ietf.org/rfc/rfc4122.txt)
65
64
  """
66
65
 
67
- objectVersion: int = 0
66
+ objectVersion: "int" = 0
68
67
 
69
68
  """Version of the object this tag is associated with."""
70
69
 
71
- objectTimestamp: DatetimeValue = _dc.field(default_factory=lambda: DatetimeValue())
70
+ objectTimestamp: "DatetimeValue" = _dc.field(default_factory=lambda: DatetimeValue())
72
71
 
73
72
  """Timestamp for when this version of the object was created."""
74
73
 
75
- tagVersion: int = 0
74
+ tagVersion: "int" = 0
76
75
 
77
76
  """Version of this tag."""
78
77
 
79
- tagTimestamp: DatetimeValue = _dc.field(default_factory=lambda: DatetimeValue())
78
+ tagTimestamp: "DatetimeValue" = _dc.field(default_factory=lambda: DatetimeValue())
80
79
 
81
80
  """Timestamp for when this version of the tag was created."""
82
81
 
83
- isLatestObject: bool = False
82
+ isLatestObject: "bool" = False
84
83
 
85
84
  """isLatest flag for the object the tag is associated with."""
86
85
 
87
- isLatestTag: bool = False
86
+ isLatestTag: "bool" = False
88
87
 
89
88
  """isLatest flag for the tag."""
90
89
 
@@ -119,20 +118,20 @@ class TagSelector:
119
118
  e.g. latestObject = true with tagVersion = 1 is allowed.
120
119
 
121
120
  .. seealso::
122
- :class:`Tag <Tag>`,
123
- :class:`TagHeader <TagHeader>`
121
+ :py:obj:`Tag <Tag>`,
122
+ :py:obj:`TagHeader <TagHeader>`
124
123
  """
125
124
 
126
- objectType: ObjectType = ObjectType.OBJECT_TYPE_NOT_SET
125
+ objectType: "ObjectType" = ObjectType.OBJECT_TYPE_NOT_SET
127
126
 
128
127
  """
129
128
  Object type of the tag being selected.
130
129
 
131
130
  .. seealso::
132
- :class:`ObjectType <ObjectType>`
131
+ :py:obj:`ObjectType <ObjectType>`
133
132
  """
134
133
 
135
- objectId: str = ""
134
+ objectId: "str" = ""
136
135
 
137
136
  """
138
137
  Object ID of the tag being selected.
@@ -140,7 +139,7 @@ class TagSelector:
140
139
  Object IDs are UUIDs (RFC4122, https://www.ietf.org/rfc/rfc4122.txt)
141
140
  """
142
141
 
143
- latestObject: _tp.Optional[bool] = None
142
+ latestObject: "_tp.Optional[bool]" = None
144
143
 
145
144
  """
146
145
  Select the latest version of the object (the version that is live now).
@@ -148,18 +147,18 @@ class TagSelector:
148
147
  If this flag is specified, it must be set to true.
149
148
  """
150
149
 
151
- objectVersion: _tp.Optional[int] = None
150
+ objectVersion: "_tp.Optional[int]" = None
152
151
 
153
152
  """Select an explicit version of the object."""
154
153
 
155
- objectAsOf: _tp.Optional[DatetimeValue] = None
154
+ objectAsOf: "_tp.Optional[DatetimeValue]" = None
156
155
 
157
156
  """
158
157
  Select the version of the object that was live as of a particular point
159
158
  in time. Represented using ISO 8601.
160
159
  """
161
160
 
162
- latestTag: _tp.Optional[bool] = None
161
+ latestTag: "_tp.Optional[bool]" = None
163
162
 
164
163
  """
165
164
  Select the latest version of the tag (the version that is live now).
@@ -167,11 +166,11 @@ class TagSelector:
167
166
  If this flag is specified, it must be set to true.
168
167
  """
169
168
 
170
- tagVersion: _tp.Optional[int] = None
169
+ tagVersion: "_tp.Optional[int]" = None
171
170
 
172
171
  """Select an explicit version of the tag."""
173
172
 
174
- tagAsOf: _tp.Optional[DatetimeValue] = None
173
+ tagAsOf: "_tp.Optional[DatetimeValue]" = None
175
174
 
176
175
  """
177
176
  Select the version of the tag that was live as of a particular point
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -15,7 +14,7 @@ class SearchOperator(_enum.Enum):
15
14
  Metadata search term operator, used as part of a SearchTerm
16
15
 
17
16
  .. seealso::
18
- :class:`SearchTerm <SearchTerm>`
17
+ :py:obj:`SearchTerm <SearchTerm>`
19
18
  """
20
19
 
21
20
  SEARCH_OPERATOR_NOT_SET = 0
@@ -134,7 +133,7 @@ class LogicalOperator(_enum.Enum):
134
133
  Metadata search logical operator, used as part of a LogicalExpression.
135
134
 
136
135
  .. seealso::
137
- :class:`LogicalExpression <LogicalExpression>`
136
+ :py:obj:`LogicalExpression <LogicalExpression>`
138
137
  """
139
138
 
140
139
  LOGICAL_OPERATOR_NOT_SET = 0
@@ -175,19 +174,19 @@ class SearchTerm:
175
174
  Applies a search operator against an individual tag attribute.
176
175
  """
177
176
 
178
- attrName: str = ""
177
+ attrName: "str" = ""
179
178
 
180
179
  """The name of the attribute to search for"""
181
180
 
182
- attrType: BasicType = BasicType.BASIC_TYPE_NOT_SET
181
+ attrType: "BasicType" = BasicType.BASIC_TYPE_NOT_SET
183
182
 
184
183
  """The primitive type of the attribute being searched for"""
185
184
 
186
- operator: SearchOperator = SearchOperator.SEARCH_OPERATOR_NOT_SET
185
+ operator: "SearchOperator" = SearchOperator.SEARCH_OPERATOR_NOT_SET
187
186
 
188
187
  """The search operator to apply"""
189
188
 
190
- searchValue: Value = _dc.field(default_factory=lambda: Value())
189
+ searchValue: "Value" = _dc.field(default_factory=lambda: Value())
191
190
 
192
191
  """The search value to look for"""
193
192
 
@@ -201,11 +200,11 @@ class LogicalExpression:
201
200
  Applies a logical operator to one or more sub-expressions.
202
201
  """
203
202
 
204
- operator: LogicalOperator = LogicalOperator.LOGICAL_OPERATOR_NOT_SET
203
+ operator: "LogicalOperator" = LogicalOperator.LOGICAL_OPERATOR_NOT_SET
205
204
 
206
205
  """The logical operator to apply to sub-expressions"""
207
206
 
208
- expr: _tp.List[SearchExpression] = _dc.field(default_factory=list)
207
+ expr: "_tp.List[SearchExpression]" = _dc.field(default_factory=list)
209
208
 
210
209
  """
211
210
  A set of sub-expressions.
@@ -226,11 +225,11 @@ class SearchExpression:
226
225
  conditions.
227
226
  """
228
227
 
229
- term: _tp.Optional[SearchTerm] = None
228
+ term: "_tp.Optional[SearchTerm]" = None
230
229
 
231
230
  """Set if this search expression is a single term"""
232
231
 
233
- logical: _tp.Optional[LogicalExpression] = None
232
+ logical: "_tp.Optional[LogicalExpression]" = None
234
233
 
235
234
  """Set if this search expression is a logical expression"""
236
235
 
@@ -240,11 +239,11 @@ class SearchParameters:
240
239
 
241
240
  """Parameters to define a metadata search."""
242
241
 
243
- objectType: ObjectType = ObjectType.OBJECT_TYPE_NOT_SET
242
+ objectType: "ObjectType" = ObjectType.OBJECT_TYPE_NOT_SET
244
243
 
245
244
  """The type of object to search for"""
246
245
 
247
- search: SearchExpression = _dc.field(default_factory=lambda: SearchExpression())
246
+ search: "SearchExpression" = _dc.field(default_factory=lambda: SearchExpression())
248
247
 
249
248
  """
250
249
  A search expression based on tag attributes.
@@ -252,7 +251,7 @@ class SearchParameters:
252
251
  This field is optional. If no search parameters are given, then all objects are returned.
253
252
  """
254
253
 
255
- searchAsOf: _tp.Optional[DatetimeValue] = None
254
+ searchAsOf: "_tp.Optional[DatetimeValue]" = None
256
255
 
257
256
  """
258
257
  Perform the search as of a specific date/time.
@@ -268,7 +267,7 @@ class SearchParameters:
268
267
  current time.
269
268
  """
270
269
 
271
- priorVersions: bool = False
270
+ priorVersions: "bool" = False
272
271
 
273
272
  """
274
273
  Include prior versions of objects in the search.
@@ -287,7 +286,7 @@ class SearchParameters:
287
286
  latest tag is considered for each object.
288
287
  """
289
288
 
290
- priorTags: bool = False
289
+ priorTags: "bool" = False
291
290
 
292
291
  """
293
292
  Include prior tags in the search.
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -14,8 +13,8 @@ class CopyStatus(_enum.Enum):
14
13
  Status of an individual copy of a data storage item
15
14
 
16
15
  .. seealso::
17
- :class:`StorageDefinition <StorageDefinition>`,
18
- :class:`StorageCopy <StorageCopy>`
16
+ :py:obj:`StorageDefinition <StorageDefinition>`,
17
+ :py:obj:`StorageCopy <StorageCopy>`
19
18
  """
20
19
 
21
20
  COPY_STATUS_NOT_SET = 0
@@ -35,8 +34,8 @@ class IncarnationStatus(_enum.Enum):
35
34
  Status of an individual incarnation of a data storage item
36
35
 
37
36
  .. seealso::
38
- :class:`StorageDefinition <StorageDefinition>`,
39
- :class:`StorageIncarnation <StorageIncarnation>`
37
+ :py:obj:`StorageDefinition <StorageDefinition>`,
38
+ :py:obj:`StorageIncarnation <StorageIncarnation>`
40
39
  """
41
40
 
42
41
  INCARNATION_STATUS_NOT_SET = 0
@@ -57,20 +56,20 @@ class StorageCopy:
57
56
  Define physical storage for an individual copy of a data item
58
57
 
59
58
  .. seealso::
60
- :class:`StorageDefinition <StorageDefinition>`
59
+ :py:obj:`StorageDefinition <StorageDefinition>`
61
60
  """
62
61
 
63
- storageKey: str = ""
62
+ storageKey: "str" = ""
64
63
 
65
- storagePath: str = ""
64
+ storagePath: "str" = ""
66
65
 
67
- storageFormat: str = ""
66
+ storageFormat: "str" = ""
68
67
 
69
- copyStatus: CopyStatus = CopyStatus.COPY_STATUS_NOT_SET
68
+ copyStatus: "CopyStatus" = CopyStatus.COPY_STATUS_NOT_SET
70
69
 
71
- copyTimestamp: DatetimeValue = _dc.field(default_factory=lambda: DatetimeValue())
70
+ copyTimestamp: "DatetimeValue" = _dc.field(default_factory=lambda: DatetimeValue())
72
71
 
73
- storageOptions: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
72
+ storageOptions: "_tp.Dict[str, Value]" = _dc.field(default_factory=dict)
74
73
 
75
74
 
76
75
  @_dc.dataclass
@@ -80,16 +79,16 @@ class StorageIncarnation:
80
79
  Define physical storage for an individual incarnation of a data item
81
80
 
82
81
  .. seealso::
83
- :class:`StorageDefinition <StorageDefinition>`
82
+ :py:obj:`StorageDefinition <StorageDefinition>`
84
83
  """
85
84
 
86
- copies: _tp.List[StorageCopy] = _dc.field(default_factory=list)
85
+ copies: "_tp.List[StorageCopy]" = _dc.field(default_factory=list)
87
86
 
88
- incarnationIndex: int = 0
87
+ incarnationIndex: "int" = 0
89
88
 
90
- incarnationTimestamp: DatetimeValue = _dc.field(default_factory=lambda: DatetimeValue())
89
+ incarnationTimestamp: "DatetimeValue" = _dc.field(default_factory=lambda: DatetimeValue())
91
90
 
92
- incarnationStatus: IncarnationStatus = IncarnationStatus.INCARNATION_STATUS_NOT_SET
91
+ incarnationStatus: "IncarnationStatus" = IncarnationStatus.INCARNATION_STATUS_NOT_SET
93
92
 
94
93
 
95
94
  @_dc.dataclass
@@ -99,10 +98,10 @@ class StorageItem:
99
98
  Define physical storage for an individual data item
100
99
 
101
100
  .. seealso::
102
- :class:`StorageDefinition <StorageDefinition>`
101
+ :py:obj:`StorageDefinition <StorageDefinition>`
103
102
  """
104
103
 
105
- incarnations: _tp.List[StorageIncarnation] = _dc.field(default_factory=list)
104
+ incarnations: "_tp.List[StorageIncarnation]" = _dc.field(default_factory=list)
106
105
 
107
106
 
108
107
  @_dc.dataclass
@@ -117,10 +116,10 @@ class StorageDefinition:
117
116
  (physical file-level copies for resilience, locality etc).
118
117
 
119
118
  .. seealso::
120
- :class:`DataDefinition <DataDefinition>`,
121
- :class:`FileDefinition <FileDefinition>`
119
+ :py:obj:`DataDefinition <DataDefinition>`,
120
+ :py:obj:`FileDefinition <FileDefinition>`
122
121
  """
123
122
 
124
- dataItems: _tp.Dict[str, StorageItem] = _dc.field(default_factory=dict)
123
+ dataItems: "_tp.Dict[str, StorageItem]" = _dc.field(default_factory=dict)
125
124
 
126
- storageOptions: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
125
+ storageOptions: "_tp.Dict[str, Value]" = _dc.field(default_factory=dict)
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -74,21 +73,21 @@ class Tag:
74
73
  or an earlier version that has the sign-off attribute set.
75
74
 
76
75
  .. seealso::
77
- :class:`TagHeader <TagHeader>`,
78
- :class:`ObjectDefinition <ObjectDefinition>`
76
+ :py:obj:`TagHeader <TagHeader>`,
77
+ :py:obj:`ObjectDefinition <ObjectDefinition>`
79
78
  """
80
79
 
81
- header: TagHeader = _dc.field(default_factory=lambda: TagHeader())
80
+ header: "TagHeader" = _dc.field(default_factory=lambda: TagHeader())
82
81
 
83
82
  """
84
83
  The tag header uniquely identifies the current tag and the object it is
85
84
  associated with.
86
85
 
87
86
  .. seealso::
88
- :class:`TagHeader <TagHeader>`
87
+ :py:obj:`TagHeader <TagHeader>`
89
88
  """
90
89
 
91
- attrs: _tp.Dict[str, Value] = _dc.field(default_factory=dict)
90
+ attrs: "_tp.Dict[str, Value]" = _dc.field(default_factory=dict)
92
91
 
93
92
  """
94
93
  Tag attributes are key-value pairs where the value is a metadata Value.
@@ -110,10 +109,10 @@ class Tag:
110
109
  SearchParameters for more details.
111
110
 
112
111
  .. seealso::
113
- :class:`SearchParameters <SearchParameters>`
112
+ :py:obj:`SearchParameters <SearchParameters>`
114
113
  """
115
114
 
116
- definition: _tp.Optional[ObjectDefinition] = None
115
+ definition: "_tp.Optional[ObjectDefinition]" = None
117
116
 
118
117
  """
119
118
  The object definition that the tag is associated with.
@@ -122,5 +121,5 @@ class Tag:
122
121
  metadata search include only headers and attributes.
123
122
 
124
123
  .. seealso::
125
- :class:`ObjectDefinition <ObjectDefinition>`
124
+ :py:obj:`ObjectDefinition <ObjectDefinition>`
126
125
  """
@@ -1,6 +1,5 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from __future__ import annotations
4
3
  import typing as _tp # noqa
5
4
  import dataclasses as _dc # noqa
6
5
  import enum as _enum # noqa
@@ -14,7 +13,7 @@ class TagOperation(_enum.Enum):
14
13
  Enumeration of available TagUpdate operations.
15
14
 
16
15
  .. seealso::
17
- :class:`TagUpdate <TagUpdate>`
16
+ :py:obj:`TagUpdate <TagUpdate>`
18
17
  """
19
18
 
20
19
  CREATE_OR_REPLACE_ATTR = 0
@@ -26,8 +25,8 @@ class TagOperation(_enum.Enum):
26
25
  it will replaced using REPLACE_ATTR.
27
26
 
28
27
  .. seealso::
29
- :class:`CREATE_ATTR <TagOperation.CREATE_ATTR>`,
30
- :class:`REPLACE_ATTR <TagOperation.REPLACE_ATTR>`
28
+ :py:attr:`TagOperation.CREATE_ATTR <TagOperation.CREATE_ATTR>`,
29
+ :py:attr:`TagOperation.REPLACE_ATTR <TagOperation.REPLACE_ATTR>`
31
30
  """
32
31
 
33
32
  CREATE_OR_APPEND_ATTR = 1
@@ -38,8 +37,8 @@ class TagOperation(_enum.Enum):
38
37
  otherwise it will appended to using APPEND_ATTR.
39
38
 
40
39
  .. seealso::
41
- :class:`CREATE_ATTR <TagOperation.CREATE_ATTR>`,
42
- :class:`APPEND_ATTR <TagOperation.APPEND_ATTR>`
40
+ :py:attr:`TagOperation.CREATE_ATTR <TagOperation.CREATE_ATTR>`,
41
+ :py:attr:`TagOperation.APPEND_ATTR <TagOperation.APPEND_ATTR>`
43
42
  """
44
43
 
45
44
  CREATE_ATTR = 2
@@ -97,19 +96,19 @@ class TagUpdate:
97
96
  particular action.
98
97
 
99
98
  .. seealso::
100
- :class:`MetadataWriteRequest <MetadataWriteRequest>`
99
+ :py:obj:`MetadataWriteRequest <MetadataWriteRequest>`
101
100
  """
102
101
 
103
- operation: TagOperation = TagOperation.CREATE_OR_REPLACE_ATTR
102
+ operation: "TagOperation" = TagOperation.CREATE_OR_REPLACE_ATTR
104
103
 
105
104
  """
106
105
  The operation requested in this update
107
106
 
108
107
  .. seealso::
109
- :class:`TagOperation <TagOperation>`
108
+ :py:obj:`TagOperation <TagOperation>`
110
109
  """
111
110
 
112
- attrName: str = ""
111
+ attrName: "str" = ""
113
112
 
114
113
  """
115
114
  Name of the attribute this update refers to.
@@ -118,7 +117,7 @@ class TagUpdate:
118
117
  attribute, otherwise it should be left blank.
119
118
  """
120
119
 
121
- value: _tp.Optional[Value] = None
120
+ value: "_tp.Optional[Value]" = None
122
121
 
123
122
  """
124
123
  Attribute value to use for this update.
@@ -127,5 +126,5 @@ class TagUpdate:
127
126
  should be omitted.
128
127
 
129
128
  .. seealso::
130
- :class:`Value <metadata.Value>`
129
+ :py:obj:`Value <metadata.Value>`
131
130
  """