apache-airflow-providers-teradata 3.1.0__tar.gz → 3.2.0__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 apache-airflow-providers-teradata might be problematic. Click here for more details.

Files changed (82) hide show
  1. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/PKG-INFO +11 -9
  2. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/README.rst +5 -4
  3. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/changelog.rst +20 -0
  4. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/index.rst +4 -3
  5. apache_airflow_providers_teradata-3.2.0/docs/operators/bteq.rst +264 -0
  6. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/provider.yaml +11 -1
  7. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/pyproject.toml +8 -5
  8. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/__init__.py +1 -1
  9. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/get_provider_info.py +5 -2
  10. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/hooks/bteq.py +339 -0
  11. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/hooks/teradata.py +5 -2
  12. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/hooks/ttu.py +97 -0
  13. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/operators/bteq.py +282 -0
  14. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/operators/teradata.py +1 -1
  15. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/operators/teradata_compute_cluster.py +1 -1
  16. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/transfers/azure_blob_to_teradata.py +1 -2
  17. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/transfers/s3_to_teradata.py +1 -2
  18. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/transfers/teradata_to_teradata.py +1 -1
  19. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/utils/bteq_util.py +217 -0
  20. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/utils/encryption_utils.py +75 -0
  21. apache_airflow_providers_teradata-3.2.0/src/airflow/providers/teradata/version_compat.py +42 -0
  22. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/example_bteq.py +272 -0
  23. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/example_remote_bteq.py +272 -0
  24. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/script +15 -0
  25. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/script.bteq +15 -0
  26. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/script.sql +29 -0
  27. apache_airflow_providers_teradata-3.2.0/tests/system/teradata/script_utf16.bteq +0 -0
  28. apache_airflow_providers_teradata-3.2.0/tests/unit/teradata/hooks/test_bteq.py +386 -0
  29. apache_airflow_providers_teradata-3.2.0/tests/unit/teradata/hooks/test_ttu.py +136 -0
  30. apache_airflow_providers_teradata-3.2.0/tests/unit/teradata/operators/test_bteq.py +288 -0
  31. apache_airflow_providers_teradata-3.2.0/tests/unit/teradata/utils/test_bteq_util.py +354 -0
  32. apache_airflow_providers_teradata-3.2.0/tests/unit/teradata/utils/test_encryption_utils.py +108 -0
  33. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/.latest-doc-only-change.txt +0 -0
  34. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/commits.rst +0 -0
  35. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/conf.py +0 -0
  36. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/connections/teradata.rst +0 -0
  37. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/installing-providers-from-sources.rst +0 -0
  38. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/integration-logos/Teradata.png +0 -0
  39. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/azure_blob_to_teradata.rst +0 -0
  40. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/compute_cluster.rst +0 -0
  41. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/index.rst +0 -0
  42. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/s3_to_teradata.rst +0 -0
  43. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/teradata.rst +0 -0
  44. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/operators/teradata_to_teradata.rst +0 -0
  45. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/docs/security.rst +0 -0
  46. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/__init__.py +0 -0
  47. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/__init__.py +0 -0
  48. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/LICENSE +0 -0
  49. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/hooks/__init__.py +0 -0
  50. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/operators/__init__.py +0 -0
  51. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/transfers/__init__.py +0 -0
  52. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/triggers/__init__.py +0 -0
  53. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/triggers/teradata_compute_cluster.py +0 -0
  54. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/utils/__init__.py +0 -0
  55. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/src/airflow/providers/teradata/utils/constants.py +0 -0
  56. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/conftest.py +0 -0
  57. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/__init__.py +0 -0
  58. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/__init__.py +0 -0
  59. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/create_ssl_table.sql +0 -0
  60. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/create_table.sql +0 -0
  61. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_azure_blob_to_teradata_transfer.py +0 -0
  62. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_s3_to_teradata_transfer.py +0 -0
  63. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_ssl_teradata.py +0 -0
  64. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_teradata.py +0 -0
  65. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_teradata_call_sp.py +0 -0
  66. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_teradata_compute_cluster.py +0 -0
  67. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/system/teradata/example_teradata_to_teradata_transfer.py +0 -0
  68. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/__init__.py +0 -0
  69. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/__init__.py +0 -0
  70. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/hooks/__init__.py +0 -0
  71. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/hooks/test_teradata.py +0 -0
  72. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/operators/__init__.py +0 -0
  73. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/operators/test_teradata.py +0 -0
  74. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/operators/test_teradata_compute_cluster.py +0 -0
  75. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/transfers/__init__.py +0 -0
  76. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/transfers/test_azure_blob_to_teradata.py +0 -0
  77. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/transfers/test_s3_to_teradata.py +0 -0
  78. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/transfers/test_teradata_to_teradata.py +0 -0
  79. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/triggers/__init__.py +0 -0
  80. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/triggers/test_teradata_compute_cluster.py +0 -0
  81. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/utils/__init__.py +0 -0
  82. {apache_airflow_providers_teradata-3.1.0 → apache_airflow_providers_teradata-3.2.0}/tests/unit/teradata/utils/test_constants.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-teradata
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: Provider package apache-airflow-providers-teradata for Apache Airflow
5
5
  Keywords: airflow-provider,teradata,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
