ka-uts-com 1.0.0.240823__py3-none-any.whl → 2.0.0.250407__py3-none-any.whl

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.
Files changed (59) hide show
  1. build/lib/ka_uts_com/__version__.py +1 -1
  2. build/lib/ka_uts_com/base/app_.py +50 -0
  3. build/lib/ka_uts_com/base/cfg_.py +35 -0
  4. build/lib/ka_uts_com/base/exit_.py +37 -0
  5. build/lib/ka_uts_com/base/log_.py +131 -0
  6. build/lib/ka_uts_com/com.py +91 -192
  7. build/lib/ka_uts_com/data/log.std.yml +107 -0
  8. build/lib/ka_uts_com/data/{log.standard.yml → log.usr.yml} +47 -27
  9. build/lib/ka_uts_com/decorators/dec.py +13 -0
  10. build/lib/ka_uts_com/fnc.py +29 -24
  11. build/lib/ka_uts_com/ioc/jinja2_.py +42 -0
  12. build/lib/ka_uts_com/ioc/yaml_.py +30 -0
  13. build/lib/ka_uts_com/log.py +48 -25
  14. build/lib/ka_uts_com/timer.py +24 -27
  15. build/lib/ka_uts_com/utils/aoeqstmt.py +37 -0
  16. build/lib/ka_uts_com/{date.py → utils/date.py} +4 -4
  17. build/lib/ka_uts_com/utils/doeq.py +99 -0
  18. build/lib/ka_uts_com/utils/pacmod.py +123 -0
  19. build/lib/ka_uts_com/{str.py → utils/str.py} +36 -39
  20. ka_uts_com/__version__.py +1 -1
  21. ka_uts_com/base/app_.py +50 -0
  22. ka_uts_com/base/cfg_.py +35 -0
  23. ka_uts_com/base/exit_.py +37 -0
  24. ka_uts_com/base/log_.py +131 -0
  25. ka_uts_com/com.py +91 -192
  26. ka_uts_com/data/log.std.yml +107 -0
  27. ka_uts_com/data/{log.standard.yml → log.usr.yml} +47 -27
  28. ka_uts_com/decorators/dec.py +13 -0
  29. ka_uts_com/fnc.py +29 -24
  30. ka_uts_com/ioc/jinja2_.py +42 -0
  31. ka_uts_com/ioc/yaml_.py +30 -0
  32. ka_uts_com/log.py +48 -25
  33. ka_uts_com/timer.py +24 -27
  34. ka_uts_com/utils/aoeqstmt.py +37 -0
  35. ka_uts_com/{date.py → utils/date.py} +4 -4
  36. ka_uts_com/utils/doeq.py +99 -0
  37. ka_uts_com/utils/pacmod.py +123 -0
  38. ka_uts_com/{str.py → utils/str.py} +36 -39
  39. ka_uts_com-2.0.0.250407.dist-info/METADATA +1611 -0
  40. ka_uts_com-2.0.0.250407.dist-info/RECORD +49 -0
  41. {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info}/WHEEL +1 -1
  42. {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info/licenses}/LICENSE.txt +1 -2
  43. build/lib/dist/ka_uts_com-1.0.0.240823-py3-none-any.whl +0 -0
  44. build/lib/dist/ka_uts_com-1.0.0.240823.tar.gz +0 -0
  45. build/lib/ka_uts_com/aeq.py +0 -87
  46. build/lib/ka_uts_com/argv.py +0 -49
  47. build/lib/ka_uts_com/data/log.personal.yml +0 -93
  48. build/lib/ka_uts_com/ioc.py +0 -57
  49. build/lib/ka_uts_com/pacmod.py +0 -111
  50. dist/ka_uts_com-1.0.0.240823-py3-none-any.whl +0 -0
  51. dist/ka_uts_com-1.0.0.240823.tar.gz +0 -0
  52. ka_uts_com/aeq.py +0 -87
  53. ka_uts_com/argv.py +0 -49
  54. ka_uts_com/data/log.personal.yml +0 -93
  55. ka_uts_com/ioc.py +0 -57
  56. ka_uts_com/pacmod.py +0 -111
  57. ka_uts_com-1.0.0.240823.dist-info/METADATA +0 -943
  58. ka_uts_com-1.0.0.240823.dist-info/RECORD +0 -41
  59. {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  __title__ = 'ka_uts_com'
2
2
  __description__ = 'Communication Utilities.'
3
3
  __url__ = 'https://ka-ut-com.readthedocs.io/en/latest'
4
- __version__ = '1.0.0.240823'
4
+ __version__ = '2.0.0.250407'
5
5
  __build__ = 0x022200
6
6
  __author__ = 'Bernd Stroehle'
7
7
  __author_email__ = 'bernd.stroehle@gmail.com'
@@ -0,0 +1,50 @@
1
+ # coding=utf-8
2
+ from typing import Any
3
+
4
+ from logging import Logger
5
+
6
+ from ka_uts_com.utils.pacmod import PacMod
7
+ from ka_uts_com.ioc.yaml_ import Yaml_
8
+
9
+ TyAny = Any
10
+ TyArr = list[Any]
11
+ TyBool = bool
12
+ TyDic = dict[Any, Any]
13
+ TyLogger = Logger
14
+
15
+ TnAny = None | Any
16
+ TnArr = None | TyArr
17
+ TnBool = None | bool
18
+ TnDic = None | TyDic
19
+
20
+
21
+ class App_:
22
+ """Aplication Class
23
+ """
24
+ sw_init: TyBool = False
25
+ sw_replace_keys: TnBool = None
26
+ keys: TnArr = None
27
+ httpmod: TyAny = None
28
+ reqs: TyDic = {}
29
+ app: TyDic = {}
30
+
31
+ @classmethod
32
+ def init(cls, com, **kwargs) -> None:
33
+ if cls.sw_init:
34
+ return
35
+ cls.sw_init = True
36
+ cls.httpmod = kwargs.get('httpmod')
37
+ cls.sw_replace_keys = kwargs.get('sw_replace_keys', False)
38
+ if cls.sw_replace_keys:
39
+ try:
40
+ cls.keys = Yaml_.read(PacMod.sh_path_keys(com), com.Log)
41
+ except Exception as exc:
42
+ com.Log.error(exc, exc_info=True)
43
+ raise
44
+
45
+ @classmethod
46
+ def sh(cls, com, **kwargs) -> Any:
47
+ if cls.sw_init:
48
+ return cls
49
+ cls.init(com, **kwargs)
50
+ return cls
@@ -0,0 +1,35 @@
1
+ # coding=utf-8
2
+ from typing import Any
3
+
4
+ from logging import Logger
5
+
6
+ from ka_uts_com.utils.pacmod import PacMod
7
+ from ka_uts_com.ioc.yaml_ import Yaml_
8
+
9
+ TyAny = Any
10
+ TyTimeStamp = int
11
+ TyArr = list[Any]
12
+ TyBool = bool
13
+ TyDic = dict[Any, Any]
14
+ TyLogger = Logger
15
+
16
+
17
+ class Cfg_:
18
+ """Configuration Class
19
+ """
20
+ sw_init: TyBool = False
21
+ cfg: Any = None
22
+
23
+ @classmethod
24
+ def init(cls, com, **kwargs) -> None:
25
+ if cls.sw_init:
26
+ return
27
+ cls.sw_init = True
28
+ cls.cfg = Yaml_.read(PacMod.sh_path_cfg(com), com.Log)
29
+
30
+ @classmethod
31
+ def sh(cls, com, **kwargs) -> Any:
32
+ if cls.sw_init:
33
+ return cls
34
+ cls.init(com, **kwargs)
35
+ return cls.cfg
@@ -0,0 +1,37 @@
1
+ # coding=utf-8
2
+ from typing import Any
3
+
4
+ TyAny = Any
5
+ TyArr = list[Any]
6
+ TyBool = bool
7
+ TyDic = dict[Any, Any]
8
+
9
+ TnAny = None | Any
10
+ TnArr = None | TyArr
11
+ TnBool = None | bool
12
+ TnDic = None | TyDic
13
+
14
+
15
+ class Exit_:
16
+ """Exit Class
17
+ """
18
+ sw_init: TyBool = False
19
+ sw_critical: bool = False
20
+ sw_stop: bool = False
21
+ sw_interactive: bool = False
22
+
23
+ @classmethod
24
+ def init(cls, **kwargs) -> None:
25
+ if cls.sw_init:
26
+ return
27
+ cls.sw_init = True
28
+ cls.sw_critical = kwargs.get('sw_critical', False)
29
+ cls.sw_stop = kwargs.get('sw_stop', False)
30
+ cls.sw_interactive = kwargs.get('sw_interactive', False)
31
+
32
+ @classmethod
33
+ def sh(cls, **kwargs) -> Any:
34
+ if cls.sw_init:
35
+ return cls
36
+ cls.init(**kwargs)
37
+ return cls
@@ -0,0 +1,131 @@
1
+ # coding=utf-8
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+
5
+ import os
6
+ import logging
7
+ import logging.config
8
+ from logging import Logger
9
+ from datetime import datetime
10
+ import psutil
11
+
12
+ # from ka_uts_com.com import Com
13
+ from ka_uts_com.ioc.jinja2_ import Jinja2_
14
+
15
+ TyAny = Any
16
+ TyCallable = Callable[..., Any]
17
+ TyDateTime = datetime
18
+ TyTimeStamp = int
19
+ TyArr = list[Any]
20
+ TyBool = bool
21
+ TyDic = dict[Any, Any]
22
+ TyDir = str
23
+ TyPath = str
24
+ TyLogger = Logger
25
+
26
+ TnAny = None | Any
27
+ TnArr = None | TyArr
28
+ TnBool = None | bool
29
+ TnDic = None | TyDic
30
+ TnTimeStamp = None | TyTimeStamp
31
+ TnDateTime = None | TyDateTime
32
+
33
+
34
+ class Log_:
35
+
36
+ sw_init: bool = False
37
+ log: TyLogger = logging.getLogger('dummy_logger')
38
+ username: str = psutil.Process().username()
39
+
40
+ @classmethod
41
+ def sh_dir_run(cls, com) -> TyDir:
42
+ """Show run_dir
43
+ """
44
+ # print(f"sh_dir_run com.dir_dat = {com.dir_dat}")
45
+ # print(f"sh_dir_run com.cmd = {com.cmd}")
46
+ # print(f"sh_dir_run com.tenant = {com.tenant}")
47
+ # print(f"sh_dir_run com = {com}")
48
+ dir_dat: str = com.dir_dat
49
+ tenant: str = com.tenant
50
+ cmd: str = com.cmd
51
+ package: str = com.d_app_pacmod['package']
52
+ # module: str = com.d_app_pacmod['module']
53
+ if tenant is not None:
54
+ path = f"{dir_dat}/{tenant}/RUN/{package}"
55
+ else:
56
+ path = f"{dir_dat}/RUN/{package}"
57
+ if com.log_type == "usr":
58
+ path = f"{path}/{cls.username}"
59
+ if cmd is not None:
60
+ path = f"{path}/{cmd}"
61
+ # print(f"sh_dir_run path = {path}")
62
+ # print("==================================")
63
+ return path
64
+
65
+ @classmethod
66
+ def sh_d_log_cfg(cls, com, **kwargs) -> TyDic:
67
+ """Read log file path with jinja2
68
+ """
69
+ dir_run = cls.sh_dir_run(com)
70
+ if kwargs.get('sw_single_dir_run', True):
71
+ # print("---sw_single_dir_run = True --------------")
72
+ dir_run_errs = f"{dir_run}/logs"
73
+ dir_run_wrns = f"{dir_run}/logs"
74
+ dir_run_infs = f"{dir_run}/logs"
75
+ dir_run_logs = f"{dir_run}/logs"
76
+ dir_run_debs = f"{dir_run}/logs"
77
+ if kwargs.get('sw_mk_dir_run', True):
78
+ os.makedirs(dir_run_logs, exist_ok=True)
79
+ else:
80
+ # print("---sw_single_dir_run = False -------------")
81
+ dir_run_errs = f"{dir_run}/errs"
82
+ dir_run_wrns = f"{dir_run}/wrns"
83
+ dir_run_infs = f"{dir_run}/infs"
84
+ dir_run_logs = f"{dir_run}/logs"
85
+ dir_run_debs = f"{dir_run}/debs"
86
+ if kwargs.get('sw_mk_dir_run', True):
87
+ os.makedirs(dir_run_errs, exist_ok=True)
88
+ os.makedirs(dir_run_wrns, exist_ok=True)
89
+ os.makedirs(dir_run_infs, exist_ok=True)
90
+ os.makedirs(dir_run_logs, exist_ok=True)
91
+ os.makedirs(dir_run_debs, exist_ok=True)
92
+ # path_log_cfg: TyPath = PacMod.sh_path_log_cfg(com)
93
+ module = com.d_app_pacmod['module']
94
+ # print(f"sh_d_log_cfg cls.path_log_cfg = {cls.path_log_cfg}")
95
+ d_log_cfg: TyDic = Jinja2_.read(
96
+ com.path_log_cfg, com.Log,
97
+ dir_run_errs=dir_run_errs,
98
+ dir_run_wrns=dir_run_wrns,
99
+ dir_run_infs=dir_run_infs,
100
+ dir_run_logs=dir_run_logs,
101
+ dir_run_debs=dir_run_debs,
102
+ module=module,
103
+ pid=com.pid,
104
+ ts=com.ts)
105
+ # print(f"sh_d_log_cfg d_log_cfg = {d_log_cfg}")
106
+ sw_debug: TyBool = kwargs.get('sw_debug', False)
107
+ if sw_debug:
108
+ level = logging.DEBUG
109
+ else:
110
+ level = logging.INFO
111
+ logger_name = com.log_type
112
+ d_log_cfg['handlers'][f"{logger_name}_debug_console"]['level'] = level
113
+ d_log_cfg['handlers'][f"{logger_name}_debug_file"]['level'] = level
114
+
115
+ return d_log_cfg
116
+
117
+ @classmethod
118
+ def init(cls, com, **kwargs) -> None:
119
+ """Set static variable log level in log configuration handlers
120
+ """
121
+ cls.sw_init = True
122
+ d_log_cfg = cls.sh_d_log_cfg(com, **kwargs)
123
+ logging.config.dictConfig(d_log_cfg)
124
+ cls.log = logging.getLogger(com.log_type)
125
+
126
+ @classmethod
127
+ def sh(cls, com, **kwargs) -> TyLogger:
128
+ if cls.sw_init:
129
+ return cls.log
130
+ cls.init(com, **kwargs)
131
+ return cls.log
@@ -1,222 +1,121 @@
1
1
  # coding=utf-8
2
+ from typing import Any
2
3
 
4
+ import os
5
+ import time
3
6
  import calendar
7
+ import importlib.resources as resources
4
8
  import logging
5
9
  import logging.config
6
10
  from logging import Logger
7
-
8
- import os
9
- import time
10
11
  from datetime import datetime
11
12
 
12
- from ka_uts_com.ioc import Yaml
13
- from ka_uts_com.ioc import Jinja2
14
- from ka_uts_com.pacmod import Pacmod
15
-
16
- from typing import Any, Callable, List, Dict
17
-
18
- T_Any = Any
19
- T_Arr = List[Any]
20
- T_Bool = bool
21
- T_Dic = Dict[Any, Any]
22
-
23
- TN_Arr = None | T_Arr
24
- TN_Bool = None | bool
25
- TN_Dic = None | T_Dic
26
- TN_DT = None | datetime
13
+ from ka_uts_com.utils.aoeqstmt import AoEqStmt
14
+ from ka_uts_com.utils.pacmod import PacMod
15
+ from ka_uts_com.base.app_ import App_
16
+ from ka_uts_com.base.cfg_ import Cfg_
17
+ from ka_uts_com.base.exit_ import Exit_
18
+ from ka_uts_com.base.log_ import Log_
19
+
20
+ TyAny = Any
21
+ TyDateTime = datetime
22
+ TyTimeStamp = int
23
+ TyArr = list[Any]
24
+ TyBool = bool
25
+ TyDic = dict[Any, Any]
26
+ TyLogger = Logger
27
+
28
+ TnAny = None | Any
29
+ TnArr = None | TyArr
30
+ TnDic = None | TyDic
31
+ TnTimeStamp = None | TyTimeStamp
32
+ TnDateTime = None | TyDateTime
33
+ TnStr = None | str
27
34
 
28
35
 
29
- class LogStandard:
30
- """Standard Logging
36
+ class Com:
37
+ """Communication Class
31
38
  """
32
39
  sw_init: bool = False
33
- cfg: T_Dic = {}
34
- log: Logger = logging.getLogger('dummy_logger')
35
- logfile: str = 'log.standard.yml'
40
+ dir_dat: TnStr = None
41
+ tenant: TnStr = None
42
+ log_type: TnStr = None
43
+ cmd: TnStr = None
44
+ d_com_pacmod: TyDic = {}
45
+ d_app_pacmod: TyDic = {}
46
+ path_bin = None
47
+ path_log_cfg = None
36
48
 
37
- @staticmethod
38
- def read(pacmod: T_Dic, filename: str) -> Any:
39
- """Read log file path with jinja2
40
- """
41
- # path: str = Pacmod.Path.Log.sh_cfg(filename=filename)
42
- path: str = Pacmod.sh_path_cfg_log(filename=filename)
43
- tenant: str = pacmod['tenant']
44
- package: str = pacmod['package']
45
- module: str = pacmod['module']
46
- pid = Com.pid
47
- ts: TN_DT = Com.ts_start
48
- cfg = Jinja2.read(
49
- path, tenant=tenant,
50
- package=package, module=module,
51
- pid=pid, ts=ts)
52
- return cfg
49
+ pid = None
53
50
 
54
- @classmethod
55
- def set_level(cls, sw_debug: bool) -> None:
56
- """Set static variable log level in log configuration handlers
57
- """
58
- if sw_debug:
59
- level = logging.DEBUG
60
- else:
61
- level = logging.INFO
62
- cls.cfg['handlers']['main_debug_console']['level'] = level
63
- cls.cfg['handlers']['main_debug_file']['level'] = level
51
+ ts: TnTimeStamp
52
+ ts_start: TnDateTime = None
53
+ ts_end: TnDateTime = None
54
+ ts_etime: TnDateTime = None
55
+ d_timer: TyDic = {}
64
56
 
65
- @classmethod
66
- def init(
67
- cls, **kwargs) -> None:
68
- cls.sw_init = True
69
- cls.cfg = cls.read(Com.pacmod_curr, cls.logfile)
70
- sw_debug: Any = kwargs.get('sw_debug')
71
- cls.set_level(sw_debug)
72
- logging.config.dictConfig(cls.cfg)
73
- cls.log = logging.getLogger('main')
57
+ cfg: TnDic = None
58
+ Log = logging.getLogger('dummy_logger')
59
+ App: Any = None
60
+ Exit: Any = None
74
61
 
75
62
  @classmethod
76
- def sh(cls, **kwargs) -> Any:
63
+ def init(cls, app_cls, kwargs: TyDic):
64
+ """ set log and application (module) configuration
65
+ """
77
66
  if cls.sw_init:
78
- return cls.log
79
- cls.init(**kwargs)
80
- return cls.log
81
-
82
-
83
- class LogPersonal:
84
- """Personal Logging
85
- """
86
- sw_init: bool = False
87
- cfg: T_Dic = {}
88
- logfile = 'log.person.yml'
89
- log: Logger = logging.getLogger('dummy_logger')
67
+ return
68
+ cls.sw_init = True
69
+ cls.dir_dat = kwargs.get('dir_dat', '/data')
70
+ cls.tenant = kwargs.get('tenant')
71
+ cls.log_type = kwargs.get('log_type', 'std')
72
+ cls.cmd = kwargs.get('cmd')
73
+ cls.d_com_pacmod = PacMod.sh_d_pacmod(cls)
74
+ cls.d_app_pacmod = PacMod.sh_d_pacmod(app_cls)
75
+
76
+ cls.ts = calendar.timegm(time.gmtime())
77
+ cls.pid = os.getpid()
90
78
 
91
- @classmethod
92
- def read(cls, pacmod: T_Dic, person: Any, filename: str) -> Any:
93
- path: str = Pacmod.sh_path_cfg_log(filename=filename)
94
- package: str = pacmod['package']
95
- module: str = pacmod['module']
96
- return Jinja2.read(
97
- path, package=package, module=module, person=person,
98
- pid=Com.pid, ts=Com.ts_start)
79
+ # print(f"Com.init cls.tenanat = {cls.tenant}")
80
+ # print(f"Com.init cls.cmd = {cls.cmd}")
81
+ # print(f"Com.init kwargs = {kwargs}")
99
82
 
100
- @classmethod
101
- def set_level(cls, person: str, sw_debug: bool) -> None:
102
- if sw_debug:
103
- level = logging.DEBUG
104
- else:
105
- level = logging.INFO
106
- cls.cfg['handlers'][f'{person}_debug_console']['level'] = level
107
- cls.cfg['handlers'][f'{person}_debug_file']['level'] = level
83
+ cls.set_path_bin()
84
+ cls.set_path_log_cfg()
108
85
 
109
- @classmethod
110
- def init(cls, pacmod: T_Dic, person: str, sw_debug: bool) -> None:
111
- cls.cfg = cls.read(pacmod, person, cls.logfile)
112
- cls.set_level(person, sw_debug)
113
- logging.config.dictConfig(cls.cfg)
114
- cls.log = logging.getLogger(person)
86
+ cls.Log = Log_.sh(cls, **kwargs)
87
+ cls.cfg = Cfg_.sh(cls, **kwargs)
88
+ cls.App = App_.sh(cls, **kwargs)
89
+ cls.Exit = Exit_.sh(**kwargs)
115
90
 
116
91
  @classmethod
117
- def sh(cls, **kwargs) -> Any:
118
- if cls.sw_init:
119
- return cls.log
120
- cls.init(**kwargs)
121
- return cls.log
122
-
92
+ def sh_kwargs(cls, app_cls, d_parms, *args) -> TyDic:
93
+ _kwargs: TyDic = AoEqStmt.sh_d_eq(*args, d_parms=d_parms)
94
+ cls.init(app_cls, _kwargs)
95
+ _kwargs['com'] = cls
96
+ return _kwargs
123
97
 
124
- class Cfg:
125
- """Configuration Class
126
- """
127
98
  @classmethod
128
- def init(cls, pacmod: T_Dic) -> TN_Dic:
129
- """ the package data directory has to contain a __init__.py
130
- file otherwise the objects notation {package}.data to
131
- locate the package data directory is invalid
99
+ def set_path_bin(cls):
100
+ """ show directory
132
101
  """
133
- _dic: TN_Dic = Yaml.read(Pacmod.sh_path_cfg_yaml(pacmod))
134
- return _dic
135
-
136
-
137
- class Mgo:
138
- """Mongo DB Class
139
- """
140
- client = None
141
-
142
-
143
- class App:
144
- """Aplication Class
145
- """
146
- sw_init: T_Bool = False
147
- httpmod: T_Any = None
148
- sw_replace_keys: TN_Bool = None
149
- keys: TN_Arr = None
150
- reqs: T_Dic = {}
151
- app: T_Dic = {}
152
-
153
- @classmethod
154
- def init(cls, **kwargs) -> Any:
155
- cls.sw_init = True
156
- cls.httpmod = kwargs.get('httpmod')
157
- cls.sw_replace_keys = kwargs.get('sw_replace_keys', False)
158
- try:
159
- if cls.sw_replace_keys:
160
- pacmod = kwargs.get('pacmod_curr')
161
- # cls.keys = Yaml.read(Pacmod.Pmd.sh_path_keys(pacmod))
162
- cls.keys = Yaml.read(Pacmod.sh_path_keys_yaml(pacmod))
163
- except Exception as e:
164
- if Com.Log is not None:
165
- fnc_error: Callable = Com.Log.error
166
- fnc_error(e, exc_info=True)
167
- raise
168
- return cls
169
-
170
- @classmethod
171
- def sh(cls, **kwargs) -> Any:
172
- if cls.sw_init:
173
- return cls
174
- cls.init(**kwargs)
175
- return cls
176
-
177
-
178
- class Exit:
179
- """Exit Class
180
- """
181
- sw_critical: bool = False
182
- sw_stop: bool = False
183
- sw_interactive: bool = False
184
-
185
-
186
- class Com:
187
- """Communication Class
188
- """
189
- sw_init: bool = False
190
- cfg: TN_Dic = None
191
- pid = None
192
- pacmod_curr: T_Dic = {}
193
-
194
- ts_start: None | datetime = None
195
- ts_end: None | datetime = None
196
- ts_etime: None | datetime = None
197
- d_timer: Dict = {}
198
-
199
- # Log = None
200
- Log: Logger = logging.getLogger('dummy_logger')
201
- App = None
202
- Exit = Exit
102
+ package = cls.d_app_pacmod['package']
103
+ path = resources.files(package).joinpath("bin")
104
+ if path.is_file():
105
+ cls.path_bin = path
106
+ # raise ModuleNotFoundError
203
107
 
204
108
  @classmethod
205
- def init(cls, **kwargs):
206
- """ set log and application (module) configuration
109
+ def set_path_log_cfg(cls):
110
+ """ show directory
207
111
  """
208
- if cls.sw_init:
112
+ package = cls.d_app_pacmod['package']
113
+ path = resources.files(package).joinpath(f"data/log.{cls.log_type}.yml")
114
+ if path.is_file():
115
+ cls.path_log_cfg = path
209
116
  return
210
- cls.sw_init = True
211
-
212
- cls.pacmod_curr = kwargs.get('pacmod_curr')
213
- cls.ts_start = calendar.timegm(time.gmtime())
214
- cls.pid = os.getpid()
215
-
216
- cls.cfg = Cfg.init(cls.pacmod_curr)
217
- log_type = kwargs.get('log_type', 'standard')
218
- if log_type == 'standard':
219
- cls.Log = LogStandard.sh(**kwargs)
220
- else:
221
- cls.Log = LogPersonal.sh(**kwargs)
222
- cls.App = App.sh(**kwargs)
117
+ package = cls.d_com_pacmod['package']
118
+ path = resources.files(package).joinpath(f"data/log.{cls.log_type}.yml")
119
+ if path.is_file():
120
+ cls.path_log_cfg = path
121
+ # raise ModuleNotFoundError
@@ -0,0 +1,107 @@
1
+ version: 1
2
+
3
+ disable_existing_loggers: False
4
+
5
+ # root:
6
+ # level: DEBUG
7
+ # handlers:
8
+ # - debug_console
9
+ # - debug_file
10
+
11
+ loggers:
12
+
13
+ # standard logger
14
+ std:
15
+ # level: NOTSET
16
+ level: DEBUG
17
+ handlers:
18
+ - std_debug_console
19
+ - std_error_file
20
+ - std_warning_file
21
+ - std_debug_file
22
+ - std_info_file
23
+ - std_log_file
24
+
25
+ handlers:
26
+
27
+ std_debug_console:
28
+ class: 'logging.StreamHandler'
29
+ level: DEBUG
30
+ formatter: std_debug
31
+ stream: 'ext://sys.stderr'
32
+
33
+ # std_info_rotating_file_handler:
34
+ # class: 'logging.handlers.RotatingFileHandler'
35
+ # level: INFO
36
+ # formatter: info
37
+ # filename: 'info.rotating.log'
38
+ # mode: 'a'
39
+ # maxBytes: 1048576 # 1MB
40
+ # backupCount: 10
41
+ # encoding: utf8
42
+
43
+ std_error_file:
44
+ class: 'logging.FileHandler'
45
+ level: ERROR
46
+ formatter: std_error
47
+ filename: '{{dir_run_errs}}/errs_{{pid}}_{{ts}}.log'
48
+ mode: 'a'
49
+
50
+ std_warning_file:
51
+ class: 'logging.FileHandler'
52
+ level: WARNING
53
+ formatter: std_warning
54
+ filename: '{{dir_run_wrns}}/wrns_{{pid}}_{{ts}}.log'
55
+ mode: 'a'
56
+
57
+ std_debug_file:
58
+ class: 'logging.FileHandler'
59
+ level: DEBUG
60
+ formatter: std_debug
61
+ filename: '{{dir_run_debs}}/debs_{{pid}}_{{ts}}.log'
62
+ mode: 'a'
63
+
64
+ std_info_file:
65
+ class: 'logging.FileHandler'
66
+ level: INFO
67
+ formatter: std_info
68
+ filename: '{{dir_run_infs}}/infs_{{pid}}_{{ts}}.log'
69
+ mode: 'a'
70
+
71
+ std_log_file:
72
+ class: 'logging.FileHandler'
73
+ level: INFO
74
+ formatter: std_log
75
+ filename: '{{dir_run_logs}}/logs_{{pid}}_{{ts}}.log'
76
+ mode: 'a'
77
+
78
+ std_critical_mail:
79
+ class: 'logging.handlers.SMTPHandler'
80
+ level: CRITICAL
81
+ formatter: std_critical
82
+ mailhost : localhost
83
+ fromaddr: 'monitoring@domain.com'
84
+ toaddrs:
85
+ - 'dev@domain.com'
86
+ - 'qa@domain.com'
87
+ subject: 'Critical error with application name'
88
+
89
+
90
+ formatters:
91
+
92
+ std_warning:
93
+ format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
94
+ datefmt: '%Y-%m-%d %H:%M:%S'
95
+ std_error:
96
+ format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
97
+ datefmt: '%Y-%m-%d %H:%M:%S'
98
+ std_debug:
99
+ format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
100
+ datefmt: '%Y-%m-%d %H:%M:%S'
101
+ std_info:
102
+ format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
103
+ std_log:
104
+ format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
105
+ std_critical:
106
+ format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
107
+ datefmt: '%Y-%m-%d %H:%M:%S'