:mod:`airflow.providers.yandex.hooks.yandex`
============================================

.. py:module:: airflow.providers.yandex.hooks.yandex


Module Contents
---------------

.. py:class:: YandexCloudBaseHook(connection_id: Optional[str] = None, yandex_conn_id: Optional[str] = None, default_folder_id: Union[dict, bool, None] = None, default_public_ssh_key: Optional[str] = None)

   Bases: :class:`airflow.hooks.base.BaseHook`

   A base hook for Yandex.Cloud related tasks.

   :param connection_id: The connection ID to use when fetching connection info.
   :type connection_id: str

   .. attribute:: conn_name_attr
      :annotation: = yandex_conn_id

      

   .. attribute:: default_conn_name
      :annotation: = yandexcloud_default

      

   .. attribute:: conn_type
      :annotation: = yandexcloud

      

   .. attribute:: hook_name
      :annotation: = Yandex Cloud

      

   
   .. staticmethod:: get_connection_form_widgets()

      Returns connection widgets to add to connection form



   
   .. staticmethod:: get_ui_field_behaviour()

      Returns custom field behaviour



   
   .. method:: _get_credentials(self)



   
   .. method:: _get_field(self, field_name: str, default: Any = None)

      Fetches a field from extras, and returns it.




