Coverage for src/fair_python_cookiecutter_demo/lib.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-08-01 13:35 +0000

1"""Core functionality of fair-python-cookiecutter-demo. 

2 

3This module can be used directly, or the functionality can be 

4exposed using some other interface, such as CLI, GUI or an API. 

5""" 

6 

7from enum import Enum 

8 

9 

10class CalcOperation(str, Enum): 

11 """Supported operations of `calculate`.""" 

12 

13 add = "add" 

14 multiply = "multiply" 

15 subtract = "subtract" 

16 divide = "divide" 

17 power = "power" 

18 

19 

20def calculate(op: CalcOperation, x: int, y: int): 

21 """Calculate result of an operation on two integer numbers.""" 

22 if not isinstance(op, CalcOperation): 

23 raise ValueError(f"Unknown operation: {op}") 

24 

25 if op == CalcOperation.add: 

26 return x + y 

27 elif op == CalcOperation.multiply: 

28 return x * y 

29 elif op == CalcOperation.subtract: 

30 return x - y 

31 elif op == CalcOperation.divide: 

32 return x // y 

33 

34 err = f"Operation {op} is not implemented!" 

35 raise NotImplementedError(err)