deltafi 2.0rc1719271450675__py3-none-any.whl → 2.0rc1720728217472__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.

Potentially problematic release.


This version of deltafi might be problematic. Click here for more details.

@@ -0,0 +1,128 @@
1
+ #
2
+ # DeltaFi - Data transformation and enrichment platform
3
+ #
4
+ # Copyright 2021-2023 DeltaFi Contributors <deltafi@deltafi.org>
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ from typing import List
20
+
21
+ from deltafi.result import LoadResult, ReinjectResult
22
+
23
+ from .assertions import *
24
+ from .compare_helpers import GenericCompareHelper, CompareHelper
25
+ from .framework import TestCaseBase, ActionTest, IOContent
26
+
27
+
28
+ class LoadTestCase(TestCaseBase):
29
+ def __init__(self, fields: Dict):
30
+ super().__init__(fields)
31
+ self.metadata = {}
32
+ self.delete_metadata_keys = []
33
+ self.annotations = {}
34
+ self.domains = []
35
+ self.domain_cmp_tool = GenericCompareHelper()
36
+ self.children = []
37
+
38
+ def set_domain_compare_tool(self, helper: CompareHelper):
39
+ self.domain_cmp_tool = helper
40
+
41
+ def expect_load_result(self, metadata: Dict, delete_metadata_keys: List[str], annotations: Dict, domains: List):
42
+ self.expected_result_type = LoadResult
43
+ self.metadata = metadata
44
+ self.delete_metadata_keys = delete_metadata_keys
45
+ self.annotations = annotations
46
+ self.domains = domains
47
+
48
+ def add_reinject_child(self, filename: str, flow: str, content: IOContent, metadata: Dict):
49
+ self.expected_result_type = ReinjectResult
50
+ self.children.append(
51
+ {
52
+ "filename": filename,
53
+ "flow": flow,
54
+ "content": content,
55
+ "metadata": metadata
56
+ }
57
+ )
58
+
59
+
60
+ class LoadActionTest(ActionTest):
61
+ def __init__(self, package_name: str):
62
+ """
63
+ Provides structure for testing DeltaFi Load action
64
+ Args:
65
+ package_name: name of the actions package for finding resources
66
+ """
67
+ super().__init__(package_name)
68
+
69
+ def load(self, test_case: LoadTestCase):
70
+ if test_case.expected_result_type == ReinjectResult:
71
+ self.expect_reinject_result(test_case)
72
+ elif test_case.expected_result_type == LoadResult:
73
+ self.expect_load_result(test_case)
74
+ else:
75
+ super().execute(test_case)
76
+
77
+ def expect_load_result(self, test_case: LoadTestCase):
78
+ result = super().run_and_check_result_type(test_case, LoadResult)
79
+ self.assert_load_result(test_case, result)
80
+
81
+ def expect_reinject_result(self, test_case: LoadTestCase):
82
+ result = super().run_and_check_result_type(test_case, ReinjectResult)
83
+ self.assert_reinject_result(test_case, result)
84
+
85
+ def assert_load_result(self, test_case: LoadTestCase, result: LoadResult):
86
+ # Check metrics
87
+ self.compare_metrics(test_case.expected_metrics, result.metrics)
88
+
89
+ # Check output
90
+ self.compare_all_output(test_case.compare_tool, result.content)
91
+
92
+ # Check metadata
93
+ assert_keys_and_values(test_case.metadata, result.metadata)
94
+
95
+ # Check deleted metadata
96
+ for key in test_case.delete_metadata_keys:
97
+ assert_key_in(key, result.delete_metadata_keys)
98
+
99
+ # Check annotations
100
+ assert_keys_and_values(test_case.annotations, result.annotations)
101
+
102
+ # Check domains
103
+ self.compare_domains(test_case.domain_cmp_tool, test_case.domains, result.domains)
104
+
105
+ def assert_reinject_result(self, test_case: LoadTestCase, actual: ReinjectResult):
106
+ # Check metrics
107
+ self.compare_metrics(test_case.expected_metrics, actual.metrics)
108
+
109
+ # Check reinject
110
+ assert_equal_len(test_case.children, actual.children)
111
+ for index, expected in enumerate(test_case.children):
112
+ reinject_child = actual.children[index]
113
+ assert_equal(expected['filename'], reinject_child.filename)
114
+ assert_equal(expected['flow'], reinject_child.flow)
115
+ assert_keys_and_values(expected['metadata'], reinject_child.metadata)
116
+
117
+ expected_value = expected['content']
118
+ child_content = reinject_child.content[0]
119
+ seg_id = child_content.segments[0].uuid
120
+ actual_content = self.content_service.get_output(seg_id)
121
+
122
+ if type(expected_value) == str:
123
+ test_case.domain_cmp_tool.compare(expected_value, actual_content, f"RI_child[{index}]")
124
+ elif type(expected_value) == IOContent:
125
+ expected_data = self.load_file(expected_value)
126
+ test_case.domain_cmp_tool.compare(expected_data, actual_content, f"RI_child[{index}]")
127
+ else:
128
+ raise ValueError(f"unknown expected_value type: {type(expected_value)}")
@@ -18,34 +18,24 @@
18
18
 
