apache-airflow-providers-hashicorp 3.7.0rc1__tar.gz → 3.7.1__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-hashicorp might be problematic. Click here for more details.

Files changed (12) hide show
  1. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/PKG-INFO +12 -9
  2. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/README.rst +5 -5
  3. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/__init__.py +5 -8
  4. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/_internal_client/vault_client.py +44 -15
  5. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/get_provider_info.py +7 -2
  6. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/hooks/vault.py +8 -7
  7. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/secrets/vault.py +12 -7
  8. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/pyproject.toml +8 -4
  9. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/LICENSE +0 -0
  10. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/_internal_client/__init__.py +0 -0
  11. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/hooks/__init__.py +0 -0
  12. {apache_airflow_providers_hashicorp-3.7.0rc1 → apache_airflow_providers_hashicorp-3.7.1}/airflow/providers/hashicorp/secrets/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-hashicorp
3
- Version: 3.7.0rc1
3
+ Version: 3.7.1
4
4
  Summary: Provider package apache-airflow-providers-hashicorp for Apache Airflow
5
5
  Keywords: airflow-provider,hashicorp,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -19,17 +19,20 @@ Classifier: Programming Language :: Python :: 3.8
19
19
  Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
22
23
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.6.0.dev0
24
+ Requires-Dist: apache-airflow>=2.7.0
24
25
  Requires-Dist: hvac>=1.1.0
26
+ Requires-Dist: boto3>=1.33.0 ; extra == "boto3"
25
27
  Requires-Dist: apache-airflow-providers-google ; extra == "google"
26
28
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
27
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/changelog.html
28
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0
29
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/changelog.html
30
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1
29
31
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
30
32
  Project-URL: Source Code, https://github.com/apache/airflow
31
33
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
32
34
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
35
+ Provides-Extra: boto3
33
36
  Provides-Extra: google
34
37
 
35
38
 
@@ -76,7 +79,7 @@ Provides-Extra: google
76
79
 
77
80
  Package ``apache-airflow-providers-hashicorp``
78
81
 
79
- Release: ``3.7.0.rc1``
82
+ Release: ``3.7.1``
80
83
 
81
84
 
82
85
  Hashicorp including `Hashicorp Vault <https://www.vaultproject.io/>`__
@@ -89,7 +92,7 @@ This is a provider package for ``hashicorp`` provider. All classes for this prov
89
92
  are in ``airflow.providers.hashicorp`` python package.
90
93
 
91
94
  You can find package information and changelog for the provider
92
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/>`_.
95
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/>`_.
93
96
 
94
97
  Installation
95
98
  ------------
@@ -98,7 +101,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
98
101
  for the minimum Airflow version supported) via
99
102
  ``pip install apache-airflow-providers-hashicorp``
100
103
 
101
- The package supports the following python versions: 3.8,3.9,3.10,3.11
104
+ The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
102
105
 
103
106
  Requirements
104
107
  ------------
@@ -106,7 +109,7 @@ Requirements
106
109
  ================== ==================
107
110
  PIP package Version required
108
111
  ================== ==================
109
- ``apache-airflow`` ``>=2.6.0``
112
+ ``apache-airflow`` ``>=2.7.0``
110
113
  ``hvac`` ``>=1.1.0``
111
114
  ================== ==================
112
115
 
@@ -130,4 +133,4 @@ Dependent package
130
133
  ==================================================================================================== ==========
131
134
 
132
135
  The changelog for the provider package can be found in the
133
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/changelog.html>`_.
136
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/changelog.html>`_.
@@ -42,7 +42,7 @@
42
42
 
43
43
  Package ``apache-airflow-providers-hashicorp``
44
44
 
45
- Release: ``3.7.0.rc1``
45
+ Release: ``3.7.1``
46
46
 
47
47
 
48
48
  Hashicorp including `Hashicorp Vault <https://www.vaultproject.io/>`__
@@ -55,7 +55,7 @@ This is a provider package for ``hashicorp`` provider. All classes for this prov
55
55
  are in ``airflow.providers.hashicorp`` python package.
56
56
 
57
57
  You can find package information and changelog for the provider
58
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/>`_.
58
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/>`_.
59
59
 
60
60
  Installation
61
61
  ------------
@@ -64,7 +64,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
64
64
  for the minimum Airflow version supported) via
65
65
  ``pip install apache-airflow-providers-hashicorp``
66
66
 
67
- The package supports the following python versions: 3.8,3.9,3.10,3.11
67
+ The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
68
68
 
69
69
  Requirements
70
70
  ------------
