nominal-api 0.601.0__tar.gz → 0.603.0__tar.gz

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.

Potentially problematic release.


This version of nominal-api might be problematic. Click here for more details.

Files changed (82) hide show
  1. {nominal_api-0.601.0 → nominal_api-0.603.0}/PKG-INFO +1 -1
  2. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/__init__.py +1 -1
  3. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/_impl.py +228 -27
  4. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/persistent_compute_api/__init__.py +2 -0
  5. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_jobs_api/__init__.py +1 -0
  6. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api.egg-info/PKG-INFO +1 -1
  7. {nominal_api-0.601.0 → nominal_api-0.603.0}/setup.py +1 -1
  8. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/api/__init__.py +0 -0
  9. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/api_ids/__init__.py +0 -0
  10. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/api_rids/__init__.py +0 -0
  11. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/attachments_api/__init__.py +0 -0
  12. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/authentication_api/__init__.py +0 -0
  13. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/authorization/__init__.py +0 -0
  14. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/comments_api/__init__.py +0 -0
  15. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/connect_download/__init__.py +0 -0
  16. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/datasource/__init__.py +0 -0
  17. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/datasource_api/__init__.py +0 -0
  18. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/datasource_logset/__init__.py +0 -0
  19. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/datasource_logset_api/__init__.py +0 -0
  20. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/datasource_pagination_api/__init__.py +0 -0
  21. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/event/__init__.py +0 -0
  22. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/ingest_api/__init__.py +0 -0
  23. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/py.typed +0 -0
  24. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout/__init__.py +0 -0
  25. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_api/__init__.py +0 -0
  26. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_asset_api/__init__.py +0 -0
  27. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_assets/__init__.py +0 -0
  28. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_catalog/__init__.py +0 -0
  29. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_channelvariables_api/__init__.py +0 -0
  30. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_chart_api/__init__.py +0 -0
  31. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_chartdefinition_api/__init__.py +0 -0
  32. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_checklistexecution_api/__init__.py +0 -0
  33. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_checks_api/__init__.py +0 -0
  34. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_comparisonnotebook_api/__init__.py +0 -0
  35. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_comparisonrun_api/__init__.py +0 -0
  36. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_compute_api/__init__.py +0 -0
  37. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_compute_api_deprecated/__init__.py +0 -0
  38. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_compute_representation_api/__init__.py +0 -0
  39. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_compute_resolved_api/__init__.py +0 -0
  40. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_dataexport_api/__init__.py +0 -0
  41. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_datareview_api/__init__.py +0 -0
  42. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_datasource/__init__.py +0 -0
  43. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_datasource_connection/__init__.py +0 -0
  44. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_datasource_connection_api/__init__.py +0 -0
  45. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_datasource_connection_api_influx/__init__.py +0 -0
  46. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_favorites/__init__.py +0 -0
  47. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_favorites_api/__init__.py +0 -0
  48. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_integrations_api/__init__.py +0 -0
  49. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_internal_search_api/__init__.py +0 -0
  50. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_layout_api/__init__.py +0 -0
  51. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_metadata/__init__.py +0 -0
  52. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_notebook_api/__init__.py +0 -0
  53. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_plotting/__init__.py +0 -0
  54. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_rids_api/__init__.py +0 -0
  55. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_run_api/__init__.py +0 -0
  56. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_template_api/__init__.py +0 -0
  57. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_units_api/__init__.py +0 -0
  58. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_versioning_api/__init__.py +0 -0
  59. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_video/__init__.py +0 -0
  60. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_video_api/__init__.py +0 -0
  61. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/scout_workbookcommon_api/__init__.py +0 -0
  62. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/secrets_api/__init__.py +0 -0
  63. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/security_api_workspace/__init__.py +0 -0
  64. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/storage_datasource_api/__init__.py +0 -0
  65. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/storage_deletion_api/__init__.py +0 -0
  66. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/storage_series_api/__init__.py +0 -0
  67. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/storage_writer_api/__init__.py +0 -0
  68. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/themes_api/__init__.py +0 -0
  69. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_archetype/__init__.py +0 -0
  70. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_archetype_api/__init__.py +0 -0
  71. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_channelmetadata/__init__.py +0 -0
  72. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_channelmetadata_api/__init__.py +0 -0
  73. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_logicalseries/__init__.py +0 -0
  74. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_logicalseries_api/__init__.py +0 -0
  75. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_seriescache/__init__.py +0 -0
  76. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/timeseries_seriescache_api/__init__.py +0 -0
  77. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api/upload_api/__init__.py +0 -0
  78. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api.egg-info/SOURCES.txt +0 -0
  79. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api.egg-info/dependency_links.txt +0 -0
  80. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api.egg-info/requires.txt +0 -0
  81. {nominal_api-0.601.0 → nominal_api-0.603.0}/nominal_api.egg-info/top_level.txt +0 -0
  82. {nominal_api-0.601.0 → nominal_api-0.603.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.601.0
3
+ Version: 0.603.0
4
4
  Requires-Python: >=3.8
5
5
  Requires-Dist: requests
6
6
  Requires-Dist: conjure-python-client<3,>=2.8.0
@@ -75,5 +75,5 @@ __all__ = [
75
75
 
76
76
  __conjure_generator_version__ = "4.9.0"
77
77
 
78
- __version__ = "0.601.0"
78
+ __version__ = "0.603.0"
79
79
 
@@ -7489,8 +7489,9 @@ channels with config, otherwise the mcap may not be supported.
7489
7489
  @builtins.property
7490
7490
  def workspace(self) -> Optional[str]:
7491
7491
  """
7492
- The workspace in which to create the dataset. If not provided, the dataset will be created in the default workspace for
7493
- the user's organization, if the default workspace for the organization is configured.
7492
+ The workspace in which to create the dataset or video. If not provided, the dataset or video
7493
+ will be created in the default workspace for the user's organization, if the default
7494
+ workspace for the organization is configured.
7494
7495
  """
7495
7496
  return self._workspace
7496
7497
 
@@ -8326,18 +8327,20 @@ class ingest_api_IngestVideoRequest(ConjureBeanType):
8326
8327
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
8327
8328
  'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]),
8328
8329
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
8329
- 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest)
8330
+ 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest),
8331
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
8330
8332
  }
