easy-utils-dev 2.165__tar.gz → 2.166__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.
Files changed (42) hide show
  1. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/PKG-INFO +1 -1
  2. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/ne1830PSS.py +4 -1
  3. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/uiserver.py +69 -23
  4. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev.egg-info/PKG-INFO +1 -1
  5. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/setup.py +1 -1
  6. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/MANIFEST.in +0 -0
  7. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/EasySsh.py +0 -0
  8. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/Events.py +0 -0
  9. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/FastQueue.py +0 -0
  10. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/NameObject.py +0 -0
  11. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/__init__.py +0 -0
  12. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/abortable.py +0 -0
  13. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/brevosmtp.py +0 -0
  14. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/check_license.py +0 -0
  15. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/cplib.py +0 -0
  16. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/custom_env.py +0 -0
  17. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/debugger.py +0 -0
  18. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/easy_oracle.py +0 -0
  19. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/encryptor.py +0 -0
  20. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/ept.py +0 -0
  21. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/ept_sql/create_dirs.sql +0 -0
  22. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/ept_sql/create_ept_tables.sql +0 -0
  23. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/exceptions.py +0 -0
  24. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/filescompressor.py +0 -0
  25. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/generate_license.py +0 -0
  26. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/keycloakapi.py +0 -0
  27. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/lralib.py +0 -0
  28. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/nsp_kafka.py +0 -0
  29. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/openid_server.py +0 -0
  30. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/optics_utils.py +0 -0
  31. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/require_auth.py +0 -0
  32. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/simple_sqlite.py +0 -0
  33. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/temp_memory.py +0 -0
  34. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/utils.py +0 -0
  35. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/winserviceapi.py +0 -0
  36. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/wsnoclib.py +0 -0
  37. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev/wsselib.py +0 -0
  38. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev.egg-info/SOURCES.txt +0 -0
  39. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev.egg-info/dependency_links.txt +0 -0
  40. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev.egg-info/requires.txt +0 -0
  41. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/easy_utils_dev.egg-info/top_level.txt +0 -0
  42. {easy_utils_dev-2.165 → easy_utils_dev-2.166}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easy_utils_dev
3
- Version: 2.165
3
+ Version: 2.166
4
4
  Keywords: python3
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Requires-Dist: psutil
@@ -20,6 +20,7 @@ class PSS1830 :
20
20
  file_name=None,
21
21
  debug_home_path=None,
22
22
  trust_env_log_path=True,
23
+ connect_to_standby_ec=False,
23
24
  debugger_kwargs: Optional[DEBUGGER] = {}
24
25
  ) -> None:
25
26
  self.port = None
@@ -55,7 +56,9 @@ class PSS1830 :
55
56
  self.full_buffer=''
56
57
  self.pssRelease = None
57
58
  self.maxConnectAttempt=3
58
- self.connect_to_standby_ec=False
59
+
60
+ self.connect_to_standby_ec = connect_to_standby_ec
61
+
59
62
  self.currentConnectAttempt=0
60
63
  self.auto_enable_tcp_forward=auto_enable_tcp_forward
61
64
  self.tcpForwardStatus=None
@@ -83,29 +83,74 @@ class Stream :
83
83
  } , to=sid )
84
84
 
85
85
  class Response :
86
- def __init__(self) :
86
+ def __init__(self, socket : SocketIO , request : request ) :
87
87
  self.success = self.ok
88
88
  self.failure = self.error
89
-
90
- def ok(self , result=[] , message=None , **kwargs) :
89
+ self.socket = socket
90
+ self.request = request
91
+
92
+ def _emit(self , data, role , options={} ) :
93
+ self.socket.emit('/stream/notify' , { **data , '_role' : role , '_options' : options } , to=self.request.sid)
94
+
95
+ def ok(self , result=[] , message=None , alert=False, toast=False , options={} , **kwargs) :
96
+ role = None
97
+ if alert :
98
+ role = 'alert'
99
+ elif toast :
100
+ role = 'toast'
91
101
  timestamp = getTimestamp()
92
- return {'status' : 200 , 'message' : message , 'result' : result , **kwargs, 'timestamp' : timestamp}
93
-
94
- def error(self , message=None , **kwargs) :
102
+ r = {'status' : 200 , 'message' : message , 'result' : result , **kwargs, 'timestamp' : timestamp}
103
+ if role :
104
+ self._emit( r , role, options)
105
+ return r
106
+
107
+ def error(self , message=None , alert=False, toast=False , options={} , **kwargs) :
108
+ role = None
109
+ if alert :
110
+ role = 'alert'
111
+ elif toast :
112
+ role = 'toast'
95
113
  timestamp = getTimestamp()
96
- return {'status' : 400 , 'message' : message , **kwargs , 'timestamp' : timestamp}
114
+ r = {'status' : 400 , 'message' : message , **kwargs , 'timestamp' : timestamp}
115
+ if role :
116
+ self._emit( r , role , options)
117
+ return r
97
118
 
98
- def internal_error(self , message=None , **kwargs ) :
119
+ def internal_error(self , message=None , alert=False, toast=False , options={} , **kwargs ) :
120
+ role = None
121
+ if alert :
122
+ role = 'alert'
123
+ elif toast :
124
+ role = 'toast'
99
125
  timestamp = getTimestamp()
