ka-uts-com 2023.6.0__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.
ka_uts_com/ioc.py ADDED
@@ -0,0 +1,55 @@
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
+ return yaml.load(string, Loader=yaml.SafeLoader)
21
+
22
+ @staticmethod
23
+ def read(path: str) -> TN_Any:
24
+ with open(path) as fd:
25
+ # The Loader parameter handles the conversion from YAML
26
+ # scalar values to Python object format
27
+ return yaml.load(fd, Loader=yaml.SafeLoader)
28
+ return None
29
+
30
+
31
+ class Jinja2:
32
+ """ Manage Object to Json file affilitation
33
+ """
34
+ @staticmethod
35
+ def read_template(
36
+ path: str) -> Any:
37
+ dir, file = os.path.split(path)
38
+ env = jinja2.Environment(loader=jinja2.FileSystemLoader(dir))
39
+ return env.get_template(file)
40
+
41
+ @classmethod
42
+ def read(
43
+ cls, path: str, **kwargs):
44
+ try:
45
+ # read jinja template from file
46
+ template = cls.read_template(path)
47
+
48
+ # render template as yaml string
49
+ template_rendered = template.render(**kwargs)
50
+
51
+ # parse yaml string as dictionary
52
+ dic = Yaml.load_with_safeloader(template_rendered)
53
+ return dic
54
+ except Exception:
55
+ raise
ka_uts_com/log.py ADDED
@@ -0,0 +1,82 @@
1
+ from ka_uts_com.com import Com
2
+
3
+ from typing import Any, Callable
4
+
5
+
6
+ # class Eq:
7
+ # """ Manage Equate Class
8
+ # """
9
+ # @staticmethod
10
+ # def sh(key: Any, value: Any) -> str:
11
+ # """ Show Key, Value as Equate
12
+ # """
13
+ # return f"{key} = {value}"
14
+
15
+
16
+ class Log:
17
+ """Logging Class
18
+ """
19
+
20
+ class Eq:
21
+
22
+ @staticmethod
23
+ def sh(key: Any, value: Any) -> str:
24
+ """ Show Key, Value as Equate
25
+ """
26
+ return f"{key} = {value}"
27
+
28
+ @classmethod
29
+ def debug(cls, key: Any, value: Any) -> None:
30
+ Log.debug(cls.sh(key, value), stacklevel=3)
31
+
32
+ @classmethod
33
+ def error(cls, key: Any, value: Any) -> None:
34
+ Log.error(cls.sh(key, value), stacklevel=3)
35
+
36
+ @classmethod
37
+ def info(cls, key: Any, value: Any) -> None:
38
+ Log.info(cls.sh(key, value), stacklevel=3)
39
+
40
+ @classmethod
41
+ def warning(cls, key: Any, value: Any) -> None:
42
+ Log.warning(cls.sh(key, value), stacklevel=3)
43
+
44
+ @staticmethod
45
+ def debug(*args, **kwargs) -> None:
46
+ if kwargs is None:
47
+ kwargs = {}
48
+ kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
49
+ fnc_debug: Callable = Com.Log.debug
50
+ fnc_debug(*args, **kwargs)
51
+
52
+ @staticmethod
53
+ def error(*args, **kwargs) -> None:
54
+ if kwargs is None:
55
+ kwargs = {}
56
+ kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
57
+ fnc_error: Callable = Com.Log.error
58
+ fnc_error(*args, **kwargs)
59
+
60
+ @staticmethod
61
+ def info(*args, **kwargs) -> None:
62
+ if kwargs is None:
63
+ kwargs = {}
64
+ kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
65
+ fnc_info: Callable = Com.Log.info
66
+ fnc_info(*args, **kwargs)
67
+
68
+ @staticmethod
69
+ def warning(*args, **kwargs) -> None:
70
+ if kwargs is None:
71
+ kwargs = {}
72
+ kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
73
+ fnc_warning: Callable = Com.Log.warning
74
+ fnc_warning(*args, **kwargs)
75
+
76
+ # @staticmethod
77
+ # def finished(*args, **kwargs) -> None:
78
+ # msg_finished: str = Com.cfg.profs.msgs.finished
79
+ # Com.Log.info(msg_finished)
80
+ # msg_etime: str = Com.cfg.profs.msgs.etime
81
+ # msg_etime = msg_etime.format(etime=Com.ts_etime)
82
+ # Com.Log.info(msg_profile)
ka_uts_com/pacmod.py ADDED
@@ -0,0 +1,129 @@
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(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(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
+ class Pmd:
49
+ """ Package Sub Class of Package Module Class
50
+ """
51
+ @staticmethod
52
+ def sh_path_keys(
53
+ pacmod: Any, filename: str = 'keys.yml') -> str:
54
+ """ show directory
55
+ """
56
+ package = pacmod['package']
57
+ dir = f"{package}.data"
58
+ path = pkg_resources.resource_filename(dir, filename)
59
+ return path
60
+
61
+ class Path:
62
+
63
+ # class Data:
64
+ # class Dir:
65
+ # """ Data Directory Sub Class
66
+ # """
67
+ # @staticmethod
68
+ # def sh(pacmod: Dict, type: str) -> str:
69
+ # """ show Data File Path
70
+ # """
71
+ # package = pacmod['package']
72
+ # module = pacmod['module']
73
+ # return f"/data/{package}/{module}/{type}"
74
+
75
+ @staticmethod
76
+ def sh_data_package_module_type(pacmod: Dict, type_: str) -> str:
77
+ """ show Data File Path
78
+ """
79
+ package = pacmod['package']
80
+ module = pacmod['module']
81
+ return f"/data/{package}/{module}/{type_}"
82
+
83
+ @classmethod
84
+ def sh(
85
+ cls, pacmod: T_Dic, type_: str, suffix: str,
86
+ pid: Any, ts: Any, **kwargs) -> str:
87
+ """ show type specific path
88
+ """
89
+ filename = kwargs.get('filename')
90
+ if filename is not None:
91
+ filename_ = filename
92
+ else:
93
+ filename_ = type_
94
+
95
+ sw_run_pid_ts = kwargs.get('sw_run_pid_ts', True)
96
+ if sw_run_pid_ts is None:
97
+ sw_run_pid_ts = True
98
+
99
+ # _dir: str = cls.Data.Dir.sh(pacmod, type)
100
+ _dir: str = cls.sh_data_package_module_type(pacmod, type_)
101
+ if sw_run_pid_ts:
102
+ # pid = str(Com.pid)
103
+ # ts = str(Com.ts_start)
104
+ file_path = os_path.join(
105
+ _dir, f"{filename_}_{pid}_{ts}.{suffix}")
106
+ else:
107
+ file_path = os_path.join(_dir, f"{filename_}.{suffix}")
108
+ return file_path
109
+
110
+ @classmethod
111
+ def sh_pattern(
112
+ cls, pacmod: Dict, type_: str, suffix: str, **kwargs) -> str:
113
+ """ show type specific path
114
+ """
115
+ filename = kwargs.get('filename')
116
+ _dir: str = cls.sh_data_package_module_type(pacmod, type_)
117
+ return os_path.join(_dir, f"{filename}*.{suffix}")
118
+
119
+ class Log:
120
+
121
+ @staticmethod
122
+ def sh_cfg(pacmod: TN_Dic = None, filename: str = 'log.yml'):
123
+ """ show directory
124
+ """
125
+ if pacmod is None:
126
+ pacmod = {'package': 'ka_uts_com', 'module': 'com'}
127
+ return pkg_resources.resource_filename(
128
+ f"{pacmod['package']}.data", filename
129
+ )
ka_uts_com/py.typed ADDED
File without changes
ka_uts_com/timer.py ADDED
@@ -0,0 +1,72 @@
1
+ # coding=utf-8
2
+
3
+ from datetime import datetime
4
+
5
+ from ka_uts_com.com import Com
6
+ from ka_uts_com.log import Log
7
+
8
+ from typing import Any, List
9
+
10
+ T_Any = Any
11
+ T_Arr = List[Any]
12
+ T_Str = str
13
+
14
+ TN_Any = None | T_Any
15
+ TN_Str = None | T_Str
16
+
17
+
18
+ class Timestamp:
19
+
20
+ @staticmethod
21
+ def sh_elapse_time_sec(
22
+ end: Any, start: TN_Any) -> TN_Any:
23
+ if start is None:
24
+ return None
25
+ return end.timestamp()-start.timestamp()
26
+
27
+
28
+ class Timer:
29
+ """ Timer Management
30
+ """
31
+ @staticmethod
32
+ def sh_task_id(
33
+ class_id: Any, parms: TN_Any, separator: T_Str) -> T_Str:
34
+ """ start Timer
35
+ """
36
+ package = Com.pacmod_curr['package']
37
+ module = Com.pacmod_curr['module']
38
+ if isinstance(class_id, str):
39
+ class_name = class_id
40
+ else:
41
+ class_name = class_id.__qualname__
42
+ if not parms:
43
+ parms = ""
44
+ else:
45
+ parms = f" {parms}"
46
+ arr: T_Arr = []
47
+ for item in [package, module, class_name, parms]:
48
+ if not item:
49
+ continue
50
+ arr.append(item)
51
+ return separator.join(arr)
52
+
53
+ @classmethod
54
+ def start(
55
+ cls, class_id: T_Any,
56
+ parms: TN_Any = None, separator: T_Str = ".") -> None:
57
+ """ start Timer
58
+ """
59
+ task_id = cls.sh_task_id(class_id, parms, separator)
60
+ Com.d_timer[task_id] = datetime.now()
61
+
62
+ @classmethod
63
+ def end(cls, class_id: T_Any,
64
+ parms: TN_Any = None, separator: T_Str = ".") -> None:
65
+ """ end Timer
66
+ """
67
+ task_id = cls.sh_task_id(class_id, parms, separator)
68
+ start = Com.d_timer.get(task_id)
69
+ end = datetime.now()
70
+ elapse_time_sec = Timestamp.sh_elapse_time_sec(end, start)
71
+ msg = f"{task_id} elapse time [sec] = {elapse_time_sec}"
72
+ Log.info(msg, stacklevel=2)
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright (c) 2022 Kosakya, GmbH. All rights reserved.
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more detail.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ # Person: Role: Email:
18
+ # Bernd Stroehle Author bernd.stroehle@kosakya.de
19
+ # Maintainer
@@ -0,0 +1,222 @@
1
+ Metadata-Version: 2.1
2
+ Name: ka_uts_com
3
+ Version: 2023.6.0
4
+ Summary: Communication Class Utilities
5
+ Author-email: Bernd Stroehle <bernd.stroehle@bs29.com>
6
+ Maintainer-email: Bernd Stroehle <bernd.stroehle@bs29.com>
7
+ Project-URL: Source Code, https://github.com/bs29/ka_uts_com/tree/master
8
+ Project-URL: Homepage, https://kosakya.de/
9
+ Project-URL: Documentation, https://ka-com.readthedocs.io/en/latest
10
+ Project-URL: Apache-2.0 License, https://apache.org/licenses/LICENSE-2.0
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Natural Language :: English
17
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/x-rst
20
+ License-File: LICENSE.txt
21
+ Requires-Dist: Jinja2>=3.1.4
22
+ Requires-Dist: PyYAML>=6.0.2
23
+ Requires-Dist: setuptools>=70.1.1
24
+
25
+ ##########
26
+ ka_uts_com
27
+ ##########
28
+
29
+ Overview
30
+ ========
31
+
32
+ .. start short_desc
33
+
34
+ **Communication Utilities**
35
+
36
+ .. end short_desc
37
+
38
+ Installation
39
+ ============
40
+ .. start installation
41
+
42
+ ``ka_uts_com`` can be installed from PyPI or Anaconda.
43
+
44
+ To install with ``pip``:
45
+
46
+ .. code-block:: shell
47
+
48
+ $ python -m pip install ka_uts_com
49
+
50
+ To install with ``conda``:
51
+
52
+ .. code-block:: shell
53
+
54
+ $ conda install -c conda-forge ka_uts_com
55
+
56
+ .. end installation
57
+
58
+ This requires that the ``readme`` extra is installed:
59
+
60
+ .. code-block:: bash
61
+
62
+ $ python -m pip install ka_uts_com[readme]
63
+
64
+ Configuration
65
+ =============
66
+
67
+ The Configuration of general or tenant specific Package logging is defined in Yaml Configuration Files in the data directory <Package Name>/data of the Package.
68
+
69
+ .. _configuration-file-label:
70
+ .. list-table:: *Configuration Files*
71
+ :widths: auto
72
+ :header-rows: 1
73
+
74
+ * - Logging Type
75
+ - Configuration File
76
+ - Description
77
+ * - general
78
+ - log.yml
79
+ - the Python Logger compatible general Configuration file is used to
80
+ define tenant independend logging
81
+ * - tenant
82
+ - log.main.tenant.yml
83
+ - the Python Logger compatible tenant Configuration file is used to
84
+ define tenant dependend logging
85
+
86
+ Modules
87
+ =======
88
+ ``ka_uts_com`` contains the following modules.
89
+
90
+ ------------
91
+ Base Modules
92
+ ------------
93
+
94
+ .. base-modules-label:
95
+ .. table:: *Base Modules*
96
+
97
+ +------+---------------------------------------------------+
98
+ |Module|Description |
99
+ +======+===================================================+
100
+ |com |The com module contains the the Base Communication |
101
+ | |class Com and the Utility Classes: |
102
+ | +---------------------------------------------------+
103
+ | |**Base Communication Class** |
104
+ | +----------+----------------------------------------+
105
+ | |**Class** |**Description** |
106
+ | +----------+----------------------------------------+
107
+ | |*Com* | Base Communication Setup |
108
+ | +----------+----------------------------------------+
109
+ | |**Utility Classes** |
110
+ | +----------+----------------------------------------+
111
+ | |**Class** |**Description** |
112
+ | +----------+----------------------------------------+
113
+ | |*Standard*|Standard Log Configuration |
114
+ | +----------+----------------------------------------+
115
+ | |*Person* |Person based Log Configuration |
116
+ | +----------+----------------------------------------+
117
+ | |*Cfg* |Configuration Management |
118
+ | +----------+----------------------------------------+
119
+ | |*Mgo* |Mongo Db Configuration Management |
120
+ | +----------+----------------------------------------+
121
+ | |*App* |Setup Application Management |
122
+ | +----------+----------------------------------------+
123
+ | |*Exit* |Setup Exit Handling |
124
+ +------+----------+----------------------------------------+
125
+
126
+ ---------------
127
+ Utility Modules
128
+ ---------------
129
+
130
+ .. _utility-modules-label:
131
+
132
+ .. table:: *Utility Modules*
133
+
134
+ +------+-----------------------------------------------------+
135
+ |Module|Description |
136
+ +======+=====================================================+
137
+ |pacmod|The pacmod module contains the Pacmod Class with |
138
+ | |the following Components (Functions and sub classes) |
139
+ | +-------------+---------------------------------------+
140
+ | |**Function** |**Description** |
141
+ | +-------------+---------------------------------------+
142
+ | |sh |show pacmod dictionary entries |
143
+ | +-------------+---------------------------------------+
144
+ | |**Sub-class**|**Description** |
145
+ | +-------------+---------------------------------------+
146
+ | |Yaml |I/O for yaml files |
147
+ | +-------------+---------------------------------------+
148
+ | |Json |I/O for Json files |
149
+ +------+-------------+---------------------------------------+
150
+ |ioc |The ioc module contains I/O Classes for the following|
151
+ | |file types: yaml, json |
152
+ +------+-----------------------------------------------------+
153
+
154
+ .. _utility-modules-function-label:
155
+
156
+ .. table:: *Utility Module Functions*
157
+
158
+ +-------+---------------------------------+
159
+ |Fnction|Description |
160
+ +=======+=================================+
161
+ |sh |pacmod dictionary |
162
+ +-------+---------------------------------+
163
+
164
+ .. _utility-modules-classes-label:
165
+
166
+ .. table:: *Utility Module Classes*
167
+
168
+ +-----+-----------------------------------------------+
169
+ |Class|Description |
170
+ +-----+-----------------------------------------------+
171
+ |Yaml |I/O for yaml files |
172
+ +-----+-----------------------------------------------+
173
+ |Json |I/O for json files |
174
+ +-----+-----------------------------------------------+
175
+
176
+ ---------------
177
+ Special Modules
178
+ ---------------
179
+
180
+ .. special-modules-label:
181
+
182
+ .. table:: *Special Modules*
183
+
184
+ +-----------+---------------------------------------------+
185
+ |Module |Description |
186
+ +===========+=============================================+
187
+ |__init__ |dummy Module: contains no Statements |
188
+ +-----------+---------------------------------------------+
189
+ |__version__|contains Assignment Statements for Version |
190
+ | |System Variables |
191
+ +-----------+-------------------+-------------------------+
192
+
193
+ .. System-Variables-of-Module-__version__:
194
+
195
+ .. table:: *System Variables of Module __version__*
196
+
197
+ +---------------+-----------------------------------------+
198
+ |System Variable|Example |
199
+ +===============+=========================================+
200
+ |__title__ |'ka_uts_com' |
201
+ +---------------+-----------------------------------------+
202
+ |__description__|'Communication Area Utilities.' |
203
+ +---------------+-----------------------------------------+
204
+ |__url__ |'https://ka-com.readthedocs.io/en/latest'|
205
+ +---------------+-----------------------------------------+
206
+ |__version___ |'2023.2.2' |
207
+ +---------------+-----------------------------------------+
208
+ |__build__ |0x022200 |
209
+ +---------------+-----------------------------------------+
210
+ |__author_email_|'Bernd Stroehle' |
211
+ +---------------+-----------------------------------------+
212
+ |__license__ |'Apache-2.0' |
213
+ +---------------+-----------------------------------------+
214
+ |__copyright__ |'Copyright 2023 bs29' |
215
+ +---------------+-----------------------------------------+
216
+ |__cake__ |u'\u2728 \U0001f370 \u2728' |
217
+ +---------------+-----------------------------------------+
218
+
219
+ Appendix
220
+ ========
221
+
222
+ .. contents:: **Table of Content**
@@ -0,0 +1,29 @@
1
+ build/lib/ka_uts_com/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ build/lib/ka_uts_com/__version__.py,sha256=NxBIn-b5y0KE4X5hwQdyncFk1EgYcAISVNmrd1Ginzg,355
3
+ build/lib/ka_uts_com/com.py,sha256=ptOJeE13oFd0rIKjHKS-XbYaPMI3-kenVOOX4yl1xd4,5136
4
+ build/lib/ka_uts_com/ioc.py,sha256=p5ODR3JtMQb2IPzI5wo343X_of5ORJjD839vnN_F6dM,1360
5
+ build/lib/ka_uts_com/log.py,sha256=WD_rz7EGp-Tcwtxr06lFya0cnacxwpVWpMcf5Dm2Pvw,2327
6
+ build/lib/ka_uts_com/pacmod.py,sha256=TAu1wYnGprxngj18NEQPToZq716h1iqf2SqLJJpW6Io,4038
7
+ build/lib/ka_uts_com/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ build/lib/ka_uts_com/timer.py,sha256=IViB3YAGH_ZwHJ7LxkDdiCMTbfju7gT5fUYWWlYFB4o,1869
9
+ build/lib/ka_uts_com/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ build/lib/ka_uts_com/data/log.main.tenant.yml,sha256=ONqKV6nOGQS1ZYLFGH64_jf8fyMk60lZqnd5GK5j-qs,2423
11
+ build/lib/ka_uts_com/data/log.person.yml,sha256=ONqKV6nOGQS1ZYLFGH64_jf8fyMk60lZqnd5GK5j-qs,2423
12
+ build/lib/ka_uts_com/data/log.yml,sha256=hCBsy34Nb3cHObRtMcjB2GtRLFqh-pzr3vuC1xB8PWY,2281
13
+ ka_uts_com/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ ka_uts_com/__version__.py,sha256=NxBIn-b5y0KE4X5hwQdyncFk1EgYcAISVNmrd1Ginzg,355
15
+ ka_uts_com/com.py,sha256=ptOJeE13oFd0rIKjHKS-XbYaPMI3-kenVOOX4yl1xd4,5136
16
+ ka_uts_com/ioc.py,sha256=p5ODR3JtMQb2IPzI5wo343X_of5ORJjD839vnN_F6dM,1360
17
+ ka_uts_com/log.py,sha256=WD_rz7EGp-Tcwtxr06lFya0cnacxwpVWpMcf5Dm2Pvw,2327
18
+ ka_uts_com/pacmod.py,sha256=TAu1wYnGprxngj18NEQPToZq716h1iqf2SqLJJpW6Io,4038
19
+ ka_uts_com/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ ka_uts_com/timer.py,sha256=IViB3YAGH_ZwHJ7LxkDdiCMTbfju7gT5fUYWWlYFB4o,1869
21
+ ka_uts_com/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ ka_uts_com/data/log.main.tenant.yml,sha256=ONqKV6nOGQS1ZYLFGH64_jf8fyMk60lZqnd5GK5j-qs,2423
23
+ ka_uts_com/data/log.person.yml,sha256=ONqKV6nOGQS1ZYLFGH64_jf8fyMk60lZqnd5GK5j-qs,2423
24
+ ka_uts_com/data/log.yml,sha256=hCBsy34Nb3cHObRtMcjB2GtRLFqh-pzr3vuC1xB8PWY,2281
25
+ ka_uts_com-2023.6.0.dist-info/LICENSE.txt,sha256=1NG3lZzl4JyP_dVIoFfHr-ycMHJMLY1j6sjzjxBzqXo,858
26
+ ka_uts_com-2023.6.0.dist-info/METADATA,sha256=cy3XL3KxDi2E-sjpMNOFLgQmljqniP8ezyWkpO-DHhM,8450
27
+ ka_uts_com-2023.6.0.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
28
+ ka_uts_com-2023.6.0.dist-info/top_level.txt,sha256=CviWgXDn1mYmGlBxZ3G7sMNqv9KOOwYzbDpZsu5RYv4,27
29
+ ka_uts_com-2023.6.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (72.2.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ build
2
+ dist
3
+ docs
4
+ ka_uts_com