3
3
import os
4
4
import re
5
5
import time
6
- from typing import Any ,cast ,Dict ,List ,Optional ,Tuple ,TYPE_CHECKING ,Union
6
+ from typing import Any ,cast ,Dict ,List ,Optional ,Tuple ,Type , TYPE_CHECKING ,Union
7
7
from urllib import parse
8
8
9
9
import requests
14
14
import gitlab .config
15
15
import gitlab .const
16
16
import gitlab .exceptions
17
- from gitlab import utils
17
+ from gitlab import http_backends , utils
18
18
19
19
REDIRECT_MSG = (
20
20
"python-gitlab detected a {status_code} ({reason!r}) redirection. You must update "
32
32
33
33
34
34
class Gitlab :
35
+
35
36
"""Represents a GitLab server connection.
36
37
37
38
Args:
@@ -53,6 +54,10 @@ class Gitlab:
53
54
or 52x responses. Defaults to False.
54
55
keep_base_url: keep user-provided base URL for pagination if it
55
56
differs from response headers
57
+
58
+ Keyward Args:
59
+ requests.Session session: Http Requests Session
60
+ RequestsBackend http_backend: Backend that will be used to make http requests
56
61
"""
57
62
58
63
def __init__ (
@@ -66,15 +71,14 @@ def __init__(
66
71
http_password :Optional [str ]= None ,
67
72
timeout :Optional [float ]= None ,
68
73
api_version :str = "4" ,
69
- session :Optional [requests .Session ]= None ,
70
74
per_page :Optional [int ]= None ,
71
75
pagination :Optional [str ]= None ,
72
76
order_by :Optional [str ]= None ,
73
77
user_agent :str = gitlab .const .USER_AGENT ,
74
78
retry_transient_errors :bool = False ,
75
79
keep_base_url :bool = False ,
80
+ ** kwargs :Any ,
76
81
)-> None :
77
-
78
82
self ._api_version = str (api_version )
79
83
self ._server_version :Optional [str ]= None
80
84
self ._server_revision :Optional [str ]= None
@@ -98,7 +102,11 @@ def __init__(
98
102
self ._set_auth_info ()
99
103
100
104
#: Create a session object for requests
101
- self .session = session or requests .Session ()
105
+ http_backend :Type [http_backends .DefaultBackend ]= kwargs .pop (
106
+ "http_backend" ,http_backends .DefaultBackend
107
+ )
108
+ self .http_backend = http_backend (** kwargs )
109
+ self .session = self .http_backend .client
102
110
103
111
self .per_page = per_page
104
112
self .pagination = pagination