osbot-utils 1.28.0__py3-none-any.whl → 1.29.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osbot_utils/helpers/Zip_Bytes.py +34 -8
- osbot_utils/testing/Temp_Folder.py +7 -0
- osbot_utils/utils/Files.py +1 -1
- osbot_utils/utils/Regex.py +25 -0
- osbot_utils/utils/Zip.py +4 -1
- osbot_utils/version +1 -1
- {osbot_utils-1.28.0.dist-info → osbot_utils-1.29.0.dist-info}/METADATA +2 -2
- {osbot_utils-1.28.0.dist-info → osbot_utils-1.29.0.dist-info}/RECORD +10 -9
- {osbot_utils-1.28.0.dist-info → osbot_utils-1.29.0.dist-info}/LICENSE +0 -0
- {osbot_utils-1.28.0.dist-info → osbot_utils-1.29.0.dist-info}/WHEEL +0 -0
osbot_utils/helpers/Zip_Bytes.py
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
from osbot_utils.base_classes.Type_Safe import Type_Safe
|
2
2
|
from osbot_utils.utils.Dev import pprint
|
3
3
|
from osbot_utils.utils.Files import files_list, file_create_from_bytes, temp_file, parent_folder, parent_folder_create
|
4
|
+
from osbot_utils.utils.Regex import list__match_regex, list__match_regexes
|
4
5
|
from osbot_utils.utils.Zip import zip_bytes_empty, zip_bytes__files, zip_bytes__add_file, zip_bytes__add_files, \
|
5
6
|
zip_bytes__replace_files, zip_bytes__replace_file, zip_bytes__file_list, zip_bytes__file, \
|
6
|
-
zip_bytes__add_file__from_disk, zip_bytes__add_files__from_disk, zip_files, zip_file__files
|
7
|
+
zip_bytes__add_file__from_disk, zip_bytes__add_files__from_disk, zip_files, zip_file__files, zip_bytes__remove_files
|
7
8
|
|
8
9
|
|
9
10
|
class Zip_Bytes(Type_Safe):
|
10
|
-
zip_bytes : bytes
|
11
|
+
zip_bytes : bytes = None
|
11
12
|
|
12
|
-
def
|
13
|
+
def __init__(self):
|
14
|
+
super().__init__()
|
13
15
|
self.zip_bytes = zip_bytes_empty()
|
16
|
+
|
17
|
+
def __enter__(self):
|
14
18
|
return self
|
15
19
|
|
16
20
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
@@ -20,7 +24,9 @@ class Zip_Bytes(Type_Safe):
|
|
20
24
|
self.zip_bytes = zip_bytes__add_file(self.zip_bytes, file_path, file_contents)
|
21
25
|
return self
|
22
26
|
|
23
|
-
def add_file__from_disk(self,
|
27
|
+
def add_file__from_disk(self, file_to_add, base_path=None):
|
28
|
+
if base_path is None:
|
29
|
+
base_path = parent_folder(file_to_add)
|
24
30
|
self.zip_bytes = zip_bytes__add_file__from_disk(self.zip_bytes, base_path, file_to_add)
|
25
31
|
return self
|
26
32
|
|
@@ -28,14 +34,22 @@ class Zip_Bytes(Type_Safe):
|
|
28
34
|
self.zip_bytes = zip_bytes__add_files(self.zip_bytes, files_to_add)
|
29
35
|
return self
|
30
36
|
|
31
|
-
def add_files__from_disk(self, base_path, files_to_add):
|
32
|
-
self.zip_bytes = zip_bytes__add_files__from_disk(self.zip_bytes, base_path, files_to_add)
|
37
|
+
def add_files__from_disk(self, base_path, files_to_add, path_prefix=None):
|
38
|
+
self.zip_bytes = zip_bytes__add_files__from_disk(self.zip_bytes, base_path, files_to_add, path_prefix=path_prefix)
|
33
39
|
return self
|
34
40
|
|
35
|
-
def add_folder__from_disk(self,
|
36
|
-
|
41
|
+
def add_folder__from_disk(self, folder_to_add, *patterns):
|
42
|
+
base_path = folder_to_add
|
43
|
+
all_files_in_folder = files_list(folder_to_add)
|
44
|
+
files_to_add = list__match_regexes(all_files_in_folder, *patterns)
|
37
45
|
return self.add_files__from_disk(base_path, files_to_add)
|
38
46
|
|
47
|
+
def add_folder__from_disk__with_prefix(self, folder_to_add, path_prefix, *patterns):
|
48
|
+
base_path = folder_to_add
|
49
|
+
all_files_in_folder = files_list(folder_to_add)
|
50
|
+
files_to_add = list__match_regexes(all_files_in_folder, *patterns)
|
51
|
+
return self.add_files__from_disk(base_path, files_to_add, path_prefix=path_prefix)
|
52
|
+
|
39
53
|
def add_from_zip_file(self, path_zip_file):
|
40
54
|
files_to_add = zip_file__files(path_zip_file)
|
41
55
|
self.add_files(files_to_add)
|
@@ -47,15 +61,27 @@ class Zip_Bytes(Type_Safe):
|
|
47
61
|
def file(self, file_path):
|
48
62
|
return zip_bytes__file(self.zip_bytes, file_path)
|
49
63
|
|
64
|
+
def file_paths(self):
|
65
|
+
return self.files_list()
|
66
|
+
|
50
67
|
def files(self):
|
51
68
|
return zip_bytes__files(self.zip_bytes)
|
52
69
|
|
53
70
|
def files_list(self):
|
54
71
|
return zip_bytes__file_list(self.zip_bytes)
|
55
72
|
|
73
|
+
def list(self):
|
74
|
+
return self.files_list()
|
75
|
+
|
56
76
|
def print_files_list(self):
|
57
77
|
pprint(self.files_list())
|
58
78
|
return self
|
79
|
+
|
80
|
+
def remove_files(self, *patterns):
|
81
|
+
files_to_remove = list__match_regexes(self.files_list(), *patterns)
|
82
|
+
self.zip_bytes = zip_bytes__remove_files(self.zip_bytes, files_to_remove)
|
83
|
+
return self
|
84
|
+
|
59
85
|
def replace_files(self, files_to_replace):
|
60
86
|
self.zip_bytes = zip_bytes__replace_files(self.zip_bytes, files_to_replace)
|
61
87
|
return self
|
@@ -96,6 +96,13 @@ class Temp_Folder:
|
|
96
96
|
file_path = path_combine(self.full_path, target_file)
|
97
97
|
return file_contents(file_path)
|
98
98
|
|
99
|
+
def files_contents(self):
|
100
|
+
result = {}
|
101
|
+
for file_path in self.files():
|
102
|
+
full_path = path_combine(self.full_path, file_path)
|
103
|
+
result[file_path] = file_contents(full_path)
|
104
|
+
return result
|
105
|
+
|
99
106
|
def files(self, show_parent_folder=False, include_folders=False):
|
100
107
|
all_files = files_recursive(self.path(), include_folders=include_folders)
|
101
108
|
if show_parent_folder:
|
osbot_utils/utils/Files.py
CHANGED
@@ -81,7 +81,7 @@ class Files:
|
|
81
81
|
return glob.glob(path_pattern, recursive=recursive)
|
82
82
|
|
83
83
|
@staticmethod
|
84
|
-
def files(path, pattern= '
|
84
|
+
def files(path, pattern= '*', only_files=True):
|
85
85
|
result = []
|
86
86
|
for file in Path(path).rglob(pattern):
|
87
87
|
if only_files and is_not_file(file):
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import re
|
2
|
+
|
3
|
+
from osbot_utils.utils.Status import status_error
|
4
|
+
|
5
|
+
|
6
|
+
def list__match_regex(target, pattern):
|
7
|
+
return list__match_regexes(target, [pattern])
|
8
|
+
|
9
|
+
def list__match_regexes(target, *patterns):
|
10
|
+
if len (patterns) == 0:
|
11
|
+
return target
|
12
|
+
compiled_patterns = []
|
13
|
+
for pattern in patterns:
|
14
|
+
try:
|
15
|
+
compiled_patterns.append(re.compile(pattern)) # todo: find better way to handle regex errors
|
16
|
+
except Exception as error:
|
17
|
+
return status_error(message='Error compiling pattern: {pattern}', error=error)
|
18
|
+
matched_files = []
|
19
|
+
if target and type(target) is list:
|
20
|
+
for file in target:
|
21
|
+
for compiled_pattern in compiled_patterns:
|
22
|
+
if compiled_pattern.match(file):
|
23
|
+
matched_files.append(file)
|
24
|
+
break
|
25
|
+
return matched_files
|
osbot_utils/utils/Zip.py
CHANGED
@@ -52,14 +52,17 @@ def zip_bytes__add_file(zip_bytes, zip_file_path, file_contents):
|
|
52
52
|
def zip_bytes__add_file__from_disk(zip_bytes, base_path, file_to_add):
|
53
53
|
return zip_bytes__add_files__from_disk(zip_bytes, base_path, files_to_add=[file_to_add])
|
54
54
|
|
55
|
-
def zip_bytes__add_files__from_disk(zip_bytes, base_path, files_to_add, replace_files=True):
|
55
|
+
def zip_bytes__add_files__from_disk(zip_bytes, base_path, files_to_add, replace_files=True, path_prefix=None):
|
56
56
|
zip_files_to_add = {}
|
57
57
|
if base_path[:-1] != '/':
|
58
58
|
base_path += "/"
|
59
|
+
|
59
60
|
for file_to_add in files_to_add:
|
60
61
|
if file_exists(file_to_add):
|
61
62
|
file_contents = file_contents_as_bytes(file_to_add)
|
62
63
|
zip_file_path = file_to_add.replace(base_path, '')
|
64
|
+
if path_prefix:
|
65
|
+
zip_file_path = path_prefix + zip_file_path
|
63
66
|
zip_files_to_add[zip_file_path] = file_contents
|
64
67
|
|
65
68
|
if replace_files:
|
osbot_utils/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
v1.
|
1
|
+
v1.29.0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.29.0
|
4
4
|
Summary: OWASP Security Bot - Utils
|
5
5
|
Home-page: https://github.com/owasp-sbot/OSBot-Utils
|
6
6
|
License: MIT
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
22
22
|
|
23
23
|
Powerful Python util methods and classes that simplify common apis and tasks.
|
24
24
|
|
25
|
-

|
26
26
|
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
27
27
|
|
28
28
|
|
@@ -63,7 +63,7 @@ osbot_utils/helpers/Print_Table.py,sha256=LEXbyqGg_6WSraI4cob4bNNSu18ddqvALp1zGK
|
|
63
63
|
osbot_utils/helpers/Python_Audit.py,sha256=shpZlluJwqJBAlad6xN01FkgC1TsQ48RLvR5ZjmrKa4,1539
|
64
64
|
osbot_utils/helpers/Random_Seed.py,sha256=14btja8LDN9cMGWaz4fCNcMRU_eyx49gas-_PQvHgy4,634
|
65
65
|
osbot_utils/helpers/Type_Registry.py,sha256=Ajk3SyMSKDi2g9SJYUtTgg7PZkAgydaHcpbGuEN3S94,311
|
66
|
-
osbot_utils/helpers/Zip_Bytes.py,sha256=
|
66
|
+
osbot_utils/helpers/Zip_Bytes.py,sha256=GQAwNEoMXdG7CU1RDhIJ51vkgfbJZnUxjlMUmFGHL1M,3937
|
67
67
|
osbot_utils/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
68
|
osbot_utils/helpers/ast/Ast.py,sha256=lcPQOSxXI6zgmMnIVF9WM6ISqViWX-sq4d_UC0CDG8s,1155
|
69
69
|
osbot_utils/helpers/ast/Ast_Base.py,sha256=5rHMupBlN_n6lOC31UnSW_lWqxqxaE31v0gn-t32OgQ,3708
|
@@ -252,7 +252,7 @@ osbot_utils/testing/Stderr.py,sha256=wi1gfjpsxnBK3aOl2jzCTWI-0En1HtPgEin97148_MQ
|
|
252
252
|
osbot_utils/testing/Stdout.py,sha256=XQ9OlOW1aHXY1TiNu8O5b75RoDnoaX5RyMHml3OjlKw,459
|
253
253
|
osbot_utils/testing/Temp_Env_Vars.py,sha256=oFuaegBlaV0aySkPe1Nzf-mdIKN03oTUKNfKijGz__M,751
|
254
254
|
osbot_utils/testing/Temp_File.py,sha256=yZBL9MmcNU4PCQ4xlF4rSss4GylKoX3T_AJF-BlQhdI,1693
|
255
|
-
osbot_utils/testing/Temp_Folder.py,sha256=
|
255
|
+
osbot_utils/testing/Temp_Folder.py,sha256=Dbcohr2ciex6w-kB79R41Nuoa0pgpDbKtPGnlMmJ73k,5194
|
256
256
|
osbot_utils/testing/Temp_Sys_Path.py,sha256=gOMD-7dQYQlejoDYUqsrmuZQ9DLC07ymPZB3zYuNmG4,256
|
257
257
|
osbot_utils/testing/Temp_Web_Server.py,sha256=0A-gZsd0_3wRj2YuBEOWyV2rhT6dcS2BlArngPXGTtk,3186
|
258
258
|
osbot_utils/testing/Temp_Zip.py,sha256=gppbJchk4tw_bu-7Vt6iJS9mGxeCvNNMMDzeVKHqRv8,1489
|
@@ -266,7 +266,7 @@ osbot_utils/utils/Csv.py,sha256=oHLVpjRJqrLMz9lubMCNEoThXWju5rNTprcwHc1zq2c,1012
|
|
266
266
|
osbot_utils/utils/Dev.py,sha256=HibpQutYy_iG8gGV8g1GztxNN4l29E4Bi7UZaVL6-L8,1203
|
267
267
|
osbot_utils/utils/Env.py,sha256=uYLhqVXqqgfh03Zmf9Vdy9zFdFf0rasW6lteh_VM1xQ,5078
|
268
268
|
osbot_utils/utils/Exceptions.py,sha256=KyOUHkXQ_6jDTq04Xm261dbEZuRidtsM4dgzNwSG8-8,389
|
269
|
-
osbot_utils/utils/Files.py,sha256=
|
269
|
+
osbot_utils/utils/Files.py,sha256=bZFvjyC4TAmFH6RSp3Xvj_xBxfybCT2cE7x2qNTQmeE,20834
|
270
270
|
osbot_utils/utils/Functions.py,sha256=0E6alPJ0fJpBiJgFOWooCOi265wSRyxxXAJ5CELBnso,3498
|
271
271
|
osbot_utils/utils/Http.py,sha256=Z8V149M2HDrKBoXkDD5EXgqTGx6vQoUqXugXK__wcuw,4572
|
272
272
|
osbot_utils/utils/Int.py,sha256=PmlUdU4lSwf4gJdmTVdqclulkEp7KPCVUDO6AcISMF4,116
|
@@ -278,14 +278,15 @@ osbot_utils/utils/Objects.py,sha256=WFH3oeXR1CU03oyzXfcIlktcoXQuKw9cIJn8xTs02AE,
|
|
278
278
|
osbot_utils/utils/Png.py,sha256=V1juGp6wkpPigMJ8HcxrPDIP4bSwu51oNkLI8YqP76Y,1172
|
279
279
|
osbot_utils/utils/Process.py,sha256=lr3CTiEkN3EiBx3ZmzYmTKlQoPdkgZBRjPulMxG-zdo,2357
|
280
280
|
osbot_utils/utils/Python_Logger.py,sha256=tx8N6wRKL3RDHboDRKZn8SirSJdSAE9cACyJkxrThZ8,12792
|
281
|
+
osbot_utils/utils/Regex.py,sha256=0ubgp8HKsS3PNe2H6XlzMIcUuV7jhga3VkQVDNOJWuA,866
|
281
282
|
osbot_utils/utils/Status.py,sha256=Yq4s0TelXgn0i2QjCP9V8mP30GabXp_UL-jjM6Iwiw4,4305
|
282
283
|
osbot_utils/utils/Str.py,sha256=kxdY8ROX4FdJtCaMTfOc8fK_xcDICprNkefHu2MMNU4,2585
|
283
284
|
osbot_utils/utils/Toml.py,sha256=dqiegndCJF7V1YT1Tc-b0-Bl6QWyL5q30urmQwMXfMQ,1402
|
284
285
|
osbot_utils/utils/Version.py,sha256=Ww6ChwTxqp1QAcxOnztkTicShlcx6fbNsWX5xausHrg,422
|
285
|
-
osbot_utils/utils/Zip.py,sha256=
|
286
|
+
osbot_utils/utils/Zip.py,sha256=t9txUxJzLBEHot6WJwF0iTTUQ1Gf_V2pVwsWzAqw_NU,12163
|
286
287
|
osbot_utils/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
287
|
-
osbot_utils/version,sha256=
|
288
|
-
osbot_utils-1.
|
289
|
-
osbot_utils-1.
|
290
|
-
osbot_utils-1.
|
291
|
-
osbot_utils-1.
|
288
|
+
osbot_utils/version,sha256=Cnimb4t_Vj3piSoNKuKNxuAK7SFZPFgzcFqpUzq2s2A,8
|
289
|
+
osbot_utils-1.29.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
290
|
+
osbot_utils-1.29.0.dist-info/METADATA,sha256=CBXxh-9F_qSZWcp7WC1L7HM7_DtuHivZ5rp5STqAS9U,1266
|
291
|
+
osbot_utils-1.29.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
292
|
+
osbot_utils-1.29.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|