_param.py
1 # SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-or-later OR CERN-OHL-S-2.0+ OR Apache-2.0 2 from .. import rule as _rle, property_ as _prp 3 4 from . import _core 5 6 7 class _PrimParam(_prp._Property): 8 def __init__(self, *, primitive: "_core._Primitive", name: str, allow_none=False, default=None): 9 super().__init__(name=name, allow_none=allow_none) 10 11 self._primitive = primitive 12 13 if default is not None: 14 try: 15 default = self.cast(default) 16 except TypeError: 17 raise TypeError( 18 f"default can't be converted to type '{self.value_type_str}'" 19 ) 20 self.default = default 21 22 def cast(self, value): 23 if (value is None) and hasattr(self, "default"): 24 return self.default 25 else: 26 return super().cast(value) 27 28 def __eq__(self, other): 29 equal = super().__eq__(other) 30 if isinstance(equal, _rle.RuleT): 31 return equal 32 else: 33 return ( 34 equal 35 and isinstance(other, _PrimParam) 36 and (self._primitive == other._primitive) 37 )