- Requires-Python: ~=3.9
8
+ Requires-Python: ~=3.10
9
9
  Description-Content-Type: text/x-rst
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
@@ -15,7 +15,6 @@ Classifier: Intended Audience :: System Administrators
15
15
  Classifier: Framework :: Apache Airflow
16
16
  Classifier: Framework :: Apache Airflow :: Provider
17
17
  Classifier: License :: OSI Approved :: Apache Software License
18
- Classifier: Programming Language :: Python :: 3.9
19
18
  Classifier: Programming Language :: Python :: 3.10
20
19
  Classifier: Programming Language :: Python :: 3.11
21
20
  Classifier: Programming Language :: Python :: 3.12
@@ -26,15 +25,17 @@ Requires-Dist: teradatasqlalchemy>=17.20.0.0
26
25
  Requires-Dist: teradatasql>=17.20.0.28
27
26
  Requires-Dist: apache-airflow-providers-amazon ; extra == "amazon"
28
27
  Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft-azure"
28
+ Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
29
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0
30
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/changelog.html
31
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0
32
32
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
33
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
34
  Project-URL: Source Code, https://github.com/apache/airflow
35
35
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
36
36
  Provides-Extra: amazon
37
37
  Provides-Extra: microsoft-azure
38
+ Provides-Extra: ssh
38
39
 
39
40
 
40
41
  .. Licensed to the Apache Software Foundation (ASF) under one
@@ -61,7 +62,7 @@ Provides-Extra: microsoft-azure
61
62
 
62
63
  Package ``apache-airflow-providers-teradata``
63
64
 
64
- Release: ``3.1.0``
65
+ Release: ``3.2.0``
65
66
 
66
67
 
67
68
  `Teradata <https://www.teradata.com/>`__
@@ -74,7 +75,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
74
75
  are in ``airflow.providers.teradata`` python package.
75
76
 
76
77
  You can find package information and changelog for the provider
77
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/>`_.
78
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/>`_.
78
79
 
79
80
  Installation
80
81
  ------------
@@ -83,7 +84,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
83
84
  for the minimum Airflow version supported) via
84
85
  ``pip install apache-airflow-providers-teradata``
85
86
 
86
- The package supports the following python versions: 3.9,3.10,3.11,3.12
87
+ The package supports the following python versions: 3.10,3.11,3.12
87
88
 
88
89
  Requirements
89
90
  ------------
@@ -116,8 +117,9 @@ Dependent package
116
117
  `apache-airflow-providers-amazon <https://airflow.apache.org/docs/apache-airflow-providers-amazon>`_ ``amazon``
