[docs]defhas_compatible_units(instance,attribute,value):""" Validate if ``value`` has units compatible (in the sense of :func:`~pinttr.units_compatible`) with ``attribute``. Only works with unit-enabled fields created with :func:`pinttr.ib`. """compatible_units=attribute.metadata[MetadataKey.UNITS]()try:ifnotunits_compatible(value.units,compatible_units):raiseUnitsError(units1=value.units,units2=compatible_units,extra_msg=f": incompatible units '{value.units}' "f"used to set field '{attribute.name}' "f"(allowed: '{compatible_units}').",)exceptAttributeError:# value.units doesn't existraiseUnitsError(units1=None,units2=compatible_units,extra_msg=f": unitless value '{value}' "f"used to set field '{attribute.name}' "f"(requires units '{compatible_units}').",)