@@ -32,7 +32,8 @@ def __dir__() -> tuple[str, ...]:
32
32
33
33
34
34
class CoreAxisProtocol (Protocol ):
35
- metadata : dict [str , Any ]
35
+ metadata : dict [str , Any ] # boost-histogram < 1.6
36
+ raw_metadata : dict [str , Any ]
36
37
37
38
38
39
class AxisProtocol (Protocol ):
@@ -44,6 +45,9 @@ def name(self) -> str: ...
44
45
label : str
45
46
_ax : CoreAxisProtocol
46
47
48
+ @property
49
+ def _raw_metadata (self ) -> dict [str , Any ]: ...
50
+
47
51
48
52
class AxesMixin :
49
53
__slots__ = ()
@@ -52,23 +56,30 @@ class AxesMixin:
52
56
def __init_subclass__ (cls , ** kwargs : Any ) -> None :
53
57
super ().__init_subclass__ (** kwargs )
54
58
59
+ @property
60
+ def _raw_metadata (self : AxisProtocol ) -> dict [str , Any ]:
61
+ # boost-histogram < 1.6
62
+ if hasattr (self ._ax , "metadata" ):
63
+ return self ._ax .metadata
64
+ return self ._ax .raw_metadata
65
+
55
66
@property
56
67
def name (self : AxisProtocol ) -> str :
57
68
"""
58
69
Get the name for the Regular axis
59
70
"""
60
- return typing .cast (str , self ._ax . metadata .get ("name" , "" ))
71
+ return typing .cast (str , self ._raw_metadata .get ("name" , "" ))
61
72
62
73
@property
63
74
def label (self : AxisProtocol ) -> str :
64
75
"""
65
76
Get or set the label for the Regular axis
66
77
"""
67
- return self ._ax . metadata .get ("label" , "" ) or self .name
78
+ return self ._raw_metadata .get ("label" , "" ) or self .name
68
79
69
80
@label .setter
70
81
def label (self : AxisProtocol , value : str ) -> None :
71
- self ._ax . metadata ["label" ] = value
82
+ self ._raw_metadata ["label" ] = value
72
83
73
84
def _repr_args_ (self : AxisProtocol ) -> list [str ]:
74
85
"""
@@ -117,7 +128,7 @@ def __init__(
117
128
transform = transform ,
118
129
__dict__ = __dict__ ,
119
130
)
120
- self ._ax . metadata ["name" ] = name
131
+ self ._raw_metadata ["name" ] = name
121
132
self .label : str = label
122
133
123
134
@@ -136,7 +147,7 @@ def __init__(
136
147
metadata = metadata ,
137
148
__dict__ = __dict__ ,
138
149
)
139
- self ._ax . metadata ["name" ] = name
150
+ self ._raw_metadata ["name" ] = name
140
151
self .label : str = label
141
152
142
153
@@ -166,7 +177,7 @@ def __init__(
166
177
circular = circular ,
167
178
__dict__ = __dict__ ,
168
179
)
169
- self ._ax . metadata ["name" ] = name
180
+ self ._raw_metadata ["name" ] = name
170
181
self .label : str = label
171
182
172
183
@@ -198,7 +209,7 @@ def __init__(
198
209
circular = circular ,
199
210
__dict__ = __dict__ ,
200
211
)
201
- self ._ax . metadata ["name" ] = name
212
+ self ._raw_metadata ["name" ] = name
202
213
self .label : str = label
203
214
204
215
@@ -232,7 +243,7 @@ def __init__(
232
243
** kwargs ,
233
244
__dict__ = __dict__ ,
234
245
)
235
- self ._ax . metadata ["name" ] = name
246
+ self ._raw_metadata ["name" ] = name
236
247
self .label : str = label
237
248
238
249
@@ -266,5 +277,5 @@ def __init__(
266
277
** kwargs ,
267
278
__dict__ = __dict__ ,
268
279
)
269
- self ._ax . metadata ["name" ] = name
280
+ self ._raw_metadata ["name" ] = name
270
281
self .label : str = label
0 commit comments