PyEventEngine 0.1.4__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,90 +1,99 @@
1
- from __future__ import annotations
2
-
3
- import logging
4
- import sys
5
- import time
6
-
7
- __all__ = ['set_logger', 'LOG_LEVEL_EVENT', 'Topic', 'RegularTopic', 'PatternTopic', 'EventHook', 'EventEngine']
8
- LOGGER: logging.Logger | None = None
9
- LOG_LEVEL = logging.INFO
10
- LOG_LEVEL_EVENT = LOG_LEVEL - 1
11
-
12
-
13
- class ColoredFormatter(logging.Formatter):
14
- """Logging Formatter to add colors and count warning / errors"""
15
-
16
- def __init__(self, fmt=None, datefmt=None, style='{', validate=True):
17
- self.format_str = '[{asctime} {name} - {threadName} - {module}:{lineno} - {levelname}] {message}' if fmt is None else fmt
18
- self.date_fmt = '%Y-%m-%d %H:%M:%S' if datefmt is None else datefmt
19
- self.style = style
20
-
21
- super().__init__(fmt=fmt, datefmt=datefmt, style=style, validate=validate)
22
-
23
- def _get_format(self, level: int, select=False):
24
- bold_red = f"\33[31;1;3;4{';7' if select else ''}m"
25
- red = f"\33[31;1{';7' if select else ''}m"
26
- green = f"\33[32;1{';7' if select else ''}m"
27
- yellow = f"\33[33;1{';7' if select else ''}m"
28
- blue = f"\33[34;1{';7' if select else ''}m"
29
- reset = "\33[0m"
30
-
31
- if level <= logging.NOTSET:
32
- fmt = self.format_str
33
- elif level <= logging.DEBUG:
34
- fmt = blue + self.format_str + reset
35
- elif level <= logging.INFO:
36
- fmt = green + self.format_str + reset
37
- elif level <= logging.WARNING:
38
- fmt = yellow + self.format_str + reset
39
- elif level <= logging.ERROR:
40
- fmt = red + self.format_str + reset
41
- else:
42
- fmt = bold_red + self.format_str + reset
43
-
44
- return fmt
45
-
46
- def format(self, record):
47
- log_fmt = self._get_format(level=record.levelno)
48
- formatter = logging.Formatter(log_fmt, datefmt=self.date_fmt, style=self.style)
49
- return formatter.format(record)
50
-
51
-
52
- def get_logger(**kwargs) -> logging.Logger:
53
- level = kwargs.get('level', LOG_LEVEL)
54
- stream_io = kwargs.get('stream_io', sys.stdout)
55
- formatter = kwargs.get('formatter', ColoredFormatter())
56
- global LOGGER
57
-
58
- if LOGGER is not None:
59
- return LOGGER
60
-
61
- LOGGER = logging.getLogger('EventEngine')
62
- LOGGER.setLevel(level)
63
- logging.Formatter.converter = time.gmtime
64
-
65
- if stream_io:
66
- have_handler = False
67
- for handler in LOGGER.handlers:
68
- # noinspection PyUnresolvedReferences
69
- if type(handler) == logging.StreamHandler and handler.stream == stream_io:
70
- have_handler = True
71
- break
72
-
73
- if not have_handler:
74
- logger_ch = logging.StreamHandler(stream=stream_io)
75
- logger_ch.setLevel(level=level)
76
- logger_ch.setFormatter(fmt=formatter)
77
- LOGGER.addHandler(logger_ch)
78
-
79
- return LOGGER
80
-
81
-
82
- def set_logger(logger: logging.Logger):
83
- global LOGGER
84
- LOGGER = logger
85
-
86
-
87
- _ = get_logger()
88
-
89
- from ._Topic import Topic, RegularTopic, PatternTopic
90
- from ._Event import EventHook, EventEngine
1
+ import logging
2
+ import sys
3
+ import time
4
+
5
+ __all__ = ['set_logger', 'LOG_LEVEL_EVENT', 'Topic', 'RegularTopic', 'PatternTopic', 'EventHook', 'EventEngine', 'LOGGER', 'use_cpp_override']
6
+ LOGGER: logging.Logger | None = None
7
+ DEBUG = False
8
+ LOG_LEVEL = logging.INFO
9
+ LOG_LEVEL_EVENT = LOG_LEVEL - 5
10
+
11
+
12
+ class ColoredFormatter(logging.Formatter):
13
+ """Logging Formatter to add colors and count warning / errors"""
14
+
15
+ def __init__(self, fmt=None, datefmt=None, style='{', validate=True):
16
+ self.format_str = '[{asctime} {name} - {threadName} - {module}:{lineno} - {levelname}] {message}' if fmt is None else fmt
17
+ self.date_fmt = '%Y-%m-%d %H:%M:%S' if datefmt is None else datefmt
18
+ self.style = style
19
+
20
+ super().__init__(fmt=fmt, datefmt=datefmt, style=style, validate=validate)
21
+
22
+ def _get_format(self, level: int, select=False):
23
+ bold_red = f"\33[31;1;3;4{';7' if select else ''}m"
24
+ red = f"\33[31;1{';7' if select else ''}m"
25
+ green = f"\33[32;1{';7' if select else ''}m"
26
+ yellow = f"\33[33;1{';7' if select else ''}m"
27
+ blue = f"\33[34;1{';7' if select else ''}m"
28
+ reset = "\33[0m"
29
+
30
+ if level <= logging.NOTSET:
31
+ fmt = self.format_str
32
+ elif level <= logging.DEBUG:
33
+ fmt = blue + self.format_str + reset
34
+ elif level <= logging.INFO:
35
+ fmt = green + self.format_str + reset
36
+ elif level <= logging.WARNING:
37
+ fmt = yellow + self.format_str + reset
38
+ elif level <= logging.ERROR:
39
+ fmt = red + self.format_str + reset
40
+ else:
41
+ fmt = bold_red + self.format_str + reset
42
+
43
+ return fmt
44
+
45
+ def format(self, record):
46
+ log_fmt = self._get_format(level=record.levelno)
47
+ formatter = logging.Formatter(log_fmt, datefmt=self.date_fmt, style=self.style)
48
+ return formatter.format(record)
49
+
50
+
51
+ def get_logger(**kwargs) -> logging.Logger:
52
+ level = kwargs.get('level', LOG_LEVEL)
53
+ stream_io = kwargs.get('stream_io', sys.stdout)
54
+ formatter = kwargs.get('formatter', ColoredFormatter())
55
+ global LOGGER
56
+
57
+ if LOGGER is not None:
58
+ return LOGGER
59
+
60
+ LOGGER = logging.getLogger('EventEngine')
61
+ LOGGER.setLevel(level)
62
+ logging.Formatter.converter = time.gmtime
63
+
64
+ if stream_io:
65
+ have_handler = False
66
+ for handler in LOGGER.handlers:
67
+ # noinspection PyUnresolvedReferences
68
+ if type(handler) == logging.StreamHandler and handler.stream == stream_io:
69
+ have_handler = True
70
+ break
71
+
72
+ if not have_handler:
73
+ logger_ch = logging.StreamHandler(stream=stream_io)
74
+ logger_ch.setLevel(level=level)
75
+ logger_ch.setFormatter(fmt=formatter)
76
+ LOGGER.addHandler(logger_ch)
77
+
78
+ return LOGGER
79
+
80
+
81
+ def set_logger(logger: logging.Logger):
82
+ global LOGGER
83
+ LOGGER = logger
84
+
85
+ _event.LOGGER = LOGGER.getChild('Event')
86
+
87
+
88
+ def use_cpp_override():
89
+ try:
90
+ from ._topic_c import Topic, RegularTopic, PatternTopic
91
+ from . import _topic as _Topic_native
92
+ except Exception as _:
93
+ LOGGER.warning(_)
94
+
95
+
96
+ _ = get_logger()
97
+
98
+ from ._topic import Topic, RegularTopic, PatternTopic
99
+ from ._event import EventHook, EventEngine