Source code for jsonextended.encoders.pint_quantity

from pint import UnitRegistry
ureg = UnitRegistry()
from pint.quantity import _Quantity  # noqa: E402


[docs]class Encode_Quantity(object): # noqa: N801 """ Examples -------- >>> from pprint import pprint >>> from pint import UnitRegistry >>> ureg = UnitRegistry() >>> print(Encode_Quantity().to_str(ureg.Quantity(1,'nanometre'))) 1 nm >>> pprint(Encode_Quantity().to_json(ureg.Quantity(1,'nanometre'))) {'_pint_Quantity_': {'Magnitude': 1, 'Units': 'nanometer'}} >>> Encode_Quantity().from_json({'_pint_Quantity_': {'Magnitude': 1, 'Units': 'nanometer'}}) <Quantity(1, 'nanometer')> """ # noqa: E501 plugin_name = 'pint.Quantity' plugin_descript = 'encode/decode pint.Quantity object' objclass = _Quantity dict_signature = ['_pint_Quantity_']
[docs] def to_str(self, obj): return ' '.join(u'{:~}'.format(obj).split())
[docs] def to_json(self, obj): value = obj.magnitude units = obj.units return {'_pint_Quantity_': {'Magnitude': value, 'Units': str(units)}}
[docs] def from_json(self, obj): return ureg.Quantity(obj['_pint_Quantity_']['Magnitude'], obj['_pint_Quantity_']['Units'])