code: def __iter__(self):
      buf = self._fill_buf()
      if buf is not None:
          # If there are no line breaks in the entries
          # file, then we will yield nothing, ever.
          #
          # This apes S3 tail. We can fix it here and in S3
          # if/when this becomes an issue. It boils down to
          # knowing when to give up waiting on partial lines
          # to become full lines (tricky, need more info).
          #
          # Likely this has been OK because we control the
          # line-break presence in the objects we tail.
          for line in buf:
              if line.endswith(b"\n"):
                  yield line
              else:
                  self._tail = line
                  break
  
file_path: metaflow/metaflow/plugins/azure/azure_tail.py
imports: from io import BytesIO
  from azure.core.exceptions import ResourceNotFoundError, HttpResponseError
  from metaflow.exception import MetaflowException
  from metaflow.plugins.azure.blob_service_client_factory import get_azure_blob_service_client
  from metaflow.plugins.azure.azure_utils import parse_azure_full_path
label_desc: Use image node_id 2 for calling the AzureTail obj's underlying member method code with example usage: obj.__iter__() without return types