Skip to content

Commit de6e7d3

Browse files
authored
Merge branch 'master' into antonpirker/django5-admin-improvement
2 parents 390358d + bc990db commit de6e7d3

File tree

2 files changed

+130
-23
lines changed

2 files changed

+130
-23
lines changed

.github/workflows/update-tox.yml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: Update test matrix
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
# early Monday morning
7+
- cron: '23 3 * * 1'
8+
9+
jobs:
10+
update-tox:
11+
name: Update test matrix
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 10
14+
15+
permissions:
16+
contents: write
17+
pull-requests: write
18+
19+
steps:
20+
- name: Setup Python
21+
uses: actions/setup-python@v5
22+
with:
23+
python-version: 3.13
24+
25+
- name: Checkout repo
26+
uses: actions/[email protected]
27+
with:
28+
token: ${{ secrets.GITHUB_TOKEN }}
29+
30+
- name: Configure git
31+
run: |
32+
git config user.name 'github-actions[bot]'
33+
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
34+
35+
- name: Run generate-test-files.sh
36+
run: |
37+
set -e
38+
sh scripts/generate-test-files.sh
39+
40+
- name: Create branch
41+
id: create-branch
42+
run: |
43+
COMMIT_TITLE="ci: 🤖 Update test matrix with new releases"
44+
DATE=`date +%m/%d`
45+
BRANCH_NAME="toxgen/update"
46+
47+
git checkout -B "$BRANCH_NAME"
48+
git add --all
49+
git commit -m "$COMMIT_TITLE"
50+
git push origin "$BRANCH_NAME" --force
51+
52+
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
53+
echo "commit_title=$COMMIT_TITLE" >> $GITHUB_OUTPUT
54+
echo "date=$DATE" >> $GITHUB_OUTPUT
55+
56+
- name: Create pull request
57+
uses: actions/[email protected]
58+
with:
59+
script: |
60+
const branchName = '${{ steps.create-branch.outputs.branch_name }}';
61+
const commitTitle = '${{ steps.create-branch.outputs.commit_title }}';
62+
const date = '${{ steps.create-branch.outputs.date }}';
63+
const prBody = `Update our test matrix with new releases of integrated frameworks and libraries.
64+
65+
## How it works
66+
- Scan PyPI for all supported releases of all frameworks we have a dedicated test suite for.
67+
- Pick a representative sample of releases to run our test suite against. We always test the latest and oldest supported version.
68+
- Update [tox.ini](tox.ini) with the new releases.
69+
70+
## Action required
71+
- If CI passes on this PR, it's safe to approve and merge. It means our integrations can handle new versions of frameworks that got pulled in.
72+
- If CI doesn't pass on this PR, this points to an incompatibility of either our integration or our test setup with a new version of a framework.
73+
- Check what the failures look like and either fix them, or update the [test config](scripts/populate_tox/config.py) and rerun [scripts/generate-test-files.sh](scripts/generate-test-files.sh). See [README.md](scripts/populate_tox/README.md) for what configuration options are available.
74+
75+
_____________________
76+
77+
_🤖 This PR was automatically created using [a GitHub action](.github/workflows/update-tox.yml)._`.replace(/^ {16}/gm, '')
78+
79+
// Close existing toxgen PRs as they're now obsolete
80+
81+
const { data: existingPRs } = await github.rest.pulls.list({
82+
owner: context.repo.owner,
83+
repo: context.repo.repo,
84+
head: `${context.repo.owner}:${branchName}`,
85+
state: 'open'
86+
});
87+
88+
for (const pr of existingPRs) {
89+
await github.rest.pulls.update({
90+
owner: context.repo.owner,
91+
repo: context.repo.repo,
92+
pull_number: pr.number,
93+
state: 'closed'
94+
})
95+
};
96+
97+
const { data: pr } = await github.rest.pulls.create({
98+
owner: context.repo.owner,
99+
repo: context.repo.repo,
100+
title: commitTitle + ' (' + date + ')',
101+
head: branchName,
102+
base: '${{ github.ref_name }}',
103+
body: prBody,
104+
});
105+
106+
await github.rest.issues.addLabels({
107+
owner: context.repo.owner,
108+
repo: context.repo.repo,
109+
issue_number: pr.number,
110+
labels: ['Component: CI', 'Component: Tests']
111+
});

tox.ini

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# The file (and all resulting CI YAMLs) then need to be regenerated via
1111
# "scripts/generate-test-files.sh".
1212
#
13-
# Last generated: 2025-09-16T07:18:41.732958+00:00
13+
# Last generated: 2025-09-17T07:20:17.058541+00:00
1414

1515
[tox]
1616
requires =
@@ -132,17 +132,16 @@ envlist =
132132
{py3.10,py3.12,py3.13}-openai_agents-v0.3.0
133133

134134
{py3.8,py3.10,py3.11}-huggingface_hub-v0.24.7
135-
{py3.8,py3.12,py3.13}-huggingface_hub-v0.27.1
136-
{py3.8,py3.12,py3.13}-huggingface_hub-v0.30.2
137-
{py3.8,py3.12,py3.13}-huggingface_hub-v0.34.5
138-
{py3.8,py3.12,py3.13}-huggingface_hub-v0.35.0rc0
135+
{py3.8,py3.12,py3.13}-huggingface_hub-v0.28.1
136+
{py3.8,py3.12,py3.13}-huggingface_hub-v0.32.6
137+
{py3.8,py3.12,py3.13}-huggingface_hub-v0.35.0
139138

140139

