apache-airflow-providers-http 4.4.2rc1__py3-none-any.whl → 4.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,7 @@ import packaging.version
28
28
 
29
29
  __all__ = ["__version__"]
30
30
 
31
- __version__ = "4.4.2"
31
+ __version__ = "4.5.0"
32
32
 
33
33
  try:
34
34
  from airflow import __version__ as airflow_version
@@ -29,6 +29,7 @@ def get_provider_info():
29
29
  "description": "`Hypertext Transfer Protocol (HTTP) <https://www.w3.org/Protocols/>`__\n",
30
30
  "suspended": False,
31
31
  "versions": [
32
+ "4.5.0",
32
33
  "4.4.2",
33
34
  "4.4.1",
34
35
  "4.4.0",
@@ -83,6 +84,12 @@ def get_provider_info():
83
84
  "python-modules": ["airflow.providers.http.hooks.http"],
84
85
  }
85
86
  ],
87
+ "triggers": [
88
+ {
89
+ "integration-name": "Hypertext Transfer Protocol (HTTP)",
90
+ "python-modules": ["airflow.providers.http.triggers.http"],
91
+ }
92
+ ],
86
93
  "connection-types": [
87
94
  {"hook-class-name": "airflow.providers.http.hooks.http.HttpHook", "connection-type": "http"}
88
95
  ],
@@ -369,7 +369,7 @@ class HttpAsyncHook(BaseHook):
369
369
  url,
370
370
  json=data if self.method in ("POST", "PATCH") else None,
371
371
  params=data if self.method == "GET" else None,
372
- headers=headers,
372
+ headers=_headers,
373
373
  auth=auth,
374
374
  **extra_options,
375
375
  )
@@ -17,13 +17,18 @@
17
17
  # under the License.
18
18
  from __future__ import annotations
19
19
 
20
+ import base64
21
+ import pickle
20
22
  from typing import TYPE_CHECKING, Any, Callable, Sequence
21
23
 
24
+ from requests import Response
22
25
  from requests.auth import AuthBase
23
26
 
27
+ from airflow.configuration import conf
24
28
  from airflow.exceptions import AirflowException
25
29
  from airflow.models import BaseOperator
26
30
  from airflow.providers.http.hooks.http import HttpHook
31
+ from airflow.providers.http.triggers.http import HttpTrigger
27
32
 
28
33
  if TYPE_CHECKING:
29
34
  from airflow.utils.context import Context
@@ -61,6 +66,7 @@ class SimpleHttpOperator(BaseOperator):
61
66
  :param tcp_keep_alive_count: The TCP Keep Alive count parameter (corresponds to ``socket.TCP_KEEPCNT``)
62
67
  :param tcp_keep_alive_interval: The TCP Keep Alive interval parameter (corresponds to
63
68
  ``socket.TCP_KEEPINTVL``)