8331
8333
 
8332
- __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps']
8334
+ __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps', '_workspace']
8333
8335
 
8334
- def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None) -> None:
8336
+ def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None, workspace: Optional[str] = None) -> None:
8335
8337
  self._sources = sources
8336
8338
  self._properties = properties
8337
8339
  self._labels = labels
8338
8340
  self._title = title
8339
8341
  self._description = description
8340
8342
  self._timestamps = timestamps
8343
+ self._workspace = workspace
8341
8344
 
8342
8345
  @builtins.property
8343
8346
  def sources(self) -> List["ingest_api_IngestSource"]:
@@ -8363,6 +8366,14 @@ class ingest_api_IngestVideoRequest(ConjureBeanType):
8363
8366
  def timestamps(self) -> "ingest_api_VideoTimestampManifest":
8364
8367
  return self._timestamps
8365
8368
 
8369
+ @builtins.property
8370
+ def workspace(self) -> Optional[str]:
8371
+ """
8372
+ The workspace in which to create the video. If not provided, the video will be created in the default workspace for
8373
+ the user's organization, if the default workspace for the organization is configured.
8374
+ """
8375
+ return self._workspace
8376
+
8366
8377
 
8367
8378
  ingest_api_IngestVideoRequest.__name__ = "IngestVideoRequest"
8368
8379
  ingest_api_IngestVideoRequest.__qualname__ = "IngestVideoRequest"
@@ -8410,23 +8421,42 @@ class ingest_api_InitiateMultipartUploadRequest(ConjureBeanType):
8410
8421
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
8411
8422
  return {
8412
8423
  'filename': ConjureFieldDefinition('filename', str),
8413
- 'filetype': ConjureFieldDefinition('filetype', str)
8424
+ 'filetype': ConjureFieldDefinition('filetype', str),
8425
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
8414
8426
  }
8415
8427
 
8416
- __slots__: List[str] = ['_filename', '_filetype']
8428
+ __slots__: List[str] = ['_filename', '_filetype', '_workspace']
8417
8429
 
8418
- def __init__(self, filename: str, filetype: str) -> None:
8430
+ def __init__(self, filename: str, filetype: str, workspace: Optional[str] = None) -> None:
8419
8431
  self._filename = filename
8420
8432
  self._filetype = filetype
8433
+ self._workspace = workspace
8421
8434
 
8422
8435
  @builtins.property
8423
8436
  def filename(self) -> str:
8437
+ """
8438
+ The desired name of the file in object storage. The final name will be
8439
+ prefixed with a timestamp to ensure uniqueness.
8440
+ """
8424
8441
  return self._filename
8425
8442
 
8426
8443
  @builtins.property
8427
8444
  def filetype(self) -> str:
8445
+ """
8446
+ The MIME type of the file, eg "text/csv" for CSVs or "application/octet-stream"
8447
+ for binary files.
8448
+ """
8428
8449
  return self._filetype
8429
8450
 
8451
+ @builtins.property
8452
+ def workspace(self) -> Optional[str]:
8453
+ """
8454
+ The workspace in which to upload the file. If not provided, the file will be uploaded to
8455
+ the default workspace for the user's organization, if that is configured and the user
8456
+ has access to it.
8457
+ """
8458
+ return self._workspace
8459
+
8430
8460
 
8431
8461
  ingest_api_InitiateMultipartUploadRequest.__name__ = "InitiateMultipartUploadRequest"
8432
8462
  ingest_api_InitiateMultipartUploadRequest.__qualname__ = "InitiateMultipartUploadRequest"
@@ -9183,17 +9213,19 @@ class ingest_api_NewVideoIngestDestination(ConjureBeanType):
9183
9213
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
9184
9214
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
9185
9215
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
9186
- 'video_file_details': ConjureFieldDefinition('videoFileDetails', OptionalTypeWrapper[ingest_api_VideoFileIngestDetails])
9216
+ 'video_file_details': ConjureFieldDefinition('videoFileDetails', OptionalTypeWrapper[ingest_api_VideoFileIngestDetails]),
9217
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
9187
9218
  }
9188
9219
 
9189
- __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_video_file_details']
9220
+ __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_video_file_details', '_workspace']
9190
9221
 
9191
- def __init__(self, labels: List[str], properties: Dict[str, str], description: Optional[str] = None, title: Optional[str] = None, video_file_details: Optional["ingest_api_VideoFileIngestDetails"] = None) -> None:
9222
+ def __init__(self, labels: List[str], properties: Dict[str, str], description: Optional[str] = None, title: Optional[str] = None, video_file_details: Optional["ingest_api_VideoFileIngestDetails"] = None, workspace: Optional[str] = None) -> None:
9192
9223
  self._title = title
9193
9224
  self._description = description
9194
9225
  self._properties = properties
9195
9226
  self._labels = labels
9196
9227
  self._video_file_details = video_file_details
9228
+ self._workspace = workspace
9197
9229
 
9198
9230
  @builtins.property
9199
9231
  def title(self) -> Optional[str]:
