nominal-api 0.634.0__py3-none-any.whl → 0.637.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.
nominal_api/_impl.py CHANGED
@@ -11494,17 +11494,19 @@ class ingest_workflow_api_EnsureExtractorJobCreatedRequest(ConjureBeanType):
11494
11494
  'ingest_job_uuid': ConjureFieldDefinition('ingestJobUuid', str),
11495
11495
  'containerized_extractor': ConjureFieldDefinition('containerizedExtractor', ingest_api_ContainerizedExtractor),
11496
11496
  'source_handles': ConjureFieldDefinition('sourceHandles', Dict[str, scout_catalog_S3Handle]),
11497
- 'multipart_upload_details': ConjureFieldDefinition('multipartUploadDetails', ingest_workflow_api_MultipartUploadDetails)
11497
+ 'multipart_upload_details': ConjureFieldDefinition('multipartUploadDetails', ingest_workflow_api_MultipartUploadDetails),
11498
+ 'image_pull_secret_name': ConjureFieldDefinition('imagePullSecretName', OptionalTypeWrapper[str])
11498
11499
  }
11499
11500
 
11500
- __slots__: List[str] = ['_workspace_rid', '_ingest_job_uuid', '_containerized_extractor', '_source_handles', '_multipart_upload_details']
11501
+ __slots__: List[str] = ['_workspace_rid', '_ingest_job_uuid', '_containerized_extractor', '_source_handles', '_multipart_upload_details', '_image_pull_secret_name']
11501
11502
 
11502
- def __init__(self, containerized_extractor: "ingest_api_ContainerizedExtractor", ingest_job_uuid: str, multipart_upload_details: "ingest_workflow_api_MultipartUploadDetails", source_handles: Dict[str, "scout_catalog_S3Handle"], workspace_rid: str) -> None:
11503
+ def __init__(self, containerized_extractor: "ingest_api_ContainerizedExtractor", ingest_job_uuid: str, multipart_upload_details: "ingest_workflow_api_MultipartUploadDetails", source_handles: Dict[str, "scout_catalog_S3Handle"], workspace_rid: str, image_pull_secret_name: Optional[str] = None) -> None:
11503
11504
  self._workspace_rid = workspace_rid
11504
11505
  self._ingest_job_uuid = ingest_job_uuid
11505
11506
  self._containerized_extractor = containerized_extractor
11506
11507
  self._source_handles = source_handles
11507
11508
  self._multipart_upload_details = multipart_upload_details
11509
+ self._image_pull_secret_name = image_pull_secret_name
11508
11510
 
11509
11511
  @builtins.property
11510
11512
  def workspace_rid(self) -> str:
@@ -11526,6 +11528,13 @@ class ingest_workflow_api_EnsureExtractorJobCreatedRequest(ConjureBeanType):
11526
11528
  def multipart_upload_details(self) -> "ingest_workflow_api_MultipartUploadDetails":
11527
11529
  return self._multipart_upload_details
11528
11530
 
11531
+ @builtins.property
11532
+ def image_pull_secret_name(self) -> Optional[str]:
11533
+ """
11534
+ Name of the Kubernetes secret to use for pulling the image, if authentication is required.
11535
+ """
11536
+ return self._image_pull_secret_name
11537
+
11529
11538
 
11530
11539
  ingest_workflow_api_EnsureExtractorJobCreatedRequest.__name__ = "EnsureExtractorJobCreatedRequest"
11531
11540
  ingest_workflow_api_EnsureExtractorJobCreatedRequest.__qualname__ = "EnsureExtractorJobCreatedRequest"
@@ -11548,6 +11557,80 @@ ingest_workflow_api_EnsureExtractorJobCreatedResponse.__qualname__ = "EnsureExtr
11548
11557
  ingest_workflow_api_EnsureExtractorJobCreatedResponse.__module__ = "nominal_api.ingest_workflow_api"
11549
11558
 
11550
11559
 
11560
+ class ingest_workflow_api_EnsureImagePullSecretCreatedRequest(ConjureBeanType):
11561
+ """
11562
+ Ensures a Kubernetes secret of type kubernetes.io/dockerconfigjson exists
11563
+ for the given registry credentials.
11564
+ """
11565
+
11566
+ @builtins.classmethod
11567
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
11568
+ return {
11569
+ 'workspace_rid': ConjureFieldDefinition('workspaceRid', api_rids_WorkspaceRid),
11570
+ 'image_source': ConjureFieldDefinition('imageSource', ingest_api_DockerImageSource),
11571
+ 'authentication': ConjureFieldDefinition('authentication', ingest_api_UserAndPasswordAuthentication),
11572
+ 'ingest_job_uuid': ConjureFieldDefinition('ingestJobUuid', str),
11573
+ 'bearer_token': ConjureFieldDefinition('bearerToken', str)
11574
+ }
11575
+
11576
+ __slots__: List[str] = ['_workspace_rid', '_image_source', '_authentication', '_ingest_job_uuid', '_bearer_token']
11577
+
11578
+ def __init__(self, authentication: "ingest_api_UserAndPasswordAuthentication", bearer_token: str, image_source: "ingest_api_DockerImageSource", ingest_job_uuid: str, workspace_rid: str) -> None:
11579
+ self._workspace_rid = workspace_rid
11580
+ self._image_source = image_source
11581
+ self._authentication = authentication
11582
+ self._ingest_job_uuid = ingest_job_uuid
11583
+ self._bearer_token = bearer_token
11584
+
11585
+ @builtins.property
11586
+ def workspace_rid(self) -> str:
11587
+ return self._workspace_rid
11588
+
11589
+ @builtins.property
11590
+ def image_source(self) -> "ingest_api_DockerImageSource":
11591
+ return self._image_source
11592
+
11593
+ @builtins.property
11594
+ def authentication(self) -> "ingest_api_UserAndPasswordAuthentication":
11595
+ return self._authentication
11596
+
11597
+ @builtins.property
11598
+ def ingest_job_uuid(self) -> str:
11599
+ return self._ingest_job_uuid
11600
+
11601
+ @builtins.property
11602
+ def bearer_token(self) -> str:
11603
+ return self._bearer_token
11604
+
11605
+
11606
+ ingest_workflow_api_EnsureImagePullSecretCreatedRequest.__name__ = "EnsureImagePullSecretCreatedRequest"
11607
+ ingest_workflow_api_EnsureImagePullSecretCreatedRequest.__qualname__ = "EnsureImagePullSecretCreatedRequest"
11608
+ ingest_workflow_api_EnsureImagePullSecretCreatedRequest.__module__ = "nominal_api.ingest_workflow_api"
11609
+
11610
+
11611
+ class ingest_workflow_api_EnsureImagePullSecretCreatedResponse(ConjureBeanType):
11612
+
11613
+ @builtins.classmethod
11614
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
11615
+ return {
11616
+ 'secret_name': ConjureFieldDefinition('secretName', str)
11617
+ }
11618
+
11619
+ __slots__: List[str] = ['_secret_name']
11620
+
11621
+ def __init__(self, secret_name: str) -> None:
11622
+ self._secret_name = secret_name
11623
+
11624
+ @builtins.property
11625
+ def secret_name(self) -> str:
11626
+ return self._secret_name
11627
+
11628
+
11629
+ ingest_workflow_api_EnsureImagePullSecretCreatedResponse.__name__ = "EnsureImagePullSecretCreatedResponse"
11630
+ ingest_workflow_api_EnsureImagePullSecretCreatedResponse.__qualname__ = "EnsureImagePullSecretCreatedResponse"
11631
+ ingest_workflow_api_EnsureImagePullSecretCreatedResponse.__module__ = "nominal_api.ingest_workflow_api"
11632
+
11633
+
11551
11634
  class ingest_workflow_api_EnsureWorkspaceNamespaceCreatedRequest(ConjureBeanType):
11552
11635
  """
11553
11636
  For a given workspace rid, ensures that there is a corresponding K8s namespace created.
@@ -12655,7 +12738,9 @@ class persistent_compute_api_ShutdownNotice(ConjureBeanType):
12655
12738
  Indicates that the websocket will shut down in the near future. Until it is, SubscriptionUpdates will
12656
12739
  still be sent to the client. Clients that want to avoid downtime or latency spikes should initiate a new
12657
12740
  websocket and recreate all their subscriptions there but still keep this websocket open until the new
12658
- websockets starts sending SubscriptionUpdates.
12741
+ websockets starts sending SubscriptionUpdates. Clients should also specify
12742
+ `SubscriptionOptions::allowGracefulWarmUp` when creating the new subscriptions, which allows the new websocket
12743
+ to warm up before sending subscription updates, guaranteeing better performance.
12659
12744
  """
12660
12745
 
12661
12746
  @builtins.classmethod
@@ -12908,14 +12993,16 @@ class persistent_compute_api_SubscriptionOptions(ConjureBeanType):
12908
12993
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
12909
12994
  return {
12910
12995
  'min_delay': ConjureFieldDefinition('minDelay', persistent_compute_api_Milliseconds),
12911
- 'allow_appends': ConjureFieldDefinition('allowAppends', OptionalTypeWrapper[bool])
12996
+ 'allow_appends': ConjureFieldDefinition('allowAppends', OptionalTypeWrapper[bool]),
12997
+ 'allow_graceful_warm_up': ConjureFieldDefinition('allowGracefulWarmUp', OptionalTypeWrapper[bool])
12912
12998
  }
12913
12999
 
12914
- __slots__: List[str] = ['_min_delay', '_allow_appends']
13000
+ __slots__: List[str] = ['_min_delay', '_allow_appends', '_allow_graceful_warm_up']
12915
13001
 
12916
- def __init__(self, min_delay: int, allow_appends: Optional[bool] = None) -> None:
13002
+ def __init__(self, min_delay: int, allow_appends: Optional[bool] = None, allow_graceful_warm_up: Optional[bool] = None) -> None:
12917
13003
  self._min_delay = min_delay
12918
13004
  self._allow_appends = allow_appends
13005
+ self._allow_graceful_warm_up = allow_graceful_warm_up
12919
13006
 
12920
13007
  @builtins.property
12921
13008
  def min_delay(self) -> int:
