osbot-utils 1.58.0__py3-none-any.whl → 1.60.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/base_classes/Type_Safe.py +5 -2
- osbot_utils/helpers/flows/Flow.py +11 -1
- osbot_utils/utils/Misc.py +2 -0
- osbot_utils/utils/Objects.py +9 -6
- osbot_utils/version +1 -1
- {osbot_utils-1.58.0.dist-info → osbot_utils-1.60.0.dist-info}/METADATA +2 -2
- {osbot_utils-1.58.0.dist-info → osbot_utils-1.60.0.dist-info}/RECORD +9 -9
- {osbot_utils-1.58.0.dist-info → osbot_utils-1.60.0.dist-info}/LICENSE +0 -0
- {osbot_utils-1.58.0.dist-info → osbot_utils-1.60.0.dist-info}/WHEEL +0 -0
@@ -14,10 +14,10 @@ from osbot_utils.helpers.Random_Guid import Random_Guid
|
|
14
14
|
from osbot_utils.utils.Dev import pprint
|
15
15
|
from osbot_utils.utils.Json import json_parse
|
16
16
|
from osbot_utils.utils.Misc import list_set
|
17
|
-
from osbot_utils.utils.Objects
|
17
|
+
from osbot_utils.utils.Objects import default_value, value_type_matches_obj_annotation_for_attr, \
|
18
18
|
raise_exception_on_obj_type_annotation_mismatch, obj_is_attribute_annotation_of_type, enum_from_value, \
|
19
19
|
obj_is_type_union_compatible, value_type_matches_obj_annotation_for_union_attr, \
|
20
|
-
convert_dict_to_value_from_obj_annotation
|
20
|
+
convert_dict_to_value_from_obj_annotation, dict_to_obj
|
21
21
|
|
22
22
|
# Backport implementations of get_origin and get_args for Python 3.7
|
23
23
|
if sys.version_info < (3, 8): # pragma: no cover
|
@@ -272,6 +272,9 @@ class Type_Safe:
|
|
272
272
|
|
273
273
|
return self
|
274
274
|
|
275
|
+
def obj(self):
|
276
|
+
return dict_to_obj(self.json())
|
277
|
+
|
275
278
|
def serialize_to_dict(self): # todo: see if we need this method or if the .json() is enough
|
276
279
|
return serialize_to_dict(self)
|
277
280
|
|
@@ -32,6 +32,7 @@ class Flow(Type_Safe):
|
|
32
32
|
flow_args : tuple
|
33
33
|
flow_kwargs : dict
|
34
34
|
flow_return_value : typing.Any
|
35
|
+
flow_run_params : dict
|
35
36
|
logger : Python_Logger
|
36
37
|
cformat : CFormat
|
37
38
|
executed_tasks : typing.List
|
@@ -67,8 +68,10 @@ class Flow(Type_Safe):
|
|
67
68
|
def execute(self):
|
68
69
|
return self.execute_flow()
|
69
70
|
|
70
|
-
def execute_flow(self):
|
71
|
+
def execute_flow(self, flow_run_params=None): # todo: see if it makes more sense to call this start_flow_run
|
71
72
|
flow_events.on__flow__start(self)
|
73
|
+
self.set_flow_run_params(flow_run_params)
|
74
|
+
|
72
75
|
if self.flow_config.log_to_memory:
|
73
76
|
self.logger.add_memory_logger() # todo: move to method that does pre-execute tasks
|
74
77
|
|
@@ -206,6 +209,13 @@ class Flow(Type_Safe):
|
|
206
209
|
self.flow_name = self.flow_target.__name__
|
207
210
|
else:
|
208
211
|
self.flow_name = self.random_flow_name()
|
212
|
+
|
213
|
+
def set_flow_run_params(self, flow_run_params=None):
|
214
|
+
if flow_run_params:
|
215
|
+
self.flow_run_params = flow_run_params
|
216
|
+
self.log_info(f"flow_run_params: {flow_run_params}")
|
217
|
+
self.add_flow_artifact(description="Data received via FastAPI's request.json()", key='post-data', data=flow_run_params)
|
218
|
+
|
209
219
|
def setup(self):
|
210
220
|
with self as _:
|
211
221
|
_.cformat.auto_bold = True
|
osbot_utils/utils/Misc.py
CHANGED
@@ -131,6 +131,8 @@ def date_today():
|
|
131
131
|
def list_set(target: object) -> object:
|
132
132
|
if hasattr(target, '__iter__'):
|
133
133
|
return sorted(list(set(target)))
|
134
|
+
if hasattr(target, '__dict__'):
|
135
|
+
return list_set(target.__dict__)
|
134
136
|
return []
|
135
137
|
|
136
138
|
def time_str_milliseconds(datetime_str, datetime_format, milliseconds_numbers=0):
|
osbot_utils/utils/Objects.py
CHANGED
@@ -122,18 +122,21 @@ def dict_remove(data, target):
|
|
122
122
|
del data[target]
|
123
123
|
return data
|
124
124
|
|
125
|
+
class __(SimpleNamespace):
|
126
|
+
pass
|
125
127
|
|
126
|
-
def dict_to_obj(target
|
127
|
-
DynamicClass = type(class_name, (SimpleNamespace,), {})
|
128
|
+
def dict_to_obj(target):
|
128
129
|
if isinstance(target, Mapping):
|
129
130
|
new_dict = {}
|
130
131
|
for key, value in target.items():
|
131
|
-
new_dict[key] = dict_to_obj(value
|
132
|
-
return
|
132
|
+
new_dict[key] = dict_to_obj(value) # Recursively convert elements in the dict
|
133
|
+
return __(**new_dict)
|
133
134
|
elif isinstance(target, list): # Recursively convert elements in the list
|
134
|
-
return [dict_to_obj(item
|
135
|
+
return [dict_to_obj(item) for item in target]
|
135
136
|
elif isinstance(target, tuple): # Recursively convert elements in the tuple
|
136
|
-
return tuple(dict_to_obj(item
|
137
|
+
return tuple(dict_to_obj(item) for item in target)
|
138
|
+
# elif hasattr(target, 'json'): # todo: see if we need this. I don't like the idea of adding this extra hidden behaviour to this class
|
139
|
+
# return dict_to_obj(target.json())
|
137
140
|
|
138
141
|
return target
|
139
142
|
|
osbot_utils/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
v1.
|
1
|
+
v1.60.0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.60.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
|
|
@@ -2,7 +2,7 @@ osbot_utils/__init__.py,sha256=DdJDmQc9zbQUlPVyTJOww6Ixrn9n4bD3ami5ItQfzJI,16
|
|
2
2
|
osbot_utils/base_classes/Cache_Pickle.py,sha256=kPCwrgUbf_dEdxUz7vW1GuvIPwlNXxuRhb-H3AbSpII,5884
|
3
3
|
osbot_utils/base_classes/Kwargs_To_Disk.py,sha256=HHoy05NC_w35WcT-OnSKoSIV_cLqaU9rdjH0_KNTM0E,1096
|
4
4
|
osbot_utils/base_classes/Kwargs_To_Self.py,sha256=weFNsBfBNV9W_qBkN-IdBD4yYcJV_zgTxBRO-ZlcPS4,141
|
5
|
-
osbot_utils/base_classes/Type_Safe.py,sha256=
|
5
|
+
osbot_utils/base_classes/Type_Safe.py,sha256=SwgDhPKeC2jUWNmihUXwvDoXFhnZPOSrrsu1YnCyyx0,17961
|
6
6
|
osbot_utils/base_classes/Type_Safe__List.py,sha256=-80C9OhsK6iDR2dAG8yNLAZV0qg5x3faqvSUigFCMJw,517
|
7
7
|
osbot_utils/base_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
osbot_utils/context_managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -154,7 +154,7 @@ osbot_utils/helpers/cache_requests/Cache__Requests__Row.py,sha256=h-yc7NkpScbHww
|
|
154
154
|
osbot_utils/helpers/cache_requests/Cache__Requests__Table.py,sha256=RgxAYhm-FIrXXteQRtD91pOLq8JXhSzxb51Jb6MTUdY,391
|
155
155
|
osbot_utils/helpers/cache_requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
156
156
|
osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py,sha256=xgx_oExxkcvRwQN1UCobimECIMUKGoIX5oGdCmp8Nyw,243
|
157
|
-
osbot_utils/helpers/flows/Flow.py,sha256=
|
157
|
+
osbot_utils/helpers/flows/Flow.py,sha256=dvNzrOt3hY_MkYjvl4unW9KbANda9np2gB4R0KcEhws,10176
|
158
158
|
osbot_utils/helpers/flows/Flow__Events.py,sha256=u9GzVNd08Hr49ZRIpoRDhwJnAHUFB-XzFzmNw-r3_Q0,2535
|
159
159
|
osbot_utils/helpers/flows/Task.py,sha256=ifPm0aqUG4sWAUTaYwT7ig-7Y9JmG9YTiNyC3dOX5sw,4887
|
160
160
|
osbot_utils/helpers/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -289,8 +289,8 @@ osbot_utils/utils/Int.py,sha256=PmlUdU4lSwf4gJdmTVdqclulkEp7KPCVUDO6AcISMF4,116
|
|
289
289
|
osbot_utils/utils/Json.py,sha256=7COxBlZRnpxtpNqpmzMPYkcKTnCok-s686nT27oiKEQ,6489
|
290
290
|
osbot_utils/utils/Json_Cache.py,sha256=mLPkkDZN-3ZVJiDvV1KBJXILtKkTZ4OepzOsDoBPhWg,2006
|
291
291
|
osbot_utils/utils/Lists.py,sha256=tPz5x5s3sRO97WZ_nsxREBPC5cwaHrhgaYBhsrffTT8,5599
|
292
|
-
osbot_utils/utils/Misc.py,sha256=
|
293
|
-
osbot_utils/utils/Objects.py,sha256=
|
292
|
+
osbot_utils/utils/Misc.py,sha256=RaAqJp5hgdp513S9odNAHb9ucoHnC53RbB9OevyhrWw,16881
|
293
|
+
osbot_utils/utils/Objects.py,sha256=0XKssf_aGarfWI-2Gl-XXUb2tYglTfCBkiKa5zTF0O4,17498
|
294
294
|
osbot_utils/utils/Png.py,sha256=V1juGp6wkpPigMJ8HcxrPDIP4bSwu51oNkLI8YqP76Y,1172
|
295
295
|
osbot_utils/utils/Process.py,sha256=lr3CTiEkN3EiBx3ZmzYmTKlQoPdkgZBRjPulMxG-zdo,2357
|
296
296
|
osbot_utils/utils/Python_Logger.py,sha256=tx8N6wRKL3RDHboDRKZn8SirSJdSAE9cACyJkxrThZ8,12792
|
@@ -302,8 +302,8 @@ osbot_utils/utils/Toml.py,sha256=SD6IA4-mrtoBXcI0dIGKV9POMQNd6WYKvmDQq7GQ6ZQ,143
|
|
302
302
|
osbot_utils/utils/Version.py,sha256=Ww6ChwTxqp1QAcxOnztkTicShlcx6fbNsWX5xausHrg,422
|
303
303
|
osbot_utils/utils/Zip.py,sha256=G6Hk_hDcm9yvWzhTKzhT0R_6f0NBIAchHqMxGb3kfh4,14037
|
304
304
|
osbot_utils/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
305
|
-
osbot_utils/version,sha256=
|
306
|
-
osbot_utils-1.
|
307
|
-
osbot_utils-1.
|
308
|
-
osbot_utils-1.
|
309
|
-
osbot_utils-1.
|
305
|
+
osbot_utils/version,sha256=Ar37hQxb9ss3OIUx_Aa9ls0fATVQiRMdEEWpUSlxr6I,8
|
306
|
+
osbot_utils-1.60.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
307
|
+
osbot_utils-1.60.0.dist-info/METADATA,sha256=QfHIdbIqSJtqYsGJ07E5myRgmUrEPIgBebNWpzI-7kY,1266
|
308
|
+
osbot_utils-1.60.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
309
|
+
osbot_utils-1.60.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|