code: def move(src, dst):
      
      if os.name != 'nt':
          return shutil.move(src, dst)
  
      if os.path.isdir(dst):
          if _absnorm(src) == _absnorm(dst):
              os.rename(src, dst)
              return
  
          dst = os.path.join(dst, os.path.basename(src.rstrip('/\\')))
          if os.path.exists(dst):
              raise EnvironmentError("Path '{}' already exists".format(dst))
  
      try:
          os.rename(src, dst)
      except OSError:
          # probably different drives
          if os.path.isdir(src):
              if _absnorm(dst + '\\').startswith(_absnorm(src + '\\')):
                  # dst is inside src
                  raise EnvironmentError(
                      "Cannot move a directory '{}' into itself '{}'"
                      .format(src, dst)
                  )
              shutil.copytree(src, dst, symlinks=True)
              rmtree(src)
          else:
              shutil.copy2(src, dst)
              os.unlink(src)
docs: A re-implementation of shutil.move that properly removes the source
      directory on windows when it has read-only files in it and the move is
      between two drives.
  
      This is almost identical to the real shutil.move, except it uses our rmtree
      and skips handling non-windows OSes since the existing one works ok there.