Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add deferred pagination mode to GenericTransfer #44809

Merged
merged 134 commits into from
Feb 26, 2025
Merged
Changes from 1 commit
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
8f3657f
refactor: Refactored the GenericTransfer operator to support paginate…
davidblain-infrabel Dec 10, 2024
9b36a14
refactor: updated provider dependencies
dabla Dec 10, 2024
eedcd52
refactor: Added TestSQLExecuteQueryTrigger and moved test code which …
davidblain-infrabel Dec 10, 2024
38f654a
refactor: Fixed static checks
davidblain-infrabel Dec 10, 2024
15383e3
refactor: Fixed static checks
davidblain-infrabel Dec 10, 2024
a93b49a
refactor: Fixed static checks
davidblain-infrabel Dec 10, 2024
8a1d2de
refactor: Reformatted GenericTransfer
davidblain-infrabel Dec 10, 2024
757ab68
refactor: Moved source and destination hooks into cached properties
davidblain-infrabel Dec 10, 2024
0744383
refactor: Moved imports to type checking block
davidblain-infrabel Dec 11, 2024
edff5f4
refactor: Fixed execute method of GenericTransfer
davidblain-infrabel Dec 11, 2024
f3b2893
refactor: Refactored get_hook method of GenericTransfer which checks …
davidblain-infrabel Dec 11, 2024
ac4df02
refactor: Remove white lines from mock_context
davidblain-infrabel Dec 11, 2024
0a771d8
refactor: Reformatted get_hook in GenericTransfer operator
davidblain-infrabel Dec 11, 2024
0e426dc
refactor: Added sql.pyi for SQLExecuteQueryTrigger
davidblain-infrabel Dec 16, 2024
4bc7d6f
refactor: Reformatted SQLExecuteQueryTrigger definition
davidblain-infrabel Dec 16, 2024
59eae35
refactor: Added alias in SQLExecuteQueryTrigger definition
davidblain-infrabel Dec 16, 2024
fff10ce
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 2, 2025
1662d2f
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 2, 2025
735a557
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 7, 2025
f092507
refactor: Added unit test for GenericTransfer using deferred pageable…
davidblain-infrabel Jan 7, 2025
3550b84
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 7, 2025
44a6965
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 8, 2025
9e75525
refactor: Moved generic_transfer operator definition in provider.yaml…
davidblain-infrabel Jan 8, 2025
5c52e4a
refactor: Renamed typo of module which allows you to run deferrable o…
davidblain-infrabel Jan 8, 2025
73f5f1c
refactor: Reformatted xcom_pull method from mock_context
davidblain-infrabel Jan 8, 2025
abadb0b
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 9, 2025
9a5760f
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 10, 2025
ca6464e
refactor: Fixed module name of the GenericTransfer in the deprecated …
davidblain-infrabel Jan 10, 2025
d0cddfd
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 10, 2025
ba7fd40
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 10, 2025
f1971c3
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 11, 2025
483b816
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 13, 2025
0e70c4a
refactor: updated provider dependencies
dabla Jan 14, 2025
d721806
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 14, 2025
8a4a8ab
refactor: Fixed static checks
davidblain-infrabel Jan 14, 2025
f9a2f90
refactor: Added definition for generic_transfer.pyi
davidblain-infrabel Jan 14, 2025
440135f
Merge branch 'main' into feature/paginated-generic-transfer
davidblain-infrabel Jan 15, 2025
de1adff
Merge branch 'main' into feature/paginated-generic-transfer
davidblain-infrabel Jan 15, 2025
3539e1e
refactor: Reformatted SQLExecuteQueryTrigger definition
davidblain-infrabel Jan 17, 2025
961a0a2
refactor: Reformatted GenericTransfer definition
davidblain-infrabel Jan 17, 2025
b4fca1d
refactor: Removed compat check in TestSQLExecuteQueryTrigger
davidblain-infrabel Jan 17, 2025
8b01016
refactor: Removed template_fields_renderers from GenericTransfer defi…
davidblain-infrabel Jan 17, 2025
84b75e9
refactor: Added newline after imports GenericTransfer definition
davidblain-infrabel Jan 17, 2025
b0f56c5
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 17, 2025
96c3691
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 19, 2025
015509d
refactor: Updated definitions for GenericTransfer and SQLExecuteQuery…
davidblain-infrabel Jan 19, 2025
faa0399
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 19, 2025
5cc657a
refactor: Fixed TestSQLExecuteQueryTrigger
davidblain-infrabel Jan 19, 2025
e8d0759
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 23, 2025
fde46da
refactor: Removed unused json import from TestSQLExecuteQueryTrigger
davidblain-infrabel Jan 20, 2025
fb240c8
refactor: Changed return type of run method in SQLExecuteQueryTrigger…
davidblain-infrabel Jan 20, 2025
7aca76d
Merge branch 'main' into feature/paginated-generic-transfer
davidblain-infrabel Jan 28, 2025
029ab5c
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
7276e33
refactor: Updated provider dependencies
dabla Jan 28, 2025
1b47ae7
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
11bf47b
refactor: Removed dependencies form provider.yaml and removed common …
davidblain-infrabel Jan 28, 2025
d70520d
refactor: Updated get_provider_info for standard and common sql provider
davidblain-infrabel Jan 28, 2025
c23d4d0
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
775f913
refactor: Updated provider dependencies
dabla Jan 28, 2025
c54bb73
refactor: Updated README.rst
davidblain-infrabel Jan 28, 2025
ea9040a
refactor: Reorganized imports
davidblain-infrabel Jan 28, 2025
325a7b5
refactor: Reorganized imports generic transfer pyi
davidblain-infrabel Jan 28, 2025
ec1c563
refactor: Reformatted provider info
davidblain-infrabel Jan 28, 2025
e8bacc7
refactor: Some reformatting
davidblain-infrabel Jan 28, 2025
04bdafc
refactor: Fixed import SQLExecuteQueryTrigger for AsyncIterator
davidblain-infrabel Jan 28, 2025
028bc24
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
1440f88
refactor: Changed back import of AsyncIterator
davidblain-infrabel Jan 28, 2025
7fa79f1
refactor: Removed definition of serialize and run methods
davidblain-infrabel Jan 28, 2025
0c68547
refactor: Re-added serialize and run methods
davidblain-infrabel Jan 28, 2025
f5a43bf
refactor: Added alias for BaseTrigger
davidblain-infrabel Jan 28, 2025
88941f1
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
c3f91db
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 28, 2025
c10e063
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 29, 2025
0d27771
refactor: Updated exception message in SQLTrigger
davidblain-infrabel Jan 29, 2025
f117a6c
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 29, 2025
2d67c70
Updates docs to improve Readability (#46205)
aritra24 Jan 29, 2025
6c4d041
Add Webserver parameters: max_form_parts, max_form_memory_size (#45749)
moiseenkov Jan 29, 2025
2e59373
Fix `api_connexion` test failures in main (#46245)
vincbeck Jan 29, 2025
ff0df4c
Add autorefresh to Task Instance and Dag Run pages (#46213)
bbovenzi Jan 29, 2025
46e1a5a
use populate_by_name (#46168)
rawwar Jan 29, 2025
25f8cb9
Disable Flask-SQLAlchemy modification tracking in FAB provider (#46249)
jedcunningham Jan 29, 2025
be657ad
Fix AWS auth manager compatibility test (#46246)
vincbeck Jan 29, 2025
947ccf9
Prevent from being added to root logger by default (#46236)
amoghrajesh Jan 29, 2025
7294194
Move more DAG parsing related config to dag_processor section (#46034)
jedcunningham Jan 29, 2025
b98fe8e
Update test fixture docstring (#46252)
jedcunningham Jan 29, 2025
bcbeeac
AIP-38 Invalidate DryRun query cache on submit (#46238)
pierrejeambrun Jan 29, 2025
b089ffc
Fix pre-commit to re-generate on dependency changes (#46259)
jscheffl Jan 29, 2025
a12b762
update some icons and add dag import error to dagslist (#46251)
bbovenzi Jan 29, 2025
0634ed6
Limit `google-cloud-aiplatform` to fix issues in CI (#46242)
amoghrajesh Jan 29, 2025
0453bdb
Adding from_path.exists() check in a couple of conditions (#46255)
kunaljubce Jan 30, 2025
81cec72
Remove caplog from HDFS tests (#46263)
jscheffl Jan 30, 2025
114fa7b
Remove caplog from Livy tests (#46272)
potiuk Jan 30, 2025
8c0b2ed
Replace caplog with patching log property in k8s tests (#46273)
potiuk Jan 30, 2025
f4122e9
Remove import from MySQL provider tests in generic transfer test (#46…
potiuk Jan 30, 2025
6bf3a23
Fix GitDagBundle to support https (include 46073/46179) (#46226)
jx2lee Jan 30, 2025
9b6a211
AIP-72: Port _validate_inlet_outlet_assets_activeness into Task SDK (…
amoghrajesh Jan 30, 2025
5cae77d
Try and reduce flakiness of number of test call asserts (#46276)
amoghrajesh Jan 30, 2025
49ac241
Add evaluation extra to google-cloud-aiplatform (#46270)
potiuk Jan 30, 2025
3c5fd86
Move Docker Provider to the New Structure (#46097)
bugraoz93 Jan 30, 2025
7e88cb3
Move Atlassian Jira Provider to the new structure (#46271)
bugraoz93 Jan 30, 2025
5abd218
moved apache.cassandra provider to new structure and fixed check-for-…
Prab-27 Jan 30, 2025
ff34487
Make azure test less flaky/racy (#46281)
potiuk Jan 30, 2025
0dbe2ed
move Influxdb provider to new provider structure (#46277)
Prab-27 Jan 30, 2025
ba42ba2
Move Apprise provider to new structure (#46161)
Prab-27 Jan 30, 2025
1def6cf
Make racy test test_start_pod_startup_interval_seconds less racy (#4…
potiuk Jan 30, 2025
f65064e
Move FTP Provider to the New Structure (#46206)
aritra24 Jan 30, 2025
df0c941
move Trino provider to new provider structure (#46162)
Prab-27 Jan 30, 2025
a19f87d
refactor(providers/slack): move slack provider to new structure (#46209)
josix Jan 30, 2025
a341c3d
Move Apache Livy to new provider structure (#46131)
jason810496 Jan 30, 2025
b6ebe21
refactor: Re-added test_generic_transfer under standard provider
davidblain-infrabel Jan 30, 2025
6c1ae47
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 30, 2025
63f74d5
refactor: Moved test_generic_transfer from standard to common sql pro…
davidblain-infrabel Jan 30, 2025
66f5ac5
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 30, 2025
260928e
Merge branch 'main' into feature/paginated-generic-transfer
dabla Jan 31, 2025
8e24682
Merge branch 'main' into feature/paginated-generic-transfer
davidblain-infrabel Feb 5, 2025
2ae4459
refactor: Try ignoring wrongly assumed return type from MyPy in SQLEx…
davidblain-infrabel Feb 5, 2025
7aaf4e2
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 5, 2025
4465531
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 5, 2025
72f49d9
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 5, 2025
c867019
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 6, 2025
9a8a9c3
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 10, 2025
7315f5c
refactor: Removed import of azure Base in TestSQLExecuteQueryTrigger
davidblain-infrabel Feb 10, 2025
b709932
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 11, 2025
592a856
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 11, 2025
d1869c0
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 11, 2025
e833937
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 12, 2025
34a6de7
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 13, 2025
60124f4
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 13, 2025
1105db1
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 18, 2025
240bf20
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 18, 2025
a27dff4
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 18, 2025
99a2d9e
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 20, 2025
1dab43e
Merge branch 'main' into feature/paginated-generic-transfer
dabla Feb 21, 2025
4bee991
refactor: Moved common sql tests from provider_tests to unit
davidblain-infrabel Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move Apprise provider to new structure (#46161)
Co-authored-by: pratiksha rajendrabhai badheka <pratiksha@DESKTOP-T5HUA05>
2 people authored and davidblain-infrabel committed Jan 30, 2025
commit ba42ba2725c78587474a3a1717132f5bd9a968bf
4 changes: 1 addition & 3 deletions .github/boring-cyborg.yml
Original file line number Diff line number Diff line change
@@ -94,9 +94,7 @@ labelPRBasedOnFilePath:
- providers/apache/spark/**

provider:apprise:
- providers/src/airflow/providers/apprise/**/*
- docs/apache-airflow-providers-apprise/**/*
- providers/tests/apprise/**/*
- providers/apprise/**

provider:arangodb:
- providers/src/airflow/providers/arangodb/**/*
1 change: 1 addition & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ apache-airflow-providers-apache-kylin
apache-airflow-providers-apache-pig
apache-airflow-providers-apache-pinot
apache-airflow-providers-apache-spark
apache-airflow-providers-apprise
apache-airflow-providers-asana
apache-airflow-providers-atlassian-jira
apache-airflow-providers-celery
25 changes: 0 additions & 25 deletions docs/apache-airflow-providers-apprise/changelog.rst

This file was deleted.

62 changes: 62 additions & 0 deletions providers/apprise/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@

.. Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

.. http://www.apache.org/licenses/LICENSE-2.0

.. Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!

.. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
`PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY


Package ``apache-airflow-providers-apprise``

Release: ``2.0.0``


`Apprise <https://github.com/caronc/apprise>`__


Provider package
----------------

This is a provider package for ``apprise`` provider. All classes for this provider package
are in ``airflow.providers.apprise`` python package.

You can find package information and changelog for the provider
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-apprise/2.0.0/>`_.

Installation
------------

You can install this package on top of an existing Airflow 2 installation (see ``Requirements`` below
for the minimum Airflow version supported) via
``pip install apache-airflow-providers-apprise``

The package supports the following python versions: 3.9,3.10,3.11,3.12

Requirements
------------

================== ==================
PIP package Version required
================== ==================
``apache-airflow`` ``>=2.9.0``
``apprise`` ``>=1.8.0``
================== ==================

The changelog for the provider package can be found in the
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-apprise/2.0.0/changelog.html>`_.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -47,10 +47,6 @@ integrations:
external-doc-url: https://github.com/caronc/apprise
tags: [software]

dependencies:
- apache-airflow>=2.9.0
- apprise>=1.8.0

hooks:
- integration-name: Apprise
python-modules:
78 changes: 78 additions & 0 deletions providers/apprise/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!

# IF YOU WANT TO MODIFY THIS FILE EXCEPT DEPENDENCIES, YOU SHOULD MODIFY THE TEMPLATE
# `pyproject_TEMPLATE.toml.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
[build-system]
requires = ["flit_core==3.10.1"]
build-backend = "flit_core.buildapi"

[project]
name = "apache-airflow-providers-apprise"
version = "2.0.0"
description = "Provider package apache-airflow-providers-apprise for Apache Airflow"
readme = "README.rst"
authors = [
{name="Apache Software Foundation", email="dev@airflow.apache.org"},
]
maintainers = [
{name="Apache Software Foundation", email="dev@airflow.apache.org"},
]
keywords = [ "airflow-provider", "apprise", "airflow", "integration" ]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"Framework :: Apache Airflow",
"Framework :: Apache Airflow :: Provider",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: System :: Monitoring",
]
requires-python = "~=3.9"

# The dependencies should be modified in place in the generated file
# Any change in the dependencies is preserved when the file is regenerated
dependencies = [
"apache-airflow>=2.9.0",
"apprise>=1.8.0",
]

[project.urls]
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-apprise/2.0.0"
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-apprise/2.0.0/changelog.html"
"Bug Tracker" = "https://github.com/apache/airflow/issues"
"Source Code" = "https://github.com/apache/airflow"
"Slack Chat" = "https://s.apache.org/airflow-slack"
"Twitter" = "https://x.com/ApacheAirflow"
"YouTube" = "https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/"

[project.entry-points."apache_airflow_provider"]
provider_info = "airflow.providers.apprise.get_provider_info:get_provider_info"

[tool.flit.module]
name = "airflow.providers.apprise"

[tool.pytest.ini_options]
ignore = "tests/system/"
201 changes: 201 additions & 0 deletions providers/apprise/src/airflow/providers/apprise/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
#
# IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
# `get_provider_info_TEMPLATE.py.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY


def get_provider_info():
return {
"package-name": "apache-airflow-providers-apprise",
"name": "Apprise",
"description": "`Apprise <https://github.com/caronc/apprise>`__\n",
"state": "ready",
"source-date-epoch": 1734528675,
"versions": [
"2.0.0",
"1.4.1",
"1.4.0",
"1.3.2",
"1.3.1",
"1.3.0",
"1.2.2",
"1.2.1",
"1.2.0",
"1.1.0",
"1.0.2",
"1.0.1",
"1.0.0",
],
"integrations": [
{
"integration-name": "Apprise",
"external-doc-url": "https://github.com/caronc/apprise",
"tags": ["software"],
}
],
"hooks": [
{"integration-name": "Apprise", "python-modules": ["airflow.providers.apprise.hooks.apprise"]}
],
"connection-types": [
{
"hook-class-name": "airflow.providers.apprise.hooks.apprise.AppriseHook",
"connection-type": "apprise",
}
],
"notifications": ["airflow.providers.apprise.notifications.apprise.AppriseNotifier"],
"dependencies": ["apache-airflow>=2.9.0", "apprise>=1.8.0"],
}
Original file line number Diff line number Diff line change
@@ -22,9 +22,8 @@
from typing import TYPE_CHECKING, Any

import apprise
from apprise import AppriseConfig, NotifyFormat, NotifyType

from airflow.hooks.base import BaseHook
from apprise import AppriseConfig, NotifyFormat, NotifyType

if TYPE_CHECKING:
from apprise import AppriseAttachment
Original file line number Diff line number Diff line change
@@ -20,10 +20,9 @@
from collections.abc import Iterable
from functools import cached_property

from apprise import AppriseConfig, NotifyFormat, NotifyType

from airflow.notifications.basenotifier import BaseNotifier
from airflow.providers.apprise.hooks.apprise import AppriseHook
from apprise import AppriseConfig, NotifyFormat, NotifyType


class AppriseNotifier(BaseNotifier):
32 changes: 32 additions & 0 deletions providers/apprise/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from __future__ import annotations

import pathlib

import pytest

pytest_plugins = "tests_common.pytest_plugin"


@pytest.hookimpl(tryfirst=True)
def pytest_configure(config: pytest.Config) -> None:
deprecations_ignore_path = pathlib.Path(__file__).parent.joinpath("deprecations_ignore.yml")
dep_path = [deprecations_ignore_path] if deprecations_ignore_path.exists() else []
config.inicfg["airflow_deprecations_ignore"] = (
config.inicfg.get("airflow_deprecations_ignore", []) + dep_path # type: ignore[assignment,operator]
)
17 changes: 17 additions & 0 deletions providers/apprise/tests/provider_tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -631,6 +631,7 @@ dev = [
"apache-airflow-providers-apache-pig",
"apache-airflow-providers-apache-pinot",
"apache-airflow-providers-apache-spark",
"apache-airflow-providers-apprise",
"apache-airflow-providers-asana",
"apache-airflow-providers-atlassian-jira",
"apache-airflow-providers-celery",
@@ -695,6 +696,7 @@ apache-airflow-providers-apache-kylin = { workspace = true }
apache-airflow-providers-apache-pig = { workspace = true }
apache-airflow-providers-apache-pinot = { workspace = true }
apache-airflow-providers-apache-spark = { workspace = true }
apache-airflow-providers-apprise = { workspace = true }
apache-airflow-providers-asana = { workspace = true }
apache-airflow-providers-atlassian-jira = { workspace = true }
apache-airflow-providers-celery = {workspace = true}
@@ -757,6 +759,7 @@ members = [
"providers/apache/pig",
"providers/apache/pinot",
"providers/apache/spark",
"providers/apprise",
"providers/asana",
"providers/atlassian/jira",
"providers/celery",
1 change: 1 addition & 0 deletions scripts/ci/docker-compose/remove-sources.yml
Original file line number Diff line number Diff line change
@@ -42,6 +42,7 @@ services:
- ../../../empty:/opt/airflow/providers/apache/pig/src
- ../../../empty:/opt/airflow/providers/apache/pinot/src
- ../../../empty:/opt/airflow/providers/apache/spark/src
- ../../../empty:/opt/airflow/providers/apprise/src
- ../../../empty:/opt/airflow/providers/asana/src
- ../../../empty:/opt/airflow/providers/atlassian/jira/src
- ../../../empty:/opt/airflow/providers/celery/src
1 change: 1 addition & 0 deletions scripts/ci/docker-compose/tests-sources.yml
Original file line number Diff line number Diff line change
@@ -49,6 +49,7 @@ services:
- ../../../providers/apache/pig/tests:/opt/airflow/providers/apache/pig/tests
- ../../../providers/apache/pinot/tests:/opt/airflow/providers/apache/pinot/tests
- ../../../providers/apache/spark/tests:/opt/airflow/providers/apache/spark/tests
- ../../../providers/apprise/tests:/opt/airflow/providers/apprise/tests
- ../../../providers/asana/tests:/opt/airflow/providers/asana/tests
- ../../../providers/atlassian/jira/tests:/opt/airflow/providers/atlassian/jira/tests
- ../../../providers/celery/tests:/opt/airflow/providers/celery/tests