nominal-api 0.633.0__py3-none-any.whl → 0.636.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.

Potentially problematic release.


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

nominal_api/_impl.py CHANGED
@@ -16925,7 +16925,7 @@ Throws if the asset already has data scopes with data scope names matching those
16925
16925
  _decoder = ConjureDecoder()
16926
16926
  return _decoder.decode(_response.json(), Dict[scout_rids_api_AssetRid, scout_asset_api_Asset], self._return_none_for_unknown_union_types)
16927
16927
 
16928
- def archive(self, auth_header: str, rid: str) -> None:
16928
+ def archive(self, auth_header: str, rid: str, include_linked_workbooks: Optional[bool] = None) -> None:
16929
16929
 
16930
16930
  _headers: Dict[str, Any] = {
16931
16931
  'Accept': 'application/json',
@@ -16933,6 +16933,7 @@ Throws if the asset already has data scopes with data scope names matching those
16933
16933
  }
16934
16934
 
16935
16935
  _params: Dict[str, Any] = {
16936
+ 'includeLinkedWorkbooks': include_linked_workbooks,
16936
16937
  }
16937
16938
 
16938
16939
  _path_params: Dict[str, Any] = {
@@ -33428,6 +33429,7 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33428
33429
  _frequency: Optional["scout_compute_api_FrequencyDomain"] = None
33429
33430
  _histogram: Optional["scout_compute_api_Histogram"] = None
33430
33431
  _geo: Optional["scout_compute_api_SummarizeGeo"] = None
33432
+ _curve: Optional["scout_compute_api_CurveFit"] = None
33431
33433
 
33432
33434
  @builtins.classmethod
33433
33435
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -33439,7 +33441,8 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33439
33441
  'cartesian3d': ConjureFieldDefinition('cartesian3d', scout_compute_api_SummarizeCartesian3d),
33440
33442
  'frequency': ConjureFieldDefinition('frequency', scout_compute_api_FrequencyDomain),
33441
33443
  'histogram': ConjureFieldDefinition('histogram', scout_compute_api_Histogram),
33442
- 'geo': ConjureFieldDefinition('geo', scout_compute_api_SummarizeGeo)
33444
+ 'geo': ConjureFieldDefinition('geo', scout_compute_api_SummarizeGeo),
33445
+ 'curve': ConjureFieldDefinition('curve', scout_compute_api_CurveFit)
33443
33446
  }
33444
33447
 
33445
33448
  def __init__(
@@ -33452,10 +33455,11 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33452
33455
  frequency: Optional["scout_compute_api_FrequencyDomain"] = None,
33453
33456
  histogram: Optional["scout_compute_api_Histogram"] = None,
33454
33457
  geo: Optional["scout_compute_api_SummarizeGeo"] = None,
33458
+ curve: Optional["scout_compute_api_CurveFit"] = None,
33455
33459
  type_of_union: Optional[str] = None
33456
33460
  ) -> None:
33457
33461
  if type_of_union is None:
33458
- 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:
33462
+ 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:
33459
33463
  raise ValueError('a union must contain a single member')
33460
33464
 
33461
33465
  if ranges is not None:
@@ -33482,6 +33486,9 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33482
33486
  if geo is not None:
33483
33487
  self._geo = geo
33484
33488
  self._type = 'geo'
33489
+ if curve is not None:
33490
+ self._curve = curve
33491
+ self._type = 'curve'
33485
33492
 
33486
33493
  elif type_of_union == 'ranges':
33487
33494
  if ranges is None:
@@ -33523,6 +33530,11 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33523
33530
  raise ValueError('a union value must not be None')
33524
33531
  self._geo = geo
33525
33532
  self._type = 'geo'
33533
+ elif type_of_union == 'curve':
33534
+ if curve is None:
33535
+ raise ValueError('a union value must not be None')
33536
+ self._curve = curve
33537
+ self._type = 'curve'
33526
33538
 
33527
33539
  @builtins.property
33528
33540
  def ranges(self) -> Optional["scout_compute_api_SummarizeRanges"]:
@@ -33556,6 +33568,10 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33556
33568
  def geo(self) -> Optional["scout_compute_api_SummarizeGeo"]:
33557
33569
  return self._geo
33558
33570
 
33571
+ @builtins.property
33572
+ def curve(self) -> Optional["scout_compute_api_CurveFit"]:
33573
+ return self._curve
33574
+
33559
33575
  def accept(self, visitor) -> Any:
33560
33576
  if not isinstance(visitor, scout_compute_api_ComputableNodeVisitor):
33561
33577
  raise ValueError('{} is not an instance of scout_compute_api_ComputableNodeVisitor'.format(visitor.__class__.__name__))
@@ -33575,6 +33591,8 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
33575
33591
  return visitor._histogram(self.histogram)
33576
33592
  if self._type == 'geo' and self.geo is not None:
33577
33593
  return visitor._geo(self.geo)
33594
+ if self._type == 'curve' and self.curve is not None:
33595
+ return visitor._curve(self.curve)
33578
33596
 
33579
33597
 
33580
33598
  scout_compute_api_ComputableNode.__name__ = "ComputableNode"
@@ -33616,6 +33634,10 @@ class scout_compute_api_ComputableNodeVisitor:
33616
33634
  def _geo(self, geo: "scout_compute_api_SummarizeGeo") -> Any:
33617
33635
  pass
33618
33636
 
33637
+ @abstractmethod
33638
+ def _curve(self, curve: "scout_compute_api_CurveFit") -> Any:
33639
+ pass
33640
+
33619
33641
 
33620
33642
  scout_compute_api_ComputableNodeVisitor.__name__ = "ComputableNodeVisitor"
33621
33643
  scout_compute_api_ComputableNodeVisitor.__qualname__ = "ComputableNodeVisitor"
@@ -33863,6 +33885,7 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33863
33885
  _frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None
33864
33886
  _numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None
33865
33887
  _enum_histogram: Optional["scout_compute_api_EnumHistogramPlot"] = None
33888
+ _curve_fit: Optional["scout_compute_api_CurveFitResult"] = None
33866
33889
 
33867
33890
  @builtins.classmethod
33868
33891
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -33884,7 +33907,8 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33884
33907
  'range_value': ConjureFieldDefinition('rangeValue', OptionalTypeWrapper[scout_compute_api_Range]),
33885
33908
  'frequency_domain': ConjureFieldDefinition('frequencyDomain', scout_compute_api_FrequencyDomainPlot),
33886
33909
  'numeric_histogram': ConjureFieldDefinition('numericHistogram', scout_compute_api_NumericHistogramPlot),
33887
- 'enum_histogram': ConjureFieldDefinition('enumHistogram', scout_compute_api_EnumHistogramPlot)
33910
+ 'enum_histogram': ConjureFieldDefinition('enumHistogram', scout_compute_api_EnumHistogramPlot),
33911
+ 'curve_fit': ConjureFieldDefinition('curveFit', scout_compute_api_CurveFitResult)
33888
33912
  }
33889
33913
 
33890
33914
  def __init__(
@@ -33907,10 +33931,11 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33907
33931
  frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None,
33908
33932
  numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None,
33909
33933
  enum_histogram: Optional["scout_compute_api_EnumHistogramPlot"] = None,
33934
+ curve_fit: Optional["scout_compute_api_CurveFitResult"] = None,
33910
33935
  type_of_union: Optional[str] = None
33911
33936
  ) -> None:
33912
33937
  if type_of_union is None:
33913
- 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:
33938
+ 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:
33914
33939
  raise ValueError('a union must contain a single member')
33915
33940
 
33916
33941
  if numeric is not None:
@@ -33967,6 +33992,9 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
33967
33992
  if enum_histogram is not None:
33968
33993
  self._enum_histogram = enum_histogram
33969
33994
  self._type = 'enumHistogram'
33995
+ if curve_fit is not None:
33996
+ self._curve_fit = curve_fit
33997
+ self._type = 'curveFit'
33970
33998
 
33971
33999
  elif type_of_union == 'numeric':
33972
34000
  if numeric is None:
@@ -34058,6 +34086,11 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34058
34086
  raise ValueError('a union value must not be None')
34059
34087
  self._enum_histogram = enum_histogram
34060
34088
  self._type = 'enumHistogram'
34089
+ elif type_of_union == 'curveFit':
34090
+ if curve_fit is None:
34091
+ raise ValueError('a union value must not be None')
34092
+ self._curve_fit = curve_fit
34093
+ self._type = 'curveFit'
34061
34094
 
34062
34095
  @builtins.property
34063
34096
  def numeric(self) -> Optional["scout_compute_api_NumericPlot"]:
@@ -34131,6 +34164,10 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34131
34164
  def enum_histogram(self) -> Optional["scout_compute_api_EnumHistogramPlot"]:
34132
34165
  return self._enum_histogram
34133
34166
 
34167
+ @builtins.property
34168
+ def curve_fit(self) -> Optional["scout_compute_api_CurveFitResult"]:
34169
+ return self._curve_fit
34170
+
34134
34171
  def accept(self, visitor) -> Any:
34135
34172
  if not isinstance(visitor, scout_compute_api_ComputeNodeResponseVisitor):
34136
34173
  raise ValueError('{} is not an instance of scout_compute_api_ComputeNodeResponseVisitor'.format(visitor.__class__.__name__))
@@ -34170,6 +34207,8 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
34170
34207
  return visitor._numeric_histogram(self.numeric_histogram)
34171
34208
  if self._type == 'enumHistogram' and self.enum_histogram is not None:
34172
34209
  return visitor._enum_histogram(self.enum_histogram)
34210
+ if self._type == 'curveFit' and self.curve_fit is not None:
34211
+ return visitor._curve_fit(self.curve_fit)
34173
34212
 
34174
34213
 
34175
34214
  scout_compute_api_ComputeNodeResponse.__name__ = "ComputeNodeResponse"
@@ -34251,6 +34290,10 @@ class scout_compute_api_ComputeNodeResponseVisitor:
34251
34290
  def _enum_histogram(self, enum_histogram: "scout_compute_api_EnumHistogramPlot") -> Any:
34252
34291
  pass
34253
34292
 
34293
+ @abstractmethod
34294
+ def _curve_fit(self, curve_fit: "scout_compute_api_CurveFitResult") -> Any:
34295
+ pass
34296
+
34254
34297
 
34255
34298
  scout_compute_api_ComputeNodeResponseVisitor.__name__ = "ComputeNodeResponseVisitor"
34256
34299
  scout_compute_api_ComputeNodeResponseVisitor.__qualname__ = "ComputeNodeResponseVisitor"
@@ -34849,6 +34892,408 @@ scout_compute_api_CumulativeSumSeries.__qualname__ = "CumulativeSumSeries"
34849
34892
  scout_compute_api_CumulativeSumSeries.__module__ = "nominal_api.scout_compute_api"
34850
34893
 
34851
34894
 
