From 457f5fda045ccb821df7fc27c1fd761e5fe8b14f Mon Sep 17 00:00:00 2001 From: Benedikt Seeger <benedikt.seeger@ptb.de> Date: Tue, 15 Apr 2025 09:34:01 +0200 Subject: [PATCH] fixed eV to J conversion by adding double conversion --- pyproject.toml | 2 +- src/dsiUnits.py | 6 ++++-- tests/test_dsiUnits.py | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4e861a3..6fc935f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "dsiunits" # Ensure this is correctly specified -version = "2.5.1" +version = "2.5.2" description = "This is a Python module for handling the SI units as objects in Python, parsing them from strings and converting them to Latex and Unicode, as well as performing math operations and calculating scale factors." authors = [ { name="Benedikt Seeger", email="benedikt.seeger@ptb.de" }, diff --git a/src/dsiUnits.py b/src/dsiUnits.py index 3146c75..c8c7ba2 100644 --- a/src/dsiUnits.py +++ b/src/dsiUnits.py @@ -598,8 +598,10 @@ class dsiUnit: if not math.isnan(scaleFactor): return (scaleFactor, self) # Convert both trees to their base unit representations - selfBaseUnitTree = self.toBaseUnitTree(complete=complete) - otherBaseUnitTree = other.toBaseUnitTree(complete=complete) + # we need to do double conversince since eV-->J-->kgm²s⁻² + #TODO find more eleegant way for this + selfBaseUnitTree = self.toBaseUnitTree(complete=complete).toBaseUnitTree(complete=complete) + otherBaseUnitTree = other.toBaseUnitTree(complete=complete).toBaseUnitTree(complete=complete) # Sort both trees selfBaseUnitTree.sortTree() diff --git a/tests/test_dsiUnits.py b/tests/test_dsiUnits.py index 1536e8a..acff0b1 100644 --- a/tests/test_dsiUnits.py +++ b/tests/test_dsiUnits.py @@ -753,7 +753,11 @@ def test_toSIRP_composite_watt_units(): u = dsiUnit(expr) assert u.toSIRP() == expected_sirp, f"{expr} -> {u.toSIRP()} != {expected_sirp}" - +def test_JouleToeVConversion(): + j=dsiUnit(r'\joule') + eV=dsiUnit(r'\electronvolt') + scaleFactor, baseUnit=j._calculateScaleFactorAndCommonUnit(eV,complete=True) + assert scaleFactor def test_bipmRp_basic(): -- GitLab