@@ -9231,6 +9263,14 @@ If not provided, a name is deduced from the ingested file.
9231
9263
  """
9232
9264
  return self._video_file_details
9233
9265
 
9266
+ @builtins.property
9267
+ def workspace(self) -> Optional[str]:
9268
+ """
9269
+ The workspace in which to create the video. If not provided, the video will be created in the default workspace for
9270
+ the user's organization, if the default workspace for the organization is configured.
9271
+ """
9272
+ return self._workspace
9273
+
9234
9274
 
9235
9275
  ingest_api_NewVideoIngestDestination.__name__ = "NewVideoIngestDestination"
9236
9276
  ingest_api_NewVideoIngestDestination.__qualname__ = "NewVideoIngestDestination"
@@ -10159,22 +10199,28 @@ ingest_api_VideoTimestampManifestVisitor.__module__ = "nominal_api.ingest_api"
10159
10199
  class persistent_compute_api_ClientMessage(ConjureUnionType):
10160
10200
  _subscribe: Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]] = None
10161
10201
  _unsubscribe: Optional[List[str]] = None
10202
+ _ping: Optional["persistent_compute_api_Ping"] = None
10203
+ _pong: Optional["persistent_compute_api_Pong"] = None
10162
10204
 
10163
10205
  @builtins.classmethod
10164
10206
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
10165
10207
  return {
10166
10208
  'subscribe': ConjureFieldDefinition('subscribe', Dict[persistent_compute_api_SubscriptionId, persistent_compute_api_StreamingComputeNodeSubscription]),
10167
- 'unsubscribe': ConjureFieldDefinition('unsubscribe', List[persistent_compute_api_SubscriptionId])
10209
+ 'unsubscribe': ConjureFieldDefinition('unsubscribe', List[persistent_compute_api_SubscriptionId]),
10210
+ 'ping': ConjureFieldDefinition('ping', persistent_compute_api_Ping),
10211
+ 'pong': ConjureFieldDefinition('pong', persistent_compute_api_Pong)
10168
10212
  }
10169
10213
 
10170
10214
  def __init__(
10171
10215
  self,
10172
10216
  subscribe: Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]] = None,
10173
10217
  unsubscribe: Optional[List[str]] = None,
10218
+ ping: Optional["persistent_compute_api_Ping"] = None,
10219
+ pong: Optional["persistent_compute_api_Pong"] = None,
10174
10220
  type_of_union: Optional[str] = None
10175
10221
  ) -> None:
10176
10222
  if type_of_union is None:
10177
- if (subscribe is not None) + (unsubscribe is not None) != 1:
10223
+ if (subscribe is not None) + (unsubscribe is not None) + (ping is not None) + (pong is not None) != 1:
10178
10224
  raise ValueError('a union must contain a single member')
10179
10225
 
10180
10226
  if subscribe is not None:
@@ -10183,6 +10229,12 @@ class persistent_compute_api_ClientMessage(ConjureUnionType):
10183
10229
  if unsubscribe is not None:
10184
10230
  self._unsubscribe = unsubscribe
10185
10231
  self._type = 'unsubscribe'
10232
+ if ping is not None:
10233
+ self._ping = ping
10234
+ self._type = 'ping'
10235
+ if pong is not None:
10236
+ self._pong = pong
10237
+ self._type = 'pong'
10186
10238
 
10187
10239
  elif type_of_union == 'subscribe':
10188
10240
  if subscribe is None:
@@ -10194,6 +10246,16 @@ class persistent_compute_api_ClientMessage(ConjureUnionType):
10194
10246
  raise ValueError('a union value must not be None')
10195
10247
  self._unsubscribe = unsubscribe
10196
10248
  self._type = 'unsubscribe'
10249
+ elif type_of_union == 'ping':
10250
+ if ping is None:
10251
+ raise ValueError('a union value must not be None')
10252
+ self._ping = ping
10253
+ self._type = 'ping'
10254
+ elif type_of_union == 'pong':
10255
+ if pong is None:
10256
+ raise ValueError('a union value must not be None')
10257
+ self._pong = pong
10258
+ self._type = 'pong'
10197
10259
 
10198
10260
  @builtins.property
10199
10261
  def subscribe(self) -> Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]]:
@@ -10210,6 +10272,14 @@ for the subscription will be sent periodically via `ServerMessage::subscriptionU
10210
10272
  def unsubscribe(self) -> Optional[List[str]]:
10211
10273
  return self._unsubscribe
10212
10274
 
10275
+ @builtins.property
10276
+ def ping(self) -> Optional["persistent_compute_api_Ping"]:
10277
+ return self._ping
10278
+
10279
+ @builtins.property
10280
+ def pong(self) -> Optional["persistent_compute_api_Pong"]:
10281
+ return self._pong
10282
+
10213
10283
  def accept(self, visitor) -> Any:
10214
10284
  if not isinstance(visitor, persistent_compute_api_ClientMessageVisitor):
10215
10285
  raise ValueError('{} is not an instance of persistent_compute_api_ClientMessageVisitor'.format(visitor.__class__.__name__))
@@ -10217,6 +10287,10 @@ for the subscription will be sent periodically via `ServerMessage::subscriptionU
10217
10287
  return visitor._subscribe(self.subscribe)
10218
10288
  if self._type == 'unsubscribe' and self.unsubscribe is not None:
10219
10289
  return visitor._unsubscribe(self.unsubscribe)
10290
+ if self._type == 'ping' and self.ping is not None:
10291
+ return visitor._ping(self.ping)
10292
+ if self._type == 'pong' and self.pong is not None:
10293
+ return visitor._pong(self.pong)
10220
10294
 
10221
10295
 
10222
10296
  persistent_compute_api_ClientMessage.__name__ = "ClientMessage"
@@ -10234,6 +10308,14 @@ class persistent_compute_api_ClientMessageVisitor:
10234
10308
  def _unsubscribe(self, unsubscribe: List[str]) -> Any:
10235
10309
  pass
10236
10310
 
10311
+ @abstractmethod
10312
+ def _ping(self, ping: "persistent_compute_api_Ping") -> Any:
10313
+ pass
10314
+
10315
+ @abstractmethod
10316
+ def _pong(self, pong: "persistent_compute_api_Pong") -> Any:
10317
+ pass
10318
+
10237
10319
 
10238
10320
  persistent_compute_api_ClientMessageVisitor.__name__ = "ClientMessageVisitor"
10239
10321
  persistent_compute_api_ClientMessageVisitor.__qualname__ = "ClientMessageVisitor"
@@ -10269,25 +10351,89 @@ persistent_compute_api_FullResult.__qualname__ = "FullResult"
10269
10351
  persistent_compute_api_FullResult.__module__ = "nominal_api.persistent_compute_api"
10270
10352
 
10271
10353
 
10354
+ class persistent_compute_api_Ping(ConjureBeanType):
10355
+ """
10356
+ A ping can be sent by both client and server to keep the connection open and check that it is still working.
10357
+ The receiving end should send back a pong immediately.
10358
+ We also include the times that pings and pongs are sent so that we can track latency and/or discover clock
10359
+ drift between server and client.
10360
+ """
10361
+
10362
+ @builtins.classmethod
10363
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
10364
+ return {
10365
+ 'sent_at': ConjureFieldDefinition('sentAt', str)
10366
+ }
10367
+
10368
+ __slots__: List[str] = ['_sent_at']
10369
+
10370
+ def __init__(self, sent_at: str) -> None:
10371
+ self._sent_at = sent_at
10372
+
10373
+ @builtins.property
10374
+ def sent_at(self) -> str:
10375
+ return self._sent_at
10376
+
10377
+
10378
+ persistent_compute_api_Ping.__name__ = "Ping"
10379
+ persistent_compute_api_Ping.__qualname__ = "Ping"
10380
+ persistent_compute_api_Ping.__module__ = "nominal_api.persistent_compute_api"
10381
+
10382
+
10383
+ class persistent_compute_api_Pong(ConjureBeanType):
10384
+
10385
+ @builtins.classmethod
10386
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
10387
+ return {
10388
+ 'ping_originally_sent_at': ConjureFieldDefinition('pingOriginallySentAt', str),
10389
+ 'sent_at': ConjureFieldDefinition('sentAt', str)
10390
+ }
10391
+
10392
+ __slots__: List[str] = ['_ping_originally_sent_at', '_sent_at']
10393
+
10394
+ def __init__(self, ping_originally_sent_at: str, sent_at: str) -> None:
10395
+ self._ping_originally_sent_at = ping_originally_sent_at
10396
+ self._sent_at = sent_at
10397
+
10398
+ @builtins.property
10399
+ def ping_originally_sent_at(self) -> str:
10400
+ return self._ping_originally_sent_at
10401
+
10402
+ @builtins.property
10403
+ def sent_at(self) -> str:
10404
+ return self._sent_at
10405
+
10406
+
10407
+ persistent_compute_api_Pong.__name__ = "Pong"
10408
+ persistent_compute_api_Pong.__qualname__ = "Pong"
10409
+ persistent_compute_api_Pong.__module__ = "nominal_api.persistent_compute_api"
10410
+
10411
+
10272
10412
  class persistent_compute_api_ServerMessage(ConjureUnionType):
10273
10413
  _subscription_update: Optional["persistent_compute_api_SubscriptionUpdate"] = None
10274
10414
  _subscription_error: Optional["persistent_compute_api_SubscriptionError"] = None
10415
+ _ping: Optional["persistent_compute_api_Ping"] = None
10416
+ _pong: Optional["persistent_compute_api_Pong"] = None
10275
10417
 
10276
10418
  @builtins.classmethod
10277
10419
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
10278
10420
  return {
10279
10421
  'subscription_update': ConjureFieldDefinition('subscriptionUpdate', persistent_compute_api_SubscriptionUpdate),
10280
- 'subscription_error': ConjureFieldDefinition('subscriptionError', persistent_compute_api_SubscriptionError)
10422
+ 'subscription_error': ConjureFieldDefinition('subscriptionError', persistent_compute_api_SubscriptionError),
10423
+ 'ping': ConjureFieldDefinition('ping', persistent_compute_api_Ping),
10424
+ 'pong': ConjureFieldDefinition('pong', persistent_compute_api_Pong)
10281
10425
  }
10282
10426
 
10283
10427
  def __init__(
10284
10428
  self,
10285
10429
  subscription_update: Optional["persistent_compute_api_SubscriptionUpdate"] = None,
10286
10430
  subscription_error: Optional["persistent_compute_api_SubscriptionError"] = None,
10431
+ ping: Optional["persistent_compute_api_Ping"] = None,
10432
+ pong: Optional["persistent_compute_api_Pong"] = None,
10287
10433
  type_of_union: Optional[str] = None
10288
10434
  ) -> None:
10289
10435
  if type_of_union is None:
10290
- if (subscription_update is not None) + (subscription_error is not None) != 1:
10436
+ if (subscription_update is not None) + (subscription_error is not None) + (ping is not None) + (pong is not None) != 1:
10291
10437
  raise ValueError('a union must contain a single member')
10292
10438
 
10293
10439
  if subscription_update is not None:
@@ -10296,6 +10442,12 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10296
10442
  if subscription_error is not None:
10297
10443
  self._subscription_error = subscription_error
10298
10444
  self._type = 'subscriptionError'
10445
+ if ping is not None:
10446
+ self._ping = ping
10447
+ self._type = 'ping'
10448
+ if pong is not None:
10449
+ self._pong = pong
10450
+ self._type = 'pong'
10299
10451
 
10300
10452
  elif type_of_union == 'subscriptionUpdate':
10301
10453
  if subscription_update is None:
@@ -10307,6 +10459,16 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10307
10459
  raise ValueError('a union value must not be None')
10308
10460
  self._subscription_error = subscription_error
10309
10461
  self._type = 'subscriptionError'
10462
+ elif type_of_union == 'ping':
10463
+ if ping is None:
10464
+ raise ValueError('a union value must not be None')
10465
+ self._ping = ping
10466
+ self._type = 'ping'
10467
+ elif type_of_union == 'pong':
10468
+ if pong is None:
10469
+ raise ValueError('a union value must not be None')
10470
+ self._pong = pong
10471
+ self._type = 'pong'
10310
10472
 
10311
10473
  @builtins.property
10312
10474
  def subscription_update(self) -> Optional["persistent_compute_api_SubscriptionUpdate"]:
@@ -10316,6 +10478,14 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10316
10478
  def subscription_error(self) -> Optional["persistent_compute_api_SubscriptionError"]:
10317
10479
  return self._subscription_error
10318
10480
 
10481
+ @builtins.property
10482
+ def ping(self) -> Optional["persistent_compute_api_Ping"]:
10483
+ return self._ping
10484
+
10485
+ @builtins.property
10486
+ def pong(self) -> Optional["persistent_compute_api_Pong"]:
10487
+ return self._pong
10488
+
10319
10489
  def accept(self, visitor) -> Any:
10320
10490
  if not isinstance(visitor, persistent_compute_api_ServerMessageVisitor):
10321
10491
  raise ValueError('{} is not an instance of persistent_compute_api_ServerMessageVisitor'.format(visitor.__class__.__name__))
@@ -10323,6 +10493,10 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10323
10493
  return visitor._subscription_update(self.subscription_update)
10324
10494
  if self._type == 'subscriptionError' and self.subscription_error is not None:
10325
10495
  return visitor._subscription_error(self.subscription_error)
10496
+ if self._type == 'ping' and self.ping is not None:
10497
+ return visitor._ping(self.ping)
10498
+ if self._type == 'pong' and self.pong is not None:
10499
+ return visitor._pong(self.pong)
10326
10500
 
10327
10501
 
10328
10502
  persistent_compute_api_ServerMessage.__name__ = "ServerMessage"
@@ -10340,6 +10514,14 @@ class persistent_compute_api_ServerMessageVisitor:
10340
10514
  def _subscription_error(self, subscription_error: "persistent_compute_api_SubscriptionError") -> Any:
10341
10515
  pass
10342
10516
 
10517
+ @abstractmethod
10518
+ def _ping(self, ping: "persistent_compute_api_Ping") -> Any:
10519
+ pass
10520
+
10521
+ @abstractmethod
10522
+ def _pong(self, pong: "persistent_compute_api_Pong") -> Any:
10523
+ pass
10524
+
10343
10525
 
10344
10526
  persistent_compute_api_ServerMessageVisitor.__name__ = "ServerMessageVisitor"
10345
10527
  persistent_compute_api_ServerMessageVisitor.__qualname__ = "ServerMessageVisitor"
@@ -23020,13 +23202,15 @@ class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType
23020
23202
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23021
23203
  return {
23022
23204
  'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
23205
+ 'workspace_ids': ConjureFieldDefinition('workspaceIds', List[api_ids_WorkspaceId]),
23023
23206
  'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[str])
23024
23207
  }
23025
23208
 
23026
- __slots__: List[str] = ['_page_size', '_page_token']
23209
+ __slots__: List[str] = ['_page_size', '_workspace_ids', '_page_token']
23027
23210
 
23028
- def __init__(self, page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
23211
+ def __init__(self, workspace_ids: List[str], page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
23029
23212
  self._page_size = page_size
23213
+ self._workspace_ids = workspace_ids
23030
23214
  self._page_token = page_token
23031
23215
 
23032
23216
  @builtins.property
@@ -23036,6 +23220,10 @@ class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType
23036
23220
  """
