@@ -58,9 +58,9 @@ def unique(draw, strategy):
58
58
59
59
random .seed (123456 )
60
60
61
- # Share to ensure we get unique names on each draw?
62
- UNIQUE_NAME = unique ( strategy = xrst . names ())
63
- DIM_NAME = xrst .dimension_names ( name_strategy = UNIQUE_NAME , min_dims = 1 , max_dims = 1 )
61
+ # This strategy will be shared to ensure we get unique names on each draw.
62
+ # So we don't rename to an already present dimension name, for example.
63
+ unique_names = unique ( strategy = xrst .names () )
64
64
65
65
66
66
class DatasetStateMachine (RuleBasedStateMachine ):
@@ -72,7 +72,14 @@ def __init__(self):
72
72
self .dataset = Dataset ()
73
73
self .check_default_indexes = True
74
74
75
- @rule (var = xrst .index_variables (dims = DIM_NAME ), target = indexed_dims )
75
+ @rule (
76
+ var = xrst .index_variables (
77
+ dims = xrst .dimension_names (
78
+ name_strategy = st .shared (unique_names ), min_dims = 1 , max_dims = 1
79
+ )
80
+ ),
81
+ target = indexed_dims ,
82
+ )
76
83
def add_dim_coord (self , var ):
77
84
(name ,) = var .dims
78
85
# dim coord
@@ -88,7 +95,7 @@ def reset_index(self, dim):
88
95
self .dataset = self .dataset .reset_index (dim )
89
96
90
97
@rule (
91
- newname = UNIQUE_NAME ,
98
+ newname = st . shared ( unique_names ) ,
92
99
oldnames = st .lists (consumes (indexed_dims ), min_size = 1 , unique = True ),
93
100
target = multi_indexed_dims ,
94
101
)
@@ -111,7 +118,7 @@ def unstack(self, dim):
111
118
# TODO Fix this when adding st.none()
112
119
return multiple ()
113
120
114
- @rule (newname = UNIQUE_NAME , oldname = consumes (indexed_dims ))
121
+ @rule (newname = st . shared ( unique_names ) , oldname = consumes (indexed_dims ))
115
122
def rename_vars (self , newname , oldname ):
116
123
# benbovy: "skip the default indexes invariant test when the name of an
117
124
# existing dimension coordinate is passed as input kwarg or dict key
0 commit comments