34895
+ class scout_compute_api_CurveFit(ConjureBeanType):
34896
+
34897
+ @builtins.classmethod
34898
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
34899
+ return {
34900
+ 'curve_fit_plot_type': ConjureFieldDefinition('curveFitPlotType', scout_compute_api_CurveFitPlotType),
34901
+ 'curve_fit_details': ConjureFieldDefinition('curveFitDetails', scout_compute_api_CurveFitDetails),
34902
+ 'curve_fit_options': ConjureFieldDefinition('curveFitOptions', scout_compute_api_CurveFitOptions)
34903
+ }
34904
+
34905
+ __slots__: List[str] = ['_curve_fit_plot_type', '_curve_fit_details', '_curve_fit_options']
34906
+
34907
+ 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:
34908
+ self._curve_fit_plot_type = curve_fit_plot_type
34909
+ self._curve_fit_details = curve_fit_details
34910
+ self._curve_fit_options = curve_fit_options
34911
+
34912
+ @builtins.property
34913
+ def curve_fit_plot_type(self) -> "scout_compute_api_CurveFitPlotType":
34914
+ return self._curve_fit_plot_type
34915
+
34916
+ @builtins.property
34917
+ def curve_fit_details(self) -> "scout_compute_api_CurveFitDetails":
34918
+ return self._curve_fit_details
34919
+
34920
+ @builtins.property
34921
+ def curve_fit_options(self) -> "scout_compute_api_CurveFitOptions":
34922
+ return self._curve_fit_options
34923
+
34924
+
34925
+ scout_compute_api_CurveFit.__name__ = "CurveFit"
34926
+ scout_compute_api_CurveFit.__qualname__ = "CurveFit"
34927
+ scout_compute_api_CurveFit.__module__ = "nominal_api.scout_compute_api"
34928
+
34929
+
34930
+ class scout_compute_api_CurveFitDetails(ConjureUnionType):
34931
+ _exponential: Optional["scout_compute_api_ExponentialCurve"] = None
34932
+ _logarithmic: Optional["scout_compute_api_LogarithmicCurve"] = None
34933
+ _polynomial: Optional["scout_compute_api_PolynomialCurve"] = None
34934
+ _power: Optional["scout_compute_api_PowerCurve"] = None
34935
+
34936
+ @builtins.classmethod
34937
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
34938
+ return {
34939
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_api_ExponentialCurve),
34940
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_api_LogarithmicCurve),
34941
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_api_PolynomialCurve),
34942
+ 'power': ConjureFieldDefinition('power', scout_compute_api_PowerCurve)
34943
+ }
34944
+
34945
+ def __init__(
34946
+ self,
34947
+ exponential: Optional["scout_compute_api_ExponentialCurve"] = None,
34948
+ logarithmic: Optional["scout_compute_api_LogarithmicCurve"] = None,
34949
+ polynomial: Optional["scout_compute_api_PolynomialCurve"] = None,
34950
+ power: Optional["scout_compute_api_PowerCurve"] = None,
34951
+ type_of_union: Optional[str] = None
34952
+ ) -> None:
34953
+ if type_of_union is None:
34954
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
34955
+ raise ValueError('a union must contain a single member')
34956
+
34957
+ if exponential is not None:
34958
+ self._exponential = exponential
34959
+ self._type = 'exponential'
34960
+ if logarithmic is not None:
34961
+ self._logarithmic = logarithmic
34962
+ self._type = 'logarithmic'
34963
+ if polynomial is not None:
34964
+ self._polynomial = polynomial
34965
+ self._type = 'polynomial'
34966
+ if power is not None:
34967
+ self._power = power
34968
+ self._type = 'power'
34969
+
34970
+ elif type_of_union == 'exponential':
34971
+ if exponential is None:
34972
+ raise ValueError('a union value must not be None')
34973
+ self._exponential = exponential
34974
+ self._type = 'exponential'
34975
+ elif type_of_union == 'logarithmic':
34976
+ if logarithmic is None:
34977
+ raise ValueError('a union value must not be None')
34978
+ self._logarithmic = logarithmic
34979
+ self._type = 'logarithmic'
34980
+ elif type_of_union == 'polynomial':
34981
+ if polynomial is None:
34982
+ raise ValueError('a union value must not be None')
34983
+ self._polynomial = polynomial
34984
+ self._type = 'polynomial'
34985
+ elif type_of_union == 'power':
34986
+ if power is None:
34987
+ raise ValueError('a union value must not be None')
34988
+ self._power = power
34989
+ self._type = 'power'
34990
+
34991
+ @builtins.property
34992
+ def exponential(self) -> Optional["scout_compute_api_ExponentialCurve"]:
34993
+ return self._exponential
34994
+
34995
+ @builtins.property
34996
+ def logarithmic(self) -> Optional["scout_compute_api_LogarithmicCurve"]:
34997
+ return self._logarithmic
34998
+
34999
+ @builtins.property
35000
+ def polynomial(self) -> Optional["scout_compute_api_PolynomialCurve"]:
35001
+ return self._polynomial
35002
+
35003
+ @builtins.property
35004
+ def power(self) -> Optional["scout_compute_api_PowerCurve"]:
35005
+ return self._power
35006
+
35007
+ def accept(self, visitor) -> Any:
35008
+ if not isinstance(visitor, scout_compute_api_CurveFitDetailsVisitor):
35009
+ raise ValueError('{} is not an instance of scout_compute_api_CurveFitDetailsVisitor'.format(visitor.__class__.__name__))
35010
+ if self._type == 'exponential' and self.exponential is not None:
35011
+ return visitor._exponential(self.exponential)
35012
+ if self._type == 'logarithmic' and self.logarithmic is not None:
35013
+ return visitor._logarithmic(self.logarithmic)
35014
+ if self._type == 'polynomial' and self.polynomial is not None:
35015
+ return visitor._polynomial(self.polynomial)
35016
+ if self._type == 'power' and self.power is not None:
35017
+ return visitor._power(self.power)
35018
+
35019
+
35020
+ scout_compute_api_CurveFitDetails.__name__ = "CurveFitDetails"
35021
+ scout_compute_api_CurveFitDetails.__qualname__ = "CurveFitDetails"
35022
+ scout_compute_api_CurveFitDetails.__module__ = "nominal_api.scout_compute_api"
35023
+
35024
+
35025
+ class scout_compute_api_CurveFitDetailsVisitor:
35026
+
35027
+ @abstractmethod
35028
+ def _exponential(self, exponential: "scout_compute_api_ExponentialCurve") -> Any:
35029
+ pass
35030
+
35031
+ @abstractmethod
35032
+ def _logarithmic(self, logarithmic: "scout_compute_api_LogarithmicCurve") -> Any:
35033
+ pass
35034
+
35035
+ @abstractmethod
35036
+ def _polynomial(self, polynomial: "scout_compute_api_PolynomialCurve") -> Any:
35037
+ pass
35038
+
35039
+ @abstractmethod
35040
+ def _power(self, power: "scout_compute_api_PowerCurve") -> Any:
35041
+ pass
35042
+
35043
+
35044
+ scout_compute_api_CurveFitDetailsVisitor.__name__ = "CurveFitDetailsVisitor"
35045
+ scout_compute_api_CurveFitDetailsVisitor.__qualname__ = "CurveFitDetailsVisitor"
35046
+ scout_compute_api_CurveFitDetailsVisitor.__module__ = "nominal_api.scout_compute_api"
35047
+
35048
+
35049
+ class scout_compute_api_CurveFitOptions(ConjureBeanType):
35050
+
35051
+ @builtins.classmethod
35052
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
35053
+ return {
35054
+ }
35055
+
35056
+ __slots__: List[str] = []
35057
+
35058
+
35059
+
35060
+ scout_compute_api_CurveFitOptions.__name__ = "CurveFitOptions"
35061
+ scout_compute_api_CurveFitOptions.__qualname__ = "CurveFitOptions"
35062
+ scout_compute_api_CurveFitOptions.__module__ = "nominal_api.scout_compute_api"
35063
+
35064
+
35065
+ class scout_compute_api_CurveFitPlotType(ConjureUnionType):
35066
+ _time_series: Optional["scout_compute_api_TimeSeriesCurveFit"] = None
35067
+ _scatter: Optional["scout_compute_api_ScatterCurveFit"] = None
35068
+
35069
+ @builtins.classmethod
35070
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
35071
+ return {
35072
+ 'time_series': ConjureFieldDefinition('timeSeries', scout_compute_api_TimeSeriesCurveFit),
35073
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_api_ScatterCurveFit)
35074
+ }
35075
+
35076
+ def __init__(
35077
+ self,
35078
+ time_series: Optional["scout_compute_api_TimeSeriesCurveFit"] = None,
35079
+ scatter: Optional["scout_compute_api_ScatterCurveFit"] = None,
35080
+ type_of_union: Optional[str] = None
35081
+ ) -> None:
35082
+ if type_of_union is None:
35083
+ if (time_series is not None) + (scatter is not None) != 1:
35084
+ raise ValueError('a union must contain a single member')
35085
+
35086
+ if time_series is not None:
35087
+ self._time_series = time_series
35088
+ self._type = 'timeSeries'
35089
+ if scatter is not None:
35090
+ self._scatter = scatter
35091
+ self._type = 'scatter'
35092
+
35093
+ elif type_of_union == 'timeSeries':
35094
+ if time_series is None:
35095
+ raise ValueError('a union value must not be None')
35096
+ self._time_series = time_series
35097
+ self._type = 'timeSeries'
35098
+ elif type_of_union == 'scatter':
35099
+ if scatter is None:
35100
+ raise ValueError('a union value must not be None')
35101
+ self._scatter = scatter
35102
+ self._type = 'scatter'
35103
+
35104
+ @builtins.property
35105
+ def time_series(self) -> Optional["scout_compute_api_TimeSeriesCurveFit"]:
35106
+ return self._time_series
35107
+
35108
+ @builtins.property
35109
+ def scatter(self) -> Optional["scout_compute_api_ScatterCurveFit"]:
35110
+ return self._scatter
35111
+
35112
+ def accept(self, visitor) -> Any:
35113
+ if not isinstance(visitor, scout_compute_api_CurveFitPlotTypeVisitor):
35114
+ raise ValueError('{} is not an instance of scout_compute_api_CurveFitPlotTypeVisitor'.format(visitor.__class__.__name__))
35115
+ if self._type == 'timeSeries' and self.time_series is not None:
35116
+ return visitor._time_series(self.time_series)
35117
+ if self._type == 'scatter' and self.scatter is not None:
35118
+ return visitor._scatter(self.scatter)
35119
+
35120
+
35121
+ scout_compute_api_CurveFitPlotType.__name__ = "CurveFitPlotType"
35122
+ scout_compute_api_CurveFitPlotType.__qualname__ = "CurveFitPlotType"
35123
+ scout_compute_api_CurveFitPlotType.__module__ = "nominal_api.scout_compute_api"
35124
+
35125
+
35126
+ class scout_compute_api_CurveFitPlotTypeVisitor:
35127
+
35128
+ @abstractmethod
35129
+ def _time_series(self, time_series: "scout_compute_api_TimeSeriesCurveFit") -> Any:
35130
+ pass
35131
+
35132
+ @abstractmethod
35133
+ def _scatter(self, scatter: "scout_compute_api_ScatterCurveFit") -> Any:
35134
+ pass
35135
+
35136
+
35137
+ scout_compute_api_CurveFitPlotTypeVisitor.__name__ = "CurveFitPlotTypeVisitor"
35138
+ scout_compute_api_CurveFitPlotTypeVisitor.__qualname__ = "CurveFitPlotTypeVisitor"
35139
+ scout_compute_api_CurveFitPlotTypeVisitor.__module__ = "nominal_api.scout_compute_api"
35140
+
35141
+
35142
+ class scout_compute_api_CurveFitResult(ConjureBeanType):
35143
+
35144
+ @builtins.classmethod
35145
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
35146
+ return {
35147
+ 'r2': ConjureFieldDefinition('r2', float),
35148
+ 'curve_result_details': ConjureFieldDefinition('curveResultDetails', scout_compute_api_CurveResultDetails)
35149
+ }
35150
+
35151
+ __slots__: List[str] = ['_r2', '_curve_result_details']
35152
+
35153
+ def __init__(self, curve_result_details: "scout_compute_api_CurveResultDetails", r2: float) -> None:
35154
+ self._r2 = r2
35155
+ self._curve_result_details = curve_result_details
35156
+
35157
+ @builtins.property
35158
+ def r2(self) -> float:
35159
+ """
35160
+ R^2 (coefficient of determination) for the fit curve, a normalized measure of how well the curve fits the data.
35161
+ Usually ranges from 0 to 1, with higher indicating better fit (points closer to fit line).
35162
+ """
35163
+ return self._r2
35164
+
35165
+ @builtins.property
35166
+ def curve_result_details(self) -> "scout_compute_api_CurveResultDetails":
35167
+ """
35168
+ Description of the fit curve.
35169
+ """
35170
+ return self._curve_result_details
35171
+
35172
+
35173
+ scout_compute_api_CurveFitResult.__name__ = "CurveFitResult"
35174
+ scout_compute_api_CurveFitResult.__qualname__ = "CurveFitResult"
35175
+ scout_compute_api_CurveFitResult.__module__ = "nominal_api.scout_compute_api"
35176
+
35177
+
35178
+ class scout_compute_api_CurveResultDetails(ConjureUnionType):
35179
+ _exponential: Optional["scout_compute_api_ExponentialResultDetails"] = None
35180
+ _logarithmic: Optional["scout_compute_api_LogarithmicResultDetails"] = None
35181
+ _polynomial: Optional["scout_compute_api_PolynomialResultDetails"] = None
35182
+ _power: Optional["scout_compute_api_PowerResultDetails"] = None
35183
+
35184
+ @builtins.classmethod
35185
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
35186
+ return {
35187
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_api_ExponentialResultDetails),
35188
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_api_LogarithmicResultDetails),
35189
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_api_PolynomialResultDetails),
35190
+ 'power': ConjureFieldDefinition('power', scout_compute_api_PowerResultDetails)
35191
+ }
35192
+
35193
+ def __init__(
35194
+ self,
35195
+ exponential: Optional["scout_compute_api_ExponentialResultDetails"] = None,
35196
+ logarithmic: Optional["scout_compute_api_LogarithmicResultDetails"] = None,
35197
+ polynomial: Optional["scout_compute_api_PolynomialResultDetails"] = None,
35198
+ power: Optional["scout_compute_api_PowerResultDetails"] = None,
35199
+ type_of_union: Optional[str] = None
35200
+ ) -> None:
35201
+ if type_of_union is None:
35202
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
35203
+ raise ValueError('a union must contain a single member')
35204
+
35205
+ if exponential is not None:
35206
+ self._exponential = exponential
35207
+ self._type = 'exponential'
35208
+ if logarithmic is not None:
35209
+ self._logarithmic = logarithmic
35210
+ self._type = 'logarithmic'
35211
+ if polynomial is not None:
35212
+ self._polynomial = polynomial
35213
+ self._type = 'polynomial'
35214
+ if power is not None:
35215
+ self._power = power
35216
+ self._type = 'power'
35217
+
35218
+ elif type_of_union == 'exponential':
35219
+ if exponential is None:
35220
+ raise ValueError('a union value must not be None')
35221
+ self._exponential = exponential
35222
+ self._type = 'exponential'
35223
+ elif type_of_union == 'logarithmic':
35224
+ if logarithmic is None:
35225
+ raise ValueError('a union value must not be None')
35226
+ self._logarithmic = logarithmic
35227
+ self._type = 'logarithmic'
35228
+ elif type_of_union == 'polynomial':
35229
+ if polynomial is None:
35230
+ raise ValueError('a union value must not be None')
35231
+ self._polynomial = polynomial
35232
+ self._type = 'polynomial'
35233
+ elif type_of_union == 'power':
35234
+ if power is None:
35235
+ raise ValueError('a union value must not be None')
35236
+ self._power = power
35237
+ self._type = 'power'
35238
+
35239
+ @builtins.property
35240
+ def exponential(self) -> Optional["scout_compute_api_ExponentialResultDetails"]:
35241
+ return self._exponential
35242
+
35243
+ @builtins.property
35244
+ def logarithmic(self) -> Optional["scout_compute_api_LogarithmicResultDetails"]:
35245
+ return self._logarithmic
35246
+
35247
+ @builtins.property
35248
+ def polynomial(self) -> Optional["scout_compute_api_PolynomialResultDetails"]:
35249
+ return self._polynomial
35250
+
35251
+ @builtins.property
35252
+ def power(self) -> Optional["scout_compute_api_PowerResultDetails"]:
35253
+ return self._power
35254
+
35255
+ def accept(self, visitor) -> Any:
35256
+ if not isinstance(visitor, scout_compute_api_CurveResultDetailsVisitor):
35257
+ raise ValueError('{} is not an instance of scout_compute_api_CurveResultDetailsVisitor'.format(visitor.__class__.__name__))
35258
+ if self._type == 'exponential' and self.exponential is not None:
35259
+ return visitor._exponential(self.exponential)
35260
+ if self._type == 'logarithmic' and self.logarithmic is not None:
35261
+ return visitor._logarithmic(self.logarithmic)
35262
+ if self._type == 'polynomial' and self.polynomial is not None:
35263
+ return visitor._polynomial(self.polynomial)
35264
+ if self._type == 'power' and self.power is not None:
35265
+ return visitor._power(self.power)
35266
+
35267
+
35268
+ scout_compute_api_CurveResultDetails.__name__ = "CurveResultDetails"
35269
+ scout_compute_api_CurveResultDetails.__qualname__ = "CurveResultDetails"
35270
+ scout_compute_api_CurveResultDetails.__module__ = "nominal_api.scout_compute_api"
35271
+
35272
+
35273
+ class scout_compute_api_CurveResultDetailsVisitor:
35274
+
35275
+ @abstractmethod
35276
+ def _exponential(self, exponential: "scout_compute_api_ExponentialResultDetails") -> Any:
35277
+ pass
35278
+
35279
+ @abstractmethod
35280
+ def _logarithmic(self, logarithmic: "scout_compute_api_LogarithmicResultDetails") -> Any:
35281
+ pass
35282
+
35283
+ @abstractmethod
35284
+ def _polynomial(self, polynomial: "scout_compute_api_PolynomialResultDetails") -> Any:
35285
+ pass
35286
+
35287
+ @abstractmethod
35288
+ def _power(self, power: "scout_compute_api_PowerResultDetails") -> Any:
35289
+ pass
35290
+
35291
+
35292
+ scout_compute_api_CurveResultDetailsVisitor.__name__ = "CurveResultDetailsVisitor"
35293
+ scout_compute_api_CurveResultDetailsVisitor.__qualname__ = "CurveResultDetailsVisitor"
35294
+ scout_compute_api_CurveResultDetailsVisitor.__module__ = "nominal_api.scout_compute_api"
35295
+
35296
+
34852
35297
  class scout_compute_api_DataSourceChannel(ConjureBeanType):
