esd-services-api-client 2.0.5__py3-none-any.whl → 2.0.6__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 +1 @@
1
- __version__ = '2.0.5'
1
+ __version__ = '2.0.6'
@@ -239,17 +239,10 @@ class MyAlgorithm(MinimalisticAlgorithm):
239
239
  pass
240
240
 
241
241
  @inject
242
- def __init__(
243
- self,
244
- input_processor: MyInputProcessor,
245
- metrics_provider: MetricsProvider,
246
- logger_factory: LoggerFactory,
247
- ):
248
- super().__init__(input_processor, metrics_provider, logger_factory)
242
+ def __init__(self, metrics_provider: MetricsProvider, logger_factory: LoggerFactory, input_processor: MyInputProcessor):
243
+ super().__init__(metrics_provider, logger_factory, input_processor)
249
244
 
250
- async def _run(
251
- self, x_ready: PandasDataFrame, y_ready: PandasDataFrame, **kwargs
252
- ) -> PandasDataFrame:
245
+ async def _run(self, x_ready: PandasDataFrame, y_ready: PandasDataFrame, **kwargs) -> PandasDataFrame:
253
246
  return pandas.concat([x_ready, y_ready])
254
247
 
255
248
 
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Base algorithm
3
3
  """
4
+ import asyncio
4
5
 
5
6
  # Copyright (c) 2023. ECCO Sneaks & Data
6
7
  #
@@ -19,6 +20,7 @@
19
20
 
20
21
 
21
22
  from abc import abstractmethod
23
+ from functools import reduce
22
24
 
23
25
  from adapta.metrics import MetricsProvider
24
26
  from pandas import DataFrame as PandasDataFrame
@@ -35,12 +37,12 @@ class BaselineAlgorithm(NexusObject):
35
37
 
36
38
  def __init__(
37
39
  self,
38
- input_processor: InputProcessor,
39
40
  metrics_provider: MetricsProvider,
40
41
  logger_factory: LoggerFactory,
42
+ *input_processors: InputProcessor,
41
43
  ):
42
44
  super().__init__(metrics_provider, logger_factory)
43
- self._input_processor = input_processor
45
+ self._input_processors = input_processors
44
46
 
45
47
  @abstractmethod
46
48
  async def _run(self, **kwargs) -> PandasDataFrame:
@@ -52,5 +54,18 @@ class BaselineAlgorithm(NexusObject):
52
54
  """
53
55
  Coroutine that executes the algorithm logic.
