icsDataValidation 1.0.358__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.
Files changed (40) hide show
  1. icsDataValidation/configuration.py +19 -0
  2. icsDataValidation/connection_setups/__init__.py +0 -0
  3. icsDataValidation/connection_setups/azure_connection_setup.py +19 -0
  4. icsDataValidation/connection_setups/databricks_connection_setup.py +28 -0
  5. icsDataValidation/connection_setups/exasol_connection_setup.py +17 -0
  6. icsDataValidation/connection_setups/oracle_connection_setup.py +26 -0
  7. icsDataValidation/connection_setups/snowflake_connection_setup.py +35 -0
  8. icsDataValidation/connection_setups/teradata_connection_setup.py +18 -0
  9. icsDataValidation/core/__init__.py +0 -0
  10. icsDataValidation/core/database_objects.py +18 -0
  11. icsDataValidation/core/object_comparison.py +239 -0
  12. icsDataValidation/input_parameters/__init__.py +0 -0
  13. icsDataValidation/input_parameters/testing_tool_params.py +81 -0
  14. icsDataValidation/main.py +250 -0
  15. icsDataValidation/output_parameters/__init__.py +0 -0
  16. icsDataValidation/output_parameters/result_params.py +94 -0
  17. icsDataValidation/services/__init__.py +0 -0
  18. icsDataValidation/services/comparison_service.py +582 -0
  19. icsDataValidation/services/database_services/__init__.py +0 -0
  20. icsDataValidation/services/database_services/azure_service.py +320 -0
  21. icsDataValidation/services/database_services/databricks_hive_metastore_service.py +1694 -0
  22. icsDataValidation/services/database_services/databricks_unity_catalog_service.py +1379 -0
  23. icsDataValidation/services/database_services/exasol_service.py +261 -0
  24. icsDataValidation/services/database_services/oracle_service.py +713 -0
  25. icsDataValidation/services/database_services/snowflake_service.py +1100 -0
  26. icsDataValidation/services/database_services/teradata_service.py +665 -0
  27. icsDataValidation/services/initialization_service.py +103 -0
  28. icsDataValidation/services/result_service.py +573 -0
  29. icsDataValidation/services/system_service.py +61 -0
  30. icsDataValidation/services/testset_service.py +257 -0
  31. icsDataValidation/utils/__init__.py +0 -0
  32. icsDataValidation/utils/file_util.py +96 -0
  33. icsDataValidation/utils/logger_util.py +96 -0
  34. icsDataValidation/utils/pandas_util.py +159 -0
  35. icsDataValidation/utils/parallelization_util.py +52 -0
  36. icsDataValidation/utils/sql_util.py +14 -0
  37. icsDataValidation-1.0.358.dist-info/METADATA +21 -0
  38. icsDataValidation-1.0.358.dist-info/RECORD +40 -0
  39. icsDataValidation-1.0.358.dist-info/WHEEL +5 -0
  40. icsDataValidation-1.0.358.dist-info/top_level.txt +1 -0