34853
35298
 
34854
35299
  @builtins.classmethod
@@ -35608,6 +36053,7 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35608
36053
  _time_shift: Optional["scout_compute_api_EnumTimeShiftSeries"] = None
35609
36054
  _union: Optional["scout_compute_api_EnumUnionSeries"] = None
35610
36055
  _filter_transformation: Optional["scout_compute_api_EnumFilterTransformationSeries"] = None
36056
+ _value_map: Optional["scout_compute_api_ValueMapSeries"] = None
35611
36057
 
35612
36058
  @builtins.classmethod
35613
36059
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -35620,7 +36066,8 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35620
36066
  'time_range_filter': ConjureFieldDefinition('timeRangeFilter', scout_compute_api_EnumTimeRangeFilterSeries),
35621
36067
  'time_shift': ConjureFieldDefinition('timeShift', scout_compute_api_EnumTimeShiftSeries),
35622
36068
  'union': ConjureFieldDefinition('union', scout_compute_api_EnumUnionSeries),
35623
- 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_api_EnumFilterTransformationSeries)
36069
+ 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_api_EnumFilterTransformationSeries),
36070
+ 'value_map': ConjureFieldDefinition('valueMap', scout_compute_api_ValueMapSeries)
35624
36071
  }
35625
36072
 
35626
36073
  def __init__(
@@ -35634,10 +36081,11 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35634
36081
  time_shift: Optional["scout_compute_api_EnumTimeShiftSeries"] = None,
35635
36082
  union: Optional["scout_compute_api_EnumUnionSeries"] = None,
35636
36083
  filter_transformation: Optional["scout_compute_api_EnumFilterTransformationSeries"] = None,
36084
+ value_map: Optional["scout_compute_api_ValueMapSeries"] = None,
35637
36085
  type_of_union: Optional[str] = None
35638
36086
  ) -> None:
35639
36087
  if type_of_union is None:
35640
- 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:
36088
+ 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:
35641
36089
  raise ValueError('a union must contain a single member')
35642
36090
 
35643
36091
  if aggregate is not None:
@@ -35667,6 +36115,9 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35667
36115
  if filter_transformation is not None:
35668
36116
  self._filter_transformation = filter_transformation
35669
36117
  self._type = 'filterTransformation'
36118
+ if value_map is not None:
36119
+ self._value_map = value_map
36120
+ self._type = 'valueMap'
35670
36121
 
35671
36122
  elif type_of_union == 'aggregate':
35672
36123
  if aggregate is None:
@@ -35713,6 +36164,11 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35713
36164
  raise ValueError('a union value must not be None')
35714
36165
  self._filter_transformation = filter_transformation
35715
36166
  self._type = 'filterTransformation'
36167
+ elif type_of_union == 'valueMap':
36168
+ if value_map is None:
36169
+ raise ValueError('a union value must not be None')
36170
+ self._value_map = value_map
36171
+ self._type = 'valueMap'
35716
36172
 
35717
36173
  @builtins.property
35718
36174
  def aggregate(self) -> Optional["scout_compute_api_AggregateEnumSeries"]:
@@ -35750,6 +36206,10 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35750
36206
  def filter_transformation(self) -> Optional["scout_compute_api_EnumFilterTransformationSeries"]:
35751
36207
  return self._filter_transformation
35752
36208
 
36209
+ @builtins.property
36210
+ def value_map(self) -> Optional["scout_compute_api_ValueMapSeries"]:
36211
+ return self._value_map
36212
+
35753
36213
  def accept(self, visitor) -> Any:
35754
36214
  if not isinstance(visitor, scout_compute_api_EnumSeriesVisitor):
35755
36215
  raise ValueError('{} is not an instance of scout_compute_api_EnumSeriesVisitor'.format(visitor.__class__.__name__))
@@ -35771,6 +36231,8 @@ class scout_compute_api_EnumSeries(ConjureUnionType):
35771
36231
  return visitor._union(self.union)
35772
36232
  if self._type == 'filterTransformation' and self.filter_transformation is not None:
35773
36233
  return visitor._filter_transformation(self.filter_transformation)
36234
+ if self._type == 'valueMap' and self.value_map is not None:
36235
+ return visitor._value_map(self.value_map)
35774
36236
 
35775
36237
 
35776
36238
  scout_compute_api_EnumSeries.__name__ = "EnumSeries"
@@ -35816,6 +36278,10 @@ class scout_compute_api_EnumSeriesVisitor:
35816
36278
  def _filter_transformation(self, filter_transformation: "scout_compute_api_EnumFilterTransformationSeries") -> Any:
35817
36279
  pass
35818
36280
 
36281
+ @abstractmethod
36282
+ def _value_map(self, value_map: "scout_compute_api_ValueMapSeries") -> Any:
36283
+ pass
36284
+
35819
36285
 
35820
36286
  scout_compute_api_EnumSeriesVisitor.__name__ = "EnumSeriesVisitor"
35821
36287
  scout_compute_api_EnumSeriesVisitor.__qualname__ = "EnumSeriesVisitor"
@@ -36099,6 +36565,64 @@ scout_compute_api_ExcludeNegativeValues.__qualname__ = "ExcludeNegativeValues"
36099
36565
  scout_compute_api_ExcludeNegativeValues.__module__ = "nominal_api.scout_compute_api"
36100
36566
 
36101
36567
 