69
+ :param deferrable: Run operator in the deferrable mode
64
70
  """
65
71
 
66
72
  template_fields: Sequence[str] = (
@@ -89,6 +95,7 @@ class SimpleHttpOperator(BaseOperator):
89
95
  tcp_keep_alive_idle: int = 120,
90
96
  tcp_keep_alive_count: int = 20,
91
97
  tcp_keep_alive_interval: int = 30,
98
+ deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
92
99
  **kwargs: Any,
93
100
  ) -> None:
94
101
  super().__init__(**kwargs)
@@ -106,23 +113,42 @@ class SimpleHttpOperator(BaseOperator):
106
113
  self.tcp_keep_alive_idle = tcp_keep_alive_idle
107
114
  self.tcp_keep_alive_count = tcp_keep_alive_count
108
115
  self.tcp_keep_alive_interval = tcp_keep_alive_interval
116
+ self.deferrable = deferrable
109
117
 
110
118
  def execute(self, context: Context) -> Any:
111
- from airflow.utils.operator_helpers import determine_kwargs
119
+ if self.deferrable:
120
+ self.defer(
121
+ trigger=HttpTrigger(
122
+ http_conn_id=self.http_conn_id,
123
+ auth_type=self.auth_type,
124
+ method=self.method,
125
+ endpoint=self.endpoint,
126
+ headers=self.headers,
127
+ data=self.data,
128
+ extra_options=self.extra_options,
129
+ ),
130
+ method_name="execute_complete",
131
+ )
132
+ else:
133
+ http = HttpHook(
134
+ self.method,
135
+ http_conn_id=self.http_conn_id,
136
+ auth_type=self.auth_type,
137
+ tcp_keep_alive=self.tcp_keep_alive,
138
+ tcp_keep_alive_idle=self.tcp_keep_alive_idle,
139
+ tcp_keep_alive_count=self.tcp_keep_alive_count,
140
+ tcp_keep_alive_interval=self.tcp_keep_alive_interval,
141
+ )
142
+
143
+ self.log.info("Calling HTTP method")
112
144
 
113
- http = HttpHook(
114
- self.method,
115
- http_conn_id=self.http_conn_id,
116
- auth_type=self.auth_type,
117
- tcp_keep_alive=self.tcp_keep_alive,
118
- tcp_keep_alive_idle=self.tcp_keep_alive_idle,
119
- tcp_keep_alive_count=self.tcp_keep_alive_count,
120
- tcp_keep_alive_interval=self.tcp_keep_alive_interval,
121
- )
145
+ response = http.run(self.endpoint, self.data, self.headers, self.extra_options)
146
+ return self.process_response(context=context, response=response)
122
147
 
123
- self.log.info("Calling HTTP method")
148
+ def process_response(self, context: Context, response: Response) -> str:
149
+ """Process the response."""
150
+ from airflow.utils.operator_helpers import determine_kwargs
124
151
 
125
- response = http.run(self.endpoint, self.data, self.headers, self.extra_options)
126
152
  if self.log_response:
127
153
  self.log.info(response.text)
128
154
  if self.response_check:
@@ -133,3 +159,15 @@ class SimpleHttpOperator(BaseOperator):
133
159
  kwargs = determine_kwargs(self.response_filter, [response], context)
134
160
  return self.response_filter(response, **kwargs)
135
161
  return response.text
162
+
163
+ def execute_complete(self, context: Context, event: dict):
164
+ """
165
+ Callback for when the trigger fires - returns immediately.
166
+
167
+ Relies on trigger to throw an exception, otherwise it assumes execution was successful.
168
+ """
169
+ if event["status"] == "success":
170
+ response = pickle.loads(base64.standard_b64decode(event["response"]))
171
+ return self.process_response(context=context, response=response)
172
+ else:
173
+ raise AirflowException(f"Unexpected error in the operation: {event['message']}")
@@ -29,8 +29,7 @@ if TYPE_CHECKING:
29
29
 
30
30
  class HttpSensor(BaseSensorOperator):
31
31
  """
32
- Executes a HTTP GET statement and returns False on failure caused by
33
- 404 Not Found or `response_check` returning False.
32
+ Execute HTTP GET statement; return False on failure 404 Not Found or `response_check` returning False.
34
33
 
35
34
  HTTP Error codes other than 404 (like 403) or Connection Refused Error
36
35
  would raise an exception and fail the sensor itself directly (no more poking).
