code: def get_url_rev_and_auth(self, url):
          # type: (str) -> Tuple[str, Optional[str], AuthInfo]
          
          scheme, netloc, path, query, frag = urllib_parse.urlsplit(url)
          if '+' not in scheme:
              raise ValueError(
                  "Sorry, {!r} is a malformed VCS url. "
                  "The format is <vcs>+<protocol>://<url>, "
                  "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp".format(url)
              )
          # Remove the vcs prefix.
          scheme = scheme.split('+', 1)[1]
          netloc, user_pass = self.get_netloc_and_auth(netloc, scheme)
          rev = None
          if '@' in path:
              path, rev = path.rsplit('@', 1)
          url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
          return url, rev, user_pass
docs: Parse the repository URL to use, and return the URL, revision,
          and auth info to use.
  
          Returns: (url, rev, (username, password)).