abstract-utilities 0.2.2.468__tar.gz → 0.2.2.469__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.

Files changed (98) hide show
  1. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/PKG-INFO +1 -1
  2. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/setup.py +1 -1
  3. abstract_utilities-0.2.2.469/src/abstract_utilities/file_utils/imports/imports.py +65 -0
  4. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities.egg-info/PKG-INFO +1 -1
  5. abstract_utilities-0.2.2.468/src/abstract_utilities/file_utils/imports/imports.py +0 -266
  6. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/README.md +0 -0
  7. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/pyproject.toml +0 -0
  8. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/setup.cfg +0 -0
  9. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/__init__.py +0 -0
  10. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/abstract_classes.py +0 -0
  11. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/class_utils.py +0 -0
  12. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/__init__.py +0 -0
  13. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/cmd_utils.py +0 -0
  14. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/imports/__init__.py +0 -0
  15. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/imports/imports.py +0 -0
  16. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/pexpect_utils.py +0 -0
  17. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/cmd_utils/user_utils.py +0 -0
  18. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/collator_utils.py +0 -0
  19. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/compare_utils/__init__.py +0 -0
  20. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/compare_utils/best_match.py +0 -0
  21. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/compare_utils/compare_utils.py +0 -0
  22. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/compare_utils/find_value.py +0 -0
  23. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/doit.py +0 -0
  24. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/dynimport.py +0 -0
  25. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/__init__.py +0 -0
  26. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/abstractEnv.py +0 -0
  27. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/envy_it.py +0 -0
  28. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/imports/__init__.py +0 -0
  29. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/imports/imports.py +0 -0
  30. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/env_utils/imports/utils.py +0 -0
  31. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/error_utils.py +0 -0
  32. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/__init__.py +0 -0
  33. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/__init__.py +0 -0
  34. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/file_filters.py +0 -0
  35. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/file_reader.py +0 -0
  36. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/file_utils.py +0 -0
  37. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/filter_params.py +0 -0
  38. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/find_collect.py +0 -0
  39. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/imports/__init__.py +0 -0
  40. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/imports/constants.py +0 -0
  41. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/imports/file_functions.py +0 -0
  42. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/imports/imports.py +0 -0
  43. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/imports/module_imports.py +0 -0
  44. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/map_utils.py +0 -0
  45. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/pdf_utils.py +0 -0
  46. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/file_utils/type_checks.py +0 -0
  47. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/__init__.py +0 -0
  48. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/classes.py +0 -0
  49. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/clean_imps.py +0 -0
  50. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/constants.py +0 -0
  51. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/file_functions.py +0 -0
  52. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/imports/module_imports.py +0 -0
  53. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/file_utils/req.py +0 -0
  54. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/global_utils.py +0 -0
  55. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/hash_utils.py +0 -0
  56. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/history_utils.py +0 -0
  57. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/json_utils.py +0 -0
  58. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/list_utils.py +0 -0
  59. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/log_utils.py +0 -0
  60. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/math_utils.py +0 -0
  61. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/parse_utils.py +0 -0
  62. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/path_utils.py +0 -0
  63. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/read_write_utils.py +0 -0
  64. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/__init__.py +0 -0
  65. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/file_reader2.py +0 -0
  66. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/file_readers.py +0 -0
  67. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/imports/__init__.py +0 -0
  68. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/imports/imports.py +0 -0
  69. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_reader/sadfsad.py +0 -0
  70. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/__init__.py +0 -0
  71. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/__init__.py +0 -0
  72. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/clean_imports.py +0 -0
  73. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/dot_utils.py +0 -0
  74. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/function_utils.py +0 -0
  75. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/import_utils.py +0 -0
  76. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/impot_functions.py +0 -0
  77. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/safe_import_utils.py +0 -0
  78. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/sysroot_utils.py +0 -0
  79. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/import_utils/utils.py +0 -0
  80. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/imports.py +0 -0
  81. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/robust_readers/initFuncGen.py +0 -0
  82. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/safe_utils.py +0 -0
  83. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/ssh_utils/__init__.py +0 -0
  84. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/ssh_utils/classes.py +0 -0
  85. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/ssh_utils/imports.py +0 -0
  86. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/ssh_utils/pexpect_utils.py +0 -0
  87. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/ssh_utils/utils.py +0 -0
  88. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/string_clean.py +0 -0
  89. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/string_utils.py +0 -0
  90. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/tetsts.py +0 -0
  91. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/thread_utils.py +0 -0
  92. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/time_utils.py +0 -0
  93. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/type_utils.py +0 -0
  94. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities/utils.py +0 -0
  95. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities.egg-info/SOURCES.txt +0 -0
  96. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities.egg-info/dependency_links.txt +0 -0
  97. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/src/abstract_utilities.egg-info/requires.txt +0 -0
  98. {abstract_utilities-0.2.2.468 → abstract_utilities-0.2.2.469}/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.468
3
+ Version: 0.2.2.469
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.468',
7
+ version='0.2.2.469',
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstract_utilities
3
- Version: 0.2.2.468
3
+ Version: 0.2.2.469
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)