|
2 | 2 |
|
3 | 3 | import os |
4 | 4 | import re |
| 5 | +import sys |
5 | 6 | import time |
6 | 7 | from typing import Any, cast, Dict, List, Optional, Tuple, TYPE_CHECKING, Union |
7 | 8 | from urllib import parse |
8 | 9 |
|
| 10 | +import httpx |
9 | 11 | import requests |
10 | 12 | import requests.utils |
11 | 13 | from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore |
|
16 | 18 | import gitlab.exceptions |
17 | 19 | from gitlab import utils |
18 | 20 |
|
| 21 | +from .clients.httpx_client import Httpx_Client |
| 22 | +from .clients.requests_client import Requests_Client |
| 23 | + |
| 24 | +if sys.version_info >= (3, 8): |
| 25 | + from typing import Literal |
| 26 | +else: |
| 27 | + from typing_extensions import Literal |
| 28 | + |
19 | 29 | REDIRECT_MSG = ( |
20 | 30 | "python-gitlab detected a {status_code} ({reason!r}) redirection. You must update " |
21 | 31 | "your GitLab URL to the correct URL to avoid issues. The redirection was from: " |
@@ -66,7 +76,9 @@ def __init__( |
66 | 76 | http_password: Optional[str] = None, |
67 | 77 | timeout: Optional[float] = None, |
68 | 78 | api_version: str = "4", |
| 79 | + http: Optional[Literal["requests", "httpx"]] = "requests", |
69 | 80 | session: Optional[requests.Session] = None, |
| 81 | + client: Optional[httpx.Client] = None, |
70 | 82 | per_page: Optional[int] = None, |
71 | 83 | pagination: Optional[str] = None, |
72 | 84 | order_by: Optional[str] = None, |
@@ -97,8 +109,11 @@ def __init__( |
97 | 109 | self.job_token = job_token |
98 | 110 | self._set_auth_info() |
99 | 111 |
|
100 | | - #: Create a session object for requests |
101 | | - self.session = session or requests.Session() |
| 112 | + if http == "requests": |
| 113 | + self._requests_client = Requests_Client(session=session) |
| 114 | + self.session = self._requests_client.get_session |
| 115 | + elif http == "httpx": |
| 116 | + self._httpx_client = Httpx_Client(client=client) |
102 | 117 |
|
103 | 118 | self.per_page = per_page |
104 | 119 | self.pagination = pagination |
|
0 commit comments