117
118
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
118
119
  `apache-airflow-providers-microsoft-azure <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure>`_ ``microsoft.azure``
120
+ `apache-airflow-providers-ssh <https://airflow.apache.org/docs/apache-airflow-providers-ssh>`_ ``ssh``
119
121
  ====================================================================================================================== ===================
120
122
 
121
123
  The changelog for the provider package can be found in the
122
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/changelog.html>`_.
124
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/changelog.html>`_.
123
125
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-teradata``
25
25
 
26
- Release: ``3.1.0``
26
+ Release: ``3.2.0``
27
27
 
28
28
 
29
29
  `Teradata <https://www.teradata.com/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
36
36
  are in ``airflow.providers.teradata`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -45,7 +45,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
45
45
  for the minimum Airflow version supported) via
46
46
  ``pip install apache-airflow-providers-teradata``
47
47
 
48
- The package supports the following python versions: 3.9,3.10,3.11,3.12
48
+ The package supports the following python versions: 3.10,3.11,3.12
49
49
 
50
50
  Requirements
51
51
  ------------
@@ -78,7 +78,8 @@ Dependent package
78
78
  `apache-airflow-providers-amazon <https://airflow.apache.org/docs/apache-airflow-providers-amazon>`_ ``amazon``
79
79
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
80
80
  `apache-airflow-providers-microsoft-azure <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure>`_ ``microsoft.azure``
81
+ `apache-airflow-providers-ssh <https://airflow.apache.org/docs/apache-airflow-providers-ssh>`_ ``ssh``
81
82
  ====================================================================================================================== ===================
82
83
 
83
84
  The changelog for the provider package can be found in the
84
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/changelog.html>`_.
85
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/changelog.html>`_.
@@ -25,6 +25,26 @@
25
25
  Changelog
26
26
  ---------
27
27
 
