Example #1
0
def _transform_url(url, transform_netloc):
    purl = urllib_parse.urlsplit(url)
    netloc = transform_netloc(purl.netloc)
    # stripped url
    url_pieces = (purl.scheme, netloc, purl.path, purl.query, purl.fragment)
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl
    def get_url_rev_and_auth(cls, url):
        # type: (str) -> Tuple[str, Optional[str], AuthInfo]
        """
        Parse the repository URL to use, and return the URL, revision,
        and auth info to use.

        Returns: (url, rev, (username, password)).
        """
        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 = cls.get_netloc_and_auth(netloc, scheme)
        rev = None
        if "@" in path:
            path, rev = path.rsplit("@", 1)
            if not rev:
                raise InstallationError(
                    "The URL {!r} has an empty revision (after @) "
                    "which is not supported. Include a revision after @ "
                    "or remove @ from the URL.".format(url)
                )
        url = urllib_parse.urlunsplit((scheme, netloc, path, query, ""))
        return url, rev, user_pass
Example #3
0
 def normalize(self):
     parsed = urllib_parse.urlsplit(self.url)
     if parsed.scheme == 'file':
         path = urllib_request.url2pathname(parsed.path)
         path = normalize_path(path)
         path = urllib_request.pathname2url(path)
         self.url = urllib_parse.urlunsplit(
             (parsed.scheme, parsed.netloc, path, parsed.query,
              parsed.fragment))
Example #4
0
 def normalize(self):
     parsed = urllib_parse.urlsplit(self.url)
     if parsed.scheme == 'file':
         path = urllib_request.url2pathname(parsed.path)
         path = normalize_path(path)
         path = urllib_request.pathname2url(path)
         self.url = urllib_parse.urlunsplit(
             (parsed.scheme, parsed.netloc,
              path, parsed.query, parsed.fragment))
Example #5
0
File: misc.py Project: pfmoore/pip
def _transform_url(url, transform_netloc):
    purl = urllib_parse.urlsplit(url)
    netloc = transform_netloc(purl.netloc)
    # stripped url
    url_pieces = (
        purl.scheme, netloc, purl.path, purl.query, purl.fragment
    )
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl
 def redacted_url(self):
     # type: () -> str
     """url with user:password part removed unless it is formed with
     environment variables as specified in PEP 610, or it is ``git``
     in the case of a git URL.
     """
     purl = urllib_parse.urlsplit(self.url)
     netloc = self._remove_auth_from_netloc(purl.netloc)
     return urllib_parse.urlunsplit(
         (purl.scheme, netloc, purl.path, purl.query, purl.fragment))
Example #7
0
def remove_auth_from_url(url):
    # Return a copy of url with 'username:password@' removed.
    # username/pass params are passed to subversion through flags
    # and are not recognized in the url.

    # parsed url
    purl = urllib_parse.urlsplit(url)
    netloc, user_pass = split_auth_from_netloc(purl.netloc)

    # stripped url
    url_pieces = (purl.scheme, netloc, purl.path, purl.query, purl.fragment)
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl
Example #8
0
def remove_auth_from_url(url):
    # Return a copy of url with 'username:password@' removed.
    # username/pass params are passed to subversion through flags
    # and are not recognized in the url.

    # parsed url
    purl = urllib_parse.urlsplit(url)
    netloc, user_pass = split_auth_from_netloc(purl.netloc)

    # stripped url
    url_pieces = (
        purl.scheme, netloc, purl.path, purl.query, purl.fragment
    )
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl
Example #9
0
 def get_url_rev(self):
     """
     Returns the correct repository URL and revision by parsing the given
     repository URL
     """
     error_message = ("Sorry, '%s' is a malformed VCS url. "
                      "The format is <vcs>+<protocol>://<url>, "
                      "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp")
     assert '+' in self.url, error_message % self.url
     url = self.url.split('+', 1)[1]
     scheme, netloc, path, query, frag = urllib_parse.urlsplit(url)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
     url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev
Example #10
0
def _transform_url(url, transform_netloc):
    """Transform and replace netloc in a url.

    transform_netloc is a function taking the netloc and returning a
    tuple. The first element of this tuple is the new netloc. The
    entire tuple is returned.

    Returns a tuple containing the transformed url as item 0 and the
    original tuple returned by transform_netloc as item 1.
    """
    purl = urllib_parse.urlsplit(url)
    netloc_tuple = transform_netloc(purl.netloc)
    # stripped url
    url_pieces = (purl.scheme, netloc_tuple[0], purl.path, purl.query,
                  purl.fragment)
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl, netloc_tuple
Example #11
0
File: misc.py Project: pypa/pip
def _transform_url(url, transform_netloc):
    """Transform and replace netloc in a url.

    transform_netloc is a function taking the netloc and returning a
    tuple. The first element of this tuple is the new netloc. The
    entire tuple is returned.

    Returns a tuple containing the transformed url as item 0 and the
    original tuple returned by transform_netloc as item 1.
    """
    purl = urllib_parse.urlsplit(url)
    netloc_tuple = transform_netloc(purl.netloc)
    # stripped url
    url_pieces = (
        purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment
    )
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl, netloc_tuple
Example #12
0
 def get_url_rev(self):
     """
     Returns the correct repository URL and revision by parsing the given
     repository URL
     """
     error_message = (
         "Sorry, '%s' is a malformed VCS url. "
         "The format is <vcs>+<protocol>://<url>, "
         "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp"
     )
     assert '+' in self.url, error_message % self.url
     url = self.url.split('+', 1)[1]
     scheme, netloc, path, query, frag = urllib_parse.urlsplit(url)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
     url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev
Example #13
0
    def get_url_rev_and_auth(self, url):
        """
        Parse the repository URL to use, and return the URL, revision,
        and auth info to use.

        Returns: (url, rev, (username, password)).
        """
        error_message = ("Sorry, '%s' is a malformed VCS url. "
                         "The format is <vcs>+<protocol>://<url>, "
                         "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp")
        assert '+' in url, error_message % url
        url = url.split('+', 1)[1]
        scheme, netloc, path, query, frag = urllib_parse.urlsplit(url)
        netloc, user_pass = self.get_netloc_and_auth(netloc)
        rev = None
        if '@' in path:
            path, rev = path.rsplit('@', 1)
        url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
        return url, rev, user_pass
Example #14
0
    def remove_auth_from_url(url):
        # Return a copy of url with 'username:password@' removed.
        # username/pass params are passed to subversion through flags
        # and are not recognized in the url.

        # parsed url
        purl = urllib_parse.urlsplit(url)
        # Do not remove auth for svn+ssh
        # (svn --username is not recognized for that scheme)
        if purl[0] == 'svn+ssh':
            surl = url
        else:
            stripped_netloc = \
                purl.netloc.split('@')[-1]

            # stripped url
            url_pieces = (purl.scheme, stripped_netloc, purl.path, purl.query,
                          purl.fragment)
            surl = urllib_parse.urlunsplit(url_pieces)
        return surl
Example #15
0
    def get_url_rev_and_auth(self, url):
        """
        Parse the repository URL to use, and return the URL, revision,
        and auth info to use.

        Returns: (url, rev, (username, password)).
        """
        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
Example #16
0
    def get_url_rev_and_auth(self, url):
        """
        Parse the repository URL to use, and return the URL, revision,
        and auth info to use.

        Returns: (url, rev, (username, password)).
        """
        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
Example #17
0
 def get_url_rev_and_auth(cls, url):
     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 = cls.get_netloc_and_auth(netloc, scheme)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
         if not rev:
             raise InstallationError(
                 "The URL {!r} has an empty revision (after @) "
                 "which is not supported. Include a revision after @ "
                 "or remove @ from the URL.".format(url)
             )
     url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev, user_pass
Example #18
0
        """
        Returns the correct repository URL and revision by parsing the given
        repository URL
        """
        error_message = (
            "Sorry, '%s' is a malformed VCS url. "
            "The format is <vcs>+<protocol>://<url>, "
            "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp"
        )
        assert '+' in self.url, error_message % self.url
        url = self.url.split('+', 1)[1]
        scheme, netloc, path, query, frag = urllib_parse.urlsplit(url)
        rev = None
        if '@' in path:
            path, rev = path.rsplit('@', 1)
        url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
        return url, rev

    def get_info(self, location):
        """
        Returns (url, revision), where both are strings
        """
        assert not location.rstrip('/').endswith(self.dirname), \
            'Bad directory: %s' % location
        return self.get_url(location), self.get_revision(location)

    def normalize_url(self, url):
        """
        Normalize a URL for comparison by unquoting it and removing any
        trailing slash.
        """
                "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 = cls.get_netloc_and_auth(netloc, scheme)
        rev = None
        if '@' in path:
            path, rev = path.rsplit('@', 1)
            if not rev:
                raise InstallationError(
                    "The URL {!r} has an empty revision (after @) "
                    "which is not supported. Include a revision after @ "
                    "or remove @ from the URL.".format(url)
                )
        url = urllib_parse.urlunsplit((scheme, netloc, path, query, ''))
        return url, rev, user_pass

    @staticmethod
    def make_rev_args(username, password):
        # type: (Optional[str], Optional[HiddenText]) -> CommandArgs
        """
        Return the RevOptions "extra arguments" to use in obtain().
        """
        return []

    def get_url_rev_options(self, url):
        # type: (HiddenText) -> Tuple[HiddenText, RevOptions]
        """
        Return the URL and RevOptions object to use in obtain() and in
        some cases export(), as a tuple (url, rev_options).
Example #20
0
 def url_without_fragment(self):
     # type: () -> str
     scheme, netloc, path, query, fragment = self._parsed_url
     return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
Example #21
0
 def url_without_fragment(self):
     scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url)
     return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
Example #22
0
File: index.py Project: rwols/pip
 def url_without_fragment(self):
     scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url)
     return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
Example #23
0
    """Transform and replace netloc in a url.

    transform_netloc is a function taking the netloc and returning a
    tuple. The first element of this tuple is the new netloc. The
    entire tuple is returned.

    Returns a tuple containing the transformed url as item 0 and the
    original tuple returned by transform_netloc as item 1.
    """
    purl = urllib_parse.urlsplit(url)
    netloc_tuple = transform_netloc(purl.netloc)
    # stripped url
    url_pieces = (
        purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment
    )
    surl = urllib_parse.urlunsplit(url_pieces)
    return surl, netloc_tuple


def _get_netloc(netloc):
    return split_auth_from_netloc(netloc)


def _redact_netloc(netloc):
    return (redact_netloc(netloc),)


def split_auth_netloc_from_url(url):
    # type: (str) -> Tuple[str, str, Tuple[str, str]]
    """
    Parse a url into separate netloc, auth, and url with no auth.