@@ -0,0 +1,52 @@
1
+ import concurrent.futures
2
+ import logging
3
+ import functools
4
+
5
+ from typing import List
6
+ from icsDataValidation.utils.logger_util import configure_dev_ops_logger
7
+
8
+ logger = logging.getLogger('Parallelization_Util')
9
+ logger.setLevel(logging.INFO)
10
+ configure_dev_ops_logger(logger)
11
+
12
+
13
+ def get_parallelization_groups(objects: list, max_number_of_threads: int) -> List[List]:
14
+ """
15
+ Split list of objects into n sublists of preferably same length - with n being the number of threads.
16
+ The number of threads n is either the input parameter max_number_of_threads or the number of objects.
17
+ """
18
+ n_objects = len(objects)
19
+
20
+ if max_number_of_threads > n_objects:
21
+ number_of_threads = n_objects
22
+ else:
23
+ number_of_threads = max_number_of_threads
24
+
25
+ if not number_of_threads==0:
26
+ k, m = divmod(n_objects, number_of_threads)
27
+ object_groups = [
28
+ objects[i * k + min(i, m) : (i + 1) * k + min(i + 1, m)]
29
+ for i in range(number_of_threads)
30
+ ]
31
+ else:
32
+ object_groups=[]
33
+
34
+ return object_groups, number_of_threads
35
+
36
+ def execute_func_in_parallel(function, objects: list, max_number_of_threads: int, *function_args) -> list:
37
+ """
38
+ Execute a function in parallel. Takes list of objects as input and splits it in object_groups of preferably equal length.
39
+ The number of threads is equal to the number of object_groups.
40
+ If the function has arguments they can be passed as additional arguments.
41
+ """
42
+ object_groups, number_of_threads = get_parallelization_groups(objects=objects, max_number_of_threads=max_number_of_threads)
43
+
44
+ logger.info(f"Parallelization of function '{function.__name__ }' with number of threads: {number_of_threads}")
45
+
46
+ result_groups = []
47
+ if number_of_threads>0:
48
+ with concurrent.futures.ThreadPoolExecutor(max_workers=number_of_threads) as pool:
49
+ partial_function = functools.partial(function, *function_args)
50
+ for result_group in pool.map(partial_function, object_groups):
51
+ result_groups.extend(result_group)
52
+ return result_groups
@@ -0,0 +1,14 @@
1
+
2
+
3
+ def parse_filter(filter_list:list)->str:
4
+ """
5
+ Retrieve a where-filter in SQL-Syntax from a list of defined conditions.
6
+ """
7
+ if filter_list != []:
8
+ where_clause = "WHERE "
9
+ for filter_condition in filter_list:
10
+ where_clause += f"({filter_condition}) AND "
11
+ where_clause = where_clause[:-4]
12
+ else:
13
+ where_clause = ""
14
+ return where_clause
@@ -0,0 +1,21 @@
1
+ Metadata-Version: 2.2
2
+ Name: icsDataValidation
3
+ Version: 1.0.358
4
+ Summary: Add your description here
5
+ Home-page: https://initions.com/
6
+ Author: initions
7
+ Author-email: ICSMC_EXT_PYPIORG@accenture.com
8
+ License: MIT
9
+ Requires-Python: >=3.11
10
+ Requires-Dist: azure-storage-blob==12.13.1
11
+ Requires-Dist: boto3==1.26.154
12
+ Requires-Dist: cloe-util-snowflake-connector==1.0.5
13
+ Requires-Dist: databricks-sdk==0.29.0
14
+ Requires-Dist: databricks-sql-connector==3.0.1
15
+ Requires-Dist: numpy==1.26.3
16
+ Requires-Dist: oracledb==2.5.0
17
+ Requires-Dist: pandas==2.2.2
18
+ Requires-Dist: pyexasol==0.24.0
19
+ Requires-Dist: pyodbc
20
+ Requires-Dist: python-dotenv>=1.0.1
21
+ Requires-Dist: teradatasql==17.20.0.10
@@ -0,0 +1,40 @@
1
+ icsDataValidation/configuration.py,sha256=HOFjmC8_e2nvoItndMtJQQA1MR5aCgZGeF1AwY_FvjE,477
2
+ icsDataValidation/main.py,sha256=nmbFM8Epf4-Nhd9ArH31wT7Yx0MSjIHxX93zPke1ArA,12498
3
+ icsDataValidation/connection_setups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ icsDataValidation/connection_setups/azure_connection_setup.py,sha256=gvTyctG63olZWfFH-qNHcuInMYWcJGWeLpdzciFvZwc,725
5
+ icsDataValidation/connection_setups/databricks_connection_setup.py,sha256=dNEBum-8R-TUW2SCEk3CaNtCr_gLFvn456KBlENpgJU,1220
6
+ icsDataValidation/connection_setups/exasol_connection_setup.py,sha256=RfCUsL6G-NaOW-qNK-3SfHcljbRaKD6fDIHXkNQhClk,590
7
+ icsDataValidation/connection_setups/oracle_connection_setup.py,sha256=D-4ucC1ChE4HYm93ECIEg_yBOrn1NkknxFBgFRGFmWs,978
8
+ icsDataValidation/connection_setups/snowflake_connection_setup.py,sha256=IgEhni4Q0oYGh2QzptpyfEUvUt3cVO28jNSGg11cxyI,1778
9
+ icsDataValidation/connection_setups/teradata_connection_setup.py,sha256=fIpuxz-FTqFK2vSMSuokqU9sdJkaJ4UP5piY_zIbj5k,624
10
+ icsDataValidation/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ icsDataValidation/core/database_objects.py,sha256=2oaDaVQajSYI_HJjJy1pmc6FsoK_wMfwgu6ZgEcFvow,523
12
+ icsDataValidation/core/object_comparison.py,sha256=OEz5m1pp_PbIWyM5998iB5obFKYdJEqDo9Z0Hpj7o4A,14988
13
+ icsDataValidation/input_parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ icsDataValidation/input_parameters/testing_tool_params.py,sha256=6LkqEaH3vaeCn6d1b3jYIwlXAXIRclxLzcXdsmlkc9M,6731
15
+ icsDataValidation/output_parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ icsDataValidation/output_parameters/result_params.py,sha256=5Mk9L9zWaxUqcKwLZQ539lVUp0b0s-YUmSA3PBgbqfs,2833
17
+ icsDataValidation/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ icsDataValidation/services/comparison_service.py,sha256=x8RjZs2bgYDHFueq5ysNADY1cC6rYBf6eDyCsF-_w84,42705
19
+ icsDataValidation/services/initialization_service.py,sha256=AHbJrq_LjMPFoeOJC2pi2ZZ1xkL8njSZn38psc3do60,6687
20
+ icsDataValidation/services/result_service.py,sha256=edD6aejIi5P7qDNHKnN46KrN5tfzwqnw5TB35SvFAWU,28396
21
+ icsDataValidation/services/system_service.py,sha256=GSkSPNG5PlLWchwlYM5H-1FMtuCNwpXcyZZOUB_0stU,3228
22
+ icsDataValidation/services/testset_service.py,sha256=k1wRjI4Ltw9fylek9iW8N6DvnXn13wf6IJ703qQDMEc,15363
23
+ icsDataValidation/services/database_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ icsDataValidation/services/database_services/azure_service.py,sha256=VTdaT6is_4MMbK9wBJMSJLRFKVRVG-0btjp7dw4izJg,16338
25
+ icsDataValidation/services/database_services/databricks_hive_metastore_service.py,sha256=7UwRazJSPx4A_5wmf9_wt39bHpuyugMQ5HxN6BQAp0w,87581
26
+ icsDataValidation/services/database_services/databricks_unity_catalog_service.py,sha256=INA8rd3KW_jAplNagGa9tEON3dyOufcIAPOOdmc0Mrc,70259
27
+ icsDataValidation/services/database_services/exasol_service.py,sha256=7LYnRScO3DxBmuSN0HmTgsFc2el-Ii3A9jgGsXSJVU8,11074
28
+ icsDataValidation/services/database_services/oracle_service.py,sha256=60unwWlHm520ioFmz0y2K8ApwZrruf9iB0ojjQx0IWc,31523
29
+ icsDataValidation/services/database_services/snowflake_service.py,sha256=EYOZjkjeh0CMGApef-LWoXP4JeJzhAG_qUCqpwOQ9ek,61021
30
+ icsDataValidation/services/database_services/teradata_service.py,sha256=Rf0xzcZGEbooq3r2Rfe2fCahTm2Xw4uznQa8vyWoyqM,40169
31
+ icsDataValidation/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ icsDataValidation/utils/file_util.py,sha256=ZTMB1sTnIIdffg9tEJRCFQQ5SG8Fksc5ie1PM4gHXG4,3432
33
+ icsDataValidation/utils/logger_util.py,sha256=xS48_FFMot_hyQgJY8DUeRTn5jpdvRt5QI6bvlV1jCY,3647
34
+ icsDataValidation/utils/pandas_util.py,sha256=D_g7Xw7BIS2E-1ZhJIvp62K5xuKjIkj-7TxH4HN_8SI,6505
35
+ icsDataValidation/utils/parallelization_util.py,sha256=6P0YcQLmunW_fHR4f5-kdncZbOlxxqKyk6ZAFQQEd2k,2088
36
+ icsDataValidation/utils/sql_util.py,sha256=0c-BInElSsRmXUedfLP_h9Wsiscv9aic7IIc5f15Uzo,396
37
+ icsDataValidation-1.0.358.dist-info/METADATA,sha256=GD_MvcW_v96MzD1qZzY7PJspDVtvGjaCpPGLdW3OyjE,24605
38
+ icsDataValidation-1.0.358.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
39
+ icsDataValidation-1.0.358.dist-info/top_level.txt,sha256=BqWUGJb4J7ZybpDMeuGHxEHGHwXXJEIURd9pBybHzTM,18
40
+ icsDataValidation-1.0.358.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.8.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ icsDataValidation