100
- return {'status' : 500 , 'message' : message , **kwargs , 'timestamp' : timestamp}
101
-
102
- def not_found(self , message=None , **kwargs) :
126
+ r = {'status' : 500 , 'message' : message , **kwargs , 'timestamp' : timestamp}
127
+ if role :
128
+ self._emit( r , role , options)
129
+ return r
130
+
131
+ def not_found(self , message=None , alert=False, toast=False , options={} , **kwargs) :
132
+ role = None
133
+ if alert :
134
+ role = 'alert'
135
+ elif toast :
136
+ role = 'toast'
103
137
  timestamp = getTimestamp()
104
- return {'status' : 404 , 'message' : message , **kwargs , 'timestamp' : timestamp}
138
+ r = {'status' : 404 , 'message' : message , **kwargs , 'timestamp' : timestamp}
139
+ if role :
140
+ self._emit( r , role , options )
141
+ return r
105
142
 
106
- def unauthorized(self , message=None , **kwargs) :
143
+ def unauthorized(self , message=None , alert=False, toast=False , options={} , **kwargs) :
144
+ role = None
145
+ if alert :
146
+ role = 'alert'
147
+ elif toast :
148
+ role = 'toast'
107
149
  timestamp = getTimestamp()
108
- return {'status' : 401 , 'message' : message , **kwargs , 'timestamp' : timestamp}
150
+ r = {'status' : 401 , 'message' : message , **kwargs , 'timestamp' : timestamp}
151
+ if role :
152
+ self._emit( r , role , options)
153
+ return r
109
154
 
110
155
  class AbortRequest :
111
156
  def __init__(self, request ) :
@@ -203,6 +248,7 @@ class UISERVER :
203
248
  self.logger = logger
204
249
  self.stream = Stream()
205
250
  self.simulate_network_delay = False
251
+ self.Response = Response(self.socketio , request )
206
252
  if not self.logger :
207
253
  self.logger = DEBUGGER(
208
254
  name='easy_utils_dev_uiserver',
@@ -267,24 +313,24 @@ class UISERVER :
267
313
  if not alive :
268
314
  break
269
315
  time.sleep(.25)
270
- return Response().ok(message='Request aborted' , abort_timestamp=timestamp , abort_id=id , alive=alive , url=abort.request.get('path'))
316
+ return self.Response.ok(message='Request aborted' , abort_timestamp=timestamp , abort_id=id , alive=alive , url=abort.request.get('path'))
271
317
 
272
318
  else :
273
- return Response().not_found(message='Request not found or request is not abortable. Check request headers for abortable flag.')
319
+ return self.Response.not_found(message='Request not found or request is not abortable. Check request headers for abortable flag.')
274
320
 
275
321
  @self.app.route(f"/request/traceback/<key>" , methods=['GET'])
276
322
  def get_traceback(key : str ) :
277
323
  traceback = self.cache.get(key)
278
324
  if traceback :
279
- return Response().ok(message='Traceback found' , traceback=traceback.get('traceback'))
325
+ return self.Response.ok(message='Traceback found' , traceback=traceback.get('traceback'))
280
326
  else :
281
- return Response().not_found(message='Traceback not found or expired')
327
+ return self.Response.not_found(message='Traceback not found or expired')
282
328
 
283
329
  @self.app.route(f'{self.request_reply_base_url}/<id>' , methods=['GET'])
284
330
  def get_result_of_async_request(id : str ) :
285
331
  request : AbortRequest = self.bg_requests.get(id)
286
332
  if request :
287
- return Response().ok(
333
+ return self.Response.ok(
288
334
  message='Result of async request found' ,
289
335
  result=request.result ,
290
336
  in_progress=request.in_progress ,
@@ -305,7 +351,7 @@ class UISERVER :
305
351
 
306
352
 
307
353
  if (self.serve_with_secret_key) and (request.path not in self.secret_key_execlude_urls) and (request.headers.get('secretkey') != self.secretkey):
308
- return Response().unauthorized(message='Secret key is invalid')
354
+ return self.Response.unauthorized(message='Secret key is invalid')
309
355
 
310
356
  @copy_current_request_context
311
357
  def run_async_job_results( target_func , abort : AbortRequest ) :
@@ -349,11 +395,11 @@ class UISERVER :
349
395
  if request.headers.get('async') == 'false' :
350
396
  target_func = current_app.view_functions.get(request.endpoint)
351
397
  if not target_func:
352
- return Response().not_found(message='Route not found')
398
+ return self.Response.not_found(message='Route not found')
353
399
  th = start_thread(target=run_async_job_results, args=[target_func , abort ])
354
400
  abort.thread = th
355
401
  self.bg_requests[requestId] = abort
356
- return Response().ok(message='Request now in running bg' , abort_id=abort.abort_id)
402
+ return self.Response.ok(message='Request now in running bg' , abort_id=abort.abort_id)
357
403
 
358
404
  if self.return_exception_as_code_400 :
359
405
  @self.app.errorhandler(Exception)
@@ -392,7 +438,7 @@ class UISERVER :
392
438
  }
393
439
  self.logger.error(f'error: {json.dumps(response , indent=4)}')
394
440
  self.cache.set( custom_key=key , item={**response , 'traceback' : str(traceback.format_exc())} , auto_destroy_period=1800 , store_deleted_key=False )
395
- return Response().error( **response )
441
+ return self.Response.error( **response )
396
442
 
397
443
  @self.app.after_request
398
444
  def after_request(response) :
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easy_utils_dev
3
- Version: 2.165
3
+ Version: 2.166
4
4
  Keywords: python3
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Requires-Dist: psutil
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- VERSION = '2.165'
3
+ VERSION = '2.166'
4
4
 
5
5
  # Setting up
6
6
  setup(
File without changes