28
+ 3.2.0
29
+ .....
30
+
31
+ Features
32
+ ~~~~~~~~
33
+
34
+ * ``Add BteqOperator for Executing Teradata BTEQ Scripts in Airflow (#51807)``
35
+
36
+ Misc
37
+ ~~~~
38
+
39
+ * ``Move 'BaseHook' implementation to task SDK (#51873)``
40
+ * ``Replace 'models.BaseOperator' to Task SDK one for Tableau, Telegram, and Teradata (#52642)``
41
+ * ``Disable UP038 ruff rule and revert mandatory 'X | Y' in insintance checks (#52644)``
42
+ * ``Drop support for Python 3.9 (#52072)``
43
+ * ``Enhanced the BTEQ operator to ensure platform independence. (#52252)``
44
+
45
+ .. Below changes are excluded from the changelog. Move them to
46
+ appropriate section above if needed. Do not delete the lines(!):
47
+
28
48
  3.1.0
29
49
  .....
30
50
 
@@ -77,7 +77,7 @@ apache-airflow-providers-teradata package
77
77
  `Teradata <https://www.teradata.com/>`__
78
78
 
79
79
 
80
- Release: 3.1.0
80
+ Release: 3.2.0
81
81
 
82
82
  Provider package
83
83
  ----------------
@@ -125,6 +125,7 @@ Dependent package
125
125
  `apache-airflow-providers-amazon <https://airflow.apache.org/docs/apache-airflow-providers-amazon>`_ ``amazon``
126
126
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
127
127
  `apache-airflow-providers-microsoft-azure <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure>`_ ``microsoft.azure``
128
+ `apache-airflow-providers-ssh <https://airflow.apache.org/docs/apache-airflow-providers-ssh>`_ ``ssh``
128
129
  ====================================================================================================================== ===================
129
130
 
130
131
  Downloading official packages
@@ -133,5 +134,5 @@ Downloading official packages
133
134
  You can download officially released packages and verify their checksums and signatures from the
134
135
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
135
136
 
136
- * `The apache-airflow-providers-teradata 3.1.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0.tar.gz.sha512>`__)
137
- * `The apache-airflow-providers-teradata 3.1.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.1.0-py3-none-any.whl.sha512>`__)
137
+ * `The apache-airflow-providers-teradata 3.2.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0.tar.gz.sha512>`__)
138
+ * `The apache-airflow-providers-teradata 3.2.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.2.0-py3-none-any.whl.sha512>`__)
@@ -0,0 +1,264 @@
1
+ .. Licensed to the Apache Software Foundation (ASF) under one
2
+ or more contributor license agreements. See the NOTICE file
3
+ distributed with this work for additional information
4
+ regarding copyright ownership. The ASF licenses this file
5
+ to you under the Apache License, Version 2.0 (the
6
+ "License"); you may not use this file except in compliance
7
+ with the License. You may obtain a copy of the License at
8
+
9
+ .. http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ .. Unless required by applicable law or agreed to in writing,
12
+ software distributed under the License is distributed on an
13
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations
16
+ under the License.
17
+
18
+ .. _howto/operator:BteqOperator:
19
+
20
+ BteqOperator
21
+ ============
22
+
23
+ The :class:`~airflow.providers.teradata.operators.bteq.BteqOperator` enables execution of SQL statements or BTEQ (Basic Teradata Query) scripts using the Teradata BTEQ utility, which can be installed either locally or accessed remotely via SSH.
24
+
25
+ This is useful for executing administrative operations, batch queries, or ETL tasks in Teradata environments using the Teradata BTEQ utility.
26
+
27
+ .. note::
28
+
29
+ This operator requires the Teradata Tools and Utilities (TTU) including the ``bteq`` binary to be installed
30
+ and accessible via the system's ``PATH`` (either locally or on the remote SSH host).
31
+
32
+ Use the ``BteqOperator`` when you want to:
33
+
34
+ - Run parameterized or templated SQL/BTEQ scripts
35
+ - Connect securely to Teradata with Airflow connections
36
+ - Execute queries via SSH on remote systems with BTEQ installed
37
+
38
+ Prerequisite
39
+ ------------
40
+
41
+ Make sure your Teradata Airflow connection is defined with the required fields:
42
+
43
+ - ``host``
44
+ - ``login``
45
+ - ``password``
46
+ - Optional: ``database``, etc.
47
+
48
+ You can define a remote host with a separate SSH connection using the ``ssh_conn_id``.
49
+
50
+ .. note::
51
+
52
+ For improved security, it is **highly recommended** to use
53
+ **private key-based SSH authentication** (SSH key pairs) instead of username/password
54
+ for the SSH connection.
55
+
56
+ This avoids password exposure, enables seamless automated execution, and enhances security.
57
+
58
+ See the Airflow SSH Connection documentation for details on configuring SSH keys:
59
+ https://airflow.apache.org/docs/apache-airflow/stable/howto/connection/ssh.html
60
+
61
+
62
+ To execute arbitrary SQL or BTEQ commands in a Teradata database, use the
63
+ :class:`~airflow.providers.teradata.operators.bteq.BteqOperator`.
64
+
65
+ Common Database Operations with BteqOperator when BTEQ is installed on local machine
66
+ -------------------------------------------------------------------------------------
67
+
68
+ Creating a Teradata database table
69
+ ----------------------------------
70
+
71
+ You can use the BteqOperator to create tables in a Teradata database. The following example demonstrates how to create a simple employee table:
72
+
73
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
74
+ :language: python
75
+ :dedent: 4
76
+ :start-after: [START bteq_operator_howto_guide_create_table]
77
+ :end-before: [END bteq_operator_howto_guide_create_table]
78
+
79
+ The BTEQ script within this operator handles the table creation, including defining columns, data types, and constraints.
80
+
81
+
82
+ Inserting data into a Teradata database table
83
+ ---------------------------------------------
84
+
85
+ The following example demonstrates how to populate the ``my_employees`` table with sample employee records:
86
+
87
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
88
+ :language: python
89
+ :dedent: 4
90
+ :start-after: [START bteq_operator_howto_guide_populate_table]
91
+ :end-before: [END bteq_operator_howto_guide_populate_table]
92
+
93
+ This BTEQ script inserts multiple rows into the table in a single operation, making it efficient for batch data loading.
94
+
95
+
96
+ Exporting data from a Teradata database table to a file
97
+ -------------------------------------------------------
98
+
99
+ The BteqOperator makes it straightforward to export query results to a file. This capability is valuable for data extraction, backups, and transferring data between systems. The following example demonstrates how to query the employee table and export the results:
100
+
101
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
102
+ :language: python
103
+ :dedent: 4
104
+ :start-after: [START bteq_operator_howto_guide_export_data_to_a_file]
105
+ :end-before: [END bteq_operator_howto_guide_export_data_to_a_file]
106
+
107
+ The BTEQ script above handles the data export with options for formatting, file location specification, and error handling during the export process.
108
+
109
+
110
+ Fetching and processing records from your Teradata database
111
+ -----------------------------------------------------------
112
+
113
+ You can use BteqOperator to query and retrieve data from your Teradata tables. The following example demonstrates
114
+ how to fetch specific records from the employee table with filtering and formatting:
115
+
116
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
117
+ :language: python
118
+ :dedent: 4
119
+ :start-after: [START bteq_operator_howto_guide_get_it_employees]
120
+ :end-before: [END bteq_operator_howto_guide_get_it_employees]
121
+
122
+ Executing a BTEQ script with the BteqOperator
123
+ ---------------------------------------------
124
+
125
+ You can use BteqOperator to execute a BTEQ script directly. This is useful for running complex queries or scripts that require multiple SQL statements or specific BTEQ commands.
126
+
127
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
128
+ :language: python
129
+ :dedent: 4
130
+ :start-after: [START bteq_operator_howto_guide_bteq_file_input]
131
+ :end-before: [END bteq_operator_howto_guide_bteq_file_input]
132
+
133
+
134
+ Common Database Operations with BteqOperator when BTEQ is installed on remote machine
135
+ -------------------------------------------------------------------------------------
136
+
137
+ Make sure SSH connection is defined with the required fields to connect to remote machine:
138
+
139
+ - ``remote_host``
140
+ - ``username``
141
+ - ``password``
142
+ - Optional: ``key_file``, ``private_key``, ``conn_timeout``, etc.
143
+
144
+ Creating a Teradata database table
145
+ ----------------------------------
146
+
147
+ You can use the BteqOperator to create tables in a Teradata database. The following example demonstrates how to create a simple employee table:
148
+
149
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_remote_bteq.py
150
+ :language: python
151
+ :dedent: 4
152
+ :start-after: [START bteq_operator_howto_guide_create_table]
153
+ :end-before: [END bteq_operator_howto_guide_create_table]
154
+
155
+ The BTEQ script within this operator handles the table creation, including defining columns, data types, and constraints.
156
+
157
+
158
+ Inserting data into a Teradata database table
159
+ ---------------------------------------------
160
+
161
+ The following example demonstrates how to populate the ``my_employees`` table with sample employee records:
162
+
163
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_remote_bteq.py
164
+ :language: python
165
+ :dedent: 4
166
+ :start-after: [START bteq_operator_howto_guide_populate_table]
167
+ :end-before: [END bteq_operator_howto_guide_populate_table]
168
+
169
+ This BTEQ script inserts multiple rows into the table in a single operation, making it efficient for batch data loading.
170
+
171
+
172
+ Exporting data from a Teradata database table to a file
173
+ -------------------------------------------------------
174
+
175
+ The BteqOperator makes it straightforward to export query results to a file. This capability is valuable for data extraction, backups, and transferring data between systems. The following example demonstrates how to query the employee table and export the results:
176
+
177
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_remote_bteq.py
178
+ :language: python
179
+ :dedent: 4
180
+ :start-after: [START bteq_operator_howto_guide_export_data_to_a_file]
181
+ :end-before: [END bteq_operator_howto_guide_export_data_to_a_file]
182
+
183
+ The BTEQ script above handles the data export with options for formatting, file location specification, and error handling during the export process.
184
+
185
+
186
+ Fetching and processing records from your Teradata database
187
+ -----------------------------------------------------------
188
+
189
+ You can use BteqOperator to query and retrieve data from your Teradata tables. The following example demonstrates
190
+ how to fetch specific records from the employee table with filtering and formatting:
191
+
192
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_remote_bteq.py
193
+ :language: python
194
+ :dedent: 4
195
+ :start-after: [START bteq_operator_howto_guide_get_it_employees]
196
+ :end-before: [END bteq_operator_howto_guide_get_it_employees]
197
+
198
+ This example shows how to:
199
+ - Execute a SELECT query with WHERE clause filtering
200
+ - Format the output for better readability
201
+ - Process the result set within the BTEQ script
202
+ - Handle empty result sets appropriately
203
+
204
+ Executing a BTEQ script with the BteqOperator when BTEQ script file is on remote machine
205
+ ----------------------------------------------------------------------------------------
206
+
207
+ You can use BteqOperator to execute a BTEQ script directly when file is on remote machine.
208
+
209
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_remote_bteq.py
210
+ :language: python
211
+ :dedent: 4
212
+ :start-after: [START bteq_operator_howto_guide_bteq_file_input]
213
+ :end-before: [END bteq_operator_howto_guide_bteq_file_input]
214
+
215
+
216
+ Using Conditional Logic with BteqOperator
217
+ -----------------------------------------
218
+
219
+ The BteqOperator supports executing conditional logic within your BTEQ scripts. This powerful feature lets you create dynamic, decision-based workflows that respond to data conditions or processing results:
220
+
221
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
222
+ :language: python
223
+ :dedent: 4
224
+ :start-after: [START bteq_operator_howto_guide_conditional_logic]
225
+ :end-before: [END bteq_operator_howto_guide_conditional_logic]
226
+
227
+ Conditional execution enables more intelligent data pipelines that can adapt to different scenarios without requiring separate DAG branches.
228
+
229
+
230
+ Error Handling in BTEQ Scripts
231
+ ------------------------------
232
+
233
+ The BteqOperator allows you to implement comprehensive error handling within your BTEQ scripts:
234
+
235
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
236
+ :language: python
237
+ :dedent: 4
238
+ :start-after: [START bteq_operator_howto_guide_error_handling]
239
+ :end-before: [END bteq_operator_howto_guide_error_handling]
240
+
241
+ This approach lets you catch and respond to errors at the BTEQ script level, providing more granular control over error conditions and enabling appropriate recovery actions.
242
+
243
+
244
+ Dropping a Teradata Database Table
245
+ ----------------------------------
246
+
247
+ When your workflow completes or requires cleanup, you can use the BteqOperator to drop database objects. The following example demonstrates how to drop the ``my_employees`` table:
248
+
249
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
250
+ :language: python
251
+ :dedent: 4
252
+ :start-after: [START bteq_operator_howto_guide_drop_table]
253
+ :end-before: [END bteq_operator_howto_guide_drop_table]
254
+
255
+
256
+ The complete Teradata Operator DAG
257
+ ----------------------------------
258
+
259
+ When we put everything together, our DAG should look like this:
260
+
261
+ .. exampleinclude:: /../../teradata/tests/system/teradata/example_bteq.py
262
+ :language: python
263
+ :start-after: [START bteq_operator_howto_guide]
264
+ :end-before: [END bteq_operator_howto_guide]
@@ -22,12 +22,13 @@ description: |
22
22
  `Teradata <https://www.teradata.com/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1747133947
25
+ source-date-epoch: 1751474590
26
26
  # Note that those versions are maintained by release manager - do not update them manually
27
27
  # with the exception of case where other provider in sources has >= new provider version.
28
28
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
29
29
  # to be done in the same PR
30
30
  versions:
31
+ - 3.2.0
31
32
  - 3.1.0
32
33
  - 3.0.3
33
34
  - 3.0.2
@@ -57,11 +58,20 @@ operators:
57
58
  python-modules:
58
59
  - airflow.providers.teradata.operators.teradata
59
60
  - airflow.providers.teradata.operators.teradata_compute_cluster
61
+ - integration-name: Bteq
62
+ python-modules:
63
+ - airflow.providers.teradata.operators.bteq
60
64
 
61
65
  hooks:
62
66
  - integration-name: Teradata
63
67
  python-modules:
64
68
  - airflow.providers.teradata.hooks.teradata
69
+ - integration-name: Ttu
70
+ python-modules:
71
+ - airflow.providers.teradata.hooks.ttu
72
+ - integration-name: Bteq
73
+ python-modules:
74
+ - airflow.providers.teradata.hooks.bteq
65
75
 
66
76
  transfers:
67
77
  - source-integration-name: Teradata
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-teradata"
28
- version = "3.1.0"
28
+ version = "3.2.0"
29
29
  description = "Provider package apache-airflow-providers-teradata for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -44,13 +44,12 @@ classifiers = [
44
44
  "Framework :: Apache Airflow",
45
45
  "Framework :: Apache Airflow :: Provider",
46
46
  "License :: OSI Approved :: Apache Software License",
47
- "Programming Language :: Python :: 3.9",
48
47
  "Programming Language :: Python :: 3.10",
49
48
  "Programming Language :: Python :: 3.11",
50
49
  "Programming Language :: Python :: 3.12",
51
50
  "Topic :: System :: Monitoring",
52
51
  ]
53
- requires-python = "~=3.9"
52
+ requires-python = "~=3.10"
54
53
 
55
54
  # The dependencies should be modified in place in the generated file.
56
55
  # Any change in the dependencies is preserved when the file is regenerated
@@ -72,6 +71,9 @@ dependencies = [
72
71
  "amazon" = [
73
72
  "apache-airflow-providers-amazon",
74
73
  ]
74
+ "ssh" = [
75
+ "apache-airflow-providers-ssh"
76
+ ]
75
77
 
76
78
  [dependency-groups]
77
79
  dev = [
@@ -81,6 +83,7 @@ dev = [
81
83
  "apache-airflow-providers-amazon",
82
84
  "apache-airflow-providers-common-sql",
83
85
  "apache-airflow-providers-microsoft-azure",
86
+ "apache-airflow-providers-ssh",
84
87
  # Additional devel dependencies (do not remove this line and add extra development dependencies)
85
88
  ]
86
89
 
@@ -110,8 +113,8 @@ apache-airflow-providers-common-sql = {workspace = true}
110
113
  apache-airflow-providers-standard = {workspace = true}
111
114
 
112
115
  [project.urls]
113
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0"
114
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.1.0/changelog.html"
116
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0"
117
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.2.0/changelog.html"
115
118
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
116
119
  "Source Code" = "https://github.com/apache/airflow"
117
120
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "3.1.0"
32
+ __version__ = "3.2.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.10.0"
@@ -45,10 +45,13 @@ def get_provider_info():
45
45
  "airflow.providers.teradata.operators.teradata",
46
46
  "airflow.providers.teradata.operators.teradata_compute_cluster",
47
47
  ],
48
- }
48
+ },
49
+ {"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.operators.bteq"]},
49
50
  ],
50
51
  "hooks": [
51
- {"integration-name": "Teradata", "python-modules": ["airflow.providers.teradata.hooks.teradata"]}
52
+ {"integration-name": "Teradata", "python-modules": ["airflow.providers.teradata.hooks.teradata"]},
53
+ {"integration-name": "Ttu", "python-modules": ["airflow.providers.teradata.hooks.ttu"]},
54
+ {"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.hooks.bteq"]},
52
55
  ],
53
56
  "transfers": [
54
57
  {