54
56
  """
55
- async with self._input_processor as input_processor:
56
- return await self._run(**(await input_processor.process_input(**kwargs)))
57
+
58
+ async def _process(processor: InputProcessor) -> dict[str, PandasDataFrame]:
59
+ async with processor as instance:
60
+ return await instance.process_input(**kwargs)
61
+
62
+ process_tasks: dict[str, asyncio.Task] = {
63
+ input_processor.__class__.__name__.lower(): asyncio.create_task(
64
+ _process(input_processor)
65
+ )
66
+ for input_processor in self._input_processors
67
+ }
68
+ await asyncio.wait(fs=process_tasks.values())
69
+ results = [task.result() for task in process_tasks.values()]
70
+
71
+ return await self._run(**reduce(lambda a, b: a | b, results))
@@ -37,8 +37,8 @@ class MinimalisticAlgorithm(BaselineAlgorithm, ABC):
37
37
  @inject
38
38
  def __init__(
39
39
  self,
40
- input_processor: InputProcessor,
41
40
  metrics_provider: MetricsProvider,
42
41
  logger_factory: LoggerFactory,
42
+ *input_processors: InputProcessor,
43
43
  ):
44
- super().__init__(input_processor, metrics_provider, logger_factory)
44
+ super().__init__(metrics_provider, logger_factory, *input_processors)
@@ -39,20 +39,18 @@ class RecursiveAlgorithm(BaselineAlgorithm):
39
39
  @inject
40
40
  def __init__(
41
41
  self,
42
- input_processor: InputProcessor,
43
42
  metrics_provider: MetricsProvider,
44
43
  logger_factory: LoggerFactory,
44
+ *input_processors: InputProcessor,
45
45
  ):
46
- super().__init__(input_processor, metrics_provider, logger_factory)
46
+ super().__init__(metrics_provider, logger_factory, *input_processors)
47
47
 
48
48
  @abstractmethod
49
49
  async def _is_finished(self, **kwargs) -> bool:
50
50
  """ """
51
51
 
52
52
  async def run(self, **kwargs) -> PandasDataFrame:
53
- result = await self._run(
54
- **(await self._input_processor.process_input(**kwargs))
55
- )
53
+ result = await self._run(**kwargs)
56
54
  if self._is_finished(**result):
57
55
  return result
58
56
  return await self.run(**result)
@@ -62,7 +62,7 @@ async def resolve_readers(*readers: InputReader) -> Dict[str, PandasDataFrame]:
62
62
  return await instance.read()
63
63
 
64
64
  read_tasks: dict[str, asyncio.Task] = {
65
- reader.socket.alias: asyncio.create_task(_read(reader)) for reader in readers
65
+ reader.alias: asyncio.create_task(_read(reader)) for reader in readers
66
66
  }
67
67
  await asyncio.wait(fs=read_tasks.values())
68
68
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esd-services-api-client
3
- Version: 2.0.5
3
+ Version: 2.0.6
4
4
  Summary: Python clients for ESD services
5
5
  Home-page: https://github.com/SneaksAndData/esd-services-api-client
6
6
  License: Apache 2.0
@@ -1,5 +1,5 @@
1
1
  esd_services_api_client/__init__.py,sha256=rP0njtEgVSMm-sOVayVfcRUrrubl4lme7HI2zS678Lo,598
2
- esd_services_api_client/_version.py,sha256=dVcGCZ5wUWMpOJgTrQrOvt6L6HdIhykCRMVFZFr-q20,22
2
+ esd_services_api_client/_version.py,sha256=_rdDXO0eF8Rb-UlqwwfOrLeR0p4mNliGj-gv5nXgbms,22
3
3
  esd_services_api_client/beast/__init__.py,sha256=NTaz_7YoLPK8MCLwbwqH7rW1zDWLxXu2T7fGmMmRxyg,718
4
4
  esd_services_api_client/beast/v3/__init__.py,sha256=TRjB4-T6eIORpMvdylb32_GinrIpYNFmAdshSC1HqHg,749
5
5
  esd_services_api_client/beast/v3/_connector.py,sha256=oPizDQ1KOKOfiyh-jAofKodlpRzrRiELv-rmP_o_oio,11473
@@ -15,17 +15,17 @@ esd_services_api_client/crystal/__init__.py,sha256=afSGQRkDic0ECsJfgu3b291kX8CyU
15
15
  esd_services_api_client/crystal/_api_versions.py,sha256=2BMiQRS0D8IEpWCCys3dge5alVBRCZrOuCR1QAn8UIM,832
16
16
  esd_services_api_client/crystal/_connector.py,sha256=WjfMezWXia41Z8aiNupaT577fk9Sx6uy6V23O6y9hfI,12870
17
17
  esd_services_api_client/crystal/_models.py,sha256=eRhGAl8LjglCyIFwf1bcFBhjbpSuRYucuF2LO388L2E,4025
18
- esd_services_api_client/nexus/README.md,sha256=jnCK4CWsQBNDhxQ-5xzJp4NNrpC93ifr7aYLPW5rp3Q,8402
18
+ esd_services_api_client/nexus/README.md,sha256=xEaI1KAmnWW1BmdzMow8Gr3kL6cG_2ao-0I5dlYV1MA,8349
19
19
  esd_services_api_client/nexus/__init__.py,sha256=e7RPs-qJNQqDHj121TeYx-_YadZSOIyJuAPyhSSXRsE,622
20
20
  esd_services_api_client/nexus/abstractions/__init__.py,sha256=e7RPs-qJNQqDHj121TeYx-_YadZSOIyJuAPyhSSXRsE,622
21
21
  esd_services_api_client/nexus/abstractions/logger_factory.py,sha256=JHl_t0d0ra_k-EixZlkw-s746wHUdBhSU6preqoARtk,2031
22
22
  esd_services_api_client/nexus/abstractions/nexus_object.py,sha256=E9iYmjYjkmS0Uv-VS1ixRhi3zdtQfcSNx4gxad5_aZ0,1780
23
23
  esd_services_api_client/nexus/abstractions/socket_provider.py,sha256=Mv9BWdxw8VY4Gi4EOrdxWK1zsR3-fqIbpyF1xHWchbE,1495
24
24
  esd_services_api_client/nexus/algorithms/__init__.py,sha256=uWX24NHUnUcnOJN2IIp1kaaozCC0rOmB36WxHBCapCY,823
25
- esd_services_api_client/nexus/algorithms/_baseline_algorithm.py,sha256=4Gqp8qV5nunZ_DwZyHAu0vLuF1rls8nnq2zoHy2orME,1825
25
+ esd_services_api_client/nexus/algorithms/_baseline_algorithm.py,sha256=awwaaeDDeVX1fdjfJJDjJ-rzhDExlIhncibeMRBfgf8,2367
26
26
  esd_services_api_client/nexus/algorithms/distributed.py,sha256=iWjx9D6g-ASwTWPkQ9GmInTLymVlxl7UkfEBcEfnkmc,1628
27
- esd_services_api_client/nexus/algorithms/minimalistic.py,sha256=9KvIXXsiOZ9wAOvrIZuOlNYcJLB-SjlQoNpICJu-qeQ,1366
28
- esd_services_api_client/nexus/algorithms/recursive.py,sha256=2YuAeYZ6-K5hcY8NEAAJVyGhtVVQMTZ7wjkWPPo8qeE,1829
27
+ esd_services_api_client/nexus/algorithms/minimalistic.py,sha256=_oNKh92jX3qJzIy1FEJgxFCwxQ0HvFk6SaEX1nF_4kg,1370
28
+ esd_services_api_client/nexus/algorithms/recursive.py,sha256=x98jZn7Dq5s5uxqFeGGDBr4KZqtZsqxvFEk1GDa3Fc4,1764
29
29
  esd_services_api_client/nexus/configurations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  esd_services_api_client/nexus/configurations/algorithm_configuration.py,sha256=sg3ul-Vqd39li42cfMsdWtFJIBNfQ52XLmqKO2sryDg,1086
31
31
  esd_services_api_client/nexus/core/__init__.py,sha256=e7RPs-qJNQqDHj121TeYx-_YadZSOIyJuAPyhSSXRsE,622
@@ -36,11 +36,11 @@ esd_services_api_client/nexus/exceptions/_nexus_error.py,sha256=b3L8JnNvV2jdxNfu
36
36
  esd_services_api_client/nexus/exceptions/input_reader_error.py,sha256=D-xYTKRNREQ2-NGhc88GHOmXCvLNsIVQsH8wf0LLC_0,1760
37
37
  esd_services_api_client/nexus/exceptions/startup_error.py,sha256=f2PIOSdLgT-42eKD6ec8p7nROADshMawCsDGDUbxO_w,1546
38
38
  esd_services_api_client/nexus/input/__init__.py,sha256=DEdzkK43xjNl3XPQy3Q8xHGzXYsMwxCMs1QdEAsS4FI,814
39
- esd_services_api_client/nexus/input/_functions.py,sha256=Na1T5KTExtQTOQohEG-CbnJJ95FVkdZy0wfoPcbvq50,2410
39
+ esd_services_api_client/nexus/input/_functions.py,sha256=dXAs4J7besAWpKOvSC-BQAClk_5aLM7DGKozvIuGkak,2403
40
40
  esd_services_api_client/nexus/input/input_processor.py,sha256=5uJSZIB0epLIVf_Z0IEVAfIo0yvEQ_ioILRlz_s9-X0,1870
41
41
  esd_services_api_client/nexus/input/input_reader.py,sha256=-vh_5tcj-aT96ArLGFpKbeezD-zlmyr877INyMdxjPo,3576
42
42
  esd_services_api_client/nexus/input/payload_reader.py,sha256=__r_QjIFRAWwx56X5WUK1qensJUae0vZEb422dzOgSY,2511
43
- esd_services_api_client-2.0.5.dist-info/LICENSE,sha256=0gS6zXsPp8qZhzi1xaGCIYPzb_0e8on7HCeFJe8fOpw,10693
44
- esd_services_api_client-2.0.5.dist-info/METADATA,sha256=TKu9S0uioyrpqQdNNhNprEcY7ey97K_BZsNGFrRLFKY,1236
45
- esd_services_api_client-2.0.5.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
46
- esd_services_api_client-2.0.5.dist-info/RECORD,,
43
+ esd_services_api_client-2.0.6.dist-info/LICENSE,sha256=0gS6zXsPp8qZhzi1xaGCIYPzb_0e8on7HCeFJe8fOpw,10693
44
+ esd_services_api_client-2.0.6.dist-info/METADATA,sha256=nm4y6NaKszr8oTVvvvCF1phQ6-AzTcO6PIOOVwBBR8o,1236
45
+ esd_services_api_client-2.0.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
46
+ esd_services_api_client-2.0.6.dist-info/RECORD,,