Since this thing is on the innerwebs I suppose it should have a
[python_utils.git] / type / rate.py
index 3161131a027171218f297dcc654e28acd851ca27..58489061570ab3a1a6f96728c04361ad760e21d1 100644 (file)
@@ -1,15 +1,21 @@
 #!/usr/bin/env python3
 
+# © Copyright 2021-2022, Scott Gasch
+
+"""A class to represent a rate of change."""
+
 from typing import Optional
 
 
 class Rate(object):
+    """A class to represent a rate of change."""
+
     def __init__(
-            self,
-            multiplier: Optional[float] = None,
-            *,
-            percentage: Optional[float] = None,
-            percent_change: Optional[float] = None,
+        self,
+        multiplier: Optional[float] = None,
+        *,
+        percentage: Optional[float] = None,
+        percent_change: Optional[float] = None,
     ):
         count = 0
         if multiplier is not None:
@@ -17,7 +23,7 @@ class Rate(object):
                 multiplier = multiplier.replace('%', '')
                 m = float(multiplier)
                 m /= 100
-                self.multiplier = m
+                self.multiplier: float = m
             else:
                 self.multiplier = multiplier
             count += 1
@@ -28,9 +34,7 @@ class Rate(object):
             self.multiplier = 1.0 + percent_change / 100
             count += 1
         if count != 1:
-            raise Exception(
-                'Exactly one of percentage, percent_change or multiplier is required.'
-            )
+            raise Exception('Exactly one of percentage, percent_change or multiplier is required.')
 
     def apply_to(self, other):
         return self.__mul__(other)
@@ -78,10 +82,7 @@ class Rate(object):
     def __hash__(self):
         return self.multiplier
 
-    def __repr__(self,
-                 *,
-                 relative=False,
-                 places=3):
+    def __repr__(self, *, relative=False, places=3):
         if relative:
             percentage = (self.multiplier - 1.0) * 100.0
         else: