Esempio n. 1
0
    def test_anonymous_context(self):
        ureg = UnitRegistry()
        c = Context()
        c.add_transformation("[length]", "[time]",
                             lambda ureg, x: x / ureg("5 cm/s"))
        self.assertRaises(ValueError, ureg.add_context, c)

        x = ureg("10 cm")
        expect = ureg("2 s")
        self.assertQuantityEqual(x.to("s", c), expect)

        with ureg.context(c):
            self.assertQuantityEqual(x.to("s"), expect)

        ureg.enable_contexts(c)
        self.assertQuantityEqual(x.to("s"), expect)
        ureg.disable_contexts(1)
        self.assertRaises(DimensionalityError, x.to, "s")

        # Multiple anonymous contexts
        c2 = Context()
        c2.add_transformation("[length]", "[time]",
                              lambda ureg, x: x / ureg("10 cm/s"))
        c2.add_transformation("[mass]", "[time]",
                              lambda ureg, x: x / ureg("10 kg/s"))
        with ureg.context(c2, c):
            self.assertQuantityEqual(x.to("s"), expect)
            # Transformations only in c2 are still working even if c takes priority
            self.assertQuantityEqual(ureg("100 kg").to("s"), ureg("10 s"))
        with ureg.context(c, c2):
            self.assertQuantityEqual(x.to("s"), ureg("1 s"))
Esempio n. 2
0
    def test_context_with_arg(self, func_registry):

        ureg = UnitRegistry()

        add_arg_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        with pytest.raises(DimensionalityError):
            q.to("Hz")
        with ureg.context("lc", n=1):
            assert q.to("Hz") == s
            with ureg.context("ab"):
                assert q.to("Hz") == s
            assert q.to("Hz") == s

        with ureg.context("ab"):
            with pytest.raises(DimensionalityError):
                q.to("Hz")
            with ureg.context("lc", n=1):
                assert q.to("Hz") == s
            with pytest.raises(DimensionalityError):
                q.to("Hz")

        with ureg.context("lc"):
            with pytest.raises(TypeError):
                q.to("Hz")