141140
# ~~~ Cloud ~~~
142141
{py3.6,py3.7}-boto3-v1.12.49
143142
{py3.6,py3.9,py3.10}-boto3-v1.20.54
144143
{py3.7,py3.11,py3.12}-boto3-v1.28.85
145-
{py3.9,py3.12,py3.13}-boto3-v1.40.31
144+
{py3.9,py3.12,py3.13}-boto3-v1.40.32
146145

147146
{py3.6,py3.7,py3.8}-chalice-v1.16.0
148147
{py3.6,py3.7,py3.8}-chalice-v1.21.9
@@ -161,7 +160,7 @@ envlist =
161160
{py3.6}-pymongo-v3.5.1
162161
{py3.6,py3.10,py3.11}-pymongo-v3.13.0
163162
{py3.6,py3.9,py3.10}-pymongo-v4.0.2
164-
{py3.9,py3.12,py3.13}-pymongo-v4.15.0
163+
{py3.9,py3.12,py3.13}-pymongo-v4.15.1
165164

166165
{py3.6}-redis_py_cluster_legacy-v1.3.6
167166
{py3.6,py3.7}-redis_py_cluster_legacy-v2.0.0
@@ -214,10 +213,9 @@ envlist =
214213

215214
# ~~~ Network ~~~
216215
{py3.7,py3.8}-grpc-v1.32.0
217-
{py3.7,py3.9,py3.10}-grpc-v1.46.5
218-
{py3.7,py3.11,py3.12}-grpc-v1.60.2
219-
{py3.9,py3.12,py3.13}-grpc-v1.74.0
220-
{py3.9,py3.12,py3.13}-grpc-v1.75.0rc1
216+
{py3.7,py3.9,py3.10}-grpc-v1.47.5
217+
{py3.7,py3.11,py3.12}-grpc-v1.62.3
218+
{py3.9,py3.12,py3.13}-grpc-v1.75.0
221219

222220

223221
# ~~~ Tasks ~~~
@@ -273,7 +271,7 @@ envlist =
273271
{py3.6,py3.9,py3.10}-fastapi-v0.79.1
274272
{py3.7,py3.10,py3.11}-fastapi-v0.91.0
275273
{py3.7,py3.10,py3.11}-fastapi-v0.103.2
276-
{py3.8,py3.12,py3.13}-fastapi-v0.116.1
274+
{py3.8,py3.12,py3.13}-fastapi-v0.116.2
277275

278276

279277
# ~~~ Web 2 ~~~
@@ -515,18 +513,17 @@ deps =
515513
openai_agents: pytest-asyncio
516514

517515
huggingface_hub-v0.24.7: huggingface_hub==0.24.7
518-
huggingface_hub-v0.27.1: huggingface_hub==0.27.1
519-
huggingface_hub-v0.30.2: huggingface_hub==0.30.2
520-
huggingface_hub-v0.34.5: huggingface_hub==0.34.5
521-
huggingface_hub-v0.35.0rc0: huggingface_hub==0.35.0rc0
516+
huggingface_hub-v0.28.1: huggingface_hub==0.28.1
517+
huggingface_hub-v0.32.6: huggingface_hub==0.32.6
518+
huggingface_hub-v0.35.0: huggingface_hub==0.35.0
522519
huggingface_hub: responses
523520

524521

525522
# ~~~ Cloud ~~~
526523
boto3-v1.12.49: boto3==1.12.49
527524
boto3-v1.20.54: boto3==1.20.54
528525
boto3-v1.28.85: boto3==1.28.85
529-
boto3-v1.40.31: boto3==1.40.31
526+
boto3-v1.40.32: boto3==1.40.32
530527
{py3.7,py3.8}-boto3: urllib3<2.0.0
531528

532529
chalice-v1.16.0: chalice==1.16.0
@@ -548,7 +545,7 @@ deps =
548545
pymongo-v3.5.1: pymongo==3.5.1
549546
pymongo-v3.13.0: pymongo==3.13.0
550547
pymongo-v4.0.2: pymongo==4.0.2
551-
pymongo-v4.15.0: pymongo==4.15.0
548+
pymongo-v4.15.1: pymongo==4.15.1
552549
pymongo: mockupdb
553550

554551
redis_py_cluster_legacy-v1.3.6: redis-py-cluster==1.3.6
@@ -615,10 +612,9 @@ deps =
615612

616613
# ~~~ Network ~~~
617614
grpc-v1.32.0: grpcio==1.32.0
618-
grpc-v1.46.5: grpcio==1.46.5
619-
grpc-v1.60.2: grpcio==1.60.2
620-
grpc-v1.74.0: grpcio==1.74.0
621-
grpc-v1.75.0rc1: grpcio==1.75.0rc1
615+
grpc-v1.47.5: grpcio==1.47.5
616+
grpc-v1.62.3: grpcio==1.62.3
617+
grpc-v1.75.0: grpcio==1.75.0
622618
grpc: protobuf
623619
grpc: mypy-protobuf
624620
grpc: types-protobuf
@@ -720,7 +716,7 @@ deps =
720716
fastapi-v0.79.1: fastapi==0.79.1
721717
fastapi-v0.91.0: fastapi==0.91.0
722718
fastapi-v0.103.2: fastapi==0.103.2
723-
fastapi-v0.116.1: fastapi==0.116.1
719+
fastapi-v0.116.2: fastapi==0.116.2
724720
fastapi: httpx
725721
fastapi: pytest-asyncio
726722
fastapi: python-multipart

0 commit comments

Comments
 (0)