@@ -72,7 +72,7 @@ Requirements
72
72
  ================== ==================
73
73
  PIP package Version required
74
74
  ================== ==================
75
- ``apache-airflow`` ``>=2.6.0``
75
+ ``apache-airflow`` ``>=2.7.0``
76
76
  ``hvac`` ``>=1.1.0``
77
77
  ================== ==================
78
78
 
@@ -96,4 +96,4 @@ Dependent package
96
96
  ==================================================================================================== ==========
97
97
 
98
98
  The changelog for the provider package can be found in the
99
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/changelog.html>`_.
99
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/changelog.html>`_.
@@ -25,18 +25,15 @@ from __future__ import annotations
25
25
 
26
26
  import packaging.version
27
27
 
28
- __all__ = ["__version__"]
28
+ from airflow import __version__ as airflow_version
29
29
 
30
- __version__ = "3.7.0"
30
+ __all__ = ["__version__"]
31
31
 
32
- try:
33
- from airflow import __version__ as airflow_version
34
- except ImportError:
35
- from airflow.version import version as airflow_version
32
+ __version__ = "3.7.1"
36
33
 
37
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
38
- "2.6.0"
35
+ "2.7.0"
39
36
  ):
40
37
  raise RuntimeError(
41
- f"The package `apache-airflow-providers-hashicorp:{__version__}` needs Apache Airflow 2.6.0+"
38
+ f"The package `apache-airflow-providers-hashicorp:{__version__}` needs Apache Airflow 2.7.0+"
42
39
  )
@@ -16,6 +16,7 @@
16
16
  # under the License.
17
17
  from __future__ import annotations
18
18
 
19
+ import os
19
20
  from functools import cached_property
20
21
 
21
22
  import hvac
@@ -73,6 +74,9 @@ class _VaultClient(LoggingMixin):
73
74
  :param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` auth_type).
74
75
  :param secret_id: Secret ID for Authentication (for ``approle``, ``aws_iam`` and ``azure`` auth_types).
75
76
  :param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` auth_types).
77
+ :param assume_role_kwargs: AWS assume role param.
78
+ See AWS STS Docs:
79
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
76
80
  :param kubernetes_role: Role for Authentication (for ``kubernetes`` auth_type).
77
81
  :param kubernetes_jwt_path: Path for kubernetes jwt token (for ``kubernetes`` auth_type, default:
78
82
  ``/var/run/secrets/kubernetes.io/serviceaccount/token``).
@@ -102,6 +106,7 @@ class _VaultClient(LoggingMixin):
102
106
  password: str | None = None,
103
107
  key_id: str | None = None,
104
108
  secret_id: str | None = None,
109
+ assume_role_kwargs: dict | None = None,
105
110
  role_id: str | None = None,
106
111
  kubernetes_role: str | None = None,
107
112
  kubernetes_jwt_path: str | None = "/var/run/secrets/kubernetes.io/serviceaccount/token",
@@ -125,7 +130,7 @@ class _VaultClient(LoggingMixin):
125
130
  raise VaultError(
126
131
  f"The auth_type is not supported: {auth_type}. It should be one of {VALID_AUTH_TYPES}"
127
132
  )
128
- if auth_type == "token" and not token and not token_path:
133
+ if auth_type == "token" and not token and not token_path and "VAULT_TOKEN" not in os.environ:
129
134
  raise VaultError("The 'token' authentication type requires 'token' or 'token_path'")
130
135
  if auth_type == "github" and not token and not token_path:
131
136
  raise VaultError("The 'github' authentication type requires 'token' or 'token_path'")
@@ -151,7 +156,7 @@ class _VaultClient(LoggingMixin):
151
156
  self.url = url
152
157
  self.auth_type = auth_type
153
158
  self.kwargs = kwargs
154
- self.token = token
159
+ self.token = token or os.getenv("VAULT_TOKEN", None)
155
160
  self.token_path = token_path
156
161
  self.auth_mount_point = auth_mount_point
157
162
  self.mount_point = mount_point
@@ -160,6 +165,7 @@ class _VaultClient(LoggingMixin):
160
165
  self.key_id = key_id
161
166
  self.secret_id = secret_id
162
167
  self.role_id = role_id
168
+ self.assume_role_kwargs = assume_role_kwargs
163
169
  self.kubernetes_role = kubernetes_role
164
170
  self.kubernetes_jwt_path = kubernetes_jwt_path
165
171
  self.gcp_key_path = gcp_key_path
@@ -206,6 +212,8 @@ class _VaultClient(LoggingMixin):
206
212
  session = Session()