19
19
  from typing import List
20
20
 
21
- from deltafi.result import TransformResult, TransformResults
21
+ from deltafi.result import TransformResult
22
22
 
23
23
  from .assertions import *
24
- from .framework import TestCaseBase, ActionTest, IOContent
24
+ from .framework import TestCaseBase, ActionTest
25
25
 
26
26
 
27
27
  class TransformTestCase(TestCaseBase):
28
28
  def __init__(self, fields: Dict):
29
29
  super().__init__(fields)
30
- self.results = []
30
+ self.metadata = {}
31
+ self.delete_metadata_keys = []
32
+ self.annotations = {}
31
33
 
32
- def expect_transform_result(self):
34
+ def expect_transform_result(self, metadata: Dict, delete_metadata_keys: List[str], annotations: Dict):
33
35
  self.expected_result_type = TransformResult
34
-
35
- def expect_transform_results(self):
36
- self.expected_result_type = TransformResults
37
-
38
- def add_transform_result(self, content: List[IOContent], metadata: Dict, delete_metadata_keys: List[str],
39
- annotations: Dict, name: str = None):
40
- self.results.append(
41
- {
42
- 'content': content,
43
- 'metadata': metadata,
44
- 'delete_metadata_keys': delete_metadata_keys,
45
- 'annotations': annotations,
46
- 'name': name
47
- }
48
- )
36
+ self.metadata = metadata
37
+ self.delete_metadata_keys = delete_metadata_keys
38
+ self.annotations = annotations
49
39
 
50
40
 
51
41
  class TransformActionTest(ActionTest):
@@ -60,8 +50,6 @@ class TransformActionTest(ActionTest):
60
50
  def transform(self, test_case: TransformTestCase):
61
51
  if test_case.expected_result_type == TransformResult:
62
52
  self.expect_transform_result(test_case)
63
- elif test_case.expected_result_type == TransformResults:
64
- self.expect_transform_results(test_case)
65
53
  else:
66
54
  super().execute(test_case)
67
55
 
@@ -69,35 +57,19 @@ class TransformActionTest(ActionTest):
69
57
  result = super().run_and_check_result_type(test_case, TransformResult)
70
58
  self.assert_transform_result(test_case, result)
71
59
 
72
- def expect_transform_results(self, test_case: TransformTestCase):
73
- result = super().run_and_check_result_type(test_case, TransformResults)
74
- self.assert_transform_results(test_case, result)
75
-
76
- def assert_transform_results(self, test_case: TransformTestCase, result: TransformResults):
77
- assert_equal_len(test_case.results, result.named_results)
78
- for index, named_result in enumerate(result.named_results):
79
- self.compare_one_transform_result(test_case, named_result.result, index)
80
- expected = test_case.results[index]
81
- if 'name' in expected:
82
- assert_equal_with_label(expected["name"], named_result.name, f"name[{index}]")
83
-
84
60
  def assert_transform_result(self, test_case: TransformTestCase, result: TransformResult):
85
61
  # Check metrics
