class_docstr: Uses datadog API to send metrics of practically anything measurable.
  
  It's possible to track # of db records inserted/deleted, records read
  from file and many other useful metrics.
  
  Depends on the datadog API, which has to be deployed on the same server where
  Airflow runs.
  
  :param datadog_conn_id: The connection to datadog, containing metadata for api keys.
class_docstr_tok: ["Uses","datadog","API","to","send","metrics","of","practically","anything","measurable",".","It","'s","possible","to","track","#","of","db","records","inserted\/deleted",",","records","read","from","file","and","many","other","useful","metrics",".","Depends","on","the","datadog","API",",","which","has","to","be","deployed","on","the","same","server","where","Airflow","runs",".",":","param","datadog_conn_id",":","The","connection","to","datadog",",","containing","metadata","for","api","keys","."]
docstr: Return connection widgets to add to connection form.
docstr_tok: ["Return","connection","widgets","to","add","to","connection","form","."]
code: def get_connection_form_widgets(cls) -> dict[str, Any]:
      """Return connection widgets to add to connection form."""
      from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
      from flask_babel import lazy_gettext
      from wtforms import StringField
  
      return {
          "api_host": StringField(
              lazy_gettext("API endpoint"), widget=BS3TextFieldWidget()
          ),
          "api_key": StringField(
              lazy_gettext("API key"), widget=BS3TextFieldWidget()
          ),
          "app_key": StringField(
              lazy_gettext("Application key"),
              widget=BS3TextFieldWidget(),
          ),
          "source_type_name": StringField(
              lazy_gettext("Source type name"),
              widget=BS3TextFieldWidget(),
          ),
      }
  
file_path: airflow/airflow/providers/datadog/hooks/datadog.py
imports: from __future__ import annotations
  import time
  from typing import Any
  from datadog import api, initialize
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.utils.log.logging_mixin import LoggingMixin
label_desc: Use image node_id 6 for calling the DatadogHook obj's underlying member method code with example usage: obj.get_connection_form_widgets(cls) and returns: dict