osbot-utils 2.33.0__py3-none-any.whl → 2.35.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/Local_Cache.py +5 -7
- osbot_utils/helpers/Local_Caches.py +5 -5
- osbot_utils/helpers/llms/__init__.py +0 -0
- osbot_utils/helpers/llms/actions/LLM_Request__Execute.py +31 -0
- osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py +213 -0
- osbot_utils/helpers/llms/actions/__init__.py +0 -0
- osbot_utils/helpers/llms/builders/LLM_Request__Builder.py +41 -0
- osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py +54 -0
- osbot_utils/helpers/llms/builders/LLM_Request__Factory.py +95 -0
- osbot_utils/helpers/llms/builders/__init__.py +0 -0
- osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py +83 -0
- osbot_utils/helpers/llms/cache/LLM_Request__Cache.py +112 -0
- osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py +237 -0
- osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py +85 -0
- osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py +64 -0
- osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py +72 -0
- osbot_utils/helpers/llms/cache/__init__.py +0 -0
- osbot_utils/helpers/llms/platforms/__init__.py +0 -0
- osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py +55 -0
- osbot_utils/helpers/llms/platforms/open_ai/__init__.py +0 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py +9 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py +7 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py +14 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py +8 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py +6 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py +9 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py +9 -0
- osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py +13 -0
- osbot_utils/helpers/llms/schemas/__init__.py +0 -0
- osbot_utils/helpers/safe_str/Safe_Str.py +50 -0
- osbot_utils/helpers/safe_str/Safe_Str__File__Name.py +8 -0
- osbot_utils/helpers/safe_str/Safe_Str__File__Path.py +12 -0
- osbot_utils/helpers/safe_str/Safe_Str__Hash.py +14 -0
- osbot_utils/helpers/safe_str/Safe_Str__Text.py +9 -0
- osbot_utils/helpers/safe_str/Safe_Str__Text__Dangerous.py +9 -0
- osbot_utils/helpers/safe_str/__init__.py +0 -0
- osbot_utils/helpers/sqlite/Sqlite__Cursor.py +4 -6
- osbot_utils/helpers/sqlite/Sqlite__Database.py +1 -1
- osbot_utils/helpers/sqlite/Sqlite__Field.py +3 -8
- osbot_utils/helpers/sqlite/Sqlite__Table.py +1 -3
- osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +6 -2
- osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +2 -2
- osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +5 -5
- osbot_utils/helpers/ssh/SSH__Execute.py +0 -1
- osbot_utils/helpers/ssh/SSH__Health_Check.py +4 -5
- osbot_utils/testing/performance/Performance_Measure__Session.py +1 -1
- osbot_utils/type_safe/Type_Safe__Base.py +38 -3
- osbot_utils/type_safe/Type_Safe__Dict.py +2 -8
- osbot_utils/type_safe/Type_Safe__List.py +8 -4
- osbot_utils/type_safe/Type_Safe__Method.py +46 -5
- osbot_utils/type_safe/Type_Safe__Tuple.py +1 -1
- osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +3 -2
- osbot_utils/type_safe/shared/Type_Safe__Validation.py +6 -4
- osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +0 -2
- osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +16 -0
- osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +57 -1
- osbot_utils/utils/Files.py +8 -8
- osbot_utils/utils/Objects.py +0 -1
- osbot_utils/version +1 -1
- {osbot_utils-2.33.0.dist-info → osbot_utils-2.35.0.dist-info}/METADATA +2 -2
- {osbot_utils-2.33.0.dist-info → osbot_utils-2.35.0.dist-info}/RECORD +63 -30
- osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -11
- {osbot_utils-2.33.0.dist-info → osbot_utils-2.35.0.dist-info}/LICENSE +0 -0
- {osbot_utils-2.33.0.dist-info → osbot_utils-2.35.0.dist-info}/WHEEL +0 -0
@@ -3,6 +3,7 @@ import types
|
|
3
3
|
from decimal import Decimal
|
4
4
|
from enum import EnumMeta
|
5
5
|
from osbot_utils.helpers.Obj_Id import Obj_Id
|
6
|
+
from osbot_utils.helpers.safe_str.Safe_Str__Hash import Safe_Str__Hash
|
6
7
|
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
7
8
|
from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
|
8
9
|
from osbot_utils.helpers.Random_Guid import Random_Guid
|
@@ -93,6 +94,7 @@ class Type_Safe__Step__From_Json:
|
|
93
94
|
value = enum_from_value(enum_type, value) # Try to resolve the value into the enum
|
94
95
|
|
95
96
|
# todo: refactor these special cases into a separate method to class
|
97
|
+
# in fact find a better way to handle these classes that need to be converted
|
96
98
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Decimal): # handle Decimals
|
97
99
|
value = Decimal(value)
|
98
100
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Safe_Id): # handle Safe_Id
|
@@ -105,6 +107,12 @@ class Type_Safe__Step__From_Json:
|
|
105
107
|
value = Timestamp_Now(value)
|
106
108
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Obj_Id ): # handle Obj_Id
|
107
109
|
value = Obj_Id(value)
|
110
|
+
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Safe_Str__Hash ): # handle Obj_Id
|
111
|
+
value = Safe_Str__Hash(value)
|
112
|
+
# else:
|
113
|
+
# from osbot_utils.utils.Dev import pprint
|
114
|
+
# pprint(value)
|
115
|
+
|
108
116
|
|
109
117
|
setattr(_self, key, value) # Direct assignment for primitive types and other structures
|
110
118
|
|
@@ -119,6 +127,14 @@ class Type_Safe__Step__From_Json:
|
|
119
127
|
else:
|
120
128
|
module = __import__(module_name, fromlist=[type_name])
|
121
129
|
value = getattr(module, type_name)
|
130
|
+
if isinstance(value, type) is False:
|
131
|
+
raise ValueError(f"Security alert, in deserialize_type__using_value only classes are allowed")
|
132
|
+
|
133
|
+
# todo: figure out a way to do this
|
134
|
+
# supported_types = (Type_Safe, str, int, type, dict)
|
135
|
+
# if issubclass(value, supported_types) is False:
|
136
|
+
# raise ValueError(f"Security alert, in deserialize_type__using_value only class of {supported_types} are allowed and it was {value}")
|
137
|
+
|
122
138
|
except (ValueError, ImportError, AttributeError) as e:
|
123
139
|
raise ValueError(f"Could not reconstruct type from '{value}': {str(e)}")
|
124
140
|
return value
|
@@ -1,9 +1,14 @@
|
|
1
|
+
from enum import EnumMeta
|
2
|
+
from osbot_utils.type_safe.shared.Type_Safe__Annotations import type_safe_annotations
|
3
|
+
from osbot_utils.type_safe.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value, get_args
|
4
|
+
|
5
|
+
|
1
6
|
class Type_Safe__Step__Init:
|
2
7
|
|
3
8
|
def init(self, __self ,
|
4
9
|
__class_kwargs ,
|
5
10
|
**kwargs
|
6
|
-
|
11
|
+
) -> None:
|
7
12
|
|
8
13
|
for (key, value) in __class_kwargs.items(): # assign all default values to target
|
9
14
|
if hasattr(__self, key):
|
@@ -16,9 +21,60 @@ class Type_Safe__Step__Init:
|
|
16
21
|
for (key, value) in kwargs.items(): # overwrite with values provided in ctor
|
17
22
|
if hasattr(__self, key):
|
18
23
|
if value is not None: # prevent None values from overwriting existing values, which is quite common in default constructors
|
24
|
+
value = self.convert_value_to_type_safe_objects(__self, key, value)
|
19
25
|
setattr(__self, key, value)
|
20
26
|
else:
|
21
27
|
raise ValueError(f"{__self.__class__.__name__} has no attribute '{key}' and cannot be assigned the value '{value}'. "
|
22
28
|
f"Use {__self.__class__.__name__}.__default_kwargs__() see what attributes are available")
|
23
29
|
|
30
|
+
def convert_value_to_type_safe_objects(self, __self, key, value):
|
31
|
+
annotation = type_safe_annotations.obj_attribute_annotation(__self, key)
|
32
|
+
if annotation:
|
33
|
+
if isinstance(annotation, EnumMeta) and type(value) is str:
|
34
|
+
value = annotation[value]
|
35
|
+
else:
|
36
|
+
|
37
|
+
origin = type_safe_annotations.get_origin(annotation)
|
38
|
+
# If the value is an empty container, create proper type-safe container
|
39
|
+
if ((isinstance(value, list ) and len(value) == 0) or
|
40
|
+
(isinstance(value, dict ) and len(value) == 0) or
|
41
|
+
(isinstance(value, set ) and len(value) == 0) or
|
42
|
+
(isinstance(value, tuple) and len(value) == 0)):
|
43
|
+
value = type_safe_step_default_value.default_value(__self.__class__, annotation) # Use default_value to create the proper type-safe container
|
44
|
+
# Handle non-empty list
|
45
|
+
elif origin is list and isinstance(value, list):
|
46
|
+
from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
|
47
|
+
item_type = get_args(annotation)[0]
|
48
|
+
type_safe_list = Type_Safe__List(expected_type=item_type)
|
49
|
+
for item in value:
|
50
|
+
type_safe_list.append(item)
|
51
|
+
return type_safe_list
|
52
|
+
|
53
|
+
# Handle non-empty set
|
54
|
+
elif origin is set and isinstance(value, set):
|
55
|
+
from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
|
56
|
+
item_type = get_args(annotation)[0]
|
57
|
+
type_safe_set = Type_Safe__Set(expected_type=item_type)
|
58
|
+
for item in value:
|
59
|
+
type_safe_set.add(item)
|
60
|
+
return type_safe_set
|
61
|
+
|
62
|
+
# Handle non-empty tuple
|
63
|
+
elif origin is tuple and isinstance(value, tuple):
|
64
|
+
from osbot_utils.type_safe.Type_Safe__Tuple import Type_Safe__Tuple
|
65
|
+
item_types = get_args(annotation)
|
66
|
+
return Type_Safe__Tuple(expected_types=item_types, items=value)
|
67
|
+
|
68
|
+
# Handle non-empty dict
|
69
|
+
elif origin is dict and isinstance(value, dict):
|
70
|
+
from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
|
71
|
+
key_type, value_type = get_args(annotation)
|
72
|
+
type_safe_dict = Type_Safe__Dict(expected_key_type=key_type, expected_value_type=value_type)
|
73
|
+
for k, v in value.items():
|
74
|
+
type_safe_dict[k] = v
|
75
|
+
return type_safe_dict
|
76
|
+
|
77
|
+
|
78
|
+
return value
|
79
|
+
|
24
80
|
type_safe_step_init = Type_Safe__Step__Init()
|
osbot_utils/utils/Files.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import os
|
2
|
-
from typing
|
2
|
+
from typing import Union
|
3
3
|
|
4
4
|
class Files:
|
5
5
|
@staticmethod
|
@@ -18,7 +18,7 @@ class Files:
|
|
18
18
|
@staticmethod
|
19
19
|
def contains(path, content):
|
20
20
|
text = Files.contents(path)
|
21
|
-
if
|
21
|
+
if isinstance(content, list):
|
22
22
|
for item in content:
|
23
23
|
if item not in text:
|
24
24
|
return False
|
@@ -183,7 +183,7 @@ class Files:
|
|
183
183
|
import shutil
|
184
184
|
|
185
185
|
if ignore_pattern:
|
186
|
-
if
|
186
|
+
if isinstance(ignore_pattern, str):
|
187
187
|
ignore_pattern = [ignore_pattern]
|
188
188
|
ignore = shutil.ignore_patterns(*ignore_pattern) # for example ignore_pattern = ['*.pyc','.DS_Store']
|
189
189
|
else:
|
@@ -274,7 +274,7 @@ class Files:
|
|
274
274
|
|
275
275
|
if isinstance(target, Path):
|
276
276
|
return target.is_file()
|
277
|
-
if
|
277
|
+
if isinstance(target, str):
|
278
278
|
if len(target) < 4096: # max file size in Linux (handle the cases when the file contents was used as target)
|
279
279
|
return os.path.isfile(target)
|
280
280
|
return False
|
@@ -285,7 +285,7 @@ class Files:
|
|
285
285
|
|
286
286
|
if isinstance(target, Path):
|
287
287
|
return target.is_dir()
|
288
|
-
if
|
288
|
+
if isinstance(target, str):
|
289
289
|
return os.path.isdir(target)
|
290
290
|
return False
|
291
291
|
|
@@ -391,9 +391,9 @@ class Files:
|
|
391
391
|
|
392
392
|
@staticmethod
|
393
393
|
def sub_folders(target):
|
394
|
-
if
|
394
|
+
if isinstance(target, list):
|
395
395
|
return Files.folders_sub_folders(target)
|
396
|
-
if
|
396
|
+
if isinstance(target, str):
|
397
397
|
return Files.folder_sub_folders(target)
|
398
398
|
return []
|
399
399
|
|
@@ -471,7 +471,7 @@ class Files:
|
|
471
471
|
|
472
472
|
path = path or temp_file(extension='.gz')
|
473
473
|
contents = contents or ''
|
474
|
-
if
|
474
|
+
if isinstance(contents, str):
|
475
475
|
contents = contents.encode()
|
476
476
|
with gzip.open(path, "w") as file:
|
477
477
|
file.write(contents)
|
osbot_utils/utils/Objects.py
CHANGED
osbot_utils/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
v2.
|
1
|
+
v2.35.0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.35.0
|
4
4
|
Summary: OWASP Security Bot - Utils
|
5
5
|
License: MIT
|
6
6
|
Author: Dinis Cruz
|
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
|
|
23
23
|
|
24
24
|
Powerful Python util methods and classes that simplify common apis and tasks.
|
25
25
|
|
26
|
-