36568
+ class scout_compute_api_ExponentialCurve(ConjureBeanType):
36569
+
36570
+ @builtins.classmethod
36571
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
36572
+ return {
36573
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
36574
+ }
36575
+
36576
+ __slots__: List[str] = ['_intercept']
36577
+
36578
+ def __init__(self, intercept: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
36579
+ self._intercept = intercept
36580
+
36581
+ @builtins.property
36582
+ def intercept(self) -> Optional["scout_compute_api_DoubleConstant"]:
36583
+ """
36584
+ The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.
36585
+ """
36586
+ return self._intercept
36587
+
36588
+
36589
+ scout_compute_api_ExponentialCurve.__name__ = "ExponentialCurve"
36590
+ scout_compute_api_ExponentialCurve.__qualname__ = "ExponentialCurve"
36591
+ scout_compute_api_ExponentialCurve.__module__ = "nominal_api.scout_compute_api"
36592
+
36593
+
36594
+ class scout_compute_api_ExponentialResultDetails(ConjureBeanType):
36595
+ """
36596
+ y = a * e^(b * x)
36597
+ """
36598
+
36599
+ @builtins.classmethod
36600
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
36601
+ return {
36602
+ 'a': ConjureFieldDefinition('a', float),
36603
+ 'b': ConjureFieldDefinition('b', float)
36604
+ }
36605
+
36606
+ __slots__: List[str] = ['_a', '_b']
36607
+
36608
+ def __init__(self, a: float, b: float) -> None:
36609
+ self._a = a
36610
+ self._b = b
36611
+
36612
+ @builtins.property
36613
+ def a(self) -> float:
36614
+ return self._a
36615
+
36616
+ @builtins.property
36617
+ def b(self) -> float:
36618
+ return self._b
36619
+
36620
+
36621
+ scout_compute_api_ExponentialResultDetails.__name__ = "ExponentialResultDetails"
36622
+ scout_compute_api_ExponentialResultDetails.__qualname__ = "ExponentialResultDetails"
36623
+ scout_compute_api_ExponentialResultDetails.__module__ = "nominal_api.scout_compute_api"
36624
+
36625
+
36102
36626
  class scout_compute_api_Fft(ConjureBeanType):
36103
36627
  """
36104
36628
  Returns the single sided amplitude spectrum of the input series.
@@ -37544,6 +38068,54 @@ scout_compute_api_LogValue.__qualname__ = "LogValue"
37544
38068
  scout_compute_api_LogValue.__module__ = "nominal_api.scout_compute_api"
37545
38069
 
37546
38070
 
38071
+ class scout_compute_api_LogarithmicCurve(ConjureBeanType):
38072
+
38073
+ @builtins.classmethod
38074
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
38075
+ return {
38076
+ }
38077
+
38078
+ __slots__: List[str] = []
38079
+
38080
+
38081
+
38082
+ scout_compute_api_LogarithmicCurve.__name__ = "LogarithmicCurve"
38083
+ scout_compute_api_LogarithmicCurve.__qualname__ = "LogarithmicCurve"
38084
+ scout_compute_api_LogarithmicCurve.__module__ = "nominal_api.scout_compute_api"
38085
+
38086
+
38087
+ class scout_compute_api_LogarithmicResultDetails(ConjureBeanType):
38088
+ """
38089
+ y = a * ln(x) + b
38090
+ """
38091
+
38092
+ @builtins.classmethod
38093
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
38094
+ return {
38095
+ 'a': ConjureFieldDefinition('a', float),
38096
+ 'b': ConjureFieldDefinition('b', float)
38097
+ }
38098
+
38099
+ __slots__: List[str] = ['_a', '_b']
38100
+
38101
+ def __init__(self, a: float, b: float) -> None:
38102
+ self._a = a
38103
+ self._b = b
38104
+
38105
+ @builtins.property
38106
+ def a(self) -> float:
38107
+ return self._a
38108
+
38109
+ @builtins.property
38110
+ def b(self) -> float:
38111
+ return self._b
38112
+
38113
+
38114
+ scout_compute_api_LogarithmicResultDetails.__name__ = "LogarithmicResultDetails"
38115
+ scout_compute_api_LogarithmicResultDetails.__qualname__ = "LogarithmicResultDetails"
38116
+ scout_compute_api_LogarithmicResultDetails.__module__ = "nominal_api.scout_compute_api"
38117
+
38118
+
37547
38119
  class scout_compute_api_LowPassConfiguration(ConjureBeanType):
37548
38120
 
37549
38121
  @builtins.classmethod
@@ -39972,6 +40544,115 @@ scout_compute_api_Point3d.__qualname__ = "Point3d"
39972
40544
  scout_compute_api_Point3d.__module__ = "nominal_api.scout_compute_api"
39973
40545
 
39974
40546
 
40547
+ class scout_compute_api_PolynomialCurve(ConjureBeanType):
40548
+
40549
+ @builtins.classmethod
40550
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40551
+ return {
40552
+ 'degree': ConjureFieldDefinition('degree', scout_compute_api_IntegerConstant),
40553
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
40554
+ }
40555
+
40556
+ __slots__: List[str] = ['_degree', '_intercept']
40557
+
40558
+ def __init__(self, degree: "scout_compute_api_IntegerConstant", intercept: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
40559
+ self._degree = degree
40560
+ self._intercept = intercept
40561
+
40562
+ @builtins.property
40563
+ def degree(self) -> "scout_compute_api_IntegerConstant":
40564
+ """
40565
+ The highest allowable degree of the fit polynomial.
40566
+ """
40567
+ return self._degree
40568
+
40569
+ @builtins.property
40570
+ def intercept(self) -> Optional["scout_compute_api_DoubleConstant"]:
40571
+ """
40572
+ The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.
40573
+ """
40574
+ return self._intercept
40575
+
40576
+
40577
+ scout_compute_api_PolynomialCurve.__name__ = "PolynomialCurve"
40578
+ scout_compute_api_PolynomialCurve.__qualname__ = "PolynomialCurve"
40579
+ scout_compute_api_PolynomialCurve.__module__ = "nominal_api.scout_compute_api"
40580
+
40581
+
40582
+ class scout_compute_api_PolynomialResultDetails(ConjureBeanType):
40583
+ """
40584
+ y = sum( a_i * x^i ) for i in 0...len(a)
40585
+ """
40586
+
40587
+ @builtins.classmethod
40588
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40589
+ return {
40590
+ 'a': ConjureFieldDefinition('a', List[float])
40591
+ }
40592
+
40593
+ __slots__: List[str] = ['_a']
40594
+
40595
+ def __init__(self, a: List[float]) -> None:
40596
+ self._a = a
40597
+
40598
+ @builtins.property
40599
+ def a(self) -> List[float]:
40600
+ return self._a
40601
+
40602
+
40603
+ scout_compute_api_PolynomialResultDetails.__name__ = "PolynomialResultDetails"
40604
+ scout_compute_api_PolynomialResultDetails.__qualname__ = "PolynomialResultDetails"
40605
+ scout_compute_api_PolynomialResultDetails.__module__ = "nominal_api.scout_compute_api"
40606
+
40607
+
40608
+ class scout_compute_api_PowerCurve(ConjureBeanType):
40609
+
40610
+ @builtins.classmethod
40611
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40612
+ return {
40613
+ }
40614
+
40615
+ __slots__: List[str] = []
40616
+
40617
+
40618
+
40619
+ scout_compute_api_PowerCurve.__name__ = "PowerCurve"
40620
+ scout_compute_api_PowerCurve.__qualname__ = "PowerCurve"
40621
+ scout_compute_api_PowerCurve.__module__ = "nominal_api.scout_compute_api"
40622
+
40623
+
40624
+ class scout_compute_api_PowerResultDetails(ConjureBeanType):
40625
+ """
40626
+ y = a * x^b
40627
+ """
40628
+
40629
+ @builtins.classmethod
40630
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40631
+ return {
40632
+ 'a': ConjureFieldDefinition('a', float),
40633
+ 'b': ConjureFieldDefinition('b', float)
40634
+ }
40635
+
40636
+ __slots__: List[str] = ['_a', '_b']
40637
+
40638
+ def __init__(self, a: float, b: float) -> None:
40639
+ self._a = a
40640
+ self._b = b
40641
+
40642
+ @builtins.property
40643
+ def a(self) -> float:
40644
+ return self._a
40645
+
40646
+ @builtins.property
40647
+ def b(self) -> float:
40648
+ return self._b
40649
+
40650
+
40651
+ scout_compute_api_PowerResultDetails.__name__ = "PowerResultDetails"
40652
+ scout_compute_api_PowerResultDetails.__qualname__ = "PowerResultDetails"
40653
+ scout_compute_api_PowerResultDetails.__module__ = "nominal_api.scout_compute_api"
40654
+
40655
+
39975
40656
  class scout_compute_api_ProductSeries(ConjureBeanType):
39976
40657
  """
39977
40658
  For every timestamp specified in the input series, outputs a value that is the product for that timestamp
@@ -40230,6 +40911,50 @@ scout_compute_api_RangeAggregationOperationVisitor.__qualname__ = "RangeAggregat
40230
40911
  scout_compute_api_RangeAggregationOperationVisitor.__module__ = "nominal_api.scout_compute_api"
40231
40912
 
40232
40913
 
40914
+ class scout_compute_api_RangeMap(ConjureBeanType):
40915
+
40916
+ @builtins.classmethod
40917
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
40918
+ return {
40919
+ 'start': ConjureFieldDefinition('start', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
40920
+ 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
40921
+ 'output': ConjureFieldDefinition('output', scout_compute_api_StringConstant)
40922
+ }
40923
+
40924
+ __slots__: List[str] = ['_start', '_end', '_output']
40925
+
40926
+ def __init__(self, output: "scout_compute_api_StringConstant", end: Optional["scout_compute_api_DoubleConstant"] = None, start: Optional["scout_compute_api_DoubleConstant"] = None) -> None:
40927
+ self._start = start
40928
+ self._end = end
40929
+ self._output = output
40930
+
40931
+ @builtins.property
40932
+ def start(self) -> Optional["scout_compute_api_DoubleConstant"]:
40933
+ """
40934
+ Inclusive start value. If not specified, the start is the prior range's end value, or negative infinity.
40935
+ """
40936
+ return self._start
40937
+
40938
+ @builtins.property
40939
+ def end(self) -> Optional["scout_compute_api_DoubleConstant"]:
40940
+ """
40941
+ Exclusive end value. If not specified, the end value is the next range's start value, or positive infinity.
40942
+ """
40943
+ return self._end
40944
+
40945
+ @builtins.property
40946
+ def output(self) -> "scout_compute_api_StringConstant":
40947
+ """
40948
+ The value to map to if the input value is within the range.
40949
+ """
40950
+ return self._output
40951
+
40952
+
40953
+ scout_compute_api_RangeMap.__name__ = "RangeMap"
40954
+ scout_compute_api_RangeMap.__qualname__ = "RangeMap"
40955
+ scout_compute_api_RangeMap.__module__ = "nominal_api.scout_compute_api"
40956
+
40957
+
40233
40958
  class scout_compute_api_RangeSeries(ConjureUnionType):
40234
40959
  _approximate_threshold: Optional["scout_compute_api_ApproximateThresholdRanges"] = None
40235
40960
  _enum_filter: Optional["scout_compute_api_EnumFilterRanges"] = None
@@ -41271,6 +41996,10 @@ scout_compute_api_ScaleSeries.__module__ = "nominal_api.scout_compute_api"
41271
41996
 
41272
41997
 
41273
41998
  class scout_compute_api_Scatter(ConjureBeanType):
41999
+ """
42000
+ A scatter plot comprised of the values from one input series on the x-axis
42001
+ and values from another input series on the y-axis, for all points within a requested time range.
42002
+ """
41274
42003
 
41275
42004
  @builtins.classmethod
41276
42005
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -41340,6 +42069,98 @@ scout_compute_api_Scatter3d.__qualname__ = "Scatter3d"
41340
42069
  scout_compute_api_Scatter3d.__module__ = "nominal_api.scout_compute_api"
41341
42070
 
41342
42071
 
42072
+ class scout_compute_api_ScatterCurveFit(ConjureBeanType):
42073
+ """
42074
+ Fits a curve to the scatter between two series.
42075
+ """
42076
+
42077
+ @builtins.classmethod
42078
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
42079
+ return {
42080
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_api_Scatter),
42081
+ 'options': ConjureFieldDefinition('options', scout_compute_api_ScatterFitOptions)
42082
+ }
42083
+
42084
+ __slots__: List[str] = ['_scatter', '_options']
42085
+
42086
+ def __init__(self, options: "scout_compute_api_ScatterFitOptions", scatter: "scout_compute_api_Scatter") -> None:
42087
+ self._scatter = scatter
42088
+ self._options = options
42089
+
42090
+ @builtins.property
42091
+ def scatter(self) -> "scout_compute_api_Scatter":
42092
+ """
42093
+ The x and y series to fit to.
42094
+ """
42095
+ return self._scatter
42096
+
42097
+ @builtins.property
42098
+ def options(self) -> "scout_compute_api_ScatterFitOptions":
42099
+ return self._options
42100
+
42101
+
42102
+ scout_compute_api_ScatterCurveFit.__name__ = "ScatterCurveFit"
42103
+ scout_compute_api_ScatterCurveFit.__qualname__ = "ScatterCurveFit"
42104
+ scout_compute_api_ScatterCurveFit.__module__ = "nominal_api.scout_compute_api"
42105
+
42106
+
42107
+ class scout_compute_api_ScatterFitOptions(ConjureBeanType):
42108
+
42109
+ @builtins.classmethod
42110
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
42111
+ return {
42112
+ 'min_x': ConjureFieldDefinition('minX', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42113
+ 'max_x': ConjureFieldDefinition('maxX', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42114
+ 'min_y': ConjureFieldDefinition('minY', OptionalTypeWrapper[scout_compute_api_DoubleConstant]),
42115
+ 'max_y': ConjureFieldDefinition('maxY', OptionalTypeWrapper[scout_compute_api_DoubleConstant])
42116
+ }
42117
+
42118
+ __slots__: List[str] = ['_min_x', '_max_x', '_min_y', '_max_y']
42119
+
42120
+ 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:
42121
+ self._min_x = min_x
42122
+ self._max_x = max_x
42123
+ self._min_y = min_y
42124
+ self._max_y = max_y
42125
+
42126
+ @builtins.property
42127
+ def min_x(self) -> Optional["scout_compute_api_DoubleConstant"]:
42128
+ """
42129
+ Inclusive lower bound on the x values to fit to. If omitted, does not set a bound
42130
+ (equivalent to setting this to the minimum x value among all points in the time range).
42131
+ """
42132
+ return self._min_x
42133
+
42134
+ @builtins.property
42135
+ def max_x(self) -> Optional["scout_compute_api_DoubleConstant"]:
42136
+ """
42137
+ Inclusive upper bound on the x values to fit to. If omitted, does not set a bound
42138
+ (equivalent to setting this to the maximum x value among all points in the time range).
42139
+ """
42140
+ return self._max_x
42141
+
42142
+ @builtins.property
42143
+ def min_y(self) -> Optional["scout_compute_api_DoubleConstant"]:
42144
+ """
42145
+ Inclusive lower bound on the y values to fit to. If omitted, does not set a bound
42146
+ (equivalent to setting this to the minimum y value among all points in the time range).
42147
+ """
42148
+ return self._min_y
42149
+
42150
+ @builtins.property
42151
+ def max_y(self) -> Optional["scout_compute_api_DoubleConstant"]:
42152
+ """
42153
+ Inclusive upper bound on the y values to fit to. If omitted, does not set a bound
42154
+ (equivalent to setting this to the maximum y value among all points in the time range).
42155
+ """
42156
+ return self._max_y
42157
+
42158
+
42159
+ scout_compute_api_ScatterFitOptions.__name__ = "ScatterFitOptions"
42160
+ scout_compute_api_ScatterFitOptions.__qualname__ = "ScatterFitOptions"
42161
+ scout_compute_api_ScatterFitOptions.__module__ = "nominal_api.scout_compute_api"
42162
+
42163
+
41343
42164
  class scout_compute_api_ScatterSummarizationStrategy(ConjureUnionType):
41344
42165
  _spatial: Optional["scout_compute_api_SpatialDecimateStrategy"] = None
41345
42166
 
@@ -42809,6 +43630,68 @@ scout_compute_api_TimeDifferenceSeries.__qualname__ = "TimeDifferenceSeries"
42809
43630
  scout_compute_api_TimeDifferenceSeries.__module__ = "nominal_api.scout_compute_api"
42810
43631
 
42811
43632
 
43633
+ class scout_compute_api_TimeSeriesCurveFit(ConjureBeanType):
43634
+ """
43635
+ Fits a curve to a series vs its timestamps.
43636
+ """
43637
+
43638
+ @builtins.classmethod
43639
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
43640
+ return {
43641
+ 'series': ConjureFieldDefinition('series', scout_compute_api_NumericSeries),
43642
+ 'options': ConjureFieldDefinition('options', scout_compute_api_TimeSeriesFitOptions)
43643
+ }
43644
+
43645
+ __slots__: List[str] = ['_series', '_options']
43646
+
43647
+ def __init__(self, options: "scout_compute_api_TimeSeriesFitOptions", series: "scout_compute_api_NumericSeries") -> None:
43648
+ self._series = series
43649
+ self._options = options
43650
+
43651
+ @builtins.property
43652
+ def series(self) -> "scout_compute_api_NumericSeries":
43653
+ """
43654
+ The series to fit. Timestamps will be used as x values and data as y values. The leftmost (earliest)
43655
+ timestamp will be used as the value of 0, and all other timestamps will be relative to that.
43656
+ """
43657
+ return self._series
43658
+
43659
+ @builtins.property
43660
+ def options(self) -> "scout_compute_api_TimeSeriesFitOptions":
43661
+ return self._options
43662
+
43663
+
43664
+ scout_compute_api_TimeSeriesCurveFit.__name__ = "TimeSeriesCurveFit"
43665
+ scout_compute_api_TimeSeriesCurveFit.__qualname__ = "TimeSeriesCurveFit"
43666
+ scout_compute_api_TimeSeriesCurveFit.__module__ = "nominal_api.scout_compute_api"
43667
+
43668
+
43669
+ class scout_compute_api_TimeSeriesFitOptions(ConjureBeanType):
43670
+
43671
+ @builtins.classmethod
43672
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
43673
+ return {
43674
+ 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[api_TimeUnit])
43675
+ }
43676
+
43677
+ __slots__: List[str] = ['_time_unit']
43678
+
43679
+ def __init__(self, time_unit: Optional["api_TimeUnit"] = None) -> None:
43680
+ self._time_unit = time_unit
43681
+
43682
+ @builtins.property
43683
+ def time_unit(self) -> Optional["api_TimeUnit"]:
43684
+ """
43685
+ Time unit used for the timestamps to fit against. Defaults to seconds if not specified.
43686
+ """
43687
+ return self._time_unit
43688
+
43689
+
43690
+ scout_compute_api_TimeSeriesFitOptions.__name__ = "TimeSeriesFitOptions"
43691
+ scout_compute_api_TimeSeriesFitOptions.__qualname__ = "TimeSeriesFitOptions"
43692
+ scout_compute_api_TimeSeriesFitOptions.__module__ = "nominal_api.scout_compute_api"
43693
+
43694
+
42812
43695
  class scout_compute_api_TimestampAndId(ConjureBeanType):
42813
43696
 
42814
43697
  @builtins.classmethod
@@ -43312,6 +44195,55 @@ scout_compute_api_ValueDifferenceSeries.__qualname__ = "ValueDifferenceSeries"
43312
44195
  scout_compute_api_ValueDifferenceSeries.__module__ = "nominal_api.scout_compute_api"
43313
44196
 
43314
44197
 
44198
+ class scout_compute_api_ValueMapSeries(ConjureBeanType):
44199
+ """
44200
+ Maps a continuous numeric series to a discrete enum series using the specified value ranges.
44201
+ """
44202
+
44203
+ @builtins.classmethod
44204
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
44205
+ return {
44206
+ 'input': ConjureFieldDefinition('input', scout_compute_api_NumericSeries),
44207
+ 'mapping': ConjureFieldDefinition('mapping', List[scout_compute_api_RangeMap]),
44208
+ 'fallback': ConjureFieldDefinition('fallback', OptionalTypeWrapper[scout_compute_api_StringConstant])
44209
+ }
44210
+
44211
+ __slots__: List[str] = ['_input', '_mapping', '_fallback']
44212
+
44213
+ def __init__(self, input: "scout_compute_api_NumericSeries", mapping: List["scout_compute_api_RangeMap"], fallback: Optional["scout_compute_api_StringConstant"] = None) -> None:
44214
+ self._input = input
44215
+ self._mapping = mapping
44216
+ self._fallback = fallback
44217
+
44218
+ @builtins.property
44219
+ def input(self) -> "scout_compute_api_NumericSeries":
44220
+ """
44221
+ The input series to map to an enumerated series
44222
+ """
44223
+ return self._input
44224
+
44225
+ @builtins.property
44226
+ def mapping(self) -> List["scout_compute_api_RangeMap"]:
44227
+ """
44228
+ The output of the first capturing range will be used. Ranges are start inclusive, end exclusive, must not overlap,
44229
+ and increasing from lowest to highest. Ranges can be open ended to the edge of the next or prior range.
44230
+ The first range can be open ended to negative infinity, and the last range can be open ended to positive infinity.
44231
+ """
44232
+ return self._mapping
44233
+
44234
+ @builtins.property
44235
+ def fallback(self) -> Optional["scout_compute_api_StringConstant"]:
44236
+ """
44237
+ The fallback value if not captured by any range. If not specified, points will be filtered.
44238
+ """
44239
+ return self._fallback
44240
+
44241
+
44242
+ scout_compute_api_ValueMapSeries.__name__ = "ValueMapSeries"
44243
+ scout_compute_api_ValueMapSeries.__qualname__ = "ValueMapSeries"
44244
+ scout_compute_api_ValueMapSeries.__module__ = "nominal_api.scout_compute_api"
44245
+
44246
+
43315
44247
  class scout_compute_api_VariableValue(ConjureUnionType):
43316
44248
  _double: Optional[float] = None
43317
44249
  _compute_node: Optional["scout_compute_api_ComputeNodeWithContext"] = None
@@ -47038,6 +47970,253 @@ scout_compute_resolved_api_CumulativeSumSeriesNode.__qualname__ = "CumulativeSum
47038
47970
  scout_compute_resolved_api_CumulativeSumSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
47039
47971
 
47040
47972
 
47973
+ class scout_compute_resolved_api_CurveFitDetails(ConjureUnionType):
47974
+ _exponential: Optional["scout_compute_resolved_api_ExponentialCurve"] = None
47975
+ _logarithmic: Optional["scout_compute_resolved_api_LogarithmicCurve"] = None
47976
+ _polynomial: Optional["scout_compute_resolved_api_PolynomialCurve"] = None
47977
+ _power: Optional["scout_compute_resolved_api_PowerCurve"] = None
47978
+
47979
+ @builtins.classmethod
47980
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
47981
+ return {
47982
+ 'exponential': ConjureFieldDefinition('exponential', scout_compute_resolved_api_ExponentialCurve),
47983
+ 'logarithmic': ConjureFieldDefinition('logarithmic', scout_compute_resolved_api_LogarithmicCurve),
47984
+ 'polynomial': ConjureFieldDefinition('polynomial', scout_compute_resolved_api_PolynomialCurve),
47985
+ 'power': ConjureFieldDefinition('power', scout_compute_resolved_api_PowerCurve)
47986
+ }
47987
+
47988
+ def __init__(
47989
+ self,
47990
+ exponential: Optional["scout_compute_resolved_api_ExponentialCurve"] = None,
47991
+ logarithmic: Optional["scout_compute_resolved_api_LogarithmicCurve"] = None,
47992
+ polynomial: Optional["scout_compute_resolved_api_PolynomialCurve"] = None,
47993
+ power: Optional["scout_compute_resolved_api_PowerCurve"] = None,
47994
+ type_of_union: Optional[str] = None
47995
+ ) -> None:
47996
+ if type_of_union is None:
47997
+ if (exponential is not None) + (logarithmic is not None) + (polynomial is not None) + (power is not None) != 1:
47998
+ raise ValueError('a union must contain a single member')
47999
+
48000
+ if exponential is not None:
48001
+ self._exponential = exponential
48002
+ self._type = 'exponential'
48003
+ if logarithmic is not None:
48004
+ self._logarithmic = logarithmic
48005
+ self._type = 'logarithmic'
48006
+ if polynomial is not None:
48007
+ self._polynomial = polynomial
48008
+ self._type = 'polynomial'
48009
+ if power is not None:
48010
+ self._power = power
48011
+ self._type = 'power'
48012
+
48013
+ elif type_of_union == 'exponential':
48014
+ if exponential is None:
48015
+ raise ValueError('a union value must not be None')
48016
+ self._exponential = exponential
48017
+ self._type = 'exponential'
48018
+ elif type_of_union == 'logarithmic':
48019
+ if logarithmic is None:
48020
+ raise ValueError('a union value must not be None')
48021
+ self._logarithmic = logarithmic
48022
+ self._type = 'logarithmic'
48023
+ elif type_of_union == 'polynomial':
48024
+ if polynomial is None:
48025
+ raise ValueError('a union value must not be None')
48026
+ self._polynomial = polynomial
48027
+ self._type = 'polynomial'
48028
+ elif type_of_union == 'power':
48029
+ if power is None:
48030
+ raise ValueError('a union value must not be None')
48031
+ self._power = power
48032
+ self._type = 'power'
48033
+
48034
+ @builtins.property
48035
+ def exponential(self) -> Optional["scout_compute_resolved_api_ExponentialCurve"]:
48036
+ return self._exponential
48037
+
48038
+ @builtins.property
48039
+ def logarithmic(self) -> Optional["scout_compute_resolved_api_LogarithmicCurve"]:
48040
+ return self._logarithmic
48041
+
48042
+ @builtins.property
48043
+ def polynomial(self) -> Optional["scout_compute_resolved_api_PolynomialCurve"]:
48044
+ return self._polynomial
48045
+
48046
+ @builtins.property
48047
+ def power(self) -> Optional["scout_compute_resolved_api_PowerCurve"]:
48048
+ return self._power
48049
+
48050
+ def accept(self, visitor) -> Any:
48051
+ if not isinstance(visitor, scout_compute_resolved_api_CurveFitDetailsVisitor):
48052
+ raise ValueError('{} is not an instance of scout_compute_resolved_api_CurveFitDetailsVisitor'.format(visitor.__class__.__name__))
48053
+ if self._type == 'exponential' and self.exponential is not None:
48054
+ return visitor._exponential(self.exponential)
48055
+ if self._type == 'logarithmic' and self.logarithmic is not None:
48056
+ return visitor._logarithmic(self.logarithmic)
48057
+ if self._type == 'polynomial' and self.polynomial is not None:
48058
+ return visitor._polynomial(self.polynomial)
48059
+ if self._type == 'power' and self.power is not None:
48060
+ return visitor._power(self.power)
48061
+
48062
+
48063
+ scout_compute_resolved_api_CurveFitDetails.__name__ = "CurveFitDetails"
48064
+ scout_compute_resolved_api_CurveFitDetails.__qualname__ = "CurveFitDetails"
48065
+ scout_compute_resolved_api_CurveFitDetails.__module__ = "nominal_api.scout_compute_resolved_api"
48066
+
48067
+
48068
+ class scout_compute_resolved_api_CurveFitDetailsVisitor:
48069
+
48070
+ @abstractmethod
48071
+ def _exponential(self, exponential: "scout_compute_resolved_api_ExponentialCurve") -> Any:
48072
+ pass
48073
+
48074
+ @abstractmethod
48075
+ def _logarithmic(self, logarithmic: "scout_compute_resolved_api_LogarithmicCurve") -> Any:
48076
+ pass
48077
+
48078
+ @abstractmethod
48079
+ def _polynomial(self, polynomial: "scout_compute_resolved_api_PolynomialCurve") -> Any:
48080
+ pass
48081
+
48082
+ @abstractmethod
48083
+ def _power(self, power: "scout_compute_resolved_api_PowerCurve") -> Any:
48084
+ pass
48085
+
48086
+
48087
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__name__ = "CurveFitDetailsVisitor"
48088
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__qualname__ = "CurveFitDetailsVisitor"
48089
+ scout_compute_resolved_api_CurveFitDetailsVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
48090
+
48091
+
48092
+ class scout_compute_resolved_api_CurveFitNode(ConjureBeanType):
48093
+
48094
+ @builtins.classmethod
48095
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48096
+ return {
48097
+ 'curve_fit_plot_type': ConjureFieldDefinition('curveFitPlotType', scout_compute_resolved_api_CurveFitPlotTypeNode),
48098
+ 'curve_fit_details': ConjureFieldDefinition('curveFitDetails', scout_compute_resolved_api_CurveFitDetails),
48099
+ 'curve_fit_options': ConjureFieldDefinition('curveFitOptions', scout_compute_resolved_api_CurveFitOptions)
48100
+ }
48101
+
48102
+ __slots__: List[str] = ['_curve_fit_plot_type', '_curve_fit_details', '_curve_fit_options']
48103
+
48104
+ 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:
48105
+ self._curve_fit_plot_type = curve_fit_plot_type
48106
+ self._curve_fit_details = curve_fit_details
48107
+ self._curve_fit_options = curve_fit_options
48108
+
48109
+ @builtins.property
48110
+ def curve_fit_plot_type(self) -> "scout_compute_resolved_api_CurveFitPlotTypeNode":
48111
+ return self._curve_fit_plot_type
48112
+
48113
+ @builtins.property
48114
+ def curve_fit_details(self) -> "scout_compute_resolved_api_CurveFitDetails":
48115
+ return self._curve_fit_details
48116
+
48117
+ @builtins.property
48118
+ def curve_fit_options(self) -> "scout_compute_resolved_api_CurveFitOptions":
48119
+ return self._curve_fit_options
48120
+
48121
+
48122
+ scout_compute_resolved_api_CurveFitNode.__name__ = "CurveFitNode"
48123
+ scout_compute_resolved_api_CurveFitNode.__qualname__ = "CurveFitNode"
48124
+ scout_compute_resolved_api_CurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
48125
+
48126
+
48127
+ class scout_compute_resolved_api_CurveFitOptions(ConjureBeanType):
48128
+
48129
+ @builtins.classmethod
48130
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48131
+ return {
48132
+ }
48133
+
48134
+ __slots__: List[str] = []
48135
+
48136
+
48137
+
48138
+ scout_compute_resolved_api_CurveFitOptions.__name__ = "CurveFitOptions"
48139
+ scout_compute_resolved_api_CurveFitOptions.__qualname__ = "CurveFitOptions"
48140
+ scout_compute_resolved_api_CurveFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
48141
+
48142
+
48143
+ class scout_compute_resolved_api_CurveFitPlotTypeNode(ConjureUnionType):
48144
+ _time_series: Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"] = None
48145
+ _scatter: Optional["scout_compute_resolved_api_ScatterCurveFitNode"] = None
48146
+
48147
+ @builtins.classmethod
48148
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
48149
+ return {
48150
+ 'time_series': ConjureFieldDefinition('timeSeries', scout_compute_resolved_api_TimeSeriesCurveFitNode),
48151
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_resolved_api_ScatterCurveFitNode)
48152
+ }
48153
+
48154
+ def __init__(
48155
+ self,
48156
+ time_series: Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"] = None,
48157
+ scatter: Optional["scout_compute_resolved_api_ScatterCurveFitNode"] = None,
48158
+ type_of_union: Optional[str] = None
48159
+ ) -> None:
48160
+ if type_of_union is None:
48161
+ if (time_series is not None) + (scatter is not None) != 1:
48162
+ raise ValueError('a union must contain a single member')
48163
+
48164
+ if time_series is not None:
48165
+ self._time_series = time_series
48166
+ self._type = 'timeSeries'
48167
+ if scatter is not None:
48168
+ self._scatter = scatter
48169
+ self._type = 'scatter'
48170
+
48171
+ elif type_of_union == 'timeSeries':
48172
+ if time_series is None:
48173
+ raise ValueError('a union value must not be None')
48174
+ self._time_series = time_series
48175
+ self._type = 'timeSeries'
48176
+ elif type_of_union == 'scatter':
48177
+ if scatter is None:
48178
+ raise ValueError('a union value must not be None')
48179
+ self._scatter = scatter
48180
+ self._type = 'scatter'
48181
+
48182
+ @builtins.property
48183
+ def time_series(self) -> Optional["scout_compute_resolved_api_TimeSeriesCurveFitNode"]:
48184
+ return self._time_series
48185
+
48186
+ @builtins.property
48187
+ def scatter(self) -> Optional["scout_compute_resolved_api_ScatterCurveFitNode"]:
48188
+ return self._scatter
48189
+
48190
+ def accept(self, visitor) -> Any:
48191
+ if not isinstance(visitor, scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor):
48192
+ raise ValueError('{} is not an instance of scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor'.format(visitor.__class__.__name__))
48193
+ if self._type == 'timeSeries' and self.time_series is not None:
48194
+ return visitor._time_series(self.time_series)
48195
+ if self._type == 'scatter' and self.scatter is not None:
48196
+ return visitor._scatter(self.scatter)
48197
+
48198
+
48199
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__name__ = "CurveFitPlotTypeNode"
48200
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__qualname__ = "CurveFitPlotTypeNode"
48201
+ scout_compute_resolved_api_CurveFitPlotTypeNode.__module__ = "nominal_api.scout_compute_resolved_api"
48202
+
48203
+
48204
+ class scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor:
48205
+
48206
+ @abstractmethod
48207
+ def _time_series(self, time_series: "scout_compute_resolved_api_TimeSeriesCurveFitNode") -> Any:
48208
+ pass
48209
+
48210
+ @abstractmethod
48211
+ def _scatter(self, scatter: "scout_compute_resolved_api_ScatterCurveFitNode") -> Any:
48212
+ pass
48213
+
48214
+
48215
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__name__ = "CurveFitPlotTypeNodeVisitor"
48216
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__qualname__ = "CurveFitPlotTypeNodeVisitor"
48217
+ scout_compute_resolved_api_CurveFitPlotTypeNodeVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
48218
+
48219
+
47041
48220
  class scout_compute_resolved_api_DerivativeSeriesNode(ConjureBeanType):
47042
48221
 
47043
48222
  @builtins.classmethod
@@ -47270,6 +48449,7 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47270
48449
  _union: Optional["scout_compute_resolved_api_EnumUnionSeriesNode"] = None
47271
48450
  _aggregate: Optional["scout_compute_resolved_api_AggregateEnumSeriesNode"] = None
47272
48451
  _filter_transformation: Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"] = None
48452
+ _value_map: Optional["scout_compute_resolved_api_ValueMapSeriesNode"] = None
47273
48453
 
47274
48454
  @builtins.classmethod
47275
48455
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -47280,7 +48460,8 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47280
48460
  'time_shift': ConjureFieldDefinition('timeShift', scout_compute_resolved_api_EnumTimeShiftSeriesNode),
47281
48461
  'union': ConjureFieldDefinition('union', scout_compute_resolved_api_EnumUnionSeriesNode),
47282
48462
  'aggregate': ConjureFieldDefinition('aggregate', scout_compute_resolved_api_AggregateEnumSeriesNode),
47283
- 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_resolved_api_EnumFilterTransformationSeriesNode)
48463
+ 'filter_transformation': ConjureFieldDefinition('filterTransformation', scout_compute_resolved_api_EnumFilterTransformationSeriesNode),
48464
+ 'value_map': ConjureFieldDefinition('valueMap', scout_compute_resolved_api_ValueMapSeriesNode)
47284
48465
  }
