datapipelab 0.3.5__tar.gz → 0.3.7__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.
Files changed (43) hide show
  1. {datapipelab-0.3.5 → datapipelab-0.3.7}/PKG-INFO +1 -1
  2. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/bigquery_api_node.py +16 -3
  3. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/spark_api_node.py +2 -0
  4. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab.egg-info/PKG-INFO +1 -1
  5. {datapipelab-0.3.5 → datapipelab-0.3.7}/setup.py +1 -1
  6. {datapipelab-0.3.5 → datapipelab-0.3.7}/MANIFEST.in +0 -0
  7. {datapipelab-0.3.5 → datapipelab-0.3.7}/README.md +0 -0
  8. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/__init__.py +0 -0
  9. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/__init__.py +0 -0
  10. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/connector_node/__init__.py +0 -0
  11. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/__init__.py +0 -0
  12. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/custom_node.py +0 -0
  13. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/__init__.py +0 -0
  14. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/bigquery_spark_node.py +0 -0
  15. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/custom_node.py +0 -0
  16. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/gcp_bucket_node.py +0 -0
  17. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/shell_node.py +0 -0
  18. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/processor/spark_node.py +0 -0
  19. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/__init__.py +0 -0
  20. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/csv_node.py +0 -0
  21. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/delta_node.py +0 -0
  22. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/hive_node.py +0 -0
  23. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/pandas_csv_node.py +0 -0
  24. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/spark_node.py +0 -0
  25. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/sink/teams_notification_node.py +0 -0
  26. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/source/__init__.py +0 -0
  27. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/source/delta_node.py +0 -0
  28. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/source/hive_node.py +0 -0
  29. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/source/spark_api_node.py +0 -0
  30. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/source/spark_node.py +0 -0
  31. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/node/tnode.py +0 -0
  32. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/wrapper/__init__.py +0 -0
  33. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/app/wrapper/source/__init__.py +0 -0
  34. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/engine.py +0 -0
  35. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/logger.py +0 -0
  36. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/pipeline.py +0 -0
  37. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/pipeline_config.py +0 -0
  38. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab/pipeline_handler.py +0 -0
  39. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab.egg-info/SOURCES.txt +0 -0
  40. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab.egg-info/dependency_links.txt +0 -0
  41. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab.egg-info/requires.txt +0 -0
  42. {datapipelab-0.3.5 → datapipelab-0.3.7}/datapipelab.egg-info/top_level.txt +0 -0
  43. {datapipelab-0.3.5 → datapipelab-0.3.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datapipelab
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Summary: A data pipeline library with connectors, sources, processors, and sinks.
5
5
  Description-Content-Type: text/markdown
6
6
  Requires-Dist: json5
@@ -6,16 +6,29 @@ class BigQueryAPIProcessorNode(TNode):
6
6
  super().__init__(spark=spark)
7
7
  self.sql_query = tnode_config['options']['query']
8
8
  self.node_name = tnode_config['name']
9
- self.credentials_path = tnode_config['options']['credentials_path']
9
+ self.credentials_path = tnode_config['options'].get('credentials_path', None)
10
+ self.credentials_info_env_name = tnode_config['options'].get('credentials_info_env_name', None)
10
11
  self.return_as_spark_df = tnode_config['options']['return_as_spark_df']
11
12
  self.project_name = tnode_config['options']['project_name']
12
13
  self.return_as_python_list = tnode_config['options'].get('return_as_python_list', False)
13
14
  self.return_as_is = tnode_config['options'].get('return_as_is', False)
14
15
 
16
+ def __get_gcp_credentials(self):
17
+ from google.oauth2 import service_account
18
+ if self.credentials_path:
19
+ return service_account.Credentials.from_service_account_file(self.credentials_path)
20
+ elif self.credentials_info_env_name:
21
+ import os
22
+ import json
23
+ credentials_info = json.loads(os.environ[self.credentials_info_env_name])
24
+ return service_account.Credentials.from_service_account_info(credentials_info)
25
+ else:
26
+ logger.warning("No credentials provided. Please provide either 'credentials_path' or 'credentials_info'.")
27
+ return None
28
+
15
29
  def __sql_biqquery(self, sql_query):
16
30
  from google.cloud import bigquery
17
- from google.oauth2 import service_account
18
- credentials = service_account.Credentials.from_service_account_file(self.credentials_path)
31
+ credentials = self.__get_gcp_credentials()
19
32
  client = bigquery.Client(credentials=credentials, project=self.project_name)
20
33
 
21
34
  # run the job
@@ -22,6 +22,8 @@ class SparkApiSourceNode(TNode):
22
22
  self.options['table'] = self.spark_options.get('table')
23
23
  if 'write_method' in self.spark_options:
24
24
  self.options['writeMethod'] = self.spark_options.get('write_method')
25
+ if 'temporary_gcs_bucket' in self.spark_options:
26
+ self.options['temporaryGcsBucket'] = self.spark_options.get('temporary_gcs_bucket')
25
27
 
26
28
  def __write_df(self):
27
29
  writer = self.df.write
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datapipelab
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Summary: A data pipeline library with connectors, sources, processors, and sinks.
5
5
  Description-Content-Type: text/markdown
6
6
  Requires-Dist: json5
@@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text()
6
6
 
7
7
  setup(
8
8
  name='datapipelab',
9
- version='0.3.5',
9
+ version='0.3.7',
10
10
  description='A data pipeline library with connectors, sources, processors, and sinks.',
11
11
  packages=find_packages(),
12
12
  include_package_data=True,
File without changes
File without changes
File without changes