86
62
  self.compare_metrics(test_case.expected_metrics, result.metrics)
87
- self.compare_one_transform_result(test_case, result, 0)
88
-
89
- def compare_one_transform_result(self, test_case: TransformTestCase, result: TransformResult, index: int):
90
- expected = test_case.results[index]
91
63
 
92
64
  # Check output
93
- self.compare_content_list(test_case.compare_tool, expected['content'], result.content)
65
+ self.compare_all_output(test_case.compare_tool, result.content)
94
66
 
95
67
  # Check metadata
96
- assert_keys_and_values(expected['metadata'], result.metadata)
68
+ assert_keys_and_values(test_case.metadata, result.metadata)
97
69
 
98
70
  # Check deleted metadata
99
- for key in expected['delete_metadata_keys']:
71
+ for key in test_case.delete_metadata_keys:
100
72
  assert_key_in(key, result.delete_metadata_keys)
101
73
 
102
74
  # Check annotations
103
- assert_keys_and_values(expected['annotations'], result.annotations)
75
+ assert_keys_and_values(test_case.annotations, result.annotations)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltafi
3
- Version: 2.0rc1719271450675
3
+ Version: 2.0rc1720728217472
4
4
  Summary: SDK for DeltaFi plugins and actions
5
5
  License: Apache License, Version 2.0
6
6
  Keywords: deltafi
@@ -20,11 +20,11 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Topic :: Software Development
21
21
  Requires-Dist: deepdiff (>=6.7.1)
22
22
  Requires-Dist: json-logging (>=1.3.0)
23
- Requires-Dist: minio (>=7.2.5)
24
- Requires-Dist: pydantic (>=2.7.1)
25
- Requires-Dist: redis (>=5.0.4)
23
+ Requires-Dist: minio (>=7.2.3)
24
+ Requires-Dist: pydantic (>=2.5.3)
25
+ Requires-Dist: redis (>=5.0.1)
26
26
  Requires-Dist: requests (>=2.31.0)
27
- Requires-Dist: urllib3 (>=2.2.1)
27
+ Requires-Dist: urllib3 (>=2.1.0)
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
@@ -1,15 +1,15 @@
1
1
  deltafi/__init__.py,sha256=qv6y7PpBG0ekTN9EuD9Lj8JYOLVqZA6tvHwgjplncAM,709
2
- deltafi/action.py,sha256=DGtbzrOM5BJRfn0NGAm19rLgzQyt6iiXy2_VpxHSyaw,5343
2
+ deltafi/action.py,sha256=TM8HwfC12GgfHMBWPmO88N7J9xvwGO8BMwxKTNqwg9A,10498
3
3
  deltafi/actioneventqueue.py,sha256=mCRE1PFXy_KvaeezTeMze5N400CO1V06zEF8FFD6xZk,2847
4
- deltafi/actiontype.py,sha256=V7JbTgHQIaWQ2N36pG-XV7kAXhq8qvj954z71iHw_wI,913
5
- deltafi/domain.py,sha256=TZoawrb09TIMhCEAQKP2GVLdT4c3qBRsrl4v_F4R-5Q,12072
6
- deltafi/exception.py,sha256=Z8LwxxTiTyuG3v7FAsjfz6cAqRAJFKK2q_2TbEDrIJE,943
4
+ deltafi/actiontype.py,sha256=SgCxs5Kn_6BuzuKDk5h93ZLtfdbzV0sWLcEaaB0mqlU,997
5
+ deltafi/domain.py,sha256=M97_n6KsMmIxCh3h622jNj1n6c5iMEAOn-SFH36oLis,12161
6
+ deltafi/exception.py,sha256=qQ2TY2QPtMU9t5RH8jmFo_cX98AJ-zOFWP_Wfm5U6qQ,1149
7
7
  deltafi/genericmodel.py,sha256=8VXWgFMjIwG4o3rkcLOa3bQH0Nf-T1Kw621QtMw-4q0,1090
