class_docstr: Stores artifacts on Azure Data Lake Storage Gen2.
  
  This repository is used with URIs of the form
  ``abfs[s]://file_system@account_name.dfs.core.windows.net/<path>/<path>``.
  
  :param credential: Azure credential (see options in https://learn.microsoft.com/en-us/python/api/azure-core/azure.core.credentials?view=azure-python)
                     to use to authenticate to storage
class_docstr_tok: ["Stores","artifacts","on","Azure","Data","Lake","Storage","Gen2",".","This","repository","is","used","with","URIs","of","the","form","``","abfs","[","s","]",":","\/\/file_system","@","account_name.dfs.core.windows.net\/","<","path",">","\/","<","path",">","``",".",":","param","credential",":","Azure","credential","(","see","options","in","https",":","\/\/learn.microsoft.com\/en-us\/python\/api\/azure-core\/azure.core.credentials","?","view=azure-python",")","to","use","to","authenticate","to","storage"]
code: def list_artifacts(self, path=None):
      directory_to_list = self.base_data_lake_directory
      if path:
          directory_to_list = posixpath.join(directory_to_list, path)
      infos = []
      for result in self.fs_client.get_paths(
          path=directory_to_list, recursive=False
      ):
          if (
              directory_to_list == result.name
          ):  # result isn't actually a child of the path we're interested in, so skip it
              continue
          if result.is_directory:
              subdir = posixpath.relpath(
                  path=result.name, start=self.base_data_lake_directory
              )
              if subdir.endswith("/"):
                  subdir = subdir[:-1]
              infos.append(
                  FileInfo(subdir, is_dir=True, file_size=None)
              )
          else:
              file_name = posixpath.relpath(
                  path=result.name, start=self.base_data_lake_directory
              )
              infos.append(
                  FileInfo(
                      file_name,
                      is_dir=False,
                      file_size=result.content_length,
                  )
              )
  
      # The list_artifacts API expects us to return an empty list if the
      # the path references a single file.
      rel_path = directory_to_list[
          len(self.base_data_lake_directory) + 1 :
      ]
      if (
          (len(infos) == 1)
          and not infos[0].is_dir
          and (infos[0].path == rel_path)
      ):
          return []
      return sorted(infos, key=lambda f: f.path)
  
imports: import os
  import posixpath
  import re
  import urllib.parse
  from typing import List
  import requests
  from mlflow.azure.client import patch_adls_file_upload, patch_adls_flush, put_adls_file_creation
  from mlflow.entities import FileInfo
  from mlflow.environment_variables import MLFLOW_ARTIFACT_UPLOAD_DOWNLOAD_TIMEOUT, MLFLOW_ENABLE_MULTIPART_UPLOAD, MLFLOW_MULTIPART_UPLOAD_CHUNK_SIZE
  from mlflow.exceptions import MlflowException
  from mlflow.protos.databricks_artifacts_pb2 import ArtifactCredentialInfo
  from mlflow.store.artifact.cloud_artifact_repo import CloudArtifactRepository, _complete_futures, _compute_num_chunks
label_desc: Use image node_id 3 for calling the AzureDataLakeArtifactRepository obj's underlying member method code with example usage: obj.list_artifacts(path) and returns: sorted, list