apache-airflow-providers-amazon 8.29.0rc1__py3-none-any.whl → 9.0.0rc1__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 (65) hide show
  1. airflow/providers/amazon/__init__.py +1 -1
  2. airflow/providers/amazon/aws/{datasets → assets}/s3.py +10 -6
  3. airflow/providers/amazon/aws/auth_manager/avp/entities.py +1 -1
  4. airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +5 -11
  5. airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +2 -5
  6. airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -6
  7. airflow/providers/amazon/aws/auth_manager/views/auth.py +1 -1
  8. airflow/providers/amazon/aws/hooks/athena.py +3 -17
  9. airflow/providers/amazon/aws/hooks/base_aws.py +4 -162
  10. airflow/providers/amazon/aws/hooks/logs.py +1 -20
  11. airflow/providers/amazon/aws/hooks/quicksight.py +1 -17
  12. airflow/providers/amazon/aws/hooks/redshift_cluster.py +6 -120
  13. airflow/providers/amazon/aws/hooks/redshift_data.py +52 -14
  14. airflow/providers/amazon/aws/hooks/s3.py +24 -27
  15. airflow/providers/amazon/aws/hooks/sagemaker.py +4 -48
  16. airflow/providers/amazon/aws/log/s3_task_handler.py +1 -6
  17. airflow/providers/amazon/aws/operators/appflow.py +1 -10
  18. airflow/providers/amazon/aws/operators/batch.py +1 -29
  19. airflow/providers/amazon/aws/operators/datasync.py +1 -8
  20. airflow/providers/amazon/aws/operators/ecs.py +1 -25
  21. airflow/providers/amazon/aws/operators/eks.py +7 -46
  22. airflow/providers/amazon/aws/operators/emr.py +16 -232
  23. airflow/providers/amazon/aws/operators/glue_databrew.py +1 -10
  24. airflow/providers/amazon/aws/operators/rds.py +3 -17
  25. airflow/providers/amazon/aws/operators/redshift_data.py +18 -3
  26. airflow/providers/amazon/aws/operators/s3.py +12 -2
  27. airflow/providers/amazon/aws/operators/sagemaker.py +10 -32
  28. airflow/providers/amazon/aws/secrets/secrets_manager.py +1 -40
  29. airflow/providers/amazon/aws/sensors/batch.py +1 -8
  30. airflow/providers/amazon/aws/sensors/dms.py +1 -8
  31. airflow/providers/amazon/aws/sensors/dynamodb.py +22 -8
  32. airflow/providers/amazon/aws/sensors/emr.py +0 -7
  33. airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +1 -8
  34. airflow/providers/amazon/aws/sensors/glue_crawler.py +1 -8
  35. airflow/providers/amazon/aws/sensors/quicksight.py +1 -29
  36. airflow/providers/amazon/aws/sensors/redshift_cluster.py +1 -8
  37. airflow/providers/amazon/aws/sensors/s3.py +1 -8
  38. airflow/providers/amazon/aws/sensors/sagemaker.py +2 -9
  39. airflow/providers/amazon/aws/sensors/sqs.py +1 -8
  40. airflow/providers/amazon/aws/sensors/step_function.py +1 -8
  41. airflow/providers/amazon/aws/transfers/base.py +1 -14
  42. airflow/providers/amazon/aws/transfers/gcs_to_s3.py +5 -33
  43. airflow/providers/amazon/aws/transfers/redshift_to_s3.py +15 -10
  44. airflow/providers/amazon/aws/transfers/s3_to_redshift.py +6 -6
  45. airflow/providers/amazon/aws/transfers/sql_to_s3.py +3 -6
  46. airflow/providers/amazon/aws/triggers/batch.py +1 -168
  47. airflow/providers/amazon/aws/triggers/eks.py +1 -20
  48. airflow/providers/amazon/aws/triggers/emr.py +0 -32
  49. airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -11
  50. airflow/providers/amazon/aws/triggers/glue_databrew.py +0 -21
  51. airflow/providers/amazon/aws/triggers/rds.py +0 -79
  52. airflow/providers/amazon/aws/triggers/redshift_cluster.py +5 -64
  53. airflow/providers/amazon/aws/triggers/sagemaker.py +2 -93
  54. airflow/providers/amazon/aws/utils/asset_compat_lineage_collector.py +106 -0
  55. airflow/providers/amazon/aws/utils/connection_wrapper.py +4 -164
  56. airflow/providers/amazon/aws/utils/mixins.py +1 -23
  57. airflow/providers/amazon/aws/utils/openlineage.py +3 -1
  58. airflow/providers/amazon/aws/utils/task_log_fetcher.py +1 -1
  59. airflow/providers/amazon/get_provider_info.py +13 -4
  60. {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/METADATA +8 -9
  61. {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/RECORD +64 -64
  62. airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -149
  63. /airflow/providers/amazon/aws/{datasets → assets}/__init__.py +0 -0
  64. {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/WHEEL +0 -0
  65. {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/entry_points.txt +0 -0
@@ -25,12 +25,10 @@ from typing import TYPE_CHECKING, Any
25
25
 
26
26
  from botocore import UNSIGNED
27
27
  from botocore.config import Config
28
- from deprecated import deprecated
29
28
 
30
- from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
29
+ from airflow.exceptions import AirflowException
31
30
  from airflow.providers.amazon.aws.utils import trim_none_values
32
31
  from airflow.utils.log.logging_mixin import LoggingMixin
33
- from airflow.utils.log.secrets_masker import mask_secret
34
32
  from airflow.utils.types import NOTSET, ArgNotSet
35
33
 
36
34
  if TYPE_CHECKING:
@@ -157,15 +155,6 @@ class AwsConnectionWrapper(LoggingMixin):
157
155
  "Can't resolve STS endpoint when both "
158
156
  "`sts_connection` and `sts_test_connection` set to True."
159
157
  )
160
- elif sts_test_connection:
161
- if "test_endpoint_url" in self.extra_config:
162
- warnings.warn(
163
- "extra['test_endpoint_url'] is deprecated and will be removed in a future release."
164
- " Please set `endpoint_url` in `service_config.sts` within `extras`.",
165
- AirflowProviderDeprecationWarning,
166
- stacklevel=2,
167
- )
168
- global_endpoint_url = self.extra_config["test_endpoint_url"]
169
158
 
170
159
  return service_config.get("endpoint_url", global_endpoint_url)
171
160
 
@@ -208,15 +197,7 @@ class AwsConnectionWrapper(LoggingMixin):
208
197
  self.schema = conn.schema or None
209
198
  self.extra_config = deepcopy(conn.extra_dejson)
210
199
 
211
- if self.conn_type.lower() == "s3":
212
- warnings.warn(
213
- f"{self.conn_repr} has connection type 's3', "
214
- "which has been replaced by connection type 'aws'. "
215
- "Please update your connection to have `conn_type='aws'`.",
216
- AirflowProviderDeprecationWarning,
217
- stacklevel=2,
218
- )
219
- elif self.conn_type != "aws":
200
+ if self.conn_type != "aws":
220
201
  warnings.warn(
221
202
  f"{self.conn_repr} expected connection type 'aws', got {self.conn_type!r}. "
222
203
  "This connection might not work correctly. "
@@ -228,15 +209,6 @@ class AwsConnectionWrapper(LoggingMixin):
228
209
  extra = deepcopy(conn.extra_dejson)
229
210
  self.service_config = extra.get("service_config", {})
230
211
 
231
- session_kwargs = extra.get("session_kwargs", {})
232
- if session_kwargs:
233
- warnings.warn(
234
- "'session_kwargs' in extra config is deprecated and will be removed in a future releases. "
235
- f"Please specify arguments passed to boto3 Session directly in {self.conn_repr} extra.",
236
- AirflowProviderDeprecationWarning,
237
- stacklevel=2,
238
- )
239
-
240
212
  # Retrieve initial connection credentials
241
213
  init_credentials = self._get_credentials(**extra)
242
214
  self.aws_access_key_id, self.aws_secret_access_key, self.aws_session_token = init_credentials
@@ -245,13 +217,6 @@ class AwsConnectionWrapper(LoggingMixin):
245
217
  if "region_name" in extra:
246
218
  self.region_name = extra["region_name"]
247
219
  self.log.debug("Retrieving region_name=%s from %s extra.", self.region_name, self.conn_repr)
248
- elif "region_name" in session_kwargs:
249
- self.region_name = session_kwargs["region_name"]
250
- self.log.debug(
251
- "Retrieving region_name=%s from %s extra['session_kwargs'].",
252
- self.region_name,
253
- self.conn_repr,
254
- )
255
220
 
256
221
  if self.verify is None and "verify" in extra:
257
222
  self.verify = extra["verify"]
@@ -260,13 +225,6 @@ class AwsConnectionWrapper(LoggingMixin):
260
225
  if "profile_name" in extra:
261
226
  self.profile_name = extra["profile_name"]
262
227
  self.log.debug("Retrieving profile_name=%s from %s extra.", self.profile_name, self.conn_repr)
263
- elif "profile_name" in session_kwargs:
264
- self.profile_name = session_kwargs["profile_name"]
265
- self.log.debug(
266
- "Retrieving profile_name=%s from %s extra['session_kwargs'].",
267
- self.profile_name,
268
- self.conn_repr,
269
- )
270
228
 
271
229
  # Warn the user that an invalid parameter is being used which actually not related to 'profile_name'.
272
230
  # ToDo: Remove this check entirely as soon as drop support credentials from s3_config_file
@@ -287,24 +245,7 @@ class AwsConnectionWrapper(LoggingMixin):
287
245
  config_kwargs["signature_version"] = UNSIGNED
288
246
  self.botocore_config = Config(**config_kwargs)
289
247
 
290
- if conn.host:
291
- warnings.warn(
292
- f"Host {conn.host} specified in the connection is not used."
293
- " Please, set it on extra['endpoint_url'] instead",
294
- AirflowProviderDeprecationWarning,
295
- stacklevel=2,
296
- )
297
-
298
- self.endpoint_url = extra.get("host")
299
- if self.endpoint_url:
300
- warnings.warn(
301
- "extra['host'] is deprecated and will be removed in a future release."
302
- " Please set extra['endpoint_url'] instead",
303
- AirflowProviderDeprecationWarning,
304
- stacklevel=2,
305
- )
306
- else:
307
- self.endpoint_url = extra.get("endpoint_url")
248
+ self.endpoint_url = extra.get("endpoint_url")
308
249
 
309
250
  # Retrieve Assume Role Configuration
310
251
  assume_role_configs = self._get_assume_role_configs(**extra)
@@ -359,10 +300,6 @@ class AwsConnectionWrapper(LoggingMixin):
359
300
  aws_access_key_id: str | None = None,
360
301
  aws_secret_access_key: str | None = None,
361
302
  aws_session_token: str | None = None,
362
- # Deprecated Values
363
- s3_config_file: str | None = None,
364
- s3_config_format: str | None = None,
365
- profile: str | None = None,
366
303
  session_kwargs: dict[str, Any] | None = None,
367
304
  **kwargs,
368
305
  ) -> tuple[str | None, str | None, str | None]:
@@ -393,13 +330,6 @@ class AwsConnectionWrapper(LoggingMixin):
393
330
  aws_access_key_id = session_aws_access_key_id
394
331
  aws_secret_access_key = session_aws_secret_access_key
395
332
  self.log.info("%s credentials retrieved from extra['session_kwargs'].", self.conn_repr)
396
- elif s3_config_file:
397
- aws_access_key_id, aws_secret_access_key = _parse_s3_config(
398
- s3_config_file,
399
- s3_config_format,
400
- profile,
401
- )
402
- self.log.info("%s credentials retrieved from extra['s3_config_file']", self.conn_repr)
403
333
 
404
334
  if aws_session_token:
405
335
  self.log.info(
@@ -422,31 +352,12 @@ class AwsConnectionWrapper(LoggingMixin):
422
352
  role_arn: str | None = None,
423
353
  assume_role_method: str = "assume_role",
424
354
  assume_role_kwargs: dict[str, Any] | None = None,
425
- # Deprecated Values
426
- aws_account_id: str | None = None,
427
- aws_iam_role: str | None = None,
428
- external_id: str | None = None,
429
355
  **kwargs,
430
356
  ) -> tuple[str | None, str | None, dict[Any, str]]:
431
357
  """Get assume role configs from Connection extra."""
432
358
  if role_arn:
433
359
  self.log.debug("Retrieving role_arn=%r from %s extra.", role_arn, self.conn_repr)
434
- elif aws_account_id and aws_iam_role:
435
- warnings.warn(
436
- "Constructing 'role_arn' from extra['aws_account_id'] and extra['aws_iam_role'] is deprecated"
437
- f" and will be removed in a future releases."
438
- f" Please set 'role_arn' in {self.conn_repr} extra.",
439
- AirflowProviderDeprecationWarning,
440
- stacklevel=3,
441
- )
442
- role_arn = f"arn:aws:iam::{aws_account_id}:role/{aws_iam_role}"
443
- self.log.debug(
444
- "Constructions role_arn=%r from %s extra['aws_account_id'] and extra['aws_iam_role'].",
445
- role_arn,
446
- self.conn_repr,
447
- )
448
-
449
- if not role_arn:
360
+ else:
450
361
  # There is no reason obtain `assume_role_method` and `assume_role_kwargs` if `role_arn` not set.
451
362
  return None, None, {}
452
363
 
@@ -460,76 +371,5 @@ class AwsConnectionWrapper(LoggingMixin):
460
371
  self.log.debug("Retrieve assume_role_method=%r from %s.", assume_role_method, self.conn_repr)
461
372
 
462
373
  assume_role_kwargs = assume_role_kwargs or {}
463
- if "ExternalId" not in assume_role_kwargs and external_id:
464
- warnings.warn(
465
- "'external_id' in extra config is deprecated and will be removed in a future releases. "
466
- f"Please set 'ExternalId' in 'assume_role_kwargs' in {self.conn_repr} extra.",
467
- AirflowProviderDeprecationWarning,
468
- stacklevel=3,
469
- )
470
- assume_role_kwargs["ExternalId"] = external_id
471
374
 
472
375
  return role_arn, assume_role_method, assume_role_kwargs
473
-
474
-
475
- @deprecated(
476
- reason=(
477
- "Use local credentials file is never documented and well tested. "
478
- "Obtain credentials by this way deprecated and will be removed in a future releases."
479
- ),
480
- category=AirflowProviderDeprecationWarning,
481
- )
482
- def _parse_s3_config(
483
- config_file_name: str, config_format: str | None = "boto", profile: str | None = None
484
- ) -> tuple[str | None, str | None]:
485
- """
486
- Parse a config file for S3 credentials.
487
-
488
- Can currently parse boto, s3cmd.conf and AWS SDK config formats.
489
-
490
- :param config_file_name: path to the config file
491
- :param config_format: config type. One of "boto", "s3cmd" or "aws".
492
- Defaults to "boto"
493
- :param profile: profile name in AWS type config file
494
- """
495
- import configparser
496
-
497
- config = configparser.ConfigParser()
498
- try:
499
- if config.read(config_file_name): # pragma: no cover
500
- sections = config.sections()
501
- else:
502
- raise AirflowException(f"Couldn't read {config_file_name}")
503
- except Exception as e:
504
- raise AirflowException("Exception when parsing %s: %s", config_file_name, e.__class__.__name__)
505
- # Setting option names depending on file format
506
- if config_format is None:
507
- config_format = "boto"
508
- conf_format = config_format.lower()
509
- if conf_format == "boto": # pragma: no cover
510
- if profile is not None and "profile " + profile in sections:
511
- cred_section = "profile " + profile
512
- else:
513
- cred_section = "Credentials"
514
- elif conf_format == "aws" and profile is not None:
515
- cred_section = profile
516
- else:
517
- cred_section = "default"
518
- # Option names
519
- if conf_format in ("boto", "aws"): # pragma: no cover
520
- key_id_option = "aws_access_key_id"
521
- secret_key_option = "aws_secret_access_key"
522
- else:
523
- key_id_option = "access_key"
524
- secret_key_option = "secret_key"
525
- # Actual Parsing
526
- if cred_section not in sections:
527
- raise AirflowException("This config file format is not recognized")
528
- else:
529
- try:
530
- access_key = config.get(cred_section, key_id_option)
531
- secret_key = config.get(cred_section, secret_key_option)
532
- mask_secret(secret_key)
533
- except Exception:
534
- raise AirflowException("Option Error in parsing s3 config file")
535
- return access_key, secret_key
@@ -27,19 +27,14 @@ This module contains different mixin classes for internal use within the Amazon
27
27
 
28
28
  from __future__ import annotations
29
29
 
30
- import warnings
31
- from functools import cached_property
30
+ from functools import cache, cached_property
32
31
  from typing import Any, Generic, NamedTuple, TypeVar
33
32
 
34
- from deprecated import deprecated
35
33
  from typing_extensions import final
36
34
 
37
- from airflow.compat.functools import cache
38
- from airflow.exceptions import AirflowProviderDeprecationWarning
39
35
  from airflow.providers.amazon.aws.hooks.base_aws import AwsGenericHook
40
36
 
41
37
  AwsHookType = TypeVar("AwsHookType", bound=AwsGenericHook)
42
- REGION_MSG = "`region` is deprecated and will be removed in the future. Please use `region_name` instead."
43
38
 
44
39
 
45
40
  class AwsHookParams(NamedTuple):
@@ -90,13 +85,6 @@ class AwsHookParams(NamedTuple):
90
85
  self.botocore_config = params.botocore_config
91
86
  self.foo = foo
92
87
  """
93
- if region := additional_params.pop("region", None):
94
- warnings.warn(REGION_MSG, AirflowProviderDeprecationWarning, stacklevel=3)
95
- if region_name and region_name != region:
96
- raise ValueError(
97
- f"Conflicting `region_name` provided, region_name={region_name!r}, region={region!r}."
98
- )
99
- region_name = region
100
88
  return cls(aws_conn_id, region_name, verify, botocore_config)
101
89
 
102
90
 
@@ -160,16 +148,6 @@ class AwsBaseHookMixin(Generic[AwsHookType]):
160
148
  """
161
149
  return self.aws_hook_class(**self._hook_parameters)
162
150
 
163
- @property
164
- @final
165
- @deprecated(
166
- reason="`region` is deprecated and will be removed in the future. Please use `region_name` instead.",
167
- category=AirflowProviderDeprecationWarning,
168
- )
169
- def region(self) -> str | None:
170
- """Alias for ``region_name``, used for compatibility (deprecated)."""
171
- return self.region_name
172
-
173
151
 
174
152
  @cache
175
153
  def aws_template_fields(*template_fields: str) -> tuple[str, ...]:
@@ -86,7 +86,9 @@ def get_facets_from_redshift_table(
86
86
  ]
87
87
  )
88
88
  else:
89
- statement_id = redshift_hook.execute_query(sql=sql, poll_interval=1, **redshift_data_api_kwargs)
89
+ statement_id = redshift_hook.execute_query(
90
+ sql=sql, poll_interval=1, **redshift_data_api_kwargs
91
+ ).statement_id
90
92
  response = redshift_hook.conn.get_statement_result(Id=statement_id)
91
93
 
92
94
  table_schema = SchemaDatasetFacet(
@@ -70,7 +70,7 @@ class AwsTaskLogFetcher(Thread):
70
70
  # timestamp)
71
71
  # When a slight delay is added before logging the event, that solves the issue
72
72
  # See https://github.com/apache/airflow/issues/40875
73
- time.sleep(0.1)
73
+ time.sleep(0.001)
74
74
  self.logger.info(self.event_to_str(log_event))
75
75
  prev_timestamp_event = current_timestamp_event
76
76
 
@@ -28,8 +28,9 @@ def get_provider_info():
28
28
  "name": "Amazon",
29
29
  "description": "Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).\n",
30
30
  "state": "ready",
31
- "source-date-epoch": 1726859877,
31
+ "source-date-epoch": 1728484310,
32
32
  "versions": [
33
+ "9.0.0",
33
34
  "8.29.0",
34
35
  "8.28.0",
35
36
  "8.27.0",
@@ -672,12 +673,20 @@ def get_provider_info():
672
673
  "python-modules": ["airflow.providers.amazon.aws.sensors.quicksight"],
673
674
  },
674
675
  ],
676
+ "asset-uris": [
677
+ {
678
+ "schemes": ["s3"],
679
+ "handler": "airflow.providers.amazon.aws.assets.s3.sanitize_uri",
680
+ "to_openlineage_converter": "airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage",
681
+ "factory": "airflow.providers.amazon.aws.assets.s3.create_asset",
682
+ }
683
+ ],
675
684
  "dataset-uris": [
676
685
  {
677
686
  "schemes": ["s3"],
678
- "handler": "airflow.providers.amazon.aws.datasets.s3.sanitize_uri",
679
- "to_openlineage_converter": "airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage",
680
- "factory": "airflow.providers.amazon.aws.datasets.s3.create_dataset",
687
+ "handler": "airflow.providers.amazon.aws.assets.s3.sanitize_uri",
688
+ "to_openlineage_converter": "airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage",
689
+ "factory": "airflow.providers.amazon.aws.assets.s3.create_asset",
681
690
  }
682
691
  ],
683
692
  "filesystems": ["airflow.providers.amazon.aws.fs.s3"],
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-amazon
3
- Version: 8.29.0rc1
3
+ Version: 9.0.0rc1
4
4
  Summary: Provider package apache-airflow-providers-amazon for Apache Airflow
5
5
  Keywords: airflow-provider,amazon,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.8
8
+ Requires-Python: ~=3.9
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.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
@@ -56,8 +55,8 @@ Requires-Dist: s3fs>=2023.10.0 ; extra == "s3fs"
56
55
  Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
57
56
  Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
58
57
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
59
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/changelog.html
60
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0
58
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/changelog.html
59
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0
61
60
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
62
61
  Project-URL: Source Code, https://github.com/apache/airflow
63
62
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
@@ -125,7 +124,7 @@ Provides-Extra: ssh
125
124
 
126
125
  Package ``apache-airflow-providers-amazon``
127
126
 
128
- Release: ``8.29.0.rc1``
127
+ Release: ``9.0.0.rc1``
129
128
 
130
129
 
131
130
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -138,7 +137,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
138
137
  are in ``airflow.providers.amazon`` python package.
139
138
 
140
139
  You can find package information and changelog for the provider
141
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/>`_.
140
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/>`_.
142
141
 
143
142
  Installation
144
143
  ------------
@@ -147,7 +146,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
147
146
  for the minimum Airflow version supported) via
148
147
  ``pip install apache-airflow-providers-amazon``
149
148
 
150
- The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
149
+ The package supports the following python versions: 3.9,3.10,3.11,3.12
151
150
 
152
151
  Requirements
153
152
  ------------
@@ -205,4 +204,4 @@ Dependent package
205
204
  ====================================================================================================================== ===================
206
205
 
207
206
  The changelog for the provider package can be found in the
208
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/changelog.html>`_.
207
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/changelog.html>`_.