33import os
44import re
55import 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
77from urllib import parse
88
99import requests
1414import gitlab .config
1515import gitlab .const
1616import gitlab .exceptions
17- from gitlab import utils
17+ from gitlab import http_backends , utils
1818
1919REDIRECT_MSG = (
2020 "python-gitlab detected a {status_code} ({reason!r}) redirection. You must update "
3232
3333
3434class Gitlab :
35+
3536 """Represents a GitLab server connection.
3637
3738 Args:
@@ -53,6 +54,10 @@ class Gitlab:
5354 or 52x responses. Defaults to False.
5455 keep_base_url: keep user-provided base URL for pagination if it
5556 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
5661 """
5762
5863 def __init__ (
@@ -66,15 +71,14 @@ def __init__(
6671 http_password : Optional [str ] = None ,
6772 timeout : Optional [float ] = None ,
6873 api_version : str = "4" ,
69- session : Optional [requests .Session ] = None ,
7074 per_page : Optional [int ] = None ,
7175 pagination : Optional [str ] = None ,
7276 order_by : Optional [str ] = None ,
7377 user_agent : str = gitlab .const .USER_AGENT ,
7478 retry_transient_errors : bool = False ,
7579 keep_base_url : bool = False ,
80+ ** kwargs : Any ,
7681 ) -> None :
77-
7882 self ._api_version = str (api_version )
7983 self ._server_version : Optional [str ] = None
8084 self ._server_revision : Optional [str ] = None
@@ -98,7 +102,11 @@ def __init__(
98102 self ._set_auth_info ()
99103
100104 #: 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
102110
103111 self .per_page = per_page
104112 self .pagination = pagination
0 commit comments