mirror of https://github.com/pypa/pip
Merge pull request #7095 from Nta1e/b7090
Move PipXmlrpcTransport to network.xmlrpc
This commit is contained in:
commit
530fa337a9
|
@ -0,0 +1,2 @@
|
||||||
|
Move PipXmlrpcTransport from pip._internal.download to pip._internal.network.xmlrpc
|
||||||
|
and move associated tests to tests.unit.test_network_xmlrpc
|
|
@ -14,9 +14,9 @@ from pip._vendor.six.moves import xmlrpc_client # type: ignore
|
||||||
from pip._internal.cli.base_command import Command
|
from pip._internal.cli.base_command import Command
|
||||||
from pip._internal.cli.req_command import SessionCommandMixin
|
from pip._internal.cli.req_command import SessionCommandMixin
|
||||||
from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS
|
from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS
|
||||||
from pip._internal.download import PipXmlrpcTransport
|
|
||||||
from pip._internal.exceptions import CommandError
|
from pip._internal.exceptions import CommandError
|
||||||
from pip._internal.models.index import PyPI
|
from pip._internal.models.index import PyPI
|
||||||
|
from pip._internal.network.xmlrpc import PipXmlrpcTransport
|
||||||
from pip._internal.utils.compat import get_terminal_size
|
from pip._internal.utils.compat import get_terminal_size
|
||||||
from pip._internal.utils.logging import indent_log
|
from pip._internal.utils.logging import indent_log
|
||||||
from pip._internal.utils.misc import write_output
|
from pip._internal.utils.misc import write_output
|
||||||
|
|
|
@ -11,9 +11,6 @@ import sys
|
||||||
from pip._vendor import requests
|
from pip._vendor import requests
|
||||||
from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response
|
from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response
|
||||||
from pip._vendor.six import PY2
|
from pip._vendor.six import PY2
|
||||||
# NOTE: XMLRPC Client is not annotated in typeshed as on 2017-07-17, which is
|
|
||||||
# why we ignore the type on this import
|
|
||||||
from pip._vendor.six.moves import xmlrpc_client # type: ignore
|
|
||||||
from pip._vendor.six.moves.urllib import parse as urllib_parse
|
from pip._vendor.six.moves.urllib import parse as urllib_parse
|
||||||
|
|
||||||
from pip._internal.exceptions import HashMismatch, InstallationError
|
from pip._internal.exceptions import HashMismatch, InstallationError
|
||||||
|
@ -420,35 +417,6 @@ def unpack_file_url(
|
||||||
_copy_file(from_path, download_dir, link)
|
_copy_file(from_path, download_dir, link)
|
||||||
|
|
||||||
|
|
||||||
class PipXmlrpcTransport(xmlrpc_client.Transport):
|
|
||||||
"""Provide a `xmlrpclib.Transport` implementation via a `PipSession`
|
|
||||||
object.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, index_url, session, use_datetime=False):
|
|
||||||
xmlrpc_client.Transport.__init__(self, use_datetime)
|
|
||||||
index_parts = urllib_parse.urlparse(index_url)
|
|
||||||
self._scheme = index_parts.scheme
|
|
||||||
self._session = session
|
|
||||||
|
|
||||||
def request(self, host, handler, request_body, verbose=False):
|
|
||||||
parts = (self._scheme, host, handler, None, None, None)
|
|
||||||
url = urllib_parse.urlunparse(parts)
|
|
||||||
try:
|
|
||||||
headers = {'Content-Type': 'text/xml'}
|
|
||||||
response = self._session.post(url, data=request_body,
|
|
||||||
headers=headers, stream=True)
|
|
||||||
response.raise_for_status()
|
|
||||||
self.verbose = verbose
|
|
||||||
return self.parse_response(response.raw)
|
|
||||||
except requests.HTTPError as exc:
|
|
||||||
logger.critical(
|
|
||||||
"HTTP error %s while getting %s",
|
|
||||||
exc.response.status_code, url,
|
|
||||||
)
|
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
def unpack_url(
|
def unpack_url(
|
||||||
link, # type: Link
|
link, # type: Link
|
||||||
location, # type: str
|
location, # type: str
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
"""xmlrpclib.Transport implementation
|
||||||
|
"""
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from pip._vendor import requests
|
||||||
|
# NOTE: XMLRPC Client is not annotated in typeshed as on 2017-07-17, which is
|
||||||
|
# why we ignore the type on this import
|
||||||
|
from pip._vendor.six.moves import xmlrpc_client # type: ignore
|
||||||
|
from pip._vendor.six.moves.urllib import parse as urllib_parse
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class PipXmlrpcTransport(xmlrpc_client.Transport):
|
||||||
|
"""Provide a `xmlrpclib.Transport` implementation via a `PipSession`
|
||||||
|
object.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, index_url, session, use_datetime=False):
|
||||||
|
xmlrpc_client.Transport.__init__(self, use_datetime)
|
||||||
|
index_parts = urllib_parse.urlparse(index_url)
|
||||||
|
self._scheme = index_parts.scheme
|
||||||
|
self._session = session
|
||||||
|
|
||||||
|
def request(self, host, handler, request_body, verbose=False):
|
||||||
|
parts = (self._scheme, host, handler, None, None, None)
|
||||||
|
url = urllib_parse.urlunparse(parts)
|
||||||
|
try:
|
||||||
|
headers = {'Content-Type': 'text/xml'}
|
||||||
|
response = self._session.post(url, data=request_body,
|
||||||
|
headers=headers, stream=True)
|
||||||
|
response.raise_for_status()
|
||||||
|
self.verbose = verbose
|
||||||
|
return self.parse_response(response.raw)
|
||||||
|
except requests.HTTPError as exc:
|
||||||
|
logger.critical(
|
||||||
|
"HTTP error %s while getting %s",
|
||||||
|
exc.response.status_code, url,
|
||||||
|
)
|
||||||
|
raise
|
Loading…
Reference in New Issue