Skip to content

Commit 6a26f54

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into more-integer-avoid-mutate
2 parents 31c6a4e + f4adc25 commit 6a26f54

File tree

429 files changed

+3285
-1862
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

429 files changed

+3285
-1862
lines changed

.devcontainer/onCreate-meson.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
SYSTEM=$(build/bin/sage-guess-package-system)
44

5-
if [ "$SYSTEM" = "fedora" ]; then
5+
if [ "$SYSTEM" = "fedora" ] && [ -f /etc/fedora-release ]; then
66
# Need to use --setopt=tsflags="" to avoid errors with gphelp
77
dnf5 install -y pari-gp --setopt=tsflags=""
88

@@ -16,7 +16,8 @@ eval $(build/bin/sage-print-system-package-command $SYSTEM --yes --ignore-missin
1616

1717
# Disable build isolation following the advice of https://mesonbuild.com/meson-python/how-to-guides/editable-installs.html#build-dependencies
1818
# Install build dependencies manually as workaround for https://github.com/astral-sh/uv/issues/1516
19-
uv venv
19+
uv venv --clear
20+
. $UV_PROJECT_ENVIRONMENT/bin/activate # https://github.com/astral-sh/uv/issues/14022
2021
uv pip install \
2122
meson-python \
2223
"cypari2 >=2.2.1" \
@@ -27,4 +28,4 @@ uv pip install \
2728
"numpy >=1.25" \
2829
jinja2 \
2930
setuptools
30-
uv sync --frozen --inexact --no-build-isolation --config-settings=builddir=build/build-$SYSTEM
31+
uv sync --frozen --inexact --no-build-isolation -v --config-settings=builddir=build/build-$SYSTEM-$devcontainerId

.devcontainer/portability-archlinux/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
"version": "latest"
1414
}
1515
},
16+
"containerEnv": {
17+
"devcontainerId": "${devcontainerId}",
18+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
19+
},
1620
"customizations": {
1721
"vscode": {
1822
"extensions": [

.devcontainer/portability-fedora-41/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"version": "latest"
1111
}
1212
},
13+
"containerEnv": {
14+
"devcontainerId": "${devcontainerId}",
15+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
16+
},
1317
"customizations": {
1418
"vscode": {
1519
"extensions": [

.devcontainer/portability-fedora-42/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"version": "latest"
1111
}
1212
},
13+
"containerEnv": {
14+
"devcontainerId": "${devcontainerId}",
15+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
16+
},
1317
"customizations": {
1418
"vscode": {
1519
"extensions": [

.devcontainer/portability-ubuntu-2204/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"version": "latest"
1111
}
1212
},
13+
"containerEnv": {
14+
"devcontainerId": "${devcontainerId}",
15+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
16+
},
1317
"customizations": {
1418
"vscode": {
1519
"extensions": [

.devcontainer/portability-ubuntu-2404/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"version": "latest"
1111
}
1212
},
13+
"containerEnv": {
14+
"devcontainerId": "${devcontainerId}",
15+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
16+
},
1317
"customizations": {
1418
"vscode": {
1519
"extensions": [

.devcontainer/portability-ubuntu-2504/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
"version": "latest"
1111
}
1212
},
13+
"containerEnv": {
14+
"devcontainerId": "${devcontainerId}",
15+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
16+
},
1317
"customizations": {
1418
"vscode": {
1519
"extensions": [

.devcontainer/portability-void/devcontainer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
"version": "latest"
1515
}
1616
},
17+
"containerEnv": {
18+
"devcontainerId": "${devcontainerId}",
19+
"UV_PROJECT_ENVIRONMENT": ".venv-${devcontainerId}"
20+
},
1721
"customizations": {
1822
"vscode": {
1923
"extensions": [

.github/sync_labels.py

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,17 @@ def get_commits(self):
408408
return self._commits
409409

410410
self._commits = self.view('commits')
411-
self._commit_date = max( com['committedDate'] for com in self._commits )
411+
412+
# ignore merge commits with the develop branch for _commit_date unless positive review is set
413+
date_commits = list(self._commits)
414+
if Status.positive_review.value not in self.get_labels():
415+
for com in self._commits:
416+
message = com['messageHeadline']
417+
if message.startswith('Merge') and 'develop' in message:
418+
debug('Ignore merge commit %s for commit_date' % com['oid'])
419+
date_commits.remove(com)
420+
421+
self._commit_date = max(com['committedDate'] for com in date_commits)
412422
info('Commits until %s for %s: %s' % (self._commit_date, self._issue, self._commits))
413423
return self._commits
414424

@@ -1034,6 +1044,35 @@ def run_tests(self):
10341044
elif self.is_pull_request():
10351045
self.run(action)
10361046

1047+
def test_method(self, method, *args, **kwds):
1048+
r"""
1049+
Run the given method for testing.
1050+
1051+
EXAMPLES::
1052+
1053+
sage$ python .github/sync_labels.py https://github.com/sagemath/sage/pull/40634 soehms is_auth_team_member "{'login': 'soehms'}" -t
1054+
INFO:root:cmdline_args (4) ['https://github.com/sagemath/sage/pull/40634', 'soehms', 'is_auth_team_member', "{'login': 'soehms'}"]
1055+
...
1056+
DEBUG:root:call is_auth_team_member with args () and kwds {'login': 'soehms'}
1057+
DEBUG:root:================================================================================
1058+
DEBUG:root:Execute command: gh api -X GET -H "Accept: application/vnd.github+json" /orgs/sagemath/teams/triage/memberships/soehms
1059+
INFO:root:User soehms is a member of triage
1060+
INFO:root:result of is_auth_team_member with args () and kwds {'login': 'soehms'} is True
1061+
INFO:root:================================================================================
1062+
...
1063+
"""
1064+
if hasattr(self, method):
1065+
meth = self.__getattribute__(method)
1066+
if callable(meth):
1067+
debug('call %s with args %s and kwds %s' % (method, args, kwds))
1068+
debug('='*80)
1069+
res = meth(*args, **kwds)
1070+
info('result of %s with args %s and kwds %s is %s' % (method, args, kwds, res))
1071+
info('='*80)
1072+
debug('state of self: %s' % self.__dict__)
1073+
return
1074+
raise ValueError('%s is not a method of %s' % (method, self))
1075+
10371076

10381077
###############################################################################
10391078
# Main
@@ -1068,8 +1107,10 @@ def run_tests(self):
10681107
num_args = len(cmdline_args)
10691108
info('cmdline_args (%s) %s' % (num_args, cmdline_args))
10701109

1071-
if run_tests and num_args in (1,2):
1072-
if num_args == 2:
1110+
if run_tests:
1111+
if num_args == 4:
1112+
url, actor, method, args = cmdline_args
1113+
elif num_args == 2:
10731114
url, actor = cmdline_args
10741115
else:
10751116
url, = cmdline_args
@@ -1079,7 +1120,10 @@ def run_tests(self):
10791120
info('actor: %s' % actor)
10801121

10811122
gh = GhLabelSynchronizer(url, actor)
1082-
gh.run_tests()
1123+
if num_args == 4:
1124+
gh.test_method(method, **eval(args))
1125+
else:
1126+
gh.run_tests()
10831127

10841128
elif num_args == 5:
10851129
action, url, actor, label, rev_state = cmdline_args

.github/workflows/ci-meson.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
test:
2222
name: Conda (${{ matrix.os }}, Python ${{ matrix.python }}, ${{ matrix.tests }}${{ matrix.editable && ', editable' || '' }})
2323
runs-on: ${{ matrix.os }}-latest
24+
env:
25+
SEPARATELY_TESTED_FLAKY_FILES: "src/sage/libs/singular/function.pyx src/sage/rings/polynomial/plural.pyx"
2426

2527
strategy:
2628
fail-fast: false
@@ -168,9 +170,22 @@ jobs:
168170
pytest --doctest-ignore-import-errors --doctest -rfEs -s src || true
169171
else
170172
pytest -rfEs -s src
171-
./sage -t ${{ matrix.tests == 'all' && '--all' || '--new --long' }} -p4 --format github
173+
./sage -t ${{
174+
matrix.tests == 'all' &&
175+
'--all-except="$SEPARATELY_TESTED_FLAKY_FILES"' ||
176+
'--new --long' }} -p4 --format github
172177
fi
173178
179+
- name: Test flaky files
180+
# unknown issues with plural.pyx causes sporadic failure: https://github.com/sagemath/sage/issues/29528
181+
# we rerun a few times, this step succeeds if any of the 5 runs succeed
182+
if: runner.os != 'windows' && matrix.tests == 'all'
183+
shell: bash -l {0}
184+
run: |
185+
for i in {1..5}; do
186+
./sage -t -p4 --format github $SEPARATELY_TESTED_FLAKY_FILES && break
187+
done
188+
174189
- name: Check that all modules can be imported
175190
shell: bash -l {0}
176191
run: |
@@ -179,7 +194,11 @@ jobs:
179194
# The following command checks that all modules can be imported.
180195
# The output also includes a long list of modules together with the number of tests in each module.
181196
# This can be ignored.
182-
pytest -qq --doctest --collect-only || true
197+
if [[ "${{ matrix.os }}" == "windows" ]]; then
198+
pytest -qq --doctest --collect-only || true
199+
else
200+
pytest -qq --doctest --collect-only
201+
fi
183202
184203
- name: Upload log
185204
uses: actions/[email protected]

0 commit comments

Comments
 (0)