Skip to content

Commit c24cccc

Browse files
Switch Out requests For httpx
The requests library has been replaced by httpx. It's a drop-in replacement, but provides a better interface for certain things, such as client sessions, and sync/async support. Signed-off-by: Hassan Abouelela <[email protected]>
1 parent ca6fca5 commit c24cccc

File tree

4 files changed

+120
-20
lines changed

4 files changed

+120
-20
lines changed

poetry.lock

Lines changed: 110 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pydis_site/apps/home/tests/test_repodata_helpers.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def setUp(self):
3636
"""Executed before each test method."""
3737
self.home_view = HomeView()
3838

39-
@mock.patch('requests.get', side_effect=mocked_requests_get)
39+
@mock.patch('httpx.get', side_effect=mocked_requests_get)
4040
def test_returns_metadata(self, _: mock.MagicMock):
4141
"""Test if the _get_repo_data helper actually returns what it should."""
4242
metadata = self.home_view._get_repo_data()
@@ -59,7 +59,7 @@ def test_returns_cached_metadata(self):
5959
self.assertIsInstance(metadata[0], RepositoryMetadata)
6060
self.assertIsInstance(str(metadata[0]), str)
6161

62-
@mock.patch('requests.get', side_effect=mocked_requests_get)
62+
@mock.patch('httpx.get', side_effect=mocked_requests_get)
6363
def test_refresh_stale_metadata(self, _: mock.MagicMock):
6464
"""Test if the _get_repo_data helper will refresh when the data is stale."""
6565
repo_data = RepositoryMetadata(
@@ -75,7 +75,7 @@ def test_refresh_stale_metadata(self, _: mock.MagicMock):
7575

7676
self.assertIsInstance(metadata[0], RepositoryMetadata)
7777

78-
@mock.patch('requests.get', side_effect=mocked_requests_get)
78+
@mock.patch('httpx.get', side_effect=mocked_requests_get)
7979
def test_returns_api_data(self, _: mock.MagicMock):
8080
"""Tests if the _get_api_data helper returns what it should."""
8181
api_data = self.home_view._get_api_data()
@@ -86,7 +86,7 @@ def test_returns_api_data(self, _: mock.MagicMock):
8686
self.assertIn(repo, api_data.keys())
8787
self.assertIn("stargazers_count", api_data[repo])
8888

89-
@mock.patch('requests.get', side_effect=mocked_requests_get)
89+
@mock.patch('httpx.get', side_effect=mocked_requests_get)
9090
def test_mocked_requests_get(self, mock_get: mock.MagicMock):
9191
"""Tests if our mocked_requests_get is returning what it should."""
9292
success_data = mock_get(HomeView.github_api)
@@ -98,7 +98,7 @@ def test_mocked_requests_get(self, mock_get: mock.MagicMock):
9898
self.assertIsNotNone(success_data.json_data)
9999
self.assertIsNone(fail_data.json_data)
100100

101-
@mock.patch('requests.get')
101+
@mock.patch('httpx.get')
102102
def test_falls_back_to_database_on_error(self, mock_get: mock.MagicMock):
103103
"""Tests that fallback to the database is performed when we get garbage back."""
104104
repo_data = RepositoryMetadata(
@@ -117,7 +117,7 @@ def test_falls_back_to_database_on_error(self, mock_get: mock.MagicMock):
117117
[item] = metadata
118118
self.assertEqual(item, repo_data)
119119

120-
@mock.patch('requests.get')
120+
@mock.patch('httpx.get')
121121
def test_falls_back_to_database_on_error_without_entries(self, mock_get: mock.MagicMock):
122122
"""Tests that fallback to the database is performed when we get garbage back."""
123123
mock_get.return_value.json.return_value = ['garbage']

pydis_site/apps/home/views/home.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
from typing import Dict, List
33

4-
import requests
4+
import httpx
55
from django.core.handlers.wsgi import WSGIRequest
66
from django.http import HttpResponse
77
from django.shortcuts import render
@@ -56,12 +56,12 @@ def _get_api_data(self) -> Dict[str, Dict[str, str]]:
5656
repo_dict = {}
5757
try:
5858
# Fetch the data from the GitHub API
59-
api_data: List[dict] = requests.get(
59+
api_data: List[dict] = httpx.get(
6060
self.github_api,
6161
headers=self.headers,
6262
timeout=settings.TIMEOUT_PERIOD
6363
).json()
64-
except requests.exceptions.Timeout:
64+
except httpx.TimeoutException:
6565
log.error("Request to fetch GitHub repository metadata for timed out!")
6666
return repo_dict
6767

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ djangorestframework = "~=3.12.0"
1414
psycopg2-binary = "~=2.8.0"
1515
django-simple-bulma = "~=2.4"
1616
whitenoise = "~=5.0"
17-
requests = "~=2.21"
17+
httpx = "~=0.23.0"
1818
pyyaml = "~=5.1"
1919
gunicorn = "~=20.0.4"
2020
sentry-sdk = "~=0.19"

0 commit comments

Comments
 (0)