docs: def workspace_from_url(self, mets_url, dst_dir=None, clobber_mets=False, mets_basename=None, download=False, baseurl=None):
          """
          Create a workspace from a METS by URL.
  
          Sets the mets.xml file
  
          Arguments:
              mets_url (string): Source mets URL
              dst_dir (string, None): Target directory for the workspace
              clobber_mets (boolean, False): Whether to overwrite existing mets.xml. By default existing mets.xml will raise an exception.
              download (boolean, False): Whether to download all the files
              baseurl (string, None): Base URL for resolving relative file locations
  
          Returns:
              Workspace
          """
          if dst_dir and not dst_dir.startswith('/'):
              dst_dir = abspath(dst_dir)
  
          if mets_url is None:
              if baseurl is None:
                  raise Exception("Must pass mets_url and/or baseurl to workspace_from_url")
              else:
                  mets_url = 'file://%s/%s' % (baseurl, mets_basename if mets_basename else 'mets.xml')
          if baseurl is None:
              baseurl = mets_url.rsplit('/', 1)[0]
          log.debug("workspace_from_url\nmets_url='%s'\nbaseurl='%s'\ndst_dir='%s'", mets_url, baseurl, dst_dir)
  
          # resolve to absolute
          if '://' not in mets_url:
              mets_url = 'file://%s' % abspath(mets_url)
  
          if dst_dir is None:
              # if mets_url is a file-url assume working directory is source directory
              if mets_url.startswith('file://'):
                  # if dst_dir was not given and mets_url is a file assume that
                  # dst_dir should be the directory where the mets.xml resides
                  dst_dir = dirname(mets_url[len('file://'):])
              else:
                  dst_dir = tempfile.mkdtemp(prefix=TMP_PREFIX)
                  log.debug("Creating workspace '%s' for METS @ <%s>", dst_dir, mets_url)
  
          # if mets_basename is not given, use the last URL segment of the mets_url
          if mets_basename is None:
              mets_basename = mets_url \
                  .rsplit('/', 1)[-1] \
                  .split('?')[0] \
                  .split('#')[0]
  
          dst_mets = join(dst_dir, mets_basename)
          log.debug("Copying mets url '%s' to '%s'", mets_url, dst_mets)
          if 'file://' + dst_mets == mets_url:
              log.debug("Target and source mets are identical")
          else:
              if exists(dst_mets) and not clobber_mets:
                  raise Exception("File '%s' already exists but clobber_mets is false" % dst_mets)
              else:
                  self.download_to_directory(dst_dir, mets_url, basename=mets_basename)
  
          workspace = Workspace(self, dst_dir, mets_basename=mets_basename, baseurl=baseurl)
  
          if download:
              for f in workspace.mets.find_files():
                  workspace.download_file(f)
  
          return workspace