X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=type%2Frate.py;h=58489061570ab3a1a6f96728c04361ad760e21d1;hb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;hp=3161131a027171218f297dcc654e28acd851ca27;hpb=4faa994d32223c8d560d9dad0ca90a3f7eb10d6a;p=python_utils.git diff --git a/type/rate.py b/type/rate.py index 3161131..5848906 100644 --- a/type/rate.py +++ b/type/rate.py @@ -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: