class_docstr: FileCollectionController inherits from BaseController and manages business logic related to the
  file system.
  
  Methods
  -------
  create(paths)
      create a file collection within the project
  list()
      list all file collections within the project
  delete(id)
      delete the specified file collection from the project
class_docstr_tok: ["FileCollectionController","inherits","from","BaseController","and","manages","business","logic","related","to","the","file","system",".","Methods","--","--","--","-","create","(","paths",")","create","a","file","collection","within","the","project","list","(",")","list","all","file","collections","within","the","project","delete","(","id",")","delete","the","specified","file","collection","from","the","project"]
docstr: Create a FileCollection
  
  Parameters
  ----------
  paths : list
      list of absolute or relative filepaths and/or dirpaths to collect with destination names
      (e.g. "/path/to/file>hello", "/path/to/file2", "/path/to/dir>newdir")
  
  Returns
  -------
  FileCollection
      an object representing the collection of files
  
  Raises
  ------
  RequiredArgumentMissing
      if any arguments needed for FileCollection are not provided
docstr_tok: ["Create","a","FileCollection","Parameters","--","--","--","--","--","paths",":","list","list","of","absolute","or","relative","filepaths","and\/or","dirpaths","to","collect","with","destination","names","(","e.g",".","``","\/path\/to\/file",">","hello","''",",","``","\/path\/to\/file2","''",",","``","\/path\/to\/dir",">","newdir","''",")","Returns","--","--","--","-","FileCollection","an","object","representing","the","collection","of","files","Raises","--","--","--","RequiredArgumentMissing","if","any","arguments","needed","for","FileCollection","are","not","provided"]
code: def create(self, paths):
      """Create a FileCollection
  
      Parameters
      ----------
      paths : list
          list of absolute or relative filepaths and/or dirpaths to collect with destination names
          (e.g. "/path/to/file>hello", "/path/to/file2", "/path/to/dir>newdir")
  
      Returns
      -------
      FileCollection
          an object representing the collection of files
  
      Raises
      ------
      RequiredArgumentMissing
          if any arguments needed for FileCollection are not provided
      """
      # TODO: Validate Inputs
  
      create_dict = {
          "model_id": self.model.id,
      }
  
      # Populate a path list from the user inputs compatible with the file driver
  
      # a. add in user given paths as is if they exist (already within paths)
      # b. if there are NO paths found from input AND project files directory
      if not paths and os.path.isdir(self.file_driver.files_directory):
          paths.extend(
              [
                  os.path.join(
                      self.file_driver.files_directory, filepath
                  )
                  for filepath in list_all_filepaths(
                      self.file_driver.files_directory
                  )
              ]
          )
  
      # Parse paths to create collection and add in filehash
      (
          create_dict["filehash"],
          create_dict["file_path_map"],
          create_dict["directory_path_map"],
      ) = self.file_driver.create_collection(paths)
      # If file collection with filehash exists, return it
      results = self.dal.file_collection.query(
          {"filehash": create_dict["filehash"]}
      )
      if results:
          return results[0]
  
      # Add in path of the collection created above
      create_dict[
          "path"
      ] = self.file_driver.get_relative_collection_path(
          create_dict["filehash"]
      )
  
      # Add in driver_type of the relative collection path
      create_dict["driver_type"] = self.file_driver.type
  
      # Create file collection and return
      return self.dal.file_collection.create(
          FileCollection(create_dict)
      )
  
file_path: datmo/datmo/core/controller/file/file_collection.py
imports: import os
  import shutil
  from datmo.core.util.i18n import get
  from datmo.core.controller.base import BaseController
  from datmo.core.util.misc_functions import list_all_filepaths, get_datmo_temp_path
  from datmo.core.entity.file_collection import FileCollection
  from datmo.core.util.exceptions import PathDoesNotExist, EnvironmentInitFailed, FileNotInitialized, UnstagedChanges
label_desc: Use image node_id 3 for calling the FileCollectionController obj's underlying member method code with example usage: obj.create(paths) and returns: self, results