Skip to content

Commit 422965f

Browse files
committed
Reduce cognitive complexity of AstroQuantity
1 parent 08ced4f commit 422965f

2 files changed

Lines changed: 26 additions & 24 deletions

File tree

src/ctapipe/core/tests/test_traits.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ class SomeBadComponentWithEnergyTrait(Component):
333333
with pytest.raises(
334334
TraitError,
335335
match=f"Given physical type {u.physical.energy} does not match"
336-
+ f" physical type of the default value, {u.get_physical_type(5 * u.m)}.",
336+
+ f" the default value's physical type {u.get_physical_type(5 * u.m)}.",
337337
):
338338

339339
class AnotherBadComponentWithEnergyTrait(Component):

src/ctapipe/core/traits.py

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -97,32 +97,34 @@ class AstroQuantity(TraitType):
9797

9898
def __init__(self, physical_type=None, **kwargs):
9999
super().__init__(**kwargs)
100-
if physical_type is not None:
101-
if isinstance(physical_type, u.PhysicalType):
102-
self.physical_type = physical_type
103-
elif isinstance(physical_type, u.UnitBase):
104-
self.physical_type = u.get_physical_type(physical_type)
105-
else:
106-
raise TraitError(
107-
"Given physical type must be either of type"
108-
" astropy.units.PhysicalType or a subclass of"
109-
f" astropy.units.UnitBase, was {type(physical_type)}."
110-
)
111-
else:
100+
if physical_type is None:
101+
self.physical_type = None
102+
elif isinstance(physical_type, u.PhysicalType):
112103
self.physical_type = physical_type
104+
elif isinstance(physical_type, u.UnitBase):
105+
self.physical_type = u.get_physical_type(physical_type)
106+
else:
107+
raise TraitError(
108+
"Given physical type must be either of type"
109+
" astropy.units.PhysicalType or a subclass of"
110+
f" astropy.units.UnitBase, was {type(physical_type)}."
111+
)
113112

114113
if self.default_value is not Undefined and self.default_value is not None:
115-
if self.physical_type is not None:
116-
default_type = u.get_physical_type(self.default_value)
117-
if default_type != self.physical_type:
118-
raise TraitError(
119-
f"Given physical type {self.physical_type} does not match"
120-
f" physical type of the default value, {default_type}."
121-
)
122-
else:
123-
if not isinstance(self.default_value, u.Quantity):
124-
self.default_value = u.Quantity(self.default_value)
125-
self.physical_type = u.get_physical_type(self.default_value)
114+
self._validate_default_value()
115+
116+
def _validate_default_value(self):
117+
if self.physical_type is not None:
118+
default_type = u.get_physical_type(self.default_value)
119+
if default_type != self.physical_type:
120+
raise TraitError(
121+
f"Given physical type {self.physical_type} does not match"
122+
f" the default value's physical type {default_type}."
123+
)
124+
else:
125+
if not isinstance(self.default_value, u.Quantity):
126+
self.default_value = u.Quantity(self.default_value)
127+
self.physical_type = u.get_physical_type(self.default_value)
126128

127129
@property
128130
def info_text(self):

0 commit comments

Comments
 (0)