-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease_notes.txt
More file actions
62 lines (47 loc) · 2.2 KB
/
release_notes.txt
File metadata and controls
62 lines (47 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
PyCaliper Release Notes
v1.0.1 Sept. 11, 2021
- Cleared conversion cache when setting a UOM conversion factor
v1.0.2 Sept. 19, 2021
- Upgraded to Python 3.9
- General code cleanup
v1.0.3 Nov. 19, 2021
- Changed to a specific PyCaliperException vs. generic Exception
- General code cleanup
v1.0.4 Mar. 17, 2023
- Changed inches of Mercury pressure to pound mass based.
v1.0.5 Oct. 14, 2023
- Verified on Python 3.12
v1.0.6 Jan. 11, 2024
- Created a PyPI distribution
v1.0.8, June 11, 2025:
- Constant: fixed AVOGADRO typo
- Prefix: used EPSILON in fromFactor() comparison
- Quantity: checked for division by 0 in divide(double)
- Localizer: enhanced class
- Symbolic: defined __eq__ and __hash__
- Unit of Measure: made __hash__ consistent with __eq__
v1.1.0, February 15, 2026:
- Claude Sonnet 4.5
Bug - Test Import Failure (test/init.py)
Fixed os.chdir("../uom") that was breaking tests when run from different locations
Performance Enhancements:
Dictionary Operations Optimization (unit_of_measure.py)
Removed unnecessary .keys() calls when checking membership (2 locations)
Optimized dict iteration in buildBaseString() - sort dict directly instead of keys
Improved multiplyOrDivide() - use tuple unpacking in for loops and .get() method
Optimized classify() - use .get() instead of checking membership then accessing
Major optimization in getConversionFactor() - replaced nested O(n²) loop with O(n) lookup using dict comprehension
Prefix Class Caching (prefix.py)
Implemented instance caching for all 22 prefix methods (milli, kilo, mega, etc.)
Previously created new objects on every call; now returns cached instances
Significant performance improvement for measurement system initialization
Symbol Generation Optimization (unit_of_measure.py)
Replaced expensive time.time_ns() call with simple counter
Much faster for intermediate unit generation
Power Calculation Optimization (unit_of_measure.py)
Replaced loop-based power calculation with math.pow() in Reducer.explodeRecursively()
More efficient and clearer code
Localizer Optimization (localizer.py)
Added @lru_cache decorator to getLC() method for language code lookup
Fixed __init__ to properly check _initialized attribute
Prevents repeated locale lookups