abstract-utilities 0.2.2.468__tar.gz → 0.2.2.470__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of abstract-utilities might be problematic. Click here for more details.
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/PKG-INFO +1 -1
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/setup.py +1 -1
- abstract_utilities-0.2.2.470/src/abstract_utilities/file_utils/imports/imports.py +65 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/clean_imports.py +6 -99
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/string_clean.py +40 -1
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/type_utils.py +25 -1
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities.egg-info/PKG-INFO +1 -1
- abstract_utilities-0.2.2.468/src/abstract_utilities/file_utils/imports/imports.py +0 -266
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/README.md +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/pyproject.toml +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/setup.cfg +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/abstract_classes.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/class_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/cmd_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/pexpect_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/cmd_utils/user_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/collator_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/compare_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/compare_utils/best_match.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/compare_utils/compare_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/compare_utils/find_value.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/doit.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/dynimport.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/abstractEnv.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/envy_it.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/env_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/error_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/file_filters.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/file_reader.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/file_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/filter_params.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/find_collect.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/imports/file_functions.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/map_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/pdf_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/file_utils/type_checks.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/classes.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/clean_imps.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/file_functions.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/file_utils/req.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/global_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/hash_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/history_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/json_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/list_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/log_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/math_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/parse_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/path_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/read_write_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/file_reader2.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/file_readers.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_reader/sadfsad.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/dot_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/function_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/import_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/impot_functions.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/safe_import_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/sysroot_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/import_utils/utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/robust_readers/initFuncGen.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/safe_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/ssh_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/ssh_utils/classes.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/ssh_utils/imports.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/ssh_utils/pexpect_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/ssh_utils/utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/string_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/tetsts.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/thread_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/time_utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/utils.py +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities.egg-info/SOURCES.txt +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities.egg-info/dependency_links.txt +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities.egg-info/requires.txt +0 -0
- {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities.egg-info/top_level.txt +0 -0
|
@@ -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.470
|
|
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
|
|
@@ -4,7 +4,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
|
|
|
4
4
|
long_description = fh.read()
|
|
5
5
|
setuptools.setup(
|
|
6
6
|
name='abstract_utilities',
|
|
7
|
-
version='0.2.2.
|
|
7
|
+
version='0.2.2.470',
|
|
8
8
|
author='putkoff',
|
|
9
9
|
author_email='partners@abstractendeavors.com',
|
|
10
10
|
description='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.',
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# ============================================================
|
|
2
|
+
# abstract_utilities/imports/imports.py
|
|
3
|
+
# Global imports hub — everything imported here will be
|
|
4
|
+
# automatically available to any module that does:
|
|
5
|
+
# from ..imports import *
|
|
6
|
+
# ============================================================
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import sys, importlib,os
|
|
11
|
+
import sys, importlib, os, inspect
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
import os,sys
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from typing import *
|
|
18
|
+
import re
|
|
19
|
+
|
|
20
|
+
from typing import *
|
|
21
|
+
from types import MethodType
|
|
22
|
+
import os,re, sys, importlib, inspect, os, importlib.util, hashlib
|
|
23
|
+
import os,tempfile,shutil,logging,ezodf,fnmatch,pytesseract,pdfplumber
|
|
24
|
+
import pandas as pd
|
|
25
|
+
import geopandas as gpd
|
|
26
|
+
from datetime import datetime
|
|
27
|
+
|
|
28
|
+
from typing import *
|
|
29
|
+
from werkzeug.utils import secure_filename
|
|
30
|
+
from werkzeug.datastructures import FileStorage
|
|
31
|
+
from pdf2image import convert_from_path # only used for OCR fallback
|
|
32
|
+
# ---- Core standard library modules -------------------------
|
|
33
|
+
import os, sys, re, shlex, glob, platform, textwrap, subprocess, inspect, json, time
|
|
34
|
+
import tempfile, shutil, logging, pathlib, fnmatch, importlib, importlib.util, types
|
|
35
|
+
|
|
36
|
+
from datetime import datetime
|
|
37
|
+
from types import ModuleType
|
|
38
|
+
|
|
39
|
+
# ---- Dataclasses and typing --------------------------------
|
|
40
|
+
from dataclasses import dataclass, field
|
|
41
|
+
from typing import (
|
|
42
|
+
Any, Optional, List, Dict, Set, Tuple,
|
|
43
|
+
Iterable, Callable, Literal, Union, TypeVar
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
# ---- Common 3rd-party dependencies --------------------------
|
|
47
|
+
import pandas as pd
|
|
48
|
+
import geopandas as gpd
|
|
49
|
+
import pytesseract
|
|
50
|
+
import pdfplumber
|
|
51
|
+
import PyPDF2
|
|
52
|
+
import ezodf
|
|
53
|
+
from pdf2image import convert_from_path
|
|
54
|
+
from werkzeug.utils import secure_filename
|
|
55
|
+
from werkzeug.datastructures import FileStorage
|
|
56
|
+
|
|
57
|
+
# ---- Helpers ------------------------------------------------
|
|
58
|
+
import textwrap as tw
|
|
59
|
+
from pprint import pprint
|
|
60
|
+
|
|
61
|
+
# ============================================================
|
|
62
|
+
# AUTO-EXPORT ALL NON-PRIVATE NAMES
|
|
63
|
+
# ============================================================
|
|
64
|
+
__all__ = [name for name in globals() if not name.startswith("_")]
|
|
65
|
+
|
|
@@ -1,87 +1,10 @@
|
|
|
1
|
-
from
|
|
1
|
+
from ...read_write_utils import read_from_file,write_to_file
|
|
2
|
+
from ...string_clean import eatAll,eatElse,clean_line
|
|
3
|
+
from ...class_utils import get_caller_path
|
|
4
|
+
from ...list_utils import make_list
|
|
5
|
+
import os
|
|
2
6
|
import_tag = 'import '
|
|
3
7
|
from_tag = 'from '
|
|
4
|
-
def get_caller_path(i=None):
|
|
5
|
-
i = i or 1
|
|
6
|
-
frame = inspect.stack()[i]
|
|
7
|
-
return os.path.abspath(frame.filename)
|
|
8
|
-
def make_list(obj:any) -> list:
|
|
9
|
-
"""
|
|
10
|
-
Converts the input object to a list. If the object is already a list, it is returned as is.
|
|
11
|
-
|
|
12
|
-
Args:
|
|
13
|
-
obj: The object to convert.
|
|
14
|
-
|
|
15
|
-
Returns:
|
|
16
|
-
list: The object as a list.
|
|
17
|
-
"""
|
|
18
|
-
if isinstance(obj,str):
|
|
19
|
-
if ',' in obj:
|
|
20
|
-
obj = obj.split(',')
|
|
21
|
-
if isinstance(obj,set) or isinstance(obj,tuple):
|
|
22
|
-
return list(obj)
|
|
23
|
-
if isinstance(obj, list):
|
|
24
|
-
return obj
|
|
25
|
-
return [obj]
|
|
26
|
-
def getAlphas(lower=True,capitalize=False,listObj=False):
|
|
27
|
-
obj = ''
|
|
28
|
-
alphas = 'abcdefghijklmoprstuvwxyz'
|
|
29
|
-
if lower:
|
|
30
|
-
obj+=alphas
|
|
31
|
-
if capitalize:
|
|
32
|
-
obj+=alphas.upper()
|
|
33
|
-
if listObj:
|
|
34
|
-
obj = list(obj)
|
|
35
|
-
return obj
|
|
36
|
-
def getInts(string=False,listObj=False):
|
|
37
|
-
obj=12345678909
|
|
38
|
-
if string:
|
|
39
|
-
obj = str(obj)
|
|
40
|
-
if listObj:
|
|
41
|
-
obj = list(obj)
|
|
42
|
-
return obj
|
|
43
|
-
def get_alpha_ints(ints=True,alpha=True,lower=True,capitalize=True,string=True,listObj=True):
|
|
44
|
-
objs = [] if listObj else ""
|
|
45
|
-
if ints:
|
|
46
|
-
objs+=getInts(string=string,listObj=listObj)
|
|
47
|
-
if alpha:
|
|
48
|
-
objs+=getAlphas(lower=lower,capitalize=capitalize,listObj=listObj)
|
|
49
|
-
return objs
|
|
50
|
-
def eatElse(
|
|
51
|
-
stringObj,
|
|
52
|
-
chars=None,
|
|
53
|
-
ints=True,
|
|
54
|
-
alpha=True,
|
|
55
|
-
lower=True,
|
|
56
|
-
capitalize=True,
|
|
57
|
-
string=True,
|
|
58
|
-
listObj=True
|
|
59
|
-
):
|
|
60
|
-
alpha_ints = get_alpha_ints(
|
|
61
|
-
ints=True,
|
|
62
|
-
alpha=True,
|
|
63
|
-
lower=True,
|
|
64
|
-
capitalize=True,
|
|
65
|
-
string=True,
|
|
66
|
-
listObj=True
|
|
67
|
-
)
|
|
68
|
-
chars = make_list(chars or [])+alpha_ints
|
|
69
|
-
|
|
70
|
-
while True:
|
|
71
|
-
if stringObj:
|
|
72
|
-
str_0 = stringObj[0] not in chars
|
|
73
|
-
str_1 = stringObj[-1] not in chars
|
|
74
|
-
str_eat = str_0 or str_1
|
|
75
|
-
if not str_eat:
|
|
76
|
-
return stringObj
|
|
77
|
-
if stringObj and str_0:
|
|
78
|
-
stringObj = stringObj[1:] if len(stringObj) !=1 else ""
|
|
79
|
-
if stringObj and str_1:
|
|
80
|
-
stringObj = stringObj[:-1] if len(stringObj) !=1 else ""
|
|
81
|
-
else:
|
|
82
|
-
return stringObj
|
|
83
|
-
def clean_line(line):
|
|
84
|
-
return eatAll(line,[' ','','\t','\n'])
|
|
85
8
|
def is_line_import(line):
|
|
86
9
|
if line and (line.startswith(from_tag) or line.startswith(import_tag)):
|
|
87
10
|
return True
|
|
@@ -92,27 +15,11 @@ def is_line_group_import(line):
|
|
|
92
15
|
return False
|
|
93
16
|
def get_import_pkg(line):
|
|
94
17
|
if is_line_group_import(line):
|
|
95
|
-
|
|
96
18
|
return clean_line(line.split(from_tag)[1].split(import_tag)[0])
|
|
97
19
|
def get_imports_from_import_pkg(line):
|
|
98
20
|
if is_line_group_import(line):
|
|
99
21
|
return get_cleaned_import_list(line,commaClean=True)
|
|
100
|
-
|
|
101
|
-
## dirname = os.path.dirname(file_path)
|
|
102
|
-
## parts = part for part in dirname.split('/') if part]
|
|
103
|
-
## i=0
|
|
104
|
-
## pkg = pkg_name
|
|
105
|
-
## while True:
|
|
106
|
-
## if pkg and pkg.startswith('.'):
|
|
107
|
-
## i +=1
|
|
108
|
-
## pkg=pkg[1:] if len(pkg)>1 else ""
|
|
109
|
-
## else:
|
|
110
|
-
## if i > 1 and len(parts)>=i:
|
|
111
|
-
## pkg = '.'.join(parts[:-i])
|
|
112
|
-
## .{pkg}"
|
|
113
|
-
## parts
|
|
114
|
-
|
|
115
|
-
|
|
22
|
+
|
|
116
23
|
def add_imports_to_import_pkg_js(import_pkg,imports,import_pkg_js=None):
|
|
117
24
|
import_pkg_js = import_pkg_js or {}
|
|
118
25
|
imports = clean_imports(imports)
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/string_clean.py
RENAMED
|
@@ -22,6 +22,8 @@ Date: 05/31/2023
|
|
|
22
22
|
Version: 0.1.2
|
|
23
23
|
"""
|
|
24
24
|
import os
|
|
25
|
+
from .list_utils import make_list
|
|
26
|
+
from .type_utils import get_alpha_ints
|
|
25
27
|
def quoteIt(st: str, ls: list) -> str:
|
|
26
28
|
"""
|
|
27
29
|
Quotes specific elements in a string.
|
|
@@ -110,6 +112,42 @@ def eatAll(string: str, list_objects:(str or list)) -> any:
|
|
|
110
112
|
if string and list_objects:
|
|
111
113
|
string = eatOuter(string, list_objects)
|
|
112
114
|
return string
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def eatElse(
|
|
119
|
+
stringObj,
|
|
120
|
+
chars=None,
|
|
121
|
+
ints=True,
|
|
122
|
+
alpha=True,
|
|
123
|
+
lower=True,
|
|
124
|
+
capitalize=True,
|
|
125
|
+
string=True,
|
|
126
|
+
listObj=True
|
|
127
|
+
):
|
|
128
|
+
alpha_ints = get_alpha_ints(
|
|
129
|
+
ints=True,
|
|
130
|
+
alpha=True,
|
|
131
|
+
lower=True,
|
|
132
|
+
capitalize=True,
|
|
133
|
+
string=True,
|
|
134
|
+
listObj=True
|
|
135
|
+
)
|
|
136
|
+
chars = make_list(chars or [])+alpha_ints
|
|
137
|
+
|
|
138
|
+
while True:
|
|
139
|
+
if stringObj:
|
|
140
|
+
str_0 = stringObj[0] not in chars
|
|
141
|
+
str_1 = stringObj[-1] not in chars
|
|
142
|
+
str_eat = str_0 or str_1
|
|
143
|
+
if not str_eat:
|
|
144
|
+
return stringObj
|
|
145
|
+
if stringObj and str_0:
|
|
146
|
+
stringObj = stringObj[1:] if len(stringObj) !=1 else ""
|
|
147
|
+
if stringObj and str_1:
|
|
148
|
+
stringObj = stringObj[:-1] if len(stringObj) !=1 else ""
|
|
149
|
+
else:
|
|
150
|
+
return stringObj
|
|
113
151
|
def safe_split(obj, ls):
|
|
114
152
|
"""
|
|
115
153
|
Safely splits a string using multiple delimiters.
|
|
@@ -185,6 +223,7 @@ def url_join(*paths):
|
|
|
185
223
|
final_path = f"{final_path}/{path}"
|
|
186
224
|
return final_path
|
|
187
225
|
|
|
188
|
-
|
|
226
|
+
def clean_line(line):
|
|
227
|
+
return eatAll(line,[' ','','\t','\n'])
|
|
189
228
|
def capitalize(string):
|
|
190
229
|
return string[:1].upper() + string[1:].lower() if string else string
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/type_utils.py
RENAMED
|
@@ -60,6 +60,7 @@ import os
|
|
|
60
60
|
from pathlib import Path
|
|
61
61
|
from typing import Union
|
|
62
62
|
from .list_utils import make_list
|
|
63
|
+
|
|
63
64
|
# A big, but by no means exhaustive, map of extensions to mime‐types by category:
|
|
64
65
|
MIME_TYPES = {
|
|
65
66
|
'image': {
|
|
@@ -936,7 +937,30 @@ def is_any_instance(value):
|
|
|
936
937
|
for each in [dict, list, int, float]:
|
|
937
938
|
if is_instance(value, each):
|
|
938
939
|
return True
|
|
939
|
-
|
|
940
|
+
def getAlphas(lower=True,capitalize=False,listObj=False):
|
|
941
|
+
obj = ''
|
|
942
|
+
alphas = 'abcdefghijklmoprstuvwxyz'
|
|
943
|
+
if lower:
|
|
944
|
+
obj+=alphas
|
|
945
|
+
if capitalize:
|
|
946
|
+
obj+=alphas.upper()
|
|
947
|
+
if listObj:
|
|
948
|
+
obj = list(obj)
|
|
949
|
+
return obj
|
|
950
|
+
def getInts(string=False,listObj=False):
|
|
951
|
+
obj=12345678909
|
|
952
|
+
if string:
|
|
953
|
+
obj = str(obj)
|
|
954
|
+
if listObj:
|
|
955
|
+
obj = list(obj)
|
|
956
|
+
return obj
|
|
957
|
+
def get_alpha_ints(ints=True,alpha=True,lower=True,capitalize=True,string=True,listObj=True):
|
|
958
|
+
objs = [] if listObj else ""
|
|
959
|
+
if ints:
|
|
960
|
+
objs+=getInts(string=string,listObj=listObj)
|
|
961
|
+
if alpha:
|
|
962
|
+
objs+=getAlphas(lower=lower,capitalize=capitalize,listObj=listObj)
|
|
963
|
+
return objs
|
|
940
964
|
# Function: is_number
|
|
941
965
|
# Function: is_str
|
|
942
966
|
# Function: is_int
|
|
@@ -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.470
|
|
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,266 +0,0 @@
|
|
|
1
|
-
# ============================================================
|
|
2
|
-
# abstract_utilities/imports/imports.py
|
|
3
|
-
# Global imports hub — everything imported here will be
|
|
4
|
-
# automatically available to any module that does:
|
|
5
|
-
# from ..imports import *
|
|
6
|
-
# ============================================================
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import os
|
|
10
|
-
import sys, importlib,os
|
|
11
|
-
import sys, importlib, os, inspect
|
|
12
|
-
from pathlib import Path
|
|
13
|
-
import os,sys
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from typing import *
|
|
18
|
-
import re
|
|
19
|
-
|
|
20
|
-
from typing import *
|
|
21
|
-
from types import MethodType
|
|
22
|
-
import os,re, sys, importlib, inspect, os, importlib.util, hashlib
|
|
23
|
-
import os,tempfile,shutil,logging,ezodf,fnmatch,pytesseract,pdfplumber
|
|
24
|
-
import pandas as pd
|
|
25
|
-
import geopandas as gpd
|
|
26
|
-
from datetime import datetime
|
|
27
|
-
|
|
28
|
-
from typing import *
|
|
29
|
-
from werkzeug.utils import secure_filename
|
|
30
|
-
from werkzeug.datastructures import FileStorage
|
|
31
|
-
from pdf2image import convert_from_path # only used for OCR fallback
|
|
32
|
-
# ---- Core standard library modules -------------------------
|
|
33
|
-
import os, sys, re, shlex, glob, platform, textwrap, subprocess, inspect, json, time
|
|
34
|
-
import tempfile, shutil, logging, pathlib, fnmatch, importlib, importlib.util, types
|
|
35
|
-
|
|
36
|
-
from datetime import datetime
|
|
37
|
-
from types import ModuleType
|
|
38
|
-
|
|
39
|
-
# ---- Dataclasses and typing --------------------------------
|
|
40
|
-
from dataclasses import dataclass, field
|
|
41
|
-
from typing import (
|
|
42
|
-
Any, Optional, List, Dict, Set, Tuple,
|
|
43
|
-
Iterable, Callable, Literal, Union, TypeVar
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
# ---- Common 3rd-party dependencies --------------------------
|
|
47
|
-
import pandas as pd
|
|
48
|
-
import geopandas as gpd
|
|
49
|
-
import pytesseract
|
|
50
|
-
import pdfplumber
|
|
51
|
-
import PyPDF2
|
|
52
|
-
import ezodf
|
|
53
|
-
from pdf2image import convert_from_path
|
|
54
|
-
from werkzeug.utils import secure_filename
|
|
55
|
-
from werkzeug.datastructures import FileStorage
|
|
56
|
-
|
|
57
|
-
# ---- Helpers ------------------------------------------------
|
|
58
|
-
import textwrap as tw
|
|
59
|
-
from pprint import pprint
|
|
60
|
-
|
|
61
|
-
# ============================================================
|
|
62
|
-
# AUTO-EXPORT ALL NON-PRIVATE NAMES
|
|
63
|
-
# ============================================================
|
|
64
|
-
__all__ = [name for name in globals() if not name.startswith("_")]
|
|
65
|
-
from abstract_utilities import read_from_file,eatAll,inspect, os
|
|
66
|
-
import_tag = 'import '
|
|
67
|
-
from_tag = 'from '
|
|
68
|
-
def get_caller_path(i=None):
|
|
69
|
-
i = i or 1
|
|
70
|
-
frame = inspect.stack()[i]
|
|
71
|
-
return os.path.abspath(frame.filename)
|
|
72
|
-
def make_list(obj:any) -> list:
|
|
73
|
-
"""
|
|
74
|
-
Converts the input object to a list. If the object is already a list, it is returned as is.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
obj: The object to convert.
|
|
78
|
-
|
|
79
|
-
Returns:
|
|
80
|
-
list: The object as a list.
|
|
81
|
-
"""
|
|
82
|
-
if isinstance(obj,str):
|
|
83
|
-
if ',' in obj:
|
|
84
|
-
obj = obj.split(',')
|
|
85
|
-
if isinstance(obj,set) or isinstance(obj,tuple):
|
|
86
|
-
return list(obj)
|
|
87
|
-
if isinstance(obj, list):
|
|
88
|
-
return obj
|
|
89
|
-
return [obj]
|
|
90
|
-
def getAlphas(lower=True,capitalize=False,listObj=False):
|
|
91
|
-
obj = ''
|
|
92
|
-
alphas = 'abcdefghijklmoprstuvwxyz'
|
|
93
|
-
if lower:
|
|
94
|
-
obj+=alphas
|
|
95
|
-
if capitalize:
|
|
96
|
-
obj+=alphas.upper()
|
|
97
|
-
if listObj:
|
|
98
|
-
obj = list(obj)
|
|
99
|
-
return obj
|
|
100
|
-
def getInts(string=False,listObj=False):
|
|
101
|
-
obj=12345678909
|
|
102
|
-
if string:
|
|
103
|
-
obj = str(obj)
|
|
104
|
-
if listObj:
|
|
105
|
-
obj = list(obj)
|
|
106
|
-
return obj
|
|
107
|
-
def get_alpha_ints(ints=True,alpha=True,lower=True,capitalize=True,string=True,listObj=True):
|
|
108
|
-
objs = [] if listObj else ""
|
|
109
|
-
if ints:
|
|
110
|
-
objs+=getInts(string=string,listObj=listObj)
|
|
111
|
-
if alpha:
|
|
112
|
-
objs+=getAlphas(lower=lower,capitalize=capitalize,listObj=listObj)
|
|
113
|
-
return objs
|
|
114
|
-
def eatElse(
|
|
115
|
-
stringObj,
|
|
116
|
-
chars=None,
|
|
117
|
-
ints=True,
|
|
118
|
-
alpha=True,
|
|
119
|
-
lower=True,
|
|
120
|
-
capitalize=True,
|
|
121
|
-
string=True,
|
|
122
|
-
listObj=True
|
|
123
|
-
):
|
|
124
|
-
alpha_ints = get_alpha_ints(
|
|
125
|
-
ints=True,
|
|
126
|
-
alpha=True,
|
|
127
|
-
lower=True,
|
|
128
|
-
capitalize=True,
|
|
129
|
-
string=True,
|
|
130
|
-
listObj=True
|
|
131
|
-
)
|
|
132
|
-
chars = make_list(chars or [])+alpha_ints
|
|
133
|
-
|
|
134
|
-
while True:
|
|
135
|
-
if stringObj:
|
|
136
|
-
str_0 = stringObj[0] not in chars
|
|
137
|
-
str_1 = stringObj[-1] not in chars
|
|
138
|
-
str_eat = str_0 or str_1
|
|
139
|
-
if not str_eat:
|
|
140
|
-
return stringObj
|
|
141
|
-
if stringObj and str_0:
|
|
142
|
-
stringObj = stringObj[1:] if len(stringObj) !=1 else ""
|
|
143
|
-
if stringObj and str_1:
|
|
144
|
-
stringObj = stringObj[:-1] if len(stringObj) !=1 else ""
|
|
145
|
-
else:
|
|
146
|
-
return stringObj
|
|
147
|
-
def clean_line(line):
|
|
148
|
-
return eatAll(line,[' ','','\t','\n'])
|
|
149
|
-
def is_line_import(line):
|
|
150
|
-
if line and (line.startswith(from_tag) or line.startswith(import_tag)):
|
|
151
|
-
return True
|
|
152
|
-
return False
|
|
153
|
-
def is_line_group_import(line):
|
|
154
|
-
if line and (line.startswith(from_tag) and import_tag in line):
|
|
155
|
-
return True
|
|
156
|
-
return False
|
|
157
|
-
def get_import_pkg(line):
|
|
158
|
-
if is_line_group_import(line):
|
|
159
|
-
|
|
160
|
-
return clean_line(line.split(from_tag)[1].split(import_tag)[0])
|
|
161
|
-
def get_imports_from_import_pkg(line):
|
|
162
|
-
if is_line_group_import(line):
|
|
163
|
-
return get_cleaned_import_list(line,commaClean=True)
|
|
164
|
-
def add_imports_to_import_pkg_js(import_pkg,imports,import_pkg_js=None):
|
|
165
|
-
import_pkg_js = import_pkg_js or {}
|
|
166
|
-
imports = clean_imports(imports)
|
|
167
|
-
if import_pkg not in import_pkg_js:
|
|
168
|
-
i = len(import_pkg_js["nulines"])
|
|
169
|
-
import_pkg_js[import_pkg]={"imports":imports,"line":i}
|
|
170
|
-
import_line = f"from {import_pkg} import "
|
|
171
|
-
if import_pkg == "import":
|
|
172
|
-
import_line = import_tag
|
|
173
|
-
import_pkg_js["nulines"].append(import_line)
|
|
174
|
-
else:
|
|
175
|
-
import_pkg_js[import_pkg]["imports"]+=imports
|
|
176
|
-
return import_pkg_js
|
|
177
|
-
def update_import_pkg_js(line,import_pkg_js=None):
|
|
178
|
-
import_pkg_js = import_pkg_js or {}
|
|
179
|
-
if is_line_group_import(line):
|
|
180
|
-
import_pkg = get_import_pkg(line)
|
|
181
|
-
imports = get_imports_from_import_pkg(line)
|
|
182
|
-
import_pkg_js = add_imports_to_import_pkg_js(import_pkg,imports,import_pkg_js=import_pkg_js)
|
|
183
|
-
else:
|
|
184
|
-
if len(import_pkg_js["nulines"]) >0 and line == '' and is_line_import(import_pkg_js["nulines"][-1]):
|
|
185
|
-
pass
|
|
186
|
-
else:
|
|
187
|
-
import_pkg_js["nulines"].append(line)
|
|
188
|
-
return import_pkg_js
|
|
189
|
-
def is_from_line_group(line):
|
|
190
|
-
if line and line.startswith(from_tag) and import_tag in line and '(' in line:
|
|
191
|
-
import_spl = line.split(import_tag)[-1]
|
|
192
|
-
import_spl_clean = clean_line(line)
|
|
193
|
-
if not import_spl_clean.endswith(')'):
|
|
194
|
-
return True
|
|
195
|
-
return False
|
|
196
|
-
def clean_imports(imports,commaClean=True):
|
|
197
|
-
chars=["*"]
|
|
198
|
-
if not commaClean:
|
|
199
|
-
chars.append(',')
|
|
200
|
-
if isinstance(imports,str):
|
|
201
|
-
imports = imports.split(',')
|
|
202
|
-
return [eatElse(imp,chars=chars) for imp in imports if imp]
|
|
203
|
-
def get_cleaned_import_list(line,commaClean=True):
|
|
204
|
-
cleaned_import_list=[]
|
|
205
|
-
if import_tag in line:
|
|
206
|
-
imports = line.split(import_tag)[1]
|
|
207
|
-
cleaned_import_list+=clean_imports(imports,commaClean=commaClean)
|
|
208
|
-
return cleaned_import_list
|
|
209
|
-
def combine_lone_imports(text=None,file_path=None,write=False):
|
|
210
|
-
text = text or ''
|
|
211
|
-
imports_js = {}
|
|
212
|
-
if file_path and os.path.isfile(file_path):
|
|
213
|
-
text+=read_from_file(file_path)
|
|
214
|
-
lines = text.split('\n')
|
|
215
|
-
cleaned_import_list=[]
|
|
216
|
-
nu_lines = []
|
|
217
|
-
j=None
|
|
218
|
-
is_from_group = False
|
|
219
|
-
import_pkg_js={"nulines":[]}
|
|
220
|
-
for line in lines:
|
|
221
|
-
if line.startswith(import_tag) and ' from ' not in line:
|
|
222
|
-
cleaned_import_list = get_cleaned_import_list(line)
|
|
223
|
-
import_pkg_js = add_imports_to_import_pkg_js("import",cleaned_import_list,import_pkg_js=import_pkg_js)
|
|
224
|
-
else:
|
|
225
|
-
if is_from_group:
|
|
226
|
-
import_pkg=is_from_group
|
|
227
|
-
line = clean_line(line)
|
|
228
|
-
if line.endswith(')'):
|
|
229
|
-
is_from_group=False
|
|
230
|
-
line=line[:-1]
|
|
231
|
-
imports_from_import_pkg = clean_imports(line)
|
|
232
|
-
import_pkg_js = add_imports_to_import_pkg_js(import_pkg,imports_from_import_pkg,import_pkg_js=import_pkg_js)
|
|
233
|
-
|
|
234
|
-
else:
|
|
235
|
-
import_pkg_js=update_import_pkg_js(line,import_pkg_js=import_pkg_js)
|
|
236
|
-
if is_from_line_group(line) and is_from_group == False:
|
|
237
|
-
|
|
238
|
-
is_from_group=get_import_pkg(line)
|
|
239
|
-
nu_lines = import_pkg_js["nulines"]
|
|
240
|
-
for pkg,values in import_pkg_js.items():
|
|
241
|
-
comments = []
|
|
242
|
-
if pkg != "nulines":
|
|
243
|
-
line = values.get('line')
|
|
244
|
-
imports = values.get('imports')
|
|
245
|
-
for i,imp in enumerate(imports):
|
|
246
|
-
if '#' in imp:
|
|
247
|
-
imp_spl = imp.split('#')
|
|
248
|
-
comments.append(imp_spl[-1])
|
|
249
|
-
imports[i] = clean_line(imp_spl[0])
|
|
250
|
-
imports = list(set(imports))
|
|
251
|
-
if '*' in imports:
|
|
252
|
-
imports="*"
|
|
253
|
-
else:
|
|
254
|
-
imports=','.join(imports)
|
|
255
|
-
if comments:
|
|
256
|
-
comments=','.join(comments)
|
|
257
|
-
imports+=f" #{comments}"
|
|
258
|
-
|
|
259
|
-
nu_lines[line] += imports
|
|
260
|
-
contents = '\n'.join(nu_lines)
|
|
261
|
-
if file_path and write:
|
|
262
|
-
write_to_file(contents=contents,file_path=file_path)
|
|
263
|
-
return contents
|
|
264
|
-
abs_path = get_caller_path()
|
|
265
|
-
nu_contents = combine_lone_imports(file_path=abs_path)
|
|
266
|
-
input(nu_contents)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/class_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/doit.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/dynimport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/error_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/global_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/hash_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/json_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/list_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/log_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/math_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/parse_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/path_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/safe_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/string_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/tetsts.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/thread_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/time_utils.py
RENAMED
|
File without changes
|
{abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.470}/src/abstract_utilities/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|