@@ -0,0 +1,17 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
@@ -0,0 +1,124 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+ from __future__ import annotations
18
+
19
+ import base64
20
+ import pickle
21
+ from typing import Any, AsyncIterator
22
+
23
+ import requests
24
+ from aiohttp.client_reqrep import ClientResponse
25
+ from requests.cookies import RequestsCookieJar
26
+ from requests.structures import CaseInsensitiveDict
27
+
28
+ from airflow.providers.http.hooks.http import HttpAsyncHook
29
+ from airflow.triggers.base import BaseTrigger, TriggerEvent
30
+
31
+
32
+ class HttpTrigger(BaseTrigger):
33
+ """
34
+ HttpTrigger run on the trigger worker.
35
+
36
+ :param http_conn_id: http connection id that has the base
37
+ API url i.e https://www.google.com/ and optional authentication credentials. Default
38
+ headers can also be specified in the Extra field in json format.
39
+ :param auth_type: The auth type for the service
40
+ :param method: the API method to be called
41
+ :param endpoint: Endpoint to be called, i.e. ``resource/v1/query?``.
42
+ :param headers: Additional headers to be passed through as a dict.
43
+ :param data: Payload to be uploaded or request parameters.
44
+ :param extra_options: Additional kwargs to pass when creating a request.
45
+ For example, ``run(json=obj)`` is passed as
46
+ ``aiohttp.ClientSession().get(json=obj)``.
47
+ 2XX or 3XX status codes
48
+ """
49
+
50
+ def __init__(
51
+ self,
52
+ http_conn_id: str = "http_default",
53
+ auth_type: Any = None,
54
+ method: str = "POST",
55
+ endpoint: str | None = None,
56
+ headers: dict[str, str] | None = None,
57
+ data: Any = None,
58
+ extra_options: dict[str, Any] | None = None,
59
+ ):
60
+ super().__init__()
61
+ self.http_conn_id = http_conn_id
62
+ self.method = method
63
+ self.auth_type = auth_type
64
+ self.endpoint = endpoint
65
+ self.headers = headers
66
+ self.data = data
67
+ self.extra_options = extra_options
68
+
69
+ def serialize(self) -> tuple[str, dict[str, Any]]:
70
+ """Serializes HttpTrigger arguments and classpath."""
71
+ return (
72
+ "airflow.providers.http.triggers.http.HttpTrigger",
73
+ {
74
+ "http_conn_id": self.http_conn_id,
75
+ "method": self.method,
76
+ "auth_type": self.auth_type,
77
+ "endpoint": self.endpoint,
78
+ "headers": self.headers,
79
+ "data": self.data,
80
+ "extra_options": self.extra_options,
81
+ },
82
+ )
83
+
84
+ async def run(self) -> AsyncIterator[TriggerEvent]:
85
+ """Makes a series of asynchronous http calls via an http hook."""
86
+ hook = HttpAsyncHook(
87
+ method=self.method,
88
+ http_conn_id=self.http_conn_id,
89
+ auth_type=self.auth_type,
90
+ )
91
+ try:
92
+ client_response = await hook.run(
93
+ endpoint=self.endpoint,
94
+ data=self.data,
95
+ headers=self.headers,
96
+ extra_options=self.extra_options,
97
+ )
98
+ response = await self._convert_response(client_response)
99
+ yield TriggerEvent(
100
+ {
101
+ "status": "success",
102
+ "response": base64.standard_b64encode(pickle.dumps(response)).decode("ascii"),
103
+ }
104
+ )
105
+ except Exception as e:
106
+ yield TriggerEvent({"status": "error", "message": str(e)})
107
+ # yield TriggerEvent({"status": "error", "message": str(traceback.format_exc())})
108
+
109
+ @staticmethod
110
+ async def _convert_response(client_response: ClientResponse) -> requests.Response:
111
+ """Convert aiohttp.client_reqrep.ClientResponse to requests.Response."""
112
+ response = requests.Response()
113
+ response._content = await client_response.read()
114
+ response.status_code = client_response.status
115
+ response.headers = CaseInsensitiveDict(client_response.headers)
116
+ response.url = str(client_response.url)
117
+ response.history = [await HttpTrigger._convert_response(h) for h in client_response.history]
118
+ response.encoding = client_response.get_encoding()
119
+ response.reason = str(client_response.reason)
120
+ cookies = RequestsCookieJar()
121
+ for (k, v) in client_response.cookies.items():
122
+ cookies.set(k, v)
123
+ response.cookies = cookies
124
+ return response
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.1
2
+ Name: apache-airflow-providers-http
3
+ Version: 4.5.0
4
+ Summary: Provider for Apache Airflow. Implements apache-airflow-providers-http package
5
+ Home-page: https://airflow.apache.org/
6
+ Download-URL: https://archive.apache.org/dist/airflow/providers
7
+ Author: Apache Software Foundation
8
+ Author-email: dev@airflow.apache.org
9
+ License: Apache License 2.0
10
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-http/4.5.0/
11
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-http/4.5.0/changelog.html
12
+ Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
13
+ Project-URL: Source Code, https://github.com/apache/airflow
14
+ Project-URL: Slack Chat, https://s.apache.org/airflow-slack
15
+ Project-URL: Twitter, https://twitter.com/ApacheAirflow
16
+ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
17
+ Classifier: Development Status :: 5 - Production/Stable
18
+ Classifier: Environment :: Console
19
+ Classifier: Environment :: Web Environment
20
+ Classifier: Intended Audience :: Developers
21
+ Classifier: Intended Audience :: System Administrators
22
+ Classifier: Framework :: Apache Airflow
23
+ Classifier: Framework :: Apache Airflow :: Provider
24
+ Classifier: License :: OSI Approved :: Apache Software License
25
+ Classifier: Programming Language :: Python :: 3.8
26
+ Classifier: Programming Language :: Python :: 3.9
27
+ Classifier: Programming Language :: Python :: 3.10
28
+ Classifier: Programming Language :: Python :: 3.11
29
+ Classifier: Topic :: System :: Monitoring
30
+ Requires-Python: ~=3.8
31
+ Description-Content-Type: text/x-rst
32
+ License-File: LICENSE
33
+ License-File: NOTICE
34
+ Requires-Dist: aiohttp
35
+ Requires-Dist: apache-airflow (>=2.4.0)
36
+ Requires-Dist: asgiref
37
+ Requires-Dist: requests (>=2.26.0)
38
+ Requires-Dist: requests-toolbelt
39
+
40
+
41
+ .. Licensed to the Apache Software Foundation (ASF) under one
42
+ or more contributor license agreements. See the NOTICE file
43
+ distributed with this work for additional information
44
+ regarding copyright ownership. The ASF licenses this file
45
+ to you under the Apache License, Version 2.0 (the
46
+ "License"); you may not use this file except in compliance
47
+ with the License. You may obtain a copy of the License at
48
+
49
+ .. http://www.apache.org/licenses/LICENSE-2.0
50
+
51
+ .. Unless required by applicable law or agreed to in writing,
52
+ software distributed under the License is distributed on an
53
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
54
+ KIND, either express or implied. See the License for the
55
+ specific language governing permissions and limitations
56
+ under the License.
57
+
58
+ .. Licensed to the Apache Software Foundation (ASF) under one
59
+ or more contributor license agreements. See the NOTICE file
60
+ distributed with this work for additional information
61
+ regarding copyright ownership. The ASF licenses this file
62
+ to you under the Apache License, Version 2.0 (the
63
+ "License"); you may not use this file except in compliance
64
+ with the License. You may obtain a copy of the License at
65
+
66
+ .. http://www.apache.org/licenses/LICENSE-2.0
67
+
68
+ .. Unless required by applicable law or agreed to in writing,
69
+ software distributed under the License is distributed on an
70
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
71
+ KIND, either express or implied. See the License for the
72
+ specific language governing permissions and limitations
73
+ under the License.
74
+
75
+
76
+ Package ``apache-airflow-providers-http``
77
+
78
+ Release: ``4.5.0``
79
+
80
+
81
+ `Hypertext Transfer Protocol (HTTP) <https://www.w3.org/Protocols/>`__
82
+
83
+
84
+ Provider package
85
+ ----------------
86
+
87
+ This is a provider package for ``http`` provider. All classes for this provider package
88
+ are in ``airflow.providers.http`` python package.
89
+
90
+ You can find package information and changelog for the provider
91
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-http/4.5.0/>`_.
92
+
93
+
94
+ Installation
95
+ ------------
96
+
97
+ You can install this package on top of an existing Airflow 2 installation (see ``Requirements`` below
98
+ for the minimum Airflow version supported) via
99
+ ``pip install apache-airflow-providers-http``
100
+
101
+ The package supports the following python versions: 3.8,3.9,3.10,3.11
102
+
103
+ Requirements
104
+ ------------
105
+
106
+ ===================== ==================
107
+ PIP package Version required
108
+ ===================== ==================
109
+ ``apache-airflow`` ``>=2.4.0``
110
+ ``requests`` ``>=2.26.0``
111
+ ``requests_toolbelt``
112
+ ``aiohttp``
113
+ ``asgiref``
114
+ ===================== ==================
115
+
116
+ The changelog for the provider package can be found in the
117
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-http/4.5.0/changelog.html>`_.
@@ -0,0 +1,17 @@
1
+ airflow/providers/http/__init__.py,sha256=Zx6RFwo9MP25bUJ4uZi4aAHdyM5PVpJT6KZ7vRZ6PUg,1529
2
+ airflow/providers/http/get_provider_info.py,sha256=_59oVdmye6jV2DPGSIRYVHtQYcU6_bhW9isRu3j2HWE,3320
3
+ airflow/providers/http/hooks/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
4
+ airflow/providers/http/hooks/http.py,sha256=U9B7-PNsXZPkp72iDmp5sZb3CcdwXegef2bZgH1J_Sk,16172
5
+ airflow/providers/http/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
6
+ airflow/providers/http/operators/http.py,sha256=vG0XGF7riVu1AhQEnoXD8Mk_5712BjqvRNi7IyPmdR4,7470
7
+ airflow/providers/http/sensors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
8
+ airflow/providers/http/sensors/http.py,sha256=uoMXHj3gNHHZsm6jNLeenGB83QKYdIqedLHcTrSzFc8,5864
9
+ airflow/providers/http/triggers/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
10
+ airflow/providers/http/triggers/http.py,sha256=wHhzZQO3rUVgoP5iSUSnyzk5N1qy-ppszFgE_NkH3FI,4988
11
+ apache_airflow_providers_http-4.5.0.dist-info/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
12
+ apache_airflow_providers_http-4.5.0.dist-info/METADATA,sha256=Bwyw8tol7rLT5nCSULvytt4wpTxz7ond98qm2uuMWmQ,4628
13
+ apache_airflow_providers_http-4.5.0.dist-info/NOTICE,sha256=m-6s2XynUxVSUIxO4rVablAZCvFq-wmLrqV91DotRBw,240
14
+ apache_airflow_providers_http-4.5.0.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
15
+ apache_airflow_providers_http-4.5.0.dist-info/entry_points.txt,sha256=QBAvMV6qvNFxV_H4Vk1jDhezZTTrDb1w_QGzLBA3gaA,101
16
+ apache_airflow_providers_http-4.5.0.dist-info/top_level.txt,sha256=OeMVH5md7fr2QQWpnZoOWWxWO-0WH1IP70lpTVwopPg,8
17
+ apache_airflow_providers_http-4.5.0.dist-info/RECORD,,
@@ -1,383 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: apache-airflow-providers-http
3
- Version: 4.4.2rc1
4
- Summary: Provider for Apache Airflow. Implements apache-airflow-providers-http package
5
- Home-page: https://airflow.apache.org/
6
- Download-URL: https://archive.apache.org/dist/airflow/providers
7
- Author: Apache Software Foundation
8
- Author-email: dev@airflow.apache.org
9
- License: Apache License 2.0
10
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-http/4.4.2/
11
- Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
12
- Project-URL: Source Code, https://github.com/apache/airflow
13
- Project-URL: Slack Chat, https://s.apache.org/airflow-slack
14
- Project-URL: Twitter, https://twitter.com/ApacheAirflow
15
- Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
16
- Classifier: Development Status :: 5 - Production/Stable
17
- Classifier: Environment :: Console
18
- Classifier: Environment :: Web Environment
19
- Classifier: Intended Audience :: Developers
20
- Classifier: Intended Audience :: System Administrators
21
- Classifier: Framework :: Apache Airflow
22
- Classifier: Framework :: Apache Airflow :: Provider
23
- Classifier: License :: OSI Approved :: Apache Software License
24
- Classifier: Programming Language :: Python :: 3.8
25
- Classifier: Programming Language :: Python :: 3.9
26
- Classifier: Programming Language :: Python :: 3.10
27
- Classifier: Programming Language :: Python :: 3.11
28
- Classifier: Topic :: System :: Monitoring
29
- Requires-Python: ~=3.8
30
- Description-Content-Type: text/x-rst
31
- License-File: LICENSE
32
- License-File: NOTICE
33
- Requires-Dist: aiohttp
34
- Requires-Dist: apache-airflow (>=2.4.0.dev0)
35
- Requires-Dist: asgiref
36
- Requires-Dist: requests (>=2.26.0)
37
- Requires-Dist: requests-toolbelt
38
-
39
-
40
- .. Licensed to the Apache Software Foundation (ASF) under one
41
- or more contributor license agreements. See the NOTICE file
42
- distributed with this work for additional information
43
- regarding copyright ownership. The ASF licenses this file
44
- to you under the Apache License, Version 2.0 (the
45
- "License"); you may not use this file except in compliance
46
- with the License. You may obtain a copy of the License at
47
-
48
- .. http://www.apache.org/licenses/LICENSE-2.0
49
-
50
- .. Unless required by applicable law or agreed to in writing,
51
- software distributed under the License is distributed on an
52
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
53
- KIND, either express or implied. See the License for the
54
- specific language governing permissions and limitations
55
- under the License.
56
-
57
-
58
- Package ``apache-airflow-providers-http``
59
-
60
- Release: ``4.4.2rc1``
61
-
62
-
63
- `Hypertext Transfer Protocol (HTTP) <https://www.w3.org/Protocols/>`__
64
-
65
-
66
- Provider package
67
- ----------------
68
-
69
- This is a provider package for ``http`` provider. All classes for this provider package
70
- are in ``airflow.providers.http`` python package.
71
-
72
- You can find package information and changelog for the provider
73
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-http/4.4.2/>`_.
74
-
75
-
76
- Installation
77
- ------------
78
-
79
- You can install this package on top of an existing Airflow 2 installation (see ``Requirements`` below
80
- for the minimum Airflow version supported) via
81
- ``pip install apache-airflow-providers-http``
82
-
83
- The package supports the following python versions: 3.8,3.9,3.10,3.11
84
-
85
- Requirements
86
- ------------
87
-
88
- ===================== ==================
89
- PIP package Version required
90
- ===================== ==================
91
- ``apache-airflow`` ``>=2.4.0``
92
- ``requests`` ``>=2.26.0``
93
- ``requests_toolbelt``
94
- ``aiohttp``
95
- ``asgiref``
96
- ===================== ==================
97
-
98
- .. Licensed to the Apache Software Foundation (ASF) under one
99
- or more contributor license agreements. See the NOTICE file
100
- distributed with this work for additional information
101
- regarding copyright ownership. The ASF licenses this file
102
- to you under the Apache License, Version 2.0 (the
103
- "License"); you may not use this file except in compliance
104
- with the License. You may obtain a copy of the License at
105
-
106
- .. http://www.apache.org/licenses/LICENSE-2.0
107
-
108
- .. Unless required by applicable law or agreed to in writing,
109
- software distributed under the License is distributed on an
110
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
111
- KIND, either express or implied. See the License for the
112
- specific language governing permissions and limitations
113
- under the License.
114
-
115
-
116
- .. NOTE TO CONTRIBUTORS:
117
- Please, only add notes to the Changelog just below the "Changelog" header when there are some breaking changes
118
- and you want to add an explanation to the users on how they are supposed to deal with them.
119
- The changelog is updated and maintained semi-automatically by release manager.
120
-
121
- Changelog
122
- ---------
123
-
124
- 4.4.2
125
- .....
126
-
127
- .. note::
128
- This release dropped support for Python 3.7
129
-
130
- Misc
131
- ~~~~
132
-
133
- * ``Add note about dropping Python 3.7 for providers (#32015)``
134
-
135
- .. Below changes are excluded from the changelog. Move them to
136
- appropriate section above if needed. Do not delete the lines(!):
137
- * ``Improve docstrings in providers (#31681)``
138
- * ``Add D400 pydocstyle check - Providers (#31427)``
139
-
140
- 4.4.1
141
- .....
142
-
143
- Misc
144
- ~~~~
145
-
146
- * ``Bring back min-airflow-version for preinstalled providers (#31469)``
147
-
148
- 4.4.0
149
- .....
150
-
151
- .. note::
152
- This release of provider is only available for Airflow 2.4+ as explained in the
153
- `Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>`_.
154
-
155
-
156
- .. Below changes are excluded from the changelog. Move them to
157
- appropriate section above if needed. Do not delete the lines(!):
158
- * ``Upgrade ruff to 0.0.262 (#30809)``
159
- * ``Add full automation for min Airflow version for providers (#30994)``
160
- * ``Add mechanism to suspend providers (#30422)``
161
- * ``Use '__version__' in providers not 'version' (#31393)``
162
- * ``Fixing circular import error in providers caused by airflow version check (#31379)``
163
- * ``Prepare docs for May 2023 wave of Providers (#31252)``
164
-
165
- 4.3.0
166
- .....
167
-
168
- Features
169
- ~~~~~~~~
170
-
171
- * ``Add non login-password auth support for SimpleHttpOpeator (#29206)``
172
-
173
- 4.2.0
174
- .....
175
-
176
- Features
177
- ~~~~~~~~
178
-
179
- * ``Add HttpHookAsync for deferrable implementation (#29038)``
180
-
181
- 4.1.1
182
- .....
183
-
184
- Misc
185
- ~~~~
186
-
187
- * ``Change logging for HttpHook to debug (#28911)``
188
-
189
- 4.1.0
190
- .....
191
-
192
- .. note::
193
- This release of provider is only available for Airflow 2.3+ as explained in the
194
- `Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>`_.
195
-
196
- Misc
197
- ~~~~
198
-
199
- * ``Move min airflow version to 2.3.0 for all providers (#27196)``
200
-
201
- .. Below changes are excluded from the changelog. Move them to
202
- appropriate section above if needed. Do not delete the lines(!):
203
- * ``Enable string normalization in python formatting - providers (#27205)``
204
- * ``Update docs for September Provider's release (#26731)``
205
- * ``Apply PEP-563 (Postponed Evaluation of Annotations) to non-core airflow (#26289)``
206
-
207
- 4.0.0
208
- .....
209
-
210
- Breaking changes
211
- ~~~~~~~~~~~~~~~~
212
-
213
- The SimpleHTTPOperator, HttpSensor and HttpHook use now TCP_KEEPALIVE by default.
214
- You can disable it by setting ``tcp_keep_alive`` to False and you can control keepalive parameters
215
- by new ``tcp_keep_alive_*`` parameters added to constructor of the Hook, Operator and Sensor. Setting the
216
- TCP_KEEPALIVE prevents some firewalls from closing a long-running connection that has long periods of
217
- inactivity by sending empty TCP packets periodically. This has a very small impact on network traffic,
218
- and potentially prevents the idle/hanging connections from being closed automatically by the firewalls.
219
-
220
- * ``Add TCP_KEEPALIVE option to http provider (#24967)``
221
-
222
- .. Below changes are excluded from the changelog. Move them to
223
- appropriate section above if needed. Do not delete the lines(!):
224
- * ``fix document about response_check in HttpSensor (#24708)``
225
- * ``Fix HttpHook.run_with_advanced_retry document error (#24380)``
226
- * ``Remove 'xcom_push' flag from providers (#24823)``
227
- * ``Move provider dependencies to inside provider folders (#24672)``
228
- * ``Remove 'hook-class-names' from provider.yaml (#24702)``
229
-
230
- 3.0.0
231
- .....
232
-
233
- Breaking changes
234
- ~~~~~~~~~~~~~~~~
235
-
236
- .. note::
237
- This release of provider is only available for Airflow 2.2+ as explained in the
238
- `Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>`_.
239
-
240
- .. Below changes are excluded from the changelog. Move them to
241
- appropriate section above if needed. Do not delete the lines(!):
242
- * ``Migrate HTTP example DAGs to new design AIP-47 (#23991)``
243
- * ``Add explanatory note for contributors about updating Changelog (#24229)``
244
- * ``Prepare docs for May 2022 provider's release (#24231)``
245
- * ``Update package description to remove double min-airflow specification (#24292)``
246
-
247
- 2.1.2
248
- .....
249
-
250
- Bug Fixes
251
- ~~~~~~~~~
252
-
253
- * ``Fix mistakenly added install_requires for all providers (#22382)``
254
-
255
- 2.1.1
256
- .....
257
-
258
- Misc
259
- ~~~~~
260
-
261
- * ``Add Trove classifiers in PyPI (Framework :: Apache Airflow :: Provider)``
262
-
263
- 2.1.0
264
- .....
265
-
266
- Features
267
- ~~~~~~~~
268
-
269
- * ``Add 'method' to attributes in HttpSensor. (#21831)``
270
-
271
- Misc
272
- ~~~~
273
-
274
- * ``Support for Python 3.10``
275
-
276
- .. Below changes are excluded from the changelog. Move them to
277
- appropriate section above if needed. Do not delete the lines(!):
278
- * ``Add pre-commit check for docstring param types (#21398)``
279
-
280
- 2.0.3
281
- .....
282
-
283
- Misc
284
- ~~~~
285
-
286
- * ``Split out confusing path combination logic to separate method (#21247)``
287
-
288
-
289
- .. Below changes are excluded from the changelog. Move them to
290
- appropriate section above if needed. Do not delete the lines(!):
291
- * ``Remove ':type' lines now sphinx-autoapi supports typehints (#20951)``
292
- * ``Add documentation for January 2021 providers release (#21257)``
293
-
294
- 2.0.2
295
- .....
296
-
297
- Bug Fixes
298
- ~~~~~~~~~
299
-
300
- * ``Un-ignore DeprecationWarning (#20322)``
301
-
302
- .. Below changes are excluded from the changelog. Move them to
303
- appropriate section above if needed. Do not delete the lines(!):
304
- * ``Fix MyPy Errors for HTTP provider. (#20246)``
305
- * ``Update documentation for November 2021 provider's release (#19882)``
306
- * ``Prepare documentation for October Provider's release (#19321)``
307
- * ``Update documentation for September providers release (#18613)``
308
- * ``Static start_date and default arg cleanup for misc. provider example DAGs (#18597)``
309
- * ``Use typed Context EVERYWHERE (#20565)``
310
- * ``Fix template_fields type to have MyPy friendly Sequence type (#20571)``
311
- * ``Even more typing in operators (template_fields/ext) (#20608)``
312
- * ``Update documentation for provider December 2021 release (#20523)``
313
-
314
- 2.0.1
315
- .....
316
-
317
- Misc
318
- ~~~~
319
-
320
- * ``Optimise connection importing for Airflow 2.2.0``
321
- * ``Remove airflow dependency from http provider``
322
-
323
- .. Below changes are excluded from the changelog. Move them to
324
- appropriate section above if needed. Do not delete the lines(!):
325
- * ``Update description about the new ''connection-types'' provider meta-data (#17767)``
326
- * ``Import Hooks lazily individually in providers manager (#17682)``
327
- * ``Prepares docs for Rc2 release of July providers (#17116)``
328
- * ``Remove/refactor default_args pattern for miscellaneous providers (#16872)``
329
- * ``Prepare documentation for July release of providers. (#17015)``
330
- * ``Removes pylint from our toolchain (#16682)``
331
-
332
- 2.0.0
333
- .....
334
-
335
- Breaking changes
336
- ~~~~~~~~~~~~~~~~
337
-
338
- * ``Auto-apply apply_default decorator (#15667)``
339
-
340
- .. warning:: Due to apply_default decorator removal, this version of the provider requires Airflow 2.1.0+.
341
- If your Airflow version is < 2.1.0, and you want to install this provider version, first upgrade
342
- Airflow to at least version 2.1.0. Otherwise your Airflow package version will be upgraded
343
- automatically and you will have to manually run ``airflow upgrade db`` to complete the migration.
344
-
345
- Features
346
- ~~~~~~~~
347
-
348
- * ``Update 'SimpleHttpOperator' to take auth object (#15605)``
349
- * ``HttpHook: Use request factory and respect defaults (#14701)``
350
-
351
- .. Below changes are excluded from the changelog. Move them to
352
- appropriate section above if needed. Do not delete the lines(!):
353
- * ``Check synctatic correctness for code-snippets (#16005)``
354
- * ``Prepares provider release after PIP 21 compatibility (#15576)``
355
- * ``Remove Backport Providers (#14886)``
356
- * ``Updated documentation for June 2021 provider release (#16294)``
357
- * ``Add documentation for the HTTP connection (#15379)``
358
- * ``More documentation update for June providers release (#16405)``
359
- * ``Synchronizes updated changelog after buggfix release (#16464)``
360
-
361
- 1.1.1
362
- .....
363
-
364
- Bug fixes
365
- ~~~~~~~~~
366
-
367
- * ``Corrections in docs and tools after releasing provider RCs (#14082)``
368
-
369
-
370
- 1.1.0
371
- .....
372
-
373
- Updated documentation and readme files.
374
-
375
- Features
376
- ~~~~~~~~
377
-
378
- * ``Add a new argument for HttpSensor to accept a list of http status code``
379
-
380
- 1.0.0
381
- .....
382
-
383
- Initial version of the provider.
@@ -1,15 +0,0 @@
1
- airflow/providers/http/__init__.py,sha256=RovxCASU0KO1u41LkZ_0OIhP6bolnA0tfC_m77a-b6E,1529
2
- airflow/providers/http/get_provider_info.py,sha256=jvhVqgf_5ksgc-ABJO9HWPBsBA-iGEOAFJ4TwLycW_Y,3088
3
- airflow/providers/http/hooks/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
4
- airflow/providers/http/hooks/http.py,sha256=GMkqhvriXELdPtf_su6TAL6HMKT2mgEzD5kIXZ-lzH8,16171
5
- airflow/providers/http/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
6
- airflow/providers/http/operators/http.py,sha256=slD2Fk97DNJk-OO1jwKUpA4WGbXXdEGmJNC-UMGJEXc,5829
7
- airflow/providers/http/sensors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
8
- airflow/providers/http/sensors/http.py,sha256=MzYScvXNkPufXTBJEKDOTS2nHq0L3UHT1YurZgqz8WM,5885
9
- apache_airflow_providers_http-4.4.2rc1.dist-info/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
10
- apache_airflow_providers_http-4.4.2rc1.dist-info/METADATA,sha256=iF-8T9pOoXK2GrOwe0oJrY-FU9tT7TJ-qY46M50bMYM,12916
11
- apache_airflow_providers_http-4.4.2rc1.dist-info/NOTICE,sha256=m-6s2XynUxVSUIxO4rVablAZCvFq-wmLrqV91DotRBw,240
12
- apache_airflow_providers_http-4.4.2rc1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
13
- apache_airflow_providers_http-4.4.2rc1.dist-info/entry_points.txt,sha256=QBAvMV6qvNFxV_H4Vk1jDhezZTTrDb1w_QGzLBA3gaA,101
14
- apache_airflow_providers_http-4.4.2rc1.dist-info/top_level.txt,sha256=OeMVH5md7fr2QQWpnZoOWWxWO-0WH1IP70lpTVwopPg,8
15
- apache_airflow_providers_http-4.4.2rc1.dist-info/RECORD,,