Beispiel #1
0
 def test_to_common(self):
     ureg = UnitRegistry()
     data = [ ureg.parse_expression(q) for q in
             '3 cm', '2.4 in', '9.1 cm', '0.04 ft']
     result = to_common(data)
     self.assertEqual(result, [ ureg.parse_expression(q) for q in 
             '3 cm', '6.096 cm', '9.1 cm', '1.2192 cm'])
Beispiel #2
0
 def test_load(self):
     import pkg_resources
     from pint import unit
     data = pkg_resources.resource_filename(unit.__name__, 'default_en.txt')
     ureg1 = UnitRegistry()
     ureg2 = UnitRegistry(data)
     self.assertEqual(dir(ureg1), dir(ureg2))
     self.assertRaises(ValueError, UnitRegistry(None).load_definitions, 'notexisting')
Beispiel #3
0
 def test_default_format(self):
     ureg = UnitRegistry()
     q = ureg.meter
     s1 = '{0}'.format(q)
     s2 = '{0:~}'.format(q)
     ureg.default_format = '~'
     s3 = '{0}'.format(q)
     self.assertEqual(s2, s3)
     self.assertNotEqual(s1, s3)
     self.assertEqual(ureg.default_format, '~')
Beispiel #4
0
 def test_default_format(self):
     ureg = UnitRegistry()
     q = ureg.meter
     s1 = "{0}".format(q)
     s2 = "{0:~}".format(q)
     ureg.default_format = "~"
     s3 = "{0}".format(q)
     self.assertEqual(s2, s3)
     self.assertNotEqual(s1, s3)
     self.assertEqual(ureg.default_format, "~")
Beispiel #5
0
 def test_default_format(self):
     ureg = UnitRegistry()
     q = ureg.meter
     s1 = '{0}'.format(q)
     s2 = '{0:~}'.format(q)
     ureg.default_format = '~'
     s3 = '{0}'.format(q)
     self.assertEqual(s2, s3)
     self.assertNotEqual(s1, s3)
     self.assertEqual(ureg.default_format, '~')
Beispiel #6
0
 def test_unit_default_formatting(self):
     ureg = UnitRegistry()
     x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
     for spec, result in (('L', r'\frac{kilogram \cdot meter^{2}}{second}'),
                          ('P', 'kilogram·meter²/second'),
                          ('H', 'kilogram meter<sup>2</sup>/second'),
                          ('C', 'kilogram*meter**2/second'),
                          ('~', 'kg * m ** 2 / s'),
                          ('L~', r'\frac{kg \cdot m^{2}}{s}'),
                          ('P~', 'kg·m²/s'),
                          ('H~', 'kg m<sup>2</sup>/s'),
                          ('C~', 'kg*m**2/s'),
                          ):
         ureg.default_format = spec
         self.assertEqual('{0}'.format(x), result,
                          'Failed for {0}, {1}'.format(spec, result))
Beispiel #7
0
 def test_unit_default_formatting(self):
     ureg = UnitRegistry()
     x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
     for spec, result in (('L', r'\frac{kilogram \cdot meter^{2}}{second}'),
                          ('P', 'kilogram·meter²/second'),
                          ('H', 'kilogram meter<sup>2</sup>/second'),
                          ('C', 'kilogram*meter**2/second'),
                          ('~', 'kg * m ** 2 / s'),
                          ('L~', r'\frac{kg \cdot m^{2}}{s}'),
                          ('P~', 'kg·m²/s'),
                          ('H~', 'kg m<sup>2</sup>/s'),
                          ('C~', 'kg*m**2/s'),
                          ):
         ureg.default_format = spec
         self.assertEqual('{0}'.format(x), result,
                          'Failed for {0}, {1}'.format(spec, result))
