apache-airflow-providers-amazon 8.24.0rc1__tar.gz → 8.25.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.
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/PKG-INFO +22 -21
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/README.rst +8 -8
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/LICENSE +4 -4
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/__init__.py +1 -1
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/base_aws.py +8 -3
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/comprehend.py +33 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/glue.py +123 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/redshift_sql.py +8 -1
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/bedrock.py +6 -20
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/comprehend.py +148 -1
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/emr.py +38 -30
- apache_airflow_providers_amazon-8.25.0/airflow/providers/amazon/aws/operators/glue.py +647 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/sagemaker.py +85 -12
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/comprehend.py +112 -1
- apache_airflow_providers_amazon-8.25.0/airflow/providers/amazon/aws/sensors/glue.py +351 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/s3.py +35 -5
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/dynamodb_to_s3.py +0 -1
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/redshift_to_s3.py +1 -1
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/comprehend.py +36 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/glue.py +76 -2
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/__init__.py +2 -3
- apache_airflow_providers_amazon-8.25.0/airflow/providers/amazon/aws/waiters/comprehend.json +104 -0
- apache_airflow_providers_amazon-8.25.0/airflow/providers/amazon/aws/waiters/glue.json +128 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/get_provider_info.py +20 -13
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/pyproject.toml +14 -13
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/operators/glue.py +0 -241
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/sensors/glue.py +0 -93
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/waiters/comprehend.json +0 -49
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/waiters/glue.json +0 -30
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/avp/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/avp/entities.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/avp/facade.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/avp/schema.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/cli/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/constants.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/security_manager/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/security_manager/aws_security_manager_override.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/user.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/views/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/auth_manager/views/auth.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/exceptions.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/Dockerfile +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/batch/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/batch/batch_executor.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/batch/batch_executor_config.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/batch/boto_schema.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/batch/utils.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/ecs/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/ecs/boto_schema.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor_config.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/ecs/utils.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/utils/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/utils/base_config_keys.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/executors/utils/exponential_backoff_retry.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/fs/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/fs/s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/athena.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/athena_sql.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/batch_client.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/batch_waiters.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/chime.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/elasticache_replication_group.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/emr.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/eventbridge.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/logs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/hooks/verified_permissions.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/athena.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/batch.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/emr.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/glue.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/logs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/links/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/log/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/log/cloudwatch_task_handler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/log/s3_task_handler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/notifications/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/notifications/chime.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/notifications/sns.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/notifications/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/athena.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/batch.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/dms.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/eks.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/eventbridge.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/rds.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/sns.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/batch.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/emr.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/base.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/exasol_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/ftp_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/gcs_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/glacier_to_gcs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/google_api_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/http_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/imap_attachment_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/local_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/mongo_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/s3_to_dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/s3_to_ftp.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/s3_to_redshift.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/s3_to_sftp.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/s3_to_sql.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/salesforce_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/sftp_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/transfers/sql_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/README.md +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/athena.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/base.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/batch.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/eks.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/emr.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/rds.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/s3.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/triggers/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/eks_get_token.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/identifiers.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/mixins.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/rds.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/suppress.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/tags.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/task_log_fetcher.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/utils/waiter_with_logging.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/README.md +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/athena.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/base_waiter.py +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/batch.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/bedrock-agent.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/bedrock.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/databrew.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/dynamodb.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/emr-containers.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/emr-serverless.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/neptune.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/opensearchserverless.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/redshift.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/sagemaker.json +0 -0
- {apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/airflow/providers/amazon/aws/waiters/stepfunctions.json +0 -0
{apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: apache-airflow-providers-amazon
|
3
|
-
Version: 8.
|
3
|
+
Version: 8.25.0
|
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>
|
@@ -22,21 +22,21 @@ Classifier: Programming Language :: Python :: 3.11
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.12
|
23
23
|
Classifier: Topic :: System :: Monitoring
|
24
24
|
Requires-Dist: PyAthena>=3.0.10
|
25
|
-
Requires-Dist: apache-airflow-providers-common-sql>=1.3.
|
25
|
+
Requires-Dist: apache-airflow-providers-common-sql>=1.3.1
|
26
26
|
Requires-Dist: apache-airflow-providers-http
|
27
|
-
Requires-Dist: apache-airflow>=2.7.
|
28
|
-
Requires-Dist: asgiref
|
29
|
-
Requires-Dist: boto3>=1.
|
30
|
-
Requires-Dist: botocore>=1.
|
27
|
+
Requires-Dist: apache-airflow>=2.7.0
|
28
|
+
Requires-Dist: asgiref>=2.3.0
|
29
|
+
Requires-Dist: boto3>=1.34.90
|
30
|
+
Requires-Dist: botocore>=1.34.90
|
31
31
|
Requires-Dist: inflection>=0.5.1
|
32
|
-
Requires-Dist: jmespath
|
32
|
+
Requires-Dist: jmespath>=0.7.0
|
33
33
|
Requires-Dist: jsonpath_ng>=1.5.3
|
34
34
|
Requires-Dist: redshift_connector>=2.0.918
|
35
35
|
Requires-Dist: sqlalchemy_redshift>=0.8.6
|
36
|
-
Requires-Dist: watchtower>=
|
37
|
-
Requires-Dist: aiobotocore[boto3]>=2.
|
36
|
+
Requires-Dist: watchtower>=3.0.0,<4
|
37
|
+
Requires-Dist: aiobotocore[boto3]>=2.13.0 ; extra == "aiobotocore"
|
38
38
|
Requires-Dist: apache-airflow-providers-apache-hive ; extra == "apache.hive"
|
39
|
-
Requires-Dist: apache-airflow-providers-cncf-kubernetes>=7.2.
|
39
|
+
Requires-Dist: apache-airflow-providers-cncf-kubernetes>=7.2.0 ; extra == "cncf.kubernetes"
|
40
40
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == "common.sql"
|
41
41
|
Requires-Dist: apache-airflow-providers-exasol ; extra == "exasol"
|
42
42
|
Requires-Dist: apache-airflow-providers-ftp ; extra == "ftp"
|
@@ -46,14 +46,15 @@ Requires-Dist: apache-airflow-providers-imap ; extra == "imap"
|
|
46
46
|
Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft.azure"
|
47
47
|
Requires-Dist: apache-airflow-providers-mongo ; extra == "mongo"
|
48
48
|
Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
|
49
|
-
Requires-Dist: pandas>=1.2
|
49
|
+
Requires-Dist: pandas>=2.1.2,<2.2 ; extra == "pandas" and (python_version>="3.9")
|
50
|
+
Requires-Dist: pandas>=1.5.3,<2.2 ; extra == "pandas" and (python_version<"3.9")
|
50
51
|
Requires-Dist: python3-saml>=1.16.0 ; extra == "python3-saml"
|
51
52
|
Requires-Dist: s3fs>=2023.10.0 ; extra == "s3fs"
|
52
53
|
Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
|
53
54
|
Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
|
54
55
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
55
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
56
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
56
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0/changelog.html
|
57
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0
|
57
58
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
58
59
|
Project-URL: Source Code, https://github.com/apache/airflow
|
59
60
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
@@ -120,7 +121,7 @@ Provides-Extra: ssh
|
|
120
121
|
|
121
122
|
Package ``apache-airflow-providers-amazon``
|
122
123
|
|
123
|
-
Release: ``8.
|
124
|
+
Release: ``8.25.0``
|
124
125
|
|
125
126
|
|
126
127
|
Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
|
@@ -133,7 +134,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
|
|
133
134
|
are in ``airflow.providers.amazon`` python package.
|
134
135
|
|
135
136
|
You can find package information and changelog for the provider
|
136
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
137
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0/>`_.
|
137
138
|
|
138
139
|
Installation
|
139
140
|
------------
|
@@ -153,16 +154,16 @@ PIP package Version required
|
|
153
154
|
``apache-airflow`` ``>=2.7.0``
|
154
155
|
``apache-airflow-providers-common-sql`` ``>=1.3.1``
|
155
156
|
``apache-airflow-providers-http``
|
156
|
-
``boto3`` ``>=1.
|
157
|
-
``botocore`` ``>=1.
|
157
|
+
``boto3`` ``>=1.34.90``
|
158
|
+
``botocore`` ``>=1.34.90``
|
158
159
|
``inflection`` ``>=0.5.1``
|
159
|
-
``watchtower`` ``>=
|
160
|
+
``watchtower`` ``>=3.0.0,<4``
|
160
161
|
``jsonpath_ng`` ``>=1.5.3``
|
161
162
|
``redshift_connector`` ``>=2.0.918``
|
162
163
|
``sqlalchemy_redshift`` ``>=0.8.6``
|
163
|
-
``asgiref``
|
164
|
+
``asgiref`` ``>=2.3.0``
|
164
165
|
``PyAthena`` ``>=3.0.10``
|
165
|
-
``jmespath``
|
166
|
+
``jmespath`` ``>=0.7.0``
|
166
167
|
======================================= ==================
|
167
168
|
|
168
169
|
Cross provider package dependencies
|
@@ -197,4 +198,4 @@ Dependent package
|
|
197
198
|
====================================================================================================================== ===================
|
198
199
|
|
199
200
|
The changelog for the provider package can be found in the
|
200
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
201
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0/changelog.html>`_.
|
{apache_airflow_providers_amazon-8.24.0rc1 → apache_airflow_providers_amazon-8.25.0}/README.rst
RENAMED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
Package ``apache-airflow-providers-amazon``
|
44
44
|
|
45
|
-
Release: ``8.
|
45
|
+
Release: ``8.25.0``
|
46
46
|
|
47
47
|
|
48
48
|
Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
|
@@ -55,7 +55,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
|
|
55
55
|
are in ``airflow.providers.amazon`` 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-amazon/8.
|
58
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0/>`_.
|
59
59
|
|
60
60
|
Installation
|
61
61
|
------------
|
@@ -75,16 +75,16 @@ PIP package Version required
|
|
75
75
|
``apache-airflow`` ``>=2.7.0``
|
76
76
|
``apache-airflow-providers-common-sql`` ``>=1.3.1``
|
77
77
|
``apache-airflow-providers-http``
|
78
|
-
``boto3`` ``>=1.
|
79
|
-
``botocore`` ``>=1.
|
78
|
+
``boto3`` ``>=1.34.90``
|
79
|
+
``botocore`` ``>=1.34.90``
|
80
80
|
``inflection`` ``>=0.5.1``
|
81
|
-
``watchtower`` ``>=
|
81
|
+
``watchtower`` ``>=3.0.0,<4``
|
82
82
|
``jsonpath_ng`` ``>=1.5.3``
|
83
83
|
``redshift_connector`` ``>=2.0.918``
|
84
84
|
``sqlalchemy_redshift`` ``>=0.8.6``
|
85
|
-
``asgiref``
|
85
|
+
``asgiref`` ``>=2.3.0``
|
86
86
|
``PyAthena`` ``>=3.0.10``
|
87
|
-
``jmespath``
|
87
|
+
``jmespath`` ``>=0.7.0``
|
88
88
|
======================================= ==================
|
89
89
|
|
90
90
|
Cross provider package dependencies
|
@@ -119,4 +119,4 @@ Dependent package
|
|
119
119
|
====================================================================================================================== ===================
|
120
120
|
|
121
121
|
The changelog for the provider package can be found in the
|
122
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
122
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.25.0/changelog.html>`_.
|
@@ -215,7 +215,7 @@ Third party Apache 2.0 licenses
|
|
215
215
|
|
216
216
|
The following components are provided under the Apache 2.0 License.
|
217
217
|
See project link for details. The text of each license is also included
|
218
|
-
at licenses/LICENSE-[project].txt.
|
218
|
+
at 3rd-party-licenses/LICENSE-[project].txt.
|
219
219
|
|
220
220
|
(ALv2 License) hue v4.3.0 (https://github.com/cloudera/hue/)
|
221
221
|
(ALv2 License) jqclock v2.3.0 (https://github.com/JohnRDOrazio/jQuery-Clock-Plugin)
|
@@ -227,7 +227,7 @@ MIT licenses
|
|
227
227
|
========================================================================
|
228
228
|
|
229
229
|
The following components are provided under the MIT License. See project link for details.
|
230
|
-
The text of each license is also included at licenses/LICENSE-[project].txt.
|
230
|
+
The text of each license is also included at 3rd-party-licenses/LICENSE-[project].txt.
|
231
231
|
|
232
232
|
(MIT License) jquery v3.5.1 (https://jquery.org/license/)
|
233
233
|
(MIT License) dagre-d3 v0.6.4 (https://github.com/cpettitt/dagre-d3)
|
@@ -243,11 +243,11 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
|
|
243
243
|
BSD 3-Clause licenses
|
244
244
|
========================================================================
|
245
245
|
The following components are provided under the BSD 3-Clause license. See project links for details.
|
246
|
-
The text of each license is also included at licenses/LICENSE-[project].txt.
|
246
|
+
The text of each license is also included at 3rd-party-licenses/LICENSE-[project].txt.
|
247
247
|
|
248
248
|
(BSD 3 License) d3 v5.16.0 (https://d3js.org)
|
249
249
|
(BSD 3 License) d3-shape v2.1.0 (https://github.com/d3/d3-shape)
|
250
250
|
(BSD 3 License) cgroupspy 0.2.1 (https://github.com/cloudsigma/cgroupspy)
|
251
251
|
|
252
252
|
========================================================================
|
253
|
-
See licenses/LICENSES-ui.txt for packages used in `/airflow/www`
|
253
|
+
See 3rd-party-licenses/LICENSES-ui.txt for packages used in `/airflow/www`
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
29
29
|
|
30
30
|
__all__ = ["__version__"]
|
31
31
|
|
32
|
-
__version__ = "8.
|
32
|
+
__version__ = "8.25.0"
|
33
33
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
35
35
|
"2.7.0"
|
@@ -156,7 +156,9 @@ class BaseSessionFactory(LoggingMixin):
|
|
156
156
|
|
157
157
|
return async_get_session()
|
158
158
|
|
159
|
-
def create_session(
|
159
|
+
def create_session(
|
160
|
+
self, deferrable: bool = False
|
161
|
+
) -> boto3.session.Session | aiobotocore.session.AioSession:
|
160
162
|
"""Create boto3 or aiobotocore Session from connection config."""
|
161
163
|
if not self.conn:
|
162
164
|
self.log.info(
|
@@ -198,7 +200,7 @@ class BaseSessionFactory(LoggingMixin):
|
|
198
200
|
|
199
201
|
def _create_session_with_assume_role(
|
200
202
|
self, session_kwargs: dict[str, Any], deferrable: bool = False
|
201
|
-
) -> boto3.session.Session:
|
203
|
+
) -> boto3.session.Session | aiobotocore.session.AioSession:
|
202
204
|
if self.conn.assume_role_method == "assume_role_with_web_identity":
|
203
205
|
# Deferred credentials have no initial credentials
|
204
206
|
credential_fetcher = self._get_web_identity_credential_fetcher()
|
@@ -239,7 +241,10 @@ class BaseSessionFactory(LoggingMixin):
|
|
239
241
|
session._credentials = credentials
|
240
242
|
session.set_config_variable("region", self.basic_session.region_name)
|
241
243
|
|
242
|
-
|
244
|
+
if not deferrable:
|
245
|
+
return boto3.session.Session(botocore_session=session, **session_kwargs)
|
246
|
+
|
247
|
+
return session
|
243
248
|
|
244
249
|
def _refresh_credentials(self) -> dict[str, Any]:
|
245
250
|
self.log.debug("Refreshing credentials")
|
@@ -16,6 +16,7 @@
|
|
16
16
|
# under the License.
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
+
from airflow.exceptions import AirflowException
|
19
20
|
from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
|
20
21
|
|
21
22
|
|
@@ -35,3 +36,35 @@ class ComprehendHook(AwsBaseHook):
|
|
35
36
|
def __init__(self, *args, **kwargs) -> None:
|
36
37
|
kwargs["client_type"] = "comprehend"
|
37
38
|
super().__init__(*args, **kwargs)
|
39
|
+
|
40
|
+
def validate_document_classifier_training_status(
|
41
|
+
self, document_classifier_arn: str, fail_on_warnings: bool = False
|
42
|
+
) -> None:
|
43
|
+
"""
|
44
|
+
Log the Information about the document classifier.
|
45
|
+
|
46
|
+
NumberOfLabels
|
47
|
+
NumberOfTrainedDocuments
|
48
|
+
NumberOfTestDocuments
|
49
|
+
EvaluationMetrics
|
50
|
+
|
51
|
+
"""
|
52
|
+
response = self.conn.describe_document_classifier(DocumentClassifierArn=document_classifier_arn)
|
53
|
+
|
54
|
+
status = response["DocumentClassifierProperties"]["Status"]
|
55
|
+
|
56
|
+
if status == "TRAINED_WITH_WARNING":
|
57
|
+
self.log.info(
|
58
|
+
"AWS Comprehend document classifier training completed with %s, Message: %s please review the skipped files folder in the output location %s",
|
59
|
+
status,
|
60
|
+
response["DocumentClassifierProperties"]["Message"],
|
61
|
+
response["DocumentClassifierProperties"]["OutputDataConfig"]["S3Uri"],
|
62
|
+
)
|
63
|
+
|
64
|
+
if fail_on_warnings:
|
65
|
+
raise AirflowException("Warnings in AWS Comprehend document classifier training.")
|
66
|
+
|
67
|
+
self.log.info(
|
68
|
+
"AWS Comprehend document classifier metadata: %s",
|
69
|
+
response["DocumentClassifierProperties"]["ClassifierMetadata"],
|
70
|
+
)
|
@@ -20,6 +20,7 @@ from __future__ import annotations
|
|
20
20
|
import asyncio
|
21
21
|
import time
|
22
22
|
from functools import cached_property
|
23
|
+
from typing import Any
|
23
24
|
|
24
25
|
from botocore.exceptions import ClientError
|
25
26
|
|
@@ -430,3 +431,125 @@ class GlueJobHook(AwsBaseHook):
|
|
430
431
|
self.conn.create_job(**config)
|
431
432
|
|
432
433
|
return self.job_name
|
434
|
+
|
435
|
+
|
436
|
+
class GlueDataQualityHook(AwsBaseHook):
|
437
|
+
"""
|
438
|
+
Interact with AWS Glue Data Quality.
|
439
|
+
|
440
|
+
Provide thick wrapper around :external+boto3:py:class:`boto3.client("glue") <Glue.Client>`.
|
441
|
+
|
442
|
+
Additional arguments (such as ``aws_conn_id``) may be specified and
|
443
|
+
are passed down to the underlying AwsBaseHook.
|
444
|
+
|
445
|
+
.. seealso::
|
446
|
+
- :class:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`
|
447
|
+
"""
|
448
|
+
|
449
|
+
def __init__(
|
450
|
+
self,
|
451
|
+
*args,
|
452
|
+
**kwargs,
|
453
|
+
):
|
454
|
+
kwargs["client_type"] = "glue"
|
455
|
+
super().__init__(*args, **kwargs)
|
456
|
+
|
457
|
+
def has_data_quality_ruleset(self, name: str) -> bool:
|
458
|
+
try:
|
459
|
+
self.conn.get_data_quality_ruleset(Name=name)
|
460
|
+
return True
|
461
|
+
except self.conn.exceptions.EntityNotFoundException:
|
462
|
+
return False
|
463
|
+
|
464
|
+
def _log_results(self, result: dict[str, Any]) -> None:
|
465
|
+
"""
|
466
|
+
Print the outcome of evaluation run, An evaluation run can involve multiple rulesets evaluated against a data source (Glue table).
|
467
|
+
|
468
|
+
Name Description Result EvaluatedMetrics EvaluationMessage
|
469
|
+
Rule_1 RowCount between 150000 and 600000 PASS {'Dataset.*.RowCount': 300000.0} NaN
|
470
|
+
Rule_2 IsComplete "marketplace" PASS {'Column.marketplace.Completeness': 1.0} NaN
|
471
|
+
Rule_3 ColumnLength "marketplace" between 1 and 2 FAIL {'Column.marketplace.MaximumLength': 9.0, 'Column.marketplace.MinimumLength': 3.0} Value: 9.0 does not meet the constraint requirement!
|
472
|
+
|
473
|
+
"""
|
474
|
+
import pandas as pd
|
475
|
+
|
476
|
+
pd.set_option("display.max_rows", None)
|
477
|
+
pd.set_option("display.max_columns", None)
|
478
|
+
pd.set_option("display.width", None)
|
479
|
+
pd.set_option("display.max_colwidth", None)
|
480
|
+
|
481
|
+
self.log.info(
|
482
|
+
"AWS Glue data quality ruleset evaluation result for RulesetName: %s RulesetEvaluationRunId: %s Score: %s",
|
483
|
+
result.get("RulesetName"),
|
484
|
+
result.get("RulesetEvaluationRunId"),
|
485
|
+
result.get("Score"),
|
486
|
+
)
|
487
|
+
|
488
|
+
rule_results = result["RuleResults"]
|
489
|
+
rule_results_df = pd.DataFrame(rule_results)
|
490
|
+
self.log.info(rule_results_df)
|
491
|
+
|
492
|
+
def get_evaluation_run_results(self, run_id: str) -> dict[str, Any]:
|
493
|
+
response = self.conn.get_data_quality_ruleset_evaluation_run(RunId=run_id)
|
494
|
+
|
495
|
+
return self.conn.batch_get_data_quality_result(ResultIds=response["ResultIds"])
|
496
|
+
|
497
|
+
def validate_evaluation_run_results(
|
498
|
+
self, evaluation_run_id: str, show_results: bool = True, verify_result_status: bool = True
|
499
|
+
) -> None:
|
500
|
+
results = self.get_evaluation_run_results(evaluation_run_id)
|
501
|
+
total_failed_rules = 0
|
502
|
+
|
503
|
+
if results.get("ResultsNotFound"):
|
504
|
+
self.log.info(
|
505
|
+
"AWS Glue data quality ruleset evaluation run, results not found for %s",
|
506
|
+
results["ResultsNotFound"],
|
507
|
+
)
|
508
|
+
|
509
|
+
for result in results["Results"]:
|
510
|
+
rule_results = result["RuleResults"]
|
511
|
+
|
512
|
+
total_failed_rules += len(
|
513
|
+
list(
|
514
|
+
filter(
|
515
|
+
lambda result: result.get("Result") == "FAIL" or result.get("Result") == "ERROR",
|
516
|
+
rule_results,
|
517
|
+
)
|
518
|
+
)
|
519
|
+
)
|
520
|
+
|
521
|
+
if show_results:
|
522
|
+
self._log_results(result)
|
523
|
+
|
524
|
+
self.log.info(
|
525
|
+
"AWS Glue data quality ruleset evaluation run, total number of rules failed: %s",
|
526
|
+
total_failed_rules,
|
527
|
+
)
|
528
|
+
|
529
|
+
if verify_result_status and total_failed_rules > 0:
|
530
|
+
raise AirflowException(
|
531
|
+
"AWS Glue data quality ruleset evaluation run failed for one or more rules"
|
532
|
+
)
|
533
|
+
|
534
|
+
def log_recommendation_results(self, run_id: str) -> None:
|
535
|
+
"""
|
536
|
+
Print the outcome of recommendation run, recommendation run generates multiple rules against a data source (Glue table) in Data Quality Definition Language (DQDL) format.
|
537
|
+
|
538
|
+
Rules = [
|
539
|
+
IsComplete "NAME",
|
540
|
+
ColumnLength "EMP_ID" between 1 and 12,
|
541
|
+
IsUnique "EMP_ID",
|
542
|
+
ColumnValues "INCOME" > 50000
|
543
|
+
]
|
544
|
+
"""
|
545
|
+
result = self.conn.get_data_quality_rule_recommendation_run(RunId=run_id)
|
546
|
+
|
547
|
+
if result.get("RecommendedRuleset"):
|
548
|
+
self.log.info(
|
549
|
+
"AWS Glue data quality recommended rules for DatabaseName: %s TableName: %s",
|
550
|
+
result["DataSource"]["GlueTable"]["DatabaseName"],
|
551
|
+
result["DataSource"]["GlueTable"]["TableName"],
|
552
|
+
)
|
553
|
+
self.log.info(result["RecommendedRuleset"])
|
554
|
+
else:
|
555
|
+
self.log.info("AWS Glue data quality, no recommended rules available for RunId: %s", run_id)
|
@@ -20,14 +20,19 @@ from functools import cached_property
|
|
20
20
|
from typing import TYPE_CHECKING
|
21
21
|
|
22
22
|
import redshift_connector
|
23
|
+
from packaging.version import Version
|
23
24
|
from redshift_connector import Connection as RedshiftConnection
|
24
25
|
from sqlalchemy import create_engine
|
25
26
|
from sqlalchemy.engine.url import URL
|
26
27
|
|
28
|
+
from airflow import __version__ as AIRFLOW_VERSION
|
27
29
|
from airflow.exceptions import AirflowException
|
28
30
|
from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
|
29
31
|
from airflow.providers.common.sql.hooks.sql import DbApiHook
|
30
32
|
|
33
|
+
_IS_AIRFLOW_2_10_OR_HIGHER = Version(Version(AIRFLOW_VERSION).base_version) >= Version("2.10.0")
|
34
|
+
|
35
|
+
|
31
36
|
if TYPE_CHECKING:
|
32
37
|
from airflow.models.connection import Connection
|
33
38
|
from airflow.providers.openlineage.sqlparser import DatabaseInfo
|
@@ -257,4 +262,6 @@ class RedshiftSQLHook(DbApiHook):
|
|
257
262
|
|
258
263
|
def get_openlineage_default_schema(self) -> str | None:
|
259
264
|
"""Return current schema. This is usually changed with ``SEARCH_PATH`` parameter."""
|
260
|
-
|
265
|
+
if _IS_AIRFLOW_2_10_OR_HIGHER:
|
266
|
+
return self.get_first("SELECT CURRENT_SCHEMA();")[0]
|
267
|
+
return super().get_openlineage_default_schema()
|
@@ -20,7 +20,6 @@ import json
|
|
20
20
|
from time import sleep
|
21
21
|
from typing import TYPE_CHECKING, Any, Sequence
|
22
22
|
|
23
|
-
import botocore
|
24
23
|
from botocore.exceptions import ClientError
|
25
24
|
|
26
25
|
from airflow.configuration import conf
|
@@ -38,7 +37,7 @@ from airflow.providers.amazon.aws.triggers.bedrock import (
|
|
38
37
|
BedrockKnowledgeBaseActiveTrigger,
|
39
38
|
BedrockProvisionModelThroughputCompletedTrigger,
|
40
39
|
)
|
41
|
-
from airflow.providers.amazon.aws.utils import
|
40
|
+
from airflow.providers.amazon.aws.utils import validate_execute_complete_event
|
42
41
|
from airflow.providers.amazon.aws.utils.mixins import aws_template_fields
|
43
42
|
from airflow.utils.helpers import prune_dict
|
44
43
|
from airflow.utils.timezone import utcnow
|
@@ -799,24 +798,11 @@ class BedrockRaGOperator(AwsBaseOperator[BedrockAgentRuntimeHook]):
|
|
799
798
|
def execute(self, context: Context) -> Any:
|
800
799
|
self.validate_inputs()
|
801
800
|
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
)
|
808
|
-
except botocore.exceptions.ParamValidationError as error:
|
809
|
-
if (
|
810
|
-
'Unknown parameter in retrieveAndGenerateConfiguration: "externalSourcesConfiguration"'
|
811
|
-
in str(error)
|
812
|
-
) and (self.source_type == "EXTERNAL_SOURCES"):
|
813
|
-
self.log.error(
|
814
|
-
"You are attempting to use External Sources and the BOTO API returned an "
|
815
|
-
"error message which may indicate the need to update botocore to do this. \n"
|
816
|
-
"Support for External Sources was added in botocore 1.34.90 and you are using botocore %s",
|
817
|
-
".".join(map(str, get_botocore_version())),
|
818
|
-
)
|
819
|
-
raise
|
801
|
+
result = self.hook.conn.retrieve_and_generate(
|
802
|
+
input={"text": self.input},
|
803
|
+
retrieveAndGenerateConfiguration=self.build_rag_config(),
|
804
|
+
**self.rag_kwargs,
|
805
|
+
)
|
820
806
|
|
821
807
|
self.log.info(
|
822
808
|
"\nPrompt: %s\nResponse: %s\nCitations: %s",
|
@@ -23,7 +23,10 @@ from airflow.configuration import conf
|
|
23
23
|
from airflow.exceptions import AirflowException
|
24
24
|
from airflow.providers.amazon.aws.hooks.comprehend import ComprehendHook
|
25
25
|
from airflow.providers.amazon.aws.operators.base_aws import AwsBaseOperator
|
26
|
-
from airflow.providers.amazon.aws.triggers.comprehend import
|
26
|
+
from airflow.providers.amazon.aws.triggers.comprehend import (
|
27
|
+
ComprehendCreateDocumentClassifierCompletedTrigger,
|
28
|
+
ComprehendPiiEntitiesDetectionJobCompletedTrigger,
|
29
|
+
)
|
27
30
|
from airflow.providers.amazon.aws.utils import validate_execute_complete_event
|
28
31
|
from airflow.providers.amazon.aws.utils.mixins import aws_template_fields
|
29
32
|
from airflow.utils.timezone import utcnow
|
@@ -190,3 +193,147 @@ class ComprehendStartPiiEntitiesDetectionJobOperator(ComprehendBaseOperator):
|
|
190
193
|
|
191
194
|
self.log.info("Comprehend pii entities detection job `%s` complete.", event["job_id"])
|
192
195
|
return event["job_id"]
|
196
|
+
|
197
|
+
|
198
|
+
class ComprehendCreateDocumentClassifierOperator(AwsBaseOperator[ComprehendHook]):
|
199
|
+
"""
|
200
|
+
Create a comprehend document classifier that can categorize documents.
|
201
|
+
|
202
|
+
Provide a set of training documents that are labeled with the categories.
|
203
|
+
|
204
|
+
.. seealso::
|
205
|
+
For more information on how to use this operator, take a look at the guide:
|
206
|
+
:ref:`howto/operator:ComprehendCreateDocumentClassifierOperator`
|
207
|
+
|
208
|
+
:param document_classifier_name: The name of the document classifier. (templated)
|
209
|
+
:param input_data_config: Specifies the format and location of the input data for the job. (templated)
|
210
|
+
:param mode: Indicates the mode in which the classifier will be trained. (templated)
|
211
|
+
:param data_access_role_arn: The Amazon Resource Name (ARN) of the IAM role that grants Amazon Comprehend
|
212
|
+
read access to your input data. (templated)
|
213
|
+
:param language_code: The language of the input documents. You can specify any of the languages supported by
|
214
|
+
Amazon Comprehend. All documents must be in the same language. (templated)
|
215
|
+
:param fail_on_warnings: If set to True, the document classifier training job will throw an error when the
|
216
|
+
status is TRAINED_WITH_WARNING. (default False)
|
217
|
+
:param output_data_config: Specifies the location for the output files from a custom classifier job.
|
218
|
+
This parameter is required for a request that creates a native document model. (templated)
|
219
|
+
:param document_classifier_kwargs: Any optional parameters to pass to the document classifier. (templated)
|
220
|
+
|
221
|
+
:param wait_for_completion: Whether to wait for job to stop. (default: True)
|
222
|
+
:param waiter_delay: Time in seconds to wait between status checks. (default: 60)
|
223
|
+
:param waiter_max_attempts: Maximum number of attempts to check for job completion. (default: 20)
|
224
|
+
:param deferrable: If True, the operator will wait asynchronously for the job to stop.
|
225
|
+
This implies waiting for completion. This mode requires aiobotocore module to be installed.
|
226
|
+
(default: False)
|
227
|
+
:param aws_conn_id: The Airflow connection used for AWS credentials.
|
228
|
+
If this is ``None`` or empty then the default boto3 behaviour is used. If
|
229
|
+
running Airflow in a distributed manner and aws_conn_id is None or
|
230
|
+
empty, then default boto3 configuration would be used (and must be
|
231
|
+
maintained on each worker node).
|
232
|
+
:param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
|
233
|
+
:param verify: Whether to verify SSL certificates. See:
|
234
|
+
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
|
235
|
+
:param botocore_config: Configuration dictionary (key-values) for botocore client. See:
|
236
|
+
https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
|
237
|
+
"""
|
238
|
+
|
239
|
+
aws_hook_class = ComprehendHook
|
240
|
+
|
241
|
+
template_fields: Sequence[str] = aws_template_fields(
|
242
|
+
"document_classifier_name",
|
243
|
+
"input_data_config",
|
244
|
+
"mode",
|
245
|
+
"data_access_role_arn",
|
246
|
+
"language_code",
|
247
|
+
"output_data_config",
|
248
|
+
"document_classifier_kwargs",
|
249
|
+
)
|
250
|
+
|
251
|
+
template_fields_renderers: dict = {
|
252
|
+
"input_data_config": "json",
|
253
|
+
"output_data_config": "json",
|
254
|
+
"document_classifier_kwargs": "json",
|
255
|
+
}
|
256
|
+
|
257
|
+
def __init__(
|
258
|
+
self,
|
259
|
+
document_classifier_name: str,
|
260
|
+
input_data_config: dict[str, Any],
|
261
|
+
mode: str,
|
262
|
+
data_access_role_arn: str,
|
263
|
+
language_code: str,
|
264
|
+
fail_on_warnings: bool = False,
|
265
|
+
output_data_config: dict[str, Any] | None = None,
|
266
|
+
document_classifier_kwargs: dict[str, Any] | None = None,
|
267
|
+
wait_for_completion: bool = True,
|
268
|
+
waiter_delay: int = 60,
|
269
|
+
waiter_max_attempts: int = 20,
|
270
|
+
deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
|
271
|
+
aws_conn_id: str | None = "aws_default",
|
272
|
+
**kwargs,
|
273
|
+
):
|
274
|
+
super().__init__(**kwargs)
|
275
|
+
self.document_classifier_name = document_classifier_name
|
276
|
+
self.input_data_config = input_data_config
|
277
|
+
self.mode = mode
|
278
|
+
self.data_access_role_arn = data_access_role_arn
|
279
|
+
self.language_code = language_code
|
280
|
+
self.fail_on_warnings = fail_on_warnings
|
281
|
+
self.output_data_config = output_data_config
|
282
|
+
self.document_classifier_kwargs = document_classifier_kwargs or {}
|
283
|
+
self.wait_for_completion = wait_for_completion
|
284
|
+
self.waiter_delay = waiter_delay
|
285
|
+
self.waiter_max_attempts = waiter_max_attempts
|
286
|
+
self.deferrable = deferrable
|
287
|
+
self.aws_conn_id = aws_conn_id
|
288
|
+
|
289
|
+
def execute(self, context: Context) -> str:
|
290
|
+
if self.output_data_config:
|
291
|
+
self.document_classifier_kwargs["OutputDataConfig"] = self.output_data_config
|
292
|
+
|
293
|
+
document_classifier_arn = self.hook.conn.create_document_classifier(
|
294
|
+
DocumentClassifierName=self.document_classifier_name,
|
295
|
+
InputDataConfig=self.input_data_config,
|
296
|
+
Mode=self.mode,
|
297
|
+
DataAccessRoleArn=self.data_access_role_arn,
|
298
|
+
LanguageCode=self.language_code,
|
299
|
+
**self.document_classifier_kwargs,
|
300
|
+
)["DocumentClassifierArn"]
|
301
|
+
|
302
|
+
message_description = f"document classifier {document_classifier_arn} to complete."
|
303
|
+
if self.deferrable:
|
304
|
+
self.log.info("Deferring %s", message_description)
|
305
|
+
self.defer(
|
306
|
+
trigger=ComprehendCreateDocumentClassifierCompletedTrigger(
|
307
|
+
document_classifier_arn=document_classifier_arn,
|
308
|
+
waiter_delay=self.waiter_delay,
|
309
|
+
waiter_max_attempts=self.waiter_max_attempts,
|
310
|
+
aws_conn_id=self.aws_conn_id,
|
311
|
+
),
|
312
|
+
method_name="execute_complete",
|
313
|
+
)
|
314
|
+
elif self.wait_for_completion:
|
315
|
+
self.log.info("Waiting for %s", message_description)
|
316
|
+
|
317
|
+
self.hook.get_waiter("create_document_classifier_complete").wait(
|
318
|
+
DocumentClassifierArn=document_classifier_arn,
|
319
|
+
WaiterConfig={"Delay": self.waiter_delay, "MaxAttempts": self.waiter_max_attempts},
|
320
|
+
)
|
321
|
+
|
322
|
+
self.hook.validate_document_classifier_training_status(
|
323
|
+
document_classifier_arn=document_classifier_arn, fail_on_warnings=self.fail_on_warnings
|
324
|
+
)
|
325
|
+
|
326
|
+
return document_classifier_arn
|
327
|
+
|
328
|
+
def execute_complete(self, context: Context, event: dict[str, Any] | None = None) -> str:
|
329
|
+
event = validate_execute_complete_event(event)
|
330
|
+
if event["status"] != "success":
|
331
|
+
raise AirflowException("Error while running comprehend create document classifier: %s", event)
|
332
|
+
|
333
|
+
self.hook.validate_document_classifier_training_status(
|
334
|
+
document_classifier_arn=event["document_classifier_arn"], fail_on_warnings=self.fail_on_warnings
|
335
|
+
)
|
336
|
+
|
337
|
+
self.log.info("Comprehend document classifier `%s` complete.", event["document_classifier_arn"])
|
338
|
+
|
339
|
+
return event["document_classifier_arn"]
|