8
- deltafi/input.py,sha256=2qQcOWqz7lOXZIZipTz5XtcGESpjdnUAsZ7b9YqHw7M,1656
8
+ deltafi/input.py,sha256=DuY280ZglZxEUkhjTtyr0g9Ohu2drn16UVhASH244nA,6290
9
9
  deltafi/logger.py,sha256=q76R_Gn8BfcASH3Zy0V82m5ot34bjTnSELyKbjhvx3E,2136
10
10
  deltafi/metric.py,sha256=eIDjZQVO53KuAFoEtjLNFwqMrp_7BC0Td9GLD1tb6sE,967
11
- deltafi/plugin.py,sha256=k2VO_5OJUqTGn6yN00KY-DoOv6Jhe2QoMpy9hr9vUi4,12407
12
- deltafi/result.py,sha256=AMjGygjvix9PdUbQvSa_gZEkTn9BJh2p-BdirqdjJpM,8212
11
+ deltafi/plugin.py,sha256=GkDq9oc5O0QYUZ7CdYcP1f9zRT38ufvzudZ4addHVS8,13076
12
+ deltafi/result.py,sha256=KkFKewPxcP8_Slp0D2COJ43h5_fF5Vti9ocWtp8pjpc,14911
13
13
  deltafi/storage.py,sha256=toq58EPZgzj2TfDF-YpFUmRnsWSjACA0KQAZzkM04xU,2740
14
14
  deltafi/test_kit/__init__.py,sha256=qv6y7PpBG0ekTN9EuD9Lj8JYOLVqZA6tvHwgjplncAM,709
15
15
  deltafi/test_kit/assertions.py,sha256=2eahqmbedhnHXMguiJHdaV-6sx4_jvCbxH4HSzx6PV8,1378
@@ -18,9 +18,11 @@ deltafi/test_kit/constants.py,sha256=epz0OS-qILcc8t7iIs5B3m2-wvZx8FpYpyb19ZsImbI
18
18
  deltafi/test_kit/domain.py,sha256=uqpDravlb6E3Ddm4QpRaJTdiVuQ2MMdZnzc4Oi9EZJA,2090
19
19
  deltafi/test_kit/egress.py,sha256=nF7YYak-_X35m7h2rSIcju86IJBf8cVaFHs7xw7-_b8,1899
20
20
  deltafi/test_kit/enrich.py,sha256=M682cqInVS4aipI0jOrR25x7m0ErrpjGpebXGZDPwxo,2587
21
- deltafi/test_kit/framework.py,sha256=KCnLVURkbnRZvsCvHDvAaXRrZACzA2ZcHJn803PatD8,13400
22
- deltafi/test_kit/transform.py,sha256=q9zQdZswTKwU5Om8E9Lwg0G5JI8LEXuRZjT9oam-Zoo,4085
21
+ deltafi/test_kit/format.py,sha256=j5spoimv4fIB7wrPSUS-aLcYvDJS0ntu4oSJjQ1INsw,4170
22
+ deltafi/test_kit/framework.py,sha256=5PTWoKu8eMU5GaVLmyoghoOrp6G65efXwqZKlUlyEaM,14733
23
+ deltafi/test_kit/load.py,sha256=dzXZDjb5BKxM9F5E2B06ArnGy0HvE1kwPizL8VybsOQ,5055
24
+ deltafi/test_kit/transform.py,sha256=AZ5oamhaOm4yaR07_gCoTlDiHkd4KwiAWWNj3mnYp8Q,2706
23
25
  deltafi/test_kit/validate.py,sha256=NnXD5amOE_9a4Zr-v9DKYIv5f_HvwtmlI-IdFtVp7ko,1933
24
- deltafi-2.0rc1719271450675.dist-info/METADATA,sha256=nPoSv2XejK3Lhqco7TFZaE8uOdPO5-ivIT3l-zB_aOo,1446
25
- deltafi-2.0rc1719271450675.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
26
- deltafi-2.0rc1719271450675.dist-info/RECORD,,
26
+ deltafi-2.0rc1720728217472.dist-info/METADATA,sha256=lhhN66ZvCacThjEosjup0r8FOzyPPvEs-Lt0LWQnFQc,1446
27
+ deltafi-2.0rc1720728217472.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
28
+ deltafi-2.0rc1720728217472.dist-info/RECORD,,