Beispiel #8
0
 def test_unit_default_formatting(self):
     ureg = UnitRegistry()
     x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
     for spec, result in (
         ("L", r"\frac{kilogram \cdot meter^{2}}{second}"),
         ("P", "kilogram·meter²/second"),
         ("H", "kilogram meter<sup>2</sup>/second"),
         ("C", "kilogram*meter**2/second"),
         ("~", "kg * m ** 2 / s"),
         ("L~", r"\frac{kg \cdot m^{2}}{s}"),
         ("P~", "kg·m²/s"),
         ("H~", "kg m<sup>2</sup>/s"),
         ("C~", "kg*m**2/s"),
     ):
         ureg.default_format = spec
         self.assertEqual("{0}".format(x), result, "Failed for {0}, {1}".format(spec, result))
Beispiel #9
0
    def test_redefinition(self):
        d = UnitRegistry().define

        with self.capture_log() as buffer:
            d('meter = [fruits]')
            d('kilo- = 1000')
            d('[speed] = [vegetables]')

            # aliases
            d('bla = 3.2 meter = inch')
            d('myk- = 1000 = kilo-')

            self.assertEqual(len(buffer), 5)
Beispiel #10
0
 :Author: Tomas Chor
 :Date of start: 2015-08-15

"""
import os

vfile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'version')
__version__ = open(vfile, 'rt').read().strip()

#---------
# Here we create a "global" unitregistry for pymicra
try:
    from pint.unit import UnitRegistry
    import os
    abspath = os.path.dirname(os.path.abspath(__file__))
    ureg = UnitRegistry()
    ureg.load_definitions(os.path.join(abspath, 'pymicra.pint'))
    Q_ = ureg.Quantity
except ImportError:
    print('No pint installed yet. Install pint!')
#---------
from . import decorators

from .io import *
from .util import *
from .micro import *
from .signal import *
from .core import *

from . import io
from . import physics
Beispiel #11
0
 def test_base(self):
     ureg = UnitRegistry(None)
     ureg.define('meter = [length]')
     self.assertRaises(ValueError, ureg.define, 'meter = [length]')
     self.assertRaises(TypeError, ureg.define, list())
     x = ureg.define('degC = kelvin; offset: 273.15')
Beispiel #12
0
 def test_get_compatible_units(self):
     ureg = UnitRegistry()
     self.assertEqual(ureg.get_compatible_units(''), frozenset())
     self.assertEqual(ureg.get_compatible_units('meter'),
                      ureg.get_compatible_units(ParserHelper(meter=1)))
Beispiel #13
0
 def test_get_base_units(self):
     ureg = UnitRegistry()
     self.assertEqual(ureg.get_base_units(''), (1, ureg.Unit('')))
     self.assertEqual(ureg.get_base_units('meter'),
                      ureg.get_base_units(ParserHelper(meter=1)))
Beispiel #14
0
 def test_get_compatible_units(self):
     ureg = UnitRegistry()
     self.assertEqual(ureg.get_compatible_units(''), frozenset())
     self.assertEqual(ureg.get_compatible_units('meter'),
                      ureg.get_compatible_units(ParserHelper(meter=1)))
def convert_unit(unit_type, from_unit, from_value, to_unit):
    """Converts value/unit found in params to the given to_unit.

    It validates the input parameters to ensure that they
    contain the expected types of data.  Then, it converts
    the given unit value to the requested to_unit.  And it
    returns the converted result.

    Parameters
    ----------
    unit_type: UNIT_TYPES_ENUM (required)
        It  is a valid pint unit type
    from_unit: str (required)
        It is a valid pint unit to be converted from.
    from_value: float (required)
        It is a number corresponding to the from_unit to be converted from.
    to_unit : str (required)
        It is a valid pint unit to be converted to.

    Returns
    -------
    float:
        the converted unit value.
    """

    if not unit_type:
        raise IllegalArgumentException("unit_type is required.")

    if not isinstance(unit_type, UNIT_TYPES_ENUM):
        raise IllegalArgumentException("unit_type is not UNIT_TYPES_ENUM.")

    if is_blank(from_unit):
        raise IllegalArgumentException("from_unit is required.")

    if not from_value :
        raise IllegalArgumentException("from_value is required.")

    if not is_number(from_value):
        raise IllegalArgumentException("from_value [{0}] is not a number."
                                        .format(from_value))

    if is_blank(to_unit):
        raise IllegalArgumentException("to_unit is required.")


    # pint unit_reg unit converter object
    unit_reg = UnitRegistry(autoconvert_offset_to_baseunit=True)

    # an exception is raised if the to_unit is not valid
    to_unit_name = unit_reg.get_name(to_unit)
    to_unit_dimension = unit_reg.get_dimensionality(to_unit_name)

    if to_unit_dimension != UnitsContainer({"[" + unit_type.name + "]": 1}):
        raise IllegalArgumentException(
            ("Parameter to_unit=[{0}] not valid. [{1}] unit required.")
            .format(to_unit, unit_type.name))

    # an exception is raised if the from_unit is not valid
    from_unit_name = unit_reg.get_name(from_unit)
    from_unit_dimension = unit_reg.get_dimensionality(from_unit_name)

    if from_unit_dimension != UnitsContainer({"[" + unit_type.name + "]": 1}):
        raise IllegalArgumentException(
            ("Parameter from_unit=[{0}] not valid. [{1}] unit required.")
            .format(from_unit, unit_type.name))

    logging.debug("converting [{0} {1}] to [{2}]"
                  .format(from_value, from_unit_name, to_unit_name))

    from_value_float = float(from_value)
    from_value_quantity = from_value_float * unit_reg(from_unit_name)

    to_value_quantity = from_value_quantity.to(unit_reg(to_unit_name))

    result = to_value_quantity.magnitude
    decimals = decimal_places(to_value_quantity.magnitude)

    final_result = result
    # restrict results to 2 decimal places.
    if(decimals > 2):
        final_result = round(result, 2)

    if final_result == 0:
        # do not return 0 (zero) when rounding gives 0 value.
        final_result = result

    logging.debug("input [{0} {1}] result [{2} {3}]"
                  .format(from_value, from_unit_name, result, to_unit_name))

    return final_result
Beispiel #16
0
 def test_get_compatible_units(self):
     ureg = UnitRegistry()
     self.assertEqual(ureg.get_compatible_units(""), (1, UnitsContainer()))
     self.assertEqual(ureg.get_compatible_units("meter"), ureg.get_compatible_units(ParserHelper(meter=1)))
Beispiel #17
0
 def test_quantity_conversion(self):
     from pint.unit import UnitRegistry
     ureg = UnitRegistry()
     self.assertEqual(
         to_units_container(ureg.Quantity(1, UnitsContainer(m=1))),
         UnitsContainer(m=1))
Beispiel #18
0
 def test_get_base_units(self):
     ureg = UnitRegistry()
     self.assertEqual(ureg.get_base_units(''), (1, ureg.Unit('')))
     self.assertEqual(ureg.get_base_units('meter'), ureg.get_base_units(ParserHelper(meter=1)))
Beispiel #19
0
 def test_base(self):
     ureg = UnitRegistry(None)
     ureg.define('meter = [length]')
     self.assertRaises(ValueError, ureg.define, 'meter = [length]')
     self.assertRaises(TypeError, ureg.define, list())
     x = ureg.define('degC = kelvin; offset: 273.15')
Beispiel #20
0
 :Author: Tomas Chor
 :Date of start: 2015-08-15

"""
import os
vfile = os.path.join(os.path.dirname(os.path.realpath(__file__)),'version')
__version__ = open(vfile, 'rt').read().strip()

#---------
# Here we create a "global" unitregistry for pymicra
try:
    from pint.unit import UnitRegistry
    import os
    abspath = os.path.dirname(os.path.abspath(__file__))
    ureg = UnitRegistry()
    ureg.load_definitions(os.path.join(abspath,'pymicra.pint'))
    Q_ = ureg.Quantity
except ImportError:
    print('No pint installed yet. Install pint!')
#---------
import decorators

from io import *
from util import *
from micro import *
from signal import *
from core import *

import io
import physics
Beispiel #21
0
 def test_define(self):
     ureg = UnitRegistry(None)
     self.assertIsInstance(dir(ureg), list)
     self.assertGreater(len(dir(ureg)), 0)