Coverage for src/probable_fiesta/logger/builder/logger_abstract_machine.py: 61%

64 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-01-30 18:57 -0500

1from abc import ABC 

2from enum import Enum, auto 

3 

4from .logger_factory import LoggerFactory 

5 

6class AbstractLogger(ABC): 

7 def create_logger(self): 

8 pass 

9 

10class LoggerDefault(AbstractLogger): 

11 def create_logger(self): 

12 pass 

13 

14class LoggerFlask(AbstractLogger): 

15 def create_logger(self): 

16 pass 

17 

18class LoggerAbstractFactory(ABC): 

19 def create_logger(self, name, level, fmt, directory): 

20 pass 

21 def create_logger(self, app, name, level, fmt, directory): 

22 pass 

23 

24class DefaultFactory(LoggerAbstractFactory): 

25 def create_logger(self, name, level, fmt, directory): 

26 print("Creating default logger") 

27 logger = LoggerFactory().new_logger(name, level, fmt, directory) 

28 return logger 

29 

30class FlaskFactory(LoggerAbstractFactory): 

31 def create_logger(self, app, name, level, fmt, directory): 

32 print("Creating flask logger") 

33 logger = LoggerFactory().new_logger_flask(app, name, level, fmt, directory) 

34 return logger 

35 

36class LoggerMachine: 

37 class Available(Enum): 

38 DEFAULT = auto() 

39 FLASK = auto() 

40 

41 factories = [] 

42 initialized = False 

43 

44 def __init__(self): 

45 if not self.initialized: 

46 self.initialized = True 

47 for d in self.Available: 

48 name = d.name[0] + d.name[1:].lower() 

49 factory_name = name + "Factory" 

50 factory_instance = eval(factory_name)() 

51 self.factories.append((name, factory_instance)) 

52 

53 def __str__(self): 

54 return f"LoggerMachine: Available loggers: {self.factories}" 

55 

56 def prepare_logger(self): 

57 print("Available apps:") 

58 for f in self.factories: 

59 print(f[0]) 

60 s = input(f'Please pick app (0-{len(self.factories)-1}):') 

61 idx = int(s) 

62 return self.factories[idx][1].get() 

63 

64 def make_logger(self, type, app=None, name=None, level=None, fmt=None, directory=None): 

65 if type == 'default': 

66 return DefaultFactory().create_logger(name, level, fmt, directory) 

67 elif type == 'flask': 

68 return FlaskFactory().create_logger(app, name, level, fmt, directory) 

69 else: 

70 print("Invalid logger type") 

71 return None 

72 

73def make_logger(type, app=None, name=None, level=None, fmt=None, directory=None): 

74 if type == 'default': 

75 return DefaultFactory().create_logger(name, level, fmt, directory) 

76 elif type == 'flask': 

77 return FlaskFactory().create_logger(app, name, level, fmt, directory) 

78 else: 

79 print("Invalid logger type") 

80 return None