nominal-api 0.702.0__tar.gz → 0.704.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.702.0 → nominal_api-0.704.0}/PKG-INFO +1 -1
  2. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/__init__.py +1 -1
  3. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/_impl.py +427 -4
  4. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/persistent_compute_api/__init__.py +2 -0
  5. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_compute_api/__init__.py +1 -0
  6. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_compute_resolved_api/__init__.py +1 -0
  7. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/storage_writer_api/__init__.py +4 -0
  8. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api.egg-info/PKG-INFO +1 -1
  9. {nominal_api-0.702.0 → nominal_api-0.704.0}/setup.py +1 -1
  10. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/api/__init__.py +0 -0
  11. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/api_ids/__init__.py +0 -0
  12. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/api_rids/__init__.py +0 -0
  13. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/attachments_api/__init__.py +0 -0
  14. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/authentication_api/__init__.py +0 -0
  15. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/authorization/__init__.py +0 -0
  16. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/comments_api/__init__.py +0 -0
  17. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/connect_download/__init__.py +0 -0
  18. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/datasource/__init__.py +0 -0
  19. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/datasource_api/__init__.py +0 -0
  20. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/datasource_logset/__init__.py +0 -0
  21. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/datasource_logset_api/__init__.py +0 -0
  22. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/datasource_pagination_api/__init__.py +0 -0
  23. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/event/__init__.py +0 -0
  24. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/ingest_api/__init__.py +0 -0
  25. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/ingest_workflow_api/__init__.py +0 -0
  26. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/py.typed +0 -0
  27. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout/__init__.py +0 -0
  28. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_api/__init__.py +0 -0
  29. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_asset_api/__init__.py +0 -0
  30. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_assets/__init__.py +0 -0
  31. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_catalog/__init__.py +0 -0
  32. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_channelvariables_api/__init__.py +0 -0
  33. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_chart_api/__init__.py +0 -0
  34. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_chartdefinition_api/__init__.py +0 -0
  35. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_checklistexecution_api/__init__.py +0 -0
  36. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_checks_api/__init__.py +0 -0
  37. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_comparisonnotebook_api/__init__.py +0 -0
  38. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_comparisonrun_api/__init__.py +0 -0
  39. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_compute_api_deprecated/__init__.py +0 -0
  40. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_dataexport_api/__init__.py +0 -0
  41. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_datareview_api/__init__.py +0 -0
  42. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_datasource/__init__.py +0 -0
  43. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_datasource_connection/__init__.py +0 -0
  44. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_datasource_connection_api/__init__.py +0 -0
  45. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_datasource_connection_api_influx/__init__.py +0 -0
  46. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_favorites/__init__.py +0 -0
  47. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_favorites_api/__init__.py +0 -0
  48. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_integrations_api/__init__.py +0 -0
  49. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_internal_search_api/__init__.py +0 -0
  50. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_jobs_api/__init__.py +0 -0
  51. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_layout_api/__init__.py +0 -0
  52. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_metadata/__init__.py +0 -0
  53. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_notebook_api/__init__.py +0 -0
  54. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_plotting/__init__.py +0 -0
  55. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_rids_api/__init__.py +0 -0
  56. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_run_api/__init__.py +0 -0
  57. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_template_api/__init__.py +0 -0
  58. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_units_api/__init__.py +0 -0
  59. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_versioning_api/__init__.py +0 -0
  60. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_video/__init__.py +0 -0
  61. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_video_api/__init__.py +0 -0
  62. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/scout_workbookcommon_api/__init__.py +0 -0
  63. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/secrets_api/__init__.py +0 -0
  64. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/security_api_workspace/__init__.py +0 -0
  65. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/storage_datasource_api/__init__.py +0 -0
  66. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/storage_deletion_api/__init__.py +0 -0
  67. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/storage_series_api/__init__.py +0 -0
  68. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/themes_api/__init__.py +0 -0
  69. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_archetype/__init__.py +0 -0
  70. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_archetype_api/__init__.py +0 -0
  71. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_channelmetadata/__init__.py +0 -0
  72. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_channelmetadata_api/__init__.py +0 -0
  73. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_logicalseries/__init__.py +0 -0
  74. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_logicalseries_api/__init__.py +0 -0
  75. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_seriescache/__init__.py +0 -0
  76. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/timeseries_seriescache_api/__init__.py +0 -0
  77. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api/upload_api/__init__.py +0 -0
  78. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api.egg-info/SOURCES.txt +0 -0
  79. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api.egg-info/dependency_links.txt +0 -0
  80. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api.egg-info/requires.txt +0 -0
  81. {nominal_api-0.702.0 → nominal_api-0.704.0}/nominal_api.egg-info/top_level.txt +0 -0
  82. {nominal_api-0.702.0 → nominal_api-0.704.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.702.0
3
+ Version: 0.704.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.702.0"
78
+ __version__ = "0.704.0"
79
79
 
@@ -13955,6 +13955,7 @@ when accounting for out-of-order points."""
13955
13955
  _enum: Optional["scout_compute_api_EnumPlot"] = None
13956
13956
  _bucketed_numeric: Optional["scout_compute_api_BucketedNumericPlot"] = None
13957
13957
  _bucketed_enum: Optional["scout_compute_api_BucketedEnumPlot"] = None
13958
+ _grouped: Optional["persistent_compute_api_GroupedComputeNodeAppendResponses"] = None
13958
13959
 
13959
13960
  @builtins.classmethod
13960
13961
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -13967,7 +13968,8 @@ when accounting for out-of-order points."""
13967
13968
  'numeric': ConjureFieldDefinition('numeric', scout_compute_api_NumericPlot),
13968
13969
  'enum': ConjureFieldDefinition('enum', scout_compute_api_EnumPlot),
13969
13970
  'bucketed_numeric': ConjureFieldDefinition('bucketedNumeric', scout_compute_api_BucketedNumericPlot),
13970
- 'bucketed_enum': ConjureFieldDefinition('bucketedEnum', scout_compute_api_BucketedEnumPlot)
13971
+ 'bucketed_enum': ConjureFieldDefinition('bucketedEnum', scout_compute_api_BucketedEnumPlot),
13972
+ 'grouped': ConjureFieldDefinition('grouped', persistent_compute_api_GroupedComputeNodeAppendResponses)
13971
13973
  }
