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
« 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
4from .logger_factory import LoggerFactory
6class AbstractLogger(ABC):
7 def create_logger(self):
8 pass
10class LoggerDefault(AbstractLogger):
11 def create_logger(self):
12 pass
14class LoggerFlask(AbstractLogger):
15 def create_logger(self):
16 pass
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
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
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
36class LoggerMachine:
37 class Available(Enum):
38 DEFAULT = auto()
39 FLASK = auto()
41 factories = []
42 initialized = False
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))
53 def __str__(self):
54 return f"LoggerMachine: Available loggers: {self.factories}"
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()
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
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