osbot-utils 1.55.0__py3-none-any.whl → 1.56.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.
@@ -55,7 +55,7 @@ class Flow(Type_Safe):
55
55
  if self.flow_config.log_to_memory:
56
56
  self.logger.add_memory_logger() # todo: move to method that does pre-execute tasks
57
57
 
58
- self.log_debug(f"Executing flow run '{self.f__flow_id()}''")
58
+ self.log_debug(f"Executing flow run '{self.f__flow_id()}'")
59
59
  try:
60
60
  with Stdout() as stdout:
61
61
  self.invoke_flow_target()
@@ -102,17 +102,29 @@ class Flow(Type_Safe):
102
102
  print()
103
103
  self.print_log_messages()
104
104
 
105
- def log_debug(self, message):
106
- if self.flow_config.logging_enabled:
107
- self.logger.debug(message)
108
105
 
109
- def log_error(self, message):
110
- if self.flow_config.logging_enabled:
111
- self.logger.error(message)
106
+ def log_debug(self, message, task_run_id=None):
107
+ self.logger_add_message(log_level=logging.DEBUG, message=message, task_run_id=task_run_id)
108
+
109
+ def log_error(self, message, task_run_id=None):
110
+ self.logger_add_message(log_level=logging.ERROR, message=message, task_run_id=task_run_id)
112
111
 
113
- def log_info(self, message):
112
+ def log_info(self, message, task_run_id=None):
113
+ self.logger_add_message(log_level=logging.INFO, message=message, task_run_id=task_run_id)
114
+
115
+ def logger_add_message(self, log_level, message, task_run_id=None):
114
116
  if self.flow_config.logging_enabled:
115
- self.logger.info(message)
117
+ kwargs = dict(log_level = log_level ,
118
+ message = message ,
119
+ flow_run_id = self.flow_id,
120
+ task_run_id = task_run_id )
121
+ flow_events.on__flow_run__message(self, **kwargs)
122
+ if log_level == logging.DEBUG:
123
+ self.logger.debug(message)
124
+ elif log_level == logging.ERROR:
125
+ self.logger.error(message)
126
+ else:
127
+ self.logger.info(message)
116
128
 
117
129
  def log_messages(self):
118
130
  return ansis_to_texts(self.log_messages_with_colors())
@@ -135,7 +147,7 @@ class Flow(Type_Safe):
135
147
 
136
148
  def print_flow_finished_message(self):
137
149
  if self.flow_config.print_finished_message:
138
- self.log_debug(f"Finished flow run '{self.f__flow_id()}''")
150
+ self.log_debug(f"Finished flow run '{self.f__flow_id()}'")
139
151
 
140
152
  def print_flow_return_value(self):
141
153
  if self.flow_config.print_none_return_value is False and self.flow_return_value is None:
@@ -1,3 +1,7 @@
1
+ from osbot_utils.utils.Str import ansis_to_texts, ansi_to_text
2
+
3
+ from osbot_utils.utils.Dev import pprint
4
+
1
5
  from osbot_utils.base_classes.Type_Safe import Type_Safe
2
6
  from osbot_utils.helpers.flows.models.Flow__Event import Flow__Event
3
7
  from osbot_utils.helpers.flows.models.Flow__Event_Type import Flow__Event_Type
@@ -14,6 +18,15 @@ class Flow_Events(Type_Safe):
14
18
  flow_event = Flow__Event(event_type=Flow__Event_Type.FLOW_STOP , event_source=flow)
15
19
  self.raise_event(flow_event)
16
20
 
21
+ def on__flow_run__message(self, flow, log_level, flow_run_id, task_run_id, message):
22
+ event_data = dict(flow_run_id = flow_run_id ,
23
+ log_level = log_level ,
24
+ message = message ,
25
+ message_text = ansi_to_text(message) ,
26
+ task_run_id = task_run_id )
27
+ flow_event = Flow__Event(event_type=Flow__Event_Type.FLOW_MESSAGE, event_source=flow, event_data=event_data)
28
+ self.raise_event(flow_event)
29
+
17
30
  def on__task__start(self, task):
18
31
  flow_event = Flow__Event(event_type=Flow__Event_Type.TASK_START, event_source=task)
19
32
  self.raise_event(flow_event)
@@ -27,11 +27,14 @@ class Task(Type_Safe):
27
27
  task_error : Exception = None
28
28
  raise_on_error : bool = True
29
29
 
30
+ def log_info(self, message):
31
+ self.task_flow.log_info(message, self.task_id)
32
+
30
33
  def log_debug(self, message):
31
- self.task_flow.log_debug(message)
34
+ self.task_flow.log_debug(message, self.task_id)
32
35
 
33
36
  def log_error(self, message):
34
- self.task_flow.log_error(message)
37
+ self.task_flow.log_error(message, self.task_id)
35
38
 
36
39
  def execute__sync(self):
37
40
  self.execute__before()
@@ -54,6 +57,8 @@ class Task(Type_Safe):
54
57
  if not self.task_id:
55
58
  self.task_id = self.random_task_id()
56
59
 
60
+ flow_events.on__task__start(self)
61
+
57
62
  self.task_flow.executed_tasks.append(self)
58
63
  self.log_debug(f"Executing task '{f_blue(self.task_name)}'")
59
64
  dependency_manager = Dependency_Manager()
@@ -62,7 +67,7 @@ class Task(Type_Safe):
62
67
  dependency_manager.add_dependency('task_data', self.data )