13972
13974
 
13973
13975
  def __init__(
@@ -13981,10 +13983,11 @@ when accounting for out-of-order points."""
13981
13983
  enum: Optional["scout_compute_api_EnumPlot"] = None,
13982
13984
  bucketed_numeric: Optional["scout_compute_api_BucketedNumericPlot"] = None,
13983
13985
  bucketed_enum: Optional["scout_compute_api_BucketedEnumPlot"] = None,
13986
+ grouped: Optional["persistent_compute_api_GroupedComputeNodeAppendResponses"] = None,
13984
13987
  type_of_union: Optional[str] = None
13985
13988
  ) -> None:
13986
13989
  if type_of_union is None:
13987
- if (range is not None) + (enum_point is not None) + (numeric_point is not None) + (log_point is not None) + (range_value is not None) + (numeric is not None) + (enum is not None) + (bucketed_numeric is not None) + (bucketed_enum is not None) != 1:
13990
+ if (range is not None) + (enum_point is not None) + (numeric_point is not None) + (log_point is not None) + (range_value is not None) + (numeric is not None) + (enum is not None) + (bucketed_numeric is not None) + (bucketed_enum is not None) + (grouped is not None) != 1:
13988
13991
  raise ValueError('a union must contain a single member')
13989
13992
 
13990
13993
  if range is not None:
@@ -14014,6 +14017,9 @@ when accounting for out-of-order points."""
14014
14017
  if bucketed_enum is not None:
14015
14018
  self._bucketed_enum = bucketed_enum
14016
14019
  self._type = 'bucketedEnum'
14020
+ if grouped is not None:
14021
+ self._grouped = grouped
14022
+ self._type = 'grouped'
14017
14023
 
14018
14024
  elif type_of_union == 'range':
14019
14025
  if range is None:
@@ -14060,6 +14066,11 @@ when accounting for out-of-order points."""
14060
14066
  raise ValueError('a union value must not be None')
14061
14067
  self._bucketed_enum = bucketed_enum
14062
14068
  self._type = 'bucketedEnum'
14069
+ elif type_of_union == 'grouped':
14070
+ if grouped is None:
14071
+ raise ValueError('a union value must not be None')
14072
+ self._grouped = grouped
14073
+ self._type = 'grouped'
14063
14074
 
14064
14075
  @builtins.property
14065
14076
  def range(self) -> Optional[List["scout_compute_api_Range"]]:
@@ -14130,6 +14141,13 @@ with the newer ones.
14130
14141
  """
14131
14142
  return self._bucketed_enum
14132
14143
 
14144
+ @builtins.property
14145
+ def grouped(self) -> Optional["persistent_compute_api_GroupedComputeNodeAppendResponses"]:
14146
+ """
14147
+ Appends can be done by doing an append individually for each contained `ComputeNodeAppendResponse`.
14148
+ """
14149
+ return self._grouped
14150
+
14133
14151
  def accept(self, visitor) -> Any:
14134
14152
  if not isinstance(visitor, persistent_compute_api_ComputeNodeAppendResponseVisitor):
14135
14153
  raise ValueError('{} is not an instance of persistent_compute_api_ComputeNodeAppendResponseVisitor'.format(visitor.__class__.__name__))
@@ -14151,6 +14169,8 @@ with the newer ones.
14151
14169
  return visitor._bucketed_numeric(self.bucketed_numeric)
14152
14170
  if self._type == 'bucketedEnum' and self.bucketed_enum is not None:
14153
14171
  return visitor._bucketed_enum(self.bucketed_enum)
14172
+ if self._type == 'grouped' and self.grouped is not None:
14173
+ return visitor._grouped(self.grouped)
14154
14174
 
14155
14175
 
14156
14176
  persistent_compute_api_ComputeNodeAppendResponse.__name__ = "ComputeNodeAppendResponse"
@@ -14196,6 +14216,10 @@ class persistent_compute_api_ComputeNodeAppendResponseVisitor:
14196
14216
  def _bucketed_enum(self, bucketed_enum: "scout_compute_api_BucketedEnumPlot") -> Any:
14197
14217
  pass
14198
14218
 
14219
+ @abstractmethod
14220
+ def _grouped(self, grouped: "persistent_compute_api_GroupedComputeNodeAppendResponses") -> Any:
14221
+ pass
14222
+
14199
14223
 
14200
14224
  persistent_compute_api_ComputeNodeAppendResponseVisitor.__name__ = "ComputeNodeAppendResponseVisitor"
14201
14225
  persistent_compute_api_ComputeNodeAppendResponseVisitor.__qualname__ = "ComputeNodeAppendResponseVisitor"
@@ -14225,6 +14249,62 @@ persistent_compute_api_FullResult.__qualname__ = "FullResult"
14225
14249
  persistent_compute_api_FullResult.__module__ = "nominal_api.persistent_compute_api"
14226
14250
 
14227
14251
 
14252
+ class persistent_compute_api_GroupedComputeNodeAppendResponse(ConjureBeanType):
14253
+
14254
+ @builtins.classmethod
14255
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
14256
+ return {
14257
+ 'grouping': ConjureFieldDefinition('grouping', scout_compute_api_Grouping),
14258
+ 'response': ConjureFieldDefinition('response', persistent_compute_api_ComputeNodeAppendResponse)
14259
+ }
14260
+
14261
+ __slots__: List[str] = ['_grouping', '_response']
14262
+
14263
+ def __init__(self, grouping: "scout_compute_api_Grouping", response: "persistent_compute_api_ComputeNodeAppendResponse") -> None:
14264
+ self._grouping = grouping
14265
+ self._response = response
14266
+
14267
+ @builtins.property
14268
+ def grouping(self) -> "scout_compute_api_Grouping":
14269
+ return self._grouping
14270
+
14271
+ @builtins.property
14272
+ def response(self) -> "persistent_compute_api_ComputeNodeAppendResponse":
14273
+ return self._response
14274
+
14275
+
14276
+ persistent_compute_api_GroupedComputeNodeAppendResponse.__name__ = "GroupedComputeNodeAppendResponse"
14277
+ persistent_compute_api_GroupedComputeNodeAppendResponse.__qualname__ = "GroupedComputeNodeAppendResponse"
14278
+ persistent_compute_api_GroupedComputeNodeAppendResponse.__module__ = "nominal_api.persistent_compute_api"
14279
+
14280
+
14281
+ class persistent_compute_api_GroupedComputeNodeAppendResponses(ConjureBeanType):
14282
+ """
14283
+ Contains a `GroupedComputeNodeAppendResponse` for each applicable grouping along with metadata describing the
14284
+ grouping. All the contained `GroupedComputeNodeAppendResponse`s are guaranteed to be of the same type.
14285
+ """
14286
+
14287
+ @builtins.classmethod
14288
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
14289
+ return {
14290
+ 'responses': ConjureFieldDefinition('responses', List[persistent_compute_api_GroupedComputeNodeAppendResponse])
14291
+ }
14292
+
14293
+ __slots__: List[str] = ['_responses']
14294
+
14295
+ def __init__(self, responses: List["persistent_compute_api_GroupedComputeNodeAppendResponse"]) -> None:
14296
+ self._responses = responses
14297
+
14298
+ @builtins.property
14299
+ def responses(self) -> List["persistent_compute_api_GroupedComputeNodeAppendResponse"]:
14300
+ return self._responses
14301
+
14302
+
14303
+ persistent_compute_api_GroupedComputeNodeAppendResponses.__name__ = "GroupedComputeNodeAppendResponses"
14304
+ persistent_compute_api_GroupedComputeNodeAppendResponses.__qualname__ = "GroupedComputeNodeAppendResponses"
14305
+ persistent_compute_api_GroupedComputeNodeAppendResponses.__module__ = "nominal_api.persistent_compute_api"
14306
+
14307
+
14228
14308
  class persistent_compute_api_HealthMessage(ConjureUnionType):
14229
14309
  _ping: Optional["persistent_compute_api_Ping"] = None
14230
14310
  _pong: Optional["persistent_compute_api_Pong"] = None
@@ -38876,6 +38956,44 @@ scout_compute_api_DurationConstantVisitor.__qualname__ = "DurationConstantVisito
38876
38956
  scout_compute_api_DurationConstantVisitor.__module__ = "nominal_api.scout_compute_api"
38877
38957
 
38878
38958
 
38959
+ class scout_compute_api_DurationFilterRanges(ConjureBeanType):
38960
+ """
38961
+ Filters a list of ranges down to only those satisfying a threshold condition on the range's duration.
38962
+ """
38963
+
38964
+ @builtins.classmethod
38965
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
38966
+ return {
38967
+ 'input': ConjureFieldDefinition('input', scout_compute_api_RangeSeries),
38968
+ 'threshold': ConjureFieldDefinition('threshold', scout_compute_api_DurationConstant),
38969
+ 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator)
38970
+ }
38971
+
38972
+ __slots__: List[str] = ['_input', '_threshold', '_operator']
38973
+
38974
+ def __init__(self, input: "scout_compute_api_RangeSeries", operator: "scout_compute_api_ThresholdOperator", threshold: "scout_compute_api_DurationConstant") -> None:
38975
+ self._input = input
38976
+ self._threshold = threshold
38977
+ self._operator = operator
38978
+
38979
+ @builtins.property
38980
+ def input(self) -> "scout_compute_api_RangeSeries":
38981
+ return self._input
38982
+
38983
+ @builtins.property
38984
+ def threshold(self) -> "scout_compute_api_DurationConstant":
38985
+ return self._threshold
38986
+
38987
+ @builtins.property
38988
+ def operator(self) -> "scout_compute_api_ThresholdOperator":
38989
+ return self._operator
38990
+
38991
+
38992
+ scout_compute_api_DurationFilterRanges.__name__ = "DurationFilterRanges"
38993
+ scout_compute_api_DurationFilterRanges.__qualname__ = "DurationFilterRanges"
38994
+ scout_compute_api_DurationFilterRanges.__module__ = "nominal_api.scout_compute_api"
38995
+
38996
+
38879
38997
  class scout_compute_api_EnumAggregationFunction(ConjureEnumType):