@@ -12937,6 +13024,15 @@ implement support.
12937
13024
  """
12938
13025
  return self._allow_appends
12939
13026
 
13027
+ @builtins.property
13028
+ def allow_graceful_warm_up(self) -> Optional[bool]:
13029
+ """
13030
+ If true, the subscriptions will be allowed to warm up before sending results, in order to guarantee low
13031
+ latency. This should be set when doing a graceful switch based on a
13032
+ `ServerMessage::HealthMessage::ShutdownNotice`. Defaults to `false`.
13033
+ """
13034
+ return self._allow_graceful_warm_up
13035
+
12940
13036
 
12941
13037
  persistent_compute_api_SubscriptionOptions.__name__ = "SubscriptionOptions"
12942
13038
  persistent_compute_api_SubscriptionOptions.__qualname__ = "SubscriptionOptions"
@@ -33429,6 +33525,7 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33429
33525
  _frequency: Optional["scout_compute_api_FrequencyDomain"] = None
33430
33526
  _histogram: Optional["scout_compute_api_Histogram"] = None
33431
33527
  _geo: Optional["scout_compute_api_SummarizeGeo"] = None
33528
+ _curve: Optional["scout_compute_api_CurveFit"] = None
33432
33529
 
33433
33530
  @builtins.classmethod
33434
33531
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -33440,7 +33537,8 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33440
33537
  'cartesian3d': ConjureFieldDefinition('cartesian3d', scout_compute_api_SummarizeCartesian3d),
33441
33538
  'frequency': ConjureFieldDefinition('frequency', scout_compute_api_FrequencyDomain),
33442
33539
  'histogram': ConjureFieldDefinition('histogram', scout_compute_api_Histogram),
33443
- 'geo': ConjureFieldDefinition('geo', scout_compute_api_SummarizeGeo)
33540
+ 'geo': ConjureFieldDefinition('geo', scout_compute_api_SummarizeGeo),
33541
+ 'curve': ConjureFieldDefinition('curve', scout_compute_api_CurveFit)
33444
33542
  }
33445
33543
 
33446
33544
  def __init__(
@@ -33453,10 +33551,11 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33453
33551
  frequency: Optional["scout_compute_api_FrequencyDomain"] = None,
33454
33552
  histogram: Optional["scout_compute_api_Histogram"] = None,
33455
33553
  geo: Optional["scout_compute_api_SummarizeGeo"] = None,
33554
+ curve: Optional["scout_compute_api_CurveFit"] = None,
33456
33555
  type_of_union: Optional[str] = None
33457
33556
  ) -> None:
33458
33557
  if type_of_union is None:
33459
- if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (histogram is not None) + (geo is not None) != 1:
33558
+ if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (histogram is not None) + (geo is not None) + (curve is not None) != 1:
33460
33559
  raise ValueError('a union must contain a single member')
33461
33560
 
33462
33561
  if ranges is not None:
@@ -33483,6 +33582,9 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33483
33582
  if geo is not None:
33484
33583
  self._geo = geo
33485
33584
  self._type = 'geo'
33585
+ if curve is not None:
33586
+ self._curve = curve
33587
+ self._type = 'curve'
33486
33588
 
33487
33589
  elif type_of_union == 'ranges':
33488
33590
  if ranges is None:
@@ -33524,6 +33626,11 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33524
33626
  raise ValueError('a union value must not be None')
33525
33627
  self._geo = geo
33526
33628
  self._type = 'geo'
33629
+ elif type_of_union == 'curve':
33630
+ if curve is None:
33631
+ raise ValueError('a union value must not be None')
33632
+ self._curve = curve
33633
+ self._type = 'curve'
33527
33634
 
33528
33635
  @builtins.property
33529
33636
  def ranges(self) -> Optional["scout_compute_api_SummarizeRanges"]:
@@ -33557,6 +33664,10 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33557
33664
  def geo(self) -> Optional["scout_compute_api_SummarizeGeo"]:
33558
33665
  return self._geo
33559
33666
 
33667
+ @builtins.property
33668
+ def curve(self) -> Optional["scout_compute_api_CurveFit"]:
33669
+ return self._curve
33670
+
33560
33671
  def accept(self, visitor) -> Any:
33561
33672
  if not isinstance(visitor, scout_compute_api_ComputableNodeVisitor):
33562
33673
  raise ValueError('{} is not an instance of scout_compute_api_ComputableNodeVisitor'.format(visitor.__class__.__name__))
@@ -33576,6 +33687,8 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33576
33687
  return visitor._histogram(self.histogram)
33577
33688
  if self._type == 'geo' and self.geo is not None:
33578
33689
  return visitor._geo(self.geo)
33690
+ if self._type == 'curve' and self.curve is not None:
33691
+ return visitor._curve(self.curve)
33579
33692
 
33580
33693
 
33581
33694
  scout_compute_api_ComputableNode.__name__ = "ComputableNode"
@@ -33617,6 +33730,10 @@ class scout_compute_api_ComputableNodeVisitor:
33617
33730
  def _geo(self, geo: "scout_compute_api_SummarizeGeo") -> Any:
33618
33731
  pass
33619
33732
 
33733
+ @abstractmethod
33734
+ def _curve(self, curve: "scout_compute_api_CurveFit") -> Any:
33735
+ pass
33736
+
33620
33737
 
33621
33738
  scout_compute_api_ComputableNodeVisitor.__name__ = "ComputableNodeVisitor"
33622
33739
  scout_compute_api_ComputableNodeVisitor.__qualname__ = "ComputableNodeVisitor"
@@ -33864,6 +33981,7 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33864
33981
  _frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None
33865
33982
  _numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None
33866
33983
  _enum_histogram: Optional["scout_compute_api_EnumHistogramPlot"] = None
33984
+ _curve_fit: Optional["scout_compute_api_CurveFitResult"] = None
33867
33985
 
33868
33986
  @builtins.classmethod
33869
33987
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -33885,7 +34003,8 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33885
34003
  'range_value': ConjureFieldDefinition('rangeValue', OptionalTypeWrapper[scout_compute_api_Range]),
33886
34004
  'frequency_domain': ConjureFieldDefinition('frequencyDomain', scout_compute_api_FrequencyDomainPlot),
33887
34005
  'numeric_histogram': ConjureFieldDefinition('numericHistogram', scout_compute_api_NumericHistogramPlot),
33888
- 'enum_histogram': ConjureFieldDefinition('enumHistogram', scout_compute_api_EnumHistogramPlot)
34006
+ 'enum_histogram': ConjureFieldDefinition('enumHistogram', scout_compute_api_EnumHistogramPlot),
34007
+ 'curve_fit': ConjureFieldDefinition('curveFit', scout_compute_api_CurveFitResult)
33889
34008
  }
33890
34009
 
33891
34010
  def __init__(
@@ -33908,10 +34027,11 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33908
34027
  frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None,
33909
34028
  numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None,
33910
34029
  enum_histogram: Optional["scout_compute_api_EnumHistogramPlot"] = None,
34030
+ curve_fit: Optional["scout_compute_api_CurveFitResult"] = None,
33911
34031
  type_of_union: Optional[str] = None
33912
34032
  ) -> None:
33913
34033
  if type_of_union is None:
33914
- if (numeric is not None) + (bucketed_numeric is not None) + (range is not None) + (ranges_summary is not None) + (enum is not None) + (paged_log is not None) + (bucketed_enum is not None) + (cartesian is not None) + (bucketed_cartesian is not None) + (bucketed_cartesian3d is not None) + (bucketed_geo is not None) + (enum_point is not None) + (numeric_point is not None) + (log_point is not None) + (range_value is not None) + (frequency_domain is not None) + (numeric_histogram is not None) + (enum_histogram is not None) != 1:
34034
+ if (numeric is not None) + (bucketed_numeric is not None) + (range is not None) + (ranges_summary is not None) + (enum is not None) + (paged_log is not None) + (bucketed_enum is not None) + (cartesian is not None) + (bucketed_cartesian is not None) + (bucketed_cartesian3d is not None) + (bucketed_geo is not None) + (enum_point is not None) + (numeric_point is not None) + (log_point is not None) + (range_value is not None) + (frequency_domain is not None) + (numeric_histogram is not None) + (enum_histogram is not None) + (curve_fit is not None) != 1:
33915
34035
  raise ValueError('a union must contain a single member')
33916
34036
 
33917
34037
  if numeric is not None:
@@ -33968,6 +34088,9 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33968
34088
  if enum_histogram is not None:
33969
34089
  self._enum_histogram = enum_histogram
33970
34090
  self._type = 'enumHistogram'
34091
+ if curve_fit is not None:
34092
+ self._curve_fit = curve_fit
34093
+ self._type = 'curveFit'
33971
34094
 
33972
34095
  elif type_of_union == 'numeric':
33973
34096
  if numeric is None:
@@ -34059,6 +34182,11 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34059
34182
  raise ValueError('a union value must not be None')
34060
34183
  self._enum_histogram = enum_histogram
34061
34184
  self._type = 'enumHistogram'
34185
+ elif type_of_union == 'curveFit':
34186
+ if curve_fit is None:
34187
+ raise ValueError('a union value must not be None')
34188
+ self._curve_fit = curve_fit
34189
+ self._type = 'curveFit'
34062
34190
 
34063
34191
  @builtins.property
34064
34192
  def numeric(self) -> Optional["scout_compute_api_NumericPlot"]:
@@ -34132,6 +34260,10 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34132
34260
  def enum_histogram(self) -> Optional["scout_compute_api_EnumHistogramPlot"]:
34133
34261
  return self._enum_histogram
34134
34262
 
34263
+ @builtins.property
34264
+ def curve_fit(self) -> Optional["scout_compute_api_CurveFitResult"]:
34265
+ return self._curve_fit
34266
+
34135
34267
  def accept(self, visitor) -> Any:
34136
34268
  if not isinstance(visitor, scout_compute_api_ComputeNodeResponseVisitor):
34137
34269
  raise ValueError('{} is not an instance of scout_compute_api_ComputeNodeResponseVisitor'.format(visitor.__class__.__name__))
@@ -34171,6 +34303,8 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34171
34303
  return visitor._numeric_histogram(self.numeric_histogram)
34172
34304
  if self._type == 'enumHistogram' and self.enum_histogram is not None:
34173
34305
  return visitor._enum_histogram(self.enum_histogram)
34306
+ if self._type == 'curveFit' and self.curve_fit is not None:
34307
+ return visitor._curve_fit(self.curve_fit)
34174
34308
 
34175
34309
 
34176
34310
  scout_compute_api_ComputeNodeResponse.__name__ = "ComputeNodeResponse"
@@ -34252,6 +34386,10 @@ class scout_compute_api_ComputeNodeResponseVisitor:
34252
34386
  def _enum_histogram(self, enum_histogram: "scout_compute_api_EnumHistogramPlot") -> Any:
34253
34387
  pass
34254
34388
 
34389
+ @abstractmethod
34390
+ def _curve_fit(self, curve_fit: "scout_compute_api_CurveFitResult") -> Any:
34391
+ pass
34392
+
34255
34393
 
34256
34394
  scout_compute_api_ComputeNodeResponseVisitor.__name__ = "ComputeNodeResponseVisitor"
34257
34395
  scout_compute_api_ComputeNodeResponseVisitor.__qualname__ = "ComputeNodeResponseVisitor"
@@ -34850,6 +34988,408 @@ scout_compute_api_CumulativeSumSeries.__qualname__ = "CumulativeSumSeries"
34850
34988
  scout_compute_api_CumulativeSumSeries.__module__ = "nominal_api.scout_compute_api"
34851
34989
 
34852
34990
 
34991
+ class scout_compute_api_CurveFit(ConjureBeanType):
34992
+
34993
+ @builtins.classmethod
34994
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
34995
+ return {
34996
+ 'curve_fit_plot_type': ConjureFieldDefinition('curveFitPlotType', scout_compute_api_CurveFitPlotType),
34997
+ 'curve_fit_details': ConjureFieldDefinition('curveFitDetails', scout_compute_api_CurveFitDetails),
34998
+ 'curve_fit_options': ConjureFieldDefinition('curveFitOptions', scout_compute_api_CurveFitOptions)
34999
+ }
35000
+
35001
+ __slots__: List[str] = ['_curve_fit_plot_type', '_curve_fit_details', '_curve_fit_options']
35002
+
35003
+ def __init__(self, curve_fit_details: "scout_compute_api_CurveFitDetails", curve_fit_options: "scout_compute_api_CurveFitOptions", curve_fit_plot_type: "scout_compute_api_CurveFitPlotType") -> None:
35004
+ self._curve_fit_plot_type = curve_fit_plot_type
35005
+ self._curve_fit_details = curve_fit_details
35006
+ self._curve_fit_options = curve_fit_options
35007
+
35008
+ @builtins.property
35009
+ def curve_fit_plot_type(self) -> "scout_compute_api_CurveFitPlotType":
35010
+ return self._curve_fit_plot_type
35011
+
35012
+ @builtins.property
35013
+ def curve_fit_details(self) -> "scout_compute_api_CurveFitDetails":
35014
+ return self._curve_fit_details
35015
+
35016
+ @builtins.property
35017
+ def curve_fit_options(self) -> "scout_compute_api_CurveFitOptions":
35018
+ return self._curve_fit_options
35019
+
35020
+
35021
+ scout_compute_api_CurveFit.__name__ = "CurveFit"
35022
+ scout_compute_api_CurveFit.__qualname__ = "CurveFit"
35023
+ scout_compute_api_CurveFit.__module__ = "nominal_api.scout_compute_api"
35024
+
35025
+
35026
+ class scout_compute_api_CurveFitDetails(ConjureUnionType):
35027
+ _exponential: Optional["scout_compute_api_ExponentialCurve"] = None
35028
+ _logarithmic: Optional["scout_compute_api_LogarithmicCurve"] = None
35029
+ _polynomial: Optional["scout_compute_api_PolynomialCurve"] = None
35030
+ _power: Optional["scout_compute_api_PowerCurve"] = None
35031
+
35032
+ @builtins.classmethod
35033
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
35034
+ return {
35035
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_api_ExponentialCurve),
35036
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_api_LogarithmicCurve),
35037
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_api_PolynomialCurve),
35038
+ 'power': ConjureFieldDefinition('power', scout_compute_api_PowerCurve)
35039
+ }
35040
+
35041
+ def __init__(
35042
+ self,
35043
+ exponential: Optional["scout_compute_api_ExponentialCurve"] = None,
35044
+ logarithmic: Optional["scout_compute_api_LogarithmicCurve"] = None,
35045
+ polynomial: Optional["scout_compute_api_PolynomialCurve"] = None,
35046
+ power: Optional["scout_compute_api_PowerCurve"] = None,
35047
+ type_of_union: Optional[str] = None
35048
+ ) -> None:
35049
+ if type_of_union is None:
35050
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
35051
+ raise ValueError('a union must contain a single member')
35052
+
35053
+ if exponential is not None:
35054
+ self._exponential = exponential
35055
+ self._type = 'exponential'
35056
+ if logarithmic is not None:
35057
+ self._logarithmic = logarithmic
35058
+ self._type = 'logarithmic'
35059
+ if polynomial is not None:
35060
+ self._polynomial = polynomial
35061
+ self._type = 'polynomial'
35062
+ if power is not None:
35063
+ self._power = power
35064
+ self._type = 'power'
35065
+
35066
+ elif type_of_union == 'exponential':
35067
+ if exponential is None:
35068
+ raise ValueError('a union value must not be None')
35069
+ self._exponential = exponential
35070
+ self._type = 'exponential'
35071
+ elif type_of_union == 'logarithmic':
35072
+ if logarithmic is None:
35073
+ raise ValueError('a union value must not be None')
35074
+ self._logarithmic = logarithmic
35075
+ self._type = 'logarithmic'
35076
+ elif type_of_union == 'polynomial':
35077
+ if polynomial is None:
35078
+ raise ValueError('a union value must not be None')
35079
+ self._polynomial = polynomial
35080
+ self._type = 'polynomial'
35081
+ elif type_of_union == 'power':
35082
+ if power is None:
35083
+ raise ValueError('a union value must not be None')
35084
+ self._power = power
35085
+ self._type = 'power'
35086
+
35087
+ @builtins.property
35088
+ def exponential(self) -> Optional["scout_compute_api_ExponentialCurve"]:
35089
+ return self._exponential
35090
+
35091
+ @builtins.property
35092
+ def logarithmic(self) -> Optional["scout_compute_api_LogarithmicCurve"]:
35093
+ return self._logarithmic
35094
+
35095
+ @builtins.property
35096
+ def polynomial(self) -> Optional["scout_compute_api_PolynomialCurve"]:
35097
+ return self._polynomial
35098
+
35099
+ @builtins.property
35100
+ def power(self) -> Optional["scout_compute_api_PowerCurve"]:
35101
+ return self._power
35102
+
35103
+ def accept(self, visitor) -> Any:
35104
+ if not isinstance(visitor, scout_compute_api_CurveFitDetailsVisitor):
35105
+ raise ValueError('{} is not an instance of scout_compute_api_CurveFitDetailsVisitor'.format(visitor.__class__.__name__))
35106
+ if self._type == 'exponential' and self.exponential is not None:
35107
+ return visitor._exponential(self.exponential)
35108
+ if self._type == 'logarithmic' and self.logarithmic is not None:
35109
+ return visitor._logarithmic(self.logarithmic)
35110
+ if self._type == 'polynomial' and self.polynomial is not None:
35111
+ return visitor._polynomial(self.polynomial)
35112
+ if self._type == 'power' and self.power is not None:
35113
+ return visitor._power(self.power)
35114
+
35115
+
35116
+ scout_compute_api_CurveFitDetails.__name__ = "CurveFitDetails"
35117
+ scout_compute_api_CurveFitDetails.__qualname__ = "CurveFitDetails"
35118
+ scout_compute_api_CurveFitDetails.__module__ = "nominal_api.scout_compute_api"
35119
+
35120
+
35121
+ class scout_compute_api_CurveFitDetailsVisitor:
35122
+
35123
+ @abstractmethod
35124
+ def _exponential(self, exponential: "scout_compute_api_ExponentialCurve") -> Any:
35125
+ pass
35126
+
35127
+ @abstractmethod
35128
+ def _logarithmic(self, logarithmic: "scout_compute_api_LogarithmicCurve") -> Any:
35129
+ pass
35130
+
35131
+ @abstractmethod
35132
+ def _polynomial(self, polynomial: "scout_compute_api_PolynomialCurve") -> Any:
35133
+ pass
35134
+
35135
+ @abstractmethod
35136
+ def _power(self, power: "scout_compute_api_PowerCurve") -> Any:
35137
+ pass
35138
+
35139
+
35140
+ scout_compute_api_CurveFitDetailsVisitor.__name__ = "CurveFitDetailsVisitor"
35141
+ scout_compute_api_CurveFitDetailsVisitor.__qualname__ = "CurveFitDetailsVisitor"
35142
+ scout_compute_api_CurveFitDetailsVisitor.__module__ = "nominal_api.scout_compute_api"
35143
+
35144
+
35145
+ class scout_compute_api_CurveFitOptions(ConjureBeanType):
35146
+
35147
+ @builtins.classmethod
35148
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
35149
+ return {
35150
+ }
35151
+
35152
+ __slots__: List[str] = []
35153
+
35154
+
35155
+
35156
+ scout_compute_api_CurveFitOptions.__name__ = "CurveFitOptions"
35157
+ scout_compute_api_CurveFitOptions.__qualname__ = "CurveFitOptions"
35158
+ scout_compute_api_CurveFitOptions.__module__ = "nominal_api.scout_compute_api"
35159
+
35160
+
35161
+ class scout_compute_api_CurveFitPlotType(ConjureUnionType):
35162
+ _time_series: Optional["scout_compute_api_TimeSeriesCurveFit"] = None
35163
+ _scatter: Optional["scout_compute_api_ScatterCurveFit"] = None
35164
+
35165
+ @builtins.classmethod
35166
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
35167
+ return {
35168
+ 'time_series': ConjureFieldDefinition('timeSeries', scout_compute_api_TimeSeriesCurveFit),
35169
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_api_ScatterCurveFit)
35170
+ }
35171
+
35172
+ def __init__(
35173
+ self,
35174
+ time_series: Optional["scout_compute_api_TimeSeriesCurveFit"] = None,
35175
+ scatter: Optional["scout_compute_api_ScatterCurveFit"] = None,
35176
+ type_of_union: Optional[str] = None
35177
+ ) -> None:
35178
+ if type_of_union is None:
35179
+ if (time_series is not None) + (scatter is not None) != 1:
35180
+ raise ValueError('a union must contain a single member')
35181
+
35182
+ if time_series is not None:
35183
+ self._time_series = time_series
35184
+ self._type = 'timeSeries'
35185
+ if scatter is not None:
35186
+ self._scatter = scatter
35187
+ self._type = 'scatter'
35188
+
35189
+ elif type_of_union == 'timeSeries':
35190
+ if time_series is None:
35191
+ raise ValueError('a union value must not be None')
35192
+ self._time_series = time_series
35193
+ self._type = 'timeSeries'
35194
+ elif type_of_union == 'scatter':
35195
+ if scatter is None:
35196
+ raise ValueError('a union value must not be None')
35197
+ self._scatter = scatter
35198
+ self._type = 'scatter'
35199
+
35200
+ @builtins.property
35201
+ def time_series(self) -> Optional["scout_compute_api_TimeSeriesCurveFit"]:
35202
+ return self._time_series
35203
+
35204
+ @builtins.property
35205
+ def scatter(self) -> Optional["scout_compute_api_ScatterCurveFit"]:
35206
+ return self._scatter
35207
+
35208
+ def accept(self, visitor) -> Any:
35209
+ if not isinstance(visitor, scout_compute_api_CurveFitPlotTypeVisitor):
35210
+ raise ValueError('{} is not an instance of scout_compute_api_CurveFitPlotTypeVisitor'.format(visitor.__class__.__name__))
35211
+ if self._type == 'timeSeries' and self.time_series is not None:
35212
+ return visitor._time_series(self.time_series)
35213
+ if self._type == 'scatter' and self.scatter is not None:
35214
+ return visitor._scatter(self.scatter)
35215
+
35216
+
35217
+ scout_compute_api_CurveFitPlotType.__name__ = "CurveFitPlotType"
35218
+ scout_compute_api_CurveFitPlotType.__qualname__ = "CurveFitPlotType"
35219
+ scout_compute_api_CurveFitPlotType.__module__ = "nominal_api.scout_compute_api"
35220
+
35221
+
35222
+ class scout_compute_api_CurveFitPlotTypeVisitor:
35223
+
35224
+ @abstractmethod
35225
+ def _time_series(self, time_series: "scout_compute_api_TimeSeriesCurveFit") -> Any:
35226
+ pass
35227
+
35228
+ @abstractmethod
35229
+ def _scatter(self, scatter: "scout_compute_api_ScatterCurveFit") -> Any:
35230
+ pass
35231
+
35232
+
35233
+ scout_compute_api_CurveFitPlotTypeVisitor.__name__ = "CurveFitPlotTypeVisitor"
35234
+ scout_compute_api_CurveFitPlotTypeVisitor.__qualname__ = "CurveFitPlotTypeVisitor"
35235
+ scout_compute_api_CurveFitPlotTypeVisitor.__module__ = "nominal_api.scout_compute_api"
35236
+
35237
+
35238
+ class scout_compute_api_CurveFitResult(ConjureBeanType):
35239
+
35240
+ @builtins.classmethod
35241
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
35242
+ return {
35243
+ 'r2': ConjureFieldDefinition('r2', float),
35244
+ 'curve_result_details': ConjureFieldDefinition('curveResultDetails', scout_compute_api_CurveResultDetails)
35245
+ }
35246
+
35247
+ __slots__: List[str] = ['_r2', '_curve_result_details']
35248
+
35249
+ def __init__(self, curve_result_details: "scout_compute_api_CurveResultDetails", r2: float) -> None:
35250
+ self._r2 = r2
35251
+ self._curve_result_details = curve_result_details
35252
+
35253
+ @builtins.property
35254
+ def r2(self) -> float:
35255
+ """
35256
+ R^2 (coefficient of determination) for the fit curve, a normalized measure of how well the curve fits the data.
35257
+ Usually ranges from 0 to 1, with higher indicating better fit (points closer to fit line).
35258
+ """
35259
+ return self._r2
35260
+
35261
+ @builtins.property
35262
+ def curve_result_details(self) -> "scout_compute_api_CurveResultDetails":
35263
+ """
35264
+ Description of the fit curve.
35265
+ """
35266
+ return self._curve_result_details
35267
+
35268
+
35269
+ scout_compute_api_CurveFitResult.__name__ = "CurveFitResult"
35270
+ scout_compute_api_CurveFitResult.__qualname__ = "CurveFitResult"
35271
+ scout_compute_api_CurveFitResult.__module__ = "nominal_api.scout_compute_api"
35272
+
35273
+
35274
+ class scout_compute_api_CurveResultDetails(ConjureUnionType):
35275
+ _exponential: Optional["scout_compute_api_ExponentialResultDetails"] = None
35276
+ _logarithmic: Optional["scout_compute_api_LogarithmicResultDetails"] = None
35277
+ _polynomial: Optional["scout_compute_api_PolynomialResultDetails"] = None
35278
+ _power: Optional["scout_compute_api_PowerResultDetails"] = None
35279
+
35280
+ @builtins.classmethod
35281
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
35282
+ return {
35283
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_api_ExponentialResultDetails),
35284
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_api_LogarithmicResultDetails),
35285
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_api_PolynomialResultDetails),
35286
+ 'power': ConjureFieldDefinition('power', scout_compute_api_PowerResultDetails)
35287
+ }
35288
+
35289
+ def __init__(
35290
+ self,
35291
+ exponential: Optional["scout_compute_api_ExponentialResultDetails"] = None,
35292
+ logarithmic: Optional["scout_compute_api_LogarithmicResultDetails"] = None,
35293
+ polynomial: Optional["scout_compute_api_PolynomialResultDetails"] = None,
35294
+ power: Optional["scout_compute_api_PowerResultDetails"] = None,
35295
+ type_of_union: Optional[str] = None
35296
+ ) -> None:
35297
+ if type_of_union is None:
35298
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
35299
+ raise ValueError('a union must contain a single member')
35300
+
35301
+ if exponential is not None:
35302
+ self._exponential = exponential
35303
+ self._type = 'exponential'
35304
+ if logarithmic is not None:
35305
+ self._logarithmic = logarithmic
35306
+ self._type = 'logarithmic'
35307
+ if polynomial is not None:
35308
+ self._polynomial = polynomial
35309
+ self._type = 'polynomial'
35310
+ if power is not None:
35311
+ self._power = power
35312
+ self._type = 'power'
35313
+
35314
+ elif type_of_union == 'exponential':
35315
+ if exponential is None:
35316
+ raise ValueError('a union value must not be None')
35317
+ self._exponential = exponential
35318
+ self._type = 'exponential'
35319
+ elif type_of_union == 'logarithmic':
35320
+ if logarithmic is None:
35321
+ raise ValueError('a union value must not be None')
35322
+ self._logarithmic = logarithmic
35323
+ self._type = 'logarithmic'
35324
+ elif type_of_union == 'polynomial':
35325
+ if polynomial is None:
35326
+ raise ValueError('a union value must not be None')
35327
+ self._polynomial = polynomial
35328
+ self._type = 'polynomial'
35329
+ elif type_of_union == 'power':
35330
+ if power is None:
35331
+ raise ValueError('a union value must not be None')
35332
+ self._power = power
35333
+ self._type = 'power'
35334
+
35335
+ @builtins.property
35336
+ def exponential(self) -> Optional["scout_compute_api_ExponentialResultDetails"]:
35337
+ return self._exponential
35338
+
35339
+ @builtins.property
35340
+ def logarithmic(self) -> Optional["scout_compute_api_LogarithmicResultDetails"]:
35341
+ return self._logarithmic
35342
+
35343
+ @builtins.property
35344
+ def polynomial(self) -> Optional["scout_compute_api_PolynomialResultDetails"]:
35345
+ return self._polynomial
35346
+
35347
+ @builtins.property
35348
+ def power(self) -> Optional["scout_compute_api_PowerResultDetails"]:
35349
+ return self._power
35350
+
35351
+ def accept(self, visitor) -> Any:
35352
+ if not isinstance(visitor, scout_compute_api_CurveResultDetailsVisitor):
35353
+ raise ValueError('{} is not an instance of scout_compute_api_CurveResultDetailsVisitor'.format(visitor.__class__.__name__))
35354
+ if self._type == 'exponential' and self.exponential is not None:
35355
+ return visitor._exponential(self.exponential)
35356
+ if self._type == 'logarithmic' and self.logarithmic is not None:
35357
+ return visitor._logarithmic(self.logarithmic)
35358
+ if self._type == 'polynomial' and self.polynomial is not None:
35359
+ return visitor._polynomial(self.polynomial)
35360
+ if self._type == 'power' and self.power is not None:
35361
+ return visitor._power(self.power)
35362
+
35363
+
35364
+ scout_compute_api_CurveResultDetails.__name__ = "CurveResultDetails"
35365
+ scout_compute_api_CurveResultDetails.__qualname__ = "CurveResultDetails"
35366
+ scout_compute_api_CurveResultDetails.__module__ = "nominal_api.scout_compute_api"
35367
+
35368
+
35369
+ class scout_compute_api_CurveResultDetailsVisitor:
35370
+
35371
+ @abstractmethod
35372
+ def _exponential(self, exponential: "scout_compute_api_ExponentialResultDetails") -> Any:
35373
+ pass
35374
+
35375
+ @abstractmethod
35376
+ def _logarithmic(self, logarithmic: "scout_compute_api_LogarithmicResultDetails") -> Any:
35377
+ pass
35378
+
35379
+ @abstractmethod
35380
+ def _polynomial(self, polynomial: "scout_compute_api_PolynomialResultDetails") -> Any:
35381
+ pass
35382
+
35383
+ @abstractmethod
35384
+ def _power(self, power: "scout_compute_api_PowerResultDetails") -> Any:
35385
+ pass
35386
+
35387
+
35388
+ scout_compute_api_CurveResultDetailsVisitor.__name__ = "CurveResultDetailsVisitor"
35389
+ scout_compute_api_CurveResultDetailsVisitor.__qualname__ = "CurveResultDetailsVisitor"
35390
+ scout_compute_api_CurveResultDetailsVisitor.__module__ = "nominal_api.scout_compute_api"
35391
+
35392
+
34853
35393
  class scout_compute_api_DataSourceChannel(ConjureBeanType):
34854
35394
 
34855
35395
  @builtins.classmethod
@@ -35609,6 +36149,7 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35609
36149
  _time_shift: Optional["scout_compute_api_EnumTimeShiftSeries"] = None
35610
36150
  _union: Optional["scout_compute_api_EnumUnionSeries"] = None
35611
36151
  _filter_transformation: Optional["scout_compute_api_EnumFilterTransformationSeries"] = None
36152
+ _value_map: Optional["scout_compute_api_ValueMapSeries"] = None
35612
36153
 
35613
36154
  @builtins.classmethod
35614
36155
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -35621,7 +36162,8 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35621
36162
  'time_range_filter': ConjureFieldDefinition('timeRangeFilter', scout_compute_api_EnumTimeRangeFilterSeries),
35622
36163
  'time_shift': ConjureFieldDefinition('timeShift', scout_compute_api_EnumTimeShiftSeries),
35623
36164
  'union': ConjureFieldDefinition('union', scout_compute_api_EnumUnionSeries),
35624
- 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_api_EnumFilterTransformationSeries)
36165
+ 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_api_EnumFilterTransformationSeries),
36166
+ 'value_map': ConjureFieldDefinition('valueMap', scout_compute_api_ValueMapSeries)
35625
36167
  }
35626
36168
 
35627
36169
  def __init__(
@@ -35635,10 +36177,11 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35635
36177
  time_shift: Optional["scout_compute_api_EnumTimeShiftSeries"] = None,
35636
36178
  union: Optional["scout_compute_api_EnumUnionSeries"] = None,
35637
36179
  filter_transformation: Optional["scout_compute_api_EnumFilterTransformationSeries"] = None,
36180
+ value_map: Optional["scout_compute_api_ValueMapSeries"] = None,
35638
36181
  type_of_union: Optional[str] = None
35639
36182
  ) -> None:
35640
36183
  if type_of_union is None:
35641
- if (aggregate is not None) + (function is not None) + (raw is not None) + (channel is not None) + (resample is not None) + (time_range_filter is not None) + (time_shift is not None) + (union is not None) + (filter_transformation is not None) != 1:
36184
+ if (aggregate is not None) + (function is not None) + (raw is not None) + (channel is not None) + (resample is not None) + (time_range_filter is not None) + (time_shift is not None) + (union is not None) + (filter_transformation is not None) + (value_map is not None) != 1:
35642
36185
  raise ValueError('a union must contain a single member')
35643
36186
 
35644
36187
  if aggregate is not None:
@@ -35668,6 +36211,9 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35668
36211
  if filter_transformation is not None:
35669
36212
  self._filter_transformation = filter_transformation
35670
36213
  self._type = 'filterTransformation'
36214
+ if value_map is not None:
36215
+ self._value_map = value_map
36216
+ self._type = 'valueMap'
35671
36217
 
35672
36218
  elif type_of_union == 'aggregate':
35673
36219
  if aggregate is None:
@@ -35714,6 +36260,11 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35714
36260
  raise ValueError('a union value must not be None')
35715
36261
  self._filter_transformation = filter_transformation
35716
36262
  self._type = 'filterTransformation'
36263
+ elif type_of_union == 'valueMap':
36264
+ if value_map is None:
36265
+ raise ValueError('a union value must not be None')
36266
+ self._value_map = value_map
36267
+ self._type = 'valueMap'
35717
36268
 
35718
36269
  @builtins.property
35719
36270
  def aggregate(self) -> Optional["scout_compute_api_AggregateEnumSeries"]:
@@ -35751,6 +36302,10 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35751
36302
  def filter_transformation(self) -> Optional["scout_compute_api_EnumFilterTransformationSeries"]:
35752
36303
  return self._filter_transformation
35753
36304
 
36305
+ @builtins.property
36306
+ def value_map(self) -> Optional["scout_compute_api_ValueMapSeries"]:
36307
+ return self._value_map
36308
+
35754
36309
  def accept(self, visitor) -> Any:
35755
36310
  if not isinstance(visitor, scout_compute_api_EnumSeriesVisitor):
35756
36311
  raise ValueError('{} is not an instance of scout_compute_api_EnumSeriesVisitor'.format(visitor.__class__.__name__))
@@ -35772,6 +36327,8 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35772
36327
  return visitor._union(self.union)
35773
36328
  if self._type == 'filterTransformation' and self.filter_transformation is not None:
35774
36329
  return visitor._filter_transformation(self.filter_transformation)
36330
+ if self._type == 'valueMap' and self.value_map is not None:
36331
+ return visitor._value_map(self.value_map)
35775
36332
 
35776
36333
 
35777
36334
  scout_compute_api_EnumSeries.__name__ = "EnumSeries"
@@ -35817,6 +36374,10 @@ class scout_compute_api_EnumSeriesVisitor:
35817
36374
  def _filter_transformation(self, filter_transformation: "scout_compute_api_EnumFilterTransformationSeries") -> Any:
35818
36375
  pass
35819
36376
 
36377
+ @abstractmethod
36378
+ def _value_map(self, value_map: "scout_compute_api_ValueMapSeries") -> Any:
36379
+ pass
36380
+
35820
36381
 
35821
36382
  scout_compute_api_EnumSeriesVisitor.__name__ = "EnumSeriesVisitor"
35822
36383
  scout_compute_api_EnumSeriesVisitor.__qualname__ = "EnumSeriesVisitor"
@@ -36100,6 +36661,64 @@ scout_compute_api_ExcludeNegativeValues.__qualname__ = "ExcludeNegativeValues"
36100
36661
  scout_compute_api_ExcludeNegativeValues.__module__ = "nominal_api.scout_compute_api"
36101
36662
 
36102
36663
 
36664
+ class scout_compute_api_ExponentialCurve(ConjureBeanType):
36665
+
36666
+ @builtins.classmethod
36667
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
36668
+ return {
36669
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
36670
+ }
36671
+
36672
+ __slots__: List[str] = ['_intercept']
36673
+
36674
+ def __init__(self, intercept: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
36675
+ self._intercept = intercept
36676
+
36677
+ @builtins.property
36678
+ def intercept(self) -> Optional["scout_compute_api_DoubleConstant"]:
36679
+ """
36680
+ The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.
36681
+ """
36682
+ return self._intercept
36683
+
36684
+
36685
+ scout_compute_api_ExponentialCurve.__name__ = "ExponentialCurve"
36686
+ scout_compute_api_ExponentialCurve.__qualname__ = "ExponentialCurve"
36687
+ scout_compute_api_ExponentialCurve.__module__ = "nominal_api.scout_compute_api"
36688
+
36689
+
36690
+ class scout_compute_api_ExponentialResultDetails(ConjureBeanType):
36691
+ """
36692
+ y = a * e^(b * x)
36693
+ """
36694
+
36695
+ @builtins.classmethod
36696
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
36697
+ return {
36698
+ 'a': ConjureFieldDefinition('a', float),
36699
+ 'b': ConjureFieldDefinition('b', float)
36700
+ }
36701
+
36702
+ __slots__: List[str] = ['_a', '_b']
36703
+
36704
+ def __init__(self, a: float, b: float) -> None:
36705
+ self._a = a
36706
+ self._b = b
36707
+
36708
+ @builtins.property
36709
+ def a(self) -> float:
36710
+ return self._a
36711
+
36712
+ @builtins.property
36713
+ def b(self) -> float:
36714
+ return self._b
36715
+
36716
+
36717
+ scout_compute_api_ExponentialResultDetails.__name__ = "ExponentialResultDetails"
36718
+ scout_compute_api_ExponentialResultDetails.__qualname__ = "ExponentialResultDetails"
36719
+ scout_compute_api_ExponentialResultDetails.__module__ = "nominal_api.scout_compute_api"
36720
+
36721
+
36103
36722
  class scout_compute_api_Fft(ConjureBeanType):
36104
36723
  """