207
213
  session.mount("http://", adapter)
208
214
  session.mount("https://", adapter)
215
+ if self.kwargs and "verify" in self.kwargs:
216
+ session.verify = self.kwargs["verify"]
209
217
  self.kwargs["session"] = session
210
218
 
211
219
  _client = hvac.Client(url=self.url, **self.kwargs)
@@ -317,15 +325,36 @@ class _VaultClient(LoggingMixin):
317
325
  )
318
326
 
319
327
  def _auth_aws_iam(self, _client: hvac.Client) -> None:
320
- if self.auth_mount_point:
321
- _client.auth.aws.iam_login(
322
- access_key=self.key_id,
323
- secret_key=self.secret_id,
324
- role=self.role_id,
325
- mount_point=self.auth_mount_point,
326
- )
328
+ if self.key_id and self.secret_id:
329
+ auth_args = {
330
+ "access_key": self.key_id,
331
+ "secret_key": self.secret_id,
332
+ "role": self.role_id,
333
+ }
327
334
  else:
328
- _client.auth.aws.iam_login(access_key=self.key_id, secret_key=self.secret_id, role=self.role_id)
335
+ import boto3
336
+
337
+ if self.assume_role_kwargs:
338
+ sts_client = boto3.client("sts")
339
+ credentials = sts_client.assume_role(**self.assume_role_kwargs)
340
+ auth_args = {
341
+ "access_key": credentials["Credentials"]["AccessKeyId"],
342
+ "secret_key": credentials["Credentials"]["SecretAccessKey"],
343
+ "session_token": credentials["Credentials"]["SessionToken"],
344
+ }
345
+ else:
346
+ session = boto3.Session()
347
+ credentials = session.get_credentials()
348
+ auth_args = {
349
+ "access_key": credentials.access_key,
350
+ "secret_key": credentials.secret_key,
351
+ "session_token": credentials.token,
352
+ }
353
+
354
+ if self.auth_mount_point:
355
+ auth_args["mount_point"] = self.auth_mount_point
356
+
357
+ _client.auth.aws.iam_login(**auth_args)
329
358
 
330
359
  def _auth_approle(self, _client: hvac.Client) -> None:
331
360
  if self.auth_mount_point:
@@ -387,7 +416,7 @@ class _VaultClient(LoggingMixin):
387
416
 
388
417
  def get_secret_metadata(self, secret_path: str) -> dict | None:
389
418
  """
390
- Reads secret metadata (including versions) from the engine. It is only valid for KV version 2.
419
+ Read secret metadata (including versions) from the engine. It is only valid for KV version 2.
391
420
 
392
421
  :param secret_path: The path of the secret.
393
422
  :return: secret metadata. This is a Dict containing metadata for the secret.
@@ -409,7 +438,7 @@ class _VaultClient(LoggingMixin):
409
438
  self, secret_path: str, secret_version: int | None = None
410
439
  ) -> dict | None:
411
440
  """
412
- Reads secret including metadata. It is only valid for KV version 2.
441
+ Read secret including metadata. It is only valid for KV version 2.
413
442
 
414
443
  See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
415
444
 
@@ -443,7 +472,7 @@ class _VaultClient(LoggingMixin):
443
472
  self, secret_path: str, secret: dict, method: str | None = None, cas: int | None = None
444
473
  ) -> Response:
445
474
  """
446
- Creates or updates secret.
475
+ Create or updates secret.
447
476
 
448
477
  :param secret_path: The path of the secret.
449
478
  :param secret: Secret to create or update for the path specified
@@ -467,10 +496,10 @@ class _VaultClient(LoggingMixin):
467
496
  mount_point, secret_path = self._parse_secret_path(secret_path)
468
497
  if self.kv_engine_version == 1:
469
498
  response = self.client.secrets.kv.v1.create_or_update_secret(
470
- secret_path=secret_path, secret=secret, mount_point=mount_point, method=method
499
+ path=secret_path, secret=secret, mount_point=mount_point, method=method
471
500
  )
472
501
  else:
473
502
  response = self.client.secrets.kv.v2.create_or_update_secret(
474
- secret_path=secret_path, secret=secret, mount_point=mount_point, cas=cas
503
+ path=secret_path, secret=secret, mount_point=mount_point, cas=cas
475
504
  )
476
505
  return response
@@ -28,9 +28,13 @@ def get_provider_info():
28
28
  "name": "Hashicorp",
29
29
  "description": "Hashicorp including `Hashicorp Vault <https://www.vaultproject.io/>`__\n",
30
30
  "state": "ready",
31
- "source-date-epoch": 1705912121,
31
+ "source-date-epoch": 1716287935,
32
32
  "versions": [
33
+ "3.7.1",
33
34
  "3.7.0",
35
+ "3.6.4",
36
+ "3.6.3",
37
+ "3.6.2",
34
38
  "3.6.1",
35
39
  "3.6.0",
36
40
  "3.5.0",
@@ -55,7 +59,7 @@ def get_provider_info():
55
59
  "1.0.1",
56
60
  "1.0.0",
57
61
  ],
58
- "dependencies": ["apache-airflow>=2.6.0", "hvac>=1.1.0"],
62
+ "dependencies": ["apache-airflow>=2.7.0", "hvac>=1.1.0"],
59
63
  "integrations": [
60
64
  {
61
65
  "integration-name": "Hashicorp Vault",
@@ -77,4 +81,5 @@ def get_provider_info():
77
81
  }
78
82
  ],
79
83
  "secrets-backends": ["airflow.providers.hashicorp.secrets.vault.VaultBackend"],
84
+ "additional-extras": [{"name": "boto3", "dependencies": ["boto3>=1.33.0"]}],
80
85
  }
@@ -15,6 +15,7 @@
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
17
  """Hook for HashiCorp Vault."""
18
+
18
19
  from __future__ import annotations
19
20
 
20
21
  import json
@@ -125,7 +126,7 @@ class VaultHook(BaseHook):
125
126
  radius_port: int | None = None,
126
127
  **kwargs,
127
128
  ):
128
- super().__init__(logger_name=kwargs.pop("logger_name", None))
129
+ super().__init__()
129
130
  self.connection = self.get_connection(vault_conn_id)
130
131
 
131
132
  if not auth_type:
@@ -290,7 +291,7 @@ class VaultHook(BaseHook):
290
291
 
291
292
  def get_conn(self) -> hvac.Client:
292
293
  """
293
- Retrieves connection to Vault.
294
+ Retrieve connection to Vault.
294
295
 
295
296
  :return: connection used.
296
297
  """
@@ -313,7 +314,7 @@ class VaultHook(BaseHook):
313
314
 
314
315
  def get_secret_metadata(self, secret_path: str) -> dict | None:
315
316
  """
316
- Reads secret metadata (including versions) from the engine. It is only valid for KV version 2.
317
+ Read secret metadata (including versions) from the engine. It is only valid for KV version 2.
317
318
 
318
319
  :param secret_path: Path to read from
319
320
  :return: secret metadata. This is a Dict containing metadata for the secret.
@@ -327,7 +328,7 @@ class VaultHook(BaseHook):
327
328
  self, secret_path: str, secret_version: int | None = None
328
329
  ) -> dict | None:
329
330
  """
330
- Reads secret including metadata. It is only valid for KV version 2.
331
+ Read secret including metadata. It is only valid for KV version 2.
331
332
 
332
333
  See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
333
334
 
@@ -345,7 +346,7 @@ class VaultHook(BaseHook):
345
346
  self, secret_path: str, secret: dict, method: str | None = None, cas: int | None = None
346
347
  ) -> Response:
347
348
  """
348
- Creates or updates secret.
349
+ Create or updates secret.
349
350
 
350
351
  :param secret_path: Path to read from
351
352
  :param secret: Secret to create or update for the path specified
@@ -368,7 +369,7 @@ class VaultHook(BaseHook):
368
369
 
369
370
  @classmethod
370
371
  def get_connection_form_widgets(cls) -> dict[str, Any]:
371
- """Returns connection widgets to add to connection form."""
372
+ """Return connection widgets to add to connection form."""
372
373
  from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
373
374
  from flask_babel import lazy_gettext
374
375
  from wtforms import BooleanField, IntegerField, StringField
@@ -405,7 +406,7 @@ class VaultHook(BaseHook):
405
406
 
406
407
  @classmethod
407
408
  def get_ui_field_behaviour(cls) -> dict[str, Any]:
408
- """Returns custom field behaviour."""
409
+ """Return custom field behaviour."""
409
410
  return {
410
411
  "hidden_fields": ["extra"],
411
412
  "relabeling": {},
@@ -16,11 +16,13 @@
16
16
  # specific language governing permissions and limitations
17
17
  # under the License.
18
18
  """Objects relating to sourcing connections & variables from Hashicorp Vault."""
19
+
19
20
  from __future__ import annotations
20
21
 
21
- import warnings
22
22
  from typing import TYPE_CHECKING
23
23
 
24
+ from deprecated import deprecated
25
+
24
26
  from airflow.exceptions import AirflowProviderDeprecationWarning
25
27
  from airflow.providers.hashicorp._internal_client.vault_client import _VaultClient
26
28
  from airflow.secrets import BaseSecretsBackend
@@ -72,6 +74,9 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
72
74
  :param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` auth_type).
73
75
  :param secret_id: Secret ID for Authentication (for ``approle``, ``aws_iam`` and ``azure`` auth_types).
74
76
  :param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` auth_types).
77
+ :param assume_role_kwargs: AWS assume role param.
78
+ See AWS STS Docs:
79
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
75
80
  :param kubernetes_role: Role for Authentication (for ``kubernetes`` auth_type).
76
81
  :param kubernetes_jwt_path: Path for kubernetes jwt token (for ``kubernetes`` auth_type, default:
77
82
  ``/var/run/secrets/kubernetes.io/serviceaccount/token``).
@@ -105,6 +110,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
105
110
  key_id: str | None = None,
106
111
  secret_id: str | None = None,
107
112
  role_id: str | None = None,
113
+ assume_role_kwargs: dict | None = None,
108
114
  kubernetes_role: str | None = None,
109
115
  kubernetes_jwt_path: str = "/var/run/secrets/kubernetes.io/serviceaccount/token",
110
116
  gcp_key_path: str | None = None,
@@ -145,6 +151,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
145
151
  key_id=key_id,
146
152
  secret_id=secret_id,
147
153
  role_id=role_id,
154
+ assume_role_kwargs=assume_role_kwargs,
148
155
  kubernetes_role=kubernetes_role,
149
156
  kubernetes_jwt_path=kubernetes_jwt_path,
150
157
  gcp_key_path=gcp_key_path,
@@ -184,6 +191,10 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
184
191
  secret_path=(mount_point + "/" if mount_point else "") + secret_path
185
192
  )
186
193
 
194
+ @deprecated(
195
+ reason="Method `VaultBackend.get_conn_uri` is deprecated and will be removed in a future release.",
196
+ category=AirflowProviderDeprecationWarning,
197
+ )
187
198
  def get_conn_uri(self, conn_id: str) -> str | None:
188
199
  """
189
200
  Get serialized representation of connection.
@@ -193,12 +204,6 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
193
204
  """
194
205
  # Since VaultBackend implements `get_connection`, `get_conn_uri` is not used. So we
195
206
  # don't need to implement (or direct users to use) method `get_conn_value` instead
196
- warnings.warn(
197
- f"Method `{self.__class__.__name__}.get_conn_uri` is deprecated and will be removed "
198
- "in a future release.",
199
- AirflowProviderDeprecationWarning,
200
- stacklevel=2,
201
- )
202
207
  response = self.get_response(conn_id)
203
208
  return response.get("conn_uri") if response else None
204
209
 
@@ -28,7 +28,7 @@ build-backend = "flit_core.buildapi"
28
28
 
29
29
  [project]
30
30
  name = "apache-airflow-providers-hashicorp"
31
- version = "3.7.0.rc1"
31
+ version = "3.7.1"
32
32
  description = "Provider package apache-airflow-providers-hashicorp for Apache Airflow"
33
33
  readme = "README.rst"
34
34
  authors = [
@@ -51,17 +51,18 @@ classifiers = [
51
51
  "Programming Language :: Python :: 3.9",
52
52
  "Programming Language :: Python :: 3.10",
53
53
  "Programming Language :: Python :: 3.11",
54
+ "Programming Language :: Python :: 3.12",
54
55
  "Topic :: System :: Monitoring",
55
56
  ]
56
57
  requires-python = "~=3.8"
57
58
  dependencies = [
58
- "apache-airflow>=2.6.0.dev0",
59
+ "apache-airflow>=2.7.0",
59
60
  "hvac>=1.1.0",
60
61
  ]
61
62
 
62
63
  [project.urls]
63
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0"
64
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/changelog.html"
64
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1"
65
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.1/changelog.html"
65
66
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
66
67
  "Source Code" = "https://github.com/apache/airflow"
67
68
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -74,6 +75,9 @@ provider_info = "airflow.providers.hashicorp.get_provider_info:get_provider_info
74
75
  "google" = [
75
76
  "apache-airflow-providers-google",
76
77
  ]
78
+ "boto3" = [
79
+ "boto3>=1.33.0",
80
+ ]
77
81
 
78
82
  [tool.flit.module]
79
83
  name = "airflow.providers.hashicorp"