Skip to content

Commit 8451279

Browse files
committed
Add additional information units
1 parent 4a9d268 commit 8451279

2 files changed

Lines changed: 136 additions & 0 deletions

File tree

quantities/tests/test_conversion.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,41 @@ def test_default_system(self):
5555
pq.set_default_units('cgs', length='mm')
5656
self.assertQuantityEqual(pq.kg.simplified, 1000*pq.g)
5757
self.assertQuantityEqual(pq.m.simplified, 1000*pq.mm)
58+
59+
class TestUnitInformation(TestCase):
60+
61+
def test_si(self):
62+
pq.set_default_units(information='B')
63+
self.assertQuantityEqual(pq.kB.simplified, pq.B*pq.kilo)
64+
self.assertQuantityEqual(pq.MB.simplified, pq.B*pq.mega)
65+
self.assertQuantityEqual(pq.GB.simplified, pq.B*pq.giga)
66+
self.assertQuantityEqual(pq.TB.simplified, pq.B*pq.tera)
67+
self.assertQuantityEqual(pq.PB.simplified, pq.B*pq.peta)
68+
self.assertQuantityEqual(pq.EB.simplified, pq.B*pq.exa)
69+
self.assertQuantityEqual(pq.ZB.simplified, pq.B*pq.zetta)
70+
self.assertQuantityEqual(pq.YB.simplified, pq.B*pq.yotta)
71+
72+
def test_si_aliases(self):
73+
prefixes = ['kilo', 'mega', 'giga', 'tera', 'peta', 'exa', 'zetta', 'yotta']
74+
for prefix in prefixes:
75+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'bytes'))
76+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'octet'))
77+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'octets'))
78+
79+
def test_iec(self):
80+
pq.set_default_units(information='B')
81+
self.assertQuantityEqual(pq.KiB.simplified, pq.B*pq.kibi)
82+
self.assertQuantityEqual(pq.MiB.simplified, pq.B*pq.mebi)
83+
self.assertQuantityEqual(pq.GiB.simplified, pq.B*pq.gibi)
84+
self.assertQuantityEqual(pq.TiB.simplified, pq.B*pq.tebi)
85+
self.assertQuantityEqual(pq.PiB.simplified, pq.B*pq.pebi)
86+
self.assertQuantityEqual(pq.EiB.simplified, pq.B*pq.exbi)
87+
self.assertQuantityEqual(pq.ZiB.simplified, pq.B*pq.zebi)
88+
self.assertQuantityEqual(pq.YiB.simplified, pq.B*pq.yobi)
89+
90+
def test_iec_aliases(self):
91+
prefixes = ['kibi', 'mebi', 'gibi', 'tebi', 'pebi', 'exbi', 'zebi', 'yobi']
92+
for prefix in prefixes:
93+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'bytes'))
94+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'octet'))
95+
self.assertQuantityEqual(pq.B.rescale(prefix + 'byte'), pq.B.rescale(prefix + 'octets'))

quantities/units/information.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,108 @@
1515
symbol='B',
1616
aliases=['bytes', 'o', 'octet', 'octets']
1717
)
18+
kB = kilobyte = ko = UnitInformation(
19+
'kilobyte',
20+
1000 * byte,
21+
symbol='kB',
22+
aliases=['kilobytes', 'kilooctet', 'kilooctets']
23+
)
24+
MB = megabyte = Mo = UnitInformation(
25+
'megabyte',
26+
1000 * kilobyte,
27+
symbol='MB',
28+
aliases=['megabytes', 'megaoctet', 'megaoctets']
29+
)
30+
GB = gigabyte = Go = UnitInformation(
31+
'gigabyte',
32+
1000 * megabyte,
33+
symbol='GB',
34+
aliases=['gigabytes', 'gigaoctet', 'gigaoctets']
35+
)
36+
TB = terabyte = To = UnitInformation(
37+
'terabyte',
38+
1000 * gigabyte,
39+
symbol='TB',
40+
aliases=['terabytes', 'teraoctet', 'teraoctets']
41+
)
42+
PB = petabyte = Po = UnitInformation(
43+
'petabyte',
44+
1000 * terabyte,
45+
symbol='PB',
46+
aliases=['petabytes', 'petaoctet', 'petaoctets']
47+
)
48+
EB = exabyte = Eo = UnitInformation(
49+
'exabyte',
50+
1000 * petabyte,
51+
symbol='EB',
52+
aliases=['exabytes', 'exaoctet', 'exaoctets']
53+
)
54+
ZB = zettabyte = Zo = UnitInformation(
55+
'zettabyte',
56+
1000 * exabyte,
57+
symbol='ZB',
58+
aliases=['zettabytes', 'zettaoctet', 'zettaoctets']
59+
)
60+
YB = yottabyte = Yo = UnitInformation(
61+
'yottabyte',
62+
1000 * zettabyte,
63+
symbol='YB',
64+
aliases=['yottabytes', 'yottaoctet', 'yottaoctets']
65+
)
1866
Bd = baud = bps = UnitQuantity(
1967
'baud',
2068
bit/s,
2169
symbol='Bd',
2270
)
2371

72+
# IEC
73+
KiB = kibibyte = Kio = UnitInformation(
74+
'kibibyte',
75+
1024 * byte,
76+
symbol='KiB',
77+
aliases=['kibibytes', 'kibioctet', 'kibioctets']
78+
)
79+
MiB = mebibyte = Mio = UnitInformation(
80+
'mebibyte',
81+
1024 * kibibyte,
82+
symbol='MiB',
83+
aliases=['mebibytes', 'mebioctet', 'mebioctets']
84+
)
85+
GiB = gibibyte = Gio = UnitInformation(
86+
'gibibyte',
87+
1024 * mebibyte,
88+
symbol='GiB',
89+
aliases=['gibibytes', 'gibioctet', 'gibioctets']
90+
)
91+
TiB = tebibyte = Tio = UnitInformation(
92+
'tebibyte',
93+
1024 * gibibyte,
94+
symbol='TiB',
95+
aliases=['tebibytes', 'tebioctet', 'tebioctets']
96+
)
97+
PiB = pebibyte = Pio = UnitInformation(
98+
'pebibyte',
99+
1024 * tebibyte,
100+
symbol='PiB',
101+
aliases=['pebibytes', 'pebioctet', 'pebioctets']
102+
)
103+
EiB = exbibyte = Eio = UnitInformation(
104+
'exbibyte',
105+
1024 * pebibyte,
106+
symbol='EiB',
107+
aliases=['exbibytes', 'exbioctet', 'exbioctets']
108+
)
109+
ZiB = zebibyte = Zio = UnitInformation(
110+
'zebibyte',
111+
1024 * exbibyte,
112+
symbol='ZiB',
113+
aliases=['zebibytes', 'zebioctet', 'zebioctets']
114+
)
115+
YiB = yobibyte = Yio = UnitInformation(
116+
'yobibyte',
117+
1024 * zebibyte,
118+
symbol='YiB',
119+
aliases=['yobibytes', 'yobioctet', 'yobioctets']
120+
)
121+
24122
del UnitQuantity, s, dimensionless

0 commit comments

Comments
 (0)