From 37f5771699501d954277bd337c5ed6e2c6860105 Mon Sep 17 00:00:00 2001
From: ShivaDahal99 <130563462+ShivaDahal99@users.noreply.github.com>
Date: Mon, 22 May 2023 19:19:07 +0200
Subject: [PATCH 1/4] Create TestShiva

---
 TestShiva | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 TestShiva

diff --git a/TestShiva b/TestShiva
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/TestShiva
@@ -0,0 +1 @@
+

From baf8d49b81cb576cad1821e05ad11240110958e0 Mon Sep 17 00:00:00 2001
From: ShivaDahal99 <130563462+ShivaDahal99@users.noreply.github.com>
Date: Mon, 22 May 2023 19:19:40 +0200
Subject: [PATCH 2/4] Delete TestShiva

---
 TestShiva | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 TestShiva

diff --git a/TestShiva b/TestShiva
deleted file mode 100644
index 8b137891791f..000000000000
--- a/TestShiva
+++ /dev/null
@@ -1 +0,0 @@
-

From 6660871f960e5e28db6c0f68d68eb4bc0feb3bcd Mon Sep 17 00:00:00 2001
From: jlhuhn <jlhuhn@outlook.de>
Date: Wed, 7 Jun 2023 03:13:56 +0200
Subject: [PATCH 3/4] Create energy_conversions.py

---
 conversions/energy_conversions.py | 114 ++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)
 create mode 100644 conversions/energy_conversions.py

