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
5863def __init__ (
@@ -66,15 +71,14 @@ def __init__(
6671http_password :Optional [str ]= None ,
6772timeout :Optional [float ]= None ,
6873api_version :str = "4" ,
69- session :Optional [requests .Session ]= None ,
7074per_page :Optional [int ]= None ,
7175pagination :Optional [str ]= None ,
7276order_by :Optional [str ]= None ,
7377user_agent :str = gitlab .const .USER_AGENT ,
7478retry_transient_errors :bool = False ,
7579keep_base_url :bool = False ,
80+ ** kwargs :Any ,
7681 )-> None :
77-
7882self ._api_version = str (api_version )
7983self ._server_version :Optional [str ]= None
8084self ._server_revision :Optional [str ]= None
@@ -98,7 +102,11 @@ def __init__(
98102self ._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
103111self .per_page = per_page
104112self .pagination = pagination