polyswarm-engine 3.2.1__py2.py3-none-any.whl → 3.2.5__py2.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.
@@ -1,5 +1,5 @@
1
1
  # flake8: noqa
2
- __VERSION__ = '3.2.1'
2
+ __VERSION__ = '3.2.5'
3
3
 
4
4
  from .bidutils import (
5
5
  bid_max,
@@ -46,10 +46,14 @@ class CeleryBackend:
46
46
  lifecycle=contextlib.nullcontext,
47
47
  deliver_func=None,
48
48
  deliver_task_name=None,
49
+ backend_kwargs=None,
49
50
  ):
50
51
  # lazy setting the backend
51
52
  if CeleryBackend.app is None:
52
- CeleryBackend.app = celery.Celery('polyswarm_engine_celery_backend', config_source=CeleryConfig())
53
+ config_kwargs: dict = backend_kwargs or {}
54
+ CeleryBackend.app = celery.Celery(
55
+ 'polyswarm_engine_celery_backend', config_source=CeleryConfig(**config_kwargs)
56
+ )
53
57
 
54
58
  self.name = name
55
59
  self._analyze = analyze
@@ -1,11 +1,20 @@
1
1
  import functools
2
2
  import importlib
3
+ import io
4
+ import os
5
+ import sys
6
+ import logging
3
7
 
8
+ from celery.apps.worker import Worker
4
9
  from celery.worker.consumer import mingle, gossip
5
10
  from celery.worker.worker import WorkController
11
+ import click
6
12
 
7
13
  import polyswarm_engine.settings
8
14
 
15
+ logger = logging.getLogger(__name__)
16
+
17
+
9
18
  # monkey patch to enable -Ofair, the most stable during our tests
10
19
  _original_setup_defaults = WorkController.setup_defaults
11
20
  @functools.wraps(WorkController.setup_defaults)
@@ -17,6 +26,25 @@ WorkController.setup_defaults = _new_setup_defaults
17
26
  mingle.Mingle.compatible_transports = {}
18
27
  gossip.Gossip.compatible_transports = {}
19
28
 
29
+
30
+ # monkey patch to make emit_banner use logging instead of print(sys.__stdout__)
31
+ _original_emit_banner = Worker.emit_banner
32
+ @functools.wraps(Worker.emit_banner)
33
+ def _log_emit_banner(self):
34
+ original_stdout = sys.__stdout__
35
+ sys.__stdout__ = buffer = io.StringIO()
36
+ try:
37
+ _original_emit_banner(self)
38
+ finally:
39
+ sys.__stdout__ = original_stdout
40
+ banner_text = buffer.getvalue()
41
+ if os.getenv('LOG_FORMAT') == 'json':
42
+ # Celery outputs the banner as Cyan via ASCII terminal magic
43
+ banner_text = click.unstyle(banner_text)
44
+ logger.info(banner_text.lstrip())
45
+ Worker.emit_banner = _log_emit_banner
46
+
47
+
20
48
  ##########################################
21
49
  # Celery Configuration
22
50
  ##########################################
@@ -16,7 +16,7 @@ class EngineManager:
16
16
  self.config = config or dict()
17
17
  self.ctx = dict()
18
18
  self.backend: CeleryBackend|None = None
19
- self.backend_kwargs = dict()
19
+ self.backend_kwargs = backend_kwargs or dict()
20
20
  self.cmd = CommandRegistry()
21
21
  # in case a lifecycle is not defined, use a nop context manager
22
22
  self._lifecycle = lambda: contextlib.nullcontext()
@@ -42,7 +42,7 @@ class EngineManager:
42
42
  self._analyze,
43
43
  self._head,
44
44
  self._lifecycle,
45
- **self.backend_kwargs,
45
+ backend_kwargs=self.backend_kwargs,
46
46
  )
47
47
  with self.backend.run() as backend:
48
48
  yield backend
@@ -86,7 +86,7 @@ def get_logging(log_level=None, handler='console'):
86
86
  'click': {
87
87
  'level': log_level,
88
88
  'class': 'click_log.core.ClickHandler',
89
- 'formatter': 'click',
89
+ 'formatter': 'click' if LOG_FORMAT == 'text' else LOG_FORMAT,
90
90
  },
91
91
  },
