Skip to content

Commit a67273b

Browse files
Update to Python 3.11
1 parent 4dac60f commit a67273b

10 files changed

+93
-121
lines changed

.github/scripts/generate_tx_config.py

+55-64
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,67 @@
1-
#!/usr/bin/env python3
2-
import glob
3-
import json
4-
import os
1+
"""Please note that this script requires a Transifex API token to run."""
2+
import subprocess
3+
from functools import partial
4+
from pathlib import Path
55
import re
6-
import sys
7-
import urllib.request
86

7+
run = partial(subprocess.run, check=True)
98

10-
def list_resources(token, project):
11-
auth_handler = urllib.request.HTTPBasicAuthHandler()
12-
auth_handler.add_password(
13-
realm="api", uri="https://api.transifex.com/", user="api", passwd=token
9+
10+
def init_project():
11+
run(["tx", "init"])
12+
13+
14+
def add_files(version: str):
15+
run(
16+
[
17+
"tx",
18+
"add",
19+
"remote",
20+
"--file-filter",
21+
"trans/<lang>/<resource_slug>.<ext>",
22+
f"https://www.transifex.com/python-doc/{version}/dashboard/",
23+
]
1424
)
15-
opener = urllib.request.build_opener(auth_handler)
16-
urllib.request.install_opener(opener)
17-
next_ = (
18-
"https://api.transifex.com/organizations/python-doc/projects/"
19-
+ project
20-
+ "/resources/"
25+
26+
27+
FILTER_PATTERN = re.compile(
28+
r"^(?P<prefix>file_filter( *)=( *))(?P<resource>.+)$", re.MULTILINE
29+
)
30+
31+
32+
def name_replacer(match: re.Match[str]):
33+
prefix, resource = match.group("prefix", "resource")
34+
override_prefix = prefix.replace("file_filter", "trans.zh_CN")
35+
override_resource = (
36+
resource.replace("trans/<lang>/", "")
37+
.replace("--", "/")
38+
.replace("glossary_", "glossary")
39+
.replace("_", ".")
2140
)
22-
resources = []
23-
while True:
24-
resp = urllib.request.urlopen(next_)
25-
result = json.loads(resp.read().decode("utf-8"))
26-
resources.extend([i["slug"] for i in result])
27-
link = re.findall('<([^<]*)>; rel="next"', resp.getheader("Link") or "")
28-
if not link:
29-
break
30-
next_ = link[0]
31-
return resources
32-
33-
34-
def render_config(doc_dir, project, resources):
35-
os.chdir(doc_dir)
36-
tpl = """
37-
38-
[{project}.{resource}]
39-
trans.zh_CN = {filename}
40-
source_lang = en
41-
type = PO"""
42-
conf = """[main]
43-
host = https://www.transifex.com"""
44-
for resource in sorted(resources):
45-
if resource == "glossary_":
46-
filename = "glossary.po"
47-
elif resource == "sphinx":
48-
filename = "sphinx.po"
49-
else:
50-
pattern = resource.replace("--", "/").replace("_", "?")
51-
matches = glob.glob(pattern + ".rst")
52-
if len(matches) == 0:
53-
print("missing", resource, file=sys.stderr)
54-
continue
55-
elif len(matches) == 1:
56-
filename = matches[0].replace(".rst", ".po")
57-
else:
58-
print("multi match", resource, pattern, matches, file=sys.stderr)
59-
conf += tpl.format(project=project, resource=resource, filename=filename)
60-
return conf
41+
return f"{prefix}{resource}\n{override_prefix}{override_resource}"
42+
43+
44+
def patch_config():
45+
tx_config_path = Path(".tx", "config")
46+
47+
config_content = tx_config_path.read_text("utf-8")
48+
config_content = FILTER_PATTERN.sub(name_replacer, config_content)
49+
tx_config_path.write_text(config_content, "utf-8")
6150

6251

6352
if __name__ == "__main__":
64-
import argparse
53+
from argparse import ArgumentParser
54+
import os
55+
56+
parser = ArgumentParser()
6557

66-
parser = argparse.ArgumentParser()
6758
parser.add_argument("--token")
68-
parser.add_argument("--project")
69-
parser.add_argument("--doc-dir")
70-
args = parser.parse_args()
59+
parser.add_argument("--version")
60+
61+
params = parser.parse_args()
7162

72-
resources = list_resources(args.token, args.project)
73-
conf = render_config(args.doc_dir, args.project, resources)
74-
print(conf)
63+
os.environ["TX_TOKEN"] = params.token
7564

76-
# vim: set et ts=4 sw=4 sts=4:
65+
init_project()
66+
add_files(params.version)
67+
patch_config()

.github/scripts/prepare.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ git clone --depth=1 --branch="$VERSION" https://github.com/python/cpython cpytho
66
git clone --branch="$VERSION" https://github.com/"$GITHUB_REPOSITORY" docs
77

88
pip3 install --user setuptools
9-
pip3 install --user transifex-client
9+
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
1010
sudo apt-get update
1111
sudo apt-get install -y python3-venv

.github/scripts/transifex_pull.py

-38
This file was deleted.

.github/scripts/update.sh

+1-14
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
#!/bin/bash
22

3-
set -ex
4-
5-
script_dir="$(dirname "$(realpath "$0")")"
6-
7-
if [[ -n "$TRANSIFEX_APIKEY" ]]; then
8-
cat > ~/.transifexrc << EOF
9-
[https://www.transifex.com]
10-
api_hostname = https://api.transifex.com
11-
hostname = https://www.transifex.com
12-
password = $TRANSIFEX_APIKEY
13-
username = api
14-
EOF
15-
fi
163

174
cd docs || exit 1
18-
"$script_dir"/transifex_pull.py
5+
tx pull --languages "$LOCALE"

.github/workflows/python-310.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: update
2121
run: .github/scripts/update.sh
2222
env:
23-
TRANSIFEX_APIKEY: ${{ secrets.TRANSIFEX_APIKEY }}
23+
TX_TOKEN: ${{ secrets.TRANSIFEX_APIKEY }}
2424
- name: build
2525
run: .github/scripts/build.sh
2626
- name: commit

.github/workflows/python-311.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: python-310
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
schedule:
8+
- cron: "8 * * * *"
9+
10+
jobs:
11+
sync:
12+
runs-on: ubuntu-latest
13+
env:
14+
LOCALE: zh_CN
15+
VERSION: "3.11"
16+
steps:
17+
- uses: actions/checkout@v2
18+
- name: prepare
19+
run: .github/scripts/prepare.sh
20+
- name: update
21+
run: .github/scripts/update.sh
22+
env:
23+
TX_TOKEN: ${{ secrets.TRANSIFEX_APIKEY }}
24+
- name: build
25+
run: .github/scripts/build.sh
26+
- name: commit
27+
run: .github/scripts/commit.sh
28+
env:
29+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/python-37.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: update
2121
run: .github/scripts/update.sh
2222
env:
23-
TRANSIFEX_APIKEY: ${{ secrets.TRANSIFEX_APIKEY }}
23+
TX_TOKEN: ${{ secrets.TRANSIFEX_APIKEY }}
2424
- name: build
2525
run: .github/scripts/build.sh
2626
- name: commit

.github/workflows/python-38.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: update
2121
run: .github/scripts/update.sh
2222
env:
23-
TRANSIFEX_APIKEY: ${{ secrets.TRANSIFEX_APIKEY }}
23+
TX_TOKEN: ${{ secrets.TRANSIFEX_APIKEY }}
2424
- name: build
2525
run: .github/scripts/build.sh
2626
- name: commit

.github/workflows/python-39.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: update
2121
run: .github/scripts/update.sh
2222
env:
23-
TRANSIFEX_APIKEY: ${{ secrets.TRANSIFEX_APIKEY }}
23+
TX_TOKEN: ${{ secrets.TRANSIFEX_APIKEY }}
2424
- name: build
2525
run: .github/scripts/build.sh
2626
- name: commit

README.rst

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ Maintained versions:
1212
* - Version
1313
- Sync status
1414
- Translation progress
15+
* - `3.11 <https://github.com/python/python-docs-zh-cn/tree/3.10>`_
16+
- .. image:: https://github.com/python/python-docs-zh-cn/workflows/python-311/badge.svg
17+
:target: https://github.com/python/python-docs-zh-cn/actions?workflow=python-311
1518
* - `3.10 <https://github.com/python/python-docs-zh-cn/tree/3.10>`_
1619
- .. image:: https://github.com/python/python-docs-zh-cn/workflows/python-310/badge.svg
1720
:target: https://github.com/python/python-docs-zh-cn/actions?workflow=python-310

0 commit comments

Comments
 (0)