Coverage for src/gitlabracadabra/session.py: 100%

8 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-14 23:10 +0200

1# 

2# Copyright (C) 2019-2025 Mathieu Parent <math.parent@gmail.com> 

3# 

4# This program is free software: you can redistribute it and/or modify 

5# it under the terms of the GNU Lesser General Public License as published by 

6# the Free Software Foundation, either version 3 of the License, or 

7# (at your option) any later version. 

8# 

9# This program is distributed in the hope that it will be useful, 

10# but WITHOUT ANY WARRANTY; without even the implied warranty of 

11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12# GNU Lesser General Public License for more details. 

13# 

14# You should have received a copy of the GNU Lesser General Public License 

15# along with this program. If not, see <http://www.gnu.org/licenses/>. 

16 

17from requests import Session as RequestSession 

18from requests.adapters import HTTPAdapter 

19from urllib3.util.retry import Retry 

20 

21 

22class Session(RequestSession): 

23 """Session with retry backoff.""" 

24 

25 def __init__(self) -> None: 

26 """Instantiate a session.""" 

27 super().__init__() 

28 # retry after 0.0s, 0.2s, 0.4s, 0.8s, 1.6s 

29 # retry at 0.0s, 0.2s, 0.6s, 1.4s, 3.0s 

30 self.mount("http://", HTTPAdapter(max_retries=Retry(total=5, backoff_factor=0.1))) 

31 self.mount("https://", HTTPAdapter(max_retries=Retry(total=5, backoff_factor=0.1)))