Пример #1
0
class TestCompatibleUnits(QuantityTestCase):
    FORCE_NDARRAY = False

    def setUp(self):
        super(TestCompatibleUnits, self).setUp()
        self.ureg = UnitRegistry(force_ndarray=self.FORCE_NDARRAY)
        self.Q_ = self.ureg.Quantity
        self.U_ = self.ureg.Unit

    def _test(self, input_units):
        gd = self.ureg.get_dimensionality
        dim = gd(input_units)
        equiv = self.ureg.get_compatible_units(input_units)
        for eq in equiv:
            self.assertEqual(gd(eq), dim)
        self.assertEqual(equiv, self.ureg.get_compatible_units(dim))

    def _test2(self, units1, units2):
        equiv1 = self.ureg.get_compatible_units(units1)
        equiv2 = self.ureg.get_compatible_units(units2)
        self.assertEqual(equiv1, equiv2)

    def test_many(self):
        self._test(self.ureg.meter)
        self._test(self.ureg.seconds)
        self._test(self.ureg.newton)
        self._test(self.ureg.kelvin)

    def test_context_sp(self):

        gd = self.ureg.get_dimensionality

        # length, frequency, energy
        valid = [gd(self.ureg.meter), gd(self.ureg.hertz),
                 gd(self.ureg.joule), 1/gd(self.ureg.meter)]

        with self.ureg.context('sp'):
            equiv = self.ureg.get_compatible_units(self.ureg.meter)
            result = set()
            for eq in equiv:
                dim = gd(eq)
                result.add(dim)
                self.assertIn(dim, valid)

            self.assertEqual(len(result), len(valid))

    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)))

    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)))
Пример #2
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, '~')
Пример #3
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{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}'),
                          ('P', 'kilogram·meter²/second'),
                          ('H', 'kilogram meter<sup>2</sup>/second'),
                          ('C', 'kilogram*meter**2/second'),
                          ('~', 'kg * m ** 2 / s'),
                          ('L~', r'\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{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))
Пример #4
0
 def test_unit_formatting_snake_case(self):
     # Test that snake_case units are escaped where appropriate
     ureg = UnitRegistry()
     x = ureg.Unit(UnitsContainer(oil_barrel=1))
     for spec, result in (
         ("L", r"\mathrm{oil\_barrel}"),
         ("P", "oil_barrel"),
         ("H", r"\[oil\_barrel\]"),
         ("C", "oil_barrel"),
         ("~", "oil_bbl"),
         ("L~", r"\mathrm{oil\_bbl}"),
         ("P~", "oil_bbl"),
         ("H~", r"\[oil\_bbl\]"),
         ("C~", "oil_bbl"),
     ):
         with self.subTest(spec):
             ureg.default_format = spec
             self.assertEqual(f"{x}", result,
                              f"Failed for {spec}, {result}")
Пример #5
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{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}'
          ),
         ('P', 'kilogram·meter²/second'),
         ('H', 'kilogram meter<sup>2</sup>/second'),
         ('C', 'kilogram*meter**2/second'),
         ('~', 'kg * m ** 2 / s'),
         ('L~', r'\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{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))
Пример #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{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}",
         ),
         ("P", "kilogram·meter²/second"),
         ("H", r"\[kilogram\ meter^2/second\]"),
         ("C", "kilogram*meter**2/second"),
         ("~", "kg * m ** 2 / s"),
         ("L~", r"\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}"),
         ("P~", "kg·m²/s"),
         ("H~", r"\[kg\ m^2/s\]"),
         ("C~", "kg*m**2/s"),
     ):
         with self.subTest(spec):
             ureg.default_format = spec
             self.assertEqual(f"{x}", result, f"Failed for {spec}, {result}")
Пример #7
0
 def test_unit_default_formatting(self, subtests):
     ureg = UnitRegistry()
     x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
     for spec, result in (
         (
             "L",
             r"\frac{\mathrm{kilogram} \cdot \mathrm{meter}^{2}}{\mathrm{second}}",
         ),
         ("P", "kilogram·meter²/second"),
         ("H", "kilogram meter<sup>2</sup>/second"),
         ("C", "kilogram*meter**2/second"),
         ("~", "kg * m ** 2 / s"),
         ("L~", r"\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}"),
         ("P~", "kg·m²/s"),
         ("H~", "kg m<sup>2</sup>/s"),
         ("C~", "kg*m**2/s"),
     ):
         with subtests.test(spec):
             ureg.default_format = spec
             assert f"{x}" == result, f"Failed for {spec}, {result}"
Пример #8
0
    def test_unit_formatting_custom(self, monkeypatch):
        from pint import formatting, register_unit_format

        monkeypatch.setattr(formatting, "_FORMATTERS", formatting._FORMATTERS.copy())

        @register_unit_format("new")
        def format_new(unit, **options):
            return "new format"

        ureg = UnitRegistry()

        assert "{:new}".format(ureg.m) == "new format"