|
27
27
|
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
28
28
|
|
29
29
|
|
@@ -36,8 +36,8 @@ osbot_utils/helpers/Dependency_Manager.py,sha256=79YRYnVfchewq8iSMJ5dzwW2D5u8chW
|
|
36
36
|
osbot_utils/helpers/Dict_To_Attr.py,sha256=NdhXl5mJH7-NaBk213amzc5Nfy3tJgW-N_uYIRE4hoc,208
|
37
37
|
osbot_utils/helpers/Guid.py,sha256=0Ay3TYYk2nPr-JRVRCMFxbr8OvoQomv5HjT7o5B7cos,827
|
38
38
|
osbot_utils/helpers/Hashicorp_Secrets.py,sha256=e2fWWHK6bubpAm1sw5y8X5kh2Hk5d4JyZCnUovZip5A,4232
|
39
|
-
osbot_utils/helpers/Local_Cache.py,sha256=
|
40
|
-
osbot_utils/helpers/Local_Caches.py,sha256=
|
39
|
+
osbot_utils/helpers/Local_Cache.py,sha256=67qmeVXUBhfqLUQhjFBE9Pjt5dcjpQYhqCTGQNWgVSU,3232
|
40
|
+
osbot_utils/helpers/Local_Caches.py,sha256=LUeNJX07Ccnp1SIhYvhqqQFVF6r_Ez7bWha8ssomuvY,1957
|
41
41
|
osbot_utils/helpers/Obj_Id.py,sha256=sdKlSmEUpie0kn9X4pnM0MjUr6sLu4WZLSNqsD8ynBg,926
|
42
42
|
osbot_utils/helpers/Print_Table.py,sha256=LEXbyqGg_6WSraI4cob4bNNSu18ddqvALp1zGK7bPhs,19126
|
43
43
|
osbot_utils/helpers/Python_Audit.py,sha256=shpZlluJwqJBAlad6xN01FkgC1TsQ48RLvR5ZjmrKa4,1539
|
@@ -133,7 +133,6 @@ osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py,sha256=q50s2Y6sGh3
|
|
133
133
|
osbot_utils/helpers/cache_requests/Cache__Requests__Row.py,sha256=Sb7E_zDB-LPlWI8TiPRF99BmX_RYA3cheyCCf3c3Dfo,3179
|
134
134
|
osbot_utils/helpers/cache_requests/Cache__Requests__Table.py,sha256=BW7tXM0TFYma3Db4M-58IKpx0vevLuFsH7QQeiggPaI,388
|
135
135
|
osbot_utils/helpers/cache_requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
136
|
-
osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py,sha256=xgx_oExxkcvRwQN1UCobimECIMUKGoIX5oGdCmp8Nyw,243
|
137
136
|
osbot_utils/helpers/duration/Duration.py,sha256=KvHaAB6NWa40DXQl2gC9m98gM-arVP-aYqFrmAyQQzM,2306
|
138
137
|
osbot_utils/helpers/duration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
139
138
|
osbot_utils/helpers/duration/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -190,6 +189,33 @@ osbot_utils/helpers/html/Tag__Html.py,sha256=W_QFUF27vpR109g9rpca0zoQis1wkMjGuAt
|
|
190
189
|
osbot_utils/helpers/html/Tag__Link.py,sha256=rQ-gZN8EkSv5x1S-smdjvFflwMQHACHQXiOdx0MFke8,437
|
191
190
|
osbot_utils/helpers/html/Tag__Style.py,sha256=LPPlIN7GyMvfCUlbs2eXVMUr9jS0PX5M94A5Ig_jXIs,846
|
192
191
|
osbot_utils/helpers/html/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
192
|
+
osbot_utils/helpers/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
193
|
+
osbot_utils/helpers/llms/actions/LLM_Request__Execute.py,sha256=JljneiEJ1ETlCBaH4cmd-bwIlIq_kFi2n2TD1bVGugU,1821
|
194
|
+
osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py,sha256=em9RoSZqSSo6BQBZvEKH8Qv8f8f8oubNpy0LIDsak-E,12024
|
195
|
+
osbot_utils/helpers/llms/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
196
|
+
osbot_utils/helpers/llms/builders/LLM_Request__Builder.py,sha256=FrrDTqivHXMaDifi8xDRvAbUju6a8CHnd1VleoQhp2Q,2601
|
197
|
+
osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py,sha256=7CUnNyGqyiD0-jX0pESQJichjx_0ttMmhO7OmqZWHl4,2918
|
198
|
+
osbot_utils/helpers/llms/builders/LLM_Request__Factory.py,sha256=M-c_odsTjTfWo45LzL8Zkr9gd0LLl2brcwMKoeZNOnc,6292
|
199
|
+
osbot_utils/helpers/llms/builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
200
|
+
osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py,sha256=7kDY-aaUWR4Da6lj5RPwjqTLUTGrOUYhbNfOPM30e40,4442
|
201
|
+
osbot_utils/helpers/llms/cache/LLM_Request__Cache.py,sha256=8Ayz26bteYhc4GNLpItNYlTwF4_yKvhFridDVA61fPo,6783
|
202
|
+
osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py,sha256=m4guw6yoo8Q05PQea6SJnET5xpJMwmmXhdN-kaRvX5s,15306
|
203
|
+
osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py,sha256=0ok7z2kGiK3edlgD0hwD5z2hYFZ91Viar1JgD7SNoxg,5434
|
204
|
+
osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py,sha256=xNM2xy0-2ROvhEFXa_jwqth7eApIcRTqcRUDxo0THXI,3214
|
205
|
+
osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py,sha256=j8EWuKFVMtDBxrCEi8yNdpzwvTxO6Bri2Bi4-KwO-3s,4638
|
206
|
+
osbot_utils/helpers/llms/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
207
|
+
osbot_utils/helpers/llms/platforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
208
|
+
osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py,sha256=Yyy2ZnIS6CfxXepP9pZNsOYx02d-5EnK1IFeFf8myyk,2148
|
209
|
+
osbot_utils/helpers/llms/platforms/open_ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
210
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py,sha256=12dUUSFhWRZvqEkNivqajqMPApPWhfSI7jWnHyBuxNw,717
|
211
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py,sha256=7IXCf9AflRlUeFjDSqRR9CiBWlaAa1FgMzrS292e9Po,376
|
212
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py,sha256=1D9zoDHbICpaxpAq4VTlYOF0-4Jys8Ohi5CrxTlEXQI,1260
|
213
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py,sha256=VJgWi4aK-DJmuJvfY2qZUZuLkrLlmu5lgyzxZrrp3hM,440
|
214
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py,sha256=nl-16yz4G_72ViACKE9CvGStrKxw2Gm_JcaU8wVcJXI,521
|
215
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py,sha256=T99w0cRrDPXQqPT-Nw7_14tMr4vKpUlhw74UJZL6w6w,168
|
216
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py,sha256=R62zjoUqu9sbtbFcOX7vG1t0vTaAhS_3Z9CkxESrTjI,298
|
217
|
+
osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py,sha256=ZlD3DeKeS-29n9qiMVrsnj0M4lkZWknnP-Wn8wanu6E,786
|
218
|
+
osbot_utils/helpers/llms/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
193
219
|
osbot_utils/helpers/pubsub/Event__Queue.py,sha256=bCtIdVlAuG-jvFEnz14oNhgRScEUrd8v9BqLcZleGks,5038
|
194
220
|
osbot_utils/helpers/pubsub/PubSub__Client.py,sha256=6K3l4H-Tc0DhktrxpYzLVur1uZ532pQsHWprLNRXFJE,2316
|
195
221
|
osbot_utils/helpers/pubsub/PubSub__Room.py,sha256=3drJIAVSAzXB_0Q9dXxwhYWxNaEUaMiWiXLY9Mh02DM,481
|
@@ -207,12 +233,19 @@ osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py,sha256=yOQSn4o1bIsE
|
|
207
233
|
osbot_utils/helpers/pubsub/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
208
234
|
osbot_utils/helpers/python_compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
209
235
|
osbot_utils/helpers/python_compatibility/python_3_8.py,sha256=kh846vs3ir8xD0RSARJBOL0xufnt3L_Td3K45lDfqng,161
|
236
|
+
osbot_utils/helpers/safe_str/Safe_Str.py,sha256=BKyS0hTRvP-f0uLFtT8KCE9rVQBzhWKNoSxlttEjrEE,3261
|
237
|
+
osbot_utils/helpers/safe_str/Safe_Str__File__Name.py,sha256=ncjkQ2hAhw0a3UulrCuQsA9ytrFwg5CT1XRJIGChMpY,289
|
238
|
+
osbot_utils/helpers/safe_str/Safe_Str__File__Path.py,sha256=K0yBcvH_Ncqiw7tMqjGqaNyWQh1Zs9qxZ-TR8nEIAow,550
|
239
|
+
osbot_utils/helpers/safe_str/Safe_Str__Hash.py,sha256=AE-CvX0_lYKpPfszisOanb_IYt366Mkf90UIwSZ9vxY,812
|
240
|
+
osbot_utils/helpers/safe_str/Safe_Str__Text.py,sha256=QxuWqF8hNYdOPDn3Yac86h_1ZaX-THbTBDakberiJcs,313
|
241
|
+
osbot_utils/helpers/safe_str/Safe_Str__Text__Dangerous.py,sha256=6-fkXBuWgjz70eQicD07f38eEuKqNzJzaFFY6hozhNQ,388
|
242
|
+
osbot_utils/helpers/safe_str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
210
243
|
osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py,sha256=GSuRYgs1yKQjxMszPoaI7fsfMfuUqhb64AaIysRE6Cs,1747
|
211
|
-
osbot_utils/helpers/sqlite/Sqlite__Cursor.py,sha256=
|
212
|
-
osbot_utils/helpers/sqlite/Sqlite__Database.py,sha256=
|
213
|
-
osbot_utils/helpers/sqlite/Sqlite__Field.py,sha256=
|
244
|
+
osbot_utils/helpers/sqlite/Sqlite__Cursor.py,sha256=4Im0pCOiERX6Nnf6iagRlSvTR3CPjyPVkdx4NMQV0P0,3342
|
245
|
+
osbot_utils/helpers/sqlite/Sqlite__Database.py,sha256=ORjRUD-xSvf89kDMQ70q7wBlbV5pdKtDerjE6gDN_fg,5616
|
246
|
+
osbot_utils/helpers/sqlite/Sqlite__Field.py,sha256=26Pn5Tz0z__PfOsv-pu901SvlWf9AkKbkapIh4ed918,2889
|
214
247
|
osbot_utils/helpers/sqlite/Sqlite__Globals.py,sha256=aP6uIy_y4xzl2soTUCFIJRjsb8JyfxfL6qIEZKIWy_4,230
|
215
|
-
osbot_utils/helpers/sqlite/Sqlite__Table.py,sha256=
|
248
|
+
osbot_utils/helpers/sqlite/Sqlite__Table.py,sha256=z6CfulnULHj64vmcvRe_YVXpwvwjblhEOUclRisLaic,15132
|
216
249
|
osbot_utils/helpers/sqlite/Sqlite__Table__Create.py,sha256=Kkp0KbAF9mYOMz6LCmo10aa1n3rci0fFDlV7DPA-gxs,3932
|
217
250
|
osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py,sha256=-BhK0_3lSJPWDt-QS8IQDfrw2K_drjtn-yXyf9GbER4,520
|
218
251
|
osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py,sha256=Na2dOHlYSVUKK7STHwdzBYbQgvW2a6cEhUnlC0-T8wk,729
|
@@ -226,13 +259,13 @@ osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py,sha256=CWB-hTcgly2T_7HO
|
|
226
259
|
osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py,sha256=TLUdQC6vsf5BcDP15CCeoYkipVG30bzqFcqEJpH4dWg,1645
|
227
260
|
osbot_utils/helpers/sqlite/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
228
261
|
osbot_utils/helpers/sqlite/domains/Sqlite__DB.py,sha256=xyXnt4-GLYqMEPBZrNPI0dZnkl61KwLEIuYjebO20Jc,1210
|
229
|
-
osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py,sha256=
|
262
|
+
osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py,sha256=FmxyR3YU9-nJXW_tKFgETZt2PXAmfobxe5OveLPBokQ,1961
|
230
263
|
osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py,sha256=aGykK4Qll5Rn0xJR4RvF5bN6llNEjx-Vst52XTVSNio,1751
|
231
264
|
osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py,sha256=ILx1wOsmwmvV2yb_fMzLzo18uGNub8cxhBrRfYxCCqA,3808
|
232
265
|
osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py,sha256=liN_0gyXmQyqnsmiz0RYanSCRI0VoIbwSBf4buM0l-w,1093
|
233
266
|
osbot_utils/helpers/sqlite/domains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
234
267
|
osbot_utils/helpers/sqlite/domains/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
235
|
-
osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py,sha256=
|
268
|
+
osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py,sha256=QFCfjCRHzsVC3j_homVf5CUCslIcIpDoa-fXZF0RVS0,1175
|
236
269
|
osbot_utils/helpers/sqlite/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
237
270
|
osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py,sha256=ouymaJaaWLP6ZVWOj-OmkeSyDQQadsPQT0B_S9fodD4,5190
|
238
271
|
osbot_utils/helpers/sqlite/sample_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -241,14 +274,14 @@ osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py,sha256=_5fszoWTknE
|
|
241
274
|
osbot_utils/helpers/sqlite/sql_builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
242
275
|
osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py,sha256=M-h6fYQgmX7Yaq3cSmpePutajLVeVy_IDUrDk97EH6U,2061
|
243
276
|
osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py,sha256=YwlWj9GYBDeotqDFdjMOb6MyuHhPZKasndAtuHiLrkQ,1635
|
244
|
-
osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py,sha256=
|
277
|
+
osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py,sha256=jYa4B9Z7bmZoR5uLoXXNMC6YD49LLKXfsp6P3S61r04,4000
|
245
278
|
osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py,sha256=GT8h3wD4hGvEtqQuBs0sBbcu2ydktRHTi95PEL2ffHQ,1721
|
246
279
|
osbot_utils/helpers/sqlite/tables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
247
280
|
osbot_utils/helpers/ssh/SCP.py,sha256=pMrb0S3xTFNrJsGLlTe6OnvAWVXiXgVv3Q5VWs_J52I,3396
|
248
281
|
osbot_utils/helpers/ssh/SSH.py,sha256=KPmIewh-ucGqubrwZoZILhX60MCV9UEw8do8JKrZ91s,1542
|
249
282
|
osbot_utils/helpers/ssh/SSH__Cache__Requests.py,sha256=Dqh4biVcuaXbQVvn3Tx-kSGBGHiF-2wVsgu96EhD6gU,3359
|
250
|
-
osbot_utils/helpers/ssh/SSH__Execute.py,sha256=
|
251
|
-
osbot_utils/helpers/ssh/SSH__Health_Check.py,sha256=
|
283
|
+
osbot_utils/helpers/ssh/SSH__Execute.py,sha256=i-AnZBerOAz9aF0n6224_wP4_6GrdQM5i4r_TMgtiA4,7012
|
284
|
+
osbot_utils/helpers/ssh/SSH__Health_Check.py,sha256=j5pfmR2512wHhduhiJPsERW3tV4IgU6iw4Unfl6XFw8,2126
|
252
285
|
osbot_utils/helpers/ssh/SSH__Linux.py,sha256=O1uyKcklaj2tHqQZln7dVinzjl9-EI52KzP8ojQr244,4330
|
253
286
|
osbot_utils/helpers/ssh/SSH__Linux__Amazon.py,sha256=ZJFb7LFTvclAuhH5OoOtJ361NoX9ecHTaFX-iSmnzmk,596
|
254
287
|
osbot_utils/helpers/ssh/SSH__Python.py,sha256=MoihfGU1qhl4tdM4s0AifjRVQP75gEuJk-OYSC3F_XI,2063
|
@@ -299,18 +332,18 @@ osbot_utils/testing/Temp_Zip_In_Memory.py,sha256=ibDIWt3K4CX558PbkLbX3InHyWYZcwQ
|
|
299
332
|
osbot_utils/testing/Unit_Test.py,sha256=MReR_wDGbbXFDPz7cmuGflcTxRB6TBnO9mYqRpSq8Pk,1304
|
300
333
|
osbot_utils/testing/Unzip_File.py,sha256=V5H97XO9rlvG5EYOSzAH4kTtAH1ohZ8R8ImvJh46ZNg,1177
|
301
334
|
osbot_utils/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
302
|
-
osbot_utils/testing/performance/Performance_Measure__Session.py,sha256=
|
335
|
+
osbot_utils/testing/performance/Performance_Measure__Session.py,sha256=CWce0vJAZH_PDbIgK5bNcNFr1qsB37FQJKd05K-63kk,9108
|
303
336
|
osbot_utils/testing/performance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
304
337
|
osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py,sha256=xT_uKzbSYo9AGiJgNmCHSt3ApneNNyKh8vsMVN6IJQ0,1127
|
305
338
|
osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py,sha256=k9HJYNLmW6sjRVsfpduSxHFiVANc1zmYtO_Oz9azpW8,755
|
306
339
|
osbot_utils/testing/performance/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
307
340
|
osbot_utils/type_safe/Type_Safe.py,sha256=LOWRGOGpnRU2iTRLP47vUoyalK0vjFrWlnaghBIogWg,6267
|
308
|
-
osbot_utils/type_safe/Type_Safe__Base.py,sha256=
|
309
|
-
osbot_utils/type_safe/Type_Safe__Dict.py,sha256=
|
310
|
-
osbot_utils/type_safe/Type_Safe__List.py,sha256=
|
311
|
-
osbot_utils/type_safe/Type_Safe__Method.py,sha256=
|
341
|
+
osbot_utils/type_safe/Type_Safe__Base.py,sha256=9VfmZzY7aE5rNES7F38YYB7U4BqcUqXET1tABuZDsCk,7634
|
342
|
+
osbot_utils/type_safe/Type_Safe__Dict.py,sha256=9TExQtFHQNLdw_ASfQ49i1YhC7fSyCiGdVkK8n-hGlc,2407
|
343
|
+
osbot_utils/type_safe/Type_Safe__List.py,sha256=6PIo52QUBu83KhPlvlVOT8tpPpQQkDUGswKKhOxoymg,1707
|
344
|
+
osbot_utils/type_safe/Type_Safe__Method.py,sha256=PRV4enbwuD81QKP_5UtUA3OAp0m0xSiUhwkCoseZoq4,15687
|
312
345
|
osbot_utils/type_safe/Type_Safe__Set.py,sha256=j12fc8cbd9-s_a13ysaz723rNEW4Dt6hObCd0S-AjIg,1432
|
313
|
-
osbot_utils/type_safe/Type_Safe__Tuple.py,sha256=
|
346
|
+
osbot_utils/type_safe/Type_Safe__Tuple.py,sha256=Kx7C4YfHybRbMmVMcmV6yFLi4T48pb592vEZfjjyLxo,1710
|
314
347
|
osbot_utils/type_safe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
315
348
|
osbot_utils/type_safe/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
316
349
|
osbot_utils/type_safe/decorators/type_safe.py,sha256=ERFfJuAIo5qLp03YEDu2zu5wxu65OhR7hOybwuTfLlc,1006
|
@@ -323,14 +356,14 @@ osbot_utils/type_safe/shared/Type_Safe__Json_Compressor.py,sha256=TDbot_NNzCPXBQ
|
|
323
356
|
osbot_utils/type_safe/shared/Type_Safe__Json_Compressor__Type_Registry.py,sha256=wYOCg7F1nTrRn8HlnZvrs_8A8WL4gxRYRLnXZpGIiuk,1119
|
324
357
|
osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py,sha256=25FAl6SOLxdStco_rm9tgOYLfuKyBWheGdl7vVa56UU,800
|
325
358
|
osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py,sha256=pbru8k8CTQMNUfmFBndiJhg2KkqEYzFvJAPcNZHeHfQ,829
|
326
|
-
osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py,sha256=
|
327
|
-
osbot_utils/type_safe/shared/Type_Safe__Validation.py,sha256=
|
359
|
+
osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py,sha256=TgF2MK__81YZaY19YWF4q1rE65BqU3HNmmN139OVcK0,409
|
360
|
+
osbot_utils/type_safe/shared/Type_Safe__Validation.py,sha256=s6yRSWY6zYKEQBwlDEGFwFRO9v8T7UOaz5fsz6ih0cw,19342
|
328
361
|
osbot_utils/type_safe/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
329
362
|
osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py,sha256=snoyJKvZ1crgF2fp0zexwNPnV_E63RfyRIsMAZdrKNY,6995
|
330
363
|
osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py,sha256=tzKXDUc0HVP5QvCWsmcPuuZodNvQZ9FeMDNI2x00Ngw,1943
|
331
|
-
osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py,sha256=
|
332
|
-
osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py,sha256=
|
333
|
-
osbot_utils/type_safe/steps/Type_Safe__Step__Init.py,sha256=
|
364
|
+
osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py,sha256=b5vsgM8eg9yq2KM0wRMntVHma6OhN_HnU76LxhEIpoA,4483
|
365
|
+
osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py,sha256=y6iet08nQboMPZ1ymrPA61oaSVE3YB1EvPn8a8PiqOE,14133
|
366
|
+
osbot_utils/type_safe/steps/Type_Safe__Step__Init.py,sha256=Ds_u5BzLYDGLsoQkPXVTac8HkUF96p2x_HDpVmWlvho,4321
|
334
367
|
osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py,sha256=VuKHH9QEYlbAL9R4zwQ5dwexx2sFY6wMx52QmF7eqcg,5219
|
335
368
|
osbot_utils/type_safe/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
336
369
|
osbot_utils/type_safe/validators/Type_Safe__Validator.py,sha256=cJIPSBarjV716SZUOLvz7Mthjk-aUYKUQtRDtKUBmN4,779
|
@@ -345,7 +378,7 @@ osbot_utils/utils/Csv.py,sha256=oHLVpjRJqrLMz9lubMCNEoThXWju5rNTprcwHc1zq2c,1012
|
|
345
378
|
osbot_utils/utils/Dev.py,sha256=eaQ87ZcMRRcxgzA-f7OO8HjjWhbE6L_edwvXiwFZvIQ,1291
|
346
379
|
osbot_utils/utils/Env.py,sha256=rBksAy6k-J5oAJp-S_JedVlcj1b2VK8V3zsQbacopMc,6076
|
347
380
|
osbot_utils/utils/Exceptions.py,sha256=KyOUHkXQ_6jDTq04Xm261dbEZuRidtsM4dgzNwSG8-8,389
|
348
|
-
osbot_utils/utils/Files.py,sha256=
|
381
|
+
osbot_utils/utils/Files.py,sha256=YwfXMeU1jfDzYvZJGy0bWHvvduTuTnftBNlAnpsXDzw,23013
|
349
382
|
osbot_utils/utils/Functions.py,sha256=0E6alPJ0fJpBiJgFOWooCOi265wSRyxxXAJ5CELBnso,3498
|
350
383
|
osbot_utils/utils/Http.py,sha256=ywjQlpKgklPnh7iLMGrbf4vbNMH50sUGX4crZHAfCQc,8201
|
351
384
|
osbot_utils/utils/Int.py,sha256=PmlUdU4lSwf4gJdmTVdqclulkEp7KPCVUDO6AcISMF4,116
|
@@ -353,7 +386,7 @@ osbot_utils/utils/Json.py,sha256=TvfDoXwOkWzWH-9KMnme5C7iFsMZOleAeue92qmkH6g,883
|
|
353
386
|
osbot_utils/utils/Json_Cache.py,sha256=mLPkkDZN-3ZVJiDvV1KBJXILtKkTZ4OepzOsDoBPhWg,2006
|
354
387
|
osbot_utils/utils/Lists.py,sha256=tPz5x5s3sRO97WZ_nsxREBPC5cwaHrhgaYBhsrffTT8,5599
|
355
388
|
osbot_utils/utils/Misc.py,sha256=H_xexJgiTxB3jDeDiW8efGQbO0Zuy8MM0iQ7qXC92JI,17363
|
356
|
-
osbot_utils/utils/Objects.py,sha256=
|
389
|
+
osbot_utils/utils/Objects.py,sha256=kylrLHxWYcsYgA1tCoXYb-TpnuE2PRkhTj2iDleM5YQ,13460
|
357
390
|
osbot_utils/utils/Png.py,sha256=V1juGp6wkpPigMJ8HcxrPDIP4bSwu51oNkLI8YqP76Y,1172
|
358
391
|
osbot_utils/utils/Process.py,sha256=lr3CTiEkN3EiBx3ZmzYmTKlQoPdkgZBRjPulMxG-zdo,2357
|
359
392
|
osbot_utils/utils/Python_Logger.py,sha256=M9Oi62LxfnRSlCN8GhaiwiBINvcSdGy39FCWjyDD-Xg,12792
|
@@ -365,8 +398,8 @@ osbot_utils/utils/Toml.py,sha256=Rxl8gx7mni5CvBAK-Ai02EKw-GwtJdd3yeHT2kMloik,166
|
|
365
398
|
osbot_utils/utils/Version.py,sha256=Ww6ChwTxqp1QAcxOnztkTicShlcx6fbNsWX5xausHrg,422
|
366
399
|
osbot_utils/utils/Zip.py,sha256=pR6sKliUY0KZXmqNzKY2frfW-YVQEVbLKiyqQX_lc-8,14052
|
367
400
|
osbot_utils/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
368
|
-
osbot_utils/version,sha256=
|
369
|
-
osbot_utils-2.
|
370
|
-
osbot_utils-2.
|
371
|
-
osbot_utils-2.
|
372
|
-
osbot_utils-2.
|
401
|
+
osbot_utils/version,sha256=eP_sVuSlH7b9KQmXQnUcU4y9U9Ka6cF20Dtqvf3X-xA,8
|
402
|
+
osbot_utils-2.35.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
403
|
+
osbot_utils-2.35.0.dist-info/METADATA,sha256=ry_EjbTe4KMUskGynioO4m4VBX1aD7gNbwe_Z_cTcEs,1329
|
404
|
+
osbot_utils-2.35.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
405
|
+
osbot_utils-2.35.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|