This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/master by this push:
     new 89fe5fe  improve typing for datadog provider (#9775)
89fe5fe is described below

commit 89fe5feb7b8088db7b5aaaec2b7a292cbc507209
Author: morrme <[email protected]>
AuthorDate: Sun Jul 19 22:35:06 2020 -0500

    improve typing for datadog provider (#9775)
---
 airflow/providers/datadog/hooks/datadog.py   | 29 ++++++++++++++++++++--------
 airflow/providers/datadog/sensors/datadog.py | 20 ++++++++++---------
 2 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/airflow/providers/datadog/hooks/datadog.py 
b/airflow/providers/datadog/hooks/datadog.py
index 38055c4..7f61633 100644
--- a/airflow/providers/datadog/hooks/datadog.py
+++ b/airflow/providers/datadog/hooks/datadog.py
@@ -17,6 +17,7 @@
 # under the License.
 
 import time
+from typing import Any, Dict, List, Optional, Union
 
 from datadog import api, initialize
 
@@ -37,7 +38,7 @@ class DatadogHook(BaseHook, LoggingMixin):
     :param datadog_conn_id: The connection to datadog, containing metadata for 
api keys.
     :param datadog_conn_id: str
     """
-    def __init__(self, datadog_conn_id='datadog_default'):
+    def __init__(self, datadog_conn_id: str = 'datadog_default') -> None:
         super().__init__()
         conn = self.get_connection(datadog_conn_id)
         self.api_key = conn.extra_dejson.get('api_key', None)
@@ -55,7 +56,7 @@ class DatadogHook(BaseHook, LoggingMixin):
         self.log.info("Setting up api keys for Datadog")
         initialize(api_key=self.api_key, app_key=self.app_key)
 
-    def validate_response(self, response):
+    def validate_response(self, response: Dict[str, Any]) -> None:
         """
         Validate Datadog response
         """
@@ -63,7 +64,11 @@ class DatadogHook(BaseHook, LoggingMixin):
             self.log.error("Datadog returned: %s", response)
             raise AirflowException("Error status received from Datadog")
 
-    def send_metric(self, metric_name, datapoint, tags=None, type_=None, 
interval=None):
+    def send_metric(self, metric_name: str,
+                    datapoint: Union[float, int],
+                    tags: Optional[List[str]] = None,
+                    type_: Optional[str] = None,
+                    interval: Optional[int] = None) -> Dict[str, Any]:
         """
         Sends a single datapoint metric to DataDog
 
@@ -90,9 +95,9 @@ class DatadogHook(BaseHook, LoggingMixin):
         return response
 
     def query_metric(self,
-                     query,
-                     from_seconds_ago,
-                     to_seconds_ago):
+                     query: str,
+                     from_seconds_ago: int,
+                     to_seconds_ago: int) -> Dict[str, Any]:
         """
         Queries datadog for a specific metric, potentially with some
         function applied to it and returns the results.
@@ -115,8 +120,16 @@ class DatadogHook(BaseHook, LoggingMixin):
         return response
 
     # pylint: disable=too-many-arguments
-    def post_event(self, title, text, aggregation_key=None, alert_type=None, 
date_happened=None,
-                   handle=None, priority=None, related_event_id=None, 
tags=None, device_name=None):
+    def post_event(self, title: str,
+                   text: str,
+                   aggregation_key: Optional[str] = None,
+                   alert_type: Optional[str] = None,
+                   date_happened: Optional[int] = None,
+                   handle: Optional[str] = None,
+                   priority: Optional[str] = None,
+                   related_event_id: Optional[int] = None,
+                   tags: Optional[List[str]] = None,
+                   device_name: Optional[List[str]] = None) -> Dict[str, Any]:
         """
         Posts an event to datadog (processing finished, potentially alerts, 
other issues)
         Think about this as a means to maintain persistence of alerts, rather 
than
diff --git a/airflow/providers/datadog/sensors/datadog.py 
b/airflow/providers/datadog/sensors/datadog.py
index 1fc9438..a24f46e 100644
--- a/airflow/providers/datadog/sensors/datadog.py
+++ b/airflow/providers/datadog/sensors/datadog.py
@@ -15,6 +15,8 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+from typing import Any, Callable, Dict, List, Optional
+
 from datadog import api
 
 from airflow.exceptions import AirflowException
@@ -39,15 +41,15 @@ class DatadogSensor(BaseSensorOperator):
     @apply_defaults
     def __init__(
             self,
-            datadog_conn_id='datadog_default',
-            from_seconds_ago=3600,
-            up_to_seconds_from_now=0,
-            priority=None,
-            sources=None,
-            tags=None,
-            response_check=None,
+            datadog_conn_id: str = 'datadog_default',
+            from_seconds_ago: int = 3600,
+            up_to_seconds_from_now: int = 0,
+            priority: Optional[str] = None,
+            sources: Optional[str] = None,
+            tags: Optional[List[str]] = None,
+            response_check: Optional[Callable[[Dict[str, Any]], bool]] = None,
             *args,
-            **kwargs):
+            **kwargs) -> None:
         super().__init__(*args, **kwargs)
         self.datadog_conn_id = datadog_conn_id
         self.from_seconds_ago = from_seconds_ago
@@ -57,7 +59,7 @@ class DatadogSensor(BaseSensorOperator):
         self.tags = tags
         self.response_check = response_check
 
-    def poke(self, context):
+    def poke(self, context: Dict[str, Any]) -> bool:
         # This instantiates the hook, but doesn't need it further,
         # because the API authenticates globally (unfortunately),
         # but for airflow this shouldn't matter too much, because each

Reply via email to