| :py:mod:`airflow.hooks.base` |
| ============================ |
| |
| .. py:module:: airflow.hooks.base |
| |
| .. autoapi-nested-parse:: |
| |
| Base class for all hooks |
| |
| |
| |
| Module Contents |
| --------------- |
| |
| Classes |
| ~~~~~~~ |
| |
| .. autoapisummary:: |
| |
| airflow.hooks.base.BaseHook |
| airflow.hooks.base.DiscoverableHook |
| |
| |
| |
| |
| Attributes |
| ~~~~~~~~~~ |
| |
| .. autoapisummary:: |
| |
| airflow.hooks.base.log |
| |
| |
| .. py:data:: log |
| |
| |
| |
| |
| .. py:class:: BaseHook(context=None) |
| |
| Bases: :py:obj:`airflow.utils.log.logging_mixin.LoggingMixin` |
| |
| Abstract base class for hooks, hooks are meant as an interface to |
| interact with external systems. MySqlHook, HiveHook, PigHook return |
| object that can handle the connection and interaction to specific |
| instances of these systems, and expose consistent methods to interact |
| with them. |
| |
| .. py:method:: get_connections(cls, conn_id) |
| :classmethod: |
| |
| Get all connections as an iterable, given the connection id. |
| |
| :param conn_id: connection id |
| :return: array of connections |
| |
| |
| .. py:method:: get_connection(cls, conn_id) |
| :classmethod: |
| |
| Get connection, given connection id. |
| |
| :param conn_id: connection id |
| :return: connection |
| |
| |
| .. py:method:: get_hook(cls, conn_id) |
| :classmethod: |
| |
| Returns default hook for this connection id. |
| |
| :param conn_id: connection id |
| :return: default hook for this connection |
| |
| |
| .. py:method:: get_conn(self) |
| :abstractmethod: |
| |
| Returns connection for the hook. |
| |
| |
| .. py:method:: get_connection_form_widgets(cls) |
| :classmethod: |
| |
| |
| .. py:method:: get_ui_field_behaviour(cls) |
| :classmethod: |
| |
| |
| |
| .. py:class:: DiscoverableHook |
| |
| Bases: :py:obj:`airflow.typing_compat.Protocol` |
| |
| Interface that providers *can* implement to be discovered by ProvidersManager. |
| |
| It is not used by any of the Hooks, but simply methods and class fields described here are |
| implemented by those Hooks. Each method is optional -- only implement the ones you need. |
| |
| The conn_name_attr, default_conn_name, conn_type should be implemented by those |
| Hooks that want to be automatically mapped from the connection_type -> Hook when get_hook method |
| is called with connection_type. |
| |
| Additionally hook_name should be set when you want the hook to have a custom name in the UI selection |
| Name. If not specified, conn_name will be used. |
| |
| The "get_ui_field_behaviour" and "get_connection_form_widgets" are optional - override them if you want |
| to customize the Connection Form screen. You can add extra widgets to parse your extra fields via the |
| get_connection_form_widgets method as well as hide or relabel the fields or pre-fill |
| them with placeholders via get_ui_field_behaviour method. |
| |
| Note that the "get_ui_field_behaviour" and "get_connection_form_widgets" need to be set by each class |
| in the class hierarchy in order to apply widget customizations. |
| |
| For example, even if you want to use the fields from your parent class, you must explicitly |
| have a method on *your* class: |
| |
| .. code-block:: python |
| |
| @classmethod |
| def get_ui_field_behaviour(cls): |
| return super().get_ui_field_behaviour() |
| |
| You also need to add the Hook class name to list 'hook_class_names' in provider.yaml in case you |
| build an internal provider or to return it in dictionary returned by provider_info entrypoint in the |
| package you prepare. |
| |
| You can see some examples in airflow/providers/jdbc/hooks/jdbc.py. |
| |
| |
| .. py:attribute:: conn_name_attr |
| :annotation: :str |
| |
| |
| |
| .. py:attribute:: default_conn_name |
| :annotation: :str |
| |
| |
| |
| .. py:attribute:: conn_type |
| :annotation: :str |
| |
| |
| |
| .. py:attribute:: hook_name |
| :annotation: :str |
| |
| |
| |
| .. py:method:: get_connection_form_widgets() |
| :staticmethod: |
| |
| Returns dictionary of widgets to be added for the hook to handle extra values. |
| |
| If you have class hierarchy, usually the widgets needed by your class are already |
| added by the base class, so there is no need to implement this method. It might |
| actually result in warning in the logs if you try to add widgets that have already |
| been added by the base class. |
| |
| Note that values of Dict should be of wtforms.Field type. It's not added here |
| for the efficiency of imports. |
| |
| |
| |
| .. py:method:: get_ui_field_behaviour() |
| :staticmethod: |
| |
| Returns dictionary describing customizations to implement in javascript handling the |
| connection form. Should be compliant with airflow/customized_form_field_behaviours.schema.json' |
| |
| |
| If you change conn_type in a derived class, you should also |
| implement this method and return field customizations appropriate to your Hook. This |
| is because the child hook will have usually different conn_type and the customizations |
| are per connection type. |
| |
| .. seealso:: |
| :class:`~airflow.providers.google.cloud.hooks.compute_ssh.ComputeSSH` as an example |
| |
| |
| |
| |