fix: give alternate unit suffixes their own keys - #1314
Conversation
Units whose UNECE symbol column lists aliases (e.g. "% or pct") were emitted twice under the SAME Python name, so the second assignment overwrote the first. units.PERCENT therefore resolved to the "pct" descriptor and the "%" one was unreachable as a module attribute. The same collision affected KILOGRAM_PER_LITRE, DECITONNE and RACK_UNIT. units_from_xls.py now keeps the canonical key for the first suffix and derives a distinct key for each alternate suffix; units.py is updated to match. Adds test/util/units_test.py covering the primary suffix, the distinct alias keys, and lookup by every suffix. Fixes google#1250
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
@googlebot I signed it! |
1 similar comment
|
@googlebot I signed it! |
|
I've signed the Google Individual Contributor License Agreement as an individual contributor, and the cla/google check is now passing. This should be ready for review whenever a maintainer has a moment. Happy to rebase or adjust anything if needed. Thanks! |
|
There are a few problems with this approach, including:
Given the small number of units that have aliases, we might as well create a lookup such units. |
Only four UNECE rows list more than one symbol. Deriving a module-level
name for each alternate produced awkward keys like
KILOGRAM_PER_LITRE_KG_PER_L. Keep the canonical key for the primary
symbol and add alternates to ALL_UNITS anonymously so they remain
reachable via units.Unit('<symbol>'). An explicit ALIAS_UNIT_KEYS table
names the one alias worth exposing, PERCENT_PCT.
|
Both fair, and the jitter one was the bigger problem — Reworked in b81fdd5 along the lines you suggested. The generator now keeps the canonical key for the first symbol listed in the sheet (that's the primary one) and appends alternates to Net effect on the generated module: Tests updated to match (primary keeps its symbol / alternates resolve by lookup only). 4 pass here; they fail 3/4 against current master. Happy to drop |
Fixes #1250
When a UNECE symbol column lists aliases (
% or pct), the generator emitted both descriptors under the same Python key, so the second overwrote the first —units.PERCENTresolved topctand the%descriptor was unreachable as a module attribute.KILOGRAM_PER_LITRE,DECITONNEandRACK_UNIThad the same collision.units_from_xls.pynow keeps the canonical key for the first suffix and derives a distinct key for each alternate (PERCENT_PCT, etc.);units.pyis regenerated to match. Lookup viaunits.Unit('%')/units.Unit('pct')is unchanged. Newtest/util/units_test.pyfails on master and passes with the fix.