@@ -586,6 +586,7 @@ def __init__(
586586 operator : str ,
587587 values : Union [float , int , tuple [float , float ]],
588588 treat_nulls_as : Union [float , None ] = None ,
589+ dimensionality : list [Union [str , ObjId , Attribute , Metric ]] | None = None ,
589590 ) -> None :
590591 super ().__init__ ()
591592
@@ -611,6 +612,7 @@ def __init__(
611612 self ._metric = _extract_id_or_local_id (metric )
612613 self ._operator = operator
613614 self ._treat_nulls_as = treat_nulls_as
615+ self ._dimensionality = [_extract_id_or_local_id (d ) for d in dimensionality ] if dimensionality else None
614616
615617 @property
616618 def metric (self ) -> Union [ObjId , str ]:
@@ -632,19 +634,25 @@ def values(self) -> Union[tuple[float], tuple[float, float]]:
632634 def treat_nulls_as (self ) -> Union [float , None ]:
633635 return self ._treat_nulls_as
634636
637+ @property
638+ def dimensionality (self ) -> list [Union [ObjId , str ]] | None :
639+ return self ._dimensionality
640+
635641 def is_noop (self ) -> bool :
636642 return False
637643
638644 def as_api_model (self ) -> Union [afm_models .ComparisonMeasureValueFilter , afm_models .RangeMeasureValueFilter ]:
639645 measure = _to_identifier (self ._metric )
640646
641- kwargs = dict (
647+ kwargs : dict [ str , Any ] = dict (
642648 measure = measure ,
643649 operator = self .operator ,
644650 _check_type = False ,
645651 )
646652 if self .treat_nulls_as is not None :
647653 kwargs ["treat_null_values_as" ] = self .treat_nulls_as
654+ if self ._dimensionality is not None :
655+ kwargs ["dimensionality" ] = [_to_identifier (d ) for d in self ._dimensionality ]
648656
649657 if _METRIC_VALUE_FILTER_OPERATORS [self .operator ] == "comparison" :
650658 kwargs ["value" ] = self .values [0 ]
@@ -727,11 +735,13 @@ def __init__(
727735 metric : Union [ObjId , str , Metric ],
728736 conditions : list [MetricValueCondition ],
729737 treat_nulls_as : Union [float , None ] = None ,
738+ dimensionality : list [Union [str , ObjId , Attribute , Metric ]] | None = None ,
730739 ) -> None :
731740 super ().__init__ ()
732741 self ._metric = _extract_id_or_local_id (metric )
733742 self ._conditions = conditions
734743 self ._treat_nulls_as = treat_nulls_as
744+ self ._dimensionality = [_extract_id_or_local_id (d ) for d in dimensionality ] if dimensionality else None
735745
736746 @property
737747 def metric (self ) -> Union [ObjId , str ]:
@@ -745,6 +755,10 @@ def conditions(self) -> list[MetricValueCondition]:
745755 def treat_nulls_as (self ) -> Union [float , None ]:
746756 return self ._treat_nulls_as
747757
758+ @property
759+ def dimensionality (self ) -> list [Union [ObjId , str ]] | None :
760+ return self ._dimensionality
761+
748762 def is_noop (self ) -> bool :
749763 return len (self .conditions ) == 0
750764
@@ -758,6 +772,8 @@ def as_api_model(self) -> afm_models.CompoundMeasureValueFilter:
758772 )
759773 if self .treat_nulls_as is not None :
760774 kwargs ["treat_null_values_as" ] = self .treat_nulls_as
775+ if self ._dimensionality is not None :
776+ kwargs ["dimensionality" ] = [_to_identifier (d ) for d in self ._dimensionality ]
761777
762778 body = CompoundMeasureValueFilterBody (** kwargs )
763779 return afm_models .CompoundMeasureValueFilter (body , _check_type = False )
0 commit comments