Skip to content

Commit 124dab6

Browse files
committed
fix a critical conflict between registration of farads and Faradays. Registry will now raise an error when an attempt is made to register using a previously used key. Fixes bug #495181.
1 parent 30e8f7b commit 124dab6

File tree

16 files changed

+59
-42
lines changed

16 files changed

+59
-42
lines changed

quantities/constants/electron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
_cd('elementary charge over h'),
1818
symbol='e/h'
1919
)
20-
F = Faraday_constant = UnitConstant(
20+
Faraday_constant = UnitConstant(
2121
'Faraday_constant',
2222
_cd('Faraday constant'),
2323
symbol='F'

quantities/registry.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ def __getitem__(self, string):
2727

2828
def __setitem__(self, string, val):
2929
assert isinstance(string, str)
30+
try:
31+
assert string not in self.__context
32+
except AssertionError:
33+
if val == self.__context[string]:
34+
return
35+
raise KeyError(
36+
'%s has already been registered for %s'
37+
% (string, self.__context[string])
38+
)
3039
self.__context[string] = val
3140

3241
__regex = re.compile(r'([A-Za-z])\.([A-Za-z])')

quantities/unitquantity.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,10 @@ class CompoundUnit(UnitQuantity):
378378
def __new__(cls, name):
379379
return UnitQuantity.__new__(cls, name, unit_registry[name])
380380

381+
def __init__(self, name):
382+
# do not register
383+
return
384+
381385
@with_doc(UnitQuantity.__add__, use_header=False)
382386
def __repr__(self):
383387
return '1 %s'%self.name

quantities/units/acceleration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
standard_free_fall = gp = dynamic = geopotential = UnitQuantity(
1212
'standard_gravity',
1313
9.806650*m/s**2,
14-
symbol='g',
14+
symbol='g_0',
1515
u_symbol='g₀',
1616
doc='exact'
1717
)

quantities/units/angle.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
mrad/1000,
2525
symbol='urad',
2626
u_symbol='µrad',
27-
aliases=['milliradians']
27+
aliases=['microradians']
2828
)
2929

3030
turn = revolution = cycle = turns = circle = circles = UnitQuantity(
@@ -48,7 +48,7 @@
4848
symbol='arcmin',
4949
u_symbol='′',
5050
aliases=[
51-
'arcmin', 'arcmins', 'arcminutes', 'arc_minute', 'arc_minutes',
51+
'arcmins', 'arcminutes', 'arc_minute', 'arc_minutes',
5252
'angular_minute', 'angular_minutes'
5353
]
5454
)
@@ -58,7 +58,7 @@
5858
symbol='arcsec',
5959
u_symbol='″',
6060
aliases=[
61-
'arcsec', 'arcsecs', 'arcseconds', 'arc_second', 'arc_second',
61+
'arcsecs', 'arcseconds', 'arc_second', 'arc_seconds',
6262
'angular_second', 'angular_seconds'
6363
]
6464
)

quantities/units/area.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
are = ares = UnitQuantity(
99
'are',
1010
100*m**2,
11-
symbol='a',
1211
aliases=['ares']
1312
)
1413
b = barn = UnitQuantity(
@@ -38,7 +37,7 @@
3837
'hectare',
3938
10000*m**2,
4039
symbol='ha',
41-
aliases=['hectare']
40+
aliases=['hectares']
4241
)
4342
acre = international_acre = UnitQuantity(
4443
'acre',

quantities/units/electromagnetism.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
mA/1000,
2929
symbol='uA',
3030
u_symbol='µA',
31-
aliases=['uA', 'microamp', 'microamps', 'microamperes'])
31+
aliases=['microamp', 'microamps', 'microamperes'])
3232
nA = nanoamp = nanoampere = UnitCurrent(
3333
'nanoampere',
3434
uA/1000,
@@ -155,8 +155,8 @@
155155
faraday = C12_faraday = UnitQuantity(
156156
'faraday',
157157
96485.3399*C,
158-
symbol='F',
159-
aliases=['faradays']
158+
aliases=['faradays'],
159+
doc='The symbol F is reserved for the farad'
160160
)
161161
gamma = UnitQuantity(
162162
'gamma',
@@ -189,7 +189,7 @@
189189
'stathenry',
190190
8.987554e11*H,
191191
symbol='stH',
192-
aliases=['statH', 'stH']
192+
aliases=['statH']
193193
)
194194
statmho = statS = stS = UnitQuantity(
195195
'statmho',
@@ -206,7 +206,7 @@
206206
'statvolt',
207207
2.997925e2*V,
208208
symbol='stV',
209-
aliases=['statvolts', 'statV', 'stV']
209+
aliases=['statvolts', 'statV']
210210
)
211211
unit_pole = UnitQuantity(
212212
'unit_pole',
@@ -215,7 +215,7 @@
215215
vacuum_permeability = mu_0 = magnetic_constant = UnitQuantity(
216216
'magnetic_constant',
217217
4*pi*10**-7*N/A**2,
218-
symbol='epsilon_0',
218+
symbol='mu_0',
219219
u_symbol='μ₀',
220220
aliases=['vacuum_permeability']
221221
)

quantities/units/force.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
'ounce_force',
3838
ounce*g_0,
3939
symbol='ozf',
40-
aliases=['ozf']
40+
aliases=['force_ounce']
4141
)
4242
lbf = force_pound = pound_force = UnitQuantity(
4343
'pound_force',

quantities/units/length.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
symbol='um',
3535
u_symbol='µm',
3636
aliases=[
37-
'um', 'micron', 'microns', 'micrometers', 'micrometre', 'micrometres'
37+
'micron', 'microns', 'micrometers', 'micrometre', 'micrometres'
3838
]
3939
)
4040
nm = nanometer = nanometre = UnitLength(
@@ -52,7 +52,6 @@
5252
angstrom = UnitLength(
5353
'angstrom',
5454
nm/10,
55-
symbol='A',
5655
u_symbol='Å',
5756
aliases=['angstroms']
5857
)
@@ -130,8 +129,9 @@
130129
pt = printers_point = point = UnitLength(
131130
'printers_point',
132131
127*mm/360,
133-
symbol='pt',
134-
aliases=['printers_points', 'point', 'points']
132+
symbol='point',
133+
aliases=['printers_points', 'points'],
134+
doc='pt is reserved for pint'
135135
)
136136
pica = UnitLength(
137137
'pica',

quantities/units/mass.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,19 @@
109109
u_symbol='℈',
110110
aliases=['scruples']
111111
)
112+
dr = dram = UnitMass(
113+
'dram',
114+
oz/16,
115+
symbol='dr',
116+
aliases=['drams'],
117+
doc='avoirdupois dram'
118+
)
112119
drachm = apdram = UnitMass(
113120
'drachm',
114121
60*gr,
115-
u_symbol='ʒ',
116-
aliases=['dram', 'drams', 'drachms', 'apdrams']
122+
u_symbol=' ',
123+
aliases=['drachms', 'apdram', 'apdrams'],
124+
doc='also known as the apothecary dram'
117125
)
118126

119127
bag = UnitMass(

0 commit comments

Comments
 (0)