Skip to content

Commit 6bc689e

Browse files
authored
Use urllib3 for HTTP requests (#53)
* Set log level to INFO * Specialize import * Switch to urllib3
1 parent 719000f commit 6bc689e

File tree

3 files changed

+23
-21
lines changed

3 files changed

+23
-21
lines changed

build_status.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
import tomllib
99
from collections.abc import Iterator
1010

11-
from requests import Session
11+
from urllib3 import PoolManager
1212

1313

14-
def get_languages(requests: Session) -> Iterator[tuple[str, bool]]:
15-
data = requests.get(
16-
'https://raw.githubusercontent.com/'
17-
'python/docsbuild-scripts/refs/heads/main/config.toml',
18-
timeout=10,
19-
).text
20-
config = tomllib.loads(data)
14+
def get_languages(http: PoolManager) -> Iterator[tuple[str, bool]]:
15+
data = http.request(
16+
'GET',
17+
'https://raw.githubusercontent.com/python/docsbuild-scripts/refs/heads/main/config.toml',
18+
).data
19+
config = tomllib.loads(data.decode())
2120
for code, language in config['languages'].items():
2221
language_code = code.lower().replace('_', '-')
2322
in_switcher = language.get('in_prod', config['defaults']['in_prod'])
@@ -26,7 +25,7 @@ def get_languages(requests: Session) -> Iterator[tuple[str, bool]]:
2625

2726
def main() -> None:
2827
languages = {
29-
language: in_switcher for language, in_switcher in get_languages(Session())
28+
language: in_switcher for language, in_switcher in get_languages(PoolManager())
3029
}
3130
print(languages)
3231
for code in ('en', 'pl', 'ar', 'zh-cn', 'id'):

generate.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
# "docutils",
99
# ]
1010
# ///
11+
import logging
1112
import subprocess
1213
from collections.abc import Iterator
1314
from dataclasses import dataclass
1415
from datetime import datetime, timezone
15-
from logging import info
1616
from pathlib import Path
1717
from tempfile import TemporaryDirectory
1818

19-
from requests import Session
2019
from git import Repo
2120
from jinja2 import Template
21+
from urllib3 import PoolManager
2222

2323
import contribute
2424
import build_status
@@ -45,13 +45,13 @@ def get_completion_progress() -> Iterator['LanguageProjectData']:
4545
)
4646
subprocess.run(['make', '-C', cpython_dir / 'Doc', 'venv'], check=True)
4747
subprocess.run(['make', '-C', cpython_dir / 'Doc', 'gettext'], check=True)
48-
languages_built = dict(build_status.get_languages(session := Session()))
48+
languages_built = dict(build_status.get_languages(http := PoolManager()))
4949
for language, repo in get_languages_and_repos(devguide_dir):
5050
built = language.code in languages_built
5151
if repo:
5252
completion, translators_data = get_completion(clones_dir, repo)
5353
visitors_num = (
54-
get_number_of_visitors(language.code, session) if built else 0
54+
get_number_of_visitors(language.code, http) if built else 0
5555
)
5656
else:
5757
completion = 0.0
@@ -84,7 +84,8 @@ class LanguageProjectData:
8484

8585

8686
if __name__ == '__main__':
87-
info(f'starting at {generation_time}')
87+
logging.basicConfig(level=logging.INFO)
88+
logging.info(f'starting at {generation_time}')
8889
template = Template(Path('template.html.jinja').read_text())
8990

9091
output = template.render(

visitors.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
import csv
22
import io
3-
import urllib
3+
import urllib.parse
44
import zipfile
55

6-
from requests import Session
6+
from urllib3 import PoolManager
77

88

9-
def get_number_of_visitors(language: str, requests: Session) -> int:
9+
def get_number_of_visitors(language: str, http: PoolManager) -> int:
1010
params = urllib.parse.urlencode(
1111
{'filters': f'[["contains","event:page",["/{language}/"]]]', 'period': 'all'}
1212
)
13-
r = requests.get(
14-
f'https://plausible.io/docs.python.org/export?{params}', timeout=20
15-
)
13+
r = http.request('GET', f'https://plausible.io/docs.python.org/export?{params}')
1614
with (
17-
zipfile.ZipFile(io.BytesIO(r.content), 'r') as z,
15+
zipfile.ZipFile(io.BytesIO(r.data), 'r') as z,
1816
z.open('visitors.csv') as csv_file,
1917
):
2018
csv_reader = csv.DictReader(io.TextIOWrapper(csv_file))
2119
return sum(int(row['visitors']) for row in csv_reader)
20+
21+
22+
if __name__ == '__main__':
23+
print(get_number_of_visitors('pl', PoolManager()))

0 commit comments

Comments
 (0)