38880
38998
 
38881
38999
  MIN = 'MIN'
@@ -44315,6 +44433,7 @@ scout_compute_api_RangeMap.__module__ = "nominal_api.scout_compute_api"
44315
44433
 
44316
44434
  class scout_compute_api_RangeSeries(ConjureUnionType):
44317
44435
  _approximate_threshold: Optional["scout_compute_api_ApproximateThresholdRanges"] = None
44436
+ _duration_filter: Optional["scout_compute_api_DurationFilterRanges"] = None
44318
44437
  _enum_filter: Optional["scout_compute_api_EnumFilterRanges"] = None
44319
44438
  _enum_series_equality_ranges_node: Optional["scout_compute_api_EnumSeriesEqualityRanges"] = None
44320
44439
  _function: Optional["scout_compute_api_RangesFunction"] = None
@@ -44337,6 +44456,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44337
44456
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
44338
44457
  return {
44339
44458
  'approximate_threshold': ConjureFieldDefinition('approximateThreshold', scout_compute_api_ApproximateThresholdRanges),
44459
+ 'duration_filter': ConjureFieldDefinition('durationFilter', scout_compute_api_DurationFilterRanges),
44340
44460
  'enum_filter': ConjureFieldDefinition('enumFilter', scout_compute_api_EnumFilterRanges),
44341
44461
  'enum_series_equality_ranges_node': ConjureFieldDefinition('enumSeriesEqualityRangesNode', scout_compute_api_EnumSeriesEqualityRanges),
44342
44462
  'function': ConjureFieldDefinition('function', scout_compute_api_RangesFunction),
@@ -44359,6 +44479,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44359
44479
  def __init__(
44360
44480
  self,
44361
44481
  approximate_threshold: Optional["scout_compute_api_ApproximateThresholdRanges"] = None,
44482
+ duration_filter: Optional["scout_compute_api_DurationFilterRanges"] = None,
44362
44483
  enum_filter: Optional["scout_compute_api_EnumFilterRanges"] = None,
44363
44484
  enum_series_equality_ranges_node: Optional["scout_compute_api_EnumSeriesEqualityRanges"] = None,
44364
44485
  function: Optional["scout_compute_api_RangesFunction"] = None,
@@ -44379,12 +44500,15 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44379
44500
  type_of_union: Optional[str] = None
44380
44501
  ) -> None:
44381
44502
  if type_of_union is None:
44382
- if (approximate_threshold is not None) + (enum_filter is not None) + (enum_series_equality_ranges_node is not None) + (function is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (peak is not None) + (range_numeric_aggregation is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (stability_detection is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) != 1:
44503
+ if (approximate_threshold is not None) + (duration_filter is not None) + (enum_filter is not None) + (enum_series_equality_ranges_node is not None) + (function is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (peak is not None) + (range_numeric_aggregation is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (stability_detection is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) != 1:
44383
44504
  raise ValueError('a union must contain a single member')
44384
44505
 
44385
44506
  if approximate_threshold is not None:
44386
44507
  self._approximate_threshold = approximate_threshold
44387
44508
  self._type = 'approximateThreshold'
44509
+ if duration_filter is not None:
44510
+ self._duration_filter = duration_filter
44511
+ self._type = 'durationFilter'
44388
44512
  if enum_filter is not None:
44389
44513
  self._enum_filter = enum_filter
44390
44514
  self._type = 'enumFilter'
@@ -44442,6 +44566,11 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44442
44566
  raise ValueError('a union value must not be None')
44443
44567
  self._approximate_threshold = approximate_threshold
44444
44568
  self._type = 'approximateThreshold'
44569
+ elif type_of_union == 'durationFilter':
44570
+ if duration_filter is None:
44571
+ raise ValueError('a union value must not be None')
44572
+ self._duration_filter = duration_filter
44573
+ self._type = 'durationFilter'
44445
44574
  elif type_of_union == 'enumFilter':
44446
44575
  if enum_filter is None:
44447
44576
  raise ValueError('a union value must not be None')
@@ -44532,6 +44661,10 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44532
44661
  def approximate_threshold(self) -> Optional["scout_compute_api_ApproximateThresholdRanges"]:
44533
44662
  return self._approximate_threshold
44534
44663
 
44664
+ @builtins.property
44665
+ def duration_filter(self) -> Optional["scout_compute_api_DurationFilterRanges"]:
44666
+ return self._duration_filter
44667
+
44535
44668
  @builtins.property
44536
44669
  def enum_filter(self) -> Optional["scout_compute_api_EnumFilterRanges"]:
44537
44670
  return self._enum_filter
@@ -44611,6 +44744,8 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
44611
44744
  raise ValueError('{} is not an instance of scout_compute_api_RangeSeriesVisitor'.format(visitor.__class__.__name__))
44612
44745
  if self._type == 'approximateThreshold' and self.approximate_threshold is not None:
44613
44746
  return visitor._approximate_threshold(self.approximate_threshold)
44747
+ if self._type == 'durationFilter' and self.duration_filter is not None:
44748
+ return visitor._duration_filter(self.duration_filter)
44614
44749
  if self._type == 'enumFilter' and self.enum_filter is not None:
44615
44750
  return visitor._enum_filter(self.enum_filter)
44616
44751
  if self._type == 'enumSeriesEqualityRangesNode' and self.enum_series_equality_ranges_node is not None:
@@ -44658,6 +44793,10 @@ class scout_compute_api_RangeSeriesVisitor:
44658
44793
  def _approximate_threshold(self, approximate_threshold: "scout_compute_api_ApproximateThresholdRanges") -> Any:
44659
44794
  pass
44660
44795
 
44796
+ @abstractmethod
44797
+ def _duration_filter(self, duration_filter: "scout_compute_api_DurationFilterRanges") -> Any:
44798
+ pass
44799
+
44661
44800
  @abstractmethod
44662
44801
  def _enum_filter(self, enum_filter: "scout_compute_api_EnumFilterRanges") -> Any:
44663
44802
  pass
@@ -50865,6 +51004,41 @@ scout_compute_resolved_api_DerivativeSeriesNode.__qualname__ = "DerivativeSeries
50865
51004
  scout_compute_resolved_api_DerivativeSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
50866
51005
 
50867
51006
 
51007
+ class scout_compute_resolved_api_DurationFilterRangesNode(ConjureBeanType):
51008
+
51009
+ @builtins.classmethod
51010
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
51011
+ return {
51012
+ 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_RangesNode),
51013
+ 'threshold': ConjureFieldDefinition('threshold', scout_run_api_Duration),
51014
+ 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator)
51015
+ }
51016
+
51017
+ __slots__: List[str] = ['_input', '_threshold', '_operator']
51018
+
51019
+ def __init__(self, input: "scout_compute_resolved_api_RangesNode", operator: "scout_compute_api_ThresholdOperator", threshold: "scout_run_api_Duration") -> None:
51020
+ self._input = input
51021
+ self._threshold = threshold
51022
+ self._operator = operator
51023
+
51024
+ @builtins.property
51025
+ def input(self) -> "scout_compute_resolved_api_RangesNode":
51026
+ return self._input
51027
+
51028
+ @builtins.property
51029
+ def threshold(self) -> "scout_run_api_Duration":
51030
+ return self._threshold
51031
+
51032
+ @builtins.property
51033
+ def operator(self) -> "scout_compute_api_ThresholdOperator":
51034
+ return self._operator
51035
+
51036
+
51037
+ scout_compute_resolved_api_DurationFilterRangesNode.__name__ = "DurationFilterRangesNode"
51038
+ scout_compute_resolved_api_DurationFilterRangesNode.__qualname__ = "DurationFilterRangesNode"
51039
+ scout_compute_resolved_api_DurationFilterRangesNode.__module__ = "nominal_api.scout_compute_resolved_api"
51040
+
51041
+
50868
51042
  class scout_compute_resolved_api_EnumCountDuplicateSeriesNode(ConjureBeanType):
50869
51043
 
50870
51044
  @builtins.classmethod
@@ -53544,6 +53718,7 @@ scout_compute_resolved_api_RangeMap.__module__ = "nominal_api.scout_compute_reso
53544
53718
 
53545
53719
 
53546
53720
  class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53721
+ _duration_filter: Optional["scout_compute_resolved_api_DurationFilterRangesNode"] = None
53547
53722
  _enum_equality: Optional["scout_compute_resolved_api_EnumEqualityRangesNode"] = None
53548
53723
  _enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None
53549
53724
  _extrema: Optional["scout_compute_resolved_api_ExtremaRangesNode"] = None
@@ -53562,6 +53737,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53562
53737
  @builtins.classmethod
53563
53738
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
53564
53739
  return {
53740
+ 'duration_filter': ConjureFieldDefinition('durationFilter', scout_compute_resolved_api_DurationFilterRangesNode),
53565
53741
  'enum_equality': ConjureFieldDefinition('enumEquality', scout_compute_resolved_api_EnumEqualityRangesNode),
53566
53742
  'enum_filter': ConjureFieldDefinition('enumFilter', scout_compute_resolved_api_EnumFilterRangesNode),
53567
53743
  'extrema': ConjureFieldDefinition('extrema', scout_compute_resolved_api_ExtremaRangesNode),
@@ -53580,6 +53756,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53580
53756
 
53581
53757
  def __init__(
53582
53758
  self,
53759
+ duration_filter: Optional["scout_compute_resolved_api_DurationFilterRangesNode"] = None,
53583
53760
  enum_equality: Optional["scout_compute_resolved_api_EnumEqualityRangesNode"] = None,
53584
53761
  enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None,
53585
53762
  extrema: Optional["scout_compute_resolved_api_ExtremaRangesNode"] = None,
@@ -53597,9 +53774,12 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53597
53774
  type_of_union: Optional[str] = None
53598
53775
  ) -> None:
53599
53776
  if type_of_union is None:
53600
- if (enum_equality is not None) + (enum_filter is not None) + (extrema is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (range_numeric_aggregation is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (stability_detection is not None) + (threshold is not None) + (union_range is not None) != 1:
53777
+ if (duration_filter is not None) + (enum_equality is not None) + (enum_filter is not None) + (extrema is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (range_numeric_aggregation is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (stability_detection is not None) + (threshold is not None) + (union_range is not None) != 1:
53601
53778
  raise ValueError('a union must contain a single member')
53602
53779
 
53780
+ if duration_filter is not None:
53781
+ self._duration_filter = duration_filter
53782
+ self._type = 'durationFilter'
53603
53783
  if enum_equality is not None:
53604
53784
  self._enum_equality = enum_equality
53605
53785
  self._type = 'enumEquality'
@@ -53643,6 +53823,11 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53643
53823
  self._union_range = union_range
53644
53824
  self._type = 'unionRange'
53645
53825
 
53826
+ elif type_of_union == 'durationFilter':
53827
+ if duration_filter is None:
53828
+ raise ValueError('a union value must not be None')
53829
+ self._duration_filter = duration_filter
53830
+ self._type = 'durationFilter'
53646
53831
  elif type_of_union == 'enumEquality':
53647
53832
  if enum_equality is None:
53648
53833
  raise ValueError('a union value must not be None')
@@ -53714,6 +53899,10 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53714
53899
  self._union_range = union_range
53715
53900
  self._type = 'unionRange'
53716
53901
 
53902
+ @builtins.property
53903
+ def duration_filter(self) -> Optional["scout_compute_resolved_api_DurationFilterRangesNode"]:
53904
+ return self._duration_filter
53905
+
53717
53906
  @builtins.property
53718
53907
  def enum_equality(self) -> Optional["scout_compute_resolved_api_EnumEqualityRangesNode"]:
53719
53908
  return self._enum_equality
@@ -53773,6 +53962,8 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
53773
53962
  def accept(self, visitor) -> Any:
53774
53963
  if not isinstance(visitor, scout_compute_resolved_api_RangesNodeVisitor):
53775
53964
  raise ValueError('{} is not an instance of scout_compute_resolved_api_RangesNodeVisitor'.format(visitor.__class__.__name__))
53965
+ if self._type == 'durationFilter' and self.duration_filter is not None:
53966
+ return visitor._duration_filter(self.duration_filter)
53776
53967
  if self._type == 'enumEquality' and self.enum_equality is not None:
53777
53968
  return visitor._enum_equality(self.enum_equality)
53778
53969
  if self._type == 'enumFilter' and self.enum_filter is not None:
@@ -53810,6 +54001,10 @@ scout_compute_resolved_api_RangesNode.__module__ = "nominal_api.scout_compute_re
53810
54001
 
53811
54002
  class scout_compute_resolved_api_RangesNodeVisitor:
53812
54003
 
54004
+ @abstractmethod
54005
+ def _duration_filter(self, duration_filter: "scout_compute_resolved_api_DurationFilterRangesNode") -> Any:
54006
+ pass
54007
+
53813
54008
  @abstractmethod
53814
54009
  def _enum_equality(self, enum_equality: "scout_compute_resolved_api_EnumEqualityRangesNode") -> Any:
53815
54010
  pass
@@ -77198,6 +77393,163 @@ storage_writer_api_ArrayPointsVisitor.__qualname__ = "ArrayPointsVisitor"
77198
77393
  storage_writer_api_ArrayPointsVisitor.__module__ = "nominal_api.storage_writer_api"
77199
77394
 
77200
77395
 
77396
+ class storage_writer_api_ColumnBatch(ConjureBeanType):
77397
+ """
77398
+ Batch of data to stream for a single channel with their associated timestamps.
77399
+ """
77400
+
77401
+ @builtins.classmethod
77402
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
77403
+ return {
77404
+ 'channel': ConjureFieldDefinition('channel', api_Channel),
77405
+ 'tags': ConjureFieldDefinition('tags', Dict[api_TagName, api_TagValue]),
77406
+ 'timestamps': ConjureFieldDefinition('timestamps', List[api_Timestamp]),
77407
+ 'values': ConjureFieldDefinition('values', storage_writer_api_ColumnValues)
77408
+ }
77409
+
77410
+ __slots__: List[str] = ['_channel', '_tags', '_timestamps', '_values']
77411
+
77412
+ def __init__(self, channel: str, tags: Dict[str, str], timestamps: List["api_Timestamp"], values: "storage_writer_api_ColumnValues") -> None:
77413
+ self._channel = channel
77414
+ self._tags = tags
77415
+ self._timestamps = timestamps
77416
+ self._values = values
77417
+
77418
+ @builtins.property
77419
+ def channel(self) -> str:
77420
+ """
77421
+ Channel within nominal to stream data to.
77422
+ """
77423
+ return self._channel
77424
+
77425
+ @builtins.property
77426
+ def tags(self) -> Dict[str, str]:
77427
+ """
77428
+ Mapping of key-value pairs to provide as tags to all points within the batch
77429
+ """
77430
+ return self._tags
77431
+
77432
+ @builtins.property
77433
+ def timestamps(self) -> List["api_Timestamp"]:
77434
+ """
77435
+ List of timestamp values that correspond to the provided list of column values. The number of timestamps
77436
+ provided MUST match the number of columnar values provided, otherwise a 400 error will be returned.
77437
+ """
77438
+ return self._timestamps
77439
+
77440
+ @builtins.property
77441
+ def values(self) -> "storage_writer_api_ColumnValues":
77442
+ """
77443
+ List of timeseries values that should be ingested to a single channel. The number of columnar values
77444
+ provided MUST match the number of timestamps provided, otherwise a 400 error will be returned.
77445
+ """
77446
+ return self._values
77447
+
77448
+
77449
+ storage_writer_api_ColumnBatch.__name__ = "ColumnBatch"
77450
+ storage_writer_api_ColumnBatch.__qualname__ = "ColumnBatch"
77451
+ storage_writer_api_ColumnBatch.__module__ = "nominal_api.storage_writer_api"
77452
+
77453
+
77454
+ class storage_writer_api_ColumnValues(ConjureUnionType):
77455
+ """List of values that correspond to subsequent values to ingest from a single channel."""
77456
+ _strings: Optional[List[str]] = None
77457
+ _doubles: Optional[List[float]] = None
77458
+ _ints: Optional[List[int]] = None
77459
+
77460
+ @builtins.classmethod
77461
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
77462
+ return {
77463
+ 'strings': ConjureFieldDefinition('strings', List[str]),
77464
+ 'doubles': ConjureFieldDefinition('doubles', List[float]),
77465
+ 'ints': ConjureFieldDefinition('ints', List[int])
77466
+ }
77467
+
77468
+ def __init__(
77469
+ self,
77470
+ strings: Optional[List[str]] = None,
77471
+ doubles: Optional[List[float]] = None,
77472
+ ints: Optional[List[int]] = None,
77473
+ type_of_union: Optional[str] = None
77474
+ ) -> None:
77475
+ if type_of_union is None:
77476
+ if (strings is not None) + (doubles is not None) + (ints is not None) != 1:
77477
+ raise ValueError('a union must contain a single member')
77478
+
77479
+ if strings is not None:
77480
+ self._strings = strings
77481
+ self._type = 'strings'
77482
+ if doubles is not None:
77483
+ self._doubles = doubles
77484
+ self._type = 'doubles'
77485
+ if ints is not None:
77486
+ self._ints = ints
77487
+ self._type = 'ints'
77488
+
77489
+ elif type_of_union == 'strings':
77490
+ if strings is None:
77491
+ raise ValueError('a union value must not be None')
77492
+ self._strings = strings
77493
+ self._type = 'strings'
77494
+ elif type_of_union == 'doubles':
77495
+ if doubles is None:
77496
+ raise ValueError('a union value must not be None')
77497
+ self._doubles = doubles
77498
+ self._type = 'doubles'
77499
+ elif type_of_union == 'ints':
77500
+ if ints is None:
77501
+ raise ValueError('a union value must not be None')
77502
+ self._ints = ints
77503
+ self._type = 'ints'
77504
+
77505
+ @builtins.property
77506
+ def strings(self) -> Optional[List[str]]:
77507
+ return self._strings
77508
+
77509
+ @builtins.property
77510
+ def doubles(self) -> Optional[List[float]]:
77511
+ return self._doubles
77512
+
77513
+ @builtins.property
77514
+ def ints(self) -> Optional[List[int]]:
77515
+ return self._ints
77516
+
77517
+ def accept(self, visitor) -> Any:
77518
+ if not isinstance(visitor, storage_writer_api_ColumnValuesVisitor):
77519
+ raise ValueError('{} is not an instance of storage_writer_api_ColumnValuesVisitor'.format(visitor.__class__.__name__))
77520
+ if self._type == 'strings' and self.strings is not None:
77521
+ return visitor._strings(self.strings)
77522
+ if self._type == 'doubles' and self.doubles is not None:
77523
+ return visitor._doubles(self.doubles)
77524
+ if self._type == 'ints' and self.ints is not None:
77525
+ return visitor._ints(self.ints)
77526
+
77527
+
77528
+ storage_writer_api_ColumnValues.__name__ = "ColumnValues"
77529
+ storage_writer_api_ColumnValues.__qualname__ = "ColumnValues"
77530
+ storage_writer_api_ColumnValues.__module__ = "nominal_api.storage_writer_api"
77531
+
77532
+
77533
+ class storage_writer_api_ColumnValuesVisitor:
77534
+
77535
+ @abstractmethod
77536
+ def _strings(self, strings: List[str]) -> Any:
77537
+ pass
77538
+
77539
+ @abstractmethod
77540
+ def _doubles(self, doubles: List[float]) -> Any:
77541
+ pass
77542
+
77543
+ @abstractmethod
77544
+ def _ints(self, ints: List[int]) -> Any:
77545
+ pass
77546
+
77547
+
77548
+ storage_writer_api_ColumnValuesVisitor.__name__ = "ColumnValuesVisitor"
77549
+ storage_writer_api_ColumnValuesVisitor.__qualname__ = "ColumnValuesVisitor"
77550
+ storage_writer_api_ColumnValuesVisitor.__module__ = "nominal_api.storage_writer_api"
77551
+
77552
+
77201
77553
  class storage_writer_api_DirectNominalChannelWriterService(Service):
77202
77554
  """
77203
77555
  Writes data points directly to Nominal's managed database offering.
@@ -77425,6 +77777,42 @@ class storage_writer_api_NominalChannelWriterService(Service):
77425
77777
 
77426
77778
  return
77427
77779
 
77780
+ def write_column_batches(self, auth_header: str, request: "storage_writer_api_WriteColumnBatchesRequest") -> None:
77781
+ """
77782
+ Synchronously writes batches of columns of data to a Nominal data source.
77783
+
77784
+ This is a column-major variant of writeBatches (which is row-major) to optimize serialization and compression
77785
+ time for client applications streaming large numbers of points from a single column at a time. This has the
77786
+ tradeoff of slightly larger sizes post-gzipping of requests, so should be used in the particular case where
77787
+ the main bottleneck is in encoding columnar data into the row-based format found in writeBatches.
77788
+ """
77789
+
77790
+ _headers: Dict[str, Any] = {
77791
+ 'Accept': 'application/json',
77792
+ 'Content-Type': 'application/json',
77793
+ 'Authorization': auth_header,
77794
+ }
77795
+
77796
+ _params: Dict[str, Any] = {
77797
+ }
77798
+
77799
+ _path_params: Dict[str, Any] = {
77800
+ }
77801
+
77802
+ _json: Any = ConjureEncoder().default(request)
77803
+
77804
+ _path = '/storage/writer/v1/columnar'
77805
+ _path = _path.format(**_path_params)
77806
+
77807
+ _response: Response = self._request(
77808
+ 'POST',
77809
+ self._uri + _path,
77810
+ params=_params,
77811
+ headers=_headers,
77812
+ json=_json)
77813
+
77814
+ return
77815
+
77428
77816
  def write_telegraf_batches(self, auth_header: str, data_source_rid: str, request: "storage_writer_api_WriteTelegrafBatchesRequest") -> None:
77429
77817
  """
77430
77818
  Synchronously writes batches of records to a Nominal data source.
@@ -78151,6 +78539,41 @@ storage_writer_api_WriteBatchesRequestExternal.__qualname__ = "WriteBatchesReque
78151
78539
  storage_writer_api_WriteBatchesRequestExternal.__module__ = "nominal_api.storage_writer_api"
78152
78540
 
78153
78541
 
78542
+ class storage_writer_api_WriteColumnBatchesRequest(ConjureBeanType):
78543
+
78544
+ @builtins.classmethod
78545
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78546
+ return {
78547
+ 'batches': ConjureFieldDefinition('batches', List[storage_writer_api_ColumnBatch]),
78548
+ 'data_source_rid': ConjureFieldDefinition('dataSourceRid', api_rids_NominalDataSourceOrDatasetRid)
78549
+ }
78550
+
78551
+ __slots__: List[str] = ['_batches', '_data_source_rid']
78552
+
78553
+ def __init__(self, batches: List["storage_writer_api_ColumnBatch"], data_source_rid: str) -> None:
78554
+ self._batches = batches
78555
+ self._data_source_rid = data_source_rid
78556
+
78557
+ @builtins.property
78558
+ def batches(self) -> List["storage_writer_api_ColumnBatch"]:
78559
+ """
78560
+ Batches of columnar data to stream to Nominal. Each channel's data are provided as a column batch.
78561
+ """
78562
+ return self._batches
78563
+
78564
+ @builtins.property
78565
+ def data_source_rid(self) -> str:
78566
+ """
78567
+ RID of the datasource (e.g., for a Connection) or dataset to stream data into.
78568
+ """
78569
+ return self._data_source_rid
78570
+
78571
+
78572
+ storage_writer_api_WriteColumnBatchesRequest.__name__ = "WriteColumnBatchesRequest"
78573
+ storage_writer_api_WriteColumnBatchesRequest.__qualname__ = "WriteColumnBatchesRequest"
78574
+ storage_writer_api_WriteColumnBatchesRequest.__module__ = "nominal_api.storage_writer_api"
78575
+
78576
+
78154
78577
  class storage_writer_api_WriteLogsRequest(ConjureBeanType):
78155
78578
 
78156
78579
  @builtins.classmethod
@@ -6,6 +6,8 @@ from .._impl import (
6
6
  persistent_compute_api_ComputeNodeAppendResponse as ComputeNodeAppendResponse,
7
7
  persistent_compute_api_ComputeNodeAppendResponseVisitor as ComputeNodeAppendResponseVisitor,
8
8
  persistent_compute_api_FullResult as FullResult,
9
+ persistent_compute_api_GroupedComputeNodeAppendResponse as GroupedComputeNodeAppendResponse,
10
+ persistent_compute_api_GroupedComputeNodeAppendResponses as GroupedComputeNodeAppendResponses,
9
11
  persistent_compute_api_HealthMessage as HealthMessage,
10
12
  persistent_compute_api_HealthMessageVisitor as HealthMessageVisitor,
11
13
  persistent_compute_api_InvalidComputationType as InvalidComputationType,
@@ -86,6 +86,7 @@ from .._impl import (
86
86
  scout_compute_api_DriverSeries3d as DriverSeries3d,
87
87
  scout_compute_api_DurationConstant as DurationConstant,
88
88
  scout_compute_api_DurationConstantVisitor as DurationConstantVisitor,
89
+ scout_compute_api_DurationFilterRanges as DurationFilterRanges,
89
90
  scout_compute_api_EnumAggregationFunction as EnumAggregationFunction,
90
91
  scout_compute_api_EnumBucket as EnumBucket,
91
92
  scout_compute_api_EnumCountDuplicateSeries as EnumCountDuplicateSeries,
@@ -24,6 +24,7 @@ from .._impl import (
24
24
  scout_compute_resolved_api_CurveFitPlotTypeNode as CurveFitPlotTypeNode,
25
25
  scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor as CurveFitPlotTypeNodeVisitor,
26
26
  scout_compute_resolved_api_DerivativeSeriesNode as DerivativeSeriesNode,
27
+ scout_compute_resolved_api_DurationFilterRangesNode as DurationFilterRangesNode,
27
28
  scout_compute_resolved_api_EnumCountDuplicateSeriesNode as EnumCountDuplicateSeriesNode,
28
29
  scout_compute_resolved_api_EnumEqualityRangesNode as EnumEqualityRangesNode,
29
30
  scout_compute_resolved_api_EnumFilterRangesNode as EnumFilterRangesNode,
@@ -2,6 +2,9 @@
2
2
  from .._impl import (
3
3
  storage_writer_api_ArrayPoints as ArrayPoints,
4
4
  storage_writer_api_ArrayPointsVisitor as ArrayPointsVisitor,
5
+ storage_writer_api_ColumnBatch as ColumnBatch,
6
+ storage_writer_api_ColumnValues as ColumnValues,
7
+ storage_writer_api_ColumnValuesVisitor as ColumnValuesVisitor,
5
8
  storage_writer_api_DirectNominalChannelWriterService as DirectNominalChannelWriterService,
6
9
  storage_writer_api_DoubleArrayPoint as DoubleArrayPoint,
7
10
  storage_writer_api_DoublePoint as DoublePoint,
@@ -22,6 +25,7 @@ from .._impl import (
22
25
  storage_writer_api_TelegrafMetric as TelegrafMetric,
23
26
  storage_writer_api_WriteBatchesRequest as WriteBatchesRequest,
24
27
  storage_writer_api_WriteBatchesRequestExternal as WriteBatchesRequestExternal,
28
+ storage_writer_api_WriteColumnBatchesRequest as WriteColumnBatchesRequest,
25
29
  storage_writer_api_WriteLogsRequest as WriteLogsRequest,
26
30
  storage_writer_api_WriteTelegrafBatchesRequest as WriteTelegrafBatchesRequest,
27
31
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.702.0
3
+ Version: 0.704.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.702.0',
9
+ version='0.704.0',
10
10
  python_requires='>=3.8',
11
11
  package_data={"": ["py.typed"]},
12
12
  packages=find_packages(),
File without changes