23037
23221
  return self._page_size
23038
23222
 
23223
+ @builtins.property
23224
+ def workspace_ids(self) -> List[str]:
23225
+ return self._workspace_ids
23226
+
23039
23227
  @builtins.property
23040
23228
  def page_token(self) -> Optional[str]:
23041
23229
  return self._page_token
@@ -51521,7 +51709,7 @@ the automatic checks against the run.
51521
51709
 
51522
51710
  def get_check_alerts_histogram(self, auth_header: str, request: "scout_datareview_api_CheckAlertsHistogramRequest") -> "scout_datareview_api_CheckAlertsHistogramResponse":
51523
51711
  """
51524
- Returns a histogram of alerts that occur across the provided runs.
51712
+ Returns a histogram of alerts that occur across the provided runs or assets. At least one run or asset must be specified.
51525
51713
  """
51526
51714
 
51527
51715
  _headers: Dict[str, Any] = {
@@ -51553,7 +51741,7 @@ the automatic checks against the run.
51553
51741
 
51554
51742
  def search_check_alerts(self, auth_header: str, request: "scout_datareview_api_SearchCheckAlertsRequest") -> "scout_datareview_api_SearchCheckAlertsResponse":
51555
51743
  """
51556
- Returns the check alerts under the provided search parameters.
51744
+ Returns the check alerts under the provided search parameters. At least one run or asset must be specified.
51557
51745
  """
51558
51746
 
51559
51747
  _headers: Dict[str, Any] = {
@@ -58269,9 +58457,9 @@ scout_internal_search_api_TimestampField.__qualname__ = "TimestampField"
58269
58457
  scout_internal_search_api_TimestampField.__module__ = "nominal_api.scout_internal_search_api"
58270
58458
 
58271
58459
 
58272
- class scout_jobs_api_JobService(Service):
58460
+ class scout_jobs_api_InternalJobService(Service):
58273
58461
  """
58274
- The Job Service is responsible for running jobs for checklist executions.
58462
+ The Internal Job Service is responsible for running jobs for checklist executions.
58275
58463
  """
58276
58464
 
58277
58465
  def submit_jobs(self, auth_header: str, request: "scout_checks_api_SubmitJobsRequest") -> "scout_checks_api_SubmitJobsResponse":
@@ -58293,7 +58481,7 @@ class scout_jobs_api_JobService(Service):
58293
58481
 
58294
58482
  _json: Any = ConjureEncoder().default(request)
58295
58483
 
58296
- _path = '/jobs/v1/submitJobs'
58484
+ _path = '/internal/jobs/v1/submitJobs'
58297
58485
  _path = _path.format(**_path_params)
58298
58486
 
58299
58487
  _response: Response = self._request(
@@ -58306,6 +58494,17 @@ class scout_jobs_api_JobService(Service):
58306
58494
  _decoder = ConjureDecoder()
58307
58495
  return _decoder.decode(_response.json(), scout_checks_api_SubmitJobsResponse, self._return_none_for_unknown_union_types)
58308
58496
 
58497
+
58498
+ scout_jobs_api_InternalJobService.__name__ = "InternalJobService"
58499
+ scout_jobs_api_InternalJobService.__qualname__ = "InternalJobService"
58500
+ scout_jobs_api_InternalJobService.__module__ = "nominal_api.scout_jobs_api"
58501
+
58502
+
58503
+ class scout_jobs_api_JobService(Service):
58504
+ """
58505
+ The Job Service is responsible for returning information about jobs for checklist executions.
58506
+ """
58507
+
58309
58508
  def get_job_report(self, auth_header: str, job_rid: str) -> "scout_checks_api_JobReport":
58310
58509
  """
58311
58510
  Fetches the job report for a job RID. Throws ResourcesNotFound if no job exists with this job RID.
@@ -74152,13 +74351,13 @@ timeseries_seriescache_api_S3Handle.__module__ = "nominal_api.timeseries_seriesc
74152
74351
 
74153
74352
  class upload_api_UploadService(Service):
74154
74353
  """
74155
- The Upload Service manages file uploads to S3.
74354
+ The Upload Service manages file uploads to object storage.
74156
74355
  """
74157
74356
 
74158
74357
  def initiate_multipart_upload(self, auth_header: str, upload_request: "ingest_api_InitiateMultipartUploadRequest") -> "ingest_api_InitiateMultipartUploadResponse":
74159
74358
  """
74160
- Initiates a multipart upload to S3.
74161
- Does not directly upload any parts, but returns an uploadId used to upload parts.
74359
+ Initiates a multipart upload to object storage.
74360
+ Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
74162
74361
  """
74163
74362
 
74164
74363
  _headers: Dict[str, Any] = {
@@ -74258,7 +74457,8 @@ Returns a URL that will execute the upload without further authentication.
74258
74457
 
74259
74458
  def complete_multipart_upload(self, auth_header: str, key: str, upload_id: str, parts: List["ingest_api_Part"] = None) -> "ingest_api_CompleteMultipartUploadResponse":
74260
74459
  """
74261
- Completes a multipart upload to S3. This should be called after all parts have been uploaded.
74460
+ Completes a multipart upload to object storage.
74461
+ This should be called after all parts have been uploaded.
74262
74462
  """
74263
74463
  parts = parts if parts is not None else []
74264
74464
 
@@ -74324,7 +74524,7 @@ Frees storage used by previously uploaded parts and prevents further uploads to
74324
74524
 
74325
74525
  return
74326
74526
 
74327
- def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None) -> str:
74527
+ def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None, workspace: Optional[str] = None) -> str:
74328
74528
  """
74329
74529
  Uploads a file to S3. Intended for smaller files.
74330
74530
  """
@@ -74338,6 +74538,7 @@ Frees storage used by previously uploaded parts and prevents further uploads to
74338
74538
  _params: Dict[str, Any] = {
74339
74539
  'fileName': file_name,
74340
74540
  'sizeBytes': size_bytes,
74541
+ 'workspace': workspace,
74341
74542
  }
74342
74543
 
74343
74544
  _path_params: Dict[str, Any] = {
@@ -4,6 +4,8 @@ from .._impl import (
4
4
  persistent_compute_api_ClientMessageVisitor as ClientMessageVisitor,
5
5
  persistent_compute_api_FullResult as FullResult,
6
6
  persistent_compute_api_Milliseconds as Milliseconds,
7
+ persistent_compute_api_Ping as Ping,
8
+ persistent_compute_api_Pong as Pong,
7
9
  persistent_compute_api_ServerMessage as ServerMessage,
8
10
  persistent_compute_api_ServerMessageVisitor as ServerMessageVisitor,
9
11
  persistent_compute_api_StreamingComputeNodeRequest as StreamingComputeNodeRequest,
@@ -1,5 +1,6 @@
1
1
  # coding=utf-8
2
2
  from .._impl import (
3
+ scout_jobs_api_InternalJobService as InternalJobService,
3
4
  scout_jobs_api_JobService as JobService,
4
5
  )
5
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.601.0
3
+ Version: 0.603.0
4
4
  Requires-Python: >=3.8
5
5
  Requires-Dist: requests
6
6
  Requires-Dist: conjure-python-client<3,>=2.8.0
@@ -6,7 +6,7 @@ from setuptools import (
6
6
 
7
7
  setup(
8
8
  name='nominal-api',
9
- version='0.601.0',
9
+ version='0.603.0',
10
10
  python_requires='>=3.8',
11
11
  package_data={"": ["py.typed"]},
12
12
  packages=find_packages(),
File without changes