Esempio n. 3
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = _freeze({'[length]': 1.})
        t = _freeze({'[time]': -1.})
        c = _freeze({'[current]': -1.})

        g_sp = defaultdict(set)
        g_sp.update({
            l: {
                t,
            },
            t: {
                l,
            }
        })

        g_ab = defaultdict(set)
        g_ab.update({
            l: {
                c,
            },
            c: {
                l,
            }
        })

        g = defaultdict(set)
        g.update({
            l: {t, c},
            t: {
                l,
            },
            c: {
                l,
            }
        })

        with ureg.context('lc'):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('lc', n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('ab'):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context('lc'):
            with ureg.context('ab'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab'):
            with ureg.context('lc'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('lc', 'ab'):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab', 'lc'):
            self.assertEqual(ureg._active_ctx.graph, g)
    def test_context_with_arg_def(self):

        ureg = UnitRegistry()

        add_argdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc'):
            self.assertEqual(q.to('Hz'), s)
            with ureg.context('ab'):
                self.assertEqual(q.to('Hz'), s)
            self.assertEqual(q.to('Hz'), s)

        with ureg.context('ab'):
            self.assertRaises(ValueError, q.to, 'Hz')
            with ureg.context('lc'):
                self.assertEqual(q.to('Hz'), s)
            self.assertRaises(ValueError, q.to, 'Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc', n=2):
            self.assertEqual(q.to('Hz'), s / 2)
            with ureg.context('ab'):
                self.assertEqual(q.to('Hz'), s / 2)
            self.assertEqual(q.to('Hz'), s / 2)

        with ureg.context('ab'):
            self.assertRaises(ValueError, q.to, 'Hz')
            with ureg.context('lc', n=2):
                self.assertEqual(q.to('Hz'), s / 2)
            self.assertRaises(ValueError, q.to, 'Hz')
Esempio n. 5
0
    def test_context_with_arg_def(self):

        ureg = UnitRegistry()

        add_argdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        self.assertRaises(ValueError, q.to, "Hz")
        with ureg.context("lc"):
            self.assertEqual(q.to("Hz"), s)
            with ureg.context("ab"):
                self.assertEqual(q.to("Hz"), s)
            self.assertEqual(q.to("Hz"), s)

        with ureg.context("ab"):
            self.assertRaises(ValueError, q.to, "Hz")
            with ureg.context("lc"):
                self.assertEqual(q.to("Hz"), s)
            self.assertRaises(ValueError, q.to, "Hz")

        self.assertRaises(ValueError, q.to, "Hz")
        with ureg.context("lc", n=2):
            self.assertEqual(q.to("Hz"), s / 2)
            with ureg.context("ab"):
                self.assertEqual(q.to("Hz"), s / 2)
            self.assertEqual(q.to("Hz"), s / 2)

        with ureg.context("ab"):
            self.assertRaises(ValueError, q.to, "Hz")
            with ureg.context("lc", n=2):
                self.assertEqual(q.to("Hz"), s / 2)
            self.assertRaises(ValueError, q.to, "Hz")
Esempio n. 6
0
    def test_context_with_arg_def(self):

        ureg = UnitRegistry()

        add_argdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc'):
            self.assertEqual(q.to('Hz'), s)
            with ureg.context('ab'):
                self.assertEqual(q.to('Hz'), s)
            self.assertEqual(q.to('Hz'), s)

        with ureg.context('ab'):
            self.assertRaises(ValueError, q.to, 'Hz')
            with ureg.context('lc'):
                self.assertEqual(q.to('Hz'), s)
            self.assertRaises(ValueError, q.to, 'Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc', n=2):
            self.assertEqual(q.to('Hz'), s / 2)
            with ureg.context('ab'):
                self.assertEqual(q.to('Hz'), s / 2)
            self.assertEqual(q.to('Hz'), s / 2)

        with ureg.context('ab'):
            self.assertRaises(ValueError, q.to, 'Hz')
            with ureg.context('lc', n=2):
                self.assertEqual(q.to('Hz'), s / 2)
            self.assertRaises(ValueError, q.to, 'Hz')
Esempio n. 7
0
    def test_context_with_arg_def(self):

        ureg = UnitRegistry()

        add_argdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        self.assertRaises(DimensionalityError, q.to, "Hz")
        with ureg.context("lc"):
            self.assertEqual(q.to("Hz"), s)
            with ureg.context("ab"):
                self.assertEqual(q.to("Hz"), s)
            self.assertEqual(q.to("Hz"), s)

        with ureg.context("ab"):
            self.assertRaises(DimensionalityError, q.to, "Hz")
            with ureg.context("lc"):
                self.assertEqual(q.to("Hz"), s)
            self.assertRaises(DimensionalityError, q.to, "Hz")

        self.assertRaises(DimensionalityError, q.to, "Hz")
        with ureg.context("lc", n=2):
            self.assertEqual(q.to("Hz"), s / 2)
            with ureg.context("ab"):
                self.assertEqual(q.to("Hz"), s / 2)
            self.assertEqual(q.to("Hz"), s / 2)

        with ureg.context("ab"):
            self.assertRaises(DimensionalityError, q.to, "Hz")
            with ureg.context("lc", n=2):
                self.assertEqual(q.to("Hz"), s / 2)
            self.assertRaises(DimensionalityError, q.to, "Hz")
Esempio n. 8
0
    def test_unknown_nested_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context("lc"):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            with self.assertRaises(KeyError):
                with ureg.context("la"):
                    pass

            self.assertEqual(x, ureg._active_ctx)
            self.assertEqual(y, ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 9
0
    def test_unknown_nested_context(self, func_registry):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context("lc"):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            with pytest.raises(KeyError):
                with ureg.context("la"):
                    pass

            assert x == ureg._active_ctx
            assert y == ureg._active_ctx.graph

        assert not ureg._active_ctx
        assert not ureg._active_ctx.graph
Esempio n. 10
0
    def test_known_context(self, func_registry):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        with ureg.context("lc"):
            assert ureg._active_ctx
            assert ureg._active_ctx.graph

        assert not ureg._active_ctx
        assert not ureg._active_ctx.graph

        with ureg.context("lc", n=1):
            assert ureg._active_ctx
            assert ureg._active_ctx.graph

        assert not ureg._active_ctx
        assert not ureg._active_ctx.graph
Esempio n. 11
0
    def test_known_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        with ureg.context("lc"):
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)

        with ureg.context("lc", n=1):
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 12
0
    def test_known_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        with ureg.context('lc'):
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)

        with ureg.context('lc', n=1):
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 13
0
 def test_unknown_context(self):
     ureg = UnitRegistry()
     add_ctxs(ureg)
     with self.assertRaises(KeyError):
         with ureg.context("la"):
             pass
     self.assertFalse(ureg._active_ctx)
     self.assertFalse(ureg._active_ctx.graph)
Esempio n. 14
0
 def _test_ctx(self, ctx):
     ureg = UnitRegistry()
     q = 500 * ureg.meter
     s = (ureg.speed_of_light / q).to('Hz')
     ureg.add_context(ctx)
     with ureg.context(ctx.name):
         self.assertEqual(q.to('Hz'), s)
         self.assertEqual(s.to('meter'), q)
Esempio n. 15
0
 def _test_ctx(self, ctx):
     ureg = UnitRegistry()
     q = 500 * ureg.meter
     s = (ureg.speed_of_light / q).to('Hz')
     ureg.add_context(ctx)
     with ureg.context(ctx.name):
         self.assertEqual(q.to('Hz'), s)
         self.assertEqual(s.to('meter'), q)
Esempio n. 16
0
 def test_issue1062_issue1097(self):
     # Must not be used by any other tests
     ureg = UnitRegistry()
     assert "nanometer" not in ureg._units
     for i in range(5):
         ctx = Context.from_lines(["@context _", "cal = 4 J"])
         with ureg.context("sp", ctx):
             q = ureg.Quantity(1, "nm")
             q.to("J")
Esempio n. 17
0
    def test_multiple_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc', 'ab'):
            self.assertEqual(q.to('Hz'), s)
        self.assertRaises(ValueError, q.to, 'Hz')
Esempio n. 18
0
    def test_known_nested_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context("lc"):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

            with ureg.context("ab"):
                self.assertTrue(ureg._active_ctx)
                self.assertTrue(ureg._active_ctx.graph)
                self.assertNotEqual(x, ureg._active_ctx)
                self.assertNotEqual(y, ureg._active_ctx.graph)

            self.assertEqual(x, ureg._active_ctx)
            self.assertEqual(y, ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 19
0
    def test_multiple_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        self.assertRaises(ValueError, q.to, "Hz")
        with ureg.context("lc", "ab"):
            self.assertEqual(q.to("Hz"), s)
        self.assertRaises(ValueError, q.to, "Hz")
Esempio n. 20
0
    def test_known_nested_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context('lc'):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            self.assertTrue(ureg._active_ctx)
            self.assertTrue(ureg._active_ctx.graph)

            with ureg.context('ab'):
                self.assertTrue(ureg._active_ctx)
                self.assertTrue(ureg._active_ctx.graph)
                self.assertNotEqual(x, ureg._active_ctx)
                self.assertNotEqual(y, ureg._active_ctx.graph)

            self.assertEqual(x, ureg._active_ctx)
            self.assertEqual(y, ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 21
0
    def test_multiple_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc', 'ab'):
            self.assertEqual(q.to('Hz'), s)
        self.assertRaises(ValueError, q.to, 'Hz')
Esempio n. 22
0
    def test_known_nested_context(self, func_registry):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context("lc"):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            assert ureg._active_ctx
            assert ureg._active_ctx.graph

            with ureg.context("ab"):
                assert ureg._active_ctx
                assert ureg._active_ctx.graph
                assert x != ureg._active_ctx
                assert y != ureg._active_ctx.graph

            assert x == ureg._active_ctx
            assert y == ureg._active_ctx.graph

        assert not ureg._active_ctx
        assert not ureg._active_ctx.graph
Esempio n. 23
0
 def test_unknown_context(self):
     ureg = UnitRegistry()
     add_ctxs(ureg)
     try:
         with ureg.context('la'):
             pass
     except KeyError as e:
         value = True
     except Exception as e:
         value = False
     self.assertTrue(value)
     self.assertFalse(ureg._active_ctx)
     self.assertFalse(ureg._active_ctx.graph)
Esempio n. 24
0
    def test_unknown_nested_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context("lc"):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            try:
                with ureg.context("la"):
                    pass
            except KeyError as e:
                value = True
            except Exception as e:
                value = False

            self.assertTrue(value)

            self.assertEqual(x, ureg._active_ctx)
            self.assertEqual(y, ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 25
0
    def test_unknown_nested_context(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)

        with ureg.context('lc'):
            x = dict(ureg._active_ctx)
            y = dict(ureg._active_ctx.graph)
            try:
                with ureg.context('la'):
                    pass
            except KeyError as e:
                value = True
            except Exception as e:
                value = False

            self.assertTrue(value)

            self.assertEqual(x, ureg._active_ctx)
            self.assertEqual(y, ureg._active_ctx.graph)

        self.assertFalse(ureg._active_ctx)
        self.assertFalse(ureg._active_ctx.graph)
Esempio n. 26
0
def test_non_multiplicative(subtests):
    ureg = UnitRegistry("""
        kelvin = [temperature]
        fahrenheit = 5 / 9 * kelvin; offset: 255
        bogodegrees = 9 * kelvin

        @context nonmult_to_nonmult
            fahrenheit = 7 * kelvin; offset: 123
        @end
        @context nonmult_to_mult
            fahrenheit = 123 * kelvin
        @end
        @context mult_to_nonmult
            bogodegrees = 5 * kelvin; offset: 123
        @end
        """.splitlines())
    k = ureg.Quantity(100, "kelvin")

    with subtests.test("baseline"):
        helpers.assert_quantity_almost_equal(
            k.to("fahrenheit").magnitude, (100 - 255) * 9 / 5)
        helpers.assert_quantity_almost_equal(
            k.to("bogodegrees").magnitude, 100 / 9)

    with subtests.test("nonmult_to_nonmult"):
        with ureg.context("nonmult_to_nonmult"):
            helpers.assert_quantity_almost_equal(
                k.to("fahrenheit").magnitude, (100 - 123) / 7)

    with subtests.test("nonmult_to_mult"):
        with ureg.context("nonmult_to_mult"):
            helpers.assert_quantity_almost_equal(
                k.to("fahrenheit").magnitude, 100 / 123)

    with subtests.test("mult_to_nonmult"):
        with ureg.context("mult_to_nonmult"):
            helpers.assert_quantity_almost_equal(
                k.to("bogodegrees").magnitude, (100 - 123) / 5)
Esempio n. 27
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = _freeze({'[length]': 1.})
        t = _freeze({'[time]': -1.})
        c = _freeze({'[current]': -1.})

        g_sp = defaultdict(set)
        g_sp.update({l: {t, },
                     t: {l, }})

        g_ab = defaultdict(set)
        g_ab.update({l: {c, },
                     c: {l, }})

        g = defaultdict(set)
        g.update({l: {t, c},
                  t: {l, },
                  c: {l, }})

        with ureg.context('lc'):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('lc', n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('ab'):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context('lc'):
            with ureg.context('ab'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab'):
            with ureg.context('lc'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('lc', 'ab'):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab', 'lc'):
            self.assertEqual(ureg._active_ctx.graph, g)
Esempio n. 28
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = UnitsContainer({'[length]': 1.})
        t = UnitsContainer({'[time]': -1.})
        c = UnitsContainer({'[current]': 1.})

        g_sp = defaultdict(set)
        g_sp.update({l: set((t,)),
                     t: set((l,))})

        g_ab = defaultdict(set)
        g_ab.update({l: set((c,)),
                     c: set((l,))})

        g = defaultdict(set)
        g.update({l: set((t, c)),
                  t: set((l,)),
                  c: set((l,))})

        with ureg.context('lc'):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('lc', n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('ab'):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context('lc'):
            with ureg.context('ab'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab'):
            with ureg.context('lc'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('lc', 'ab'):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab', 'lc'):
            self.assertEqual(ureg._active_ctx.graph, g)
Esempio n. 29
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = UnitsContainer({'[length]': 1.})
        t = UnitsContainer({'[time]': -1.})
        c = UnitsContainer({'[current]': -1.})

        g_sp = defaultdict(set)
        g_sp.update({l: set((t,)),
                     t: set((l,))})

        g_ab = defaultdict(set)
        g_ab.update({l: set((c,)),
                     c: set((l,))})

        g = defaultdict(set)
        g.update({l: set((t, c)),
                  t: set((l,)),
                  c: set((l,))})

        with ureg.context('lc'):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('lc', n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context('ab'):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context('lc'):
            with ureg.context('ab'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab'):
            with ureg.context('lc'):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('lc', 'ab'):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context('ab', 'lc'):
            self.assertEqual(ureg._active_ctx.graph, g)
Esempio n. 30
0
    def test_one_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        meter_units = ureg.get_compatible_units(ureg.meter)
        hertz_units = ureg.get_compatible_units(ureg.hertz)

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc'):
            self.assertEqual(q.to('Hz'), s)
            self.assertEqual(ureg.get_compatible_units(q), meter_units | hertz_units)
        self.assertRaises(ValueError, q.to, 'Hz')
        self.assertEqual(ureg.get_compatible_units(q), meter_units)
Esempio n. 31
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = UnitsContainer({"[length]": 1.0})  # noqa: E741
        t = UnitsContainer({"[time]": -1.0})
        c = UnitsContainer({"[current]": 1.0})

        g_sp = defaultdict(set)
        g_sp.update({l: {t}, t: {l}})

        g_ab = defaultdict(set)
        g_ab.update({l: {c}, c: {l}})

        g = defaultdict(set)
        g.update({l: {t, c}, t: {l}, c: {l}})

        with ureg.context("lc"):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context("lc", n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context("ab"):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context("lc"):
            with ureg.context("ab"):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("ab"):
            with ureg.context("lc"):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("lc", "ab"):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("ab", "lc"):
            self.assertEqual(ureg._active_ctx.graph, g)
Esempio n. 32
0
    def test_graph(self):
        ureg = UnitRegistry()
        add_ctxs(ureg)
        l = _freeze({"[length]": 1.0})
        t = _freeze({"[time]": -1.0})
        c = _freeze({"[current]": -1.0})

        g_sp = defaultdict(set)
        g_sp.update({l: set((t,)), t: set((l,))})

        g_ab = defaultdict(set)
        g_ab.update({l: set((c,)), c: set((l,))})

        g = defaultdict(set)
        g.update({l: set((t, c)), t: set((l,)), c: set((l,))})

        with ureg.context("lc"):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context("lc", n=1):
            self.assertEqual(ureg._active_ctx.graph, g_sp)

        with ureg.context("ab"):
            self.assertEqual(ureg._active_ctx.graph, g_ab)

        with ureg.context("lc"):
            with ureg.context("ab"):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("ab"):
            with ureg.context("lc"):
                self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("lc", "ab"):
            self.assertEqual(ureg._active_ctx.graph, g)

        with ureg.context("ab", "lc"):
            self.assertEqual(ureg._active_ctx.graph, g)
Esempio n. 33
0
    def test_one_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        meter_units = ureg.get_compatible_units(ureg.meter)
        hertz_units = ureg.get_compatible_units(ureg.hertz)

        self.assertRaises(ValueError, q.to, 'Hz')
        with ureg.context('lc'):
            self.assertEqual(q.to('Hz'), s)
            self.assertEqual(ureg.get_compatible_units(q),
                             meter_units | hertz_units)
        self.assertRaises(ValueError, q.to, 'Hz')
        self.assertEqual(ureg.get_compatible_units(q), meter_units)
Esempio n. 34
0
    def test_one_context(self):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        meter_units = ureg.get_compatible_units(ureg.meter)
        hertz_units = ureg.get_compatible_units(ureg.hertz)

        self.assertRaises(DimensionalityError, q.to, "Hz")
        with ureg.context("lc"):
            self.assertEqual(q.to("Hz"), s)
            self.assertEqual(ureg.get_compatible_units(q),
                             meter_units | hertz_units)
        self.assertRaises(DimensionalityError, q.to, "Hz")
        self.assertEqual(ureg.get_compatible_units(q), meter_units)
Esempio n. 35
0
    def test_one_context(self, func_registry):
        ureg = UnitRegistry()

        add_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        meter_units = ureg.get_compatible_units(ureg.meter)
        hertz_units = ureg.get_compatible_units(ureg.hertz)

        with pytest.raises(DimensionalityError):
            q.to("Hz")
        with ureg.context("lc"):
            assert q.to("Hz") == s
            assert ureg.get_compatible_units(q) == meter_units | hertz_units
        with pytest.raises(DimensionalityError):
            q.to("Hz")
        assert ureg.get_compatible_units(q) == meter_units
Esempio n. 36
0
    def _test_ctx(self, ctx):
        ureg = UnitRegistry()
        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        nctx = len(ureg._contexts)

        assert ctx.name not in ureg._contexts
        ureg.add_context(ctx)

        assert ctx.name in ureg._contexts
        assert len(ureg._contexts) == nctx + 1 + len(ctx.aliases)

        with ureg.context(ctx.name):
            assert q.to("Hz") == s
            assert s.to("meter") == q

        ureg.remove_context(ctx.name)
        assert ctx.name not in ureg._contexts
        assert len(ureg._contexts) == nctx
Esempio n. 37
0
    def _test_ctx(self, ctx):
        ureg = UnitRegistry()
        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")

        nctx = len(ureg._contexts)

        self.assertNotIn(ctx.name, ureg._contexts)
        ureg.add_context(ctx)

        self.assertIn(ctx.name, ureg._contexts)
        self.assertEqual(len(ureg._contexts), nctx + 1 + len(ctx.aliases))

        with ureg.context(ctx.name):
            self.assertEqual(q.to("Hz"), s)
            self.assertEqual(s.to("meter"), q)

        ureg.remove_context(ctx.name)
        self.assertNotIn(ctx.name, ureg._contexts)
        self.assertEqual(len(ureg._contexts), nctx)
Esempio n. 38
0
    def _test_ctx(self, ctx):
        ureg = UnitRegistry()
        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')

        nctx = len(ureg._contexts)

        self.assertNotIn(ctx.name, ureg._contexts)
        ureg.add_context(ctx)

        self.assertIn(ctx.name, ureg._contexts)
        self.assertEqual(len(ureg._contexts), nctx + 1 + len(ctx.aliases))

        with ureg.context(ctx.name):
            self.assertEqual(q.to('Hz'), s)
            self.assertEqual(s.to('meter'), q)

        ureg.remove_context(ctx.name)
        self.assertNotIn(ctx.name, ureg._contexts)
        self.assertEqual(len(ureg._contexts), nctx)
Esempio n. 39
0
class LogConverter(Converter):
    is_multiplicative = False

    def to_reference(self, value, inplace=False):
        return value

    def from_reference(self, value, inplace=False):
        return value


ureg = UnitRegistry()
ureg.default_format = '~P'
ureg.load_definitions('FrequencyRegistry.txt')

with ureg.context('rf'):
    Z = (ureg.ohm * 50)
    print(Z.magnitude)
    print(Z.units)
    print(Z)
    print()

    q = (20 * ureg.cm)
    print(q.to('MHz'))

    q = (230 * ureg.MHz)
    print(q.to('cm'))

    print()
    print("6.432W")
    q = ((Z * (6.432 * ureg.watt))**.5)  # ** .5) == square root
Esempio n. 40
0
    def test_context_with_sharedarg_def(self):

        ureg = UnitRegistry()

        add_sharedargdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")
        u = (1 / 500) * ureg.ampere

        with ureg.context("lc"):
            self.assertEqual(q.to("Hz"), s)
            with ureg.context("ab"):
                self.assertEqual(q.to("ampere"), u)

        with ureg.context("ab"):
            self.assertEqual(q.to("ampere"), 0 * u)
            with ureg.context("lc"):
                self.assertRaises(ZeroDivisionError, ureg.Quantity.to, q, "Hz")

        with ureg.context("lc", n=2):
            self.assertEqual(q.to("Hz"), s / 2)
            with ureg.context("ab"):
                self.assertEqual(q.to("ampere"), 2 * u)

        with ureg.context("ab", n=3):
            self.assertEqual(q.to("ampere"), 3 * u)
            with ureg.context("lc"):
                self.assertEqual(q.to("Hz"), s / 3)

        with ureg.context("lc", n=2):
            self.assertEqual(q.to("Hz"), s / 2)
            with ureg.context("ab", n=4):
                self.assertEqual(q.to("ampere"), 4 * u)

        with ureg.context("ab", n=3):
            self.assertEqual(q.to("ampere"), 3 * u)
            with ureg.context("lc", n=6):
                self.assertEqual(q.to("Hz"), s / 6)
Esempio n. 41
0
    def test_context_with_sharedarg_def(self):

        ureg = UnitRegistry()

        add_sharedargdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to('Hz')
        u = (1 / 500) * ureg.ampere

        with ureg.context('lc'):
            self.assertEqual(q.to('Hz'), s)
            with ureg.context('ab'):
                self.assertEqual(q.to('ampere'), u)

        with ureg.context('ab'):
            self.assertEqual(q.to('ampere'), 0 * u)
            with ureg.context('lc'):
                self.assertRaises(ZeroDivisionError, ureg.Quantity.to, q, 'Hz')

        with ureg.context('lc', n=2):
            self.assertEqual(q.to('Hz'), s / 2)
            with ureg.context('ab'):
                self.assertEqual(q.to('ampere'), 2 * u)

        with ureg.context('ab', n=3):
            self.assertEqual(q.to('ampere'), 3 * u)
            with ureg.context('lc'):
                self.assertEqual(q.to('Hz'), s / 3)

        with ureg.context('lc', n=2):
            self.assertEqual(q.to('Hz'), s / 2)
            with ureg.context('ab', n=4):
                self.assertEqual(q.to('ampere'), 4 * u)

        with ureg.context('ab', n=3):
            self.assertEqual(q.to('ampere'), 3 * u)
            with ureg.context('lc', n=6):
                self.assertEqual(q.to('Hz'), s / 6)
Esempio n. 42
0
    def test_context_with_sharedarg_def(self, func_registry):

        ureg = UnitRegistry()

        add_sharedargdef_ctxs(ureg)

        q = 500 * ureg.meter
        s = (ureg.speed_of_light / q).to("Hz")
        u = (1 / 500) * ureg.ampere

        with ureg.context("lc"):
            assert q.to("Hz") == s
            with ureg.context("ab"):
                assert q.to("ampere") == u

        with ureg.context("ab"):
            assert q.to("ampere") == 0 * u
            with ureg.context("lc"):
                with pytest.raises(ZeroDivisionError):
                    ureg.Quantity.to(q, "Hz")

        with ureg.context("lc", n=2):
            assert q.to("Hz") == s / 2
            with ureg.context("ab"):
                assert q.to("ampere") == 2 * u

        with ureg.context("ab", n=3):
            assert q.to("ampere") == 3 * u
            with ureg.context("lc"):
                assert q.to("Hz") == s / 3

        with ureg.context("lc", n=2):
            assert q.to("Hz") == s / 2
            with ureg.context("ab", n=4):
                assert q.to("ampere") == 4 * u

        with ureg.context("ab", n=3):
            assert q.to("ampere") == 3 * u
            with ureg.context("lc", n=6):
                assert q.to("Hz") == s / 6