icsDataValidation 1.0.280__py3-none-any.whl → 1.0.285__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.
@@ -2,6 +2,10 @@ import os
2
2
 
3
3
  from dotenv import load_dotenv
4
4
  from pathlib import Path
5
+ from cryptography.hazmat.backends import default_backend
6
+ from cryptography.hazmat.primitives.asymmetric import rsa
7
+ from cryptography.hazmat.primitives.asymmetric import dsa
8
+ from cryptography.hazmat.primitives import serialization
5
9
 
6
10
  #########################################################################################
7
11
  #########################################################################################
@@ -11,10 +15,36 @@ def load_snowflake_credentials(system_configs:dict,system_selection:str)->dict:
11
15
  snowflake_params = {
12
16
  "account" : system_configs[system_selection]["ACCOUNT"],
13
17
  "user" : system_configs[system_selection]["USER"],
14
- "password" : os.getenv(system_configs[system_selection]["PASSWORD_NAME"]),
15
18
  "warehouse" : system_configs[system_selection]["WAREHOUSE"],
16
19
  "role" : system_configs[system_selection]["ROLE"],
17
20
  "database" : system_configs[system_selection]["DATABASE"]
18
21
  }
19
22
 
23
+ password_name = os.getenv(system_configs[system_selection]["PASSWORD_NAME"])
24
+ private_key_name = os.getenv(system_configs[system_selection]["PRIVATE_KEY_NAME"])
25
+ private_key_passphrase_name = os.getenv(system_configs[system_selection]["PRIVATE_KEY_PASSPHRASE_NAME"])
26
+
27
+ if password_name:
28
+ snowflake_params['password'] = password_name
29
+ elif private_key_name:
30
+ if private_key_passphrase_name:
31
+ # if private key is encrypted it is decrypted here with provided passphrase
32
+ p_key = serialization.load_pem_private_key(
33
+ private_key_name,
34
+ password = private_key_passphrase_name,
35
+ backend = default_backend()
36
+ )
37
+
38
+ decrypted_p_key = p_key.private_bytes(
39
+ encoding = serialization.Encoding.DER,
40
+ format = serialization.PrivateFormat.PKCS8,
41
+ encryption_algorithm = serialization.NoEncryption())
42
+
43
+ snowflake_params['private_key'] = decrypted_p_key
44
+ else:
45
+ # otherwise use the provided not encrypted private key
46
+ snowflake_params['private_key'] = private_key_name
47
+ else:
48
+ raise ValueError("No valid authentication method found. Provide either PASSWORD_NAME or PRIVATE_KEY_NAME.")
49
+
20
50
  return snowflake_params
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: icsDataValidation
3
- Version: 1.0.280
3
+ Version: 1.0.285
4
4
  Summary: ics data validation
5
5
  Home-page: https://initions.com/
6
6
  Author: initions
@@ -7,7 +7,7 @@ icsDataValidation/connection_setups/azure_connection_setup.py,sha256=gvTyctG63ol
7
7
  icsDataValidation/connection_setups/databricks_connection_setup.py,sha256=dNEBum-8R-TUW2SCEk3CaNtCr_gLFvn456KBlENpgJU,1220
8
8
  icsDataValidation/connection_setups/exasol_connection_setup.py,sha256=RfCUsL6G-NaOW-qNK-3SfHcljbRaKD6fDIHXkNQhClk,590
9
9
  icsDataValidation/connection_setups/oracle_connection_setup.py,sha256=D-4ucC1ChE4HYm93ECIEg_yBOrn1NkknxFBgFRGFmWs,978
10
- icsDataValidation/connection_setups/snowflake_connection_setup.py,sha256=JDTdIM0bQ0_IV0HnCct90RC6Mq4fS1sfh9IJc-YYlMo,804
10
+ icsDataValidation/connection_setups/snowflake_connection_setup.py,sha256=8gBtyEfU0GXwDhy1HHgV9XNJpgVH7-3CMbWo_nJYsSU,2220
11
11
  icsDataValidation/connection_setups/teradata_connection_setup.py,sha256=fIpuxz-FTqFK2vSMSuokqU9sdJkaJ4UP5piY_zIbj5k,624
12
12
  icsDataValidation/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  icsDataValidation/core/database_objects.py,sha256=2oaDaVQajSYI_HJjJy1pmc6FsoK_wMfwgu6ZgEcFvow,523
@@ -36,7 +36,7 @@ icsDataValidation/utils/logger_util.py,sha256=xS48_FFMot_hyQgJY8DUeRTn5jpdvRt5QI
36
36
  icsDataValidation/utils/pandas_util.py,sha256=D_g7Xw7BIS2E-1ZhJIvp62K5xuKjIkj-7TxH4HN_8SI,6505
37
37
  icsDataValidation/utils/parallelization_util.py,sha256=6P0YcQLmunW_fHR4f5-kdncZbOlxxqKyk6ZAFQQEd2k,2088
38
38
  icsDataValidation/utils/sql_util.py,sha256=0c-BInElSsRmXUedfLP_h9Wsiscv9aic7IIc5f15Uzo,396
39
- icsDataValidation-1.0.280.dist-info/METADATA,sha256=IOQsmO4gYzNV29pKG_wb8twh03GllVZMjV0lVwD9SBI,720
40
- icsDataValidation-1.0.280.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
41
- icsDataValidation-1.0.280.dist-info/top_level.txt,sha256=YL9V1qreCXZeUCy-tzA4Vxv5-6mvXy5lsfAT0nQapfg,53
42
- icsDataValidation-1.0.280.dist-info/RECORD,,
39
+ icsDataValidation-1.0.285.dist-info/METADATA,sha256=0ymdUuzh6Q-S-o8n5YeRa4PZOHE00py3Eu7yCwNo2V0,720
40
+ icsDataValidation-1.0.285.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
41
+ icsDataValidation-1.0.285.dist-info/top_level.txt,sha256=YL9V1qreCXZeUCy-tzA4Vxv5-6mvXy5lsfAT0nQapfg,53
42
+ icsDataValidation-1.0.285.dist-info/RECORD,,