class_docstr: Stores artifacts as files in a remote directory, via ftp.
class_docstr_tok: ["Stores","artifacts","as","files","in","a","remote","directory",",","via","ftp","."]
code: def __init__(self, artifact_uri):
      self.uri = artifact_uri
      parsed = urllib.parse.urlparse(artifact_uri)
      self.config = {
          "host": parsed.hostname,
          "port": 21 if parsed.port is None else parsed.port,
          "username": parsed.username,
          "password": parsed.password,
      }
      self.path = parsed.path or "/"
  
      if self.config["host"] is None:
          self.config["host"] = "localhost"
      if self.config["password"] is None:
          self.config["password"] = ""
      else:
          self.config["password"] = unquote(parsed.password)
  
      super().__init__(artifact_uri)
  
imports: import ftplib
  import os
  import posixpath
  import urllib.parse
  from contextlib import contextmanager
  from ftplib import FTP
  from urllib.parse import unquote
  from mlflow.entities.file_info import FileInfo
  from mlflow.exceptions import MlflowException
  from mlflow.store.artifact.artifact_repo import ArtifactRepository
  from mlflow.utils.file_utils import relative_path_to_artifact_path
label_desc: Use image node_id 1 to create a new FTPArtifactRepository object from inherited base classes: ArtifactRepository with example: obj = FTPArtifactRepository(artifact_uri)