47285
48466
 
47286
48467
  def __init__(
@@ -47292,10 +48473,11 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47292
48473
  union: Optional["scout_compute_resolved_api_EnumUnionSeriesNode"] = None,
47293
48474
  aggregate: Optional["scout_compute_resolved_api_AggregateEnumSeriesNode"] = None,
47294
48475
  filter_transformation: Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"] = None,
48476
+ value_map: Optional["scout_compute_resolved_api_ValueMapSeriesNode"] = None,
47295
48477
  type_of_union: Optional[str] = None
47296
48478
  ) -> None:
47297
48479
  if type_of_union is None:
47298
- 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:
48480
+ 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:
47299
48481
  raise ValueError('a union must contain a single member')
47300
48482
 
47301
48483
  if raw is not None:
@@ -47319,6 +48501,9 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47319
48501
  if filter_transformation is not None:
47320
48502
  self._filter_transformation = filter_transformation
47321
48503
  self._type = 'filterTransformation'
48504
+ if value_map is not None:
48505
+ self._value_map = value_map
48506
+ self._type = 'valueMap'
47322
48507
 
47323
48508
  elif type_of_union == 'raw':
47324
48509
  if raw is None:
@@ -47355,6 +48540,11 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47355
48540
  raise ValueError('a union value must not be None')
