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.
- build/lib/ka_uts_com/__version__.py +1 -1
- build/lib/ka_uts_com/base/app_.py +50 -0
- build/lib/ka_uts_com/base/cfg_.py +35 -0
- build/lib/ka_uts_com/base/exit_.py +37 -0
- build/lib/ka_uts_com/base/log_.py +131 -0
- build/lib/ka_uts_com/com.py +91 -192
- build/lib/ka_uts_com/data/log.std.yml +107 -0
- build/lib/ka_uts_com/data/{log.standard.yml → log.usr.yml} +47 -27
- build/lib/ka_uts_com/decorators/dec.py +13 -0
- build/lib/ka_uts_com/fnc.py +29 -24
- build/lib/ka_uts_com/ioc/jinja2_.py +42 -0
- build/lib/ka_uts_com/ioc/yaml_.py +30 -0
- build/lib/ka_uts_com/log.py +48 -25
- build/lib/ka_uts_com/timer.py +24 -27
- build/lib/ka_uts_com/utils/aoeqstmt.py +37 -0
- build/lib/ka_uts_com/{date.py → utils/date.py} +4 -4
- build/lib/ka_uts_com/utils/doeq.py +99 -0
- build/lib/ka_uts_com/utils/pacmod.py +123 -0
- build/lib/ka_uts_com/{str.py → utils/str.py} +36 -39
- ka_uts_com/__version__.py +1 -1
- ka_uts_com/base/app_.py +50 -0
- ka_uts_com/base/cfg_.py +35 -0
- ka_uts_com/base/exit_.py +37 -0
- ka_uts_com/base/log_.py +131 -0
- ka_uts_com/com.py +91 -192
- ka_uts_com/data/log.std.yml +107 -0
- ka_uts_com/data/{log.standard.yml → log.usr.yml} +47 -27
- ka_uts_com/decorators/dec.py +13 -0
- ka_uts_com/fnc.py +29 -24
- ka_uts_com/ioc/jinja2_.py +42 -0
- ka_uts_com/ioc/yaml_.py +30 -0
- ka_uts_com/log.py +48 -25
- ka_uts_com/timer.py +24 -27
- ka_uts_com/utils/aoeqstmt.py +37 -0
- ka_uts_com/{date.py → utils/date.py} +4 -4
- ka_uts_com/utils/doeq.py +99 -0
- ka_uts_com/utils/pacmod.py +123 -0
- ka_uts_com/{str.py → utils/str.py} +36 -39
- ka_uts_com-2.0.0.250407.dist-info/METADATA +1611 -0
- ka_uts_com-2.0.0.250407.dist-info/RECORD +49 -0
- {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info}/WHEEL +1 -1
- {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info/licenses}/LICENSE.txt +1 -2
- build/lib/dist/ka_uts_com-1.0.0.240823-py3-none-any.whl +0 -0
- build/lib/dist/ka_uts_com-1.0.0.240823.tar.gz +0 -0
- build/lib/ka_uts_com/aeq.py +0 -87
- build/lib/ka_uts_com/argv.py +0 -49
- build/lib/ka_uts_com/data/log.personal.yml +0 -93
- build/lib/ka_uts_com/ioc.py +0 -57
- build/lib/ka_uts_com/pacmod.py +0 -111
- dist/ka_uts_com-1.0.0.240823-py3-none-any.whl +0 -0
- dist/ka_uts_com-1.0.0.240823.tar.gz +0 -0
- ka_uts_com/aeq.py +0 -87
- ka_uts_com/argv.py +0 -49
- ka_uts_com/data/log.personal.yml +0 -93
- ka_uts_com/ioc.py +0 -57
- ka_uts_com/pacmod.py +0 -111
- ka_uts_com-1.0.0.240823.dist-info/METADATA +0 -943
- ka_uts_com-1.0.0.240823.dist-info/RECORD +0 -41
- {ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
build/lib/ka_uts_com/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
build/lib/ka_uts_com/__version__.py,sha256=iBOg_i7289E25xdyGMI0XxvTWLmFgGE0dhd5bqIX5mo,365
|
3
|
+
build/lib/ka_uts_com/com.py,sha256=8eLff9ox4eT-fGx9UeHGjW_2NsF9UBZSKLzXeBgD9s4,3244
|
4
|
+
build/lib/ka_uts_com/fnc.py,sha256=QmCWbmkB8Q8kAxubsqbWOonOBIaL07Y3Y7oXvEqg8Q4,1030
|
5
|
+
build/lib/ka_uts_com/log.py,sha256=FuTyeKsmXMz5FWtHLwkrJ8gIAii8UpUoORyAgeZ1IWI,2523
|
6
|
+
build/lib/ka_uts_com/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
build/lib/ka_uts_com/timer.py,sha256=6_4886XnygWhE0nc23DW9S5a4X9b9kACL5zI1PKdTXg,2153
|
8
|
+
build/lib/ka_uts_com/base/app_.py,sha256=GyDOAKKavKNTNh9iZvney20JYVcfp3EElTRpRaTp0tg,1144
|
9
|
+
build/lib/ka_uts_com/base/cfg_.py,sha256=TNZjLuR6VNFzQmbkKOG6oVeVf9qW8DpJ5CxLdWLkEtM,702
|
10
|
+
build/lib/ka_uts_com/base/exit_.py,sha256=2HXS-5BN5Q5EZx7S2Nar5voHHJZ3GlYfv--wnC3rT-A,792
|
11
|
+
build/lib/ka_uts_com/base/log_.py,sha256=Vhxn-3fx5M1pQMw4IFv2bU2xYP7ajlZeSmm2gRjlxAo,4378
|
12
|
+
build/lib/ka_uts_com/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
build/lib/ka_uts_com/data/log.std.yml,sha256=KJk-CtLjTW3sC0H0lPo-srY04AA7GAoXNfi4HvcTNk0,3019
|
14
|
+
build/lib/ka_uts_com/data/log.usr.yml,sha256=sfCYo8u06xQ5F4xQH5VGHNrEfj7081lJ-9I-VYIT0Ck,3011
|
15
|
+
build/lib/ka_uts_com/decorators/dec.py,sha256=NHerkpjOYpJXz2CIh9HlN3_YCyLv-SbyQL4ldyGUSpM,217
|
16
|
+
build/lib/ka_uts_com/ioc/jinja2_.py,sha256=Q9_suhZERjYrZY_lDd2kYq63N_fItgj18vMTdp7c55Q,1112
|
17
|
+
build/lib/ka_uts_com/ioc/yaml_.py,sha256=2JEsnhEuKZJVGMq0bwOIlVOcfd1yBmvA47QRdCy8HjI,801
|
18
|
+
build/lib/ka_uts_com/utils/aoeqstmt.py,sha256=AkaEGUjQzAjSaJGaJmdq_cs-rUXjUVTCRXBhpWYJgmE,955
|
19
|
+
build/lib/ka_uts_com/utils/date.py,sha256=5K_wxf5uVEDc7oNR7KKAwVK-iFfSq2jgovZeRE8Yw-s,305
|
20
|
+
build/lib/ka_uts_com/utils/doeq.py,sha256=2cZjPDOhrgcJmLvCwcAcHr4XWaxvcorPx6LVF-xZ6Yk,3203
|
21
|
+
build/lib/ka_uts_com/utils/pacmod.py,sha256=pAxXfom-w4p-CrGSWjpdhKOc9mH3YKMB26hkQreNanI,3884
|
22
|
+
build/lib/ka_uts_com/utils/str.py,sha256=cRixfOSTJqypiANn1wM0uQlmIbLsfNM4hatiPCQ_HIM,7145
|
23
|
+
ka_uts_com/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
+
ka_uts_com/__version__.py,sha256=iBOg_i7289E25xdyGMI0XxvTWLmFgGE0dhd5bqIX5mo,365
|
25
|
+
ka_uts_com/com.py,sha256=8eLff9ox4eT-fGx9UeHGjW_2NsF9UBZSKLzXeBgD9s4,3244
|
26
|
+
ka_uts_com/fnc.py,sha256=QmCWbmkB8Q8kAxubsqbWOonOBIaL07Y3Y7oXvEqg8Q4,1030
|
27
|
+
ka_uts_com/log.py,sha256=FuTyeKsmXMz5FWtHLwkrJ8gIAii8UpUoORyAgeZ1IWI,2523
|
28
|
+
ka_uts_com/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
ka_uts_com/timer.py,sha256=6_4886XnygWhE0nc23DW9S5a4X9b9kACL5zI1PKdTXg,2153
|
30
|
+
ka_uts_com/base/app_.py,sha256=GyDOAKKavKNTNh9iZvney20JYVcfp3EElTRpRaTp0tg,1144
|
31
|
+
ka_uts_com/base/cfg_.py,sha256=TNZjLuR6VNFzQmbkKOG6oVeVf9qW8DpJ5CxLdWLkEtM,702
|
32
|
+
ka_uts_com/base/exit_.py,sha256=2HXS-5BN5Q5EZx7S2Nar5voHHJZ3GlYfv--wnC3rT-A,792
|
33
|
+
ka_uts_com/base/log_.py,sha256=Vhxn-3fx5M1pQMw4IFv2bU2xYP7ajlZeSmm2gRjlxAo,4378
|
34
|
+
ka_uts_com/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
+
ka_uts_com/data/log.std.yml,sha256=KJk-CtLjTW3sC0H0lPo-srY04AA7GAoXNfi4HvcTNk0,3019
|
36
|
+
ka_uts_com/data/log.usr.yml,sha256=sfCYo8u06xQ5F4xQH5VGHNrEfj7081lJ-9I-VYIT0Ck,3011
|
37
|
+
ka_uts_com/decorators/dec.py,sha256=NHerkpjOYpJXz2CIh9HlN3_YCyLv-SbyQL4ldyGUSpM,217
|
38
|
+
ka_uts_com/ioc/jinja2_.py,sha256=Q9_suhZERjYrZY_lDd2kYq63N_fItgj18vMTdp7c55Q,1112
|
39
|
+
ka_uts_com/ioc/yaml_.py,sha256=2JEsnhEuKZJVGMq0bwOIlVOcfd1yBmvA47QRdCy8HjI,801
|
40
|
+
ka_uts_com/utils/aoeqstmt.py,sha256=AkaEGUjQzAjSaJGaJmdq_cs-rUXjUVTCRXBhpWYJgmE,955
|
41
|
+
ka_uts_com/utils/date.py,sha256=5K_wxf5uVEDc7oNR7KKAwVK-iFfSq2jgovZeRE8Yw-s,305
|
42
|
+
ka_uts_com/utils/doeq.py,sha256=2cZjPDOhrgcJmLvCwcAcHr4XWaxvcorPx6LVF-xZ6Yk,3203
|
43
|
+
ka_uts_com/utils/pacmod.py,sha256=pAxXfom-w4p-CrGSWjpdhKOc9mH3YKMB26hkQreNanI,3884
|
44
|
+
ka_uts_com/utils/str.py,sha256=cRixfOSTJqypiANn1wM0uQlmIbLsfNM4hatiPCQ_HIM,7145
|
45
|
+
ka_uts_com-2.0.0.250407.dist-info/licenses/LICENSE.txt,sha256=BiT3QGI_2iRbdvgS3HDig57lnXJVk60Pj4xM9eeCczI,814
|
46
|
+
ka_uts_com-2.0.0.250407.dist-info/METADATA,sha256=0p-3BM_P9q8cuOVYOxf2eKdkzAuyiChcRK_ho0qAcqg,52070
|
47
|
+
ka_uts_com-2.0.0.250407.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
48
|
+
ka_uts_com-2.0.0.250407.dist-info/top_level.txt,sha256=CviWgXDn1mYmGlBxZ3G7sMNqv9KOOwYzbDpZsu5RYv4,27
|
49
|
+
ka_uts_com-2.0.0.250407.dist-info/RECORD,,
|
{ka_uts_com-1.0.0.240823.dist-info → ka_uts_com-2.0.0.250407.dist-info/licenses}/LICENSE.txt
RENAMED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2025 Kosakya, GmbH. All rights reserved.
|
3
3
|
#
|
4
4
|
# This program is free software: you can redistribute it and/or modify
|
5
5
|
# it under the terms of the GNU General Public License as published by
|
@@ -16,4 +16,3 @@
|
|
16
16
|
#
|
17
17
|
# Person: Role: Email:
|
18
18
|
# Bernd Stroehle Author bernd.stroehle@gmail.com
|
19
|
-
# Maintainer
|
Binary file
|
Binary file
|
build/lib/ka_uts_com/aeq.py
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
# import orjson
|
4
|
-
# import traceback
|
5
|
-
|
6
|
-
from ka_uts_com.date import Date
|
7
|
-
from ka_uts_com.str import Str
|
8
|
-
|
9
|
-
from typing import Any, Dict, List
|
10
|
-
|
11
|
-
TN_Date = None | Any
|
12
|
-
|
13
|
-
T_Arr = List[Any]
|
14
|
-
T_Dic = Dict[Any, Any]
|
15
|
-
|
16
|
-
TN_Arr = None | T_Arr
|
17
|
-
TN_Dic = None | T_Dic
|
18
|
-
TN_Str = None | str
|
19
|
-
|
20
|
-
|
21
|
-
class Aeq:
|
22
|
-
""" Dictionary of Equates
|
23
|
-
"""
|
24
|
-
@classmethod
|
25
|
-
def sh_value(cls, key: str, value: Any, d_valid_parms: TN_Dic) -> Any:
|
26
|
-
|
27
|
-
# print(f"key = {key}, type(key) = {type(key)}")
|
28
|
-
# print(f"value = {value}, type(value) = {type(value)}")
|
29
|
-
if not d_valid_parms:
|
30
|
-
return value
|
31
|
-
_type: TN_Str = d_valid_parms.get(key)
|
32
|
-
# print(f"_type = {_type}")
|
33
|
-
if not _type:
|
34
|
-
return value
|
35
|
-
if isinstance(_type, str):
|
36
|
-
match _type:
|
37
|
-
case 'int':
|
38
|
-
value = int(value)
|
39
|
-
case 'bool':
|
40
|
-
value = Str.sh_boolean(value)
|
41
|
-
case 'dict':
|
42
|
-
value = Str.sh_dic(value)
|
43
|
-
case 'list':
|
44
|
-
value = Str.sh_arr(value)
|
45
|
-
case '%Y-%m-%d':
|
46
|
-
value = Date.sh(value, _type)
|
47
|
-
case '_':
|
48
|
-
match _type[0]:
|
49
|
-
case '[', '{':
|
50
|
-
_obj = Str.sh_dic(_type)
|
51
|
-
if value not in _obj:
|
52
|
-
msg = (f"parameter={key} value={value} is invalid; "
|
53
|
-
f"valid values are={_obj}")
|
54
|
-
raise Exception(msg)
|
55
|
-
|
56
|
-
# print(f"value = {value}, type(value) = {type(value)}")
|
57
|
-
return value
|
58
|
-
|
59
|
-
@classmethod
|
60
|
-
def sh_d_eq(cls, a_s_eq: T_Arr, d_valid_parms: TN_Dic) -> T_Dic:
|
61
|
-
|
62
|
-
d_eq = {}
|
63
|
-
_d_valid_parms = d_valid_parms
|
64
|
-
for s_eq in a_s_eq[1:]:
|
65
|
-
a_eq = s_eq.split('=')
|
66
|
-
if len(a_eq) == 1:
|
67
|
-
key = 'cmd'
|
68
|
-
value = a_eq[0]
|
69
|
-
if _d_valid_parms is not None:
|
70
|
-
if value in _d_valid_parms:
|
71
|
-
_d_valid_parms = _d_valid_parms[value]
|
72
|
-
else:
|
73
|
-
_valid_commands = list(_d_valid_parms.keys())
|
74
|
-
msg = (f"Wrong command: {value}; "
|
75
|
-
f"valid commands are: {_valid_commands}")
|
76
|
-
else:
|
77
|
-
key = a_eq[0]
|
78
|
-
value = a_eq[1]
|
79
|
-
|
80
|
-
if _d_valid_parms is not None:
|
81
|
-
if key not in _d_valid_parms:
|
82
|
-
msg = (f"Wrong parameter: {key}; "
|
83
|
-
f"valid parameters are: {_d_valid_parms}")
|
84
|
-
raise Exception(msg)
|
85
|
-
value = cls.sh_value(key, value, _d_valid_parms)
|
86
|
-
d_eq[key] = value
|
87
|
-
return d_eq
|
build/lib/ka_uts_com/argv.py
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
from ka_uts_com.pacmod import Pacmod
|
4
|
-
from ka_uts_com.aeq import Aeq
|
5
|
-
|
6
|
-
from typing import Any, Callable, Dict, List
|
7
|
-
|
8
|
-
T_Arr = List[Any]
|
9
|
-
T_Dic = Dict[Any, Any]
|
10
|
-
|
11
|
-
TN_Arr = None | T_Arr
|
12
|
-
TN_Dic = None | T_Dic
|
13
|
-
|
14
|
-
|
15
|
-
class Argv:
|
16
|
-
""" Manage Commandline Arguments
|
17
|
-
"""
|
18
|
-
@staticmethod
|
19
|
-
def set_by_pacmod(d_eq: T_Dic, root_cls) -> None:
|
20
|
-
""" set current pacmod dictionary
|
21
|
-
"""
|
22
|
-
tenant = d_eq.get('tenant')
|
23
|
-
d_eq['pacmod_curr'] = Pacmod.sh_d_pacmod(root_cls, tenant)
|
24
|
-
|
25
|
-
@staticmethod
|
26
|
-
def set_by_prof(d_eq: T_Dic, sh_prof: Callable | Any) -> None:
|
27
|
-
""" set current pacmod dictionary
|
28
|
-
"""
|
29
|
-
if callable(sh_prof):
|
30
|
-
d_eq['sh_prof'] = sh_prof()
|
31
|
-
else:
|
32
|
-
d_eq['sh_prof'] = sh_prof
|
33
|
-
|
34
|
-
@classmethod
|
35
|
-
def sh(cls, a_s_eq: T_Arr, **kwargs) -> T_Dic:
|
36
|
-
""" show equates dictionary
|
37
|
-
"""
|
38
|
-
# print(f"DoEq sh kwargs = {kwargs}")
|
39
|
-
root_cls = kwargs.get('root_cls')
|
40
|
-
d_valid_parms: TN_Dic = kwargs.get('d_parms')
|
41
|
-
# print(f"DoEq sh d_valid_parms = {d_valid_parms}")
|
42
|
-
|
43
|
-
d_eq = Aeq.sh_d_eq(a_s_eq, d_valid_parms)
|
44
|
-
|
45
|
-
cls.set_by_pacmod(d_eq, root_cls)
|
46
|
-
_sh_prof = kwargs.get('sh_prof')
|
47
|
-
cls.set_by_prof(d_eq, _sh_prof)
|
48
|
-
|
49
|
-
return d_eq
|
@@ -1,93 +0,0 @@
|
|
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
|
-
# main logger
|
14
|
-
main:
|
15
|
-
level: 'NOTSET'
|
16
|
-
handlers:
|
17
|
-
- debug_console
|
18
|
-
- debug_file
|
19
|
-
- info_file
|
20
|
-
- error_file
|
21
|
-
|
22
|
-
# person logger
|
23
|
-
person:
|
24
|
-
level: NOTSET
|
25
|
-
handlers:
|
26
|
-
- debug_console
|
27
|
-
- debug_file
|
28
|
-
- info_file
|
29
|
-
- error_file
|
30
|
-
|
31
|
-
handlers:
|
32
|
-
|
33
|
-
debug_console:
|
34
|
-
class: 'logging.StreamHandler'
|
35
|
-
level: DEBUG
|
36
|
-
formatter: debug
|
37
|
-
stream: 'ext://sys.stderr'
|
38
|
-
|
39
|
-
debug_file:
|
40
|
-
class: 'logging.FileHandler'
|
41
|
-
level: DEBUG
|
42
|
-
formatter: error
|
43
|
-
filename: 'debug.log'
|
44
|
-
mode: 'a'
|
45
|
-
|
46
|
-
# info_rotating_file_handler:
|
47
|
-
# class: 'logging.handlers.RotatingFileHandler'
|
48
|
-
# level: INFO
|
49
|
-
# formatter: info
|
50
|
-
# filename: 'info.rotating.log'
|
51
|
-
# mode: 'a'
|
52
|
-
# maxBytes: 1048576 # 1MB
|
53
|
-
# backupCount: 10
|
54
|
-
# encoding: utf8
|
55
|
-
|
56
|
-
info_file:
|
57
|
-
class: 'logging.FileHandler'
|
58
|
-
level: INFO
|
59
|
-
formatter: info
|
60
|
-
filename: 'info.log'
|
61
|
-
mode: 'a'
|
62
|
-
|
63
|
-
error_file:
|
64
|
-
class: 'logging.FileHandler'
|
65
|
-
level: ERROR
|
66
|
-
formatter: error
|
67
|
-
filename: 'error.log'
|
68
|
-
mode: 'a'
|
69
|
-
|
70
|
-
critical_mail:
|
71
|
-
class: 'logging.handlers.SMTPHandler'
|
72
|
-
level: CRITICAL
|
73
|
-
formatter: critical
|
74
|
-
mailhost : localhost
|
75
|
-
fromaddr: 'monitoring@domain.com'
|
76
|
-
toaddrs:
|
77
|
-
- 'dev@domain.com'
|
78
|
-
- 'qa@domain.com'
|
79
|
-
subject: 'Critical error with application name'
|
80
|
-
|
81
|
-
formatters:
|
82
|
-
|
83
|
-
info:
|
84
|
-
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
85
|
-
debug:
|
86
|
-
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
87
|
-
datefmt: '%Y-%m-%d %H:%M:%S'
|
88
|
-
error:
|
89
|
-
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
90
|
-
datefmt: '%Y-%m-%d %H:%M:%S'
|
91
|
-
critical:
|
92
|
-
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
93
|
-
datefmt: '%Y-%m-%d %H:%M:%S'
|
build/lib/ka_uts_com/ioc.py
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
import jinja2
|
4
|
-
import os
|
5
|
-
import yaml
|
6
|
-
|
7
|
-
from typing import Any, Dict
|
8
|
-
|
9
|
-
T_Dic = Dict[Any, Any]
|
10
|
-
|
11
|
-
TN_Any = None | Any
|
12
|
-
|
13
|
-
|
14
|
-
class Yaml:
|
15
|
-
|
16
|
-
""" Manage Object to Yaml file affilitation
|
17
|
-
"""
|
18
|
-
@staticmethod
|
19
|
-
def load_with_safeloader(string: str) -> None | Any:
|
20
|
-
_obj = yaml.load(string, Loader=yaml.SafeLoader)
|
21
|
-
return _obj
|
22
|
-
|
23
|
-
@staticmethod
|
24
|
-
def read(path: str) -> TN_Any:
|
25
|
-
with open(path) as fd:
|
26
|
-
# The Loader parameter handles the conversion from YAML
|
27
|
-
# scalar values to Python object format
|
28
|
-
_obj = yaml.load(fd, Loader=yaml.SafeLoader)
|
29
|
-
return _obj
|
30
|
-
return None
|
31
|
-
|
32
|
-
|
33
|
-
class Jinja2:
|
34
|
-
""" Manage Object to Json file affilitation
|
35
|
-
"""
|
36
|
-
@staticmethod
|
37
|
-
def read_template(
|
38
|
-
path: str) -> Any:
|
39
|
-
dir, file = os.path.split(path)
|
40
|
-
env = jinja2.Environment(loader=jinja2.FileSystemLoader(dir))
|
41
|
-
return env.get_template(file)
|
42
|
-
|
43
|
-
@classmethod
|
44
|
-
def read(
|
45
|
-
cls, path: str, **kwargs):
|
46
|
-
try:
|
47
|
-
# read jinja template from file
|
48
|
-
template = cls.read_template(path)
|
49
|
-
|
50
|
-
# render template as yaml string
|
51
|
-
template_rendered = template.render(**kwargs)
|
52
|
-
|
53
|
-
# parse yaml string as dictionary
|
54
|
-
dic = Yaml.load_with_safeloader(template_rendered)
|
55
|
-
return dic
|
56
|
-
except Exception:
|
57
|
-
raise
|
build/lib/ka_uts_com/pacmod.py
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
from os import path as os_path
|
4
|
-
import pkg_resources
|
5
|
-
|
6
|
-
from typing import Any, Dict, List
|
7
|
-
|
8
|
-
T_Arr = List[Any]
|
9
|
-
T_Dic = Dict[Any, Any]
|
10
|
-
|
11
|
-
TN_Dic = None | T_Dic
|
12
|
-
|
13
|
-
|
14
|
-
class Pacmod:
|
15
|
-
""" Package Module Management
|
16
|
-
"""
|
17
|
-
def sh_d_pacmod(root_cls, tenant: Any) -> T_Dic:
|
18
|
-
""" Show Pacmod Dictionary
|
19
|
-
"""
|
20
|
-
a_pacmod: T_Arr = root_cls.__module__.split(".")
|
21
|
-
package = a_pacmod[0]
|
22
|
-
module = a_pacmod[1]
|
23
|
-
d_pacmod: T_Dic = {}
|
24
|
-
d_pacmod['tenant'] = tenant
|
25
|
-
d_pacmod['package'] = package
|
26
|
-
d_pacmod['module'] = module
|
27
|
-
return d_pacmod
|
28
|
-
|
29
|
-
# class Cfg:
|
30
|
-
# """ Configuration Sub Class of Package Module Class
|
31
|
-
# """
|
32
|
-
@staticmethod
|
33
|
-
def sh_path_cfg_yaml(pacmod: T_Dic) -> str:
|
34
|
-
""" show directory
|
35
|
-
"""
|
36
|
-
package = pacmod['package']
|
37
|
-
module = pacmod['module']
|
38
|
-
|
39
|
-
dir: str = f"{package}.data"
|
40
|
-
|
41
|
-
# print(f"dir = {dir}")
|
42
|
-
# print(f"package = {package}")
|
43
|
-
# print(f"module = {module}")
|
44
|
-
|
45
|
-
path = pkg_resources.resource_filename(dir, f"{module}.yml")
|
46
|
-
return path
|
47
|
-
|
48
|
-
@staticmethod
|
49
|
-
def sh_path_keys_yaml(
|
50
|
-
pacmod: Any, filename: str = 'keys.yml') -> str:
|
51
|
-
""" show directory
|
52
|
-
"""
|
53
|
-
package = pacmod['package']
|
54
|
-
dir = f"{package}.data"
|
55
|
-
path = pkg_resources.resource_filename(dir, filename)
|
56
|
-
return path
|
57
|
-
|
58
|
-
@staticmethod
|
59
|
-
def sh_pacmod_type(pacmod: Dict, type_: str) -> str:
|
60
|
-
""" show Data File Path
|
61
|
-
"""
|
62
|
-
package = pacmod['package']
|
63
|
-
module = pacmod['module']
|
64
|
-
return f"/data/{package}/{module}/{type_}"
|
65
|
-
|
66
|
-
@classmethod
|
67
|
-
def sh_file_path(
|
68
|
-
cls, pacmod: T_Dic, type_: str, suffix: str,
|
69
|
-
pid: Any, ts: Any, **kwargs) -> str:
|
70
|
-
""" show type specific path
|
71
|
-
"""
|
72
|
-
filename = kwargs.get('filename')
|
73
|
-
if filename is not None:
|
74
|
-
filename_ = filename
|
75
|
-
else:
|
76
|
-
filename_ = type_
|
77
|
-
|
78
|
-
sw_run_pid_ts = kwargs.get('sw_run_pid_ts', True)
|
79
|
-
if sw_run_pid_ts is None:
|
80
|
-
sw_run_pid_ts = True
|
81
|
-
|
82
|
-
# _dir: str = cls.Data.Dir.sh(pacmod, type)
|
83
|
-
_dir: str = cls.sh_pacmod_type(pacmod, type_)
|
84
|
-
if sw_run_pid_ts:
|
85
|
-
# pid = str(Com.pid)
|
86
|
-
# ts = str(Com.ts_start)
|
87
|
-
file_path = os_path.join(
|
88
|
-
_dir, f"{filename_}_{pid}_{ts}.{suffix}")
|
89
|
-
else:
|
90
|
-
file_path = os_path.join(_dir, f"{filename_}.{suffix}")
|
91
|
-
return file_path
|
92
|
-
|
93
|
-
@classmethod
|
94
|
-
def sh_pattern(
|
95
|
-
cls, pacmod: T_Dic, type_: str, suffix: str, **kwargs) -> str:
|
96
|
-
""" show type specific path
|
97
|
-
"""
|
98
|
-
filename = kwargs.get('filename')
|
99
|
-
_dir: str = cls.sh_pacmod_type(pacmod, type_)
|
100
|
-
path = os_path.join(_dir, f"{filename}*.{suffix}")
|
101
|
-
return path
|
102
|
-
|
103
|
-
@staticmethod
|
104
|
-
def sh_path_cfg_log(pacmod: TN_Dic = None, filename: str = 'log.yml'):
|
105
|
-
""" show directory
|
106
|
-
"""
|
107
|
-
if pacmod is None:
|
108
|
-
pacmod = {'package': 'ka_uts_com', 'module': 'com'}
|
109
|
-
return pkg_resources.resource_filename(
|
110
|
-
f"{pacmod['package']}.data", filename
|
111
|
-
)
|
Binary file
|
Binary file
|
ka_uts_com/aeq.py
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
# import orjson
|
4
|
-
# import traceback
|
5
|
-
|
6
|
-
from ka_uts_com.date import Date
|
7
|
-
from ka_uts_com.str import Str
|
8
|
-
|
9
|
-
from typing import Any, Dict, List
|
10
|
-
|
11
|
-
TN_Date = None | Any
|
12
|
-
|
13
|
-
T_Arr = List[Any]
|
14
|
-
T_Dic = Dict[Any, Any]
|
15
|
-
|
16
|
-
TN_Arr = None | T_Arr
|
17
|
-
TN_Dic = None | T_Dic
|
18
|
-
TN_Str = None | str
|
19
|
-
|
20
|
-
|
21
|
-
class Aeq:
|
22
|
-
""" Dictionary of Equates
|
23
|
-
"""
|
24
|
-
@classmethod
|
25
|
-
def sh_value(cls, key: str, value: Any, d_valid_parms: TN_Dic) -> Any:
|
26
|
-
|
27
|
-
# print(f"key = {key}, type(key) = {type(key)}")
|
28
|
-
# print(f"value = {value}, type(value) = {type(value)}")
|
29
|
-
if not d_valid_parms:
|
30
|
-
return value
|
31
|
-
_type: TN_Str = d_valid_parms.get(key)
|
32
|
-
# print(f"_type = {_type}")
|
33
|
-
if not _type:
|
34
|
-
return value
|
35
|
-
if isinstance(_type, str):
|
36
|
-
match _type:
|
37
|
-
case 'int':
|
38
|
-
value = int(value)
|
39
|
-
case 'bool':
|
40
|
-
value = Str.sh_boolean(value)
|
41
|
-
case 'dict':
|
42
|
-
value = Str.sh_dic(value)
|
43
|
-
case 'list':
|
44
|
-
value = Str.sh_arr(value)
|
45
|
-
case '%Y-%m-%d':
|
46
|
-
value = Date.sh(value, _type)
|
47
|
-
case '_':
|
48
|
-
match _type[0]:
|
49
|
-
case '[', '{':
|
50
|
-
_obj = Str.sh_dic(_type)
|
51
|
-
if value not in _obj:
|
52
|
-
msg = (f"parameter={key} value={value} is invalid; "
|
53
|
-
f"valid values are={_obj}")
|
54
|
-
raise Exception(msg)
|
55
|
-
|
56
|
-
# print(f"value = {value}, type(value) = {type(value)}")
|
57
|
-
return value
|
58
|
-
|
59
|
-
@classmethod
|
60
|
-
def sh_d_eq(cls, a_s_eq: T_Arr, d_valid_parms: TN_Dic) -> T_Dic:
|
61
|
-
|
62
|
-
d_eq = {}
|
63
|
-
_d_valid_parms = d_valid_parms
|
64
|
-
for s_eq in a_s_eq[1:]:
|
65
|
-
a_eq = s_eq.split('=')
|
66
|
-
if len(a_eq) == 1:
|
67
|
-
key = 'cmd'
|
68
|
-
value = a_eq[0]
|
69
|
-
if _d_valid_parms is not None:
|
70
|
-
if value in _d_valid_parms:
|
71
|
-
_d_valid_parms = _d_valid_parms[value]
|
72
|
-
else:
|
73
|
-
_valid_commands = list(_d_valid_parms.keys())
|
74
|
-
msg = (f"Wrong command: {value}; "
|
75
|
-
f"valid commands are: {_valid_commands}")
|
76
|
-
else:
|
77
|
-
key = a_eq[0]
|
78
|
-
value = a_eq[1]
|
79
|
-
|
80
|
-
if _d_valid_parms is not None:
|
81
|
-
if key not in _d_valid_parms:
|
82
|
-
msg = (f"Wrong parameter: {key}; "
|
83
|
-
f"valid parameters are: {_d_valid_parms}")
|
84
|
-
raise Exception(msg)
|
85
|
-
value = cls.sh_value(key, value, _d_valid_parms)
|
86
|
-
d_eq[key] = value
|
87
|
-
return d_eq
|
ka_uts_com/argv.py
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# coding=utf-8
|
2
|
-
|
3
|
-
from ka_uts_com.pacmod import Pacmod
|
4
|
-
from ka_uts_com.aeq import Aeq
|
5
|
-
|
6
|
-
from typing import Any, Callable, Dict, List
|
7
|
-
|
8
|
-
T_Arr = List[Any]
|
9
|
-
T_Dic = Dict[Any, Any]
|
10
|
-
|
11
|
-
TN_Arr = None | T_Arr
|
12
|
-
TN_Dic = None | T_Dic
|
13
|
-
|
14
|
-
|
15
|
-
class Argv:
|
16
|
-
""" Manage Commandline Arguments
|
17
|
-
"""
|
18
|
-
@staticmethod
|
19
|
-
def set_by_pacmod(d_eq: T_Dic, root_cls) -> None:
|
20
|
-
""" set current pacmod dictionary
|
21
|
-
"""
|
22
|
-
tenant = d_eq.get('tenant')
|
23
|
-
d_eq['pacmod_curr'] = Pacmod.sh_d_pacmod(root_cls, tenant)
|
24
|
-
|
25
|
-
@staticmethod
|
26
|
-
def set_by_prof(d_eq: T_Dic, sh_prof: Callable | Any) -> None:
|
27
|
-
""" set current pacmod dictionary
|
28
|
-
"""
|
29
|
-
if callable(sh_prof):
|
30
|
-
d_eq['sh_prof'] = sh_prof()
|
31
|
-
else:
|
32
|
-
d_eq['sh_prof'] = sh_prof
|
33
|
-
|
34
|
-
@classmethod
|
35
|
-
def sh(cls, a_s_eq: T_Arr, **kwargs) -> T_Dic:
|
36
|
-
""" show equates dictionary
|
37
|
-
"""
|
38
|
-
# print(f"DoEq sh kwargs = {kwargs}")
|
39
|
-
root_cls = kwargs.get('root_cls')
|
40
|
-
d_valid_parms: TN_Dic = kwargs.get('d_parms')
|
41
|
-
# print(f"DoEq sh d_valid_parms = {d_valid_parms}")
|
42
|
-
|
43
|
-
d_eq = Aeq.sh_d_eq(a_s_eq, d_valid_parms)
|
44
|
-
|
45
|
-
cls.set_by_pacmod(d_eq, root_cls)
|
46
|
-
_sh_prof = kwargs.get('sh_prof')
|
47
|
-
cls.set_by_prof(d_eq, _sh_prof)
|
48
|
-
|
49
|
-
return d_eq
|