abstract-utilities 0.2.2.667__py3-none-any.whl → 0.2.2.680__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.
Potentially problematic release.
This version of abstract-utilities might be problematic. Click here for more details.
- abstract_utilities/__init__.py +5 -2
- abstract_utilities/file_utils/imports/module_imports.py +1 -1
- abstract_utilities/file_utils/src/find_collect.py +10 -0
- abstract_utilities/import_utils/src/import_utils.py +7 -5
- abstract_utilities/import_utils/src/layze_import_utils/lazy_utils.py +8 -8
- abstract_utilities/import_utils/src/layze_import_utils/nullProxy.py +7 -2
- abstract_utilities/imports.py +2 -0
- abstract_utilities/json_utils/imports/imports.py +1 -1
- abstract_utilities/json_utils/json_utils.py +26 -0
- abstract_utilities/list_utils/list_utils.py +3 -0
- abstract_utilities/log_utils/log_file.py +82 -27
- abstract_utilities/read_write_utils/read_write_utils.py +66 -35
- abstract_utilities/type_utils/get_type.py +4 -0
- {abstract_utilities-0.2.2.667.dist-info → abstract_utilities-0.2.2.680.dist-info}/METADATA +1 -1
- {abstract_utilities-0.2.2.667.dist-info → abstract_utilities-0.2.2.680.dist-info}/RECORD +17 -17
- {abstract_utilities-0.2.2.667.dist-info → abstract_utilities-0.2.2.680.dist-info}/WHEEL +0 -0
- {abstract_utilities-0.2.2.667.dist-info → abstract_utilities-0.2.2.680.dist-info}/top_level.txt +0 -0
abstract_utilities/__init__.py
CHANGED
|
@@ -32,7 +32,8 @@ from .json_utils import (unified_json_loader,
|
|
|
32
32
|
safe_write_to_file,
|
|
33
33
|
safe_save_updated_json_data,
|
|
34
34
|
get_result_from_data,
|
|
35
|
-
flatten_json
|
|
35
|
+
flatten_json,
|
|
36
|
+
to_json_safe
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
from .directory_utils import *
|
|
@@ -45,7 +46,9 @@ from .list_utils import (get_highest_value_obj,
|
|
|
45
46
|
compare_lists,
|
|
46
47
|
get_symetric_difference,
|
|
47
48
|
list_set,
|
|
48
|
-
make_list_it
|
|
49
|
+
make_list_it,
|
|
50
|
+
get_single_from_list
|
|
51
|
+
)
|
|
49
52
|
from .time_utils import (get_time_stamp,
|
|
50
53
|
get_sleep,
|
|
51
54
|
sleep_count_down,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from ...list_utils import make_list
|
|
2
|
-
from ...type_utils import get_media_exts, is_media_type, MIME_TYPES, is_str
|
|
2
|
+
from ...type_utils import get_media_exts, is_media_type, MIME_TYPES, is_str,if_not_bool_default
|
|
3
3
|
from ...ssh_utils import *
|
|
4
4
|
from ...env_utils import *
|
|
5
5
|
from ...read_write_utils import read_from_file,write_to_file
|
|
@@ -188,3 +188,13 @@ def collect_filepaths(
|
|
|
188
188
|
) -> List[str]:
|
|
189
189
|
kwargs['file_type']='f'
|
|
190
190
|
return collect_globs(*args,**kwargs)
|
|
191
|
+
|
|
192
|
+
def get_filename(path):
|
|
193
|
+
basename = os.path.basename(path)
|
|
194
|
+
filename,ext = os.path.splitext(basename)
|
|
195
|
+
return filename
|
|
196
|
+
def find_files(filename,directory=None,add=None):
|
|
197
|
+
add = if_not_bool_default(add,default=True)
|
|
198
|
+
directory = directory or os.getcwd()
|
|
199
|
+
dirs,files = get_files_and_dirs(directory,add=add)
|
|
200
|
+
return [file for file in files if get_filename(file) == filename]
|
|
@@ -326,12 +326,14 @@ def initFuncs(self, mode=None):
|
|
|
326
326
|
existing = set(self.__dict__) | set(dir(self))
|
|
327
327
|
|
|
328
328
|
for _, module_name, _ in pkgutil.iter_modules(pkg.__path__):
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
for name, obj in inspect.getmembers(mod, inspect.isfunction):
|
|
332
|
-
if name not in existing:
|
|
333
|
-
setattr(self, name, obj.__get__(self))
|
|
329
|
+
try:
|
|
330
|
+
mod = importlib.import_module(f"{pkg.__name__}.{module_name}")
|
|
334
331
|
|
|
332
|
+
for name, obj in inspect.getmembers(mod, inspect.isfunction):
|
|
333
|
+
if name not in existing:
|
|
334
|
+
setattr(self, name, obj.__get__(self))
|
|
335
|
+
except Exception as e:
|
|
336
|
+
logger.error(f"initFuncs({mode}) pkgutil error: {e}")
|
|
335
337
|
except Exception as e:
|
|
336
338
|
logger.error(f"initFuncs({mode}) error: {e}")
|
|
337
339
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ...imports import *
|
|
2
2
|
from .nullProxy import nullProxy,nullProxy_logger
|
|
3
3
|
@lru_cache(maxsize=None)
|
|
4
|
-
def lazy_import_single(name: str):
|
|
4
|
+
def lazy_import_single(name: str,fallback=None):
|
|
5
5
|
"""
|
|
6
6
|
Import module safely. If unavailable, return NullProxy.
|
|
7
7
|
"""
|
|
@@ -18,24 +18,24 @@ def lazy_import_single(name: str):
|
|
|
18
18
|
name,
|
|
19
19
|
e,
|
|
20
20
|
)
|
|
21
|
-
return nullProxy(name)
|
|
21
|
+
return nullProxy(name,fallback=fallback)
|
|
22
22
|
|
|
23
|
-
def get_lazy_attr(module_name: str, *attrs):
|
|
24
|
-
obj = lazy_import(module_name)
|
|
23
|
+
def get_lazy_attr(module_name: str, *attrs,fallback=None):
|
|
24
|
+
obj = lazy_import(module_name,fallback=fallback)
|
|
25
25
|
|
|
26
26
|
for attr in attrs:
|
|
27
27
|
try:
|
|
28
28
|
obj = getattr(obj, attr)
|
|
29
29
|
except Exception:
|
|
30
|
-
return nullProxy(module_name, attrs)
|
|
30
|
+
return nullProxy(module_name, attrs,fallback=fallback)
|
|
31
31
|
|
|
32
32
|
return obj
|
|
33
|
-
def lazy_import(name: str, *attrs):
|
|
33
|
+
def lazy_import(name: str, *attrs,fallback=None):
|
|
34
34
|
"""
|
|
35
35
|
Import module safely. If unavailable, return NullProxy.
|
|
36
36
|
"""
|
|
37
37
|
if attrs:
|
|
38
|
-
obj = get_lazy_attr(name, *attrs)
|
|
38
|
+
obj = get_lazy_attr(name, *attrs,fallback=fallback)
|
|
39
39
|
else:
|
|
40
|
-
obj = lazy_import_single(name)
|
|
40
|
+
obj = lazy_import_single(name,fallback=fallback)
|
|
41
41
|
return obj
|
|
@@ -7,14 +7,19 @@ class nullProxy:
|
|
|
7
7
|
Safe, chainable, callable placeholder for missing modules/attributes.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
def __init__(self, name, path=()):
|
|
10
|
+
def __init__(self, name, path=(),fallback=None):
|
|
11
11
|
self._name = name
|
|
12
12
|
self._path = path
|
|
13
|
-
|
|
13
|
+
self.fallback=fallback
|
|
14
14
|
def __getattr__(self, attr):
|
|
15
15
|
return nullProxy(self._name, self._path + (attr,))
|
|
16
16
|
|
|
17
17
|
def __call__(self, *args, **kwargs):
|
|
18
|
+
if self.fallback is not None:
|
|
19
|
+
try:
|
|
20
|
+
return self.fallback(*args, **kwargs)
|
|
21
|
+
except Exception as e:
|
|
22
|
+
logger.info(f"{e}")
|
|
18
23
|
nullProxy_logger.warning(
|
|
19
24
|
"[lazy_import] Call to missing module/attr: %s.%s args=%s kwargs=%s",
|
|
20
25
|
self._name,
|
abstract_utilities/imports.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
from ...imports import
|
|
1
|
+
from ...imports import *
|
|
2
2
|
from typing import *
|
|
@@ -749,3 +749,29 @@ def flatten_json(data, parent_key='', sep='_'):
|
|
|
749
749
|
items.append((parent_key, data))
|
|
750
750
|
|
|
751
751
|
return dict(items)
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
def to_json_safe(obj):
|
|
755
|
+
if obj is None:
|
|
756
|
+
return None
|
|
757
|
+
|
|
758
|
+
if isinstance(obj, (str, int, float, bool)):
|
|
759
|
+
return obj
|
|
760
|
+
|
|
761
|
+
if isinstance(obj, (datetime, date)):
|
|
762
|
+
return obj.isoformat()
|
|
763
|
+
|
|
764
|
+
if isinstance(obj, Decimal):
|
|
765
|
+
return float(obj)
|
|
766
|
+
|
|
767
|
+
if isinstance(obj, Path):
|
|
768
|
+
return str(obj)
|
|
769
|
+
|
|
770
|
+
if isinstance(obj, dict):
|
|
771
|
+
return {k: to_json_safe(v) for k, v in obj.items()}
|
|
772
|
+
|
|
773
|
+
if isinstance(obj, (list, tuple, set)):
|
|
774
|
+
return [to_json_safe(v) for v in obj]
|
|
775
|
+
|
|
776
|
+
# Fallback (yt-dlp objects, enums, etc.)
|
|
777
|
+
return str(obj)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from .imports import *
|
|
2
2
|
import os, sys, inspect, logging
|
|
3
3
|
from logging.handlers import RotatingFileHandler
|
|
4
|
-
|
|
4
|
+
import logging
|
|
5
|
+
from pathlib import Path
|
|
5
6
|
PACKAGE_NAME = "abstract_utilities" # ← update if needed
|
|
6
7
|
|
|
7
8
|
|
|
@@ -43,39 +44,93 @@ def _resolve_log_root():
|
|
|
43
44
|
LOG_ROOT = _resolve_log_root()
|
|
44
45
|
|
|
45
46
|
|
|
46
|
-
def get_logFile(bpName=None, maxBytes=100_000, backupCount=3):
|
|
47
|
-
"""
|
|
48
|
-
A logger that always writes to a safe OS-appropriate path.
|
|
49
|
-
Works even when installed through pip.
|
|
50
|
-
"""
|
|
51
|
-
if bpName is None:
|
|
52
|
-
frame_idx = _find_caller_frame_index()
|
|
53
|
-
frame_info = inspect.stack()[frame_idx]
|
|
54
|
-
caller_path = frame_info.filename
|
|
55
|
-
bpName = os.path.splitext(os.path.basename(caller_path))[0]
|
|
56
|
-
del frame_info
|
|
57
|
-
|
|
58
|
-
logger = logging.getLogger(f"{PACKAGE_NAME}.{bpName}")
|
|
59
|
-
logger.setLevel(logging.INFO)
|
|
60
|
-
|
|
61
|
-
if not logger.handlers:
|
|
62
|
-
log_file = os.path.join(LOG_ROOT, f"{bpName}.log")
|
|
63
|
-
handler = RotatingFileHandler(log_file, maxBytes=maxBytes, backupCount=backupCount)
|
|
47
|
+
##def get_logFile(bpName=None, maxBytes=100_000, backupCount=3):
|
|
48
|
+
## """
|
|
49
|
+
## A logger that always writes to a safe OS-appropriate path.
|
|
50
|
+
## Works even when installed through pip.
|
|
51
|
+
## """
|
|
52
|
+
## if bpName is None:
|
|
53
|
+
## frame_idx = _find_caller_frame_index()
|
|
54
|
+
## frame_info = inspect.stack()[frame_idx]
|
|
55
|
+
## caller_path = frame_info.filename
|
|
56
|
+
## bpName = os.path.splitext(os.path.basename(caller_path))[0]
|
|
57
|
+
## del frame_info
|
|
58
|
+
##
|
|
59
|
+
## logger = logging.getLogger(f"{PACKAGE_NAME}.{bpName}")
|
|
60
|
+
## logger.setLevel(logging.INFO)
|
|
61
|
+
##
|
|
62
|
+
## if not logger.handlers:
|
|
63
|
+
## log_file = os.path.join(LOG_ROOT, f"{bpName}.log")
|
|
64
|
+
## handler = RotatingFileHandler(log_file, maxBytes=maxBytes, backupCount=backupCount)
|
|
65
|
+
##
|
|
66
|
+
## fmt = "%(asctime)s - %(levelname)s - %(pathname)s:%(lineno)d - %(message)s"
|
|
67
|
+
## formatter = logging.Formatter(fmt)
|
|
68
|
+
## handler.setFormatter(formatter)
|
|
69
|
+
##
|
|
70
|
+
## logger.addHandler(handler)
|
|
71
|
+
##
|
|
72
|
+
## # Console handler (optional; can disable for gunicorn)
|
|
73
|
+
## console = logging.StreamHandler(sys.stdout)
|
|
74
|
+
## console.setFormatter(formatter)
|
|
75
|
+
## logger.addHandler(console)
|
|
76
|
+
##
|
|
77
|
+
## return logger
|
|
78
|
+
LOG_FORMAT = (
|
|
79
|
+
"[%(asctime)s] "
|
|
80
|
+
"%(levelname)-8s "
|
|
81
|
+
"%(name)s:%(lineno)d | "
|
|
82
|
+
"%(message)s"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def get_logFile(
|
|
91
|
+
name: str,
|
|
92
|
+
log_dir: str | Path = "logs",
|
|
93
|
+
level: int = logging.INFO,
|
|
94
|
+
console: bool = True,
|
|
95
|
+
max_bytes: int = 5 * 1024 * 1024,
|
|
96
|
+
backup_count: int = 5,
|
|
97
|
+
):
|
|
98
|
+
logger = logging.getLogger(name)
|
|
99
|
+
|
|
100
|
+
if logger.handlers:
|
|
101
|
+
return logger
|
|
102
|
+
|
|
103
|
+
logger.setLevel(level)
|
|
104
|
+
|
|
105
|
+
formatter = logging.Formatter(LOG_FORMAT, DATE_FORMAT)
|
|
64
106
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
107
|
+
try:
|
|
108
|
+
log_dir = Path(log_dir)
|
|
109
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
110
|
+
|
|
111
|
+
file_handler = RotatingFileHandler(
|
|
112
|
+
log_dir / f"{name}.log",
|
|
113
|
+
maxBytes=max_bytes,
|
|
114
|
+
backupCount=backup_count,
|
|
115
|
+
encoding="utf-8",
|
|
116
|
+
)
|
|
117
|
+
file_handler.setFormatter(formatter)
|
|
118
|
+
logger.addHandler(file_handler)
|
|
68
119
|
|
|
69
|
-
|
|
120
|
+
except PermissionError:
|
|
121
|
+
# 🔒 Import-safe fallback
|
|
122
|
+
logger.addHandler(logging.NullHandler())
|
|
70
123
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
logger.addHandler(
|
|
124
|
+
if console:
|
|
125
|
+
console_handler = logging.StreamHandler()
|
|
126
|
+
console_handler.setFormatter(formatter)
|
|
127
|
+
logger.addHandler(console_handler)
|
|
75
128
|
|
|
129
|
+
logger.propagate = False
|
|
76
130
|
return logger
|
|
77
131
|
|
|
78
132
|
|
|
133
|
+
|
|
79
134
|
def _find_caller_frame_index():
|
|
80
135
|
"""Find the correct caller module outside this logger."""
|
|
81
136
|
for idx, frame_info in enumerate(inspect.stack()):
|
|
@@ -15,6 +15,38 @@ Usage:
|
|
|
15
15
|
from .imports import *
|
|
16
16
|
_FILE_PATH_KEYS = ['file', 'filepath', 'file_path', 'path', 'directory', 'f', 'dst', 'dest']
|
|
17
17
|
_CONTENTS_KEYS = ['cont', 'content', 'contents', 'data', 'datas', 'dat', 'src', 'source']
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
import uuid
|
|
20
|
+
import shlex
|
|
21
|
+
|
|
22
|
+
_STAGE_ROOT = Path("/var/tmp/abstract_stage")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _stage_file(contents: str, suffix=".tmp") -> Path:
|
|
26
|
+
"""
|
|
27
|
+
Write contents to a local staging file.
|
|
28
|
+
"""
|
|
29
|
+
_STAGE_ROOT.mkdir(parents=True, exist_ok=True)
|
|
30
|
+
path = _STAGE_ROOT / f"{uuid.uuid4().hex}{suffix}"
|
|
31
|
+
path.write_text(str(contents), encoding="utf-8")
|
|
32
|
+
return path
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _install_file(staged: Path, dest: str, **kwargs) -> str:
|
|
36
|
+
"""
|
|
37
|
+
Atomically install a staged file to destination using sudo install.
|
|
38
|
+
"""
|
|
39
|
+
cmd = (
|
|
40
|
+
f"sudo install -D -m 0644 "
|
|
41
|
+
f"{shlex.quote(str(staged))} "
|
|
42
|
+
f"{shlex.quote(dest)}"
|
|
43
|
+
)
|
|
44
|
+
return run_local_cmd(
|
|
45
|
+
cmd=cmd,
|
|
46
|
+
password=kwargs.get("password"),
|
|
47
|
+
key=kwargs.get("key"),
|
|
48
|
+
env_path=kwargs.get("env_path"),
|
|
49
|
+
)
|
|
18
50
|
|
|
19
51
|
|
|
20
52
|
# --- Helper utilities --------------------------------------------------------
|
|
@@ -251,54 +283,53 @@ def _should_use_remote(**kwargs) -> bool:
|
|
|
251
283
|
|
|
252
284
|
def _write_to_file(contents: str, file_path: str, **kwargs) -> str:
|
|
253
285
|
"""
|
|
254
|
-
|
|
255
|
-
Uses native I/O for local writes and streams for remote.
|
|
286
|
+
Unified writer using stage → install model.
|
|
256
287
|
"""
|
|
257
288
|
|
|
258
289
|
remote = _should_use_remote(**kwargs)
|
|
259
|
-
dirname = os.path.dirname(file_path)
|
|
260
|
-
make_dirs(dirname, exist_ok=True, **kwargs)
|
|
261
290
|
|
|
262
|
-
# ---
|
|
263
|
-
if
|
|
291
|
+
# --- Remote path (unchanged conceptually) ---
|
|
292
|
+
if remote:
|
|
293
|
+
tmp_path = _stage_file(contents)
|
|
294
|
+
|
|
295
|
+
user_at_host = kwargs["user_at_host"]
|
|
296
|
+
password = kwargs.get("password")
|
|
297
|
+
key = kwargs.get("key")
|
|
298
|
+
|
|
299
|
+
# copy staged file
|
|
300
|
+
scp_cmd = (
|
|
301
|
+
f"scp {shlex.quote(str(tmp_path))} "
|
|
302
|
+
f"{shlex.quote(user_at_host)}:{shlex.quote(file_path)}"
|
|
303
|
+
)
|
|
304
|
+
return run_pruned_func(
|
|
305
|
+
run_local_cmd,
|
|
306
|
+
cmd=scp_cmd,
|
|
307
|
+
password=password,
|
|
308
|
+
key=key,
|
|
309
|
+
**kwargs
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
# --- Local path ---
|
|
313
|
+
try:
|
|
314
|
+
# Attempt direct write for non-privileged paths
|
|
315
|
+
os.makedirs(os.path.dirname(file_path) or ".", exist_ok=True)
|
|
264
316
|
with open(file_path, "w", encoding="utf-8") as f:
|
|
265
|
-
f.write(contents)
|
|
317
|
+
f.write(str(contents))
|
|
266
318
|
return file_path
|
|
267
319
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
# Write to a temporary file locally first
|
|
274
|
-
tmp_path = "/tmp/_abstract_write.tmp"
|
|
275
|
-
with open(tmp_path, "w", encoding="utf-8") as tmpf:
|
|
276
|
-
tmpf.write(contents)
|
|
277
|
-
|
|
278
|
-
user_at_host = kwargs["user_at_host"]
|
|
279
|
-
password = kwargs.get("password")
|
|
280
|
-
key = kwargs.get("key")
|
|
281
|
-
|
|
282
|
-
# Use scp for remote write — no shell arg limits
|
|
283
|
-
scp_cmd = f"scp {shlex.quote(tmp_path)} {user_at_host}:{shlex.quote(file_path)}"
|
|
284
|
-
return run_pruned_func(
|
|
285
|
-
run_local_cmd,
|
|
286
|
-
cmd=scp_cmd,
|
|
287
|
-
password=password,
|
|
288
|
-
key=key,
|
|
289
|
-
**kwargs
|
|
290
|
-
)
|
|
320
|
+
except (PermissionError, FileNotFoundError):
|
|
321
|
+
# Privileged path → stage + install
|
|
322
|
+
staged = _stage_file(contents)
|
|
323
|
+
return _install_file(staged, file_path, **kwargs)
|
|
324
|
+
|
|
291
325
|
|
|
292
326
|
|
|
293
327
|
def write_to_file(*, contents: str, file_path: str, **kwargs):
|
|
294
328
|
"""
|
|
295
|
-
Error-handled
|
|
329
|
+
Error-handled public writer.
|
|
296
330
|
"""
|
|
297
|
-
|
|
298
331
|
try:
|
|
299
|
-
|
|
300
|
-
return result
|
|
301
|
-
|
|
332
|
+
return _write_to_file(contents=contents, file_path=file_path, **kwargs)
|
|
302
333
|
except Exception as e:
|
|
303
334
|
print("WRITE ERROR:", e)
|
|
304
335
|
raise RuntimeError(f"Failed writing: {file_path}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstract_utilities
|
|
3
|
-
Version: 0.2.2.
|
|
3
|
+
Version: 0.2.2.680
|
|
4
4
|
Summary: abstract_utilities is a collection of utility modules providing a variety of functions to aid in tasks such as data comparison, list manipulation, JSON handling, string manipulation, mathematical computations, and time operations.
|
|
5
5
|
Home-page: https://github.com/AbstractEndeavors/abstract_utilities
|
|
6
6
|
Author: putkoff
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
abstract_utilities/__init__.py,sha256=
|
|
1
|
+
abstract_utilities/__init__.py,sha256=dHCOxtfHTIgNEXqpvJ7kUPGi7io935nlViOuA7zZDhU,5370
|
|
2
2
|
abstract_utilities/abstract_classes.py,sha256=A6-FNDQb2P_jcyt01Kc5SuY2QawLVKNjQ-rDGfsn4rA,2461
|
|
3
3
|
abstract_utilities/circular_import_finder.py,sha256=bs1O4NjSDrJ2cC8whPfZPouNDr1oxdMCFKUIfRyIEB4,8415
|
|
4
4
|
abstract_utilities/circular_import_finder2.py,sha256=n6OFjiIsxxw2u_bf8wcQ81fzQzXhsD4VYWzOC9pDYXw,3869
|
|
@@ -10,7 +10,7 @@ abstract_utilities/error_utils.py,sha256=dSMIM3TKe4e9i_akObyjDwy3Zu4fnoWRK9hucg_
|
|
|
10
10
|
abstract_utilities/global_utils.py,sha256=UkCS1nE561bVbxWsH-YQdFPSeZFMYXV7xg-DAtGUvrI,2204
|
|
11
11
|
abstract_utilities/hash_utils.py,sha256=u7t209ERD9aGONZHqmkYtiQRRadD2qG5ICSTxlYlZMc,206
|
|
12
12
|
abstract_utilities/history_utils.py,sha256=2bG8hMSRzLWMae4mpd2sf1esYtqT2D_3MDxeJnAE2Jw,1633
|
|
13
|
-
abstract_utilities/imports.py,sha256=
|
|
13
|
+
abstract_utilities/imports.py,sha256=cPUHsQFHxJANgX2SHNK3aMQAPO446GgSWNh-4_kbk5s,980
|
|
14
14
|
abstract_utilities/json_utils.py,sha256=YA4zoBRAsVjdU-BjFd1L5z81Y5X-NuwKrQW5L992EY4,27609
|
|
15
15
|
abstract_utilities/list_utils.py,sha256=i1fZ_kZ0mf_ei6w0MOkuEieRiyF-ReeAXzIdoRI1cvo,6298
|
|
16
16
|
abstract_utilities/log_utils.py,sha256=W74Y-CmdQP4Kj88HmAgejVxWgyWlvgCKMwLvOfyFf9c,9393
|
|
@@ -94,13 +94,13 @@ abstract_utilities/file_utils/imports/clean_imps.py,sha256=DB_NEKR8YLla5qCkTMuNs
|
|
|
94
94
|
abstract_utilities/file_utils/imports/constants.py,sha256=uPsIYVRs1Rf0SQ4pRdAke-tuc28LtgaSHSDS4_seaMk,5997
|
|
95
95
|
abstract_utilities/file_utils/imports/file_functions.py,sha256=brQha7TV9DaJe-hZSuHoFZBUI_45hxrGOIBTAojPWU8,297
|
|
96
96
|
abstract_utilities/file_utils/imports/imports.py,sha256=OQKsPec2raa55hxGUeTo0yDqzw-xBsshljFxG69rHk0,1504
|
|
97
|
-
abstract_utilities/file_utils/imports/module_imports.py,sha256=
|
|
97
|
+
abstract_utilities/file_utils/imports/module_imports.py,sha256=UGWoPUZ_AUzo9n2wejlwupOEQqEb6ZPt18pdQJXdxrk,440
|
|
98
98
|
abstract_utilities/file_utils/src/__init__.py,sha256=kgjkZ6IWDR_fQJTAQTinUBKUPLurekgdZ15ZT1wm20E,203
|
|
99
99
|
abstract_utilities/file_utils/src/file_filters.py,sha256=n8efrxxJRRd6dT4E5PbGoyGGKe1LU1cYy-b443XhqAo,6355
|
|
100
100
|
abstract_utilities/file_utils/src/file_reader.py,sha256=9fZ2dEXFRYhJNUsUYQO3hGs2uWrHu2o4FacVhfhdefE,22320
|
|
101
101
|
abstract_utilities/file_utils/src/file_utils.py,sha256=jgxMKeOAhYB2dxoqtudo4DKXctRE1TdcSbFcJmHcoiI,5766
|
|
102
102
|
abstract_utilities/file_utils/src/filter_params.py,sha256=tO5PJvYpd3bHQejulDVGHandR-_8w3VPnjiCayrLW9g,6774
|
|
103
|
-
abstract_utilities/file_utils/src/find_collect.py,sha256=
|
|
103
|
+
abstract_utilities/file_utils/src/find_collect.py,sha256=AmgIzO42wuhzs8Q_5Z9iRs2lu-HNypsUSDcAWINTVYc,6189
|
|
104
104
|
abstract_utilities/file_utils/src/find_content.py,sha256=3UI8HsTHR0UnuqybeYW4rxHvER7-SK42_hNZih-LfUU,6806
|
|
105
105
|
abstract_utilities/file_utils/src/initFunctionsGen.py,sha256=WyWv3Gt33QzvI8IxZCGLqAqsramAyoRbpvMTiuJeSTE,10418
|
|
106
106
|
abstract_utilities/file_utils/src/initFunctionsGens.py,sha256=A-I2dL2G58LfpCSI6c_aLbDtAsYvG0wwY37joYnqGcw,9804
|
|
@@ -160,14 +160,14 @@ abstract_utilities/import_utils/src/clean_imports.py,sha256=awpVFI-DMd8oOtx3JcUi
|
|
|
160
160
|
abstract_utilities/import_utils/src/dot_utils.py,sha256=oahEkVmexO-a2F3DKYQP5IrCvKJi9tjM_rjCImM_KCY,2793
|
|
161
161
|
abstract_utilities/import_utils/src/extract_utils.py,sha256=YuDVWbCKDrVDh9M7aZHdsrEoh_infJ3BUv46J6K-UYg,1705
|
|
162
162
|
abstract_utilities/import_utils/src/import_functions.py,sha256=5GxFh32e-DWDZ5IR-LnQTOiEmv15tjb3Fn_yhgnu7q8,4408
|
|
163
|
-
abstract_utilities/import_utils/src/import_utils.py,sha256=
|
|
163
|
+
abstract_utilities/import_utils/src/import_utils.py,sha256=B0ghZBrv1Gs3l3312UPbCn6TSKKDslegt2hpJcS0IyA,13265
|
|
164
164
|
abstract_utilities/import_utils/src/nullProxy.py,sha256=pYzP_tBJHduqc8IqdvjtRs1miYSab6NzHYiIqYGpduA,849
|
|
165
165
|
abstract_utilities/import_utils/src/package_utils.py,sha256=9qjBzIApDhV7kOdSRgZA9k-EncBNAg3mZZodgsiUNM4,5861
|
|
166
166
|
abstract_utilities/import_utils/src/pkg_utils.py,sha256=tSLaqFgitwswSuGhv-UnONT3rpri9DjK9ALt_0t5I30,7617
|
|
167
167
|
abstract_utilities/import_utils/src/sysroot_utils.py,sha256=k9sNVvp3zYrPV62rsaFLfCzXhaIQc61XJreog0RvOIc,3696
|
|
168
168
|
abstract_utilities/import_utils/src/layze_import_utils/__init__.py,sha256=lhbmFdYlyzCRo9cA_bAnjVwPjsCDKlKe1KKG-oa1A70,51
|
|
169
|
-
abstract_utilities/import_utils/src/layze_import_utils/lazy_utils.py,sha256=
|
|
170
|
-
abstract_utilities/import_utils/src/layze_import_utils/nullProxy.py,sha256=
|
|
169
|
+
abstract_utilities/import_utils/src/layze_import_utils/lazy_utils.py,sha256=B1UKuWfVZnAWAEtvy-97mU-7xwrQDGDbiZYUzSSL6-I,1152
|
|
170
|
+
abstract_utilities/import_utils/src/layze_import_utils/nullProxy.py,sha256=wosvIciVBUWlhBBgHvbkMOR9X3DKGQwgcy3UTG7wKEU,1071
|
|
171
171
|
abstract_utilities/import_utils/src/package_utils/__init__.py,sha256=xV_XKJSLcXf4qRQSRseWLV_iqCqijPm4zvrs-tjNb2M,4618
|
|
172
172
|
abstract_utilities/import_utils/src/package_utils/context_utils.py,sha256=8USSB6LR047k8fqge8J2jEM_StPEZ3cI1OKB3UENN8w,1177
|
|
173
173
|
abstract_utilities/import_utils/src/package_utils/import_collectors.py,sha256=kueQead4CW6FGmHHiXpQilE8spbnt2mSK93dJ3bpeW4,2365
|
|
@@ -179,19 +179,19 @@ abstract_utilities/import_utils/src/package_utilss/import_collectors.py,sha256=k
|
|
|
179
179
|
abstract_utilities/import_utils/src/package_utilss/path_utils.py,sha256=RTbfI4r2XF5mPn9GSS5ZNdmT0h5qM-8uG78pD3X-6-Q,926
|
|
180
180
|
abstract_utilities/import_utils/src/package_utilss/safe_import.py,sha256=2xqu37hRuUwZvNYhvwbzORIdBxzhnJJByF2I4-uzwpg,828
|
|
181
181
|
abstract_utilities/json_utils/__init__.py,sha256=_wzyTwWiqV9fxk85SOsaTXNWY6zDTlALYFix0h3afeo,49
|
|
182
|
-
abstract_utilities/json_utils/json_utils.py,sha256=
|
|
182
|
+
abstract_utilities/json_utils/json_utils.py,sha256=12yp8yisclMaHJFp6OtkcGMYpzRmt7-EnYu84LwSnKs,28092
|
|
183
183
|
abstract_utilities/json_utils/imports/__init__.py,sha256=sUUAr6PY1SMtVjSTsb08dFU6mF-Ug4usnbh908q4Jq0,53
|
|
184
|
-
abstract_utilities/json_utils/imports/imports.py,sha256=
|
|
184
|
+
abstract_utilities/json_utils/imports/imports.py,sha256=BfaNN4bs2pvgxVU8XQ_r0uDzxm4alw5H52bZHHcLNyc,46
|
|
185
185
|
abstract_utilities/json_utils/imports/module_imports.py,sha256=jTwYq8g13yHcFkKKVB8jBlYXMt3JsiqN4-yBGeGFApI,253
|
|
186
186
|
abstract_utilities/list_utils/__init__.py,sha256=6Ya5OVuv9QWiDlLFRBDY3bTqgSR0E0tck-ugUzKvlq0,49
|
|
187
|
-
abstract_utilities/list_utils/list_utils.py,sha256=
|
|
187
|
+
abstract_utilities/list_utils/list_utils.py,sha256=qcoVZcsrSH3VWIA8jGku_WNllYVbWhOhR8B8HBm8xMw,6393
|
|
188
188
|
abstract_utilities/list_utils/imports/__init__.py,sha256=sUUAr6PY1SMtVjSTsb08dFU6mF-Ug4usnbh908q4Jq0,53
|
|
189
189
|
abstract_utilities/list_utils/imports/imports.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
190
190
|
abstract_utilities/list_utils/imports/module_imports.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
191
|
abstract_utilities/log_utils/__init__.py,sha256=QzmY8RLyegJsq9Id06dHMiJAit5jxUzwhkY5-qgqxBU,141
|
|
192
192
|
abstract_utilities/log_utils/abstractLogManager.py,sha256=EF4GkNbeCUh_RStN2Sf_PmxgyUmxeB5RJT7P-SHGZ3w,2823
|
|
193
193
|
abstract_utilities/log_utils/call_response.py,sha256=E_QdT6R5REuXxeUuEXLwjUh8D0Lk0vair2ryRj4zocY,2518
|
|
194
|
-
abstract_utilities/log_utils/log_file.py,sha256=
|
|
194
|
+
abstract_utilities/log_utils/log_file.py,sha256=80QQ7LGKhyZ8Gtm4Mczit5qZQcaFwdfTbfSh7Gf-edw,5071
|
|
195
195
|
abstract_utilities/log_utils/logger_callable.py,sha256=9STZtZrmUlXmakxhwmXNPpCSQC10aCTMNjXbhaWZ7_8,1629
|
|
196
196
|
abstract_utilities/log_utils/imports/__init__.py,sha256=sUUAr6PY1SMtVjSTsb08dFU6mF-Ug4usnbh908q4Jq0,53
|
|
197
197
|
abstract_utilities/log_utils/imports/imports.py,sha256=TGhATFGyhvovFFKYH-CbCnEQK0WCkmA1C5LqvmmzlrQ,189
|
|
@@ -213,7 +213,7 @@ abstract_utilities/path_utils/imports/__init__.py,sha256=wBNCq8vHWdl7DleRNq0UK_-
|
|
|
213
213
|
abstract_utilities/path_utils/imports/imports.py,sha256=R7rno0pnzOU9XpzPhco0Wp9aIR73w_BGqCLdYpAHowI,32
|
|
214
214
|
abstract_utilities/path_utils/imports/module_imports.py,sha256=q5v_tXKEltMCD6-tJbs9KW7SFuwGaBDSko7SwEh6xlk,418
|
|
215
215
|
abstract_utilities/read_write_utils/__init__.py,sha256=MYC2oSY2NEbnu-iwX55t9m_rFRVxwILY_oUbBCpGJkw,32
|
|
216
|
-
abstract_utilities/read_write_utils/read_write_utils.py,sha256=
|
|
216
|
+
abstract_utilities/read_write_utils/read_write_utils.py,sha256=0Tyf1PbfUAsRSB0y6ECw9dKm1yIgYDGsKQznoNlFQPU,13741
|
|
217
217
|
abstract_utilities/read_write_utils/imports/__init__.py,sha256=sUUAr6PY1SMtVjSTsb08dFU6mF-Ug4usnbh908q4Jq0,53
|
|
218
218
|
abstract_utilities/read_write_utils/imports/imports.py,sha256=zN1zEfAJ-UbJB34wxm2oVuAiDmyqS12dSoIzojUrsiM,46
|
|
219
219
|
abstract_utilities/read_write_utils/imports/module_imports.py,sha256=cwmzuy1RKPyq2rQtMU6KSMSjDE9jUhPzHPjRTdTXcto,204
|
|
@@ -271,7 +271,7 @@ abstract_utilities/time_utils/imports/imports.py,sha256=mQn1yOBb8Oqw3TpmtQctHfLA
|
|
|
271
271
|
abstract_utilities/time_utils/imports/module_imports.py,sha256=4dCrHHXmZBmJpmWuMIq9MIHOIB8YZvPQyb8_M234lzE,46
|
|
272
272
|
abstract_utilities/type_utils/__init__.py,sha256=_0s-am2TO3lAkMc9IsKb3pnw8kEODQ1Ubw-T_sZe-bI,173
|
|
273
273
|
abstract_utilities/type_utils/alpha_utils.py,sha256=MuuW6LoXN0hp61ejqffyRdG5yRO71N-5aOvIlvvEDEw,1553
|
|
274
|
-
abstract_utilities/type_utils/get_type.py,sha256=
|
|
274
|
+
abstract_utilities/type_utils/get_type.py,sha256=bjJbRYxWGvKQR_1D_deOd2vLPmirl0u3v-rvI_OdUE8,3757
|
|
275
275
|
abstract_utilities/type_utils/is_type.py,sha256=mHqgkQnxxI3XYWAXKW7MixYX_TtaemiWKpnt4F_QuHQ,11280
|
|
276
276
|
abstract_utilities/type_utils/make_type.py,sha256=c85YNwBeNiJxvs4Hw31FTKn5mgccKORL9HUfamNR-GA,3297
|
|
277
277
|
abstract_utilities/type_utils/mime_types.py,sha256=Th7Ij3txFgDT3_7MOC4ZALbf55_KnoXduEU0JER_h4w,2237
|
|
@@ -282,7 +282,7 @@ abstract_utilities/type_utils/imports/constants.py,sha256=HUCD5R1URZLuG1hHOinDR8
|
|
|
282
282
|
abstract_utilities/type_utils/imports/imports.py,sha256=C_ZAQO-y7R31BYxTuaHJCEQE9IZSU1JgCtdHNWxZKhY,77
|
|
283
283
|
abstract_utilities/type_utils/imports/module_imports.py,sha256=qWWGttKQ1_P_miOGExuen9nvIlSeLBcQ7tzw49G1vhc,707
|
|
284
284
|
imports/__init__.py,sha256=2PSEAwZY88J2NHt98XCO5drFNok5ctiJ8LE02kwABP4,944
|
|
285
|
-
abstract_utilities-0.2.2.
|
|
286
|
-
abstract_utilities-0.2.2.
|
|
287
|
-
abstract_utilities-0.2.2.
|
|
288
|
-
abstract_utilities-0.2.2.
|
|
285
|
+
abstract_utilities-0.2.2.680.dist-info/METADATA,sha256=SvLFZK26s6bxaFzrPS6WeOQofjQb0XrITx_oLbP3AbM,28108
|
|
286
|
+
abstract_utilities-0.2.2.680.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
287
|
+
abstract_utilities-0.2.2.680.dist-info/top_level.txt,sha256=BF0GZ0xVFfN1K-hFIWPO3viNsOs1sSF86n1vHBg39FM,19
|
|
288
|
+
abstract_utilities-0.2.2.680.dist-info/RECORD,,
|
|
File without changes
|
{abstract_utilities-0.2.2.667.dist-info → abstract_utilities-0.2.2.680.dist-info}/top_level.txt
RENAMED
|
File without changes
|