47356
48541
  self._filter_transformation = filter_transformation
47357
48542
  self._type = 'filterTransformation'
48543
+ elif type_of_union == 'valueMap':
48544
+ if value_map is None:
48545
+ raise ValueError('a union value must not be None')
48546
+ self._value_map = value_map
48547
+ self._type = 'valueMap'
47358
48548
 
47359
48549
  @builtins.property
47360
48550
  def raw(self) -> Optional["scout_compute_resolved_api_RawEnumSeriesNode"]:
@@ -47384,6 +48574,10 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47384
48574
  def filter_transformation(self) -> Optional["scout_compute_resolved_api_EnumFilterTransformationSeriesNode"]:
47385
48575
  return self._filter_transformation
47386
48576
 
48577
+ @builtins.property
48578
+ def value_map(self) -> Optional["scout_compute_resolved_api_ValueMapSeriesNode"]:
48579
+ return self._value_map
48580
+
47387
48581
  def accept(self, visitor) -> Any:
47388
48582
  if not isinstance(visitor, scout_compute_resolved_api_EnumSeriesNodeVisitor):
47389
48583
  raise ValueError('{} is not an instance of scout_compute_resolved_api_EnumSeriesNodeVisitor'.format(visitor.__class__.__name__))
@@ -47401,6 +48595,8 @@ class scout_compute_resolved_api_EnumSeriesNode(ConjureUnionType):
47401
48595
  return visitor._aggregate(self.aggregate)
