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