diff --git a/conversions/energy_conversions.py b/conversions/energy_conversions.py
new file mode 100644
index 000000000000..860873611f83
--- /dev/null
+++ b/conversions/energy_conversions.py
@@ -0,0 +1,114 @@
+"""
+Conversion of energy units.
+
+Available units: joule, kilojoule, megajoule, gigajoule,\
+      wattsecond, watthour, kilowatthour, newtonmeter, calorie_nutr,\
+          kilocalorie_nutr, electronvolt, britishthermalunit_it, footpound
+
+USAGE :
+-> Import this file into their respective project.
+-> Use the function energy_conversion() for conversion of energy units.
+-> Parameters :
+    -> from_type : From which type you want to convert
+    -> to_type : To which type you want to convert
+    -> value : the value which you want to convert
+
+REFERENCES :
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Units_of_energy
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Joule
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Kilowatt-hour
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Newton-metre
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Calorie
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Electronvolt
+-> Wikipedia reference: https://en.wikipedia.org/wiki/British_thermal_unit
+-> Wikipedia reference: https://en.wikipedia.org/wiki/Foot-pound_(energy)
+-> Unit converter reference: https://www.unitconverters.net/energy-converter.html
+"""
+
+ENERGY_CONVERSION: dict[str, float] = {
+    "joule": 1.0,
+    "kilojoule": 1_000,
+    "megajoule": 1_000_000,
+    "gigajoule": 1_000_000_000,
+    "wattsecond": 1.0,
+    "watthour": 3_600,
+    "kilowatthour": 3_600_000,
+    "newtonmeter": 1.0,
+    "calorie_nutr": 4_186.8,
+    "kilocalorie_nutr": 4_186_800.00,
+    "electronvolt": 1.602_176_634e-19,
+    "britishthermalunit_it": 1_055.055_85,
+    "footpound": 1.355_818,
+}
+
+
+def energy_conversion(from_type: str, to_type: str, value: float) -> float:
+    """
+    Conversion of energy units.
+    >>> energy_conversion("joule", "joule", 1)
+    1.0
+    >>> energy_conversion("joule", "kilojoule", 1)
+    0.001
+    >>> energy_conversion("joule", "megajoule", 1)
+    1e-06
+    >>> energy_conversion("joule", "gigajoule", 1)
+    1e-09
+    >>> energy_conversion("joule", "wattsecond", 1)
+    1.0
+    >>> energy_conversion("joule", "watthour", 1)
+    0.0002777777777777778
+    >>> energy_conversion("joule", "kilowatthour", 1)
+    2.7777777777777776e-07
+    >>> energy_conversion("joule", "newtonmeter", 1)
+    1.0
+    >>> energy_conversion("joule", "calorie_nutr", 1)
+    0.00023884589662749592
+    >>> energy_conversion("joule", "kilocalorie_nutr", 1)
+    2.388458966274959e-07
+    >>> energy_conversion("joule", "electronvolt", 1)
+    6.241509074460763e+18
+    >>> energy_conversion("joule", "britishthermalunit_it", 1)
+    0.0009478171226670134
+    >>> energy_conversion("joule", "footpound", 1)
+    0.7375621211696556
+    >>> energy_conversion("joule", "megajoule", 1000)
+    0.001
+    >>> energy_conversion("calorie_nutr", "kilocalorie_nutr", 1000)
+    1.0
+    >>> energy_conversion("kilowatthour", "joule", 10)
+    36000000.0
+    >>> energy_conversion("britishthermalunit_it", "footpound", 1)
+    778.1692306784539
+    >>> energy_conversion("watthour", "joule", "a") # doctest: +ELLIPSIS
+    Traceback (most recent call last):
+      ...
+    TypeError: unsupported operand type(s) for /: 'str' and 'float'
+    >>> energy_conversion("wrongunit", "joule", 1) # doctest: +ELLIPSIS
+    Traceback (most recent call last):
+      ...
+    ValueError: Incorrect 'from_type' or 'to_type' value: 'wrongunit', 'joule'
+    Valid values are: joule, ... footpound
+    >>> energy_conversion("joule", "wrongunit", 1) # doctest: +ELLIPSIS
+    Traceback (most recent call last):
+      ...
+    ValueError: Incorrect 'from_type' or 'to_type' value: 'joule', 'wrongunit'
+    Valid values are: joule, ... footpound
+    >>> energy_conversion("123", "abc", 1) # doctest: +ELLIPSIS
+    Traceback (most recent call last):
+      ...
+    ValueError: Incorrect 'from_type' or 'to_type' value: '123', 'abc'
+    Valid values are: joule, ... footpound
+    """
+    if to_type not in ENERGY_CONVERSION or from_type not in ENERGY_CONVERSION:
+        msg = (
+            f"Incorrect 'from_type' or 'to_type' value: {from_type!r}, {to_type!r}\n"
+            f"Valid values are: {', '.join(ENERGY_CONVERSION)}"
+        )
+        raise ValueError(msg)
+    return value * ENERGY_CONVERSION[from_type] * 1 / ENERGY_CONVERSION[to_type]
+
+
+if __name__ == "__main__":
+    import doctest
+
+    doctest.testmod()

From 9dc97e052b2e6bfe2b677e9e35a9a7f423fab324 Mon Sep 17 00:00:00 2001
From: Jan-Lukas Huhn <134317018+jlhuhn@users.noreply.github.com>
Date: Wed, 7 Jun 2023 17:58:40 +0200
Subject: [PATCH 4/4] Update conversions/energy_conversions.py

Co-authored-by: Caeden Perelli-Harris <caedenperelliharris@gmail.com>
---
 conversions/energy_conversions.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conversions/energy_conversions.py b/conversions/energy_conversions.py
index 860873611f83..51de6b313928 100644
--- a/conversions/energy_conversions.py
+++ b/conversions/energy_conversions.py
@@ -105,7 +105,7 @@ def energy_conversion(from_type: str, to_type: str, value: float) -> float:
             f"Valid values are: {', '.join(ENERGY_CONVERSION)}"
         )
         raise ValueError(msg)
-    return value * ENERGY_CONVERSION[from_type] * 1 / ENERGY_CONVERSION[to_type]
+    return value * ENERGY_CONVERSION[from_type] / ENERGY_CONVERSION[to_type]
 
 
 if __name__ == "__main__":