| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Responsefrom pip._internal.utils.typing import MYPY_CHECK_RUNNINGif MYPY_CHECK_RUNNING:    from typing import Iteratordef response_chunks(response, chunk_size=CONTENT_CHUNK_SIZE):    # type: (Response, int) -> Iterator[bytes]    """Given a requests Response, provide the data chunks.    """    try:        # Special case for urllib3.        for chunk in response.raw.stream(            chunk_size,            # We use decode_content=False here because we don't            # want urllib3 to mess with the raw bytes we get            # from the server. If we decompress inside of            # urllib3 then we cannot verify the checksum            # because the checksum will be of the compressed            # file. This breakage will only occur if the            # server adds a Content-Encoding header, which            # depends on how the server was configured:            # - Some servers will notice that the file isn't a            #   compressible file and will leave the file alone            #   and with an empty Content-Encoding            # - Some servers will notice that the file is            #   already compressed and will leave the file            #   alone and will add a Content-Encoding: gzip            #   header            # - Some servers won't notice anything at all and            #   will take a file that's already been compressed            #   and compress it again and set the            #   Content-Encoding: gzip header            #            # By setting this not to decode automatically we            # hope to eliminate problems with the second case.            decode_content=False,        ):            yield chunk    except AttributeError:        # Standard file-like object.        while True:            chunk = response.raw.read(chunk_size)            if not chunk:                break            yield chunk
 |