| |
| |
| |
| from __future__ import annotations |
|
|
| from typing import TYPE_CHECKING, Collection |
|
|
| from pip._vendor.cachecontrol.adapter import CacheControlAdapter |
| from pip._vendor.cachecontrol.cache import DictCache |
|
|
| if TYPE_CHECKING: |
| from pip._vendor import requests |
|
|
| from pip._vendor.cachecontrol.cache import BaseCache |
| from pip._vendor.cachecontrol.controller import CacheController |
| from pip._vendor.cachecontrol.heuristics import BaseHeuristic |
| from pip._vendor.cachecontrol.serialize import Serializer |
|
|
|
|
| def CacheControl( |
| sess: requests.Session, |
| cache: BaseCache | None = None, |
| cache_etags: bool = True, |
| serializer: Serializer | None = None, |
| heuristic: BaseHeuristic | None = None, |
| controller_class: type[CacheController] | None = None, |
| adapter_class: type[CacheControlAdapter] | None = None, |
| cacheable_methods: Collection[str] | None = None, |
| ) -> requests.Session: |
| cache = DictCache() if cache is None else cache |
| adapter_class = adapter_class or CacheControlAdapter |
| adapter = adapter_class( |
| cache, |
| cache_etags=cache_etags, |
| serializer=serializer, |
| heuristic=heuristic, |
| controller_class=controller_class, |
| cacheable_methods=cacheable_methods, |
| ) |
| sess.mount("http://", adapter) |
| sess.mount("https://", adapter) |
|
|
| return sess |
|
|