Пример #9
0
 def test_base(self):
     ureg = UnitRegistry(None)
     ureg.define("meter = [length]")
     self.assertRaises(DefinitionSyntaxError, ureg.define,
                       "meter = [length]")
     self.assertRaises(TypeError, ureg.define, list())
     ureg.define("degC = kelvin; offset: 273.15")
Пример #10
0
    def test_alias(self):
        # Use load_definitions
        ureg = UnitRegistry([
            "canonical = [] = can = alias1 = alias2\n",
            # overlapping aliases
            "@alias canonical = alias2 = alias3\n",
            # Against another alias
            "@alias alias3 = alias4\n",
        ])

        # Use define
        ureg.define("@alias canonical = alias5")

        # Test that new aliases work
        # Test that pre-existing aliases and symbol are not eliminated
        for a in ("can", "alias1", "alias2", "alias3", "alias4", "alias5"):
            self.assertEqual(ureg.Unit(a), ureg.Unit("canonical"))

        # Test that aliases defined multiple times are not duplicated
        self.assertEqual(
            ureg._units["canonical"].aliases,
            ("alias1", "alias2", "alias3", "alias4", "alias5"),
        )

        # Define against unknown name
        self.assertRaises(KeyError, ureg.define, "@alias notexist = something")
Пример #11
0
    def test_ipython(self):
        alltext = []

        class Pretty(object):
            @staticmethod
            def text(text):
                alltext.append(text)

        ureg = UnitRegistry()
        x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
        self.assertEqual(x._repr_html_(), "kilogram meter<sup>2</sup>/second")
        self.assertEqual(x._repr_latex_(), r'$\frac{\mathrm{kilogram} \cdot '
                                           r'\mathrm{meter}^{2}}{\mathrm{second}}$')
        x._repr_pretty_(Pretty, False)
        self.assertEqual("".join(alltext), "kilogram·meter²/second")
        ureg.default_format = "~"
        self.assertEqual(x._repr_html_(), "kg m<sup>2</sup>/s")
        self.assertEqual(x._repr_latex_(),
                         r'$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$')
        alltext = []
        x._repr_pretty_(Pretty, False)
        self.assertEqual("".join(alltext), "kg·m²/s")
Пример #12
0
    def test_ipython(self):
        alltext = []

        class Pretty(object):
            @staticmethod
            def text(text):
                alltext.append(text)

        ureg = UnitRegistry()
        x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
        self.assertEqual(x._repr_html_(), "kilogram meter<sup>2</sup>/second")
        self.assertEqual(x._repr_latex_(), r'$\frac{\mathrm{kilogram} \cdot '
                                           r'\mathrm{meter}^{2}}{\mathrm{second}}$')
        x._repr_pretty_(Pretty, False)
        self.assertEqual("".join(alltext), "kilogram·meter²/second")
        ureg.default_format = "~"
        self.assertEqual(x._repr_html_(), "kg m<sup>2</sup>/s")
        self.assertEqual(x._repr_latex_(),
                         r'$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$')
        alltext = []
        x._repr_pretty_(Pretty, False)
        self.assertEqual("".join(alltext), "kg·m²/s")
Пример #13
0
    def test_redefinition(self, caplog):
        d = UnitRegistry().define

        with caplog.at_level(logging.DEBUG):
            d("meter = [fruits]")
            d("kilo- = 1000")
            d("[speed] = [vegetables]")

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

        assert len(caplog.records) == 5
Пример #14
0
    def test_ipython(self):
        alltext = []

        class Pretty:
            @staticmethod
            def text(text):
                alltext.append(text)

        ureg = UnitRegistry()
        x = ureg.Unit(UnitsContainer(meter=2, kilogram=1, second=-1))
        assert x._repr_html_() == "kilogram meter<sup>2</sup>/second"
        assert (x._repr_latex_() == r"$\frac{\mathrm{kilogram} \cdot "
                r"\mathrm{meter}^{2}}{\mathrm{second}}$")
        x._repr_pretty_(Pretty, False)
        assert "".join(alltext) == "kilogram·meter²/second"
        ureg.default_format = "~"
        assert x._repr_html_() == "kg m<sup>2</sup>/s"
        assert (x._repr_latex_() ==
                r"$\frac{\mathrm{kg} \cdot \mathrm{m}^{2}}{\mathrm{s}}$")
        alltext = []
        x._repr_pretty_(Pretty, False)
        assert "".join(alltext) == "kg·m²/s"