36105
36724
  Returns the single sided amplitude spectrum of the input series.
@@ -37545,6 +38164,54 @@ scout_compute_api_LogValue.__qualname__ = "LogValue"
37545
38164
  scout_compute_api_LogValue.__module__ = "nominal_api.scout_compute_api"
37546
38165
 
37547
38166
 
38167
+ class scout_compute_api_LogarithmicCurve(ConjureBeanType):
38168
+
38169
+ @builtins.classmethod
38170
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
38171
+ return {
38172
+ }
38173
+
38174
+ __slots__: List[str] = []
38175
+
38176
+
38177
+
38178
+ scout_compute_api_LogarithmicCurve.__name__ = "LogarithmicCurve"
38179
+ scout_compute_api_LogarithmicCurve.__qualname__ = "LogarithmicCurve"
38180
+ scout_compute_api_LogarithmicCurve.__module__ = "nominal_api.scout_compute_api"
38181
+
38182
+
38183
+ class scout_compute_api_LogarithmicResultDetails(ConjureBeanType):
38184
+ """
38185
+ y = a * ln(x) + b
38186
+ """
38187
+
38188
+ @builtins.classmethod
38189
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
38190
+ return {
38191
+ 'a': ConjureFieldDefinition('a', float),
38192
+ 'b': ConjureFieldDefinition('b', float)
38193
+ }
38194
+
38195
+ __slots__: List[str] = ['_a', '_b']
38196
+
38197
+ def __init__(self, a: float, b: float) -> None:
38198
+ self._a = a
38199
+ self._b = b
38200
+
38201
+ @builtins.property
38202
+ def a(self) -> float:
38203
+ return self._a
38204
+
38205
+ @builtins.property
38206
+ def b(self) -> float:
38207
+ return self._b
38208
+
38209
+
38210
+ scout_compute_api_LogarithmicResultDetails.__name__ = "LogarithmicResultDetails"
38211
+ scout_compute_api_LogarithmicResultDetails.__qualname__ = "LogarithmicResultDetails"
38212
+ scout_compute_api_LogarithmicResultDetails.__module__ = "nominal_api.scout_compute_api"
38213
+
38214
+
37548
38215
  class scout_compute_api_LowPassConfiguration(ConjureBeanType):
