@@ -317,7 +317,9 @@ def __add__(self, other):
317317 if isinstance (other , Set ):
318318 try :
319319 return self ._new (
320- pl .concat ([self .data , other .data ]).unique (maintain_order = True )
320+ pl .concat ([self .data , other .data ]).unique (
321+ maintain_order = Config .maintain_order
322+ )
321323 )
322324 except pl .exceptions .ShapeError as e :
323325 if "unable to vstack, column names don't match" in str (e ):
@@ -347,7 +349,7 @@ def _set_to_polars(set: "SetTypes") -> pl.DataFrame:
347349 df = (
348350 set .to_expr ()
349351 .data .drop (RESERVED_COL_KEYS , strict = False )
350- .unique (maintain_order = True )
352+ .unique (maintain_order = Config . maintain_order )
351353 )
352354 elif isinstance (set , pd .Index ):
353355 df = pl .from_pandas (pd .DataFrame (index = set ).reset_index ())
@@ -481,7 +483,10 @@ def sum(self, over: Union[str, Iterable[str]]):
481483
482484 return self ._new (
483485 self .data .drop (over )
484- .group_by (remaining_dims + self ._variable_columns , maintain_order = True )
486+ .group_by (
487+ remaining_dims + self ._variable_columns ,
488+ maintain_order = Config .maintain_order ,
489+ )
485490 .sum ()
486491 )
487492
@@ -650,7 +655,7 @@ def within(self, set: "SetTypes") -> Expression:
650655 "Cannot use .within() with an expression with no dimensions."
651656 )
652657 dims_in_common = [dim for dim in dims if dim in set_dims ]
653- by_dims = df .select (dims_in_common ).unique (maintain_order = True )
658+ by_dims = df .select (dims_in_common ).unique (maintain_order = Config . maintain_order )
654659 return self ._new (self .data .join (by_dims , on = dims_in_common ))
655660
656661 @property
@@ -815,7 +820,7 @@ def _add_const(self, const: int | float) -> Expression:
815820 else :
816821 keys = (
817822 data .select (dim )
818- .unique (maintain_order = True )
823+ .unique (maintain_order = Config . maintain_order )
819824 .with_columns (pl .lit (CONST_TERM ).alias (VAR_KEY ).cast (KEY_TYPE ))
820825 )
821826 if self .is_quadratic :
@@ -841,7 +846,9 @@ def constant_terms(self):
841846 if self .is_quadratic :
842847 constant_terms = constant_terms .drop (QUAD_VAR_KEY )
843848 if dims is not None :
844- dims_df = self .data .select (dims ).unique (maintain_order = True )
849+ dims_df = self .data .select (dims ).unique (
850+ maintain_order = Config .maintain_order
851+ )
845852 df = constant_terms .join (dims_df , on = dims , how = "full" , coalesce = True )
846853 return df .with_columns (pl .col (COEF_KEY ).fill_null (0.0 ))
847854 else :
@@ -909,7 +916,7 @@ def evaluate(self) -> pl.DataFrame:
909916
910917 dims = self .dimensions
911918 if dims is not None :
912- df = df .group_by (dims , maintain_order = True )
919+ df = df .group_by (dims , maintain_order = Config . maintain_order )
913920 return df .sum ()
914921
915922 def to_poi (self ) -> poi .ScalarAffineFunction | poi .ScalarQuadraticFunction :
@@ -970,7 +977,7 @@ def to_str_table(self, include_const_term=True):
970977 ).drop (COEF_KEY , VAR_KEY )
971978
972979 if dimensions is not None :
973- data = data .group_by (dimensions , maintain_order = True ).agg (
980+ data = data .group_by (dimensions , maintain_order = Config . maintain_order ).agg (
974981 pl .col ("expr" ).str .join (delimiter = " " )
975982 )
976983 else :
@@ -1311,9 +1318,9 @@ def _assign_ids(self):
13111318 .cast (KEY_TYPE )
13121319 )
13131320 else :
1314- df = self .lhs .data .group_by (self . dimensions , maintain_order = True ). agg (
1315- * key_cols_polars
1316- )
1321+ df = self .lhs .data .group_by (
1322+ self . dimensions , maintain_order = Config . maintain_order
1323+ ). agg ( * key_cols_polars )
13171324 if use_var_names :
13181325 df = (
13191326 concat_dimensions (df , prefix = self .name )
@@ -1896,7 +1903,11 @@ def next(self, dim: str, wrap_around: bool = False) -> Expression:
18961903 [18:00,Toronto]: bat_charge[18:00,Toronto] + bat_flow[18:00,Toronto] - bat_charge[00:00,Toronto] = 0
18971904 """
18981905
1899- wrapped = self .data .select (dim ).unique (maintain_order = True ).sort (by = dim )
1906+ wrapped = (
1907+ self .data .select (dim )
1908+ .unique (maintain_order = Config .maintain_order )
1909+ .sort (by = dim )
1910+ )
19001911 wrapped = wrapped .with_columns (pl .col (dim ).shift (- 1 ).alias ("__next" ))
19011912 if wrap_around :
19021913 wrapped = wrapped .with_columns (pl .col ("__next" ).fill_null (pl .first (dim )))
0 commit comments