63
68
  dependency_manager.add_dependency('flow_data', self.task_flow.data)
64
69
  self.resolved_args, self.resolved_kwargs = dependency_manager.resolve_dependencies(self.task_target, *self.task_args, **self.task_kwargs)
65
- flow_events.on__task__start(self)
70
+
66
71
 
67
72
  def execute__task_target__sync(self):
68
73
  try:
@@ -1,8 +1,8 @@
1
1
  from osbot_utils.base_classes.Type_Safe import Type_Safe
2
2
 
3
-
4
3
  class Flow__Event_Type(Type_Safe):
5
- FLOW_START : str = 'flow_start'
6
- FLOW_STOP : str = 'flow_stop'
7
- TASK_START : str = 'task_start'
8
- TASK_STOP : str = 'task_stop'
4
+ FLOW_MESSAGE: str = 'flow_message'
5
+ FLOW_START : str = 'flow_start'
6
+ FLOW_STOP : str = 'flow_stop'
7
+ TASK_START : str = 'task_start'
8
+ TASK_STOP : str = 'task_stop'
osbot_utils/version CHANGED
@@ -1 +1 @@
1
- v1.55.0
1
+ v1.56.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osbot_utils
3
- Version: 1.55.0
3
+ Version: 1.56.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
- ![Current Release](https://img.shields.io/badge/release-v1.55.0-blue)
25
+ ![Current Release](https://img.shields.io/badge/release-v1.56.0-blue)
26
26
  [![codecov](https://codecov.io/gh/owasp-sbot/OSBot-Utils/graph/badge.svg?token=GNVW0COX1N)](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
27
27
 
28
28
 
@@ -154,16 +154,16 @@ 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=unjYDAsdGqWuEC6sODmcKCDZU8fHnH-CkbmANMGYpa0,6898
158
- osbot_utils/helpers/flows/Flow__Events.py,sha256=CS93ohhQ_P7sKr0R4vI2-72uiDQa0pIUEz5Lxam3kfA,1448
159
- osbot_utils/helpers/flows/Task.py,sha256=r0SthKYz919C6u-NG6Rt4zpE8yO5DdRFSPjGTnNeZbU,4690
157
+ osbot_utils/helpers/flows/Flow.py,sha256=iO-4B0uIv31n66INoXpodoYss5eEsOEGu3LDFevkKQ8,7626
158
+ osbot_utils/helpers/flows/Flow__Events.py,sha256=Gy5P130Bz5RtRV7NaV5Iss4wZrjLdVxaps1r02kQLCk,2123
159
+ osbot_utils/helpers/flows/Task.py,sha256=ITR6qFd_BWEFtWJ5wZUFcxq3A3FyN4YzU7_CeIuUph0,4809
160
160
  osbot_utils/helpers/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
161
  osbot_utils/helpers/flows/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
162
  osbot_utils/helpers/flows/decorators/flow.py,sha256=LUL7bHjZ_lC3QoTNh-KsDZHzjE2u4mU-5EpZnfsEGuc,738
163
163
  osbot_utils/helpers/flows/decorators/task.py,sha256=9bhQBPJU1dO-J4FAsFkmxqQMBNtay4FT_b1BdpHJ9sA,734
164
164
  osbot_utils/helpers/flows/models/Flow__Config.py,sha256=NLIfT0S8zxbig6Q1p9KeoyE2qRVWorHxk-JXCv9Yx-U,382
165
165
  osbot_utils/helpers/flows/models/Flow__Event.py,sha256=O2SNmDG8FTsQQqm5tWmbomQsC_usA7EqMQhTWIFl4KM,157
166
- osbot_utils/helpers/flows/models/Flow__Event_Type.py,sha256=dc5qwV0TfqgTfd10HzJnIZsnZrv4FPOC1EUCwKpI7AI,235
166
+ osbot_utils/helpers/flows/models/Flow__Event_Type.py,sha256=YSOjzcRjCHmF_AIoWiccoNH0EAmNdTSmObXYB5exTGw,277
167
167
  osbot_utils/helpers/flows/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
168
  osbot_utils/helpers/html/Dict_To_Css.py,sha256=u6B4Mx7PXr-gDrTrs1hgknnvsZVK4Fic5LqedKjo-lk,1097
169
169
  osbot_utils/helpers/html/Dict_To_Html.py,sha256=OlRSaDGOeseBNTxRB2ho5whqEacMXeAXWOfeVSEYqC4,3355
@@ -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=DaSzptqoG77WG2ht6TyXJYRLX-ouKuUV5NzkxiXP8yM,8
306
- osbot_utils-1.55.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
307
- osbot_utils-1.55.0.dist-info/METADATA,sha256=uJ8iV358KsMOdWks77C17F6YAIX3nVJ7eO4DXN32iH8,1266
308
- osbot_utils-1.55.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
309
- osbot_utils-1.55.0.dist-info/RECORD,,
305
+ osbot_utils/version,sha256=Tr_IKFeVZOtzWeW8sdbz6QZge0TiRXb54jrSp_tV3_s,8
306
+ osbot_utils-1.56.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
307
+ osbot_utils-1.56.0.dist-info/METADATA,sha256=BkDSFwnvPd92g4ESDYOX5lwCnwWG8n5wBeDH33WfP60,1266
308
+ osbot_utils-1.56.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
309
+ osbot_utils-1.56.0.dist-info/RECORD,,