37549
38216
 
37550
38217
  @builtins.classmethod
@@ -39973,6 +40640,115 @@ scout_compute_api_Point3d.__qualname__ = "Point3d"
39973
40640
  scout_compute_api_Point3d.__module__ = "nominal_api.scout_compute_api"
39974
40641
 
39975
40642
 
40643
+ class scout_compute_api_PolynomialCurve(ConjureBeanType):
40644
+
40645
+ @builtins.classmethod
40646
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40647
+ return {
40648
+ 'degree': ConjureFieldDefinition('degree', scout_compute_api_IntegerConstant),
40649
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
40650
+ }
40651
+
40652
+ __slots__: List[str] = ['_degree', '_intercept']
40653
+
40654
+ def __init__(self, degree: "scout_compute_api_IntegerConstant", intercept: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
40655
+ self._degree = degree
40656
+ self._intercept = intercept
40657
+
40658
+ @builtins.property
40659
+ def degree(self) -> "scout_compute_api_IntegerConstant":
40660
+ """
40661
+ The highest allowable degree of the fit polynomial.
40662
+ """
40663
+ return self._degree
40664
+
40665
+ @builtins.property
40666
+ def intercept(self) -> Optional["scout_compute_api_DoubleConstant"]:
40667
+ """
40668
+ The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.
40669
+ """
40670
+ return self._intercept
40671
+
40672
+
40673
+ scout_compute_api_PolynomialCurve.__name__ = "PolynomialCurve"
40674
+ scout_compute_api_PolynomialCurve.__qualname__ = "PolynomialCurve"
40675
+ scout_compute_api_PolynomialCurve.__module__ = "nominal_api.scout_compute_api"
40676
+
40677
+
40678
+ class scout_compute_api_PolynomialResultDetails(ConjureBeanType):
40679
+ """
40680
+ y = sum( a_i * x^i ) for i in 0...len(a)
40681
+ """
40682
+
40683
+ @builtins.classmethod
40684
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40685
+ return {
40686
+ 'a': ConjureFieldDefinition('a', List[float])
40687
+ }
40688
+
40689
+ __slots__: List[str] = ['_a']
40690
+
40691
+ def __init__(self, a: List[float]) -> None:
40692
+ self._a = a
40693
+
40694
+ @builtins.property
40695
+ def a(self) -> List[float]:
40696
+ return self._a
40697
+
40698
+
40699
+ scout_compute_api_PolynomialResultDetails.__name__ = "PolynomialResultDetails"
40700
+ scout_compute_api_PolynomialResultDetails.__qualname__ = "PolynomialResultDetails"
40701
+ scout_compute_api_PolynomialResultDetails.__module__ = "nominal_api.scout_compute_api"
40702
+
40703
+
40704
+ class scout_compute_api_PowerCurve(ConjureBeanType):
40705
+
40706
+ @builtins.classmethod
40707
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40708
+ return {
40709
+ }
40710
+
40711
+ __slots__: List[str] = []
40712
+
40713
+
40714
+
40715
+ scout_compute_api_PowerCurve.__name__ = "PowerCurve"
40716
+ scout_compute_api_PowerCurve.__qualname__ = "PowerCurve"
40717
+ scout_compute_api_PowerCurve.__module__ = "nominal_api.scout_compute_api"
40718
+
40719
+
40720
+ class scout_compute_api_PowerResultDetails(ConjureBeanType):
40721
+ """
40722
+ y = a * x^b
40723
+ """
40724
+
40725
+ @builtins.classmethod
40726
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40727
+ return {
40728
+ 'a': ConjureFieldDefinition('a', float),
40729
+ 'b': ConjureFieldDefinition('b', float)
40730
+ }
40731
+
40732
+ __slots__: List[str] = ['_a', '_b']
40733
+
40734
+ def __init__(self, a: float, b: float) -> None:
40735
+ self._a = a
40736
+ self._b = b
40737
+
40738
+ @builtins.property
40739
+ def a(self) -> float:
40740
+ return self._a
40741
+
40742
+ @builtins.property
40743
+ def b(self) -> float:
40744
+ return self._b
40745
+
40746
+
40747
+ scout_compute_api_PowerResultDetails.__name__ = "PowerResultDetails"
40748
+ scout_compute_api_PowerResultDetails.__qualname__ = "PowerResultDetails"
40749
+ scout_compute_api_PowerResultDetails.__module__ = "nominal_api.scout_compute_api"
40750
+
40751
+
39976
40752
  class scout_compute_api_ProductSeries(ConjureBeanType):
39977
40753
  """
39978
40754
  For every timestamp specified in the input series, outputs a value that is the product for that timestamp
@@ -40231,6 +41007,50 @@ scout_compute_api_RangeAggregationOperationVisitor.__qualname__ = "RangeAggregat
40231
41007
  scout_compute_api_RangeAggregationOperationVisitor.__module__ = "nominal_api.scout_compute_api"
40232
41008
 
40233
41009
 
41010
+ class scout_compute_api_RangeMap(ConjureBeanType):
41011
+
41012
+ @builtins.classmethod
41013
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
41014
+ return {
41015
+ 'start': ConjureFieldDefinition('start', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
41016
+ 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
41017
+ 'output': ConjureFieldDefinition('output', scout_compute_api_StringConstant)
41018
+ }
41019
+
41020
+ __slots__: List[str] = ['_start', '_end', '_output']
41021
+
41022
+ def __init__(self, output: "scout_compute_api_StringConstant", end: Optional["scout_compute_api_DoubleConstant"] = None, start: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
41023
+ self._start = start
41024
+ self._end = end
41025
+ self._output = output
41026
+
41027
+ @builtins.property
41028
+ def start(self) -> Optional["scout_compute_api_DoubleConstant"]:
41029
+ """
41030
+ Inclusive start value. If not specified, the start is the prior range's end value, or negative infinity.
41031
+ """
41032
+ return self._start
41033
+
41034
+ @builtins.property
41035
+ def end(self) -> Optional["scout_compute_api_DoubleConstant"]:
41036
+ """
41037
+ Exclusive end value. If not specified, the end value is the next range's start value, or positive infinity.
41038
+ """
41039
+ return self._end
41040
+
41041
+ @builtins.property
41042
+ def output(self) -> "scout_compute_api_StringConstant":
41043
+ """
41044
+ The value to map to if the input value is within the range.
41045
+ """
41046
+ return self._output
41047
+
41048
+
41049
+ scout_compute_api_RangeMap.__name__ = "RangeMap"
41050
+ scout_compute_api_RangeMap.__qualname__ = "RangeMap"
41051
+ scout_compute_api_RangeMap.__module__ = "nominal_api.scout_compute_api"
41052
+
41053
+
40234
41054
  class scout_compute_api_RangeSeries(ConjureUnionType):
40235
41055
  _approximate_threshold: Optional["scout_compute_api_ApproximateThresholdRanges"] = None
40236
41056
  _enum_filter: Optional["scout_compute_api_EnumFilterRanges"] = None
@@ -41272,6 +42092,10 @@ scout_compute_api_ScaleSeries.__module__ = "nominal_api.scout_compute_api"
41272
42092
 
41273
42093
 
41274
42094
  class scout_compute_api_Scatter(ConjureBeanType):
42095
+ """
42096
+ A scatter plot comprised of the values from one input series on the x-axis
42097
+ and values from another input series on the y-axis, for all points within a requested time range.
42098
+ """
41275
42099
 
41276
42100
  @builtins.classmethod
41277
42101
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -41341,6 +42165,98 @@ scout_compute_api_Scatter3d.__qualname__ = "Scatter3d"
41341
42165
  scout_compute_api_Scatter3d.__module__ = "nominal_api.scout_compute_api"
41342
42166
 
41343
42167
 
42168
+ class scout_compute_api_ScatterCurveFit(ConjureBeanType):
42169
+ """
42170
+ Fits a curve to the scatter between two series.
42171
+ """
42172
+
42173
+ @builtins.classmethod
42174
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
42175
+ return {
42176
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_api_Scatter),
42177
+ 'options': ConjureFieldDefinition('options', scout_compute_api_ScatterFitOptions)
42178
+ }
42179
+
42180
+ __slots__: List[str] = ['_scatter', '_options']
42181
+
42182
+ def __init__(self, options: "scout_compute_api_ScatterFitOptions", scatter: "scout_compute_api_Scatter") -> None:
42183
+ self._scatter = scatter
42184
+ self._options = options
42185
+
42186
+ @builtins.property
42187
+ def scatter(self) -> "scout_compute_api_Scatter":
42188
+ """
42189
+ The x and y series to fit to.
42190
+ """
42191
+ return self._scatter
42192
+
42193
+ @builtins.property
42194
+ def options(self) -> "scout_compute_api_ScatterFitOptions":
42195
+ return self._options
42196
+
42197
+
42198
+ scout_compute_api_ScatterCurveFit.__name__ = "ScatterCurveFit"
42199
+ scout_compute_api_ScatterCurveFit.__qualname__ = "ScatterCurveFit"
42200
+ scout_compute_api_ScatterCurveFit.__module__ = "nominal_api.scout_compute_api"
42201
+
42202
+
42203
+ class scout_compute_api_ScatterFitOptions(ConjureBeanType):
42204
+
42205
+ @builtins.classmethod
42206
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
42207
+ return {
42208
+ 'min_x': ConjureFieldDefinition('minX', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42209
+ 'max_x': ConjureFieldDefinition('maxX', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42210
+ 'min_y': ConjureFieldDefinition('minY', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42211
+ 'max_y': ConjureFieldDefinition('maxY', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
42212
+ }
42213
+
42214
+ __slots__: List[str] = ['_min_x', '_max_x', '_min_y', '_max_y']
42215
+
42216
+ def __init__(self, max_x: Optional["scout_compute_api_DoubleConstant"] = None, max_y: Optional["scout_compute_api_DoubleConstant"] = None, min_x: Optional["scout_compute_api_DoubleConstant"] = None, min_y: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
42217
+ self._min_x = min_x
42218
+ self._max_x = max_x
42219
+ self._min_y = min_y
42220
+ self._max_y = max_y
42221
+
42222
+ @builtins.property
42223
+ def min_x(self) -> Optional["scout_compute_api_DoubleConstant"]:
42224
+ """
42225
+ Inclusive lower bound on the x values to fit to. If omitted, does not set a bound
42226
+ (equivalent to setting this to the minimum x value among all points in the time range).
42227
+ """
42228
+ return self._min_x
42229
+
42230
+ @builtins.property
42231
+ def max_x(self) -> Optional["scout_compute_api_DoubleConstant"]:
42232
+ """
42233
+ Inclusive upper bound on the x values to fit to. If omitted, does not set a bound
42234
+ (equivalent to setting this to the maximum x value among all points in the time range).
42235
+ """
42236
+ return self._max_x
42237
+
42238
+ @builtins.property
42239
+ def min_y(self) -> Optional["scout_compute_api_DoubleConstant"]:
42240
+ """
42241
+ Inclusive lower bound on the y values to fit to. If omitted, does not set a bound
42242
+ (equivalent to setting this to the minimum y value among all points in the time range).
42243
+ """
42244
+ return self._min_y
42245
+
42246
+ @builtins.property
42247
+ def max_y(self) -> Optional["scout_compute_api_DoubleConstant"]:
42248
+ """
42249
+ Inclusive upper bound on the y values to fit to. If omitted, does not set a bound
42250
+ (equivalent to setting this to the maximum y value among all points in the time range).
42251
+ """
42252
+ return self._max_y
42253
+
42254
+
42255
+ scout_compute_api_ScatterFitOptions.__name__ = "ScatterFitOptions"
42256
+ scout_compute_api_ScatterFitOptions.__qualname__ = "ScatterFitOptions"
42257
+ scout_compute_api_ScatterFitOptions.__module__ = "nominal_api.scout_compute_api"
42258
+
42259
+
41344
42260
  class scout_compute_api_ScatterSummarizationStrategy(ConjureUnionType):
41345
42261
  _spatial: Optional["scout_compute_api_SpatialDecimateStrategy"] = None
41346
42262
 
@@ -42810,6 +43726,68 @@ scout_compute_api_TimeDifferenceSeries.__qualname__ = "TimeDifferenceSeries"
42810
43726
  scout_compute_api_TimeDifferenceSeries.__module__ = "nominal_api.scout_compute_api"
42811
43727
 
42812
43728
 
43729
+ class scout_compute_api_TimeSeriesCurveFit(ConjureBeanType):
43730
+ """
43731
+ Fits a curve to a series vs its timestamps.
43732
+ """
43733
+
43734
+ @builtins.classmethod
43735
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
43736
+ return {
43737
+ 'series': ConjureFieldDefinition('series', scout_compute_api_NumericSeries),
43738
+ 'options': ConjureFieldDefinition('options', scout_compute_api_TimeSeriesFitOptions)
43739
+ }
43740
+
43741
+ __slots__: List[str] = ['_series', '_options']
43742
+
43743
+ def __init__(self, options: "scout_compute_api_TimeSeriesFitOptions", series: "scout_compute_api_NumericSeries") -> None:
43744
+ self._series = series
43745
+ self._options = options
43746
+
43747
+ @builtins.property
43748
+ def series(self) -> "scout_compute_api_NumericSeries":
43749
+ """
43750
+ The series to fit. Timestamps will be used as x values and data as y values. The leftmost (earliest)
43751
+ timestamp will be used as the value of 0, and all other timestamps will be relative to that.
43752
+ """
43753
+ return self._series
43754
+
43755
+ @builtins.property
43756
+ def options(self) -> "scout_compute_api_TimeSeriesFitOptions":
43757
+ return self._options
43758
+
43759
+
43760
+ scout_compute_api_TimeSeriesCurveFit.__name__ = "TimeSeriesCurveFit"
43761
+ scout_compute_api_TimeSeriesCurveFit.__qualname__ = "TimeSeriesCurveFit"
43762
+ scout_compute_api_TimeSeriesCurveFit.__module__ = "nominal_api.scout_compute_api"
43763
+
43764
+
43765
+ class scout_compute_api_TimeSeriesFitOptions(ConjureBeanType):
43766
+
43767
+ @builtins.classmethod
43768
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
43769
+ return {
43770
+ 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[api_TimeUnit])
43771
+ }
43772
+
43773
+ __slots__: List[str] = ['_time_unit']
43774
+
43775
+ def __init__(self, time_unit: Optional["api_TimeUnit"] = None) -> None:
43776
+ self._time_unit = time_unit
43777
+
43778
+ @builtins.property
43779
+ def time_unit(self) -> Optional["api_TimeUnit"]:
43780
+ """
43781
+ Time unit used for the timestamps to fit against. Defaults to seconds if not specified.
43782
+ """
43783
+ return self._time_unit
43784
+
43785
+
43786
+ scout_compute_api_TimeSeriesFitOptions.__name__ = "TimeSeriesFitOptions"
43787
+ scout_compute_api_TimeSeriesFitOptions.__qualname__ = "TimeSeriesFitOptions"
43788
+ scout_compute_api_TimeSeriesFitOptions.__module__ = "nominal_api.scout_compute_api"
43789
+
43790
+
42813
43791
  class scout_compute_api_TimestampAndId(ConjureBeanType):
42814
43792
 
42815
43793
  @builtins.classmethod
@@ -43313,6 +44291,55 @@ scout_compute_api_ValueDifferenceSeries.__qualname__ = "ValueDifferenceSeries"
43313
44291
  scout_compute_api_ValueDifferenceSeries.__module__ = "nominal_api.scout_compute_api"
43314
44292
 
43315
44293
 
44294
+ class scout_compute_api_ValueMapSeries(ConjureBeanType):
44295
+ """
44296
+ Maps a continuous numeric series to a discrete enum series using the specified value ranges.
44297
+ """
44298
+
44299
+ @builtins.classmethod
44300
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
44301
+ return {
44302
+ 'input': ConjureFieldDefinition('input', scout_compute_api_NumericSeries),
44303
+ 'mapping': ConjureFieldDefinition('mapping', List[scout_compute_api_RangeMap]),
44304
+ 'fallback': ConjureFieldDefinition('fallback', OptionalTypeWrapper[scout_compute_api_StringConstant])
44305
+ }
44306
+
44307
+ __slots__: List[str] = ['_input', '_mapping', '_fallback']
44308
+
44309
+ def __init__(self, input: "scout_compute_api_NumericSeries", mapping: List["scout_compute_api_RangeMap"], fallback: Optional["scout_compute_api_StringConstant"] = None) -> None:
44310
+ self._input = input
44311
+ self._mapping = mapping
44312
+ self._fallback = fallback
44313
+
44314
+ @builtins.property
44315
+ def input(self) -> "scout_compute_api_NumericSeries":
44316
+ """
44317
+ The input series to map to an enumerated series
44318
+ """
44319
+ return self._input
44320
+
44321
+ @builtins.property
44322
+ def mapping(self) -> List["scout_compute_api_RangeMap"]:
44323
+ """
44324
+ The output of the first capturing range will be used. Ranges are start inclusive, end exclusive, must not overlap,
44325
+ and increasing from lowest to highest. Ranges can be open ended to the edge of the next or prior range.
44326
+ The first range can be open ended to negative infinity, and the last range can be open ended to positive infinity.
44327
+ """
44328
+ return self._mapping
44329
+
44330
+ @builtins.property
44331
+ def fallback(self) -> Optional["scout_compute_api_StringConstant"]:
44332
+ """
44333
+ The fallback value if not captured by any range. If not specified, points will be filtered.
44334
+ """
44335
+ return self._fallback
44336
+
44337
+
44338
+ scout_compute_api_ValueMapSeries.__name__ = "ValueMapSeries"
44339
+ scout_compute_api_ValueMapSeries.__qualname__ = "ValueMapSeries"
44340
+ scout_compute_api_ValueMapSeries.__module__ = "nominal_api.scout_compute_api"
44341
+
44342
+
43316
44343
  class scout_compute_api_VariableValue(ConjureUnionType):
43317
44344
  _double: Optional[float] = None
43318
44345
  _compute_node: Optional["scout_compute_api_ComputeNodeWithContext"] = None
@@ -47039,6 +48066,253 @@ scout_compute_resolved_api_CumulativeSumSeriesNode.__qualname__ = "CumulativeSum
47039
48066
  scout_compute_resolved_api_CumulativeSumSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
47040
48067
 
47041
48068
 
48069
+ class scout_compute_resolved_api_CurveFitDetails(ConjureUnionType):
48070
+ _exponential: Optional["scout_compute_resolved_api_ExponentialCurve"] = None
48071
+ _logarithmic: Optional["scout_compute_resolved_api_LogarithmicCurve"] = None
48072
+ _polynomial: Optional["scout_compute_resolved_api_PolynomialCurve"] = None
48073
+ _power: Optional["scout_compute_resolved_api_PowerCurve"] = None
48074
+
48075
+ @builtins.classmethod
48076
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
48077
+ return {
48078
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_resolved_api_ExponentialCurve),
48079
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_resolved_api_LogarithmicCurve),
48080
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_resolved_api_PolynomialCurve),
48081
+ 'power': ConjureFieldDefinition('power', scout_compute_resolved_api_PowerCurve)
48082
+ }
48083
+
48084
+ def __init__(
48085
+ self,
48086
+ exponential: Optional["scout_compute_resolved_api_ExponentialCurve"] = None,
48087
+ logarithmic: Optional["scout_compute_resolved_api_LogarithmicCurve"] = None,
48088
+ polynomial: Optional["scout_compute_resolved_api_PolynomialCurve"] = None,
48089
+ power: Optional["scout_compute_resolved_api_PowerCurve"] = None,
48090
+ type_of_union: Optional[str] = None
48091
+ ) -> None:
48092
+ if type_of_union is None:
48093
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
48094
+ raise ValueError('a union must contain a single member')
48095
+
48096
+ if exponential is not None:
48097
+ self._exponential = exponential
48098
+ self._type = 'exponential'
48099
+ if logarithmic is not None:
48100
+ self._logarithmic = logarithmic
48101
+ self._type = 'logarithmic'
48102
+ if polynomial is not None:
48103
+ self._polynomial = polynomial
48104
+ self._type = 'polynomial'
48105
+ if power is not None:
48106
+ self._power = power
48107
+ self._type = 'power'
48108
+
48109
+ elif type_of_union == 'exponential':
48110
+ if exponential is None:
48111
+ raise ValueError('a union value must not be None')
48112
+ self._exponential = exponential
48113
+ self._type = 'exponential'
48114
+ elif type_of_union == 'logarithmic':
48115
+ if logarithmic is None:
48116
+ raise ValueError('a union value must not be None')
48117
+ self._logarithmic = logarithmic
48118
+ self._type = 'logarithmic'
48119
+ elif type_of_union == 'polynomial':
48120
+ if polynomial is None:
48121
+ raise ValueError('a union value must not be None')
48122
+ self._polynomial = polynomial
48123
+ self._type = 'polynomial'
48124
+ elif type_of_union == 'power':
48125
+ if power is None:
48126
+ raise ValueError('a union value must not be None')
48127
+ self._power = power
48128
+ self._type = 'power'
48129
+
48130
+ @builtins.property
48131
+ def exponential(self) -> Optional["scout_compute_resolved_api_ExponentialCurve"]:
48132
+ return self._exponential
48133
+
48134
+ @builtins.property
48135
+ def logarithmic(self) -> Optional["scout_compute_resolved_api_LogarithmicCurve"]:
48136
+ return self._logarithmic
48137
+
48138
+ @builtins.property
48139
+ def polynomial(self) -> Optional["scout_compute_resolved_api_PolynomialCurve"]:
48140
+ return self._polynomial
48141
+
48142
+ @builtins.property
48143
+ def power(self) -> Optional["scout_compute_resolved_api_PowerCurve"]:
48144
+ return self._power
48145
+
48146
+ def accept(self, visitor) -> Any:
48147
+ if not isinstance(visitor, scout_compute_resolved_api_CurveFitDetailsVisitor):
48148
+ raise ValueError('{} is not an instance of scout_compute_resolved_api_CurveFitDetailsVisitor'.format(visitor.__class__.__name__))
48149
+ if self._type == 'exponential' and self.exponential is not None:
48150
+ return visitor._exponential(self.exponential)
48151
+ if self._type == 'logarithmic' and self.logarithmic is not None:
48152
+ return visitor._logarithmic(self.logarithmic)
48153
+ if self._type == 'polynomial' and self.polynomial is not None:
48154
+ return visitor._polynomial(self.polynomial)
48155
+ if self._type == 'power' and self.power is not None:
48156
+ return visitor._power(self.power)
48157
+
48158
+
48159
+ scout_compute_resolved_api_CurveFitDetails.__name__ = "CurveFitDetails"
48160
+ scout_compute_resolved_api_CurveFitDetails.__qualname__ = "CurveFitDetails"
48161
+ scout_compute_resolved_api_CurveFitDetails.__module__ = "nominal_api.scout_compute_resolved_api"
48162
+
48163
+
48164
+ class scout_compute_resolved_api_CurveFitDetailsVisitor:
48165
+
48166
+ @abstractmethod
48167
+ def _exponential(self, exponential: "scout_compute_resolved_api_ExponentialCurve") -> Any:
48168
+ pass
48169
+
48170
+ @abstractmethod
48171
+ def _logarithmic(self, logarithmic: "scout_compute_resolved_api_LogarithmicCurve") -> Any:
48172
+ pass
48173
+
48174
+ @abstractmethod
48175
+ def _polynomial(self, polynomial: "scout_compute_resolved_api_PolynomialCurve") -> Any:
48176
+ pass
48177
+
48178
+ @abstractmethod
48179
+ def _power(self, power: "scout_compute_resolved_api_PowerCurve") -> Any:
48180
+ pass
48181
+
48182
+
48183
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__name__ = "CurveFitDetailsVisitor"
48184
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__qualname__ = "CurveFitDetailsVisitor"
48185
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
48186
+
48187
+
48188
+ class scout_compute_resolved_api_CurveFitNode(ConjureBeanType):
48189
+
48190
+ @builtins.classmethod
48191
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48192
+ return {
48193
+ 'curve_fit_plot_type': ConjureFieldDefinition('curveFitPlotType', scout_compute_resolved_api_CurveFitPlotTypeNode),
48194
+ 'curve_fit_details': ConjureFieldDefinition('curveFitDetails', scout_compute_resolved_api_CurveFitDetails),
48195
+ 'curve_fit_options': ConjureFieldDefinition('curveFitOptions', scout_compute_resolved_api_CurveFitOptions)
48196
+ }
48197
+
48198
+ __slots__: List[str] = ['_curve_fit_plot_type', '_curve_fit_details', '_curve_fit_options']
48199
+
48200
+ def __init__(self, curve_fit_details: "scout_compute_resolved_api_CurveFitDetails", curve_fit_options: "scout_compute_resolved_api_CurveFitOptions", curve_fit_plot_type: "scout_compute_resolved_api_CurveFitPlotTypeNode") -> None:
48201
+ self._curve_fit_plot_type = curve_fit_plot_type
48202
+ self._curve_fit_details = curve_fit_details
48203
+ self._curve_fit_options = curve_fit_options
48204
+
48205
+ @builtins.property
48206
+ def curve_fit_plot_type(self) -> "scout_compute_resolved_api_CurveFitPlotTypeNode":
48207
+ return self._curve_fit_plot_type
48208
+
48209
+ @builtins.property
48210
+ def curve_fit_details(self) -> "scout_compute_resolved_api_CurveFitDetails":
48211
+ return self._curve_fit_details
48212
+
48213
+ @builtins.property
48214
+ def curve_fit_options(self) -> "scout_compute_resolved_api_CurveFitOptions":
48215
+ return self._curve_fit_options
48216
+
48217
+
48218
+ scout_compute_resolved_api_CurveFitNode.__name__ = "CurveFitNode"
48219
+ scout_compute_resolved_api_CurveFitNode.__qualname__ = "CurveFitNode"
48220
+ scout_compute_resolved_api_CurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
48221
+
48222
+
48223
+ class scout_compute_resolved_api_CurveFitOptions(ConjureBeanType):
48224
+
48225
+ @builtins.classmethod
48226
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48227
+ return {
48228
+ }
48229
+
48230
+ __slots__: List[str] = []
48231
+
48232
+
48233
+
48234
+ scout_compute_resolved_api_CurveFitOptions.__name__ = "CurveFitOptions"
48235
+ scout_compute_resolved_api_CurveFitOptions.__qualname__ = "CurveFitOptions"
48236
+ scout_compute_resolved_api_CurveFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
48237
+
48238
+
48239
+ class scout_compute_resolved_api_CurveFitPlotTypeNode(ConjureUnionType):
48240
+ _time_series: Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"] = None
48241
+ _scatter: Optional["scout_compute_resolved_api_ScatterCurveFitNode"] = None
48242
+
48243
+ @builtins.classmethod
48244
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
48245
+ return {
48246
+ 'time_series': ConjureFieldDefinition('timeSeries', scout_compute_resolved_api_TimeSeriesCurveFitNode),
48247
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_resolved_api_ScatterCurveFitNode)
48248
+ }
48249
+
48250
+ def __init__(
48251
+ self,
48252
+ time_series: Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"] = None,
48253
+ scatter: Optional["scout_compute_resolved_api_ScatterCurveFitNode"] = None,
48254
+ type_of_union: Optional[str] = None
48255
+ ) -> None:
48256
+ if type_of_union is None:
48257
+ if (time_series is not None) + (scatter is not None) != 1:
48258
+ raise ValueError('a union must contain a single member')
48259
+
48260
+ if time_series is not None:
48261
+ self._time_series = time_series
48262
+ self._type = 'timeSeries'
48263
+ if scatter is not None:
48264
+ self._scatter = scatter
48265
+ self._type = 'scatter'
48266
+
48267
+ elif type_of_union == 'timeSeries':
48268
+ if time_series is None:
48269
+ raise ValueError('a union value must not be None')
48270
+ self._time_series = time_series
48271
+ self._type = 'timeSeries'
48272
+ elif type_of_union == 'scatter':
48273
+ if scatter is None:
48274
+ raise ValueError('a union value must not be None')
48275
+ self._scatter = scatter
48276
+ self._type = 'scatter'
48277
+
48278
+ @builtins.property
48279
+ def time_series(self) -> Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"]:
48280
+ return self._time_series
48281
+
48282
+ @builtins.property
48283
+ def scatter(self) -> Optional["scout_compute_resolved_api_ScatterCurveFitNode"]:
48284
+ return self._scatter
48285
+
48286
+ def accept(self, visitor) -> Any:
48287
+ if not isinstance(visitor, scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor):
48288
+ raise ValueError('{} is not an instance of scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor'.format(visitor.__class__.__name__))
48289
+ if self._type == 'timeSeries' and self.time_series is not None:
48290
+ return visitor._time_series(self.time_series)
48291
+ if self._type == 'scatter' and self.scatter is not None:
48292
+ return visitor._scatter(self.scatter)
48293
+
48294
+
48295
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__name__ = "CurveFitPlotTypeNode"
48296
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__qualname__ = "CurveFitPlotTypeNode"
48297
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__module__ = "nominal_api.scout_compute_resolved_api"
48298
+
48299
+
48300
+ class scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor:
48301
+
48302
+ @abstractmethod
48303
+ def _time_series(self, time_series: "scout_compute_resolved_api_TimeSeriesCurveFitNode") -> Any:
48304
+ pass
48305
+
48306
+ @abstractmethod
48307
+ def _scatter(self, scatter: "scout_compute_resolved_api_ScatterCurveFitNode") -> Any:
48308
+ pass
48309
+
48310
+
48311
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__name__ = "CurveFitPlotTypeNodeVisitor"
48312
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__qualname__ = "CurveFitPlotTypeNodeVisitor"
48313
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
48314
+
48315
+
47042
48316
  class scout_compute_resolved_api_DerivativeSeriesNode(ConjureBeanType):
47043
48317
 
47044
48318
  @builtins.classmethod
@@ -47271,6 +48545,7 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47271
48545
  _union: Optional["scout_compute_resolved_api_EnumUnionSeriesNode"] = None
47272
48546
  _aggregate: Optional["scout_compute_resolved_api_AggregateEnumSeriesNode"] = None
47273
48547
  _filter_transformation: Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"] = None
48548
+ _value_map: Optional["scout_compute_resolved_api_ValueMapSeriesNode"] = None
47274
48549
 
47275
48550
  @builtins.classmethod
47276
48551
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -47281,7 +48556,8 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47281
48556
  'time_shift': ConjureFieldDefinition('timeShift', scout_compute_resolved_api_EnumTimeShiftSeriesNode),
47282
48557
  'union': ConjureFieldDefinition('union', scout_compute_resolved_api_EnumUnionSeriesNode),
47283
48558
  'aggregate': ConjureFieldDefinition('aggregate', scout_compute_resolved_api_AggregateEnumSeriesNode),
47284
- 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_resolved_api_EnumFilterTransformationSeriesNode)
48559
+ 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_resolved_api_EnumFilterTransformationSeriesNode),
48560
+ 'value_map': ConjureFieldDefinition('valueMap', scout_compute_resolved_api_ValueMapSeriesNode)
47285
48561
  }
47286
48562
 
47287
48563
  def __init__(
@@ -47293,10 +48569,11 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47293
48569
  union: Optional["scout_compute_resolved_api_EnumUnionSeriesNode"] = None,
47294
48570
  aggregate: Optional["scout_compute_resolved_api_AggregateEnumSeriesNode"] = None,
47295
48571
  filter_transformation: Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"] = None,
48572
+ value_map: Optional["scout_compute_resolved_api_ValueMapSeriesNode"] = None,
47296
48573
  type_of_union: Optional[str] = None
47297
48574
  ) -> None:
47298
48575
  if type_of_union is None:
47299
- if (raw is not None) + (resample is not None) + (time_range_filter is not None) + (time_shift is not None) + (union is not None) + (aggregate is not None) + (filter_transformation is not None) != 1:
48576
+ if (raw is not None) + (resample is not None) + (time_range_filter is not None) + (time_shift is not None) + (union is not None) + (aggregate is not None) + (filter_transformation is not None) + (value_map is not None) != 1:
47300
48577
  raise ValueError('a union must contain a single member')
47301
48578
 
47302
48579
  if raw is not None:
@@ -47320,6 +48597,9 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47320
48597
  if filter_transformation is not None:
47321
48598
  self._filter_transformation = filter_transformation
47322
48599
  self._type = 'filterTransformation'
48600
+ if value_map is not None:
48601
+ self._value_map = value_map
48602
+ self._type = 'valueMap'
47323
48603
 
47324
48604
  elif type_of_union == 'raw':
47325
48605
  if raw is None:
@@ -47356,6 +48636,11 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47356
48636
  raise ValueError('a union value must not be None')
47357
48637
  self._filter_transformation = filter_transformation
47358
48638
  self._type = 'filterTransformation'
48639
+ elif type_of_union == 'valueMap':
48640
+ if value_map is None:
48641
+ raise ValueError('a union value must not be None')
48642
+ self._value_map = value_map
48643
+ self._type = 'valueMap'
47359
48644
 
47360
48645
  @builtins.property
47361
48646
  def raw(self) -> Optional["scout_compute_resolved_api_RawEnumSeriesNode"]:
@@ -47385,6 +48670,10 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47385
48670
  def filter_transformation(self) -> Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"]:
47386
48671
  return self._filter_transformation
47387
48672
 
48673
+ @builtins.property
48674
+ def value_map(self) -> Optional["scout_compute_resolved_api_ValueMapSeriesNode"]:
48675
+ return self._value_map
48676
+
47388
48677
  def accept(self, visitor) -> Any:
47389
48678
  if not isinstance(visitor, scout_compute_resolved_api_EnumSeriesNodeVisitor):
47390
48679
  raise ValueError('{} is not an instance of scout_compute_resolved_api_EnumSeriesNodeVisitor'.format(visitor.__class__.__name__))
@@ -47402,6 +48691,8 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47402
48691
  return visitor._aggregate(self.aggregate)
47403
48692
  if self._type == 'filterTransformation' and self.filter_transformation is not None:
47404
48693
  return visitor._filter_transformation(self.filter_transformation)
48694
+ if self._type == 'valueMap' and self.value_map is not None:
48695
+ return visitor._value_map(self.value_map)
47405
48696
 
47406
48697
 
47407
48698
  scout_compute_resolved_api_EnumSeriesNode.__name__ = "EnumSeriesNode"
@@ -47439,6 +48730,10 @@ class scout_compute_resolved_api_EnumSeriesNodeVisitor:
47439
48730
  def _filter_transformation(self, filter_transformation: "scout_compute_resolved_api_EnumFilterTransformationSeriesNode") -> Any:
47440
48731
  pass
47441
48732
 
48733
+ @abstractmethod
48734
+ def _value_map(self, value_map: "scout_compute_resolved_api_ValueMapSeriesNode") -> Any:
48735
+ pass
48736
+
47442
48737
 
47443
48738
  scout_compute_resolved_api_EnumSeriesNodeVisitor.__name__ = "EnumSeriesNodeVisitor"
47444
48739
  scout_compute_resolved_api_EnumSeriesNodeVisitor.__qualname__ = "EnumSeriesNodeVisitor"
@@ -47538,6 +48833,29 @@ scout_compute_resolved_api_EnumUnionSeriesNode.__qualname__ = "EnumUnionSeriesNo
47538
48833
  scout_compute_resolved_api_EnumUnionSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
47539
48834
 
47540
48835
 
48836
+ class scout_compute_resolved_api_ExponentialCurve(ConjureBeanType):
48837
+
48838
+ @builtins.classmethod
48839
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48840
+ return {
48841
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[float])
48842
+ }
48843
+
48844
+ __slots__: List[str] = ['_intercept']
48845
+
48846
+ def __init__(self, intercept: Optional[float] = None) -> None:
48847
+ self._intercept = intercept
48848
+
48849
+ @builtins.property
48850
+ def intercept(self) -> Optional[float]:
48851
+ return self._intercept
48852
+
48853
+
48854
+ scout_compute_resolved_api_ExponentialCurve.__name__ = "ExponentialCurve"
48855
+ scout_compute_resolved_api_ExponentialCurve.__qualname__ = "ExponentialCurve"
48856
+ scout_compute_resolved_api_ExponentialCurve.__module__ = "nominal_api.scout_compute_resolved_api"
48857
+
48858
+
47541
48859
  class scout_compute_resolved_api_ExtremaRangesNode(ConjureBeanType):
47542
48860
 
47543
48861
  @builtins.classmethod
@@ -48310,6 +49628,22 @@ scout_compute_resolved_api_LogUnionSeriesNode.__qualname__ = "LogUnionSeriesNode
48310
49628
  scout_compute_resolved_api_LogUnionSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
48311
49629
 
48312
49630
 
49631
+ class scout_compute_resolved_api_LogarithmicCurve(ConjureBeanType):
49632
+
49633
+ @builtins.classmethod
49634
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
49635
+ return {
49636
+ }
49637
+
49638
+ __slots__: List[str] = []
49639
+
49640
+
49641
+
49642
+ scout_compute_resolved_api_LogarithmicCurve.__name__ = "LogarithmicCurve"
49643
+ scout_compute_resolved_api_LogarithmicCurve.__qualname__ = "LogarithmicCurve"
49644
+ scout_compute_resolved_api_LogarithmicCurve.__module__ = "nominal_api.scout_compute_resolved_api"
49645
+
49646
+
48313
49647
  class scout_compute_resolved_api_LowPassConfiguration(ConjureBeanType):
48314
49648
 
48315
49649
  @builtins.classmethod
@@ -49532,6 +50866,51 @@ scout_compute_resolved_api_PersistenceWindowConfiguration.__qualname__ = "Persis
49532
50866
  scout_compute_resolved_api_PersistenceWindowConfiguration.__module__ = "nominal_api.scout_compute_resolved_api"
49533
50867
 
49534
50868
 
50869
+ class scout_compute_resolved_api_PolynomialCurve(ConjureBeanType):
50870
+
50871
+ @builtins.classmethod
50872
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50873
+ return {
50874
+ 'degree': ConjureFieldDefinition('degree', int),
50875
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[float])
50876
+ }
50877
+
50878
+ __slots__: List[str] = ['_degree', '_intercept']
50879
+
50880
+ def __init__(self, degree: int, intercept: Optional[float] = None) -> None:
50881
+ self._degree = degree
50882
+ self._intercept = intercept
50883
+
50884
+ @builtins.property
50885
+ def degree(self) -> int:
50886
+ return self._degree
50887
+
50888
+ @builtins.property
50889
+ def intercept(self) -> Optional[float]:
50890
+ return self._intercept
50891
+
50892
+
50893
+ scout_compute_resolved_api_PolynomialCurve.__name__ = "PolynomialCurve"
50894
+ scout_compute_resolved_api_PolynomialCurve.__qualname__ = "PolynomialCurve"
50895
+ scout_compute_resolved_api_PolynomialCurve.__module__ = "nominal_api.scout_compute_resolved_api"
50896
+
50897
+
50898
+ class scout_compute_resolved_api_PowerCurve(ConjureBeanType):
50899
+
50900
+ @builtins.classmethod
50901
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50902
+ return {
50903
+ }
50904
+
50905
+ __slots__: List[str] = []
50906
+
50907
+
50908
+
50909
+ scout_compute_resolved_api_PowerCurve.__name__ = "PowerCurve"
50910
+ scout_compute_resolved_api_PowerCurve.__qualname__ = "PowerCurve"
50911
+ scout_compute_resolved_api_PowerCurve.__module__ = "nominal_api.scout_compute_resolved_api"
50912
+
50913
+
49535
50914
  class scout_compute_resolved_api_ProductSeriesNode(ConjureBeanType):
49536
50915
 
49537
50916
  @builtins.classmethod
@@ -49561,6 +50940,41 @@ scout_compute_resolved_api_ProductSeriesNode.__qualname__ = "ProductSeriesNode"
49561
50940
  scout_compute_resolved_api_ProductSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
49562
50941
 
49563
50942
 
50943
+ class scout_compute_resolved_api_RangeMap(ConjureBeanType):
50944
+
50945
+ @builtins.classmethod
50946
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50947
+ return {
50948
+ 'start': ConjureFieldDefinition('start', OptionalTypeWrapper[float]),
50949
+ 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[float]),
50950
+ 'output': ConjureFieldDefinition('output', str)
50951
+ }
50952
+
50953
+ __slots__: List[str] = ['_start', '_end', '_output']
50954
+
50955
+ def __init__(self, output: str, end: Optional[float] = None, start: Optional[float] = None) -> None:
50956
+ self._start = start
50957
+ self._end = end
50958
+ self._output = output
50959
+
50960
+ @builtins.property
50961
+ def start(self) -> Optional[float]:
50962
+ return self._start
50963
+
50964
+ @builtins.property
50965
+ def end(self) -> Optional[float]:
50966
+ return self._end
50967
+
50968
+ @builtins.property
50969
+ def output(self) -> str:
50970
+ return self._output
50971
+
50972
+
50973
+ scout_compute_resolved_api_RangeMap.__name__ = "RangeMap"
50974
+ scout_compute_resolved_api_RangeMap.__qualname__ = "RangeMap"
50975
+ scout_compute_resolved_api_RangeMap.__module__ = "nominal_api.scout_compute_resolved_api"
50976
+
50977
+
49564
50978
  class scout_compute_resolved_api_RangesNode(ConjureUnionType):
49565
50979
  _enum_equality: Optional["scout_compute_resolved_api_EnumEqualityRangesNode"] = None
49566
50980
  _enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None
@@ -50090,6 +51504,7 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50090
51504
  _frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None
50091
51505
  _histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None
50092
51506
  _geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None
51507
+ _curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None
50093
51508
 
50094
51509
  @builtins.classmethod
50095
51510
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -50101,7 +51516,8 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50101
51516
  'cartesian3d': ConjureFieldDefinition('cartesian3d', scout_compute_resolved_api_SummarizeCartesian3dNode),
50102
51517
  'frequency': ConjureFieldDefinition('frequency', scout_compute_resolved_api_FrequencyDomainNode),
50103
51518
  'histogram': ConjureFieldDefinition('histogram', scout_compute_resolved_api_HistogramNode),
50104
- 'geo': ConjureFieldDefinition('geo', scout_compute_resolved_api_SummarizeGeoNode)
51519
+ 'geo': ConjureFieldDefinition('geo', scout_compute_resolved_api_SummarizeGeoNode),
51520
+ 'curve': ConjureFieldDefinition('curve', scout_compute_resolved_api_CurveFitNode)
50105
51521
  }
50106
51522
 
50107
51523
  def __init__(
@@ -50114,10 +51530,11 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50114
51530
  frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None,
50115
51531
  histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None,
50116
51532
  geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None,
51533
+ curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None,
50117
51534
  type_of_union: Optional[str] = None
50118
51535
  ) -> None:
50119
51536
  if type_of_union is None:
50120
- if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (histogram is not None) + (geo is not None) != 1:
51537
+ if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (histogram is not None) + (geo is not None) + (curve is not None) != 1:
50121
51538
  raise ValueError('a union must contain a single member')
50122
51539
 
50123
51540
  if ranges is not None:
@@ -50144,6 +51561,9 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50144
51561
  if geo is not None:
50145
51562
  self._geo = geo
50146
51563
  self._type = 'geo'
51564
+ if curve is not None:
51565
+ self._curve = curve
51566
+ self._type = 'curve'
50147
51567
 
50148
51568
  elif type_of_union == 'ranges':
50149
51569
  if ranges is None:
@@ -50185,6 +51605,11 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50185
51605
  raise ValueError('a union value must not be None')
50186
51606
  self._geo = geo
50187
51607
  self._type = 'geo'
51608
+ elif type_of_union == 'curve':
51609
+ if curve is None:
51610
+ raise ValueError('a union value must not be None')
51611
+ self._curve = curve
51612
+ self._type = 'curve'
50188
51613
 
50189
51614
  @builtins.property
50190
51615
  def ranges(self) -> Optional["scout_compute_resolved_api_SummarizeRangesNode"]:
@@ -50218,6 +51643,10 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50218
51643
  def geo(self) -> Optional["scout_compute_resolved_api_SummarizeGeoNode"]:
50219
51644
  return self._geo
50220
51645
 
51646
+ @builtins.property
51647
+ def curve(self) -> Optional["scout_compute_resolved_api_CurveFitNode"]:
51648
+ return self._curve
51649
+
50221
51650
  def accept(self, visitor) -> Any:
50222
51651
  if not isinstance(visitor, scout_compute_resolved_api_ResolvedNodeVisitor):
50223
51652
  raise ValueError('{} is not an instance of scout_compute_resolved_api_ResolvedNodeVisitor'.format(visitor.__class__.__name__))
@@ -50237,6 +51666,8 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50237
51666
  return visitor._histogram(self.histogram)
50238
51667
  if self._type == 'geo' and self.geo is not None:
50239
51668
  return visitor._geo(self.geo)
51669
+ if self._type == 'curve' and self.curve is not None:
51670
+ return visitor._curve(self.curve)
50240
51671
 
50241
51672
 
50242
51673
  scout_compute_resolved_api_ResolvedNode.__name__ = "ResolvedNode"
@@ -50278,6 +51709,10 @@ class scout_compute_resolved_api_ResolvedNodeVisitor:
50278
51709
  def _geo(self, geo: "scout_compute_resolved_api_SummarizeGeoNode") -> Any:
50279
51710
  pass
50280
51711
 
51712
+ @abstractmethod
51713
+ def _curve(self, curve: "scout_compute_resolved_api_CurveFitNode") -> Any:
51714
+ pass
51715
+
50281
51716
 
50282
51717
  scout_compute_resolved_api_ResolvedNodeVisitor.__name__ = "ResolvedNodeVisitor"
50283
51718
  scout_compute_resolved_api_ResolvedNodeVisitor.__qualname__ = "ResolvedNodeVisitor"
@@ -50436,6 +51871,76 @@ scout_compute_resolved_api_Scatter3dNode.__qualname__ = "Scatter3dNode"
50436
51871
  scout_compute_resolved_api_Scatter3dNode.__module__ = "nominal_api.scout_compute_resolved_api"
50437
51872
 
50438
51873
 
51874
+ class scout_compute_resolved_api_ScatterCurveFitNode(ConjureBeanType):
51875
+
51876
+ @builtins.classmethod
51877
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
51878
+ return {
51879
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_resolved_api_ScatterNode),
51880
+ 'options': ConjureFieldDefinition('options', scout_compute_resolved_api_ScatterFitOptions)
51881
+ }
51882
+
51883
+ __slots__: List[str] = ['_scatter', '_options']
51884
+
51885
+ def __init__(self, options: "scout_compute_resolved_api_ScatterFitOptions", scatter: "scout_compute_resolved_api_ScatterNode") -> None:
51886
+ self._scatter = scatter
51887
+ self._options = options
51888
+
51889
+ @builtins.property
51890
+ def scatter(self) -> "scout_compute_resolved_api_ScatterNode":
51891
+ return self._scatter
51892
+
51893
+ @builtins.property
51894
+ def options(self) -> "scout_compute_resolved_api_ScatterFitOptions":
51895
+ return self._options
51896
+
51897
+
51898
+ scout_compute_resolved_api_ScatterCurveFitNode.__name__ = "ScatterCurveFitNode"
51899
+ scout_compute_resolved_api_ScatterCurveFitNode.__qualname__ = "ScatterCurveFitNode"
51900
+ scout_compute_resolved_api_ScatterCurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
51901
+
51902
+
51903
+ class scout_compute_resolved_api_ScatterFitOptions(ConjureBeanType):
51904
+
51905
+ @builtins.classmethod
51906
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
51907
+ return {
51908
+ 'min_x': ConjureFieldDefinition('minX', OptionalTypeWrapper[float]),
51909
+ 'max_x': ConjureFieldDefinition('maxX', OptionalTypeWrapper[float]),
51910
+ 'min_y': ConjureFieldDefinition('minY', OptionalTypeWrapper[float]),
51911
+ 'max_y': ConjureFieldDefinition('maxY', OptionalTypeWrapper[float])
51912
+ }
51913
+
51914
+ __slots__: List[str] = ['_min_x', '_max_x', '_min_y', '_max_y']
51915
+
51916
+ def __init__(self, max_x: Optional[float] = None, max_y: Optional[float] = None, min_x: Optional[float] = None, min_y: Optional[float] = None) -> None:
51917
+ self._min_x = min_x
51918
+ self._max_x = max_x
51919
+ self._min_y = min_y
51920
+ self._max_y = max_y
51921
+
51922
+ @builtins.property
51923
+ def min_x(self) -> Optional[float]:
51924
+ return self._min_x
51925
+
51926
+ @builtins.property
51927
+ def max_x(self) -> Optional[float]:
51928
+ return self._max_x
51929
+
51930
+ @builtins.property
51931
+ def min_y(self) -> Optional[float]:
51932
+ return self._min_y
51933
+
51934
+ @builtins.property
51935
+ def max_y(self) -> Optional[float]:
51936
+ return self._max_y
51937
+
51938
+
51939
+ scout_compute_resolved_api_ScatterFitOptions.__name__ = "ScatterFitOptions"
51940
+ scout_compute_resolved_api_ScatterFitOptions.__qualname__ = "ScatterFitOptions"
51941
+ scout_compute_resolved_api_ScatterFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
51942
+
51943
+
50439
51944
  class scout_compute_resolved_api_ScatterNode(ConjureBeanType):
50440
51945
 
50441
51946
  @builtins.classmethod
@@ -51400,6 +52905,58 @@ scout_compute_resolved_api_TimeDifferenceSeriesNode.__qualname__ = "TimeDifferen
51400
52905
  scout_compute_resolved_api_TimeDifferenceSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
51401
52906
 
51402
52907
 
52908
+ class scout_compute_resolved_api_TimeSeriesCurveFitNode(ConjureBeanType):
52909
+
52910
+ @builtins.classmethod
52911
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
52912
+ return {
52913
+ 'series': ConjureFieldDefinition('series', scout_compute_resolved_api_NumericSeriesNode),
52914
+ 'options': ConjureFieldDefinition('options', scout_compute_resolved_api_TimeSeriesFitOptions)
52915
+ }
52916
+
52917
+ __slots__: List[str] = ['_series', '_options']
52918
+
52919
+ def __init__(self, options: "scout_compute_resolved_api_TimeSeriesFitOptions", series: "scout_compute_resolved_api_NumericSeriesNode") -> None:
52920
+ self._series = series
52921
+ self._options = options
52922
+
52923
+ @builtins.property
52924
+ def series(self) -> "scout_compute_resolved_api_NumericSeriesNode":
52925
+ return self._series
52926
+
52927
+ @builtins.property
52928
+ def options(self) -> "scout_compute_resolved_api_TimeSeriesFitOptions":
52929
+ return self._options
52930
+
52931
+
52932
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__name__ = "TimeSeriesCurveFitNode"
52933
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__qualname__ = "TimeSeriesCurveFitNode"
52934
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
52935
+
52936
+
52937
+ class scout_compute_resolved_api_TimeSeriesFitOptions(ConjureBeanType):
52938
+
52939
+ @builtins.classmethod
52940
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
52941
+ return {
52942
+ 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[api_TimeUnit])
52943
+ }
52944
+
52945
+ __slots__: List[str] = ['_time_unit']
52946
+
52947
+ def __init__(self, time_unit: Optional["api_TimeUnit"] = None) -> None:
52948
+ self._time_unit = time_unit
52949
+
52950
+ @builtins.property
52951
+ def time_unit(self) -> Optional["api_TimeUnit"]:
52952
+ return self._time_unit
52953
+
52954
+
52955
+ scout_compute_resolved_api_TimeSeriesFitOptions.__name__ = "TimeSeriesFitOptions"
52956
+ scout_compute_resolved_api_TimeSeriesFitOptions.__qualname__ = "TimeSeriesFitOptions"
52957
+ scout_compute_resolved_api_TimeSeriesFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
52958
+
52959
+
51403
52960
  class scout_compute_resolved_api_UnaryArithmeticSeriesNode(ConjureBeanType):
51404
52961
 
51405
52962
  @builtins.classmethod
@@ -51510,6 +53067,41 @@ scout_compute_resolved_api_ValueDifferenceSeriesNode.__qualname__ = "ValueDiffer
51510
53067
  scout_compute_resolved_api_ValueDifferenceSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
51511
53068
 
51512
53069
 
53070
+ class scout_compute_resolved_api_ValueMapSeriesNode(ConjureBeanType):
53071
+
53072
+ @builtins.classmethod
53073
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
53074
+ return {
53075
+ 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_NumericSeriesNode),
53076
+ 'mapping': ConjureFieldDefinition('mapping', List[scout_compute_resolved_api_RangeMap]),
53077
+ 'fallback': ConjureFieldDefinition('fallback', OptionalTypeWrapper[str])
53078
+ }
53079
+
53080
+ __slots__: List[str] = ['_input', '_mapping', '_fallback']
53081
+
53082
+ def __init__(self, input: "scout_compute_resolved_api_NumericSeriesNode", mapping: List["scout_compute_resolved_api_RangeMap"], fallback: Optional[str] = None) -> None:
53083
+ self._input = input
53084
+ self._mapping = mapping
53085
+ self._fallback = fallback
53086
+
53087
+ @builtins.property
53088
+ def input(self) -> "scout_compute_resolved_api_NumericSeriesNode":
53089
+ return self._input
53090
+
53091
+ @builtins.property
53092
+ def mapping(self) -> List["scout_compute_resolved_api_RangeMap"]:
53093
+ return self._mapping
53094
+
53095
+ @builtins.property
53096
+ def fallback(self) -> Optional[str]:
53097
+ return self._fallback
53098
+
53099
+
53100
+ scout_compute_resolved_api_ValueMapSeriesNode.__name__ = "ValueMapSeriesNode"
53101
+ scout_compute_resolved_api_ValueMapSeriesNode.__qualname__ = "ValueMapSeriesNode"
53102
+ scout_compute_resolved_api_ValueMapSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
53103
+
53104
+
51513
53105
  class scout_compute_resolved_api_Window(ConjureBeanType):
51514
53106
 
51515
53107
  @builtins.classmethod