class_docstr: Interacts with Azure Blob Storage through the ``wasb://`` protocol.
  
  These parameters have to be passed in Airflow Data Base: account_name and account_key.
  
  Additional options passed in the 'extra' field of the connection will be
  passed to the `BlockBlockService()` constructor. For example, authenticate
  using a SAS token by adding {"sas_token": "YOUR_TOKEN"}.
  
  If no authentication configuration is provided, DefaultAzureCredential will be used (applicable
  when using Azure compute infrastructure).
  
  :param wasb_conn_id: Reference to the :ref:`wasb connection <howto/connection:wasb>`.
  :param public_read: Whether an anonymous public read access should be used. default is False
class_docstr_tok: ["Interacts","with","Azure","Blob","Storage","through","the","``","wasb",":","\/\/","``","protocol",".","These","parameters","have","to","be","passed","in","Airflow","Data","Base",":","account_name","and","account_key",".","Additional","options","passed","in","the","'extra","'","field","of","the","connection","will","be","passed","to","the","`","BlockBlockService","(",")","`","constructor",".","For","example",",","authenticate","using","a","SAS","token","by","adding","{","``","sas_token","''",":","``","YOUR_TOKEN","''","}",".","If","no","authentication","configuration","is","provided",",","DefaultAzureCredential","will","be","used","(","applicable","when","using","Azure","compute","infrastructure",")",".",":","param","wasb_conn_id",":","Reference","to","the",":","ref",":","`","wasb","connection","<","howto\/connection",":","wasb",">","`",".",":","param","public_read",":","Whether","an","anonymous","public","read","access","should","be","used",".","default","is","False"]
docstr: List blobs in a given container.
  
  :param container_name: The name of the container
  :param prefix: Filters the results to return only blobs whose names
      begin with the specified prefix.
  :param include: Specifies one or more additional datasets to include in the
      response. Options include: ``snapshots``, ``metadata``, ``uncommittedblobs``,
      ``copy`, ``deleted``.
  :param delimiter: filters objects based on the delimiter (for e.g '.csv')
docstr_tok: ["List","blobs","in","a","given","container",".",":","param","container_name",":","The","name","of","the","container",":","param","prefix",":","Filters","the","results","to","return","only","blobs","whose","names","begin","with","the","specified","prefix",".",":","param","include",":","Specifies","one","or","more","additional","datasets","to","include","in","the","response",".","Options","include",":","``","snapshots","``",",","``","metadata","``",",","``","uncommittedblobs","``",",","``","copy","`",",","``","deleted","``",".",":","param","delimiter",":","filters","objects","based","on","the","delimiter","(","for","e.g","'.csv","'",")"]
code: def get_blobs_list_recursive(
      self,
      container_name: str,
      prefix: str | None = None,
      include: list[str] | None = None,
      endswith: str = "",
      **kwargs,
  ) -> list:
      """
      List blobs in a given container.
  
      :param container_name: The name of the container
      :param prefix: Filters the results to return only blobs whose names
          begin with the specified prefix.
      :param include: Specifies one or more additional datasets to include in the
          response. Options include: ``snapshots``, ``metadata``, ``uncommittedblobs``,
          ``copy`, ``deleted``.
      :param delimiter: filters objects based on the delimiter (for e.g '.csv')
      """
      container = self._get_container_client(container_name)
      blob_list = []
      blobs = container.list_blobs(
          name_starts_with=prefix, include=include, **kwargs
      )
      for blob in blobs:
          if blob.name.endswith(endswith):
              blob_list.append(blob.name)
      return blob_list
  
imports: from __future__ import annotations
  import logging
  import os
  from functools import cached_property
  from typing import TYPE_CHECKING, Any, Union
  from urllib.parse import urlparse
  from asgiref.sync import sync_to_async
  from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError
  from azure.identity import ClientSecretCredential
  from azure.identity.aio import ClientSecretCredential, DefaultAzureCredential
  from azure.storage.blob import BlobClient, BlobServiceClient, ContainerClient, StorageStreamDownloader
  from azure.storage.blob.aio import BlobClient, BlobServiceClient, ContainerClient
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.providers.microsoft.azure.utils import add_managed_identity_connection_widgets, get_async_default_azure_credential, get_sync_default_azure_credential
label_desc: Use image node_id 12 for calling the WasbHook obj's underlying member method code with example usage: obj.get_blobs_list_recursive(container_name, prefix, include, endswith) and returns: blob_list