code: def move(self, src, dst):
          
          src_entry = self.find(src)
          if src_entry is None:
              raise ValueError("src path does not exist: %s" % src)
  
          if dst.endswith('/'):
              dst += src_entry.name
  
          if self.exists(dst):
              raise ValueError("dst path already exist: %s" % dst)
  
          if dst == '/' or src == '/':
              raise ValueError("cannot overwrite root dir")
  
          split_path = dst.strip('/').split('/')
          dst_basename = split_path[-1]
          dst_dirname = '/' + '/'.join(split_path[:-1])
  
          # print(dst)
          # print(dst_basename, dst_dirname)
  
          dst_entry = self.find(dst_dirname)
          if dst_entry is None:
              raise ValueError("src path does not exist: %s" % dst_dirname)
  
          if not dst_entry.isdir():
              raise ValueError("dst dirname cannot be stream: %s" % dst_dirname)
  
          # src_entry.parent.remove_child(src_entry)
  
          src_entry.pop()
  
          src_entry.parent = None
          src_entry.name = dst_basename
          dst_entry.add_child(src_entry)
  
          self.children_cache[dst_entry.dir_id][src_entry.name] = src_entry
  
          return src_entry
docs: Moves ``DirEntry`` from src to dst