Пример #15
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)
Пример #16
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)
Пример #17
0
 def test_define(self):
     ureg = UnitRegistry(None)
     self.assertIsInstance(dir(ureg), list)
     self.assertGreater(len(dir(ureg)), 0)
Пример #18
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')
Пример #19
0
class TestCompatibleUnits(QuantityTestCase):
    FORCE_NDARRAY = False

    def setUp(self):
        super(TestCompatibleUnits, self).setUp()
        self.ureg = UnitRegistry(force_ndarray=self.FORCE_NDARRAY)
        self.Q_ = self.ureg.Quantity
        self.U_ = self.ureg.Unit

    def _test(self, input_units):
        gd = self.ureg.get_dimensionality
        dim = gd(input_units)
        equiv = self.ureg.get_compatible_units(input_units)
        for eq in equiv:
            self.assertEqual(gd(eq), dim)
        self.assertEqual(equiv, self.ureg.get_compatible_units(dim))

    def _test2(self, units1, units2):
        equiv1 = self.ureg.get_compatible_units(units1)
        equiv2 = self.ureg.get_compatible_units(units2)
        self.assertEqual(equiv1, equiv2)

    def test_many(self):
        self._test(self.ureg.meter)
        self._test(self.ureg.seconds)
        self._test(self.ureg.newton)
        self._test(self.ureg.kelvin)

    def test_context_sp(self):

        gd = self.ureg.get_dimensionality

        # length, frequency, energy
        valid = [
            gd(self.ureg.meter),
            gd(self.ureg.hertz),
            gd(self.ureg.joule), 1 / gd(self.ureg.meter)
        ]

        with self.ureg.context('sp'):
            equiv = self.ureg.get_compatible_units(self.ureg.meter)
            result = set()
            for eq in equiv:
                dim = gd(eq)
                result.add(dim)
                self.assertIn(dim, valid)

            self.assertEqual(len(result), len(valid))

    def test_get_base_units(self):
        ureg = UnitRegistry()
        self.assertEqual(ureg.get_base_units(''), (1, ureg.Unit('')))
        self.assertEqual(ureg.get_base_units('pi'), (math.pi, ureg.Unit('')))
        self.assertEqual(ureg.get_base_units('ln10'),
                         (math.log(10), ureg.Unit('')))
        self.assertEqual(ureg.get_base_units('meter'),
                         ureg.get_base_units(ParserHelper(meter=1)))

    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)))
Пример #20
0
 def test_iterate(self):
     ureg = UnitRegistry()
     assert "meter" in list(ureg)
Пример #21
0
- PERL (automatically during installation)
'''

import os
import pickle as pl
import subprocess
from enum import Enum

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
# matplotlib.use("Agg")
from pint.registry import UnitRegistry

ureg = UnitRegistry()


class Journal(Enum):
    SPRINGER = "SPRINGER"
    ELSEVIER = "ELSEVIER"
    POWERPOINT = "PTT"
    POWERPOINT_A3 = "PTTA3"


class Columnes(Enum):
    ONE = "1"
    ONE_POINT_FIVE = "1.5"
    TWO = "2"

Пример #22
0
 def test_quantity_conversion(self):
     from pint.registry import UnitRegistry
     ureg = UnitRegistry()
     self.assertEqual(to_units_container(ureg.Quantity(1, UnitsContainer(m=1))),
                      UnitsContainer(m=1))
Пример #23
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)))
Пример #24
0
 def test_get_compatible_units(self):
     ureg = UnitRegistry()
     assert ureg.get_compatible_units("") == frozenset()
     assert ureg.get_compatible_units("meter") == ureg.get_compatible_units(
         ParserHelper(meter=1)
     )
Пример #25
0
 def setUp(self):
     super(TestCompatibleUnits, self).setUp()
     self.ureg = UnitRegistry(force_ndarray=self.FORCE_NDARRAY)
     self.Q_ = self.ureg.Quantity
     self.U_ = self.ureg.Unit
Пример #26
0
 def test_iterate(self):
     ureg = UnitRegistry()
     self.assertTrue("meter" in list(ureg))
Пример #27
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)))
Пример #28
0
 def test_define(self):
     ureg = UnitRegistry(None)
     assert isinstance(dir(ureg), list)
     assert len(dir(ureg)) > 0
Пример #29
0
    def test_parse_with_force_ndarray(self):
        ureg = UnitRegistry(force_ndarray=True)

        assert ureg.parse_expression("m * s ** -2").units == ureg.m / ureg.s ** 2
Пример #30
0
 def setUp(self):
     super(TestCompatibleUnits, self).setUp()
     self.ureg = UnitRegistry(force_ndarray=self.FORCE_NDARRAY)
     self.Q_ = self.ureg.Quantity
     self.U_ = self.ureg.Unit
Пример #31
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')
Пример #32
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)))
Пример #33
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)))