47402
48596
  if self._type == 'filterTransformation' and self.filter_transformation is not None:
47403
48597
  return visitor._filter_transformation(self.filter_transformation)
48598
+ if self._type == 'valueMap' and self.value_map is not None:
48599
+ return visitor._value_map(self.value_map)
47404
48600
 
47405
48601
 
47406
48602
  scout_compute_resolved_api_EnumSeriesNode.__name__ = "EnumSeriesNode"
@@ -47438,6 +48634,10 @@ class scout_compute_resolved_api_EnumSeriesNodeVisitor:
47438
48634
  def _filter_transformation(self, filter_transformation: "scout_compute_resolved_api_EnumFilterTransformationSeriesNode") -> Any:
47439
48635
  pass
47440
48636
 
48637
+ @abstractmethod
48638
+ def _value_map(self, value_map: "scout_compute_resolved_api_ValueMapSeriesNode") -> Any:
48639
+ pass
48640
+
47441
48641
 
47442
48642
  scout_compute_resolved_api_EnumSeriesNodeVisitor.__name__ = "EnumSeriesNodeVisitor"
47443
48643
  scout_compute_resolved_api_EnumSeriesNodeVisitor.__qualname__ = "EnumSeriesNodeVisitor"
@@ -47537,6 +48737,29 @@ scout_compute_resolved_api_EnumUnionSeriesNode.__qualname__ = "EnumUnionSeriesNo
47537
48737
  scout_compute_resolved_api_EnumUnionSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
47538
48738
 
47539
48739
 
48740
+ class scout_compute_resolved_api_ExponentialCurve(ConjureBeanType):
48741
+
48742
+ @builtins.classmethod
48743
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
48744
+ return {
48745
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[float])
48746
+ }
48747
+
48748
+ __slots__: List[str] = ['_intercept']
48749
+
48750
+ def __init__(self, intercept: Optional[float] = None) -> None:
48751
+ self._intercept = intercept
48752
+
48753
+ @builtins.property
48754
+ def intercept(self) -> Optional[float]:
48755
+ return self._intercept
48756
+
48757
+
48758
+ scout_compute_resolved_api_ExponentialCurve.__name__ = "ExponentialCurve"
48759
+ scout_compute_resolved_api_ExponentialCurve.__qualname__ = "ExponentialCurve"
48760
+ scout_compute_resolved_api_ExponentialCurve.__module__ = "nominal_api.scout_compute_resolved_api"
48761
+
48762
+
47540
48763
  class scout_compute_resolved_api_ExtremaRangesNode(ConjureBeanType):
47541
48764
 
47542
48765
  @builtins.classmethod
@@ -48309,6 +49532,22 @@ scout_compute_resolved_api_LogUnionSeriesNode.__qualname__ = "LogUnionSeriesNode
48309
49532
  scout_compute_resolved_api_LogUnionSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
48310
49533
 
48311
49534
 
49535
+ class scout_compute_resolved_api_LogarithmicCurve(ConjureBeanType):
49536
+
49537
+ @builtins.classmethod
49538
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
49539
+ return {
49540
+ }
49541
+
49542
+ __slots__: List[str] = []
49543
+
49544
+
49545
+
49546
+ scout_compute_resolved_api_LogarithmicCurve.__name__ = "LogarithmicCurve"
49547
+ scout_compute_resolved_api_LogarithmicCurve.__qualname__ = "LogarithmicCurve"
49548
+ scout_compute_resolved_api_LogarithmicCurve.__module__ = "nominal_api.scout_compute_resolved_api"
49549
+
49550
+
48312
49551
  class scout_compute_resolved_api_LowPassConfiguration(ConjureBeanType):
48313
49552
 
48314
49553
  @builtins.classmethod
@@ -49531,6 +50770,51 @@ scout_compute_resolved_api_PersistenceWindowConfiguration.__qualname__ = "Persis
49531
50770
  scout_compute_resolved_api_PersistenceWindowConfiguration.__module__ = "nominal_api.scout_compute_resolved_api"
49532
50771
 
49533
50772
 
50773
+ class scout_compute_resolved_api_PolynomialCurve(ConjureBeanType):
50774
+
50775
+ @builtins.classmethod
50776
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50777
+ return {
50778
+ 'degree': ConjureFieldDefinition('degree', int),
50779
+ 'intercept': ConjureFieldDefinition('intercept', OptionalTypeWrapper[float])
50780
+ }
50781
+
50782
+ __slots__: List[str] = ['_degree', '_intercept']
50783
+
50784
+ def __init__(self, degree: int, intercept: Optional[float] = None) -> None:
50785
+ self._degree = degree
50786
+ self._intercept = intercept
50787
+
50788
+ @builtins.property
50789
+ def degree(self) -> int:
50790
+ return self._degree
50791
+
50792
+ @builtins.property
50793
+ def intercept(self) -> Optional[float]:
50794
+ return self._intercept
50795
+
50796
+
50797
+ scout_compute_resolved_api_PolynomialCurve.__name__ = "PolynomialCurve"
50798
+ scout_compute_resolved_api_PolynomialCurve.__qualname__ = "PolynomialCurve"
50799
+ scout_compute_resolved_api_PolynomialCurve.__module__ = "nominal_api.scout_compute_resolved_api"
50800
+
50801
+
50802
+ class scout_compute_resolved_api_PowerCurve(ConjureBeanType):
50803
+
50804
+ @builtins.classmethod
50805
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50806
+ return {
50807
+ }
50808
+
50809
+ __slots__: List[str] = []
50810
+
50811
+
50812
+
50813
+ scout_compute_resolved_api_PowerCurve.__name__ = "PowerCurve"
50814
+ scout_compute_resolved_api_PowerCurve.__qualname__ = "PowerCurve"
50815
+ scout_compute_resolved_api_PowerCurve.__module__ = "nominal_api.scout_compute_resolved_api"
50816
+
50817
+
49534
50818
  class scout_compute_resolved_api_ProductSeriesNode(ConjureBeanType):
49535
50819
 
49536
50820
  @builtins.classmethod
@@ -49560,6 +50844,41 @@ scout_compute_resolved_api_ProductSeriesNode.__qualname__ = "ProductSeriesNode"
49560
50844
  scout_compute_resolved_api_ProductSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
49561
50845
 
49562
50846
 
50847
+ class scout_compute_resolved_api_RangeMap(ConjureBeanType):
50848
+
50849
+ @builtins.classmethod
50850
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50851
+ return {
50852
+ 'start': ConjureFieldDefinition('start', OptionalTypeWrapper[float]),
50853
+ 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[float]),
50854
+ 'output': ConjureFieldDefinition('output', str)
50855
+ }
50856
+
50857
+ __slots__: List[str] = ['_start', '_end', '_output']
50858
+
50859
+ def __init__(self, output: str, end: Optional[float] = None, start: Optional[float] = None) -> None:
50860
+ self._start = start
50861
+ self._end = end
50862
+ self._output = output
50863
+
50864
+ @builtins.property
50865
+ def start(self) -> Optional[float]:
50866
+ return self._start
50867
+
50868
+ @builtins.property
50869
+ def end(self) -> Optional[float]:
50870
+ return self._end
50871
+
50872
+ @builtins.property
50873
+ def output(self) -> str:
50874
+ return self._output
50875
+
50876
+
50877
+ scout_compute_resolved_api_RangeMap.__name__ = "RangeMap"
50878
+ scout_compute_resolved_api_RangeMap.__qualname__ = "RangeMap"
50879
+ scout_compute_resolved_api_RangeMap.__module__ = "nominal_api.scout_compute_resolved_api"
50880
+
50881
+
49563
50882
  class scout_compute_resolved_api_RangesNode(ConjureUnionType):
49564
50883
  _enum_equality: Optional["scout_compute_resolved_api_EnumEqualityRangesNode"] = None
49565
50884
  _enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None
@@ -50089,6 +51408,7 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50089
51408
  _frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None
50090
51409
  _histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None
50091
51410
  _geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None
51411
+ _curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None
50092
51412
 
50093
51413
  @builtins.classmethod
50094
51414
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -50100,7 +51420,8 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50100
51420
  'cartesian3d': ConjureFieldDefinition('cartesian3d', scout_compute_resolved_api_SummarizeCartesian3dNode),
50101
51421
  'frequency': ConjureFieldDefinition('frequency', scout_compute_resolved_api_FrequencyDomainNode),
50102
51422
  'histogram': ConjureFieldDefinition('histogram', scout_compute_resolved_api_HistogramNode),
50103
- 'geo': ConjureFieldDefinition('geo', scout_compute_resolved_api_SummarizeGeoNode)
51423
+ 'geo': ConjureFieldDefinition('geo', scout_compute_resolved_api_SummarizeGeoNode),
51424
+ 'curve': ConjureFieldDefinition('curve', scout_compute_resolved_api_CurveFitNode)
50104
51425
  }
50105
51426
 
50106
51427
  def __init__(
@@ -50113,10 +51434,11 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50113
51434
  frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None,
50114
51435
  histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None,
50115
51436
  geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None,
51437
+ curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None,
50116
51438
  type_of_union: Optional[str] = None
50117
51439
  ) -> None:
