deltafi 2.0rc1724763662165__tar.gz → 2.0rc1725582449381__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.
Potentially problematic release.
This version of deltafi might be problematic. Click here for more details.
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/PKG-INFO +8 -8
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/domain.py +2 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/plugin.py +35 -27
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/result.py +14 -10
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/framework.py +9 -2
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/pyproject.toml +11 -11
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/README.md +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/__init__.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/action.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/actioneventqueue.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/actiontype.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/exception.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/genericmodel.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/input.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/logger.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/metric.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/storage.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/__init__.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/assertions.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/compare_helpers.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/constants.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/egress.py +0 -0
- {deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/transform.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: deltafi
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.0rc1725582449381
|
|
4
4
|
Summary: SDK for DeltaFi plugins and actions
|
|
5
5
|
License: Apache License, Version 2.0
|
|
6
6
|
Keywords: deltafi
|
|
@@ -18,13 +18,13 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Topic :: Software Development
|
|
21
|
-
Requires-Dist: deepdiff (
|
|
22
|
-
Requires-Dist: json-logging (
|
|
23
|
-
Requires-Dist: minio (
|
|
24
|
-
Requires-Dist: pydantic (
|
|
25
|
-
Requires-Dist: redis (
|
|
26
|
-
Requires-Dist: requests (
|
|
27
|
-
Requires-Dist: urllib3 (
|
|
21
|
+
Requires-Dist: deepdiff (==6.7.1)
|
|
22
|
+
Requires-Dist: json-logging (==1.3.0)
|
|
23
|
+
Requires-Dist: minio (==7.2.7)
|
|
24
|
+
Requires-Dist: pydantic (==2.8.2)
|
|
25
|
+
Requires-Dist: redis (==5.0.7)
|
|
26
|
+
Requires-Dist: requests (==2.32.3)
|
|
27
|
+
Requires-Dist: urllib3 (==2.2.2)
|
|
28
28
|
Project-URL: Bug Reports, https://chat.deltafi.org/deltafi/channels/bug-reports
|
|
29
29
|
Project-URL: Documentation, https://docs.deltafi.org/#/
|
|
30
30
|
Project-URL: Source Code, https://gitlab.com/deltafi/deltafi
|
|
@@ -54,6 +54,7 @@ class Context(NamedTuple):
|
|
|
54
54
|
joined_dids: List[str] = None
|
|
55
55
|
memo: str = None
|
|
56
56
|
logger: Logger = None
|
|
57
|
+
saved_content: List = []
|
|
57
58
|
|
|
58
59
|
@classmethod
|
|
59
60
|
def create(cls, context: dict, content_service: ContentService, logger: Logger):
|
|
@@ -121,6 +122,7 @@ class Context(NamedTuple):
|
|
|
121
122
|
joined_dids=joined_dids,
|
|
122
123
|
memo=memo,
|
|
123
124
|
content_service=content_service,
|
|
125
|
+
saved_content=[],
|
|
124
126
|
logger=logger)
|
|
125
127
|
|
|
126
128
|
|
|
@@ -16,29 +16,30 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
+
import importlib
|
|
20
|
+
import inspect
|
|
19
21
|
import json
|
|
20
22
|
import os
|
|
23
|
+
import pkgutil
|
|
21
24
|
import sys
|
|
22
25
|
import threading
|
|
23
26
|
import time
|
|
24
27
|
import traceback
|
|
25
28
|
from datetime import datetime, timezone, timedelta
|
|
29
|
+
from importlib import metadata
|
|
26
30
|
from os.path import isdir, isfile, join
|
|
27
31
|
from pathlib import Path
|
|
28
32
|
from typing import List
|
|
29
|
-
import importlib
|
|
30
|
-
import inspect
|
|
31
|
-
import pkgutil
|
|
32
33
|
|
|
33
|
-
from importlib import metadata
|
|
34
34
|
import requests
|
|
35
|
+
|
|
36
|
+
from deltafi.action import Action, Join
|
|
35
37
|
from deltafi.actioneventqueue import ActionEventQueue
|
|
36
38
|
from deltafi.domain import Event, ActionExecution
|
|
37
39
|
from deltafi.exception import ExpectedContentException, MissingMetadataException
|
|
38
40
|
from deltafi.logger import get_logger
|
|
39
41
|
from deltafi.result import ErrorResult
|
|
40
42
|
from deltafi.storage import ContentService
|
|
41
|
-
from deltafi.action import Action, Join
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
def _coordinates():
|
|
@@ -185,15 +186,15 @@ class Plugin(object):
|
|
|
185
186
|
actions = [self._action_json(action) for action in self.actions]
|
|
186
187
|
|
|
187
188
|
return {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
189
|
+
'pluginCoordinates': self.coordinates.__json__(),
|
|
190
|
+
'displayName': self.display_name,
|
|
191
|
+
'description': self.description,
|
|
192
|
+
'actionKitVersion': metadata.version('deltafi'),
|
|
193
|
+
'dependencies': [],
|
|
194
|
+
'actions': actions,
|
|
195
|
+
'variables': variables,
|
|
196
|
+
'flowPlans': flows
|
|
197
|
+
}
|
|
197
198
|
|
|
198
199
|
def _register(self):
|
|
199
200
|
url = f"{self.core_url}/plugins"
|
|
@@ -256,6 +257,24 @@ class Plugin(object):
|
|
|
256
257
|
finally:
|
|
257
258
|
time.sleep(10)
|
|
258
259
|
|
|
260
|
+
@staticmethod
|
|
261
|
+
def to_response(event, start_time, stop_time, result):
|
|
262
|
+
response = {
|
|
263
|
+
'did': event.context.did,
|
|
264
|
+
'flowName': event.context.flow_name,
|
|
265
|
+
'flowId': event.context.flow_id,
|
|
266
|
+
'actionName': event.context.action_name,
|
|
267
|
+
'actionId': event.context.action_id,
|
|
268
|
+
'start': start_time,
|
|
269
|
+
'stop': stop_time,
|
|
270
|
+
'type': result.result_type,
|
|
271
|
+
'metrics': [metric.json() for metric in result.metrics],
|
|
272
|
+
'savedContent': [content.json() for content in event.context.saved_content]
|
|
273
|
+
}
|
|
274
|
+
if result.result_key is not None:
|
|
275
|
+
response[result.result_key] = result.response()
|
|
276
|
+
return response
|
|
277
|
+
|
|
259
278
|
def _do_action(self, action):
|
|
260
279
|
action_logger = get_logger(self.action_name(action))
|
|
261
280
|
|
|
@@ -287,19 +306,8 @@ class Plugin(object):
|
|
|
287
306
|
|
|
288
307
|
action.action_execution = None
|
|
289
308
|
|
|
290
|
-
response =
|
|
291
|
-
|
|
292
|
-
'flowName': event.context.flow_name,
|
|
293
|
-
'flowId': event.context.flow_id,
|
|
294
|
-
'actionName': event.context.action_name,
|
|
295
|
-
'actionId': event.context.action_id,
|
|
296
|
-
'start': start_time,
|
|
297
|
-
'stop': time.time(),
|
|
298
|
-
'type': result.result_type,
|
|
299
|
-
'metrics': [metric.json() for metric in result.metrics]
|
|
300
|
-
}
|
|
301
|
-
if result.result_key is not None:
|
|
302
|
-
response[result.result_key] = result.response()
|
|
309
|
+
response = Plugin.to_response(
|
|
310
|
+
event, start_time, time.time(), result)
|
|
303
311
|
|
|
304
312
|
topic = 'dgs'
|
|
305
313
|
if event.return_address:
|
|
@@ -118,15 +118,17 @@ class IngressResultItem:
|
|
|
118
118
|
return self
|
|
119
119
|
|
|
120
120
|
def save_string_content(self, string_data: str, name: str, media_type: str):
|
|
121
|
-
segment = self.context.content_service.put_str(self.
|
|
122
|
-
self.
|
|
123
|
-
|
|
121
|
+
segment = self.context.content_service.put_str(self._did, string_data)
|
|
122
|
+
c = Content(name=name, segments=[segment], media_type=media_type, content_service=self.context.content_service)
|
|
123
|
+
self.content.append(c)
|
|
124
|
+
self.context.saved_content.append(c)
|
|
124
125
|
return self
|
|
125
126
|
|
|
126
127
|
def save_byte_content(self, byte_data: bytes, name: str, media_type: str):
|
|
127
|
-
segment = self.context.content_service.put_bytes(self.
|
|
128
|
-
self.
|
|
129
|
-
|
|
128
|
+
segment = self.context.content_service.put_bytes(self._did, byte_data)
|
|
129
|
+
c = Content(name=name, segments=[segment], media_type=media_type, content_service=self.context.content_service)
|
|
130
|
+
self.content.append(c)
|
|
131
|
+
self.context.saved_content.append(c)
|
|
130
132
|
return self
|
|
131
133
|
|
|
132
134
|
def set_metadata(self, metadata: dict):
|
|
@@ -195,14 +197,16 @@ class TransformResult(Result):
|
|
|
195
197
|
|
|
196
198
|
def save_string_content(self, string_data: str, name: str, media_type: str):
|
|
197
199
|
segment = self.context.content_service.put_str(self.context.did, string_data)
|
|
198
|
-
self.
|
|
199
|
-
|
|
200
|
+
c = Content(name=name, segments=[segment], media_type=media_type, content_service=self.context.content_service)
|
|
201
|
+
self.content.append(c)
|
|
202
|
+
self.context.saved_content.append(c)
|
|
200
203
|
return self
|
|
201
204
|
|
|
202
205
|
def save_byte_content(self, byte_data: bytes, name: str, media_type: str):
|
|
203
206
|
segment = self.context.content_service.put_bytes(self.context.did, byte_data)
|
|
204
|
-
self.
|
|
205
|
-
|
|
207
|
+
c = Content(name=name, segments=[segment], media_type=media_type, content_service=self.context.content_service)
|
|
208
|
+
self.content.append(c)
|
|
209
|
+
self.context.saved_content.append(c)
|
|
206
210
|
return self
|
|
207
211
|
|
|
208
212
|
def set_metadata(self, metadata: dict):
|
|
@@ -26,7 +26,6 @@ from deltafi.logger import get_logger
|
|
|
26
26
|
from deltafi.metric import Metric
|
|
27
27
|
from deltafi.result import ErrorResult, FilterResult
|
|
28
28
|
from deltafi.storage import Segment
|
|
29
|
-
|
|
30
29
|
from .assertions import *
|
|
31
30
|
from .compare_helpers import GenericCompareHelper, CompareHelper
|
|
32
31
|
from .constants import *
|
|
@@ -210,6 +209,7 @@ class ActionTest(ABC):
|
|
|
210
209
|
self.loaded_inputs = []
|
|
211
210
|
self.package_name = package_name
|
|
212
211
|
self.res_path = ""
|
|
212
|
+
self.context = None
|
|
213
213
|
|
|
214
214
|
def __reset__(self, did: str):
|
|
215
215
|
self.content_service = InternalContentService()
|
|
@@ -219,6 +219,7 @@ class ActionTest(ABC):
|
|
|
219
219
|
self.did = did
|
|
220
220
|
self.loaded_inputs = []
|
|
221
221
|
self.res_path = ""
|
|
222
|
+
self.context = None
|
|
222
223
|
|
|
223
224
|
def load_file(self, ioc: IOContent):
|
|
224
225
|
file_res = self.res_path.joinpath(ioc.file_name)
|
|
@@ -266,7 +267,7 @@ class ActionTest(ABC):
|
|
|
266
267
|
def make_context(self, test_case: TestCaseBase):
|
|
267
268
|
action_name = INGRESS_FLOW + "." + test_case.action.__class__.__name__
|
|
268
269
|
join = {} if test_case.join_meta else None
|
|
269
|
-
|
|
270
|
+
self.context = Context(
|
|
270
271
|
did=self.did,
|
|
271
272
|
delta_file_name=test_case.file_name,
|
|
272
273
|
data_source="DATASRC",
|
|
@@ -278,8 +279,10 @@ class ActionTest(ABC):
|
|
|
278
279
|
hostname=HOSTNAME,
|
|
279
280
|
system_name=SYSTEM,
|
|
280
281
|
content_service=self.content_service,
|
|
282
|
+
saved_content=[],
|
|
281
283
|
join=join,
|
|
282
284
|
logger=get_logger())
|
|
285
|
+
return self.context
|
|
283
286
|
|
|
284
287
|
def make_event(self, test_case: TestCaseBase):
|
|
285
288
|
return Event(delta_file_messages=self.make_df_msgs(test_case), context=self.make_context(test_case),
|
|
@@ -354,3 +357,7 @@ class ActionTest(ABC):
|
|
|
354
357
|
assert_equal_len(expected_metrics, results)
|
|
355
358
|
for index, expected in enumerate(expected_metrics):
|
|
356
359
|
self.compare_one_metric(expected, results[index])
|
|
360
|
+
|
|
361
|
+
def has_saved_content__size(self, count: int):
|
|
362
|
+
assert_equal_with_label(
|
|
363
|
+
count, len(self.context.saved_content), "savedContent")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "deltafi"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.0rc1725582449381"
|
|
4
4
|
description = "SDK for DeltaFi plugins and actions"
|
|
5
5
|
authors = ["DeltaFi <deltafi@systolic.com>"]
|
|
6
6
|
license = "Apache License, Version 2.0"
|
|
@@ -21,21 +21,21 @@ classifiers = [
|
|
|
21
21
|
|
|
22
22
|
[tool.poetry.dependencies]
|
|
23
23
|
python = "^3.9"
|
|
24
|
-
deepdiff = "
|
|
25
|
-
json-logging = "
|
|
26
|
-
minio = "
|
|
27
|
-
pydantic = "
|
|
28
|
-
redis = "
|
|
29
|
-
requests = "
|
|
30
|
-
urllib3 = "
|
|
24
|
+
deepdiff = "==6.7.1"
|
|
25
|
+
json-logging = "==1.3.0"
|
|
26
|
+
minio = "==7.2.7"
|
|
27
|
+
pydantic = "==2.8.2"
|
|
28
|
+
redis = "==5.0.7"
|
|
29
|
+
requests = "==2.32.3"
|
|
30
|
+
urllib3 = "==2.2.2"
|
|
31
31
|
|
|
32
32
|
[tool.poetry.group.test]
|
|
33
33
|
optional = true
|
|
34
34
|
|
|
35
35
|
[tool.poetry.group.test.dependencies]
|
|
36
|
-
pytest = "
|
|
37
|
-
pytest-mock = "
|
|
38
|
-
mockito = "
|
|
36
|
+
pytest = "==8.3.2"
|
|
37
|
+
pytest-mock = "==3.14.0"
|
|
38
|
+
mockito = "==1.5.0"
|
|
39
39
|
|
|
40
40
|
[tool.poetry.urls]
|
|
41
41
|
'Source Code' = "https://gitlab.com/deltafi/deltafi"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deltafi-2.0rc1724763662165 → deltafi-2.0rc1725582449381}/deltafi/test_kit/compare_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|