summaryrefslogtreecommitdiff
path: root/test/utils/urlopen.py
blob: fb6597077105a15dc11f266673604a6d7a6f78bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import urllib.request
from contextlib import contextmanager
from typing import Generator, Optional
from urllib.request import OpenerDirector, install_opener


@contextmanager
def context_urlopener(opener: OpenerDirector) -> Generator[OpenerDirector, None, None]:
    old_opener: Optional[OpenerDirector] = urllib.request._opener  # type: ignore[attr-defined]
    try:
        install_opener(opener)
        yield opener
    finally:
        install_opener(old_opener)  # type: ignore[arg-type]