50118
51440
  if type_of_union is None:
50119
- 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:
51441
+ 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:
50120
51442
  raise ValueError('a union must contain a single member')
50121
51443
 
50122
51444
  if ranges is not None:
@@ -50143,6 +51465,9 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50143
51465
  if geo is not None:
50144
51466
  self._geo = geo
50145
51467
  self._type = 'geo'
51468
+ if curve is not None:
51469
+ self._curve = curve
51470
+ self._type = 'curve'
50146
51471
 
50147
51472
  elif type_of_union == 'ranges':
50148
51473
  if ranges is None:
@@ -50184,6 +51509,11 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50184
51509
  raise ValueError('a union value must not be None')
50185
51510
  self._geo = geo
50186
51511
  self._type = 'geo'
51512
+ elif type_of_union == 'curve':
51513
+ if curve is None:
51514
+ raise ValueError('a union value must not be None')
51515
+ self._curve = curve
51516
+ self._type = 'curve'
50187
51517
 
50188
51518
  @builtins.property
50189
51519
  def ranges(self) -> Optional["scout_compute_resolved_api_SummarizeRangesNode"]:
@@ -50217,6 +51547,10 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50217
51547
  def geo(self) -> Optional["scout_compute_resolved_api_SummarizeGeoNode"]:
50218
51548
  return self._geo
50219
51549
 
51550
+ @builtins.property
51551
+ def curve(self) -> Optional["scout_compute_resolved_api_CurveFitNode"]:
51552
+ return self._curve
51553
+
50220
51554
  def accept(self, visitor) -> Any:
50221
51555
  if not isinstance(visitor, scout_compute_resolved_api_ResolvedNodeVisitor):
50222
51556
  raise ValueError('{} is not an instance of scout_compute_resolved_api_ResolvedNodeVisitor'.format(visitor.__class__.__name__))
@@ -50236,6 +51570,8 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
50236
51570
  return visitor._histogram(self.histogram)
50237
51571
  if self._type == 'geo' and self.geo is not None:
50238
51572
  return visitor._geo(self.geo)
51573
+ if self._type == 'curve' and self.curve is not None:
51574
+ return visitor._curve(self.curve)
50239
51575
 
50240
51576
 
50241
51577
  scout_compute_resolved_api_ResolvedNode.__name__ = "ResolvedNode"
@@ -50277,6 +51613,10 @@ class scout_compute_resolved_api_ResolvedNodeVisitor:
50277
51613
  def _geo(self, geo: "scout_compute_resolved_api_SummarizeGeoNode") -> Any:
50278
51614
  pass
50279
51615
 
51616
+ @abstractmethod
51617
+ def _curve(self, curve: "scout_compute_resolved_api_CurveFitNode") -> Any:
51618
+ pass
51619
+
50280
51620
 
50281
51621
  scout_compute_resolved_api_ResolvedNodeVisitor.__name__ = "ResolvedNodeVisitor"
50282
51622
  scout_compute_resolved_api_ResolvedNodeVisitor.__qualname__ = "ResolvedNodeVisitor"
@@ -50435,6 +51775,76 @@ scout_compute_resolved_api_Scatter3dNode.__qualname__ = "Scatter3dNode"
50435
51775
  scout_compute_resolved_api_Scatter3dNode.__module__ = "nominal_api.scout_compute_resolved_api"
50436
51776
 
50437
51777
 
51778
+ class scout_compute_resolved_api_ScatterCurveFitNode(ConjureBeanType):
51779
+
51780
+ @builtins.classmethod
51781
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
51782
+ return {
51783
+ 'scatter': ConjureFieldDefinition('scatter', scout_compute_resolved_api_ScatterNode),
51784
+ 'options': ConjureFieldDefinition('options', scout_compute_resolved_api_ScatterFitOptions)
51785
+ }
51786
+
51787
+ __slots__: List[str] = ['_scatter', '_options']
51788
+
51789
+ def __init__(self, options: "scout_compute_resolved_api_ScatterFitOptions", scatter: "scout_compute_resolved_api_ScatterNode") -> None:
51790
+ self._scatter = scatter
51791
+ self._options = options
51792
+
51793
+ @builtins.property
51794
+ def scatter(self) -> "scout_compute_resolved_api_ScatterNode":
51795
+ return self._scatter
51796
+
51797
+ @builtins.property
51798
+ def options(self) -> "scout_compute_resolved_api_ScatterFitOptions":
51799
+ return self._options
51800
+
51801
+
51802
+ scout_compute_resolved_api_ScatterCurveFitNode.__name__ = "ScatterCurveFitNode"
51803
+ scout_compute_resolved_api_ScatterCurveFitNode.__qualname__ = "ScatterCurveFitNode"
51804
+ scout_compute_resolved_api_ScatterCurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
51805
+
51806
+
51807
+ class scout_compute_resolved_api_ScatterFitOptions(ConjureBeanType):
51808
+
51809
+ @builtins.classmethod
51810
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
51811
+ return {
51812
+ 'min_x': ConjureFieldDefinition('minX', OptionalTypeWrapper[float]),
51813
+ 'max_x': ConjureFieldDefinition('maxX', OptionalTypeWrapper[float]),
51814
+ 'min_y': ConjureFieldDefinition('minY', OptionalTypeWrapper[float]),
51815
+ 'max_y': ConjureFieldDefinition('maxY', OptionalTypeWrapper[float])
51816
+ }
51817
+
51818
+ __slots__: List[str] = ['_min_x', '_max_x', '_min_y', '_max_y']
51819
+
51820
+ def __init__(self, max_x: Optional[float] = None, max_y: Optional[float] = None, min_x: Optional[float] = None, min_y: Optional[float] = None) -> None:
51821
+ self._min_x = min_x
51822
+ self._max_x = max_x
51823
+ self._min_y = min_y
51824
+ self._max_y = max_y
51825
+
51826
+ @builtins.property
51827
+ def min_x(self) -> Optional[float]:
51828
+ return self._min_x
51829
+
51830
+ @builtins.property
51831
+ def max_x(self) -> Optional[float]:
51832
+ return self._max_x
51833
+
51834
+ @builtins.property
51835
+ def min_y(self) -> Optional[float]:
51836
+ return self._min_y
51837
+
51838
+ @builtins.property
51839
+ def max_y(self) -> Optional[float]:
51840
+ return self._max_y
51841
+
51842
+
51843
+ scout_compute_resolved_api_ScatterFitOptions.__name__ = "ScatterFitOptions"
51844
+ scout_compute_resolved_api_ScatterFitOptions.__qualname__ = "ScatterFitOptions"
51845
+ scout_compute_resolved_api_ScatterFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
51846
+
51847
+
50438
51848
  class scout_compute_resolved_api_ScatterNode(ConjureBeanType):
50439
51849
 
50440
51850
  @builtins.classmethod
@@ -51399,6 +52809,58 @@ scout_compute_resolved_api_TimeDifferenceSeriesNode.__qualname__ = "TimeDifferen
51399
52809
  scout_compute_resolved_api_TimeDifferenceSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
51400
52810
 
51401
52811
 
52812
+ class scout_compute_resolved_api_TimeSeriesCurveFitNode(ConjureBeanType):
52813
+
52814
+ @builtins.classmethod
52815
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
52816
+ return {
52817
+ 'series': ConjureFieldDefinition('series', scout_compute_resolved_api_NumericSeriesNode),
52818
+ 'options': ConjureFieldDefinition('options', scout_compute_resolved_api_TimeSeriesFitOptions)
52819
+ }
52820
+
52821
+ __slots__: List[str] = ['_series', '_options']
52822
+
52823
+ def __init__(self, options: "scout_compute_resolved_api_TimeSeriesFitOptions", series: "scout_compute_resolved_api_NumericSeriesNode") -> None:
52824
+ self._series = series
52825
+ self._options = options
52826
+
52827
+ @builtins.property
52828
+ def series(self) -> "scout_compute_resolved_api_NumericSeriesNode":
52829
+ return self._series
52830
+
52831
+ @builtins.property
52832
+ def options(self) -> "scout_compute_resolved_api_TimeSeriesFitOptions":
52833
+ return self._options
52834
+
52835
+
52836
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__name__ = "TimeSeriesCurveFitNode"
52837
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__qualname__ = "TimeSeriesCurveFitNode"
52838
+ scout_compute_resolved_api_TimeSeriesCurveFitNode.__module__ = "nominal_api.scout_compute_resolved_api"
52839
+
52840
+
52841
+ class scout_compute_resolved_api_TimeSeriesFitOptions(ConjureBeanType):
52842
+
52843
+ @builtins.classmethod
52844
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
52845
+ return {
52846
+ 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[api_TimeUnit])
52847
+ }
52848
+
52849
+ __slots__: List[str] = ['_time_unit']
52850
+
52851
+ def __init__(self, time_unit: Optional["api_TimeUnit"] = None) -> None:
52852
+ self._time_unit = time_unit
52853
+
52854
+ @builtins.property
52855
+ def time_unit(self) -> Optional["api_TimeUnit"]:
52856
+ return self._time_unit
52857
+
52858
+
52859
+ scout_compute_resolved_api_TimeSeriesFitOptions.__name__ = "TimeSeriesFitOptions"
52860
+ scout_compute_resolved_api_TimeSeriesFitOptions.__qualname__ = "TimeSeriesFitOptions"
52861
+ scout_compute_resolved_api_TimeSeriesFitOptions.__module__ = "nominal_api.scout_compute_resolved_api"
52862
+
52863
+
51402
52864
  class scout_compute_resolved_api_UnaryArithmeticSeriesNode(ConjureBeanType):
51403
52865
 
51404
52866
  @builtins.classmethod
@@ -51509,6 +52971,41 @@ scout_compute_resolved_api_ValueDifferenceSeriesNode.__qualname__ = "ValueDiffer
51509
52971
  scout_compute_resolved_api_ValueDifferenceSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
51510
52972
 
51511
52973
 
52974
+ class scout_compute_resolved_api_ValueMapSeriesNode(ConjureBeanType):
52975
+
52976
+ @builtins.classmethod
52977
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
52978
+ return {
52979
+ 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_NumericSeriesNode),
52980
+ 'mapping': ConjureFieldDefinition('mapping', List[scout_compute_resolved_api_RangeMap]),
52981
+ 'fallback': ConjureFieldDefinition('fallback', OptionalTypeWrapper[str])
52982
+ }
52983
+
52984
+ __slots__: List[str] = ['_input', '_mapping', '_fallback']
52985
+
52986
+ def __init__(self, input: "scout_compute_resolved_api_NumericSeriesNode", mapping: List["scout_compute_resolved_api_RangeMap"], fallback: Optional[str] = None) -> None:
52987
+ self._input = input
52988
+ self._mapping = mapping
52989
+ self._fallback = fallback
52990
+
52991
+ @builtins.property
52992
+ def input(self) -> "scout_compute_resolved_api_NumericSeriesNode":
52993
+ return self._input
52994
+
52995
+ @builtins.property
52996
+ def mapping(self) -> List["scout_compute_resolved_api_RangeMap"]:
52997
+ return self._mapping
52998
+
52999
+ @builtins.property
53000
+ def fallback(self) -> Optional[str]:
53001
+ return self._fallback
53002
+
53003
+
53004
+ scout_compute_resolved_api_ValueMapSeriesNode.__name__ = "ValueMapSeriesNode"
53005
+ scout_compute_resolved_api_ValueMapSeriesNode.__qualname__ = "ValueMapSeriesNode"
53006
+ scout_compute_resolved_api_ValueMapSeriesNode.__module__ = "nominal_api.scout_compute_resolved_api"
53007
+
53008
+
51512
53009
  class scout_compute_resolved_api_Window(ConjureBeanType):
51513
53010
 
51514
53011
  @builtins.classmethod