File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -135,25 +135,29 @@ class DataSpec:
135
135
"""Options for xarray data creation."""
136
136
137
137
@classmethod
138
- def from_dataclass (cls , dataclass : Type [DataClass [PInit ]]) -> "DataSpec" :
138
+ def from_dataclass (
139
+ cls ,
140
+ dataclass : Type [DataClass [PInit ]],
141
+ dataoptions : Optional [DataOptions [Any ]] = None ,
142
+ ) -> "DataSpec" :
139
143
"""Create a data specification from a dataclass."""
140
144
specs = SpecDict ()
141
145
142
- for field in fields (eval_fields (dataclass )):
146
+ for field in fields (eval_types (dataclass )):
143
147
spec = get_spec (field )
144
148
145
149
if spec is not None :
146
150
specs [field .name ] = spec
147
151
148
- try :
149
- return cls (specs , dataclass .__dataoptions__ ) # type: ignore
150
- except AttributeError :
152
+ if dataoptions is None :
151
153
return cls (specs )
154
+ else :
155
+ return cls (specs , dataoptions )
152
156
153
157
154
158
# runtime functions
155
159
@lru_cache (maxsize = None )
156
- def eval_fields (dataclass : Type [DataClass [PInit ]]) -> Type [DataClass [PInit ]]:
160
+ def eval_types (dataclass : Type [DataClass [PInit ]]) -> Type [DataClass [PInit ]]:
157
161
"""Evaluate field types of a dataclass."""
158
162
types = get_type_hints (dataclass , include_extras = True )
159
163
You can’t perform that action at this time.
0 commit comments