#!/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:
multiplier = multiplier.replace('%', '')
m = float(multiplier)
m /= 100
- self.multiplier = m
+ self.multiplier: float = m
else:
self.multiplier = multiplier
count += 1
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)
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: