コード例 #1
0
ファイル: link.py プロジェクト: panda002/Python-Beginner
 def filename(self):
     # type: () -> str
     _, netloc, path, _, _ = urllib_parse.urlsplit(self.url)
     name = posixpath.basename(path.rstrip('/')) or netloc
     name = urllib_parse.unquote(name)
     assert name, ('URL %r produced no filename' % self.url)
     return name
コード例 #2
0
ファイル: misc.py プロジェクト: panda002/Python-Beginner
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
コード例 #3
0
ファイル: index.py プロジェクト: panda002/Python-Beginner
    def __init__(self, url, file_storage_domain):
        # type: (str, str) -> None
        super(PackageIndex, self).__init__()
        self.url = url
        self.netloc = urllib_parse.urlsplit(url).netloc
        self.simple_url = self._url_for_path('simple')
        self.pypi_url = self._url_for_path('pypi')

        # This is part of a temporary hack used to block installs of PyPI
        # packages which depend on external urls only necessary until PyPI can
        # block such packages themselves
        self.file_storage_domain = file_storage_domain
コード例 #4
0
ファイル: index.py プロジェクト: panda002/Python-Beginner
def _ensure_html_response(url, session):
    # type: (str, PipSession) -> None
    """Send a HEAD request to the URL, and ensure the response contains HTML.

    Raises `_NotHTTP` if the URL is not available for a HEAD request, or
    `_NotHTML` if the content type is not text/html.
    """
    scheme, netloc, path, query, fragment = urllib_parse.urlsplit(url)
    if scheme not in {'http', 'https'}:
        raise _NotHTTP()

    resp = session.head(url, allow_redirects=True)
    resp.raise_for_status()

    _ensure_html_header(resp)
コード例 #5
0
def url_to_path(url):
    # type: (str) -> str
    """
    Convert a file: URL to a path.
    """
    assert url.startswith('file:'), (
        "You can only turn file: urls into filenames (not %r)" % url)

    _, netloc, path, _, _ = urllib_parse.urlsplit(url)

    # if we have a UNC path, prepend UNC share notation
    if netloc:
        netloc = '\\\\' + netloc

    path = urllib_request.url2pathname(netloc + path)
    return path
コード例 #6
0
    def get_url_rev_and_auth(self, 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 = 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
コード例 #7
0
ファイル: link.py プロジェクト: panda002/Python-Beginner
 def url_without_fragment(self):
     # type: () -> str
     scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url)
     return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
コード例 #8
0
ファイル: link.py プロジェクト: panda002/Python-Beginner
 def path(self):
     # type: () -> str
     return urllib_parse.unquote(urllib_parse.urlsplit(self.url)[2])
コード例 #9
0
ファイル: link.py プロジェクト: panda002/Python-Beginner
 def netloc(self):
     # type: () -> str
     return urllib_parse.urlsplit(self.url)[1]
コード例 #10
0
ファイル: link.py プロジェクト: panda002/Python-Beginner
 def scheme(self):
     # type: () -> str
     return urllib_parse.urlsplit(self.url)[0]