esd-services-api-client 2.0.7__py3-none-any.whl → 2.0.9__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.
- esd_services_api_client/_version.py +1 -1
- esd_services_api_client/nexus/README.md +16 -4
- esd_services_api_client/nexus/abstractions/nexus_object.py +31 -1
- esd_services_api_client/nexus/algorithms/__init__.py +1 -0
- esd_services_api_client/nexus/algorithms/_baseline_algorithm.py +7 -4
- esd_services_api_client/nexus/algorithms/distributed.py +7 -4
- esd_services_api_client/nexus/algorithms/minimalistic.py +2 -2
- esd_services_api_client/nexus/algorithms/recursive.py +8 -5
- esd_services_api_client/nexus/core/app_core.py +5 -6
- esd_services_api_client/nexus/input/_functions.py +2 -1
- esd_services_api_client/nexus/input/input_reader.py +2 -21
- {esd_services_api_client-2.0.7.dist-info → esd_services_api_client-2.0.9.dist-info}/METADATA +2 -2
- {esd_services_api_client-2.0.7.dist-info → esd_services_api_client-2.0.9.dist-info}/RECORD +15 -15
- {esd_services_api_client-2.0.7.dist-info → esd_services_api_client-2.0.9.dist-info}/WHEEL +1 -1
- {esd_services_api_client-2.0.7.dist-info → esd_services_api_client-2.0.9.dist-info}/LICENSE +0 -0
@@ -1 +1 @@
|
|
1
|
-
__version__ = '2.0.
|
1
|
+
__version__ = '2.0.9'
|
@@ -20,7 +20,7 @@ import socketserver
|
|
20
20
|
import threading
|
21
21
|
from dataclasses import dataclass
|
22
22
|
from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler
|
23
|
-
from typing import Dict, Optional
|
23
|
+
from typing import Dict, Optional, Any
|
24
24
|
|
25
25
|
import pandas
|
26
26
|
from adapta.metrics import MetricsProvider
|
@@ -36,6 +36,7 @@ from esd_services_api_client.nexus.configurations.algorithm_configuration import
|
|
36
36
|
NexusConfiguration,
|
37
37
|
)
|
38
38
|
from esd_services_api_client.nexus.core.app_core import Nexus
|
39
|
+
from esd_services_api_client.nexus.abstractions.nexus_object import AlgorithmResult
|
39
40
|
from esd_services_api_client.nexus.algorithms import MinimalisticAlgorithm
|
40
41
|
from esd_services_api_client.nexus.input import InputReader, InputProcessor
|
41
42
|
|
@@ -229,8 +230,19 @@ class MyInputProcessor(InputProcessor):
|
|
229
230
|
"y_ready": inputs["y"].assign(c=[-1, 1]),
|
230
231
|
}
|
231
232
|
|
233
|
+
@dataclass
|
234
|
+
class MyResult(AlgorithmResult):
|
235
|
+
x: pandas.DataFrame
|
236
|
+
y: pandas.DataFrame
|
237
|
+
|
238
|
+
def dataframe(self) -> pandas.DataFrame:
|
239
|
+
return pandas.concat([self.x, self.y])
|
232
240
|
|
233
|
-
|
241
|
+
def to_kwargs(self) -> dict[str, Any]:
|
242
|
+
pass
|
243
|
+
|
244
|
+
|
245
|
+
class MyAlgorithm(MinimalisticAlgorithm[MyAlgorithmPayload]):
|
234
246
|
async def _context_open(self):
|
235
247
|
pass
|
236
248
|
|
@@ -241,8 +253,8 @@ class MyAlgorithm(MinimalisticAlgorithm[MyAlgorithmPayload, pandas.DataFrame]):
|
|
241
253
|
def __init__(self, metrics_provider: MetricsProvider, logger_factory: LoggerFactory, input_processor: MyInputProcessor):
|
242
254
|
super().__init__(metrics_provider, logger_factory, input_processor)
|
243
255
|
|
244
|
-
async def _run(self, x_ready: pandas.DataFrame, y_ready: pandas.DataFrame, **kwargs) ->
|
245
|
-
return
|
256
|
+
async def _run(self, x_ready: pandas.DataFrame, y_ready: pandas.DataFrame, **kwargs) -> MyResult:
|
257
|
+
return MyResult(x_ready, y_ready)
|
246
258
|
|
247
259
|
|
248
260
|
async def main():
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"""
|
2
2
|
Base classes for all objects used by Nexus.
|
3
3
|
"""
|
4
|
+
import re
|
4
5
|
|
5
6
|
# Copyright (c) 2023. ECCO Sneaks & Data
|
6
7
|
#
|
@@ -19,7 +20,7 @@
|
|
19
20
|
|
20
21
|
|
21
22
|
from abc import ABC, abstractmethod
|
22
|
-
from typing import Generic, TypeVar
|
23
|
+
from typing import Generic, TypeVar, Union, Any
|
23
24
|
|
24
25
|
import pandas
|
25
26
|
import polars
|
@@ -28,6 +29,24 @@ from adapta.metrics import MetricsProvider
|
|
28
29
|
from esd_services_api_client.nexus.abstractions.logger_factory import LoggerFactory
|
29
30
|
|
30
31
|
|
32
|
+
class AlgorithmResult(ABC):
|
33
|
+
"""
|
34
|
+
Interface for algorithm run result. You can store arbitrary data here, but `dataframe` method must be implemented.
|
35
|
+
"""
|
36
|
+
|
37
|
+
@abstractmethod
|
38
|
+
def dataframe(self) -> Union[pandas.DataFrame, polars.DataFrame]:
|
39
|
+
"""
|
40
|
+
Returns the main result dataframe. This will be written to the linked output storage.
|
41
|
+
"""
|
42
|
+
|
43
|
+
@abstractmethod
|
44
|
+
def to_kwargs(self) -> dict[str, Any]:
|
45
|
+
"""
|
46
|
+
Convert result to kwargs for the next iteration (for recursive algorithms)
|
47
|
+
"""
|
48
|
+
|
49
|
+
|
31
50
|
TPayload = TypeVar("TPayload") # pylint: disable=C0103
|
32
51
|
TResult = TypeVar( # pylint: disable=C0103
|
33
52
|
"TResult", pandas.DataFrame, polars.DataFrame
|
@@ -67,3 +86,14 @@ class NexusObject(Generic[TPayload, TResult], ABC):
|
|
67
86
|
"""
|
68
87
|
Optional actions to perform on context closure.
|
69
88
|
"""
|
89
|
+
|
90
|
+
@classmethod
|
91
|
+
def alias(cls) -> str:
|
92
|
+
"""
|
93
|
+
Alias to identify this reader's output
|
94
|
+
"""
|
95
|
+
return re.sub(
|
96
|
+
r"(?<!^)(?=[A-Z])",
|
97
|
+
"_",
|
98
|
+
cls.__name__.lower().replace("reader", "").replace("processor", ""),
|
99
|
+
)
|
@@ -20,3 +20,4 @@
|
|
20
20
|
from esd_services_api_client.nexus.algorithms.minimalistic import *
|
21
21
|
from esd_services_api_client.nexus.algorithms.recursive import *
|
22
22
|
from esd_services_api_client.nexus.algorithms.distributed import *
|
23
|
+
from esd_services_api_client.nexus.algorithms._baseline_algorithm import *
|
@@ -28,12 +28,13 @@ from esd_services_api_client.nexus.abstractions.nexus_object import (
|
|
28
28
|
NexusObject,
|
29
29
|
TPayload,
|
30
30
|
TResult,
|
31
|
+
AlgorithmResult,
|
31
32
|
)
|
32
33
|
from esd_services_api_client.nexus.abstractions.logger_factory import LoggerFactory
|
33
34
|
from esd_services_api_client.nexus.input.input_processor import InputProcessor
|
34
35
|
|
35
36
|
|
36
|
-
class BaselineAlgorithm(NexusObject[TPayload,
|
37
|
+
class BaselineAlgorithm(NexusObject[TPayload, AlgorithmResult]):
|
37
38
|
"""
|
38
39
|
Base class for all algorithm implementations.
|
39
40
|
"""
|
@@ -48,17 +49,19 @@ class BaselineAlgorithm(NexusObject[TPayload, TResult]):
|
|
48
49
|
self._input_processors = input_processors
|
49
50
|
|
50
51
|
@abstractmethod
|
51
|
-
async def _run(self, **kwargs) ->
|
52
|
+
async def _run(self, **kwargs) -> AlgorithmResult:
|
52
53
|
"""
|
53
54
|
Core logic for this algorithm. Implementing this method is mandatory.
|
54
55
|
"""
|
55
56
|
|
56
|
-
async def run(self, **kwargs) ->
|
57
|
+
async def run(self, **kwargs) -> AlgorithmResult:
|
57
58
|
"""
|
58
59
|
Coroutine that executes the algorithm logic.
|
59
60
|
"""
|
60
61
|
|
61
|
-
async def _process(
|
62
|
+
async def _process(
|
63
|
+
processor: InputProcessor[TPayload, TResult]
|
64
|
+
) -> dict[str, TResult]:
|
62
65
|
async with processor as instance:
|
63
66
|
return await instance.process_input(**kwargs)
|
64
67
|
|
@@ -21,13 +21,16 @@
|
|
21
21
|
import asyncio
|
22
22
|
from abc import ABC, abstractmethod
|
23
23
|
|
24
|
-
from esd_services_api_client.nexus.abstractions.nexus_object import
|
24
|
+
from esd_services_api_client.nexus.abstractions.nexus_object import (
|
25
|
+
TPayload,
|
26
|
+
AlgorithmResult,
|
27
|
+
)
|
25
28
|
from esd_services_api_client.nexus.algorithms._baseline_algorithm import (
|
26
29
|
BaselineAlgorithm,
|
27
30
|
)
|
28
31
|
|
29
32
|
|
30
|
-
class DistributedAlgorithm(BaselineAlgorithm[TPayload
|
33
|
+
class DistributedAlgorithm(BaselineAlgorithm[TPayload], ABC):
|
31
34
|
"""
|
32
35
|
Distributed algorithm base class.
|
33
36
|
"""
|
@@ -39,12 +42,12 @@ class DistributedAlgorithm(BaselineAlgorithm[TPayload, TResult], ABC):
|
|
39
42
|
"""
|
40
43
|
|
41
44
|
@abstractmethod
|
42
|
-
async def _fold(self, *split_tasks: asyncio.Task) ->
|
45
|
+
async def _fold(self, *split_tasks: asyncio.Task) -> AlgorithmResult:
|
43
46
|
"""
|
44
47
|
Sub-problem result aggregator.
|
45
48
|
"""
|
46
49
|
|
47
|
-
async def _run(self, **kwargs) ->
|
50
|
+
async def _run(self, **kwargs) -> AlgorithmResult:
|
48
51
|
splits = await self._split(**kwargs)
|
49
52
|
tasks = [asyncio.create_task(split.run(**kwargs)) for split in splits]
|
50
53
|
|
@@ -23,14 +23,14 @@ from adapta.metrics import MetricsProvider
|
|
23
23
|
from injector import inject
|
24
24
|
|
25
25
|
from esd_services_api_client.nexus.abstractions.logger_factory import LoggerFactory
|
26
|
-
from esd_services_api_client.nexus.abstractions.nexus_object import
|
26
|
+
from esd_services_api_client.nexus.abstractions.nexus_object import TPayload
|
27
27
|
from esd_services_api_client.nexus.algorithms._baseline_algorithm import (
|
28
28
|
BaselineAlgorithm,
|
29
29
|
)
|
30
30
|
from esd_services_api_client.nexus.input import InputProcessor
|
31
31
|
|
32
32
|
|
33
|
-
class MinimalisticAlgorithm(BaselineAlgorithm[TPayload
|
33
|
+
class MinimalisticAlgorithm(BaselineAlgorithm[TPayload], ABC):
|
34
34
|
"""
|
35
35
|
Simple algorithm base class.
|
36
36
|
"""
|
@@ -24,14 +24,17 @@ from adapta.metrics import MetricsProvider
|
|
24
24
|
from injector import inject
|
25
25
|
|
26
26
|
from esd_services_api_client.nexus.abstractions.logger_factory import LoggerFactory
|
27
|
-
from esd_services_api_client.nexus.abstractions.nexus_object import
|
27
|
+
from esd_services_api_client.nexus.abstractions.nexus_object import (
|
28
|
+
TPayload,
|
29
|
+
AlgorithmResult,
|
30
|
+
)
|
28
31
|
from esd_services_api_client.nexus.algorithms._baseline_algorithm import (
|
29
32
|
BaselineAlgorithm,
|
30
33
|
)
|
31
34
|
from esd_services_api_client.nexus.input import InputProcessor
|
32
35
|
|
33
36
|
|
34
|
-
class RecursiveAlgorithm(BaselineAlgorithm[TPayload
|
37
|
+
class RecursiveAlgorithm(BaselineAlgorithm[TPayload]):
|
35
38
|
"""
|
36
39
|
Recursive algorithm base class.
|
37
40
|
"""
|
@@ -49,8 +52,8 @@ class RecursiveAlgorithm(BaselineAlgorithm[TPayload, TResult]):
|
|
49
52
|
async def _is_finished(self, **kwargs) -> bool:
|
50
53
|
""" """
|
51
54
|
|
52
|
-
async def run(self, **kwargs) ->
|
55
|
+
async def run(self, **kwargs) -> AlgorithmResult:
|
53
56
|
result = await self._run(**kwargs)
|
54
|
-
if self._is_finished(**result):
|
57
|
+
if self._is_finished(**result.to_kwargs()):
|
55
58
|
return result
|
56
|
-
return await self.run(**result)
|
59
|
+
return await self.run(**result.to_kwargs())
|
@@ -33,8 +33,6 @@ from adapta.storage.blob.base import StorageClient
|
|
33
33
|
from adapta.storage.models.format import DataFrameJsonSerializationFormat
|
34
34
|
from injector import Injector
|
35
35
|
|
36
|
-
from pandas import DataFrame as PandasDataFrame
|
37
|
-
|
38
36
|
import esd_services_api_client.nexus.exceptions
|
39
37
|
from esd_services_api_client.crystal import (
|
40
38
|
add_crystal_args,
|
@@ -43,7 +41,8 @@ from esd_services_api_client.crystal import (
|
|
43
41
|
AlgorithmRunResult,
|
44
42
|
CrystalEntrypointArguments,
|
45
43
|
)
|
46
|
-
from esd_services_api_client.nexus.
|
44
|
+
from esd_services_api_client.nexus.abstractions.nexus_object import AlgorithmResult
|
45
|
+
from esd_services_api_client.nexus.algorithms import (
|
47
46
|
BaselineAlgorithm,
|
48
47
|
)
|
49
48
|
from esd_services_api_client.nexus.configurations.algorithm_configuration import (
|
@@ -181,7 +180,7 @@ class Nexus:
|
|
181
180
|
|
182
181
|
async def _submit_result(
|
183
182
|
self,
|
184
|
-
result: Optional[
|
183
|
+
result: Optional[AlgorithmResult] = None,
|
185
184
|
ex: Optional[BaseException] = None,
|
186
185
|
) -> None:
|
187
186
|
@backoff.on_exception(
|
@@ -193,7 +192,7 @@ class Nexus:
|
|
193
192
|
max_time=10,
|
194
193
|
raise_on_giveup=True,
|
195
194
|
)
|
196
|
-
def save_result(data:
|
195
|
+
def save_result(data: AlgorithmResult) -> str:
|
197
196
|
"""
|
198
197
|
Saves blob and returns the uri
|
199
198
|
|
@@ -209,7 +208,7 @@ class Nexus:
|
|
209
208
|
data_path=output_path, alias="output", data_format="null"
|
210
209
|
).parse_data_path()
|
211
210
|
storage_client.save_data_as_blob(
|
212
|
-
data=data,
|
211
|
+
data=data.dataframe(),
|
213
212
|
blob_path=blob_path,
|
214
213
|
serialization_format=DataFrameJsonSerializationFormat,
|
215
214
|
overwrite=True,
|
@@ -64,7 +64,8 @@ async def resolve_readers(
|
|
64
64
|
return await instance.read()
|
65
65
|
|
66
66
|
read_tasks: dict[str, asyncio.Task] = {
|
67
|
-
reader.alias: asyncio.create_task(_read(reader))
|
67
|
+
reader.__class__.alias(): asyncio.create_task(_read(reader))
|
68
|
+
for reader in readers
|
68
69
|
}
|
69
70
|
await asyncio.wait(fs=read_tasks.values())
|
70
71
|
|
@@ -18,7 +18,6 @@ import functools
|
|
18
18
|
# limitations under the License.
|
19
19
|
#
|
20
20
|
|
21
|
-
import re
|
22
21
|
from abc import abstractmethod
|
23
22
|
from functools import partial
|
24
23
|
from typing import Optional
|
@@ -57,16 +56,6 @@ class InputReader(NexusObject[TPayload, TResult]):
|
|
57
56
|
self._readers = readers
|
58
57
|
self._payload = payload
|
59
58
|
|
60
|
-
@property
|
61
|
-
def alias(self) -> str:
|
62
|
-
"""
|
63
|
-
Alias to identify this reader's output
|
64
|
-
"""
|
65
|
-
if self.socket:
|
66
|
-
return self.socket.alias
|
67
|
-
|
68
|
-
return self._metric_name
|
69
|
-
|
70
59
|
@functools.cached_property
|
71
60
|
def data(self) -> Optional[TResult]:
|
72
61
|
"""
|
@@ -80,17 +69,9 @@ class InputReader(NexusObject[TPayload, TResult]):
|
|
80
69
|
Actual data reader logic. Implementing this method is mandatory for the reader to work
|
81
70
|
"""
|
82
71
|
|
83
|
-
@property
|
84
|
-
def _metric_name(self) -> str:
|
85
|
-
return re.sub(
|
86
|
-
r"(?<!^)(?=[A-Z])",
|
87
|
-
"_",
|
88
|
-
self.__class__.__name__.lower().replace("reader", ""),
|
89
|
-
)
|
90
|
-
|
91
72
|
@property
|
92
73
|
def _metric_tags(self) -> dict[str, str]:
|
93
|
-
return {"entity": self.
|
74
|
+
return {"entity": self.__class__.alias()}
|
94
75
|
|
95
76
|
async def read(self) -> TResult:
|
96
77
|
"""
|
@@ -101,7 +82,7 @@ class InputReader(NexusObject[TPayload, TResult]):
|
|
101
82
|
metric_name="read_input",
|
102
83
|
on_finish_message_template="Finished reading {entity} from path {data_path} in {elapsed:.2f}s seconds",
|
103
84
|
template_args={
|
104
|
-
"entity": self.
|
85
|
+
"entity": self.__class__.alias().upper(),
|
105
86
|
}
|
106
87
|
| {"data_path": self.socket.data_path}
|
107
88
|
if self.socket
|
{esd_services_api_client-2.0.7.dist-info → esd_services_api_client-2.0.9.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: esd-services-api-client
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.9
|
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
|
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Provides-Extra: azure
|
18
18
|
Provides-Extra: nexus
|
19
19
|
Provides-Extra: nexus-polars
|
20
|
-
Requires-Dist: adapta[azure,datadog,storage] (>=2.
|
20
|
+
Requires-Dist: adapta[azure,datadog,storage] (>=2.7.1,<3.0.0)
|
21
21
|
Requires-Dist: azure-identity (>=1.7,<1.8) ; extra == "azure"
|
22
22
|
Requires-Dist: dataclasses-json (>=0.6.0,<0.7.0)
|
23
23
|
Requires-Dist: httpx (>=0.26.0,<0.27.0) ; extra == "nexus"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
esd_services_api_client/__init__.py,sha256=rP0njtEgVSMm-sOVayVfcRUrrubl4lme7HI2zS678Lo,598
|
2
|
-
esd_services_api_client/_version.py,sha256=
|
2
|
+
esd_services_api_client/_version.py,sha256=YHfSoqxCUyNphrTJsW3Ed3e2IVM5_H1IYKii1J5IND4,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,32 +15,32 @@ 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=
|
18
|
+
esd_services_api_client/nexus/README.md,sha256=Q3laWkuCxqVBFsfP58mGAys-jVZeesroIRRMiaQMntc,8688
|
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=jw1xnrU2dEWSUhqNut4RzjRPZFmeNx6czOU_8-q4kuo,2014
|
22
|
-
esd_services_api_client/nexus/abstractions/nexus_object.py,sha256=
|
22
|
+
esd_services_api_client/nexus/abstractions/nexus_object.py,sha256=Y2jwpSa0cLyMtGxOSEpg3F8evvSMxYHx5t5KD92KotE,2759
|
23
23
|
esd_services_api_client/nexus/abstractions/socket_provider.py,sha256=Mv9BWdxw8VY4Gi4EOrdxWK1zsR3-fqIbpyF1xHWchbE,1495
|
24
|
-
esd_services_api_client/nexus/algorithms/__init__.py,sha256=
|
25
|
-
esd_services_api_client/nexus/algorithms/_baseline_algorithm.py,sha256=
|
26
|
-
esd_services_api_client/nexus/algorithms/distributed.py,sha256=
|
27
|
-
esd_services_api_client/nexus/algorithms/minimalistic.py,sha256=
|
28
|
-
esd_services_api_client/nexus/algorithms/recursive.py,sha256=
|
24
|
+
esd_services_api_client/nexus/algorithms/__init__.py,sha256=ySnLfuYuxi28EaqT18oW2Ka50ZR7WOvJlLhmIts-Xgw,898
|
25
|
+
esd_services_api_client/nexus/algorithms/_baseline_algorithm.py,sha256=_3QHWmBDnfByEJTftf4jKzje5GNqftb0_aCfp-8ksCU,2436
|
26
|
+
esd_services_api_client/nexus/algorithms/distributed.py,sha256=kZS4InM4GoT4T6UrXRnfoDn4zxE2iGuqLvxBrzBetZc,1697
|
27
|
+
esd_services_api_client/nexus/algorithms/minimalistic.py,sha256=DOU52Me_W0luUPWmIRBFkJdfapyEkPqVbbvy4V5yQZ8,1457
|
28
|
+
esd_services_api_client/nexus/algorithms/recursive.py,sha256=r4_LIlC_hhIBSrKtL99xE9md3SahctF3R3GT1tIwlg4,1857
|
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
|
32
|
-
esd_services_api_client/nexus/core/app_core.py,sha256=
|
32
|
+
esd_services_api_client/nexus/core/app_core.py,sha256=XvPWnr6wJckjNoM4vWg3CYBnrJOaWZFxiIil1sK-qNc,9420
|
33
33
|
esd_services_api_client/nexus/core/app_dependencies.py,sha256=rIk6R-InJeF1P0DC4bhj4kJTNNxYg39Vhuz8AXfV6pk,6140
|
34
34
|
esd_services_api_client/nexus/exceptions/__init__.py,sha256=JgPXhrvBIi0U1QOF90TYHS8jv_SBQEoRLsEg6rrtRoc,691
|
35
35
|
esd_services_api_client/nexus/exceptions/_nexus_error.py,sha256=b3L8JnNvV2jdxNfuFWh9-j4kVb_VX7gNH5WHKcC-R78,890
|
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=
|
39
|
+
esd_services_api_client/nexus/input/_functions.py,sha256=SonIImDN9Eiw_Eb2tKXXtLtBffPYdhdZKzWiPQPcjW8,2470
|
40
40
|
esd_services_api_client/nexus/input/input_processor.py,sha256=lRtxrvxGXXmDWHsg4mTWCgM8ecu4kroMDqC3UQMGKYk,1827
|
41
|
-
esd_services_api_client/nexus/input/input_reader.py,sha256
|
41
|
+
esd_services_api_client/nexus/input/input_reader.py,sha256=zVv_qYmf-kHfPmyo_mYyPO6HFk-lX8dItLkHtUGYxZQ,3092
|
42
42
|
esd_services_api_client/nexus/input/payload_reader.py,sha256=__r_QjIFRAWwx56X5WUK1qensJUae0vZEb422dzOgSY,2511
|
43
|
-
esd_services_api_client-2.0.
|
44
|
-
esd_services_api_client-2.0.
|
45
|
-
esd_services_api_client-2.0.
|
46
|
-
esd_services_api_client-2.0.
|
43
|
+
esd_services_api_client-2.0.9.dist-info/LICENSE,sha256=0gS6zXsPp8qZhzi1xaGCIYPzb_0e8on7HCeFJe8fOpw,10693
|
44
|
+
esd_services_api_client-2.0.9.dist-info/METADATA,sha256=8wldbRYSsxJWGT8P_Lkl_sIvq9nrf9qt6e5O7xhoRWQ,1332
|
45
|
+
esd_services_api_client-2.0.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
46
|
+
esd_services_api_client-2.0.9.dist-info/RECORD,,
|
File without changes
|