92
92
  'loggers': {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyswarm_engine
3
- Version: 3.2.1
3
+ Version: 3.2.5
4
4
  Summary: Polyswarm engine libarary
5
5
  Author-email: Polyswarm Developers <developers@polyswarm.io>
6
6
  Project-URL: Homepage, https://github.com/polyswarm/polyswarm_engine
@@ -1,21 +1,21 @@
1
- polyswarm_engine/__init__.py,sha256=EYM84AeJD0FK02r9toX9T0GC_TQUZmMEvkrmUZMySow,838
2
- polyswarm_engine/backend.py,sha256=yqkduAdAMwxeKnfaQIaacwZMFyKlvwEgXKXqmA0r-X8,11580
1
+ polyswarm_engine/__init__.py,sha256=uDtStO5e9V0PUSMGyME5okHnUO_m9tVRV0p1hVM2E6A,838
2
+ polyswarm_engine/backend.py,sha256=ja4taph4bX6xQ5sy_zOUMs8QFbBjXxZsrA1LrdnLcgM,11709
3
3
  polyswarm_engine/bidutils.py,sha256=E-Oo7-LCCe5lNnoMKEmVDLW6lErqdkaTPfWoL-9YhJk,2881
4
4
  polyswarm_engine/bounty.py,sha256=gAHbApVqz07isKhzVSp4WX9PTic4Z0gTF_Lim9i0GE0,12627
5
- polyswarm_engine/celeryconfig.py,sha256=xirgl2YMru8CeTB3xpq3u0OoxBGoC7rEgW6_ytqePC0,2831
5
+ polyswarm_engine/celeryconfig.py,sha256=7_mgzcegdgg5UOW_Iyach1HdsnpcVKr2uP8DZ9Npk-c,3610
6
6
  polyswarm_engine/cli.py,sha256=NwQmK1dFaROlfzrSqvQg5xPJVoDOC1-IWtH2xFrtirY,11278
7
7
  polyswarm_engine/command.py,sha256=RwdMpDeCvO0YM-7zKdej6o-8-zw_E8ltqxJ3MQvF2vw,915
8
8
  polyswarm_engine/constants.py,sha256=zeQRLSmYZH2kerzj5-S7ogsEloePreS2OsTQIw-lYeI,1379
9
- polyswarm_engine/engine.py,sha256=y7-wopHYTmCfyljJq4TbqKkOgz-Z5bQRvFv5liZhGcg,3789
9
+ polyswarm_engine/engine.py,sha256=RRznueYMu3RNbjj6JJcrUaeFWHMWQe53uwzsm5IR4kY,3820
10
10
  polyswarm_engine/exceptions.py,sha256=KEffKHrhX-2_ujoF9IBquMF5iq0amqP5uUkxoqkp31E,900
11
- polyswarm_engine/log_config.py,sha256=Dyzd30_zQtfRqPT7o2kQO1DgySzU4L1ykQDjUxnrbUk,3544
11
+ polyswarm_engine/log_config.py,sha256=NnC4f5ukBW16LoXEskaIb98hi7LGZlOWv2F5OvuZf5A,3584
12
12
  polyswarm_engine/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  polyswarm_engine/settings.py,sha256=kqANh7JTMWu8_FOf_5l2tLFANoSM9jDxjnNYMzg5HBA,2179
14
14
  polyswarm_engine/typing.py,sha256=Z6nroMW-xsR0uuJuUfsi7IQPEt_ydBa2pYUYTeFqUmI,3685
15
15
  polyswarm_engine/utils.py,sha256=2-ghShvJG8jsmNCpS4yv_1FH0r0pg2r67GvQru8v9aE,15492
16
16
  polyswarm_engine/wine.py,sha256=f01TEFv5Mvzv4_nGuEo1zYK19CJHAEFqJ4-8rva0xJA,4581
17
17
  polyswarm_engine/wsgi.py,sha256=9vv1WR0Rzcz7qYeReUrQw0ESHpK_3VbpMcIbmJiul-Q,4197
18
- polyswarm_engine-3.2.1.dist-info/METADATA,sha256=eBjIDbd_yqo8x0AZnQs-5QS3jh5W0mYdz98kO2h_OMI,34303
19
- polyswarm_engine-3.2.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
20
- polyswarm_engine-3.2.1.dist-info/top_level.txt,sha256=iEEYOgxT_azXd38CWlfY_W0xOhxFBzBnwmfe62g96Pk,17
21
- polyswarm_engine-3.2.1.dist-info/RECORD,,
18
+ polyswarm_engine-3.2.5.dist-info/METADATA,sha256=3bQCGU-DArbHBpnOXU041sXbov09Ho015vkjqE-bXjU,34303
19
+ polyswarm_engine-3.2.5.dist-info/WHEEL,sha256=Mk1ST5gDzEO5il5kYREiBnzzM469m5sI8ESPl7TRhJY,110
20
+ polyswarm_engine-3.2.5.dist-info/top_level.txt,sha256=iEEYOgxT_azXd38CWlfY_W0xOhxFBzBnwmfe62g96Pk,17
21
+ polyswarm_engine-3.2.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any