diff --git a/.ci/create-changes-html.sh b/.ci/create-changes-html.sh index 2cca91d81c8..0e80d0d2814 100755 --- a/.ci/create-changes-html.sh +++ b/.ci/create-changes-html.sh @@ -1,11 +1,12 @@ #!/bin/sh if [ $# != 2 ]; then - echo >&2 "usage: $0 BASE_DOC_COMMIT DOC_REPO" - echo >&2 "creates CHANGES.html in the current directory" - echo >&2 "for the diffs of DOC_REPO against BASE_DOC_COMMIT" + echo >&2 "Usage: $0 DIFF_TEXT DOC_REPO" + echo >&2 "This script generates a CHANGES.html file in the current directory" + echo >&2 "and adds anchor targets in the documents within DOC_REPO" + echo >&2 "based on the diff hunks in the DIFF_TEXT file." exit 1 fi -BASE_DOC_COMMIT="$1" +DIFF_TEXT="$1" DOC_REPOSITORY="$2" # Create CHANGES.html @@ -52,11 +53,10 @@ diffParagraphs.forEach(paragraph => { EOF echo '' >> CHANGES.html echo '' >> CHANGES.html -(cd $DOC_REPOSITORY && git diff $BASE_DOC_COMMIT -- "*.html") > diff.txt python3 - << EOF import os, re, html from itertools import chain -with open('diff.txt', 'r') as f: +with open('$DIFF_TEXT', 'r') as f: diff_text = f.read() diff_blocks = re.split(r'^(?=diff --git)', diff_text, flags=re.MULTILINE) out_blocks = [] @@ -83,12 +83,21 @@ for block in diff_blocks: hunk_lines = [] search_result = re.search(r'@@ -(\d+),(\d+) \+(\d+),(\d+)', line) if search_result: - line_number = int(search_result.group(3)) + line_number = int(search_result.group(3)) - 1 span = int(search_result.group(4)) for i in chain(range(line_number, line_number + span), range(line_number - 1, -1, -1)): - if content[i].startswith('<') and not content[i].startswith('' + content[i] + content[i] = ln[:idx] + f'' + ln[idx:] hunks.append(f'

hunk #{count}

') break hunk_lines.append(line) @@ -107,4 +116,4 @@ EOF cat diff.html >> CHANGES.html echo '' >> CHANGES.html echo '' >> CHANGES.html -rm diff.txt diff.html +rm diff.html diff --git a/.ci/write-dockerfile.sh b/.ci/write-dockerfile.sh index 75f89b23868..f5e7b6ec94d 100755 --- a/.ci/write-dockerfile.sh +++ b/.ci/write-dockerfile.sh @@ -323,7 +323,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" #:toolchain: $RUN $CHECK_STATUS_THEN make \${USE_MAKEFLAGS} base-toolchain $ENDRUN $THEN_SAVE_STATUS @@ -332,7 +332,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" #:make: ARG TARGETS_PRE="all-sage-local" $RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_PRE} $ENDRUN $THEN_SAVE_STATUS @@ -342,7 +342,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" $ADD .gitignore /new/.gitignore $ADD src /new/src RUN cd /new && rm -rf .git && \ @@ -364,7 +364,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" ARG TARGETS_OPTIONAL="ptest" $RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_OPTIONAL} || echo "(error ignored)" $ENDRUN $THEN_SAVE_STATUS diff --git a/.devcontainer/portability-centos-stream-9-python3.9-minimal/devcontainer.json b/.devcontainer/portability-centos-stream-9-minimal/devcontainer.json similarity index 85% rename from .devcontainer/portability-centos-stream-9-python3.9-minimal/devcontainer.json rename to .devcontainer/portability-centos-stream-9-minimal/devcontainer.json index acf524fe795..6c714ff4879 100644 --- a/.devcontainer/portability-centos-stream-9-python3.9-minimal/devcontainer.json +++ b/.devcontainer/portability-centos-stream-9-minimal/devcontainer.json @@ -3,12 +3,12 @@ // from .devcontainer/portability-devcontainer.json.in // See https://aka.ms/devcontainer.json for format details. { - "name": "centos-stream-9-python3.9-minimal (≥ 8-core)", + "name": "centos-stream-9-minimal (≥ 8-core)", "build": { "dockerfile": "portability-Dockerfile", // See tox.ini for definitions "args": { - "SYSTEM_FACTOR": "centos-stream-9-python3.9", + "SYSTEM_FACTOR": "centos-stream-9", "PACKAGE_FACTOR": "minimal", "DOCKER_TARGET": "with-targets", "DOCKER_TAG": "dev" diff --git a/.devcontainer/portability-centos-stream-9-python3.9-minimal/portability-Dockerfile b/.devcontainer/portability-centos-stream-9-minimal/portability-Dockerfile similarity index 100% rename from .devcontainer/portability-centos-stream-9-python3.9-minimal/portability-Dockerfile rename to .devcontainer/portability-centos-stream-9-minimal/portability-Dockerfile diff --git a/.devcontainer/portability-centos-stream-9-python3.12-minimal/devcontainer.json b/.devcontainer/portability-centos-stream-9-python3.12-minimal/devcontainer.json new file mode 100644 index 00000000000..05bcceac4e2 --- /dev/null +++ b/.devcontainer/portability-centos-stream-9-python3.12-minimal/devcontainer.json @@ -0,0 +1,25 @@ +// The command "tox -e update_docker_platforms" +// creates .devcontainer/portability-*-*/devcontainer.json +// from .devcontainer/portability-devcontainer.json.in +// See https://aka.ms/devcontainer.json for format details. +{ + "name": "centos-stream-9-python3.12-minimal (≥ 8-core)", + "build": { + "dockerfile": "portability-Dockerfile", + // See tox.ini for definitions + "args": { + "SYSTEM_FACTOR": "centos-stream-9-python3.12", + "PACKAGE_FACTOR": "minimal", + "DOCKER_TARGET": "with-targets", + "DOCKER_TAG": "dev" + } + }, + "containerEnv": { + "MAKE": "make -j4" + }, + "onCreateCommand": ".devcontainer/onCreate.sh", + "updateContentCommand": ".devcontainer/portability-updateContent.sh", + "extensions": [ + "ms-python.python" + ] +} diff --git a/.devcontainer/portability-centos-stream-9-python3.9-standard/portability-Dockerfile b/.devcontainer/portability-centos-stream-9-python3.12-minimal/portability-Dockerfile similarity index 100% rename from .devcontainer/portability-centos-stream-9-python3.9-standard/portability-Dockerfile rename to .devcontainer/portability-centos-stream-9-python3.12-minimal/portability-Dockerfile diff --git a/.devcontainer/portability-centos-stream-9-python3.12-standard/devcontainer.json b/.devcontainer/portability-centos-stream-9-python3.12-standard/devcontainer.json new file mode 100644 index 00000000000..56e71035e88 --- /dev/null +++ b/.devcontainer/portability-centos-stream-9-python3.12-standard/devcontainer.json @@ -0,0 +1,25 @@ +// The command "tox -e update_docker_platforms" +// creates .devcontainer/portability-*-*/devcontainer.json +// from .devcontainer/portability-devcontainer.json.in +// See https://aka.ms/devcontainer.json for format details. +{ + "name": "centos-stream-9-python3.12-standard (≥ 8-core)", + "build": { + "dockerfile": "portability-Dockerfile", + // See tox.ini for definitions + "args": { + "SYSTEM_FACTOR": "centos-stream-9-python3.12", + "PACKAGE_FACTOR": "standard", + "DOCKER_TARGET": "with-targets", + "DOCKER_TAG": "dev" + } + }, + "containerEnv": { + "MAKE": "make -j4" + }, + "onCreateCommand": ".devcontainer/onCreate.sh", + "updateContentCommand": ".devcontainer/portability-updateContent.sh", + "extensions": [ + "ms-python.python" + ] +} diff --git a/.devcontainer/portability-centos-stream-9-python3.12-standard/portability-Dockerfile b/.devcontainer/portability-centos-stream-9-python3.12-standard/portability-Dockerfile new file mode 120000 index 00000000000..692e2a79d64 --- /dev/null +++ b/.devcontainer/portability-centos-stream-9-python3.12-standard/portability-Dockerfile @@ -0,0 +1 @@ +../portability-Dockerfile \ No newline at end of file diff --git a/.devcontainer/portability-centos-stream-9-python3.9-standard/devcontainer.json b/.devcontainer/portability-centos-stream-9-standard/devcontainer.json similarity index 85% rename from .devcontainer/portability-centos-stream-9-python3.9-standard/devcontainer.json rename to .devcontainer/portability-centos-stream-9-standard/devcontainer.json index fa42385cae5..d3da5d3160a 100644 --- a/.devcontainer/portability-centos-stream-9-python3.9-standard/devcontainer.json +++ b/.devcontainer/portability-centos-stream-9-standard/devcontainer.json @@ -3,12 +3,12 @@ // from .devcontainer/portability-devcontainer.json.in // See https://aka.ms/devcontainer.json for format details. { - "name": "centos-stream-9-python3.9-standard (≥ 8-core)", + "name": "centos-stream-9-standard (≥ 8-core)", "build": { "dockerfile": "portability-Dockerfile", // See tox.ini for definitions "args": { - "SYSTEM_FACTOR": "centos-stream-9-python3.9", + "SYSTEM_FACTOR": "centos-stream-9", "PACKAGE_FACTOR": "standard", "DOCKER_TARGET": "with-targets", "DOCKER_TAG": "dev" diff --git a/.devcontainer/portability-centos-stream-9-standard/portability-Dockerfile b/.devcontainer/portability-centos-stream-9-standard/portability-Dockerfile new file mode 120000 index 00000000000..692e2a79d64 --- /dev/null +++ b/.devcontainer/portability-centos-stream-9-standard/portability-Dockerfile @@ -0,0 +1 @@ +../portability-Dockerfile \ No newline at end of file diff --git a/.devcontainer/portability-fedora-41-minimal/devcontainer.json b/.devcontainer/portability-fedora-41-minimal/devcontainer.json new file mode 100644 index 00000000000..3efafa0f18e --- /dev/null +++ b/.devcontainer/portability-fedora-41-minimal/devcontainer.json @@ -0,0 +1,25 @@ +// The command "tox -e update_docker_platforms" +// creates .devcontainer/portability-*-*/devcontainer.json +// from .devcontainer/portability-devcontainer.json.in +// See https://aka.ms/devcontainer.json for format details. +{ + "name": "fedora-41-minimal (≥ 8-core)", + "build": { + "dockerfile": "portability-Dockerfile", + // See tox.ini for definitions + "args": { + "SYSTEM_FACTOR": "fedora-41", + "PACKAGE_FACTOR": "minimal", + "DOCKER_TARGET": "with-targets", + "DOCKER_TAG": "dev" + } + }, + "containerEnv": { + "MAKE": "make -j4" + }, + "onCreateCommand": ".devcontainer/onCreate.sh", + "updateContentCommand": ".devcontainer/portability-updateContent.sh", + "extensions": [ + "ms-python.python" + ] +} diff --git a/.devcontainer/portability-fedora-41-minimal/portability-Dockerfile b/.devcontainer/portability-fedora-41-minimal/portability-Dockerfile new file mode 120000 index 00000000000..692e2a79d64 --- /dev/null +++ b/.devcontainer/portability-fedora-41-minimal/portability-Dockerfile @@ -0,0 +1 @@ +../portability-Dockerfile \ No newline at end of file diff --git a/.devcontainer/portability-fedora-41-standard/devcontainer.json b/.devcontainer/portability-fedora-41-standard/devcontainer.json new file mode 100644 index 00000000000..fd82a00396a --- /dev/null +++ b/.devcontainer/portability-fedora-41-standard/devcontainer.json @@ -0,0 +1,25 @@ +// The command "tox -e update_docker_platforms" +// creates .devcontainer/portability-*-*/devcontainer.json +// from .devcontainer/portability-devcontainer.json.in +// See https://aka.ms/devcontainer.json for format details. +{ + "name": "fedora-41-standard (≥ 8-core)", + "build": { + "dockerfile": "portability-Dockerfile", + // See tox.ini for definitions + "args": { + "SYSTEM_FACTOR": "fedora-41", + "PACKAGE_FACTOR": "standard", + "DOCKER_TARGET": "with-targets", + "DOCKER_TAG": "dev" + } + }, + "containerEnv": { + "MAKE": "make -j4" + }, + "onCreateCommand": ".devcontainer/onCreate.sh", + "updateContentCommand": ".devcontainer/portability-updateContent.sh", + "extensions": [ + "ms-python.python" + ] +} diff --git a/.devcontainer/portability-fedora-41-standard/portability-Dockerfile b/.devcontainer/portability-fedora-41-standard/portability-Dockerfile new file mode 120000 index 00000000000..692e2a79d64 --- /dev/null +++ b/.devcontainer/portability-fedora-41-standard/portability-Dockerfile @@ -0,0 +1 @@ +../portability-Dockerfile \ No newline at end of file diff --git a/.github/workflows/ci-linux-incremental.yml b/.github/workflows/ci-linux-incremental.yml index a7900534b32..47269bec46f 100644 --- a/.github/workflows/ci-linux-incremental.yml +++ b/.github/workflows/ci-linux-incremental.yml @@ -60,9 +60,9 @@ jobs: uninstall_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([a-z0-9][_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u)) build_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.pkgs_all_changed_files }}; do SPKG=$(echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([a-z0-9][-_.a-z0-9]*)/[^ ]* *,\2,;'); if [ -f "build/pkgs/$SPKG/checksums.ini" -o -f "build/pkgs/$SPKG/requirements.txt" -o -f "build/pkgs/$SPKG/spkg-install" ]; then echo "$SPKG-ensure"; fi; done | sort -u)) if [ -n "$uninstall_targets" ]; then - echo "build_targets=$uninstall_targets reconfigure $build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT + echo "build_targets=$uninstall_targets reconfigure $build_targets" >> $GITHUB_OUTPUT else - echo "build_targets=$build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT + echo "build_targets=$build_targets" >> $GITHUB_OUTPUT fi cat $GITHUB_OUTPUT - uses: actions/checkout@v4 @@ -92,7 +92,7 @@ jobs: from_docker_target: "with-targets" from_docker_tag: "dev" docker_targets: "with-targets" - targets: "${{needs.changed_files.outputs.build_targets}} doc-html ptest-nodoc" + targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback doc-html ptest-nodoc" tox_system_factors: >- ["ubuntu-focal", "ubuntu-noble", @@ -108,6 +108,29 @@ jobs: docker_push_repository: ghcr.io/${{ github.repository }}/ max_parallel: 8 + constraints_pkgs-norequirements: + needs: [changed_files] + uses: ./.github/workflows/docker.yml + with: + # Build incrementally from published Docker image + incremental: true + free_disk_space: true + from_docker_repository: ghcr.io/sagemath/sage/ + from_docker_target: "with-targets-pre" + from_docker_tag: "dev" + docker_targets: "with-targets-pre" + targets_pre: "${{needs.changed_files.outputs.build_targets}} all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements" + tox_system_factors: >- + ["ubuntu-focal", + "ubuntu-noble", + "debian-bookworm", + "fedora-40", + "debian-bullseye-i386"] + tox_packages_factors: >- + ["standard"] + docker_push_repository: ghcr.io/${{ github.repository }}/ + max_parallel: 16 + site: needs: [changed_files] uses: ./.github/workflows/docker.yml diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index cae29a27819..ca4607e3cc3 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -34,7 +34,7 @@ permissions: jobs: - # standard-pre and standard (without ptest) for the default platform (used by build.yml etc.) + # standard (without ptest) for the default platform (used by build.yml etc.) default: uses: ./.github/workflows/docker.yml with: @@ -54,24 +54,27 @@ jobs: # All platforms. This duplicates the default platform, but why not, # it makes it more robust regarding random timeouts. - standard-pre: + standard: if: ${{ success() || failure() }} uses: ./.github/workflows/docker.yml with: # Build from scratch - docker_targets: "with-system-packages configured with-targets-pre" + free_disk_space: true + docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" # FIXME: duplicated from env.TARGETS targets_pre: all-sage-local + targets: build doc-html + targets_optional: ptest tox_packages_factors: >- ["standard"] docker_push_repository: ghcr.io/${{ github.repository }}/ - # Make sure that all "standard-pre" jobs can start simultaneously, + # Make sure that all "standard" jobs can start simultaneously, # so that runners are available by the time that "default" starts. max_parallel: 50 - standard: + standard-constraints_pkgs-norequirements: if: ${{ success() || failure() }} - needs: [standard-pre] + needs: [standard] uses: ./.github/workflows/docker.yml with: # Build incrementally from previous stage (pre) @@ -79,20 +82,15 @@ jobs: free_disk_space: true from_docker_repository: ghcr.io/${{ github.repository }}/ from_docker_target: "with-targets-pre" - docker_targets: "with-targets with-targets-optional" - # FIXME: duplicated from env.TARGETS - targets: build doc-html - targets_optional: ptest + docker_targets: "with-targets-pre" + targets_pre: all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements tox_packages_factors: >- ["standard"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - # Reduce from 30 to 20 because it runs in parallel with 'standard-sitepackages' - # and 'minimal-pre' below - max_parallel: 20 + max_parallel: 15 standard-sitepackages: if: ${{ success() || failure() }} - needs: [standard-pre] + needs: [standard] uses: ./.github/workflows/docker.yml with: # Build incrementally from previous stage (pre) @@ -128,38 +126,22 @@ jobs: docker_push_repository: ghcr.io/${{ github.repository }}/ max_parallel: 8 - minimal-pre: - if: ${{ success() || failure() }} - uses: ./.github/workflows/docker.yml - with: - # Build from scratch - docker_targets: "with-system-packages configured with-targets-pre" - # FIXME: duplicated from env.TARGETS - targets_pre: all-sage-local - tox_packages_factors: >- - ["minimal"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - # Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above. - # Calibrated for clogging the job pipeline until the "default" job has finished. - max_parallel: 24 - minimal: if: ${{ success() || failure() }} - needs: [minimal-pre] uses: ./.github/workflows/docker.yml with: - # Build incrementally from previous stage (pre) - incremental: true + # Build from scratch free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - docker_targets: "with-targets with-targets-optional" + docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" # FIXME: duplicated from env.TARGETS + targets_pre: all-sage-local targets: build doc-html targets_optional: ptest tox_packages_factors: >- ["minimal"] docker_push_repository: ghcr.io/${{ github.repository }}/ + # Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above. + # Calibrated for clogging the job pipeline until the "default" job has finished. max_parallel: 24 maximal-pre: @@ -176,7 +158,7 @@ jobs: ["maximal"] docker_push_repository: ghcr.io/${{ github.repository }}/ - optional-0-o: + optional: if: ${{ success() || failure() }} needs: [maximal-pre] uses: ./.github/workflows/docker.yml @@ -188,42 +170,12 @@ jobs: tox_packages_factors: >- ["maximal"] docker_targets: "with-targets-optional" - # [0-9a-o] excludes _, in particular package _develop - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))' - - - optional-p-z: - if: ${{ success() || failure() }} - needs: [optional-0-o] - uses: ./.github/workflows/docker.yml - with: - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] - docker_targets: "with-targets-optional" - # [0-9a-o] excludes _, in particular package _develop - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[p-z]))' - - experimental-0-o: - if: ${{ success() || failure() }} - needs: [optional-p-z] - uses: ./.github/workflows/docker.yml - with: - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] - docker_targets: "with-targets-optional" - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))' + # We remove packages starting with _, in particular package _develop + targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep -v ^_))' - experimental-p-z: + experimental: if: ${{ success() || failure() }} - needs: [experimental-0-o] + needs: [optional] uses: ./.github/workflows/docker.yml with: incremental: true @@ -233,4 +185,4 @@ jobs: tox_packages_factors: >- ["maximal"] docker_targets: "with-targets-optional" - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[p-z]))' + targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc))' diff --git a/.github/workflows/doc-build.yml b/.github/workflows/doc-build.yml index c5ff832b591..71530631399 100644 --- a/.github/workflows/doc-build.yml +++ b/.github/workflows/doc-build.yml @@ -206,7 +206,7 @@ jobs: # Since HEAD is at commit 'wipe-out', HEAD~1 is commit 'new' (new doc), HEAD~2 is commit 'old' (old doc) .ci/create-changes-html.sh $(cd doc && git rev-parse HEAD~2) doc # Restore the new doc with changes made in create-changes-html.sh but dropping changes by "wipe out" - (cd doc && git stash -q && git checkout -q -f HEAD~1 && git stash pop -q) + (cd doc && git stash -q && git checkout -q -f HEAD~1 && git stash pop -q || echo '(error ignored)') # Sometimes rm -rf .git errors out because of some diehard hidden files # So we simply move it out of the doc directory (cd doc && mv .git ../git && mv .gitattributes ../gitattributes) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2b6d83f6e78..4f3d1441544 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -47,7 +47,9 @@ on: "fedora-38", "fedora-39", "fedora-40", - "centos-stream-9-python3.9", + "fedora-41", + "centos-stream-9", + "centos-stream-9-python3.12", "almalinux-8-python3.9", "almalinux-9-python3.11", "gentoo-python3.10", @@ -242,9 +244,16 @@ jobs: # The arcane "find" command is a replacement for "pkill make", # which we use because pkill is not installed in the "minimal" package # configuration on many platforms. + # + # The "sed" command strips away timestamps from "docker build" (buildkit) + # such as "#25 1211.0" at the beginning of each line. The timestamps are + # redundant because GH Actions provides timestamps for each line already. + # Stripping the timestamps from the beginnings of lines also allows + # GitHub Actions to recognize workflow commands such as ::error etc. + # run: | (sleep ${{ inputs.timeout }}; for id in $(docker ps -q); do docker exec $id find /proc -maxdepth 2 -name cmdline -exec bash -c "grep -l [m][a][k][e] {} | cut -d/ -f3 | xargs --no-run-if-empty kill" \;; done) & - set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=9 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=5\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;" + set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=9 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=5\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed -E --unbuffered "s/^#[0-9]+ [0-9]+[.][0-9]+ //;/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;" - name: Copy logs from the Docker image or build container run: | mkdir -p "artifacts/$LOGS_ARTIFACT_NAME" diff --git a/build/bin/sage-spkg b/build/bin/sage-spkg index 6af5214c27f..116d12bd3f9 100755 --- a/build/bin/sage-spkg +++ b/build/bin/sage-spkg @@ -349,7 +349,7 @@ esac ensure_pkg_src() { ############################################### case "$PKG_SRC_TYPE" in normal|wheel) - PKG_SRC=$(sage-package download $SAGE_DOWNLOAD_FILE_OPTIONS $PKG_BASE) || exit_with_error_msg "Error downloading tarball of $PKG_BASE" + PKG_SRC=$(sage-package download $SAGE_DOWNLOAD_FILE_OPTIONS -- $PKG_BASE) || exit_with_error_msg "Error downloading tarball of $PKG_BASE" # Do a final check that PKG_SRC is a file with an absolute path cd / if [ ! -f "$PKG_SRC" ]; then @@ -804,6 +804,13 @@ if [ $ERASE_ONLY = 1 ]; then exit 0 fi +if [ -z "$SAGE_INSTALL_FETCH_ONLY" ]; then + TAGS=$("$SAGE_INST_LOCAL"/bin/python3 -c "from packaging.tags import sys_tags; print(' '.join(f'{tag.interpreter}-{tag.abi}-{tag.platform}' for tag in sys_tags()))" 2>/dev/null) + if [ -n "$TAGS" ]; then + SAGE_DOWNLOAD_FILE_OPTIONS+=" --tags $TAGS" + fi +fi + if [ $INSTALL = 1 ]; then warning_for_experimental_packages ensure_pkg_src diff --git a/build/make/Makefile.in b/build/make/Makefile.in index a59c81db529..420dadb9364 100644 --- a/build/make/Makefile.in +++ b/build/make/Makefile.in @@ -779,12 +779,14 @@ $(1)-sdist: FORCE python_build sage_setup cython . '$$(SAGE_ROOT)/src/bin/sage-env' && \ '$$(SAGE_ROOT)/build/pkgs/$(1)/spkg-src' -# Recursive tox invocation (note - we do not set the environment here). +# Recursive tox invocation # Setting SAGE_SPKG_WHEELS is for the benefit of sagelib's tox.ini $(1)-tox-%: FORCE $(AM_V_at)cd '$$(SAGE_ROOT)/build/pkgs/$(1)/src' && \ - export PATH="$$(SAGE_ORIG_PATH)" && \ - SAGE_SPKG_WHEELS=$$(SAGE_LOCAL)/var/lib/sage/wheels \ + . '$$(SAGE_ROOT)/src/bin/sage-src-env-config' && \ + . '$$(SAGE_ROOT)/src/bin/sage-env-config' && \ + . '$$(SAGE_ROOT)/src/bin/sage-env' && \ + SAGE_SPKG_WHEELS=$$(SAGE_VENV)/var/lib/sage/wheels \ tox -v -v -v -e $$* .PHONY: $(1) $(1)-uninstall $(1)-clean $(1)-build-deps $(1)-no-deps $(1)-clean diff --git a/build/pkgs/_python3.10/distros/fedora.txt b/build/pkgs/_python3.10/distros/fedora.txt index 02cc9cf73d1..8d607cac749 100644 --- a/build/pkgs/_python3.10/distros/fedora.txt +++ b/build/pkgs/_python3.10/distros/fedora.txt @@ -1,2 +1,3 @@ python3.10 python3.10-devel +python3.10-setuptools diff --git a/build/pkgs/_python3.11/distros/fedora.txt b/build/pkgs/_python3.11/distros/fedora.txt index 7fe5c300aed..439583212d6 100644 --- a/build/pkgs/_python3.11/distros/fedora.txt +++ b/build/pkgs/_python3.11/distros/fedora.txt @@ -1,2 +1,3 @@ python3.11 python3.11-devel +python3.11-setuptools diff --git a/build/pkgs/_python3.12/distros/fedora.txt b/build/pkgs/_python3.12/distros/fedora.txt index c3e29a02d27..bfc5e84864c 100644 --- a/build/pkgs/_python3.12/distros/fedora.txt +++ b/build/pkgs/_python3.12/distros/fedora.txt @@ -1,2 +1,3 @@ python3.12 python3.12-devel +python3.12-setuptools diff --git a/build/pkgs/_python3.9/distros/fedora.txt b/build/pkgs/_python3.9/distros/fedora.txt index 0e9352ce64c..466ad79cab3 100644 --- a/build/pkgs/_python3.9/distros/fedora.txt +++ b/build/pkgs/_python3.9/distros/fedora.txt @@ -1,3 +1,4 @@ python3.9 +python3.9-devel # Except on centos-stream-8 and almalinux-8, where it is called python39 and python39-devel; we special-case this in tox.ini -# python3.9 does not exist any more +python3.9-setuptools diff --git a/build/pkgs/attrs/checksums.ini b/build/pkgs/attrs/checksums.ini index 7d271509d6d..988343df296 100644 --- a/build/pkgs/attrs/checksums.ini +++ b/build/pkgs/attrs/checksums.ini @@ -1,4 +1,5 @@ -tarball=attrs-VERSION-py3-none-any.whl -sha1=563b272af703f8960b76f6637d009fa5fc5864d3 -sha256=99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -upstream_url=https://pypi.io/packages/py3/a/attrs/attrs-VERSION-py3-none-any.whl +[attrs-24.1.0-py3-none-any.whl] +tarball=attrs-24.1.0-py3-none-any.whl +sha256=377b47448cb61fea38533f671fba0d0f8a96fd58facd4dc518e3dac9dbea0905 +upstream_url=https://files.pythonhosted.org/packages/9b/2b/913eda7a67f7bea7496c1a8e1666f48aa9f15520da79368e4ec1109e2690/attrs-24.1.0-py3-none-any.whl + diff --git a/build/pkgs/attrs/package-version.txt b/build/pkgs/attrs/package-version.txt index 11ebcd0e4f9..7c974b0f495 100644 --- a/build/pkgs/attrs/package-version.txt +++ b/build/pkgs/attrs/package-version.txt @@ -1 +1 @@ -23.2.0 +24.1.0 diff --git a/build/pkgs/clarabel/checksums.ini b/build/pkgs/clarabel/checksums.ini new file mode 100644 index 00000000000..18b86de9dc3 --- /dev/null +++ b/build/pkgs/clarabel/checksums.ini @@ -0,0 +1,35 @@ +[clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl] +tarball=clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl +sha256=702cc4666c0ccf893c936f9f1f55cbb3233ae2d5fa05f67b370ac3e7ec50f222 +upstream_url=https://files.pythonhosted.org/packages/8b/b9/e41f5316a2d4261c340d9fa6aa1694dd57d12cc45f1e5dfc5773d2b53d39/clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + +[clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.whl] +tarball=clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.whl +sha256=8ea616757b460153ead375b3dd3ce763d46fc3717248077bbfa7b2c844b1775f +upstream_url=https://files.pythonhosted.org/packages/65/75/b4f2b5f4a0af6975c463efe9ef580debff98ade6795e6e885babf7527586/clarabel-0.9.0-cp37-abi3-macosx_10_12_x86_64.whl + +[clarabel-0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=clarabel-0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=2b5ae16d7dd87aabf72260cf9590ba0d037c52d48555bcf3a86b1f0d9cf88dd4 +upstream_url=https://files.pythonhosted.org/packages/a5/2e/096e0bc32ffa7eadb69f6e768fbbc58acf0b0e4003db4bd70c79b1856c47/clarabel-0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[clarabel-0.9.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl] +tarball=clarabel-0.9.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl +sha256=85cb560a5c4cdfb079e3437e21f0b62b69ba766ae082aeb96ced0b5763214077 +upstream_url=https://files.pythonhosted.org/packages/d9/1a/4319fa902c9c3e350d134d78d79baa61c6e2e5e51050861ecc147c73f6a7/clarabel-0.9.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl + +[clarabel-0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=clarabel-0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=0eaeb3fbb5a90b598700d5435c7f102592a1a79ee25df5a097e0af575838786b +upstream_url=https://files.pythonhosted.org/packages/8c/12/e92ba69884f84e0f16a9fb5093522924502995348f0269cc42ed062f2edc/clarabel-0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[clarabel-0.9.0-cp37-abi3-win32.whl] +tarball=clarabel-0.9.0-cp37-abi3-win32.whl +sha256=759c2fa0ccc61ae1a02691c43753638a0ae793bf1de81c6f6763c346789a7e25 +upstream_url=https://files.pythonhosted.org/packages/2e/1f/ce55955a7ad5946cacd1f0aa76233ee354d4c357669ce81f1e5dc69be971/clarabel-0.9.0-cp37-abi3-win32.whl + +[clarabel-0.9.0-cp37-abi3-win_amd64.whl] +tarball=clarabel-0.9.0-cp37-abi3-win_amd64.whl +sha256=d24e4ed1b686eb2fe2a1b6e77935af6ad62a2c044131e70801ec1d3ef3d33280 +upstream_url=https://files.pythonhosted.org/packages/36/be/110fe7ca190e024e3185d6351645346b785da6933ce3fb382d4811215f8c/clarabel-0.9.0-cp37-abi3-win_amd64.whl + diff --git a/build/pkgs/clarabel/dependencies b/build/pkgs/clarabel/dependencies index 47296a7bace..8d5698b62b8 100644 --- a/build/pkgs/clarabel/dependencies +++ b/build/pkgs/clarabel/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) +numpy scipy | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/clarabel/package-version.txt b/build/pkgs/clarabel/package-version.txt new file mode 100644 index 00000000000..ac39a106c48 --- /dev/null +++ b/build/pkgs/clarabel/package-version.txt @@ -0,0 +1 @@ +0.9.0 diff --git a/build/pkgs/clarabel/requirements.txt b/build/pkgs/clarabel/version_requirements.txt similarity index 100% rename from build/pkgs/clarabel/requirements.txt rename to build/pkgs/clarabel/version_requirements.txt diff --git a/build/pkgs/cmake/checksums.ini b/build/pkgs/cmake/checksums.ini index 477a967711a..7bb087e28f2 100644 --- a/build/pkgs/cmake/checksums.ini +++ b/build/pkgs/cmake/checksums.ini @@ -1,4 +1,4 @@ tarball=cmake-VERSION.tar.gz -sha1=05de9ac807fefeb2a36ed5e8fcea376a00dd3d57 -sha256=fece24563f697870fbb982ea8bf17482c9d5f855d8c9bf0b82463d76c9e8d0cc +sha1=7cf72aa27d1a7791e035060031aebfdcf0a10e5a +sha256=46074c781eccebc433e98f0bbfa265ca3fd4381f245ca3b140e7711531d60db2 upstream_url=https://github.com/Kitware/CMake/releases/download/vVERSION/cmake-VERSION.tar.gz diff --git a/build/pkgs/cmake/package-version.txt b/build/pkgs/cmake/package-version.txt index f641ba7ef04..aaa0fde70b0 100644 --- a/build/pkgs/cmake/package-version.txt +++ b/build/pkgs/cmake/package-version.txt @@ -1 +1 @@ -3.27.8 +3.30.2 diff --git a/build/pkgs/comm/checksums.ini b/build/pkgs/comm/checksums.ini index 34f21ec0087..e7261280ba4 100644 --- a/build/pkgs/comm/checksums.ini +++ b/build/pkgs/comm/checksums.ini @@ -1,4 +1,5 @@ -tarball=comm-VERSION-py3-none-any.whl -sha1=e7e20f9c1524a9fe059c0b6df90a68e1cd2115a9 -sha256=6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a -upstream_url=https://pypi.io/packages/py3/c/comm/comm-VERSION-py3-none-any.whl +[comm-0.2.2-py3-none-any.whl] +tarball=comm-0.2.2-py3-none-any.whl +sha256=e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3 +upstream_url=https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl + diff --git a/build/pkgs/comm/dependencies b/build/pkgs/comm/dependencies index 73ec1534907..41828470d3d 100644 --- a/build/pkgs/comm/dependencies +++ b/build/pkgs/comm/dependencies @@ -1,4 +1,4 @@ -traitlets | $(PYTHON_TOOLCHAIN) $(PYTHON) +traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/comm/package-version.txt b/build/pkgs/comm/package-version.txt index 845639eef26..ee1372d33a2 100644 --- a/build/pkgs/comm/package-version.txt +++ b/build/pkgs/comm/package-version.txt @@ -1 +1 @@ -0.1.4 +0.2.2 diff --git a/build/pkgs/cvxpy/checksums.ini b/build/pkgs/cvxpy/checksums.ini index 025278a9b01..57e03a0c03a 100644 --- a/build/pkgs/cvxpy/checksums.ini +++ b/build/pkgs/cvxpy/checksums.ini @@ -1,4 +1,4 @@ tarball=cvxpy-VERSION.tar.gz -sha1=1ca24d9e2ee5add13b33724ab9a11e747fe4ed99 -sha256=7a9ef34e3c57ff8c844d86f0a3834fb5575af19233947639de0ba577c6122e3e +sha1=54f04968ed177e04c203087258b7fcc4a7f3dec9 +sha256=8231f006f6b55da141758282aecb788b3b5742448765dba6a9440b6336080ce3 upstream_url=https://pypi.io/packages/source/c/cvxpy/cvxpy-VERSION.tar.gz diff --git a/build/pkgs/cvxpy/dependencies b/build/pkgs/cvxpy/dependencies index 400617f69a8..074c4b71f5f 100644 --- a/build/pkgs/cvxpy/dependencies +++ b/build/pkgs/cvxpy/dependencies @@ -1,4 +1,4 @@ - numpy scipy glpk cvxopt osqp_python ecos_python scs clarabel | $(PYTHON_TOOLCHAIN) $(PYTHON) + numpy scipy glpk cvxopt osqp_python ecos_python scs clarabel | $(PYTHON_TOOLCHAIN) pybind11 $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/cvxpy/package-version.txt b/build/pkgs/cvxpy/package-version.txt index 347f5833ee6..4cda8f19edc 100644 --- a/build/pkgs/cvxpy/package-version.txt +++ b/build/pkgs/cvxpy/package-version.txt @@ -1 +1 @@ -1.4.1 +1.5.2 diff --git a/build/pkgs/cypari/checksums.ini b/build/pkgs/cypari/checksums.ini index 8bedd4cf52d..d183b3c567a 100644 --- a/build/pkgs/cypari/checksums.ini +++ b/build/pkgs/cypari/checksums.ini @@ -1,4 +1,4 @@ tarball=cypari2-VERSION.tar.gz -sha1=4cb5fc43899852b7fc0c0175e610318c38f0caac -sha256=1a25865c34f20b1dc95830798e34ab6436e278b8e0c80dc7bf0ab34c5db03ab8 +sha1=4e9f14d218bc1cea29e03a2ceec9bf3dfbfd5eb3 +sha256=817606bf661b71d33e1d012421907a4f8fb09dd81b7d3e3ae179b3978020bbf1 upstream_url=https://pypi.io/packages/source/c/cypari2/cypari2-VERSION.tar.gz diff --git a/build/pkgs/cypari/dependencies b/build/pkgs/cypari/dependencies index 69dfe7e7d8a..cbf047c8027 100644 --- a/build/pkgs/cypari/dependencies +++ b/build/pkgs/cypari/dependencies @@ -1,4 +1,4 @@ - cython pari cysignals | $(PYTHON_TOOLCHAIN) $(PYTHON) +pari cysignals | $(PYTHON_TOOLCHAIN) cython $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/cypari/package-version.txt b/build/pkgs/cypari/package-version.txt index cd57a8b95d6..ccbccc3dc62 100644 --- a/build/pkgs/cypari/package-version.txt +++ b/build/pkgs/cypari/package-version.txt @@ -1 +1 @@ -2.1.5 +2.2.0 diff --git a/build/pkgs/cypari/patches/trashcan.patch b/build/pkgs/cypari/patches/trashcan.patch deleted file mode 100644 index f4918d4cd39..00000000000 --- a/build/pkgs/cypari/patches/trashcan.patch +++ /dev/null @@ -1,47 +0,0 @@ -commit 78e6dcf937c960c51132132e14f86bddbbe5b7d9 -Author: Jeroen Demeyer -Date: Tue Feb 19 11:50:49 2019 +0100 - - Use the trashcan for Gen - -diff --git a/cypari2/gen.pxd b/cypari2/gen.pxd -index 2ac0669..664d57d 100644 ---- a/cypari2/gen.pxd -+++ b/cypari2/gen.pxd -@@ -1,3 +1,4 @@ -+cimport cython - from cpython.object cimport PyObject - from .types cimport GEN, pari_sp - -diff --git a/cypari2/gen.pyx b/cypari2/gen.pyx -index d268cf1..687f5b2 100644 ---- a/cypari2/gen.pyx -+++ b/cypari2/gen.pyx -@@ -135,6 +135,7 @@ cdef extern from *: - GEN new_nfeltup(GEN nf, GEN x, GEN zknf) - - -+@cython.trashcan(True) - cdef class Gen(Gen_base): - """ - Wrapper for a PARI ``GEN`` with memory management. -diff --git a/cypari2/pari_instance.pyx b/cypari2/pari_instance.pyx -index ba82438..d13bc45 100644 ---- a/cypari2/pari_instance.pyx -+++ b/cypari2/pari_instance.pyx -@@ -243,6 +243,15 @@ Reset default precision for the following tests: - - >>> pari.set_real_precision_bits(53) - -+Test the trashcan mechanism (without the trashcan, this would cause -+a stack overflow): -+ -+>>> pari.allocatemem(2**27, silent=True) -+>>> L = [pari(i) for i in range(2**20)] -+>>> x = pari.Pi() -+>>> del L -+>>> del x -+ - Test that interrupts work properly: - - >>> pari.allocatemem(8000000, 2**29) diff --git a/build/pkgs/ecos_python/checksums.ini b/build/pkgs/ecos_python/checksums.ini index 1b5791948e7..a47d4e991d3 100644 --- a/build/pkgs/ecos_python/checksums.ini +++ b/build/pkgs/ecos_python/checksums.ini @@ -1,4 +1,4 @@ tarball=ecos-VERSION.tar.gz -sha1=7afce63aec44522052e05fa2e1c82e12fe20fd45 -sha256=f48816d73b87ae325556ea537b7c8743187311403c80e3832035224156337c4e +sha1=d613ce1d845ad9dcf76d6ac4e49ccf192b40fb4e +sha256=64b3201c0e0a7f0129050557c4ac50b00031e80a10534506dba1200c8dc1efe4 upstream_url=https://pypi.io/packages/source/e/ecos/ecos-VERSION.tar.gz diff --git a/build/pkgs/ecos_python/package-version.txt b/build/pkgs/ecos_python/package-version.txt index 280a1e3368b..3d45b5c65a6 100644 --- a/build/pkgs/ecos_python/package-version.txt +++ b/build/pkgs/ecos_python/package-version.txt @@ -1 +1 @@ -2.0.12 +2.0.14 diff --git a/build/pkgs/fastjsonschema/checksums.ini b/build/pkgs/fastjsonschema/checksums.ini index ae58c4c8577..ad66a77926d 100644 --- a/build/pkgs/fastjsonschema/checksums.ini +++ b/build/pkgs/fastjsonschema/checksums.ini @@ -1,4 +1,5 @@ -tarball=fastjsonschema-VERSION.tar.gz -sha1=eab76262783dd81303e2b1da0914a1d5a7f388aa -sha256=e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd -upstream_url=https://pypi.io/packages/source/f/fastjsonschema/fastjsonschema-VERSION.tar.gz +[fastjsonschema-2.20.0-py3-none-any.whl] +tarball=fastjsonschema-2.20.0-py3-none-any.whl +sha256=5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a +upstream_url=https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl + diff --git a/build/pkgs/fastjsonschema/dependencies b/build/pkgs/fastjsonschema/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/fastjsonschema/dependencies +++ b/build/pkgs/fastjsonschema/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/fastjsonschema/package-version.txt b/build/pkgs/fastjsonschema/package-version.txt index cf8690732fe..7329e21c3bd 100644 --- a/build/pkgs/fastjsonschema/package-version.txt +++ b/build/pkgs/fastjsonschema/package-version.txt @@ -1 +1 @@ -2.18.0 +2.20.0 diff --git a/build/pkgs/fastjsonschema/spkg-install.in b/build/pkgs/fastjsonschema/spkg-install.in deleted file mode 100644 index 37ac1a53437..00000000000 --- a/build/pkgs/fastjsonschema/spkg-install.in +++ /dev/null @@ -1,2 +0,0 @@ -cd src -sdh_pip_install . diff --git a/build/pkgs/gap/SPKG.rst b/build/pkgs/gap/SPKG.rst index 2f59f140a01..a5a1dbc1782 100644 --- a/build/pkgs/gap/SPKG.rst +++ b/build/pkgs/gap/SPKG.rst @@ -25,26 +25,3 @@ Upstream Contact https://www.gap-system.org Mailing list at https://mail.gap-system.org/mailman/listinfo/gap - -Special Update/Build Instructions ---------------------------------- - -This is a stripped-down version of GAP. The downloading of the sources -and removal of unneeded parts is done by the script spkg-src. When you -update GAP, please also update and use the spkg-src script. - -- Do we really want to copy everything from the build directory??? - - You need the full GAP tree to compile/install many GAP packages. - -- There's apparently a command missing (in ``spkg-install``) building - the - (HTML?) documentation. Earlier changelog entries as well as the - description - above state the documentation was removed from the upstream - sources... - Since the (pre-)built HTML documentation is currently included, I've - commented out some lines in that part of ``spkg-install``. -leif - -Patches -~~~~~~~ diff --git a/build/pkgs/gap/checksums.ini b/build/pkgs/gap/checksums.ini index 2b1170e52d9..3704072d609 100644 --- a/build/pkgs/gap/checksums.ini +++ b/build/pkgs/gap/checksums.ini @@ -1,4 +1,4 @@ tarball=gap-VERSION.tar.gz -sha1=a6e36f3f874a2c46f51561402634497eab705cca -sha256=672308745eb78a222494ee8dd6786edd5bc331456fcc6456ac064bdb28d587a8 +sha1=cf91834954849dbaeae17079a4c4565bc28d03a8 +sha256=9794dbdba6fb998e0a2d0aa8ce21fc8848ad3d3f9cc9993b0b8e20be7e1dbeba upstream_url=https://github.com/gap-system/gap/releases/download/vVERSION/gap-VERSION.tar.gz diff --git a/build/pkgs/gap/package-version.txt b/build/pkgs/gap/package-version.txt index f1cd7de1de5..56d2fb548a2 100644 --- a/build/pkgs/gap/package-version.txt +++ b/build/pkgs/gap/package-version.txt @@ -1 +1 @@ -4.12.2 +4.13.1 diff --git a/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch b/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch new file mode 100644 index 00000000000..46f5e36f109 --- /dev/null +++ b/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch @@ -0,0 +1,29 @@ +From 89b95994807970d90671e1e02cc03ddca4cf0a10 Mon Sep 17 00:00:00 2001 +From: Matthias Koeppe +Date: Sat, 8 Jun 2024 14:01:16 -0700 +Subject: [PATCH] Makefile.rules [Darwin]: Remove use of '-single_module' + (obsolete), activate '-install_name' + +--- + Makefile.rules | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/Makefile.rules b/Makefile.rules +index 8bfd3dba0..adfed731f 100644 +--- a/Makefile.rules ++++ b/Makefile.rules +@@ -446,10 +446,7 @@ else ifneq (,$(findstring darwin,$(host_os))) + LINK_SHLIB_FLAGS = -dynamiclib + LINK_SHLIB_FLAGS += -compatibility_version $(LIBGAP_COMPAT_VER) + LINK_SHLIB_FLAGS += -current_version $(LIBGAP_CURRENT_VER) +- LINK_SHLIB_FLAGS += -Wl,-single_module +- +- # TODO: set install_name, at least for installed version of the lib? +- #LINK_SHLIB_FLAGS += -install_name $(libdir)/$(LIBGAP_FULL) ++ LINK_SHLIB_FLAGS += -install_name $(libdir)/$(LIBGAP_FULL) + + GAP_CPPFLAGS += -DPIC + GAP_CFLAGS += -fno-common +-- +2.42.0 + diff --git a/build/pkgs/gap/spkg-check.in b/build/pkgs/gap/spkg-check.in index d2fccda6e04..6dc12ca9266 100644 --- a/build/pkgs/gap/spkg-check.in +++ b/build/pkgs/gap/spkg-check.in @@ -10,7 +10,8 @@ cd pkg/io make cd ../.. -make testinstall +# This is the same as 'dev/ci.sh testinstall' (but dev/ci.sh is not part of the GAP tarball) +./gap tst/testinstall.g if [[ $? -ne 0 ]]; then exit 1 fi diff --git a/build/pkgs/gap/spkg-configure.m4 b/build/pkgs/gap/spkg-configure.m4 index d4c3680b430..ef8a3bf3da5 100644 --- a/build/pkgs/gap/spkg-configure.m4 +++ b/build/pkgs/gap/spkg-configure.m4 @@ -2,8 +2,8 @@ SAGE_SPKG_CONFIGURE([gap], [ # Default to installing the SPKG, if the check is run at all. sage_spkg_install_gap=yes - m4_pushdef([GAP_MINVER],["4.12.2"]) - m4_pushdef([GAP_LTVER],["4.13.0"]) + m4_pushdef([GAP_MINVER],["4.13.0"]) + m4_pushdef([GAP_LTVER],["5.0"]) SAGE_SPKG_DEPCHECK([ncurses readline zlib], [ AC_PATH_PROG(GAP, gap) diff --git a/build/pkgs/gsl/checksums.ini b/build/pkgs/gsl/checksums.ini index bfa1139780a..a633f28eda3 100644 --- a/build/pkgs/gsl/checksums.ini +++ b/build/pkgs/gsl/checksums.ini @@ -1,4 +1,4 @@ tarball=gsl-VERSION.tar.gz -sha1=549e1105cd1198537be9707257161531e109bd94 -sha256=dcb0fbd43048832b757ff9942691a8dd70026d5da0ff85601e52687f6deeb34b +sha1=5190579205ca2e8763ef83ee375f1da9b880461a +sha256=6a99eeed15632c6354895b1dd542ed5a855c0f15d9ad1326c6fe2b2c9e423190 upstream_url=https://ftp.gnu.org/gnu/gsl/gsl-VERSION.tar.gz diff --git a/build/pkgs/gsl/package-version.txt b/build/pkgs/gsl/package-version.txt index 860487ca19c..a4412fa745d 100644 --- a/build/pkgs/gsl/package-version.txt +++ b/build/pkgs/gsl/package-version.txt @@ -1 +1 @@ -2.7.1 +2.8 diff --git a/build/pkgs/gsl/patches/configure-big_sur.patch b/build/pkgs/gsl/patches/configure-big_sur.patch deleted file mode 100644 index aba05df4d8a..00000000000 --- a/build/pkgs/gsl/patches/configure-big_sur.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/configure.orig 2021-10-01 08:15:08.000000000 -0700 -+++ b/configure 2021-10-20 12:44:47.000000000 -0700 -@@ -8733,16 +8733,11 @@ - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; -- darwin*) # darwin 5.x on -- # if running on 10.5 or later, the deployment target defaults -- # to the OS version, if on x86, and 10.4, the deployment -- # target defaults to 10.4. Don't you love it? -- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in -- 10.0,*86*-darwin8*|10.0,*-darwin[91]*) -- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; -- 10.[012][,.]*) -+ darwin*) -+ case ${MACOSX_DEPLOYMENT_TARGET},$host in -+ 10.[012],*|,*powerpc*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; -- 10.*) -+ *) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; diff --git a/build/pkgs/json5/checksums.ini b/build/pkgs/json5/checksums.ini index d95e497ddc7..fa64aace0c1 100644 --- a/build/pkgs/json5/checksums.ini +++ b/build/pkgs/json5/checksums.ini @@ -1,4 +1,5 @@ -tarball=json5-VERSION-py2.py3-none-any.whl -sha1=54bf91b9c2812e82ccd212cefca5bc5607a538b4 -sha256=740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f -upstream_url=https://pypi.io/packages/py2.py3/j/json5/json5-VERSION-py2.py3-none-any.whl +[json5-0.9.25-py3-none-any.whl] +tarball=json5-0.9.25-py3-none-any.whl +sha256=34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f +upstream_url=https://files.pythonhosted.org/packages/8a/3c/4f8791ee53ab9eeb0b022205aa79387119a74cc9429582ce04098e6fc540/json5-0.9.25-py3-none-any.whl + diff --git a/build/pkgs/json5/dependencies b/build/pkgs/json5/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/json5/dependencies +++ b/build/pkgs/json5/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/json5/package-version.txt b/build/pkgs/json5/package-version.txt index 6d44d227cf9..ec9b69180ab 100644 --- a/build/pkgs/json5/package-version.txt +++ b/build/pkgs/json5/package-version.txt @@ -1 +1 @@ -0.9.14 +0.9.25 diff --git a/build/pkgs/jsonpointer/checksums.ini b/build/pkgs/jsonpointer/checksums.ini index df24503fc54..e798ad28756 100644 --- a/build/pkgs/jsonpointer/checksums.ini +++ b/build/pkgs/jsonpointer/checksums.ini @@ -1,4 +1,5 @@ -tarball=jsonpointer-VERSION-py2.py3-none-any.whl -sha1=de1b07c2d014f5b8e672cf0fb1225b2232d0b414 -sha256=15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a -upstream_url=https://pypi.io/packages/py2.py3/j/jsonpointer/jsonpointer-VERSION-py2.py3-none-any.whl +[jsonpointer-3.0.0-py2.py3-none-any.whl] +tarball=jsonpointer-3.0.0-py2.py3-none-any.whl +sha256=13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 +upstream_url=https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + diff --git a/build/pkgs/jsonpointer/dependencies b/build/pkgs/jsonpointer/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/jsonpointer/dependencies +++ b/build/pkgs/jsonpointer/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jsonpointer/package-version.txt b/build/pkgs/jsonpointer/package-version.txt index 6b4950e3de2..4a36342fcab 100644 --- a/build/pkgs/jsonpointer/package-version.txt +++ b/build/pkgs/jsonpointer/package-version.txt @@ -1 +1 @@ -2.4 +3.0.0 diff --git a/build/pkgs/jsonschema/SPKG.rst b/build/pkgs/jsonschema/SPKG.rst index bf655277b78..e5376e5a230 100644 --- a/build/pkgs/jsonschema/SPKG.rst +++ b/build/pkgs/jsonschema/SPKG.rst @@ -1,19 +1,18 @@ -jsonschema: Python implementation of JSON Schema -================================================ +jsonschema: Implementation of JSON Schema validation for Python +=============================================================== Description ----------- -jsonschema is an implementation of JSON Schema for Python +Implementation of JSON Schema validation for Python License ------- -MIT License - +MIT Upstream Contact ---------------- -Home page: http://github.com/Julian/jsonschema +https://pypi.org/project/jsonschema/ diff --git a/build/pkgs/jsonschema/checksums.ini b/build/pkgs/jsonschema/checksums.ini index e709e36e5d3..c41106adfcf 100644 --- a/build/pkgs/jsonschema/checksums.ini +++ b/build/pkgs/jsonschema/checksums.ini @@ -1,4 +1,5 @@ -tarball=jsonschema-VERSION-py3-none-any.whl -sha1=189537b18c91e60be991a3dba704577d19f8e48d -sha256=a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6 -upstream_url=https://pypi.io/packages/py3/j/jsonschema/jsonschema-VERSION-py3-none-any.whl +[jsonschema-4.22.0-py3-none-any.whl] +tarball=jsonschema-4.22.0-py3-none-any.whl +sha256=ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802 +upstream_url=https://files.pythonhosted.org/packages/c8/2f/324fab4be6fe37fb7b521546e8a557e6cf08c1c1b3d0b4839a00f589d9ef/jsonschema-4.22.0-py3-none-any.whl + diff --git a/build/pkgs/jsonschema/dependencies b/build/pkgs/jsonschema/dependencies index 8c7c4532c8d..14bf29a08ad 100644 --- a/build/pkgs/jsonschema/dependencies +++ b/build/pkgs/jsonschema/dependencies @@ -1,4 +1,4 @@ -jsonschema_specifications pyrsistent attrs fqdn isoduration jsonpointer uri_template webcolors | $(PYTHON_TOOLCHAIN) $(PYTHON) +attrs jsonschema_specifications referencing rpds_py | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jsonschema/package-version.txt b/build/pkgs/jsonschema/package-version.txt index ab268c2099f..d7638f377ef 100644 --- a/build/pkgs/jsonschema/package-version.txt +++ b/build/pkgs/jsonschema/package-version.txt @@ -1 +1 @@ -4.17.3 +4.22.0 diff --git a/build/pkgs/jsonschema/version_requirements.txt b/build/pkgs/jsonschema/version_requirements.txt index 904caddfed0..d89304b1a89 100644 --- a/build/pkgs/jsonschema/version_requirements.txt +++ b/build/pkgs/jsonschema/version_requirements.txt @@ -1 +1 @@ -jsonschema >=3.2.0 +jsonschema diff --git a/build/pkgs/jsonschema_specifications/checksums.ini b/build/pkgs/jsonschema_specifications/checksums.ini index df5d6944abd..fd52498cb57 100644 --- a/build/pkgs/jsonschema_specifications/checksums.ini +++ b/build/pkgs/jsonschema_specifications/checksums.ini @@ -1,4 +1,4 @@ tarball=jsonschema_specifications-VERSION-py3-none-any.whl -sha1=4132bed31478bc96960099e58ae4c083c514c551 -sha256=764a2b9325c225208121948b15f2b2d16fddbe223fdfc096b45c70c1f7f7b8c1 +sha1=2000de39fb573689f2119aa8ad9d1108cd1db217 +sha256=87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c upstream_url=https://pypi.io/packages/py3/j/jsonschema_specifications/jsonschema_specifications-VERSION-py3-none-any.whl diff --git a/build/pkgs/jsonschema_specifications/dependencies b/build/pkgs/jsonschema_specifications/dependencies index 19f2b856671..a3c7ef1aa96 100644 --- a/build/pkgs/jsonschema_specifications/dependencies +++ b/build/pkgs/jsonschema_specifications/dependencies @@ -1,4 +1,4 @@ - referencing | $(PYTHON_TOOLCHAIN) $(PYTHON) +importlib_resources referencing | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jsonschema_specifications/package-version.txt b/build/pkgs/jsonschema_specifications/package-version.txt index 5fe615f731b..7729d27eac0 100644 --- a/build/pkgs/jsonschema_specifications/package-version.txt +++ b/build/pkgs/jsonschema_specifications/package-version.txt @@ -1 +1 @@ -2023.3.3 +2023.12.1 diff --git a/build/pkgs/jupyter_client/checksums.ini b/build/pkgs/jupyter_client/checksums.ini index af7a000f71d..bb3122af56f 100644 --- a/build/pkgs/jupyter_client/checksums.ini +++ b/build/pkgs/jupyter_client/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_client-VERSION-py3-none-any.whl -sha1=341f822626b55b53f03a21a44d78dc203472406b -sha256=5eb9f55eb0650e81de6b7e34308d8b92d04fe4ec41cd8193a913979e33d8e1a5 -upstream_url=https://pypi.io/packages/py3/j/jupyter_client/jupyter_client-VERSION-py3-none-any.whl +[jupyter_client-8.6.2-py3-none-any.whl] +tarball=jupyter_client-8.6.2-py3-none-any.whl +sha256=50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f +upstream_url=https://files.pythonhosted.org/packages/cf/d3/c4bb02580bc0db807edb9a29b2d0c56031be1ef0d804336deb2699a470f6/jupyter_client-8.6.2-py3-none-any.whl + diff --git a/build/pkgs/jupyter_client/dependencies b/build/pkgs/jupyter_client/dependencies index 3818d456c82..fa8f9c0b8c8 100644 --- a/build/pkgs/jupyter_client/dependencies +++ b/build/pkgs/jupyter_client/dependencies @@ -1,4 +1,4 @@ - jupyter_core pyzmq dateutil tornado traitlets importlib_metadata | $(PYTHON_TOOLCHAIN) $(PYTHON) +importlib_metadata jupyter_core dateutil pyzmq tornado traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_client/package-version.txt b/build/pkgs/jupyter_client/package-version.txt index 56b6be4ebb2..7b8d3d832d3 100644 --- a/build/pkgs/jupyter_client/package-version.txt +++ b/build/pkgs/jupyter_client/package-version.txt @@ -1 +1 @@ -8.3.1 +8.6.2 diff --git a/build/pkgs/jupyter_core/SPKG.rst b/build/pkgs/jupyter_core/SPKG.rst index c4eb376e0c9..0802c4a9584 100644 --- a/build/pkgs/jupyter_core/SPKG.rst +++ b/build/pkgs/jupyter_core/SPKG.rst @@ -4,4 +4,15 @@ jupyter_core: Jupyter core package Description ----------- -Jupyter core package. A base package on which Jupyter projects rely. +Jupyter core package. A base package on which Jupyter projects rely + +License +------- + +BSD 3-Clause License + +Upstream Contact +---------------- + +https://pypi.org/project/jupyter-core/ + diff --git a/build/pkgs/jupyter_core/checksums.ini b/build/pkgs/jupyter_core/checksums.ini index 672c7f93bcc..f1265489d1b 100644 --- a/build/pkgs/jupyter_core/checksums.ini +++ b/build/pkgs/jupyter_core/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_core-VERSION.tar.gz -sha1=0fe33e3247e595cdb83e2220f02c566ea9397e6a -sha256=0c28db6cbe2c37b5b398e1a1a5b22f84fd64cd10afc1f6c05b02fb09481ba45f -upstream_url=https://pypi.io/packages/source/j/jupyter_core/jupyter_core-VERSION.tar.gz +[jupyter_core-5.7.2-py3-none-any.whl] +tarball=jupyter_core-5.7.2-py3-none-any.whl +sha256=4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409 +upstream_url=https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl + diff --git a/build/pkgs/jupyter_core/dependencies b/build/pkgs/jupyter_core/dependencies index 7099b915818..4faad956946 100644 --- a/build/pkgs/jupyter_core/dependencies +++ b/build/pkgs/jupyter_core/dependencies @@ -1,4 +1,4 @@ -platformdirs traitlets | $(PYTHON_TOOLCHAIN) hatchling $(PYTHON) +platformdirs traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_core/package-version.txt b/build/pkgs/jupyter_core/package-version.txt index 84197c89467..b64ab704878 100644 --- a/build/pkgs/jupyter_core/package-version.txt +++ b/build/pkgs/jupyter_core/package-version.txt @@ -1 +1 @@ -5.3.2 +5.7.2 diff --git a/build/pkgs/jupyter_core/spkg-install.in b/build/pkgs/jupyter_core/spkg-install.in deleted file mode 100644 index deba1bb42bb..00000000000 --- a/build/pkgs/jupyter_core/spkg-install.in +++ /dev/null @@ -1 +0,0 @@ -cd src && sdh_pip_install . diff --git a/build/pkgs/jupyter_events/checksums.ini b/build/pkgs/jupyter_events/checksums.ini index d7fc20e35ba..5aa69902afd 100644 --- a/build/pkgs/jupyter_events/checksums.ini +++ b/build/pkgs/jupyter_events/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_events-VERSION-py3-none-any.whl -sha1=1b3fd8c003ea9e51b0f2d38daa89fded161767f7 -sha256=57a2749f87ba387cd1bfd9b22a0875b889237dbf2edc2121ebb22bde47036c17 -upstream_url=https://pypi.io/packages/py3/j/jupyter_events/jupyter_events-VERSION-py3-none-any.whl +[jupyter_events-0.10.0-py3-none-any.whl] +tarball=jupyter_events-0.10.0-py3-none-any.whl +sha256=4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960 +upstream_url=https://files.pythonhosted.org/packages/a5/94/059180ea70a9a326e1815176b2370da56376da347a796f8c4f0b830208ef/jupyter_events-0.10.0-py3-none-any.whl + diff --git a/build/pkgs/jupyter_events/dependencies b/build/pkgs/jupyter_events/dependencies index f82f8a9adba..1d3b23e7858 100644 --- a/build/pkgs/jupyter_events/dependencies +++ b/build/pkgs/jupyter_events/dependencies @@ -1,4 +1,4 @@ -jsonschema python_json_logger pyyaml referencing rfc3339_validator rfc3986_validator | $(PYTHON_TOOLCHAIN) $(PYTHON) +jsonschema python_json_logger pyyaml referencing rfc3339_validator rfc3986_validator traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_events/package-version.txt b/build/pkgs/jupyter_events/package-version.txt index 844f6a91acb..78bc1abd14f 100644 --- a/build/pkgs/jupyter_events/package-version.txt +++ b/build/pkgs/jupyter_events/package-version.txt @@ -1 +1 @@ -0.6.3 +0.10.0 diff --git a/build/pkgs/jupyter_lsp/checksums.ini b/build/pkgs/jupyter_lsp/checksums.ini index b925e4da051..9ceaf9af307 100644 --- a/build/pkgs/jupyter_lsp/checksums.ini +++ b/build/pkgs/jupyter_lsp/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_lsp-VERSION-py3-none-any.whl -sha1=0f7a63d99c5cf624315583099f00eafc4b996b59 -sha256=9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f -upstream_url=https://pypi.io/packages/py3/j/jupyter_lsp/jupyter_lsp-VERSION-py3-none-any.whl +[jupyter_lsp-2.2.5-py3-none-any.whl] +tarball=jupyter_lsp-2.2.5-py3-none-any.whl +sha256=45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da +upstream_url=https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl + diff --git a/build/pkgs/jupyter_lsp/dependencies b/build/pkgs/jupyter_lsp/dependencies index 97d97af24c5..c7afba17179 100644 --- a/build/pkgs/jupyter_lsp/dependencies +++ b/build/pkgs/jupyter_lsp/dependencies @@ -1,4 +1,4 @@ -jupyter_server | $(PYTHON_TOOLCHAIN) $(PYTHON) +jupyter_server importlib_metadata | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_lsp/package-version.txt b/build/pkgs/jupyter_lsp/package-version.txt index ccbccc3dc62..21bb5e156fb 100644 --- a/build/pkgs/jupyter_lsp/package-version.txt +++ b/build/pkgs/jupyter_lsp/package-version.txt @@ -1 +1 @@ -2.2.0 +2.2.5 diff --git a/build/pkgs/jupyter_server/checksums.ini b/build/pkgs/jupyter_server/checksums.ini index 9519eaa2ae6..28be28ee730 100644 --- a/build/pkgs/jupyter_server/checksums.ini +++ b/build/pkgs/jupyter_server/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_server-VERSION-py3-none-any.whl -sha1=a54aa7f6f1657a55cae9ecc4a6654b6e3ca5fb73 -sha256=8e4b90380b59d7a1e31086c4692231f2a2ea4cb269f5516e60aba72ce8317fc9 -upstream_url=https://pypi.io/packages/py3/j/jupyter_server/jupyter_server-VERSION-py3-none-any.whl +[jupyter_server-2.14.2-py3-none-any.whl] +tarball=jupyter_server-2.14.2-py3-none-any.whl +sha256=47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd +upstream_url=https://files.pythonhosted.org/packages/57/e1/085edea6187a127ca8ea053eb01f4e1792d778b4d192c74d32eb6730fed6/jupyter_server-2.14.2-py3-none-any.whl + diff --git a/build/pkgs/jupyter_server/dependencies b/build/pkgs/jupyter_server/dependencies index 2b81efb7a64..53be91d67ac 100644 --- a/build/pkgs/jupyter_server/dependencies +++ b/build/pkgs/jupyter_server/dependencies @@ -1,4 +1,4 @@ -anyio argon2_cffi jinja2 jupyter_client jupyter_core jupyter_events jupyter_server_terminals nbconvert nbformat overrides platformdirs prometheus_client pyzmq send2trash terminado tornado traitlets websocket_client | $(PYTHON_TOOLCHAIN) $(PYTHON) +anyio argon2_cffi jinja2 jupyter_client jupyter_core jupyter_events jupyter_server_terminals nbconvert nbformat overrides packaging prometheus_client pyzmq send2trash terminado tornado traitlets websocket_client | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_server/package-version.txt b/build/pkgs/jupyter_server/package-version.txt index 2c9b4ef42ec..7243b12cf41 100644 --- a/build/pkgs/jupyter_server/package-version.txt +++ b/build/pkgs/jupyter_server/package-version.txt @@ -1 +1 @@ -2.7.3 +2.14.2 diff --git a/build/pkgs/jupyter_server_terminals/SPKG.rst b/build/pkgs/jupyter_server_terminals/SPKG.rst index 6624c35d243..1a86ccd2204 100644 --- a/build/pkgs/jupyter_server_terminals/SPKG.rst +++ b/build/pkgs/jupyter_server_terminals/SPKG.rst @@ -1,10 +1,10 @@ -jupyter_server_terminals: A Jupyter Server Extension Providing Terminals -======================================================================== +jupyter_server_terminals: Jupyter Server Extension Providing Terminals +====================================================================== Description ----------- -A Jupyter Server Extension Providing Terminals. +Jupyter Server Extension Providing Terminals License ------- diff --git a/build/pkgs/jupyter_server_terminals/checksums.ini b/build/pkgs/jupyter_server_terminals/checksums.ini index be5ba3efe9b..fb71b12f083 100644 --- a/build/pkgs/jupyter_server_terminals/checksums.ini +++ b/build/pkgs/jupyter_server_terminals/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyter_server_terminals-VERSION-py3-none-any.whl -sha1=fd1201e9f0064b2a5a05ed7346dfe52546f13b0b -sha256=75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36 -upstream_url=https://pypi.io/packages/py3/j/jupyter_server_terminals/jupyter_server_terminals-VERSION-py3-none-any.whl +[jupyter_server_terminals-0.5.3-py3-none-any.whl] +tarball=jupyter_server_terminals-0.5.3-py3-none-any.whl +sha256=41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa +upstream_url=https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl + diff --git a/build/pkgs/jupyter_server_terminals/dependencies b/build/pkgs/jupyter_server_terminals/dependencies index 6aedae84479..8c31c772709 100644 --- a/build/pkgs/jupyter_server_terminals/dependencies +++ b/build/pkgs/jupyter_server_terminals/dependencies @@ -1,4 +1,4 @@ -terminado | $(PYTHON_TOOLCHAIN) $(PYTHON) +terminado | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyter_server_terminals/package-version.txt b/build/pkgs/jupyter_server_terminals/package-version.txt index 6f2743d65dc..be14282b7ff 100644 --- a/build/pkgs/jupyter_server_terminals/package-version.txt +++ b/build/pkgs/jupyter_server_terminals/package-version.txt @@ -1 +1 @@ -0.4.4 +0.5.3 diff --git a/build/pkgs/jupyterlab/checksums.ini b/build/pkgs/jupyterlab/checksums.ini index eea8e9d4191..d46debea0f5 100644 --- a/build/pkgs/jupyterlab/checksums.ini +++ b/build/pkgs/jupyterlab/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyterlab-VERSION-py3-none-any.whl -sha1=4efdd879660e719fd49be6ec169272f32a16593e -sha256=67dbec7057c6ad46f08a3667a80bdb890df9453822c93b5ddfd5e8313a718ef9 -upstream_url=https://pypi.io/packages/py3/j/jupyterlab/jupyterlab-VERSION-py3-none-any.whl +[jupyterlab-4.2.4-py3-none-any.whl] +tarball=jupyterlab-4.2.4-py3-none-any.whl +sha256=807a7ec73637744f879e112060d4b9d9ebe028033b7a429b2d1f4fc523d00245 +upstream_url=https://files.pythonhosted.org/packages/f6/b2/ba6fba3f52f785ba9740a7954e0d4477828f7395ee9f2f4707db5835a833/jupyterlab-4.2.4-py3-none-any.whl + diff --git a/build/pkgs/jupyterlab/dependencies b/build/pkgs/jupyterlab/dependencies index e32c10b4fd4..16308e04d80 100644 --- a/build/pkgs/jupyterlab/dependencies +++ b/build/pkgs/jupyterlab/dependencies @@ -1,4 +1,4 @@ -async_lru importlib_metadata ipykernel jinja2 jupyter_core jupyter_lsp jupyter_server jupyterlab_server notebook_shim packaging traitlets tornado tomli httpx | $(PYTHON_TOOLCHAIN) $(PYTHON) +async_lru httpx importlib_metadata importlib_resources ipykernel jinja2 jupyter_core jupyter_lsp jupyter_server jupyterlab_server notebook_shim packaging tomli tornado traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyterlab/package-version.txt b/build/pkgs/jupyterlab/package-version.txt index de197cc337f..cf78d5b6a17 100644 --- a/build/pkgs/jupyterlab/package-version.txt +++ b/build/pkgs/jupyterlab/package-version.txt @@ -1 +1 @@ -4.1.3 +4.2.4 diff --git a/build/pkgs/jupyterlab_pygments/checksums.ini b/build/pkgs/jupyterlab_pygments/checksums.ini index 7cbeda65aab..85184794aec 100644 --- a/build/pkgs/jupyterlab_pygments/checksums.ini +++ b/build/pkgs/jupyterlab_pygments/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyterlab_pygments-VERSION-py2.py3-none-any.whl -sha1=601f547767fa867494ff0764891807904b8ebbd2 -sha256=2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f -upstream_url=https://pypi.io/packages/py2.py3/j/jupyterlab_pygments/jupyterlab_pygments-VERSION-py2.py3-none-any.whl +[jupyterlab_pygments-0.3.0-py3-none-any.whl] +tarball=jupyterlab_pygments-0.3.0-py3-none-any.whl +sha256=841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780 +upstream_url=https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl + diff --git a/build/pkgs/jupyterlab_pygments/dependencies b/build/pkgs/jupyterlab_pygments/dependencies index fd3f15b7aa3..644ad35f773 100644 --- a/build/pkgs/jupyterlab_pygments/dependencies +++ b/build/pkgs/jupyterlab_pygments/dependencies @@ -1,4 +1,4 @@ - pygments | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyterlab_pygments/package-version.txt b/build/pkgs/jupyterlab_pygments/package-version.txt index ee1372d33a2..0d91a54c7d4 100644 --- a/build/pkgs/jupyterlab_pygments/package-version.txt +++ b/build/pkgs/jupyterlab_pygments/package-version.txt @@ -1 +1 @@ -0.2.2 +0.3.0 diff --git a/build/pkgs/jupyterlab_server/checksums.ini b/build/pkgs/jupyterlab_server/checksums.ini index 84eeb7a8b8d..4f490c8a4e2 100644 --- a/build/pkgs/jupyterlab_server/checksums.ini +++ b/build/pkgs/jupyterlab_server/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyterlab_server-VERSION-py3-none-any.whl -sha1=1fff8c8bc4c81b006cb83d4524dc8a6f3364e57c -sha256=5f077e142bb8dc9b843d960f940c513581bceca3793a0d80f9c67d9522c4e876 -upstream_url=https://pypi.io/packages/py3/j/jupyterlab_server/jupyterlab_server-VERSION-py3-none-any.whl +[jupyterlab_server-2.27.3-py3-none-any.whl] +tarball=jupyterlab_server-2.27.3-py3-none-any.whl +sha256=e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4 +upstream_url=https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl + diff --git a/build/pkgs/jupyterlab_server/dependencies b/build/pkgs/jupyterlab_server/dependencies index 8a1817a0d0d..7b157997b91 100644 --- a/build/pkgs/jupyterlab_server/dependencies +++ b/build/pkgs/jupyterlab_server/dependencies @@ -1,4 +1,4 @@ -babel jupyter_events jupyter_server json5 jsonschema requests | $(PYTHON_TOOLCHAIN) $(PYTHON) +babel importlib_metadata jinja2 json5 jsonschema jupyter_server packaging requests | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyterlab_server/package-version.txt b/build/pkgs/jupyterlab_server/package-version.txt index ad2261920c0..2adce90d40c 100644 --- a/build/pkgs/jupyterlab_server/package-version.txt +++ b/build/pkgs/jupyterlab_server/package-version.txt @@ -1 +1 @@ -2.24.0 +2.27.3 diff --git a/build/pkgs/jupyterlab_widgets/checksums.ini b/build/pkgs/jupyterlab_widgets/checksums.ini index f7a3c9bbeb8..f13cb3a8b90 100644 --- a/build/pkgs/jupyterlab_widgets/checksums.ini +++ b/build/pkgs/jupyterlab_widgets/checksums.ini @@ -1,4 +1,5 @@ -tarball=jupyterlab_widgets-VERSION-py3-none-any.whl -sha1=b10775bb3966af627bb44fbda4efb553b24a5b93 -sha256=3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d -upstream_url=https://pypi.io/packages/py3/j/jupyterlab_widgets/jupyterlab_widgets-VERSION-py3-none-any.whl +[jupyterlab_widgets-3.0.11-py3-none-any.whl] +tarball=jupyterlab_widgets-3.0.11-py3-none-any.whl +sha256=78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0 +upstream_url=https://files.pythonhosted.org/packages/65/f6/659ca44182c86f57977e946047c339c717745fda9f43b7ac47f274e86553/jupyterlab_widgets-3.0.11-py3-none-any.whl + diff --git a/build/pkgs/jupyterlab_widgets/dependencies b/build/pkgs/jupyterlab_widgets/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/jupyterlab_widgets/dependencies +++ b/build/pkgs/jupyterlab_widgets/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/jupyterlab_widgets/package-version.txt b/build/pkgs/jupyterlab_widgets/package-version.txt index 747457c6d22..778bf95c00f 100644 --- a/build/pkgs/jupyterlab_widgets/package-version.txt +++ b/build/pkgs/jupyterlab_widgets/package-version.txt @@ -1 +1 @@ -3.0.9 +3.0.11 diff --git a/build/pkgs/meson/checksums.ini b/build/pkgs/meson/checksums.ini index 00cf028db1e..a0a393853a4 100644 --- a/build/pkgs/meson/checksums.ini +++ b/build/pkgs/meson/checksums.ini @@ -1,4 +1,4 @@ tarball=meson-VERSION-py3-none-any.whl -sha1=baf5b9bc9ca97f18c7dc87cfaf0e1dc4d617a4cf -sha256=d5223ecca9564d735d36daaba2571abc6c032c8c3a7ffa0674e803ef0c7e0219 +sha1=bb38454c2671960f188a2b566efc481e1d61d38f +sha256=5531e24e6cfd6000bf1c712793cf28dff032841370b1a3b941a894e4fde46e5a upstream_url=https://pypi.io/packages/py3/m/meson/meson-VERSION-py3-none-any.whl diff --git a/build/pkgs/meson/package-version.txt b/build/pkgs/meson/package-version.txt index 3a3cd8cc8b0..26ca594609a 100644 --- a/build/pkgs/meson/package-version.txt +++ b/build/pkgs/meson/package-version.txt @@ -1 +1 @@ -1.3.1 +1.5.1 diff --git a/build/pkgs/meson_python/checksums.ini b/build/pkgs/meson_python/checksums.ini index 7aa199d18fb..db1d0ecaf47 100644 --- a/build/pkgs/meson_python/checksums.ini +++ b/build/pkgs/meson_python/checksums.ini @@ -1,4 +1,4 @@ -tarball=meson_python-VERSION.tar.gz -sha1=71bf382c2f2e76aada2f511a84bd59a99a6b1238 -sha256=fddb73eecd49e89c1c41c87937cd89c2d0b65a1c63ba28238681d4bd9484d26f -upstream_url=https://pypi.io/packages/source/m/meson_python/meson_python-VERSION.tar.gz +tarball=meson_python-VERSION-py3-none-any.whl +sha1=acb6eba0ec6f5d2a6cfd719f254f3b9351fa99ac +sha256=842dc9f5dc29e55fc769ff1b6fe328412fe6c870220fc321060a1d2d395e69e8 +upstream_url=https://pypi.io/packages/py3/m/meson_python/meson_python-VERSION-py3-none-any.whl diff --git a/build/pkgs/meson_python/package-version.txt b/build/pkgs/meson_python/package-version.txt index a5510516948..04a373efe6b 100644 --- a/build/pkgs/meson_python/package-version.txt +++ b/build/pkgs/meson_python/package-version.txt @@ -1 +1 @@ -0.15.0 +0.16.0 diff --git a/build/pkgs/meson_python/spkg-install.in b/build/pkgs/meson_python/spkg-install.in deleted file mode 100644 index b3bbe7b8f3e..00000000000 --- a/build/pkgs/meson_python/spkg-install.in +++ /dev/null @@ -1,2 +0,0 @@ -cd src -sdh_pip_install --no-build-isolation --no-deps . diff --git a/build/pkgs/meson_python/version_requirements.txt b/build/pkgs/meson_python/version_requirements.txt index 9705cab644e..76c5596aad1 100644 --- a/build/pkgs/meson_python/version_requirements.txt +++ b/build/pkgs/meson_python/version_requirements.txt @@ -1 +1,2 @@ -meson-python +# per https://github.com/scipy/scipy/blob/maintenance/1.13.x/pyproject.toml +meson-python >=0.15.0 diff --git a/build/pkgs/nbclient/checksums.ini b/build/pkgs/nbclient/checksums.ini index 6290bb30c93..7806b1d252c 100644 --- a/build/pkgs/nbclient/checksums.ini +++ b/build/pkgs/nbclient/checksums.ini @@ -1,4 +1,5 @@ -tarball=nbclient-VERSION-py3-none-any.whl -sha1=fcb4ad9b3ea1bea4d305076c0a7640a483bd11f3 -sha256=25e861299e5303a0477568557c4045eccc7a34c17fc08e7959558707b9ebe548 -upstream_url=https://pypi.io/packages/py3/n/nbclient/nbclient-VERSION-py3-none-any.whl +[nbclient-0.10.0-py3-none-any.whl] +tarball=nbclient-0.10.0-py3-none-any.whl +sha256=f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f +upstream_url=https://files.pythonhosted.org/packages/66/e8/00517a23d3eeaed0513e718fbc94aab26eaa1758f5690fc8578839791c79/nbclient-0.10.0-py3-none-any.whl + diff --git a/build/pkgs/nbclient/dependencies b/build/pkgs/nbclient/dependencies index acec3fadace..0c38c687e2e 100644 --- a/build/pkgs/nbclient/dependencies +++ b/build/pkgs/nbclient/dependencies @@ -1,4 +1,4 @@ - jupyter_client nbformat | $(PYTHON_TOOLCHAIN) $(PYTHON) +jupyter_client jupyter_core nbformat traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/nbclient/package-version.txt b/build/pkgs/nbclient/package-version.txt index a3df0a6959e..78bc1abd14f 100644 --- a/build/pkgs/nbclient/package-version.txt +++ b/build/pkgs/nbclient/package-version.txt @@ -1 +1 @@ -0.8.0 +0.10.0 diff --git a/build/pkgs/nbconvert/checksums.ini b/build/pkgs/nbconvert/checksums.ini index 56a861567e4..dc069898d96 100644 --- a/build/pkgs/nbconvert/checksums.ini +++ b/build/pkgs/nbconvert/checksums.ini @@ -1,4 +1,5 @@ -tarball=nbconvert-VERSION-py3-none-any.whl -sha1=5317fa68bbd7f66fc3fcc5b0e6b0d6e2df967ba0 -sha256=39fe4b8bdd1b0104fdd86fc8a43a9077ba64c720bda4c6132690d917a0a154ee -upstream_url=https://pypi.io/packages/py3/n/nbconvert/nbconvert-VERSION-py3-none-any.whl +[nbconvert-7.16.4-py3-none-any.whl] +tarball=nbconvert-7.16.4-py3-none-any.whl +sha256=05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3 +upstream_url=https://files.pythonhosted.org/packages/b8/bb/bb5b6a515d1584aa2fd89965b11db6632e4bdc69495a52374bcc36e56cfa/nbconvert-7.16.4-py3-none-any.whl + diff --git a/build/pkgs/nbconvert/dependencies b/build/pkgs/nbconvert/dependencies index 4a7730e8e9f..6d1a71bcb1f 100644 --- a/build/pkgs/nbconvert/dependencies +++ b/build/pkgs/nbconvert/dependencies @@ -1,4 +1,4 @@ -mistune jinja2 pygments traitlets jupyter_core nbformat entrypoints bleach pandocfilters defusedxml jupyter_client jupyterlab_pygments nbclient beautifulsoup4 markupsafe tinycss2 | $(PYTHON_TOOLCHAIN) $(PYTHON) +beautifulsoup4 bleach defusedxml importlib_metadata jinja2 jupyter_core jupyterlab_pygments markupsafe mistune nbclient nbformat packaging pandocfilters pygments tinycss2 traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/nbconvert/package-version.txt b/build/pkgs/nbconvert/package-version.txt index 33d00300e4a..6bb95215ddd 100644 --- a/build/pkgs/nbconvert/package-version.txt +++ b/build/pkgs/nbconvert/package-version.txt @@ -1 +1 @@ -7.9.2 +7.16.4 diff --git a/build/pkgs/nbformat/checksums.ini b/build/pkgs/nbformat/checksums.ini index e7a225cadfe..b55ad89812d 100644 --- a/build/pkgs/nbformat/checksums.ini +++ b/build/pkgs/nbformat/checksums.ini @@ -1,4 +1,5 @@ -tarball=nbformat-VERSION-py3-none-any.whl -sha1=e38af74817e9d81101583363d9ffe349f0038eb9 -sha256=1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9 -upstream_url=https://pypi.io/packages/py3/n/nbformat/nbformat-VERSION-py3-none-any.whl +[nbformat-5.10.4-py3-none-any.whl] +tarball=nbformat-5.10.4-py3-none-any.whl +sha256=3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b +upstream_url=https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl + diff --git a/build/pkgs/nbformat/dependencies b/build/pkgs/nbformat/dependencies index 4e265a78b6a..5277cddfad8 100644 --- a/build/pkgs/nbformat/dependencies +++ b/build/pkgs/nbformat/dependencies @@ -1,4 +1,4 @@ -jsonschema fastjsonschema jupyter_core traitlets | $(PYTHON_TOOLCHAIN) $(PYTHON) +fastjsonschema jsonschema jupyter_core traitlets | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/nbformat/package-version.txt b/build/pkgs/nbformat/package-version.txt index da902181863..403c1cfcd18 100644 --- a/build/pkgs/nbformat/package-version.txt +++ b/build/pkgs/nbformat/package-version.txt @@ -1 +1 @@ -5.9.2 +5.10.4 diff --git a/build/pkgs/ninja_build/checksums.ini b/build/pkgs/ninja_build/checksums.ini index d640d72d1fc..245170a1449 100644 --- a/build/pkgs/ninja_build/checksums.ini +++ b/build/pkgs/ninja_build/checksums.ini @@ -1,4 +1,4 @@ tarball=ninja_build-VERSION.tar.gz -sha1=938723cdfc7a6f7c8f84c83b9a2cecdf1e5e1ad3 -sha256=31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea +sha1=f3a1a28e0e427be58b4f2ff2e61b7a4a0e4f0c24 +sha256=821bdff48a3f683bc4bb3b6f0b5fe7b2d647cf65d52aeb63328c91a6c6df285a upstream_url=https://github.com/ninja-build/ninja/archive/refs/tags/vVERSION.tar.gz diff --git a/build/pkgs/ninja_build/package-version.txt b/build/pkgs/ninja_build/package-version.txt index 720c7384c61..f8f4f03b3dc 100644 --- a/build/pkgs/ninja_build/package-version.txt +++ b/build/pkgs/ninja_build/package-version.txt @@ -1 +1 @@ -1.11.1 +1.12.1 diff --git a/build/pkgs/notebook/checksums.ini b/build/pkgs/notebook/checksums.ini index 2c1fd65675e..2b5383d4658 100644 --- a/build/pkgs/notebook/checksums.ini +++ b/build/pkgs/notebook/checksums.ini @@ -1,4 +1,5 @@ -tarball=notebook-VERSION-py3-none-any.whl -sha1=90ec65091058ac541a55cc2417de83c1bcb24985 -sha256=197d8e0595acabf4005851c8716e952a81b405f7aefb648067a761fbde267ce7 -upstream_url=https://pypi.io/packages/py3/n/notebook/notebook-VERSION-py3-none-any.whl +[notebook-7.2.1-py3-none-any.whl] +tarball=notebook-7.2.1-py3-none-any.whl +sha256=f45489a3995746f2195a137e0773e2130960b51c9ac3ce257dbc2705aab3a6ca +upstream_url=https://files.pythonhosted.org/packages/32/b4/b0cdaf52c35a3a40633136bee5152d6670acb555c698d23a3458dca65781/notebook-7.2.1-py3-none-any.whl + diff --git a/build/pkgs/notebook/dependencies b/build/pkgs/notebook/dependencies index 876c76eec23..4cf2f83b1bf 100644 --- a/build/pkgs/notebook/dependencies +++ b/build/pkgs/notebook/dependencies @@ -1,4 +1,4 @@ -jupyter_server jupyterlab_server jupyterlab notebook_shim | $(PYTHON_TOOLCHAIN) $(PYTHON) +jupyter_server jupyterlab_server jupyterlab notebook_shim tornado | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/notebook/package-version.txt b/build/pkgs/notebook/package-version.txt index 21c8c7b46b8..b26a34e4705 100644 --- a/build/pkgs/notebook/package-version.txt +++ b/build/pkgs/notebook/package-version.txt @@ -1 +1 @@ -7.1.1 +7.2.1 diff --git a/build/pkgs/notebook_shim/SPKG.rst b/build/pkgs/notebook_shim/SPKG.rst index 102ffbb5b99..895ec396483 100644 --- a/build/pkgs/notebook_shim/SPKG.rst +++ b/build/pkgs/notebook_shim/SPKG.rst @@ -1,10 +1,10 @@ -notebook_shim: A shim layer for notebook traits and config -========================================================== +notebook_shim: Shim layer for notebook traits and config +======================================================== Description ----------- -A shim layer for notebook traits and config +Shim layer for notebook traits and config License ------- diff --git a/build/pkgs/notebook_shim/checksums.ini b/build/pkgs/notebook_shim/checksums.ini index 001afb43e00..6a184634b10 100644 --- a/build/pkgs/notebook_shim/checksums.ini +++ b/build/pkgs/notebook_shim/checksums.ini @@ -1,4 +1,5 @@ -tarball=notebook_shim-VERSION-py3-none-any.whl -sha1=9bb3dce360ce69aec99f873d8e80c1e9fdf92fde -sha256=a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7 -upstream_url=https://pypi.io/packages/py3/n/notebook_shim/notebook_shim-VERSION-py3-none-any.whl +[notebook_shim-0.2.4-py3-none-any.whl] +tarball=notebook_shim-0.2.4-py3-none-any.whl +sha256=411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef +upstream_url=https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl + diff --git a/build/pkgs/notebook_shim/dependencies b/build/pkgs/notebook_shim/dependencies index 97d97af24c5..9eb8048f910 100644 --- a/build/pkgs/notebook_shim/dependencies +++ b/build/pkgs/notebook_shim/dependencies @@ -1,4 +1,4 @@ -jupyter_server | $(PYTHON_TOOLCHAIN) $(PYTHON) +jupyter_server | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/notebook_shim/package-version.txt b/build/pkgs/notebook_shim/package-version.txt index 7179039691c..abd410582de 100644 --- a/build/pkgs/notebook_shim/package-version.txt +++ b/build/pkgs/notebook_shim/package-version.txt @@ -1 +1 @@ -0.2.3 +0.2.4 diff --git a/build/pkgs/numpy/checksums.ini b/build/pkgs/numpy/checksums.ini index fde72f78b6d..2fe2b3b76d8 100644 --- a/build/pkgs/numpy/checksums.ini +++ b/build/pkgs/numpy/checksums.ini @@ -1,4 +1,4 @@ tarball=numpy-VERSION.tar.gz -sha1=915414f1efabd7c183583154cf1a709bd2745828 -sha256=697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4 +sha1=55afe1c742c810ab729b36f2fdad8015c545177e +sha256=485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3 upstream_url=https://pypi.io/packages/source/n/numpy/numpy-VERSION.tar.gz diff --git a/build/pkgs/numpy/package-version.txt b/build/pkgs/numpy/package-version.txt index f8f73814096..38f77a65b30 100644 --- a/build/pkgs/numpy/package-version.txt +++ b/build/pkgs/numpy/package-version.txt @@ -1 +1 @@ -1.26.3 +2.0.1 diff --git a/build/pkgs/openblas/checksums.ini b/build/pkgs/openblas/checksums.ini index e05d9117e1f..7d8c96ad5a0 100644 --- a/build/pkgs/openblas/checksums.ini +++ b/build/pkgs/openblas/checksums.ini @@ -1,4 +1,4 @@ tarball=openblas-VERSION.tar.gz -sha1=af6dce0e486e684be842053fcbd98eaf97e39749 -sha256=4e6e4f5cb14c209262e33e6816d70221a2fe49eb69eaf0a06f065598ac602c68 +sha1=f75172274a7ce69901605b8c759e2e0891c9b7f4 +sha256=f1003466ad074e9b0c8d421a204121100b0751c96fc6fcf3d1456bd12f8a00a1 upstream_url=https://github.com/xianyi/OpenBLAS/archive/vVERSION.tar.gz diff --git a/build/pkgs/openblas/package-version.txt b/build/pkgs/openblas/package-version.txt index e23fb32dfcb..9578e9400c1 100644 --- a/build/pkgs/openblas/package-version.txt +++ b/build/pkgs/openblas/package-version.txt @@ -1 +1 @@ -0.3.26 +0.3.28 diff --git a/build/pkgs/osqp_python/checksums.ini b/build/pkgs/osqp_python/checksums.ini index d8e1ae4b81b..e5721b6cace 100644 --- a/build/pkgs/osqp_python/checksums.ini +++ b/build/pkgs/osqp_python/checksums.ini @@ -1,4 +1,4 @@ tarball=osqp-VERSION.tar.gz -sha1=3358e48aa6d81496665a8b0ee157465ce6cd329a -sha256=03e460e683ec2ce0f839353ddfa3c4c8ffa509ab8cf6a2b2afbb586fa453e180 +sha1=61322b90282b764f7176d06ace418460604b9390 +sha256=554aa10dca8481978b4d334e28201f24ed18f294c5a84350ce2022a8b78f4d72 upstream_url=https://pypi.io/packages/source/o/osqp/osqp-VERSION.tar.gz diff --git a/build/pkgs/osqp_python/package-version.txt b/build/pkgs/osqp_python/package-version.txt index 844f6a91acb..f39f89bf51f 100644 --- a/build/pkgs/osqp_python/package-version.txt +++ b/build/pkgs/osqp_python/package-version.txt @@ -1 +1 @@ -0.6.3 +0.6.7.post1 diff --git a/build/pkgs/overrides/checksums.ini b/build/pkgs/overrides/checksums.ini index 2812a196d90..4aa2020836a 100644 --- a/build/pkgs/overrides/checksums.ini +++ b/build/pkgs/overrides/checksums.ini @@ -1,4 +1,5 @@ -tarball=overrides-VERSION-py3-none-any.whl -sha1=740e9e607a9e4f78dea7a1b82bcb27f285bc5f48 -sha256=3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d -upstream_url=https://pypi.io/packages/py3/o/overrides/overrides-VERSION-py3-none-any.whl +[overrides-7.7.0-py3-none-any.whl] +tarball=overrides-7.7.0-py3-none-any.whl +sha256=c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 +upstream_url=https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl + diff --git a/build/pkgs/overrides/dependencies b/build/pkgs/overrides/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/overrides/dependencies +++ b/build/pkgs/overrides/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/overrides/package-version.txt b/build/pkgs/overrides/package-version.txt index ba7f754d0c3..1985849fb58 100644 --- a/build/pkgs/overrides/package-version.txt +++ b/build/pkgs/overrides/package-version.txt @@ -1 +1 @@ -7.4.0 +7.7.0 diff --git a/build/pkgs/prometheus_client/SPKG.rst b/build/pkgs/prometheus_client/SPKG.rst index ba166a78ebc..4b0bc35359c 100644 --- a/build/pkgs/prometheus_client/SPKG.rst +++ b/build/pkgs/prometheus_client/SPKG.rst @@ -1,9 +1,18 @@ -prometheus_client: Python client for the systems monitoring and alerting toolkit Prometheus -=========================================================================================== +prometheus_client: Python client for the Prometheus monitoring system +===================================================================== Description ----------- -The official Python 2 and 3 client for Prometheus (see -https://prometheus.io), an open-source systems monitoring and alerting -toolkit. +Python client for the Prometheus monitoring system + +License +------- + +Apache Software License 2.0 + +Upstream Contact +---------------- + +https://pypi.org/project/prometheus-client/ + diff --git a/build/pkgs/prometheus_client/checksums.ini b/build/pkgs/prometheus_client/checksums.ini index 9f4fa1845da..6e96e839bf5 100644 --- a/build/pkgs/prometheus_client/checksums.ini +++ b/build/pkgs/prometheus_client/checksums.ini @@ -1,4 +1,5 @@ -tarball=prometheus_client-VERSION.tar.gz -sha1=dabd66e652ea8275b4980e337cefcea68cc0b560 -sha256=5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a -upstream_url=https://pypi.io/packages/source/p/prometheus-client/prometheus_client-VERSION.tar.gz +[prometheus_client-0.20.0-py3-none-any.whl] +tarball=prometheus_client-0.20.0-py3-none-any.whl +sha256=cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7 +upstream_url=https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl + diff --git a/build/pkgs/prometheus_client/dependencies b/build/pkgs/prometheus_client/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/prometheus_client/dependencies +++ b/build/pkgs/prometheus_client/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/prometheus_client/package-version.txt b/build/pkgs/prometheus_client/package-version.txt index 930e3000bdc..5a03fb737b3 100644 --- a/build/pkgs/prometheus_client/package-version.txt +++ b/build/pkgs/prometheus_client/package-version.txt @@ -1 +1 @@ -0.14.1 +0.20.0 diff --git a/build/pkgs/prometheus_client/spkg-install.in b/build/pkgs/prometheus_client/spkg-install.in deleted file mode 100644 index deba1bb42bb..00000000000 --- a/build/pkgs/prometheus_client/spkg-install.in +++ /dev/null @@ -1 +0,0 @@ -cd src && sdh_pip_install . diff --git a/build/pkgs/pybind11/checksums.ini b/build/pkgs/pybind11/checksums.ini index c3112e54327..12145b56ca2 100644 --- a/build/pkgs/pybind11/checksums.ini +++ b/build/pkgs/pybind11/checksums.ini @@ -1,4 +1,4 @@ -tarball=pybind11-VERSION.tar.gz -sha1=3c75333a9056f0be18eb612803cd46a2bb0c87fc -sha256=00cd59116a6e8155aecd9174f37ba299d1d397ed4a6b86ac1dfe01b3e40f2cc4 -upstream_url=https://pypi.io/packages/source/p/pybind11/pybind11-VERSION.tar.gz +tarball=pybind11-VERSION-py3-none-any.whl +sha1=cf71d901eec8652264b0d2e481dfbf2c1cba20fb +sha256=97881536abe0cd4260a9ccc5bf6d1cf3113318f08af1feb82d4b9f95e93f0aa4 +upstream_url=https://pypi.io/packages/py3/p/pybind11/pybind11-VERSION-py3-none-any.whl diff --git a/build/pkgs/pybind11/dependencies b/build/pkgs/pybind11/dependencies index ca33204bd52..644ad35f773 100644 --- a/build/pkgs/pybind11/dependencies +++ b/build/pkgs/pybind11/dependencies @@ -1 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) + +---------- +All lines of this file are ignored except the first. diff --git a/build/pkgs/pybind11/package-version.txt b/build/pkgs/pybind11/package-version.txt index 6ceb272eecd..94f15e9cc30 100644 --- a/build/pkgs/pybind11/package-version.txt +++ b/build/pkgs/pybind11/package-version.txt @@ -1 +1 @@ -2.11.1 +2.13.1 diff --git a/build/pkgs/pybind11/spkg-install.in b/build/pkgs/pybind11/spkg-install.in deleted file mode 100644 index deba1bb42bb..00000000000 --- a/build/pkgs/pybind11/spkg-install.in +++ /dev/null @@ -1 +0,0 @@ -cd src && sdh_pip_install . diff --git a/build/pkgs/pybind11/version_requirements.txt b/build/pkgs/pybind11/version_requirements.txt index 6c44c4bd07e..b619603e47f 100644 --- a/build/pkgs/pybind11/version_requirements.txt +++ b/build/pkgs/pybind11/version_requirements.txt @@ -1 +1,2 @@ -pybind11 >=2.6 +# per https://github.com/scipy/scipy/blob/maintenance/1.13.x/pyproject.toml +pybind11 >= 2.12.0 diff --git a/build/pkgs/pyrsistent/SPKG.rst b/build/pkgs/pyrsistent/SPKG.rst deleted file mode 100644 index d943e31aaf8..00000000000 --- a/build/pkgs/pyrsistent/SPKG.rst +++ /dev/null @@ -1,32 +0,0 @@ -pyrsistent: Persistent data structures in Python -================================================ - -Description ------------ - -Pyrsistent is a number of persistent collections (by some referred to as -functional data structures). Persistent in the sense that they are immutable. - -License -------- - -MIT License - - -Upstream Contact ----------------- - -Home page: http://github.com/tobgu/pyrsistent/ - -Dependencies ------------- - -- Python -- Setuptools -- hypothesis -- memory-profiler -- pyperform -- pytest -- Sphinx -- sphinx-rtd-theme -- tox diff --git a/build/pkgs/pyrsistent/checksums.ini b/build/pkgs/pyrsistent/checksums.ini deleted file mode 100644 index b7a30f5a171..00000000000 --- a/build/pkgs/pyrsistent/checksums.ini +++ /dev/null @@ -1,4 +0,0 @@ -tarball=pyrsistent-VERSION.tar.gz -sha1=79980873658f7634ae25758b9710088b62e0612a -sha256=1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440 -upstream_url=https://pypi.io/packages/source/p/pyrsistent/pyrsistent-VERSION.tar.gz diff --git a/build/pkgs/pyrsistent/distros/conda.txt b/build/pkgs/pyrsistent/distros/conda.txt deleted file mode 100644 index c44a762ba0b..00000000000 --- a/build/pkgs/pyrsistent/distros/conda.txt +++ /dev/null @@ -1 +0,0 @@ -pyrsistent diff --git a/build/pkgs/pyrsistent/distros/fedora.txt b/build/pkgs/pyrsistent/distros/fedora.txt deleted file mode 100644 index 77485df49f0..00000000000 --- a/build/pkgs/pyrsistent/distros/fedora.txt +++ /dev/null @@ -1 +0,0 @@ -python3-pyrsistent diff --git a/build/pkgs/pyrsistent/distros/gentoo.txt b/build/pkgs/pyrsistent/distros/gentoo.txt deleted file mode 100644 index 83439cebfe4..00000000000 --- a/build/pkgs/pyrsistent/distros/gentoo.txt +++ /dev/null @@ -1 +0,0 @@ -dev-python/pyrsistent diff --git a/build/pkgs/pyrsistent/distros/macports.txt b/build/pkgs/pyrsistent/distros/macports.txt deleted file mode 100644 index a0c9da3d19b..00000000000 --- a/build/pkgs/pyrsistent/distros/macports.txt +++ /dev/null @@ -1 +0,0 @@ -py-pyrsistent diff --git a/build/pkgs/pyrsistent/distros/repology.txt b/build/pkgs/pyrsistent/distros/repology.txt deleted file mode 100644 index 4b8b8a25979..00000000000 --- a/build/pkgs/pyrsistent/distros/repology.txt +++ /dev/null @@ -1,2 +0,0 @@ -pyrsistent -python:pyrsistent diff --git a/build/pkgs/pyrsistent/distros/void.txt b/build/pkgs/pyrsistent/distros/void.txt deleted file mode 100644 index 77485df49f0..00000000000 --- a/build/pkgs/pyrsistent/distros/void.txt +++ /dev/null @@ -1 +0,0 @@ -python3-pyrsistent diff --git a/build/pkgs/pyrsistent/package-version.txt b/build/pkgs/pyrsistent/package-version.txt deleted file mode 100644 index b72b05ede10..00000000000 --- a/build/pkgs/pyrsistent/package-version.txt +++ /dev/null @@ -1 +0,0 @@ -0.19.3 diff --git a/build/pkgs/pyrsistent/spkg-configure.m4 b/build/pkgs/pyrsistent/spkg-configure.m4 deleted file mode 100644 index f7ca75dbac5..00000000000 --- a/build/pkgs/pyrsistent/spkg-configure.m4 +++ /dev/null @@ -1 +0,0 @@ -SAGE_SPKG_CONFIGURE([pyrsistent], [SAGE_PYTHON_PACKAGE_CHECK([pyrsistent])]) diff --git a/build/pkgs/pyrsistent/spkg-install.in b/build/pkgs/pyrsistent/spkg-install.in deleted file mode 100644 index c896e17115c..00000000000 --- a/build/pkgs/pyrsistent/spkg-install.in +++ /dev/null @@ -1,14 +0,0 @@ -if [ -z "$SAGE_LOCAL" ]; then - echo >&2 "SAGE_LOCAL undefined ... exiting" - echo >&2 "Maybe run 'sage --sh'?" - exit 1 -fi - -cd src - -sdh_pip_install . - -if [ $? -ne 0 ]; then - echo "Error installing pyrsistent ... exiting" - exit 1 -fi diff --git a/build/pkgs/pyrsistent/version_requirements.txt b/build/pkgs/pyrsistent/version_requirements.txt deleted file mode 100644 index e2e8c5f1c74..00000000000 --- a/build/pkgs/pyrsistent/version_requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pyrsistent >=0.16.0 diff --git a/build/pkgs/pythran/checksums.ini b/build/pkgs/pythran/checksums.ini index 03d21286397..1ec089593e4 100644 --- a/build/pkgs/pythran/checksums.ini +++ b/build/pkgs/pythran/checksums.ini @@ -1,4 +1,4 @@ tarball=pythran-VERSION.tar.gz -sha1=dc8a6035c0c46d36630085003160a3aba4444add -sha256=f9bc61bcb96df2cd4b578abc5a62dfb3fbb0b0ef02c264513dfb615c5f87871c +sha1=a19c84c9f3665a60da8c355aa954109f96e14562 +sha256=861748c0f9c7d422b32724b114b3817d818ed4eab86c09781aa0a3f7ceabb7f9 upstream_url=https://pypi.io/packages/source/p/pythran/pythran-VERSION.tar.gz diff --git a/build/pkgs/pythran/package-version.txt b/build/pkgs/pythran/package-version.txt index a5510516948..2a0970ca757 100644 --- a/build/pkgs/pythran/package-version.txt +++ b/build/pkgs/pythran/package-version.txt @@ -1 +1 @@ -0.15.0 +0.16.1 diff --git a/build/pkgs/pythran/version_requirements.txt b/build/pkgs/pythran/version_requirements.txt index f365e5f4971..ff8b5f24aa1 100644 --- a/build/pkgs/pythran/version_requirements.txt +++ b/build/pkgs/pythran/version_requirements.txt @@ -1 +1,2 @@ -pythran >=0.12.1 +# per https://github.com/scipy/scipy/blob/maintenance/1.13.x/pyproject.toml +pythran >=0.14 diff --git a/build/pkgs/referencing/checksums.ini b/build/pkgs/referencing/checksums.ini index 293629ca16d..de509c55fc2 100644 --- a/build/pkgs/referencing/checksums.ini +++ b/build/pkgs/referencing/checksums.ini @@ -1,4 +1,4 @@ tarball=referencing-VERSION-py3-none-any.whl -sha1=9d710ba3a604d24ffded218a3813b5fd1fe2e495 -sha256=160f24a7d2411dc82b1efd96dfb083ee9e5cc9bc8e492d323e0dd853989d37b3 +sha1=99eff1ea1adcc39e04dbed8487bc01974766646e +sha256=eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de upstream_url=https://pypi.io/packages/py3/r/referencing/referencing-VERSION-py3-none-any.whl diff --git a/build/pkgs/referencing/dependencies b/build/pkgs/referencing/dependencies index 39c6d3527b3..4e1a55d2f84 100644 --- a/build/pkgs/referencing/dependencies +++ b/build/pkgs/referencing/dependencies @@ -1,4 +1,4 @@ -attrs pyrsistent | $(PYTHON_TOOLCHAIN) $(PYTHON) +attrs rpds_py | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/referencing/package-version.txt b/build/pkgs/referencing/package-version.txt index ca222b7cf39..731b95d7fc8 100644 --- a/build/pkgs/referencing/package-version.txt +++ b/build/pkgs/referencing/package-version.txt @@ -1 +1 @@ -0.23.0 +0.35.1 diff --git a/build/pkgs/rpds_py/SPKG.rst b/build/pkgs/rpds_py/SPKG.rst new file mode 100644 index 00000000000..657c4df414a --- /dev/null +++ b/build/pkgs/rpds_py/SPKG.rst @@ -0,0 +1,18 @@ +rpds_py: Python bindings to Rust's persistent data structures (rpds) +==================================================================== + +Description +----------- + +Python bindings to Rust's persistent data structures (rpds) + +License +------- + +MIT + +Upstream Contact +---------------- + +https://pypi.org/project/rpds-py/ + diff --git a/build/pkgs/rpds_py/checksums.ini b/build/pkgs/rpds_py/checksums.ini new file mode 100644 index 00000000000..e2e459d4c0f --- /dev/null +++ b/build/pkgs/rpds_py/checksums.ini @@ -0,0 +1,325 @@ +[rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl +sha256=d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53 +upstream_url=https://files.pythonhosted.org/packages/a1/eb/5b7591bb8d9f710df243a3b6304a2b70db5a426a2bd478c2912f8b81b806/rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl + +[rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl +sha256=732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80 +upstream_url=https://files.pythonhosted.org/packages/b9/9a/f1cce2481968d0ff1301d6da02bb977d7c7dc2ad9d218281ead38cc7f1ae/rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9 +upstream_url=https://files.pythonhosted.org/packages/f3/16/7ddc46210ec4b52614c5d5ed72ca0afd12b6c6af1d7cb3859b2e7faa8ffe/rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl +sha256=7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d +upstream_url=https://files.pythonhosted.org/packages/fd/6a/e67b83791863db607a297b822fe95813c6cbff979608496f47d81ad45fea/rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl +sha256=38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09 +upstream_url=https://files.pythonhosted.org/packages/d7/a9/b25013071a61f008a8266a208e701cf8ec2c2946feb6005b3ec454f63a66/rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl +sha256=08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944 +upstream_url=https://files.pythonhosted.org/packages/57/65/b9769f891d0f2f915151f6d172f82ce182cedf950bcc65af4e853d794421/rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0 +upstream_url=https://files.pythonhosted.org/packages/e5/20/10c12b1acb102c4981a7e1dc86b60e36c1d5c940a7bda48643542f80dbff/rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl] +tarball=rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl +sha256=ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d +upstream_url=https://files.pythonhosted.org/packages/73/5b/bf77d1fe5025eeec85d62e389edacf073b93553b4837f8221093acc3ed7e/rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl + +[rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl +sha256=81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60 +upstream_url=https://files.pythonhosted.org/packages/c2/b9/dcb20646cda07b4e9db3b346c19a4685623c9a9aa8ad8a566776def0da33/rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl + +[rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl] +tarball=rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl +sha256=f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da +upstream_url=https://files.pythonhosted.org/packages/55/5c/f59ed857a85d6713d936d70e3235a7c9bc51bc83ab7c1b4e9b4f9371abbc/rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl + +[rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl] +tarball=rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl +sha256=d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1 +upstream_url=https://files.pythonhosted.org/packages/4f/3c/2807bb396f1d940813d1ec39efb8984ec01e84e2064db9a06bf314f3658d/rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl + +[rpds_py-0.18.1-cp310-none-win32.whl] +tarball=rpds_py-0.18.1-cp310-none-win32.whl +sha256=c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333 +upstream_url=https://files.pythonhosted.org/packages/d2/13/495eea6921b280ac04602fc3cc4b385ab985a2eb3e450281d02ce98872bc/rpds_py-0.18.1-cp310-none-win32.whl + +[rpds_py-0.18.1-cp310-none-win_amd64.whl] +tarball=rpds_py-0.18.1-cp310-none-win_amd64.whl +sha256=8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a +upstream_url=https://files.pythonhosted.org/packages/1b/bf/c8f8b5d1da7f0673998c63d2246987773c3422e1c2482bbf511b7fffe184/rpds_py-0.18.1-cp310-none-win_amd64.whl + +[rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl +sha256=6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8 +upstream_url=https://files.pythonhosted.org/packages/0c/f3/454ef9c66219ea511991e024f3a379fca618acd4cbe12e369b2d02f9d0b6/rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl + +[rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl +sha256=8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d +upstream_url=https://files.pythonhosted.org/packages/58/e3/b5eb611e2d51688726533bb97b420d36a55d4560c53d016e977ff6d48116/rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7 +upstream_url=https://files.pythonhosted.org/packages/92/48/32bed868dd4e7d16e26457cc0b8634d6b16cb0e082a93f044ef5f7c77361/rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl +sha256=07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc +upstream_url=https://files.pythonhosted.org/packages/77/66/905aa687ea072d8980f7b14eb9e3c3023f5f3892eb8b88be024094956014/rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl +sha256=8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07 +upstream_url=https://files.pythonhosted.org/packages/4e/6c/c658183fc2d2a6ed97b0816ab4fef59d609e596bf6f5f0898ae955c14885/rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl +sha256=489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261 +upstream_url=https://files.pythonhosted.org/packages/91/33/b680feac0159b5b66ebb9e6d635d78e94486b0b7ed58bea273be2cc80817/rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100 +upstream_url=https://files.pythonhosted.org/packages/1b/a0/a3702128743ae5bf14175a7333a4741db167f62d42f70e0edc15d9cd45c5/rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl] +tarball=rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl +sha256=967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8 +upstream_url=https://files.pythonhosted.org/packages/c1/3b/a4ed8b067a8f55df92dc1bc4d20858f02ddfdba3057f96759f4dd1bff7af/rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl + +[rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl +sha256=2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7 +upstream_url=https://files.pythonhosted.org/packages/f4/ba/adb81247a2fe211ff74cd4c2790454bbf37eb7430ee898e4aa7ce5cb6507/rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl + +[rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl] +tarball=rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl +sha256=f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e +upstream_url=https://files.pythonhosted.org/packages/52/fc/1eb8dcf82ec8d1252c060644fa44478660e94637ddd91dc8d452b467f359/rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl + +[rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl] +tarball=rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl +sha256=9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88 +upstream_url=https://files.pythonhosted.org/packages/a9/3f/0b8e2ac89076fede032aae3fc9cf9390c6fd99a470b238fb62bbc64f4cbf/rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl + +[rpds_py-0.18.1-cp311-none-win32.whl] +tarball=rpds_py-0.18.1-cp311-none-win32.whl +sha256=c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb +upstream_url=https://files.pythonhosted.org/packages/74/e0/f9dc97509b3048ddc3ab7b0cd48bd25f78dff45bec463c62b0171c57398c/rpds_py-0.18.1-cp311-none-win32.whl + +[rpds_py-0.18.1-cp311-none-win_amd64.whl] +tarball=rpds_py-0.18.1-cp311-none-win_amd64.whl +sha256=70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2 +upstream_url=https://files.pythonhosted.org/packages/ff/26/0778cc18815f20e37eb492bfed622d01722db38b2f3f86790753b01b2a73/rpds_py-0.18.1-cp311-none-win_amd64.whl + +[rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl +sha256=3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3 +upstream_url=https://files.pythonhosted.org/packages/03/04/a39fc930b1ab45943b7f3a8d990a3c731b37541d9eb58c5664374c2ce007/rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl + +[rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl +sha256=05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee +upstream_url=https://files.pythonhosted.org/packages/97/2a/e96015e3e6c0b1d5c06a009ab058f30776a4a6e1b14773ad7beefac82b99/rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b +upstream_url=https://files.pythonhosted.org/packages/19/38/eb7ae2b3ca5001b74536a67555e65202bedd1302f3d5d5000f7b0dc67ba6/rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl +sha256=ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43 +upstream_url=https://files.pythonhosted.org/packages/20/6a/571d8b2afa73bf750f86eeaad7e132c7cce1b0a22cc0ab2c53545bbac6e1/rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl +sha256=b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184 +upstream_url=https://files.pythonhosted.org/packages/3c/b1/af0a13cdcd9183ec6f4ea9f2ae8cb48a697db0961a3f80e11a937af91f28/rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl +sha256=19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6 +upstream_url=https://files.pythonhosted.org/packages/03/30/067d42b83d2b4e0c918a3e130236423cb3c7da0920cc162c5fce8f944205/rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8 +upstream_url=https://files.pythonhosted.org/packages/28/1c/2e208636275eab9636981fee10cb5cdaf3d5a202c3c16bf31fdd52ee08d0/rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl] +tarball=rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl +sha256=d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac +upstream_url=https://files.pythonhosted.org/packages/45/04/8fd5e166e8bb6d386491f41da51ae07118deb5461114f9eb160a7c10cedc/rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl + +[rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl +sha256=e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c +upstream_url=https://files.pythonhosted.org/packages/6b/b8/5da92178ecd95f6193cb4144f5c2a21bd6d743200c0739c9290c6240bfc1/rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl + +[rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl] +tarball=rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl +sha256=f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac +upstream_url=https://files.pythonhosted.org/packages/d1/28/e63095852b338b4c476f34fca47d87befb19f219a326fd3f3e3749e1a49b/rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl + +[rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl] +tarball=rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl +sha256=2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a +upstream_url=https://files.pythonhosted.org/packages/63/5e/20602b2cfdf0cafa8b1668cf64ccdb32d43dcb996d3ba456fcc02e791a88/rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl + +[rpds_py-0.18.1-cp312-none-win32.whl] +tarball=rpds_py-0.18.1-cp312-none-win32.whl +sha256=1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6 +upstream_url=https://files.pythonhosted.org/packages/fd/c6/947a657bc116c985517e7a7efe01a043f263ee2dd2c9875cedc8ebf26373/rpds_py-0.18.1-cp312-none-win32.whl + +[rpds_py-0.18.1-cp312-none-win_amd64.whl] +tarball=rpds_py-0.18.1-cp312-none-win_amd64.whl +sha256=720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72 +upstream_url=https://files.pythonhosted.org/packages/01/7d/8552e329973a198e5e150cc6be068f5cbae797a89e64c02bbd47bd397dee/rpds_py-0.18.1-cp312-none-win_amd64.whl + +[rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl +sha256=c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74 +upstream_url=https://files.pythonhosted.org/packages/db/89/c0e8e04be0d4ebb390d9b0941288a0268b5d1a98a6eec22723e009c9334f/rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl + +[rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl +sha256=aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8 +upstream_url=https://files.pythonhosted.org/packages/65/42/e8ea20e5ecbd3ed2228500db56024fc09f130a75bf9d530c88aca4f57aa6/rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20 +upstream_url=https://files.pythonhosted.org/packages/59/21/26b0b40d3945e2a83d3626dff45ca65d4d719f914bbcbc23e43162b5cd8d/rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl +sha256=ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc +upstream_url=https://files.pythonhosted.org/packages/11/12/866549e2af13cc70f23ec297d9bbdb9cf97745392bfdf61cbd946a7d7ca6/rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl +sha256=338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724 +upstream_url=https://files.pythonhosted.org/packages/e8/81/d47f29b80a9cd9ea81bd03561c7e0515f2bbe823767864f91745a3906cb0/rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl +sha256=7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104 +upstream_url=https://files.pythonhosted.org/packages/ba/47/7995225572d53b14bafb9d406f52145b6a082009cf10143646d3f22913f2/rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5 +upstream_url=https://files.pythonhosted.org/packages/6b/2d/7ce6b2fe57d288b0c3e735e79612e79cddb52b6042b68e9c329e25c42ff5/rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl] +tarball=rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl +sha256=207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0 +upstream_url=https://files.pythonhosted.org/packages/a5/2d/2447c5a8872097a7b6bb7d28305fc85d27d797bf9715d5ea44f36eacabc7/rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl + +[rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl +sha256=6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d +upstream_url=https://files.pythonhosted.org/packages/e5/5a/2e0ac1c38021da0055f08a0f49be29f64df6dcffcdd63b2d38c402e94489/rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl + +[rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl] +tarball=rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl +sha256=5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e +upstream_url=https://files.pythonhosted.org/packages/6f/3e/efa774354adc00b3d3dbae80daf3fbd0155d68c246d0b41f626d53f329d1/rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl + +[rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl] +tarball=rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl +sha256=06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc +upstream_url=https://files.pythonhosted.org/packages/19/4e/e72c314d3a5933aa37cdd045ec21e1b0ad9cf3b38166b61732481d3a4a00/rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl + +[rpds_py-0.18.1-cp38-none-win32.whl] +tarball=rpds_py-0.18.1-cp38-none-win32.whl +sha256=312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9 +upstream_url=https://files.pythonhosted.org/packages/85/d1/af79ddf8087c350c4534a0fabc340befd4b066e0db4548669e57ab1a2b2b/rpds_py-0.18.1-cp38-none-win32.whl + +[rpds_py-0.18.1-cp38-none-win_amd64.whl] +tarball=rpds_py-0.18.1-cp38-none-win_amd64.whl +sha256=9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2 +upstream_url=https://files.pythonhosted.org/packages/d1/db/babfc21d701ab9a7192b634803881e450bb73b9e8894b7f10d1015fedec1/rpds_py-0.18.1-cp38-none-win_amd64.whl + +[rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl +sha256=19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93 +upstream_url=https://files.pythonhosted.org/packages/d7/a0/15114fa1e4427b966e686f10fbad8c23a464d226d34a6712dcaa366707d7/rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl + +[rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl +sha256=a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0 +upstream_url=https://files.pythonhosted.org/packages/7e/f6/89c0302279feb2c7dcce7064326cb588299470f0c172979ef26888b6aa53/rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl +sha256=673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e +upstream_url=https://files.pythonhosted.org/packages/89/4b/633f22dcfc96b33e0bba801d3022359d0cec6f02f0001790cea84df636ad/rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl +sha256=d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611 +upstream_url=https://files.pythonhosted.org/packages/6a/cb/86f59a827bdd446759cffeb10242814da0652b28e57362c41dfabab71ca0/rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl +sha256=352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72 +upstream_url=https://files.pythonhosted.org/packages/8c/14/fa947a9cf31b7d08b26feea4fcc3d57de96924fd1a6c87b46b430fbb11b7/rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl +sha256=4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3 +upstream_url=https://files.pythonhosted.org/packages/c8/3b/cc231994f64baaff05ac2a6f847f9760d362263765b904c98782e377a317/rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +sha256=e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab +upstream_url=https://files.pythonhosted.org/packages/97/b1/12238bd8cdf3cef71e85188af133399bfde1bddf319007361cc869d6f6a7/rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + +[rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl] +tarball=rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl +sha256=aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c +upstream_url=https://files.pythonhosted.org/packages/d9/d6/cb9edd4910b6f253b4f64b0d8871ddcdc9ff02241307f33cccdb61f903cd/rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl + +[rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl +sha256=6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338 +upstream_url=https://files.pythonhosted.org/packages/24/57/599c6a77ceec52607fc2db134c583cad9b89268573ffd1fbcb15b9576f5f/rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl + +[rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl] +tarball=rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl +sha256=4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b +upstream_url=https://files.pythonhosted.org/packages/74/42/d05e5e023aa3b410408881960664e7e3a526d2e6e9c8620a3fa926574451/rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl + +[rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl] +tarball=rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl +sha256=32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26 +upstream_url=https://files.pythonhosted.org/packages/96/57/bb354853ee6d867c900d4149b277ad027df7ad530084caa7e3b29c2ee6d3/rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl + +[rpds_py-0.18.1-cp39-none-win32.whl] +tarball=rpds_py-0.18.1-cp39-none-win32.whl +sha256=2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360 +upstream_url=https://files.pythonhosted.org/packages/81/28/1f37f2c547aadc74100569d271644a7becd1ab75b067897800049cad4364/rpds_py-0.18.1-cp39-none-win32.whl + +[rpds_py-0.18.1-cp39-none-win_amd64.whl] +tarball=rpds_py-0.18.1-cp39-none-win_amd64.whl +sha256=bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590 +upstream_url=https://files.pythonhosted.org/packages/e6/49/13a9adc8f2e7dae30ab76f3d6a750807a297fc4c897178a19e33f9eac10e/rpds_py-0.18.1-cp39-none-win_amd64.whl + diff --git a/build/pkgs/pyrsistent/dependencies b/build/pkgs/rpds_py/dependencies similarity index 66% rename from build/pkgs/pyrsistent/dependencies rename to build/pkgs/rpds_py/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/pyrsistent/dependencies +++ b/build/pkgs/rpds_py/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/rpds_py/package-version.txt b/build/pkgs/rpds_py/package-version.txt new file mode 100644 index 00000000000..249afd517d9 --- /dev/null +++ b/build/pkgs/rpds_py/package-version.txt @@ -0,0 +1 @@ +0.18.1 diff --git a/build/pkgs/rpds_py/spkg-configure.m4 b/build/pkgs/rpds_py/spkg-configure.m4 new file mode 100644 index 00000000000..4eab56fa755 --- /dev/null +++ b/build/pkgs/rpds_py/spkg-configure.m4 @@ -0,0 +1 @@ +SAGE_SPKG_CONFIGURE([rpds_py], [SAGE_PYTHON_PACKAGE_CHECK([rpds_py])]) diff --git a/build/pkgs/pyrsistent/type b/build/pkgs/rpds_py/type similarity index 100% rename from build/pkgs/pyrsistent/type rename to build/pkgs/rpds_py/type diff --git a/build/pkgs/rpds_py/version_requirements.txt b/build/pkgs/rpds_py/version_requirements.txt new file mode 100644 index 00000000000..340ec175016 --- /dev/null +++ b/build/pkgs/rpds_py/version_requirements.txt @@ -0,0 +1 @@ +rpds-py diff --git a/build/pkgs/sagemath_doc_html/dependencies b/build/pkgs/sagemath_doc_html/dependencies index 1d286fe50bc..801c36fcd9e 100644 --- a/build/pkgs/sagemath_doc_html/dependencies +++ b/build/pkgs/sagemath_doc_html/dependencies @@ -1,4 +1,4 @@ -sagelib sphinx sphinx_copybutton sphinx_inline_tabs pplpy_doc | $(SAGERUNTIME) maxima networkx scipy sympy matplotlib pillow mathjax mpmath ipykernel jupyter_client conway_polynomials tachyon jmol ipywidgets jupyter_sphinx sage_docbuild elliptic_curves furo fpylll graphs +sagelib sphinx sphinx_copybutton sphinx_inline_tabs pplpy_doc | $(SAGERUNTIME) maxima networkx scipy sympy matplotlib pillow mathjax mpmath ipykernel jupyter_client conway_polynomials tachyon jmol ipywidgets sage_docbuild elliptic_curves furo fpylll graphs # Building the documentation has many dependencies, because all # documented modules are imported and because we use matplotlib to diff --git a/build/pkgs/sagemath_doc_html/dependencies_optional b/build/pkgs/sagemath_doc_html/dependencies_optional new file mode 100644 index 00000000000..e9b59e89755 --- /dev/null +++ b/build/pkgs/sagemath_doc_html/dependencies_optional @@ -0,0 +1 @@ +jupyter_sphinx diff --git a/build/pkgs/scipy/checksums.ini b/build/pkgs/scipy/checksums.ini index 8871f77250b..9c18b5f7113 100644 --- a/build/pkgs/scipy/checksums.ini +++ b/build/pkgs/scipy/checksums.ini @@ -1,4 +1,4 @@ tarball=scipy-VERSION.tar.gz -sha1=0fd6e14972d8dd9b4a656686a40aed00ad0f1396 -sha256=4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3 +sha1=f131e427ce458d2d97664a48f18875e967333995 +sha256=095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c upstream_url=https://pypi.io/packages/source/s/scipy/scipy-VERSION.tar.gz diff --git a/build/pkgs/scipy/package-version.txt b/build/pkgs/scipy/package-version.txt index 0eed1a29efd..b50dd27dd92 100644 --- a/build/pkgs/scipy/package-version.txt +++ b/build/pkgs/scipy/package-version.txt @@ -1 +1 @@ -1.12.0 +1.13.1 diff --git a/build/pkgs/scs/checksums.ini b/build/pkgs/scs/checksums.ini index ceaf994ac5f..4fd3c991b1e 100644 --- a/build/pkgs/scs/checksums.ini +++ b/build/pkgs/scs/checksums.ini @@ -1,4 +1,4 @@ tarball=scs-VERSION.tar.gz -sha1=92e4ff21b450c9659f610064eb79e804de9167b4 -sha256=e3bd779e7e977e3ae5a2f2035aa4c2a309e29082d59a722d5d6592edc4bdb4b3 +sha1=87df5ef9e9a2f0290e9a1900cae6d0abfccf90d2 +sha256=caf6ef48b86e8d4712a3d7b586ffb7a2b413c2a9664ac4da2c8de81dec6a1020 upstream_url=https://pypi.io/packages/source/s/scs/scs-VERSION.tar.gz diff --git a/build/pkgs/scs/package-version.txt b/build/pkgs/scs/package-version.txt index b347b11eac8..34cde5690e1 100644 --- a/build/pkgs/scs/package-version.txt +++ b/build/pkgs/scs/package-version.txt @@ -1 +1 @@ -3.2.3 +3.2.6 diff --git a/build/pkgs/terminado/SPKG.rst b/build/pkgs/terminado/SPKG.rst index e29e72ba651..acd2b2538f2 100644 --- a/build/pkgs/terminado/SPKG.rst +++ b/build/pkgs/terminado/SPKG.rst @@ -1,12 +1,18 @@ -terminado: Tornado websocket backend for the term.js Javascript terminal emulator library -========================================================================================= +terminado: Tornado websocket backend for the Xterm.js Javascript terminal emulator library +========================================================================================== Description ----------- -This is a Tornado websocket backend for the term.js Javascript terminal -emulator library. +Tornado websocket backend for the Xterm.js Javascript terminal emulator library + +License +------- + +BSD 2-Clause License + +Upstream Contact +---------------- + +https://pypi.org/project/terminado/ -It evolved out of pyxterm, which was part of GraphTerm (as lineterm.py), -v0.57.0 (2014-07-18), and ultimately derived from the public-domain -Ajaxterm code, v0.11 (2008-11-13) (also on Github as part of QWeb). diff --git a/build/pkgs/terminado/checksums.ini b/build/pkgs/terminado/checksums.ini index ce9c0407bad..5e61e6e0f02 100644 --- a/build/pkgs/terminado/checksums.ini +++ b/build/pkgs/terminado/checksums.ini @@ -1,4 +1,5 @@ -tarball=terminado-VERSION.tar.gz -sha1=608fcc44b845e1fb783e361d59e79fba83126e14 -sha256=6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333 -upstream_url=https://pypi.io/packages/source/t/terminado/terminado-VERSION.tar.gz +[terminado-0.18.1-py3-none-any.whl] +tarball=terminado-0.18.1-py3-none-any.whl +sha256=a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 +upstream_url=https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl + diff --git a/build/pkgs/terminado/dependencies b/build/pkgs/terminado/dependencies index 2138b7ccbe8..b17f6d7df36 100644 --- a/build/pkgs/terminado/dependencies +++ b/build/pkgs/terminado/dependencies @@ -1,4 +1,4 @@ - ptyprocess tornado | $(PYTHON_TOOLCHAIN) hatchling $(PYTHON) +ptyprocess tornado | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/terminado/package-version.txt b/build/pkgs/terminado/package-version.txt index 7cca7711a0d..249afd517d9 100644 --- a/build/pkgs/terminado/package-version.txt +++ b/build/pkgs/terminado/package-version.txt @@ -1 +1 @@ -0.17.1 +0.18.1 diff --git a/build/pkgs/terminado/spkg-install.in b/build/pkgs/terminado/spkg-install.in deleted file mode 100644 index 058b1344dc2..00000000000 --- a/build/pkgs/terminado/spkg-install.in +++ /dev/null @@ -1,3 +0,0 @@ -cd src - -sdh_pip_install . diff --git a/build/pkgs/tornado/checksums.ini b/build/pkgs/tornado/checksums.ini index 9cc0e020c01..d1be4bc29be 100644 --- a/build/pkgs/tornado/checksums.ini +++ b/build/pkgs/tornado/checksums.ini @@ -1,4 +1,4 @@ tarball=tornado-VERSION.tar.gz -sha1=5b4036313660a74034186ac63b10d244ca9444b8 -sha256=72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee +sha1=0f9f1a545d95fe27ff26d640ab11f0e4645a1064 +sha256=92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9 upstream_url=https://pypi.io/packages/source/t/tornado/tornado-VERSION.tar.gz diff --git a/build/pkgs/tornado/package-version.txt b/build/pkgs/tornado/package-version.txt index c596943a9f0..4c77920fd2c 100644 --- a/build/pkgs/tornado/package-version.txt +++ b/build/pkgs/tornado/package-version.txt @@ -1 +1 @@ -6.4 +6.4.1 diff --git a/build/pkgs/websocket_client/checksums.ini b/build/pkgs/websocket_client/checksums.ini index 6cc10d23812..90eab6841cc 100644 --- a/build/pkgs/websocket_client/checksums.ini +++ b/build/pkgs/websocket_client/checksums.ini @@ -1,4 +1,5 @@ -tarball=websocket_client-VERSION-py3-none-any.whl -sha1=eb78bd39f1ae4d531cc965bd21d121ba3d156f84 -sha256=084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24 -upstream_url=https://pypi.io/packages/py3/w/websocket_client/websocket_client-VERSION-py3-none-any.whl +[websocket_client-1.8.0-py3-none-any.whl] +tarball=websocket_client-1.8.0-py3-none-any.whl +sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 +upstream_url=https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + diff --git a/build/pkgs/websocket_client/dependencies b/build/pkgs/websocket_client/dependencies index 47296a7bace..644ad35f773 100644 --- a/build/pkgs/websocket_client/dependencies +++ b/build/pkgs/websocket_client/dependencies @@ -1,4 +1,4 @@ - | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/websocket_client/package-version.txt b/build/pkgs/websocket_client/package-version.txt index 9edc58bb1dd..27f9cd322bb 100644 --- a/build/pkgs/websocket_client/package-version.txt +++ b/build/pkgs/websocket_client/package-version.txt @@ -1 +1 @@ -1.6.4 +1.8.0 diff --git a/build/pkgs/widgetsnbextension/checksums.ini b/build/pkgs/widgetsnbextension/checksums.ini index 099c0acb09e..eefbf53ccb8 100644 --- a/build/pkgs/widgetsnbextension/checksums.ini +++ b/build/pkgs/widgetsnbextension/checksums.ini @@ -1,4 +1,5 @@ -tarball=widgetsnbextension-VERSION-py3-none-any.whl -sha1=067535b5d1738a4de0abb5f1219581a4a66d243c -sha256=91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175 -upstream_url=https://pypi.io/packages/py3/w/widgetsnbextension/widgetsnbextension-VERSION-py3-none-any.whl +[widgetsnbextension-4.0.11-py3-none-any.whl] +tarball=widgetsnbextension-4.0.11-py3-none-any.whl +sha256=55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36 +upstream_url=https://files.pythonhosted.org/packages/93/c1/68423f43bc95d873d745bef8030ecf47cd67f932f20b3f7080a02cff43ca/widgetsnbextension-4.0.11-py3-none-any.whl + diff --git a/build/pkgs/widgetsnbextension/dependencies b/build/pkgs/widgetsnbextension/dependencies index b5af54575fc..644ad35f773 100644 --- a/build/pkgs/widgetsnbextension/dependencies +++ b/build/pkgs/widgetsnbextension/dependencies @@ -1,4 +1,4 @@ -jupyter_core | $(PYTHON_TOOLCHAIN) $(PYTHON) + | pip $(PYTHON) ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/widgetsnbextension/package-version.txt b/build/pkgs/widgetsnbextension/package-version.txt index 7919852fe10..30b26dfb15f 100644 --- a/build/pkgs/widgetsnbextension/package-version.txt +++ b/build/pkgs/widgetsnbextension/package-version.txt @@ -1 +1 @@ -4.0.9 +4.0.11 diff --git a/build/sage_bootstrap/app.py b/build/sage_bootstrap/app.py index 2b8b44959b1..1b820fd8115 100644 --- a/build/sage_bootstrap/app.py +++ b/build/sage_bootstrap/app.py @@ -203,14 +203,16 @@ def name(self, tarball_filename): def tarball(self, package_name): """ - Find the tarball filename given a package name + Find the tarball filenames given a package name $ sage --package tarball pari pari-2.8-1564-gdeac36e.tar.gz """ log.debug('Looking up tarball name for %s', package_name) package = Package(package_name) - print(package.tarball.filename) + tarballs = package.tarballs() + for key in tarballs: + print(tarballs[key].filename) def apropos(self, incorrect_name): """ @@ -252,7 +254,7 @@ def update(self, package_name, new_version, url=None, commit=False): """ log.debug('Updating %s to %s', package_name, new_version) update = PackageUpdater(package_name, new_version) - if url is not None or update.package.tarball_upstream_url: + if url is not None or update.package.tarball_upstream_url_pattern: log.debug('Downloading %s', url) update.download_upstream(url) update.fix_checksum() @@ -302,7 +304,7 @@ def update_latest_cls(self, package_name_or_class, commit=False): except PyPiError as e: log.warn('updating %s failed: %s', package_name, e) - def download(self, package_name, allow_upstream=False): + def download(self, package_name, allow_upstream=False, tags=()): """ Download a package @@ -312,8 +314,19 @@ def download(self, package_name, allow_upstream=False): """ log.debug('Downloading %s', package_name) package = Package(package_name) - package.tarball.download(allow_upstream=allow_upstream) - print(package.tarball.upstream_fqn) + tarballs = package.tarballs() + sorted_tarballs = [] + for tag in tags: + for key in tarballs: + if key is not None and tag in key: + sorted_tarballs.append(tarballs[key]) + del tarballs[key] + break + if not sorted_tarballs: + sorted_tarballs = tarballs.values() + for tarball in sorted_tarballs: + tarball.download(allow_upstream=allow_upstream) + print(tarball.upstream_fqn) def download_cls(self, *package_classes, **kwds): """ @@ -321,12 +334,13 @@ def download_cls(self, *package_classes, **kwds): """ allow_upstream = kwds.pop('allow_upstream', False) on_error = kwds.pop('on_error', 'stop') + tags = kwds.pop('tags', []) has_files = list(kwds.pop('has_files', [])) pc = PackageClass(*package_classes, has_files=has_files + ['checksums.ini'], **kwds) def download_with_args(package): try: - self.download(package, allow_upstream=allow_upstream) + self.download(package, allow_upstream=allow_upstream, tags=tags) except FileNotMirroredError: if on_error == 'stop': raise @@ -344,16 +358,18 @@ def upload(self, package_name): Uploading /home/vbraun/Code/sage.git/upstream/pari-2.8-2044-g89b0f1e.tar.gz """ package = Package(package_name) - if not os.path.exists(package.tarball.upstream_fqn): - log.debug('Skipping %s because there is no local tarball', package_name) - return - if not package.tarball.is_distributable(): - log.info('Skipping %s because the tarball is marked as not distributable', - package_name) - return - log.info('Uploading %s', package.tarball.upstream_fqn) - fs = FileServer() - fs.upload(package) + tarballs = package.tarballs() + for key in tarballs: + tarball = tarballs[key] + if not os.path.exists(tarball.upstream_fqn): + log.debug('Skipping %s because it does not exist locally', tarball) + continue + if not tarball.is_distributable(): + log.info('Skipping %s because it is marked as not distributable', tarball) + continue + log.info('Uploading %s', tarball.upstream_fqn) + fs = FileServer() + fs.upload(tarball) def upload_cls(self, package_name_or_class): pc = PackageClass(package_name_or_class) @@ -381,7 +397,7 @@ def fix_checksum(self, package_name): log.debug('Correcting the checksum of %s', package_name) update = ChecksumUpdater(package_name) pkg = update.package - if not pkg.tarball_filename: + if not pkg.tarball_pattern: log.info('Ignoring {0} because it is not a normal package'.format(package_name)) return if not os.path.exists(pkg.tarball.upstream_fqn): @@ -417,13 +433,13 @@ def create(self, package_name, version=None, tarball=None, pkg_type=None, upstre if pypi: if source is None: try: - if PyPiVersion(package_name, source='wheel').tarball.endswith('-none-any.whl'): + if PyPiVersion(package_name, source='wheel', version=version).tarball.endswith('-none-any.whl'): source = 'wheel' else: source = 'normal' except PyPiError: source = 'normal' - pypi_version = PyPiVersion(package_name, source=source) + pypi_version = PyPiVersion(package_name, source=source, version=version) if source == 'normal': if not tarball: # Guess the general format of the tarball name. @@ -434,10 +450,6 @@ def create(self, package_name, version=None, tarball=None, pkg_type=None, upstre # because it follows a simple pattern. upstream_url = 'https://pypi.io/packages/source/{0:1.1}/{0}/{1}'.format(package_name, tarball) elif source == 'wheel': - if not tarball: - tarball = pypi_version.tarball.replace(pypi_version.version, 'VERSION') - if not tarball.endswith('-none-any.whl'): - raise ValueError('Only platform-independent wheels can be used for wheel packages, got {0}'.format(tarball)) if not version: version = pypi_version.version if dependencies is None: @@ -459,7 +471,6 @@ def create(self, package_name, version=None, tarball=None, pkg_type=None, upstre self.create(dep, pkg_type=pkg_type) dep = Package(dep).name dependencies.append(dep) - upstream_url = 'https://pypi.io/packages/{2}/{0:1.1}/{0}/{1}'.format(package_name, tarball, pypi_version.python_version) if not description: description = pypi_version.summary if not license: @@ -470,9 +481,7 @@ def create(self, package_name, version=None, tarball=None, pkg_type=None, upstre tarball = upstream_url.rpartition('/')[2] if tarball and source is None: source = 'normal' - if tarball and not pkg_type: - # If we set a tarball, also make sure to create a "type" file, - # so that subsequent operations (downloading of tarballs) work. + if not pkg_type: pkg_type = 'optional' log.debug('Creating %s: %s, %s, %s', package_name, version, tarball, pkg_type) creator = PackageCreator(package_name) @@ -485,6 +494,8 @@ def create(self, package_name, version=None, tarball=None, pkg_type=None, upstre if pypi or source == 'pip': creator.set_python_data_and_scripts(pypi_package_name=pypi_version.name, source=source, dependencies=dependencies) + if source == 'wheel': + creator.set_pypi_urls(pypi_version) if tarball: creator.set_tarball(tarball, upstream_url) if upstream_url and version: @@ -570,6 +581,6 @@ def metrics_cls(self, *package_classes): if not key.startswith('distros_'): metrics['line_count_file_' + key] += sum(package.line_count_file(filename) for filename in filenames) - metrics['has_tarball_upstream_url'] += int(bool(package.tarball_upstream_url)) + metrics['has_tarball_upstream_url'] += int(bool(package.tarball_upstream_url_pattern)) for key, value in sorted(metrics.items()): print('{0}={1}'.format(key, value)) diff --git a/build/sage_bootstrap/cmdline.py b/build/sage_bootstrap/cmdline.py index cbd4a544bb6..4a801fbab34 100644 --- a/build/sage_bootstrap/cmdline.py +++ b/build/sage_bootstrap/cmdline.py @@ -414,6 +414,9 @@ def make_parser(): parser_download.add_argument( '--no-check-certificate', action='store_true', help='do not check SSL certificates for https connections') + parser_download.add_argument( + '--tags', nargs='*', default=[], + help='ordered list of platform compatibility tags to try (for platform-dependent wheels only)') parser_upload = subparsers.add_parser( 'upload', epilog=epilog_upload, @@ -539,7 +542,8 @@ def run(): has_files=args.has_files, no_files=args.no_files, exclude=args.exclude, allow_upstream=args.allow_upstream, - on_error=args.on_error) + on_error=args.on_error, + tags=args.tags) elif args.subcommand == 'create': app.create(args.package_name, args.version, args.tarball, args.type, args.url, args.description, args.license, args.upstream_contact, diff --git a/build/sage_bootstrap/compat/__init__.py b/build/sage_bootstrap/compat/__init__.py index 7fb303e4edc..b57cf5df6d1 100644 --- a/build/sage_bootstrap/compat/__init__.py +++ b/build/sage_bootstrap/compat/__init__.py @@ -28,3 +28,11 @@ from StringIO import StringIO except ImportError: from io import StringIO + + +try: + # Python >= 3.3 + from shlex import quote +except ImportError: + # Python < 3.13 + from pipes import quote diff --git a/build/sage_bootstrap/creator.py b/build/sage_bootstrap/creator.py index e16002f12f9..2e889efc9d3 100644 --- a/build/sage_bootstrap/creator.py +++ b/build/sage_bootstrap/creator.py @@ -59,6 +59,19 @@ def set_tarball(self, tarball, upstream_url): f.write('upstream_url={0}'.format(upstream_url)) f.write('\n') + def set_pypi_urls(self, pypi_version): + """ + Write the ``checksums.ini`` file + """ + with open(os.path.join(self.path, 'checksums.ini'), 'w+') as f: + for url in pypi_version.urls: + if 'cp' in url['python_version'] or 'py3' in url['python_version']: + f.write('[{0}]\n'.format(url['filename'])) + f.write('tarball={0}\n'.format(url['filename'])) + f.write('sha256={0}\n'.format(url['digests']['sha256'])) + f.write('upstream_url={0}\n'.format(url['url'])) + f.write('\n') + def set_description(self, description, license, upstream_contact): """ Write the ``SPKG.rst`` file diff --git a/build/sage_bootstrap/fileserver.py b/build/sage_bootstrap/fileserver.py index e884242c0e1..d3efd8a06ac 100644 --- a/build/sage_bootstrap/fileserver.py +++ b/build/sage_bootstrap/fileserver.py @@ -31,20 +31,20 @@ def upstream_directory(self, package): '/', 'data', 'files', 'spkg', 'upstream', package.name, ) - def upload(self, package): + def upload(self, tarball): """ - Upload the current tarball of package + Upload the current tarball of a package """ - if not package.tarball.is_distributable(): - raise ValueError('Tarball of {} is marked as not distributable'.format(package)) + if not tarball.is_distributable(): + raise ValueError('Tarball {} is marked as not distributable'.format(tarball)) subprocess.check_call([ 'ssh', 'sagemath@fileserver.sagemath.org', - 'mkdir -p {0} && touch {0}/index.html'.format(self.upstream_directory(package)) + 'mkdir -p {0} && touch {0}/index.html'.format(self.upstream_directory(tarball.package)) ]) subprocess.check_call([ 'rsync', '-av', '--checksum', '-e', 'ssh -l sagemath', - package.tarball.upstream_fqn, - 'fileserver.sagemath.org:{0}'.format(self.upstream_directory(package)) + tarball.upstream_fqn, + 'fileserver.sagemath.org:{0}'.format(self.upstream_directory(tarball.package)) ]) def publish(self): diff --git a/build/sage_bootstrap/flock.py b/build/sage_bootstrap/flock.py index 483482a6edf..bc95a0ecf8f 100644 --- a/build/sage_bootstrap/flock.py +++ b/build/sage_bootstrap/flock.py @@ -12,10 +12,11 @@ import fcntl import os -import pipes import sys import argparse +from sage_bootstrap.compat import quote + class FileType(argparse.FileType): """ @@ -105,7 +106,7 @@ def run(argv=None): kind = "exclusive" sys.stderr.write("Waiting for {0} lock to run {1} ... ".format( - kind, ' '.join(pipes.quote(arg) for arg in command))) + kind, ' '.join(quote(arg) for arg in command))) fcntl.flock(lock, locktype) sys.stderr.write("ok\n") diff --git a/build/sage_bootstrap/package.py b/build/sage_bootstrap/package.py index c063af0c816..67ec65ebec4 100644 --- a/build/sage_bootstrap/package.py +++ b/build/sage_bootstrap/package.py @@ -80,7 +80,7 @@ def __init__(self, package_name): raise ValueError('package names use underscores, not dashes, got {0}'.format(package_name)) self.__name = package_name - self.__tarball = None + self.__tarballs = None self._init_checksum() self._init_version() self._init_type() @@ -107,28 +107,6 @@ def name(self): """ return self.__name - @property - def sha1(self): - """ - Return the SHA1 checksum - - OUTPUT: - - String. - """ - return self.__sha1 - - @property - def sha256(self): - """ - Return the SHA256 checksum - - OUTPUT: - - String. - """ - return self.__sha256 - @property def tarball(self): """ @@ -141,10 +119,26 @@ def tarball(self): Instance of :class:`sage_bootstrap.tarball.Tarball` """ - if self.__tarball is None: + return self.tarballs()[None] + + def tarballs(self): + """ + Return a dictionary of the tarballs + """ + if self.__tarballs is None: from sage_bootstrap.tarball import Tarball - self.__tarball = Tarball(self.tarball_filename, package=self) - return self.__tarball + self.__tarballs = dict() + for key in self.__checksums: + c = self.__checksums[key] + tarball_filename = self._substitute_variables(c['tarball']) + if 'upstream_url' in c: + upstream_url = self._substitute_variables(c['upstream_url']) + else: + upstream_url = None + self.__tarballs[key] = Tarball(tarball_filename, package=self, + upstream_url=upstream_url, + sha1=c.get('sha1'), sha256=c.get('sha256')) + return self.__tarballs def _substitute_variables_once(self, pattern): """ @@ -195,7 +189,10 @@ def tarball_pattern(self): String. The full-qualified tarball filename, but with ``VERSION`` instead of the actual tarball filename. """ - return self.__tarball_pattern + try: + return self.__checksums[None]['tarball'] + except KeyError: + return None @property def tarball_filename(self): @@ -225,7 +222,10 @@ def tarball_upstream_url_pattern(self): String. The tarball upstream URL, but with the placeholder ``VERSION``. """ - return self.__tarball_upstream_url_pattern + try: + return self.__checksums[None]['upstream_url'] + except KeyError: + return None @property def tarball_upstream_url(self): @@ -261,6 +261,16 @@ def tarball_package(self): else: return type(self)(n) + def is_package_of_tarball(self, tarball_filename): + """ + Whether ``tarball_filename`` is a tarball of ``self``. + """ + tarballs = self.tarballs() + for key in tarballs: + if tarballs[key].filename == tarball_filename: + return True + return False + @property def version(self): """ @@ -349,10 +359,13 @@ def source(self): """ if self.__requirements is not None: return 'pip' - if self.tarball_filename: - if self.tarball_filename.endswith('.whl'): + + tarballs = self.tarballs() + for key in tarballs: + if tarballs[key].filename.endswith('.whl'): return 'wheel' return 'normal' + if self.has_file('spkg-install') or self.has_file('spkg-install.in'): return 'script' return 'none' @@ -512,22 +525,28 @@ def _init_checksum(self): Load the checksums from the appropriate ``checksums.ini`` file """ checksums_ini = os.path.join(self.path, 'checksums.ini') + section = re.compile(r'\[(?P
[-a-zA-Z0-9_.]*)\]') assignment = re.compile('(?P[a-zA-Z0-9_]*)=(?P.*)') result = dict() + key = None try: with open(checksums_ini, 'rt') as f: for line in f.readlines(): + match = section.match(line) + if match is not None: + key = match.group('section') + result[key] = dict() + continue match = assignment.match(line) if match is None: continue var, value = match.groups() - result[var] = value + if key not in result: + result[key] = dict() + result[key][var] = value except IOError: pass - self.__sha1 = result.get('sha1', None) - self.__sha256 = result.get('sha256', None) - self.__tarball_pattern = result.get('tarball', None) - self.__tarball_upstream_url_pattern = result.get('upstream_url', None) + self.__checksums = result # Name of the directory containing the checksums.ini file self.__tarball_package_name = os.path.realpath(checksums_ini).split(os.sep)[-2] diff --git a/build/sage_bootstrap/pypi.py b/build/sage_bootstrap/pypi.py index 215feb69343..69ebf119628 100644 --- a/build/sage_bootstrap/pypi.py +++ b/build/sage_bootstrap/pypi.py @@ -35,8 +35,12 @@ class PyPiError(Exception): class PyPiVersion(object): - def __init__(self, package_name, source='normal'): + def __init__(self, package_name, source='normal', version=None): self.name = package_name + if version is None: + self.suffix = '' + else: + self.suffix = '/' + version self.json = self._get_json() # Replace provided name with the canonical name self.name = self.json['info']['name'] @@ -55,7 +59,7 @@ def _get_json(self): @property def json_url(self): - return 'https://pypi.python.org/pypi/{0}/json'.format(self.name) + return 'https://pypi.python.org/pypi/{0}{1}/json'.format(self.name, self.suffix) @property def version(self): @@ -70,6 +74,7 @@ def url(self): Return the source url """ for download in self.json['urls']: + log.info('{0}'.format(download)) if self.python_version in download['python_version']: self.python_version = download['python_version'] return download['url'] @@ -81,11 +86,30 @@ def tarball(self): Return the source tarball name """ for download in self.json['urls']: + log.info('{0}'.format(download)) if self.python_version in download['python_version']: self.python_version = download['python_version'] return download['filename'] raise PyPiError('No %s url for %s found', self.python_version, self.name) + @property + def urls(self): + """ + Return the list of URLs. + + Each URL is a dictionary:: + + {'digests': {'sha256': 'ad277f74b1c164f7248afa968700e410651eb858d7c160d109fb451dc45a2f09', ...}, + 'filename': 'rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl', + 'packagetype': 'bdist_wheel', + 'python_version': 'cp310', + 'requires_python': '>=3.8', + 'url': 'https://files.pythonhosted.org/packages/79/c6/432ec657f5f44a878e8653c73abfc51708afd0899c3d89f2967e11f81f14/rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl', + 'yanked': False, + ...} + """ + return self.json['urls'] + @property def package_url(self): """ @@ -125,7 +149,10 @@ def update(self, package=None): if package is None: package = Package(self.name) if package.version == self.version: - log.info('%s is already at the latest version', self.name) + if self.suffix: + log.info('%s is already at this version', self.name) + else: + log.info('%s is already at the latest version', self.name) return log.info('Updating %s: %s -> %s', package.name, package.version, self.version) update = PackageUpdater(package.name, self.version) diff --git a/build/sage_bootstrap/tarball.py b/build/sage_bootstrap/tarball.py index 54af50dd8f8..798b3371820 100644 --- a/build/sage_bootstrap/tarball.py +++ b/build/sage_bootstrap/tarball.py @@ -40,7 +40,8 @@ class FileNotMirroredError(Exception): class Tarball(object): - def __init__(self, tarball_name, package=None): + def __init__(self, tarball_name, package=None, + upstream_url=None, sha1=None, sha256=None): """ A (third-party downloadable) tarball @@ -57,7 +58,7 @@ def __init__(self, tarball_name, package=None): if package is None: self.__package = None for pkg in Package.all(): - if pkg.tarball_filename == tarball_name: + if pkg.is_package_of_tarball(tarball_name): self.__package = pkg.tarball_package if self.package is None: error = 'tarball {0} is not referenced by any Sage package'.format(tarball_name) @@ -65,10 +66,9 @@ def __init__(self, tarball_name, package=None): raise ValueError(error) else: self.__package = package - if package.tarball_filename != tarball_name: - error = 'tarball {0} is not referenced by the {1} package'.format(tarball_name, package.name) - log.error(error) - raise ValueError(error) + self.__upstream_url = upstream_url + self.__sha1 = sha1 + self.__sha256 = sha256 def __repr__(self): return 'Tarball {0}'.format(self.filename) @@ -96,6 +96,28 @@ def package(self): """ return self.__package + @property + def sha1(self): + """ + Return the SHA1 checksum + + OUTPUT: + + String. + """ + return self.__sha1 + + @property + def sha256(self): + """ + Return the SHA256 checksum + + OUTPUT: + + String. + """ + return self.__sha256 + @property def upstream_fqn(self): """ @@ -103,6 +125,17 @@ def upstream_fqn(self): """ return os.path.join(SAGE_DISTFILES, self.filename) + @property + def upstream_url(self): + """ + The upstream URL or ``None`` if none is recorded + + OUTPUT: + + String. The URL. + """ + return self.__upstream_url + def __eq__(self, other): return self.filename == other.filename @@ -127,17 +160,22 @@ def checksum_verifies(self, force_sha256=False): """ Test whether the checksum of the downloaded file is correct. """ - if self.package.sha256: + if self.sha256: sha256 = self._compute_sha256() - if sha256 != self.package.sha256: + if sha256 != self.sha256: return False + if self.sha1 is None: + return True elif force_sha256: log.warning('sha256 not available for {0}'.format(self.package.name)) return False else: log.warning('sha256 not available for {0}, using sha1'.format(self.package.name)) + if self.sha1 is None: + log.warning('sha1 not available for {0}'.format(self.package.name)) + return True sha1 = self._compute_sha1() - return sha1 == self.package.sha1 + return sha1 == self.sha1 def is_distributable(self): return 'do-not-distribute' not in self.filename @@ -178,7 +216,7 @@ def download(self, allow_upstream=False): except IOError: log.debug('File not on mirror') if not successful_download: - url = self.package.tarball_upstream_url + url = self.upstream_url if allow_upstream and url: log.info('Attempting to download from {}'.format(url)) try: diff --git a/configure.ac b/configure.ac index df6a785251e..47d881b6f23 100644 --- a/configure.ac +++ b/configure.ac @@ -450,7 +450,7 @@ AC_ARG_ENABLE([cvxopt], AC_ARG_ENABLE([notebook], AS_HELP_STRING([--disable-notebook], [disable build of the Jupyter notebook and related packages]), [ - for pkg in notebook nbconvert beautifulsoup4 sagenb_export nbformat nbclient terminado send2trash prometheus_client mistune pandocfilters bleach defusedxml jsonschema jupyter_jsmol argon2_cffi argon2_cffi_bindings webencodings tinycss2 ipympl soupsieve fastjsonschema anyio arrow async_lru fqdn isoduration json5 jsonpointer jsonschema_specifications jupyter_events jupyter_lsp jupyter_server jupyter_server_terminals jupyterlab jupyterlab_server jupyterlab_pygments jupyterlab_mathjax2 notebook_shim overrides python_json_logger pyyaml referencing rfc3339_validator rfc3986_validator sniffio types_python_dateutil uri_template webcolors websocket_client; do + for pkg in notebook nbconvert beautifulsoup4 sagenb_export nbformat nbclient terminado send2trash prometheus_client mistune pandocfilters bleach defusedxml jsonschema jupyter_jsmol argon2_cffi argon2_cffi_bindings webencodings tinycss2 ipympl soupsieve fastjsonschema anyio arrow async_lru fqdn isoduration json5 jsonpointer jsonschema_specifications jupyter_events jupyter_lsp jupyter_server jupyter_server_terminals jupyterlab jupyterlab_server jupyterlab_pygments jupyterlab_mathjax2 jupyter_sphinx notebook_shim overrides python_json_logger pyyaml referencing rfc3339_validator rfc3986_validator rpds_py sniffio types_python_dateutil uri_template webcolors websocket_client; do AS_VAR_SET([SAGE_ENABLE_$pkg], [$enableval]) done ]) diff --git a/constraints_pkgs.txt b/constraints_pkgs.txt new file mode 100644 index 00000000000..9e4fe969fbc --- /dev/null +++ b/constraints_pkgs.txt @@ -0,0 +1,39 @@ +# This "constraints file" can be used for forcing pip +# (and any tools that delegate to pip, such as pypa/build) +# to install the distribution packages included in +# the SageMath monorepository only from their source trees +# in SAGE_ROOT/pkgs/ instead of from PyPI. +# +# Example: Building a sagemath-standard wheel +# +# [alice@localhost sage]$ ./bootstrap +# [alice@localhost sage]$ ./configure +# [alice@localhost sage]$ export MAKE="make -j16" SAGE_NUM_THREADS=16 +# [alice@localhost sage]$ make all-sage-local +# [alice@localhost sage]$ export PIP_CONSTRAINT="$(pwd)/constraints_pkgs.txt" +# [alice@localhost sage]$ ./sage -sh -c 'python3 -m build -v -v pkgs/sagemath-standard' +# +# Non-example: Installing the built wheel using the same +# constraints file will fail because sagemath-standard is one +# of the distribution packages listed below. It will conflict +# with the built wheel for sagemath-standard! +# Use "pkgs/sagemath-standard/constraints_pkgs.txt" instead. + +# Reference on the format: +# https://pip.pypa.io/en/stable/user_guide/#constraints-files +# +sage_conf @ file://${SAGE_ROOT}/pkgs/sage-conf +sage_docbuild @ file://${SAGE_ROOT}/pkgs/sage-docbuild +sage_setup @ file://${SAGE_ROOT}/pkgs/sage-setup +sage_sws2rst @ file://${SAGE_ROOT}/pkgs/sage-sws2rst +sagemath-bliss @ file://${SAGE_ROOT}/pkgs/sagemath-bliss +sagemath-categories @ file://${SAGE_ROOT}/pkgs/sagemath-categories +sagemath-coxeter3 @ file://${SAGE_ROOT}/pkgs/sagemath-coxeter3 +sagemath-environment @ file://${SAGE_ROOT}/pkgs/sagemath-environment +sagemath-mcqd @ file://${SAGE_ROOT}/pkgs/sagemath-mcqd +sagemath-meataxe @ file://${SAGE_ROOT}/pkgs/sagemath-meataxe +sagemath-objects @ file://${SAGE_ROOT}/pkgs/sagemath-objects +sagemath-repl @ file://${SAGE_ROOT}/pkgs/sagemath-repl +sagemath-sirocco @ file://${SAGE_ROOT}/pkgs/sagemath-sirocco +sagemath-standard @ file://${SAGE_ROOT}/pkgs/sagemath-standard +sagemath-tdlib @ file://${SAGE_ROOT}/pkgs/sagemath-tdlib diff --git a/pkgs/sagemath-standard/README.rst b/pkgs/sagemath-standard/README.rst index f429984aa4c..b5d44eb1f9b 100644 --- a/pkgs/sagemath-standard/README.rst +++ b/pkgs/sagemath-standard/README.rst @@ -8,24 +8,26 @@ About SageMath "Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, and MATLAB" - Copyright (C) 2005-2020 The Sage Development Team + Copyright (C) 2005-2024 The Sage Development Team https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem for Linux). -The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). Sage-the-distribution first builds a large number of open source packages from source (unless it finds suitable versions installed in the system) and then installs the Sage Library (sagelib, implemented in Python and Cython). +See https://doc.sagemath.org/html/en/installation/index.html +for general installation instructions. -About this experimental pip-installable source distribution ------------------------------------------------------------ +About this pip-installable distribution package +----------------------------------------------- -This pip-installable source distribution `sagemath-standard` is an experimental distribution of the Sage Library. Use at your own risk. +This pip-installable source distribution `sagemath-standard` is a +distribution of the Sage Library. Building `sagemath-standard` has a large number of system packages as prerequisites. See https://doc.sagemath.org/html/en/installation/source.html#linux-recommended-installation for partial lists for various systems. -The connection to the system environment is facilitated through the https://pypi.org/project/sage-conf/ distribution package. +The connection to the system environment is facilitated through the https://pypi.org/project/sage-conf/ distribution package; for step-by-step installation instructions, see https://github.com/sagemath/sage/blob/develop/README.md#alternative-installation-using-pypi A modularization effort is in progress with the goal of making it possible to install parts of the Sage Library with fewer prerequisites. https://github.com/sagemath/sage/issues/29705 diff --git a/pkgs/sagemath-standard/constraints_pkgs.txt b/pkgs/sagemath-standard/constraints_pkgs.txt new file mode 100644 index 00000000000..139aae58f86 --- /dev/null +++ b/pkgs/sagemath-standard/constraints_pkgs.txt @@ -0,0 +1,21 @@ +# This "constraints file" can be used for forcing pip +# (and any tools that delegate to pip, such as pypa/build) +# to install the dependencies of sagemath-standard that are +# distribution packages included in the SageMath monorepository +# only from their source trees in SAGE_ROOT/pkgs/ +# instead of from PyPI. +# +# Example: +# +# [alice@localhost sage]$ ./bootstrap +# [alice@localhost sage]$ ./configure +# [alice@localhost sage]$ export MAKE="make -j16" SAGE_NUM_THREADS=16 +# [alice@localhost sage]$ make all-sage-local +# [alice@localhost sage]$ export PIP_CONSTRAINT="$(pwd)/pkgs/sagemath-standard/constraints_pkgs.txt" +# [alice@localhost sage]$ ./sage -sh -c 'python3 -m build -v -v pkgs/sagemath-standard' +# +# Reference on the format: +# https://pip.pypa.io/en/stable/user_guide/#constraints-files +# +sage_conf @ file://${SAGE_ROOT}/pkgs/sage-conf +sage_setup @ file://${SAGE_ROOT}/pkgs/sage-setup diff --git a/pkgs/sagemath-standard/tox.ini b/pkgs/sagemath-standard/tox.ini index c197f49d9be..0ac97f8a021 100644 --- a/pkgs/sagemath-standard/tox.ini +++ b/pkgs/sagemath-standard/tox.ini @@ -31,6 +31,19 @@ envlist = # # ./sage -sh -c '(cd pkgs/sagemath-standard && tox -v -v -v -e sagepython-sagewheels-nopypi)' # + # Build and test without using the concrete dependencies specified by requirements.txt, + # using the dependencies declared in pyproject.toml and setup.cfg (install-requires) only: + # Install the distribution packages included in the SageMath monorepository only from + # their source trees in SAGE_ROOT/pkgs/ (not from PyPI). + # + # ./sage -sh -c '(cd pkgs/sagemath-standard && tox -v -v -v -e sagepython-constraints_pkgs-norequirements)' + # + # Build dependencies according to requirements.txt (all versions fixed). + # Install the distribution packages included in the SageMath monorepository only from + # their source trees in SAGE_ROOT/pkgs/ (not from PyPI). + # + # ./sage -sh -c '(cd pkgs/sagemath-standard && tox -v -v -v -e sagepython-constraints_pkgs)' + # # EXPERIMENTAL ENVIRONMENTS: # # Build dependencies according to requirements.txt (all versions fixed). @@ -80,6 +93,8 @@ passenv = MAKEFLAGS # SAGE_VENV only for referring to the basepython or finding the wheels sagepython, sagewheels: SAGE_VENV + # Used as an environment variable in constraints_pkgs.txt + constraints_pkgs: SAGE_ROOT # Location of the wheels sagewheels: SAGE_SPKG_WHEELS @@ -88,6 +103,7 @@ setenv = # apply both to the installation of the dependencies and of the package sagewheels: PIP_FIND_LINKS=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_VENV:{toxinidir}/../../../../venv}/var/lib/sage/wheels} nopypi: PIP_NO_INDEX=true + constraints_pkgs: PIP_CONSTRAINT={toxinidir}/constraints_pkgs.txt # No build isolation for PEP 517 packages - use what is already in the environment # Note that this pip env "NO" variable uses inverted logic: # PIP_NO_BUILD_ISOLATION=False means don't use build isolation. @@ -153,6 +169,17 @@ setenv = {[pkgenv]setenv} basepython = {env:SAGE_VENV}/bin/python3 +[testenv:.pkg-sagepython-constraints_pkgs] +passenv = {[pkgenv]passenv} + SAGE_VENV + # Location of constraints_pkgs.txt + SAGE_ROOT + +setenv = {[pkgenv]setenv} + PIP_CONSTRAINT={env:SAGE_ROOT}/constraints_pkgs.txt + +basepython = {env:SAGE_VENV}/bin/python3 + [testenv:sagepython] basepython = {env:SAGE_VENV}/bin/python3 package_env = .pkg-sagepython @@ -177,6 +204,14 @@ package_env = .pkg-sagepython basepython = {env:SAGE_VENV}/bin/python3 package_env = .pkg-sagepython +[testenv:sagepython-constraints_pkgs] +basepython = {env:SAGE_VENV}/bin/python3 +package_env = .pkg-sagepython-constraints_pkgs + +[testenv:sagepython-constraints_pkgs-norequirements] +basepython = {env:SAGE_VENV}/bin/python3 +package_env = .pkg-sagepython-constraints_pkgs + [testenv:sagepython-sagewheels-nopypi-norequirements] basepython = {env:SAGE_VENV}/bin/python3 diff --git a/src/doc/ca/intro/conf.py b/src/doc/ca/intro/conf.py index 71d81dcdbf3..877eba7eeb7 100644 --- a/src/doc/ca/intro/conf.py +++ b/src/doc/ca/intro/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/de/a_tour_of_sage/conf.py b/src/doc/de/a_tour_of_sage/conf.py index 71fc7ef9012..fb960f06ffd 100644 --- a/src/doc/de/a_tour_of_sage/conf.py +++ b/src/doc/de/a_tour_of_sage/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/de/thematische_anleitungen/conf.py b/src/doc/de/thematische_anleitungen/conf.py index 337f1a98c68..b8ec2573f90 100644 --- a/src/doc/de/thematische_anleitungen/conf.py +++ b/src/doc/de/thematische_anleitungen/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/de/tutorial/conf.py b/src/doc/de/tutorial/conf.py index 399a915e9f4..da1c19e0ffc 100644 --- a/src/doc/de/tutorial/conf.py +++ b/src/doc/de/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/el/a_tour_of_sage/conf.py b/src/doc/el/a_tour_of_sage/conf.py index 5548c31525e..ff4e9436313 100644 --- a/src/doc/el/a_tour_of_sage/conf.py +++ b/src/doc/el/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/a_tour_of_sage/conf.py b/src/doc/en/a_tour_of_sage/conf.py index 7cf31297409..689eed59af3 100644 --- a/src/doc/en/a_tour_of_sage/conf.py +++ b/src/doc/en/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/constructions/conf.py b/src/doc/en/constructions/conf.py index b6bbbbaab3b..a28d011781c 100644 --- a/src/doc/en/constructions/conf.py +++ b/src/doc/en/constructions/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/developer/conf.py b/src/doc/en/developer/conf.py index e8877d61770..6e80447f4c7 100644 --- a/src/doc/en/developer/conf.py +++ b/src/doc/en/developer/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/developer/packaging.rst b/src/doc/en/developer/packaging.rst index d59e5dc07e9..b605869752d 100644 --- a/src/doc/en/developer/packaging.rst +++ b/src/doc/en/developer/packaging.rst @@ -86,11 +86,8 @@ the following source types: #. A ``wheel`` package: - - comes from the wheel file named in the required file ``checksums.ini`` - and hosted on the Sage mirrors; - - - per policy, only platform-independent wheels are allowed, i.e., - ``*-none-any.whl`` files; + - comes from the wheel file(s) named in the required file ``checksums.ini`` + and hosted on the Sage mirrors and GitHub Release Assets; - its version number is defined by the required file ``package-version.txt``; @@ -102,7 +99,19 @@ the following source types: - Sage records the version number of the package installed using a file in ``$SAGE_LOCAL/var/lib/sage/installed/`` and will rerun the installation - if ``package-version.txt`` changes. + if ``package-version.txt`` changes; + + - platform-independent ``wheel`` packages are preferred to ``normal`` packages + because the installation is faster and there are no build requirements; + + - platform-dependent ``wheel`` packages should only be used when installation + from source (as a ``normal`` package) would have unusual build requirements + (example: the package :ref:`rpds_py ` would need Rust); + + - if a platform-dependent ``wheel`` package is a standard package, there + must be a ``configure`` option that disables it + (example: use of the package :ref:`rpds_py ` can be disabled + by using ``./configure --disable-notebook``). #. A ``pip`` package: @@ -589,8 +598,9 @@ would simply contain: Python-based packages --------------------- -Python-based packages should declare ``$(PYTHON)`` as a dependency, -and most Python-based packages will also have ``$(PYTHON_TOOLCHAIN)`` as +Python-based packages should declare ``$(PYTHON)`` as an order-only dependency. + +Most ``normal`` Python-based packages will also have ``$(PYTHON_TOOLCHAIN)`` as an order-only dependency, which will ensure that fundamental packages such as ``pip`` and ``setuptools`` are available at the time of building the package. @@ -1087,6 +1097,13 @@ package requires patching), you can use:: --source normal \ --type optional +To create a platform-dependent ``wheel`` package instead of a ``normal`` package, +use:: + + [alice@localhost sage]$ ./sage --package create pkg:pypi/scikit-spatial \ + --source wheel \ + --type optional + To create a ``pip`` package rather than a ``normal`` or ``wheel`` package, you can use:: [alice@localhost sage]$ ./sage --package create pkg:pypi/scikit-spatial \ diff --git a/src/doc/en/developer/portability_platform_table.rst b/src/doc/en/developer/portability_platform_table.rst index 617dfd0f868..d8d56329d4d 100644 --- a/src/doc/en/developer/portability_platform_table.rst +++ b/src/doc/en/developer/portability_platform_table.rst @@ -1564,59 +1564,167 @@ .. |codespace-fedora-40-maximal| image:: https://github.com/codespaces/badge.svg :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-40-maximal%2Fdevcontainer.json -.. |image-centos-stream-9-python3.9-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-system-packages +.. |image-fedora-41-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-minimal-with-system-packages -.. |image-centos-stream-9-python3.9-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-minimal-configured +.. |image-fedora-41-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-minimal-configured -.. |image-centos-stream-9-python3.9-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets-pre +.. |image-fedora-41-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-minimal-with-targets-pre -.. |image-centos-stream-9-python3.9-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets +.. |image-fedora-41-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-minimal-with-targets -.. |image-centos-stream-9-python3.9-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-minimal-with-targets-optional +.. |image-fedora-41-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-minimal-with-targets-optional -.. |codespace-centos-stream-9-python3.9-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.9-minimal%2Fdevcontainer.json +.. |codespace-fedora-41-minimal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-41-minimal%2Fdevcontainer.json -.. |image-centos-stream-9-python3.9-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-system-packages +.. |image-fedora-41-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-standard-with-system-packages -.. |image-centos-stream-9-python3.9-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-standard-configured +.. |image-fedora-41-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-standard-configured -.. |image-centos-stream-9-python3.9-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets-pre +.. |image-fedora-41-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-standard-with-targets-pre -.. |image-centos-stream-9-python3.9-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets +.. |image-fedora-41-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-standard-with-targets -.. |image-centos-stream-9-python3.9-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-standard-with-targets-optional +.. |image-fedora-41-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-standard-with-targets-optional -.. |codespace-centos-stream-9-python3.9-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.9-standard%2Fdevcontainer.json +.. |codespace-fedora-41-standard| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-41-standard%2Fdevcontainer.json -.. |image-centos-stream-9-python3.9-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-system-packages +.. |image-fedora-41-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-maximal-with-system-packages -.. |image-centos-stream-9-python3.9-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-maximal-configured +.. |image-fedora-41-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-maximal-configured -.. |image-centos-stream-9-python3.9-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets-pre +.. |image-fedora-41-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-maximal-with-targets-pre -.. |image-centos-stream-9-python3.9-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets +.. |image-fedora-41-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-maximal-with-targets -.. |image-centos-stream-9-python3.9-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.9-maximal-with-targets-optional +.. |image-fedora-41-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-41-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 + :target: https://ghcr.io/sagemath/sage/sage-fedora-41-maximal-with-targets-optional -.. |codespace-centos-stream-9-python3.9-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.9-maximal%2Fdevcontainer.json +.. |codespace-fedora-41-maximal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-41-maximal%2Fdevcontainer.json + +.. |image-centos-stream-9-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-minimal-with-system-packages + +.. |image-centos-stream-9-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-minimal-configured + +.. |image-centos-stream-9-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-minimal-with-targets-pre + +.. |image-centos-stream-9-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-minimal-with-targets + +.. |image-centos-stream-9-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-minimal-with-targets-optional + +.. |codespace-centos-stream-9-minimal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-minimal%2Fdevcontainer.json + +.. |image-centos-stream-9-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-standard-with-system-packages + +.. |image-centos-stream-9-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-standard-configured + +.. |image-centos-stream-9-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-standard-with-targets-pre + +.. |image-centos-stream-9-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-standard-with-targets + +.. |image-centos-stream-9-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-standard-with-targets-optional + +.. |codespace-centos-stream-9-standard| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-standard%2Fdevcontainer.json + +.. |image-centos-stream-9-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-maximal-with-system-packages + +.. |image-centos-stream-9-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-maximal-configured + +.. |image-centos-stream-9-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-maximal-with-targets-pre + +.. |image-centos-stream-9-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-maximal-with-targets + +.. |image-centos-stream-9-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-maximal-with-targets-optional + +.. |codespace-centos-stream-9-maximal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-maximal%2Fdevcontainer.json + +.. |image-centos-stream-9-python3.12-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-system-packages + +.. |image-centos-stream-9-python3.12-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-minimal-configured + +.. |image-centos-stream-9-python3.12-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets-pre + +.. |image-centos-stream-9-python3.12-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets + +.. |image-centos-stream-9-python3.12-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-minimal-with-targets-optional + +.. |codespace-centos-stream-9-python3.12-minimal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.12-minimal%2Fdevcontainer.json + +.. |image-centos-stream-9-python3.12-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-system-packages + +.. |image-centos-stream-9-python3.12-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-standard-configured + +.. |image-centos-stream-9-python3.12-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets-pre + +.. |image-centos-stream-9-python3.12-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets + +.. |image-centos-stream-9-python3.12-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-standard-with-targets-optional + +.. |codespace-centos-stream-9-python3.12-standard| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.12-standard%2Fdevcontainer.json + +.. |image-centos-stream-9-python3.12-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-system-packages + +.. |image-centos-stream-9-python3.12-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-maximal-configured + +.. |image-centos-stream-9-python3.12-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets-pre + +.. |image-centos-stream-9-python3.12-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets + +.. |image-centos-stream-9-python3.12-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 + :target: https://ghcr.io/sagemath/sage/sage-centos-stream-9-python3.12-maximal-with-targets-optional + +.. |codespace-centos-stream-9-python3.12-maximal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-centos-stream-9-python3.12-maximal%2Fdevcontainer.json .. |image-almalinux-8-python3.9-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-almalinux-8-python3.9-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 :target: https://ghcr.io/sagemath/sage/sage-almalinux-8-python3.9-minimal-with-system-packages @@ -2593,16 +2701,38 @@ * -    ‑*maximal* - |image-fedora-40-maximal-with-system-packages| |image-fedora-40-maximal-with-targets-pre| - - * - **centos**-stream-9-python3.9 + * - **fedora**-41 + +    ‑*minimal* + - |image-fedora-41-minimal-with-system-packages| |image-fedora-41-minimal-with-targets-pre| |image-fedora-41-minimal-with-targets| |image-fedora-41-minimal-with-targets-optional| + - |codespace-fedora-41-minimal| + * -    ‑*standard* + - |image-fedora-41-standard-with-system-packages| |image-fedora-41-standard-with-targets-pre| |image-fedora-41-standard-with-targets| |image-fedora-41-standard-with-targets-optional| + - |codespace-fedora-41-standard| + * -    ‑*maximal* + - |image-fedora-41-maximal-with-system-packages| |image-fedora-41-maximal-with-targets-pre| + - + * - **centos**-stream-9 + +    ‑*minimal* + - |image-centos-stream-9-minimal-with-system-packages| |image-centos-stream-9-minimal-with-targets-pre| |image-centos-stream-9-minimal-with-targets| |image-centos-stream-9-minimal-with-targets-optional| + - |codespace-centos-stream-9-minimal| + * -    ‑*standard* + - |image-centos-stream-9-standard-with-system-packages| |image-centos-stream-9-standard-with-targets-pre| |image-centos-stream-9-standard-with-targets| |image-centos-stream-9-standard-with-targets-optional| + - |codespace-centos-stream-9-standard| + * -    ‑*maximal* + - |image-centos-stream-9-maximal-with-system-packages| |image-centos-stream-9-maximal-with-targets-pre| + - + * - **centos**-stream-9-python3.12    ‑*minimal* - - |image-centos-stream-9-python3.9-minimal-with-system-packages| |image-centos-stream-9-python3.9-minimal-with-targets-pre| |image-centos-stream-9-python3.9-minimal-with-targets| |image-centos-stream-9-python3.9-minimal-with-targets-optional| - - |codespace-centos-stream-9-python3.9-minimal| + - |image-centos-stream-9-python3.12-minimal-with-system-packages| |image-centos-stream-9-python3.12-minimal-with-targets-pre| |image-centos-stream-9-python3.12-minimal-with-targets| |image-centos-stream-9-python3.12-minimal-with-targets-optional| + - |codespace-centos-stream-9-python3.12-minimal| * -    ‑*standard* - - |image-centos-stream-9-python3.9-standard-with-system-packages| |image-centos-stream-9-python3.9-standard-with-targets-pre| |image-centos-stream-9-python3.9-standard-with-targets| |image-centos-stream-9-python3.9-standard-with-targets-optional| - - |codespace-centos-stream-9-python3.9-standard| + - |image-centos-stream-9-python3.12-standard-with-system-packages| |image-centos-stream-9-python3.12-standard-with-targets-pre| |image-centos-stream-9-python3.12-standard-with-targets| |image-centos-stream-9-python3.12-standard-with-targets-optional| + - |codespace-centos-stream-9-python3.12-standard| * -    ‑*maximal* - - |image-centos-stream-9-python3.9-maximal-with-system-packages| |image-centos-stream-9-python3.9-maximal-with-targets-pre| + - |image-centos-stream-9-python3.12-maximal-with-system-packages| |image-centos-stream-9-python3.12-maximal-with-targets-pre| - * - **almalinux**-8-python3.9 diff --git a/src/doc/en/faq/conf.py b/src/doc/en/faq/conf.py index 4c8a71bd9d1..a175e9cf0ee 100644 --- a/src/doc/en/faq/conf.py +++ b/src/doc/en/faq/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/installation/conf.py b/src/doc/en/installation/conf.py index ea6956d2678..7e6174b0d90 100644 --- a/src/doc/en/installation/conf.py +++ b/src/doc/en/installation/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/prep/conf.py b/src/doc/en/prep/conf.py index 645d451644d..03ff6ed7afc 100644 --- a/src/doc/en/prep/conf.py +++ b/src/doc/en/prep/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/reference/conf.py b/src/doc/en/reference/conf.py index 984c43363f2..92b8a8d45b4 100644 --- a/src/doc/en/reference/conf.py +++ b/src/doc/en/reference/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release, latex_elements, exclude_patterns from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/reference/conf_sub.py b/src/doc/en/reference/conf_sub.py index 479e9c306d2..c7adc1da994 100644 --- a/src/doc/en/reference/conf_sub.py +++ b/src/doc/en/reference/conf_sub.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release, exclude_patterns from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/thematic_tutorials/conf.py b/src/doc/en/thematic_tutorials/conf.py index cb6d1662f47..581a8e89fc6 100644 --- a/src/doc/en/thematic_tutorials/conf.py +++ b/src/doc/en/thematic_tutorials/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/conf.py b/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/conf.py index b8eef385e4f..9de7aa68adb 100644 --- a/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/conf.py +++ b/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/thematic_tutorials/numerical_sage/conf.py b/src/doc/en/thematic_tutorials/numerical_sage/conf.py index 5772289f6fa..c8e220f8f99 100644 --- a/src/doc/en/thematic_tutorials/numerical_sage/conf.py +++ b/src/doc/en/thematic_tutorials/numerical_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/tutorial/conf.py b/src/doc/en/tutorial/conf.py index b566ec19677..52be3420ed1 100644 --- a/src/doc/en/tutorial/conf.py +++ b/src/doc/en/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/en/tutorial/latex.rst b/src/doc/en/tutorial/latex.rst index a173afd75c5..73ef2df3a31 100644 --- a/src/doc/en/tutorial/latex.rst +++ b/src/doc/en/tutorial/latex.rst @@ -49,7 +49,7 @@ output of the entered commands automatically. You can start this automatic rendering by executing ``%display latex`` (and stop by executing ``%display plain``). -.. ONLY:: html +.. ONLY:: html and feature_jupyter_sphinx Thus, in the Jupyter notebook, you get diff --git a/src/doc/en/website/conf.py b/src/doc/en/website/conf.py index 38f31e5d46f..b238169bb3c 100644 --- a/src/doc/en/website/conf.py +++ b/src/doc/en/website/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/es/a_tour_of_sage/conf.py b/src/doc/es/a_tour_of_sage/conf.py index dee2afa4d66..801f7cadb95 100644 --- a/src/doc/es/a_tour_of_sage/conf.py +++ b/src/doc/es/a_tour_of_sage/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/es/tutorial/conf.py b/src/doc/es/tutorial/conf.py index 43e23fdc568..dcb44232ca0 100644 --- a/src/doc/es/tutorial/conf.py +++ b/src/doc/es/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/fr/a_tour_of_sage/conf.py b/src/doc/fr/a_tour_of_sage/conf.py index af1f453f3e4..9cca4b7d1f8 100644 --- a/src/doc/fr/a_tour_of_sage/conf.py +++ b/src/doc/fr/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/fr/tutorial/conf.py b/src/doc/fr/tutorial/conf.py index af70d3eb4ff..38e0160f3ba 100644 --- a/src/doc/fr/tutorial/conf.py +++ b/src/doc/fr/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/hu/a_tour_of_sage/conf.py b/src/doc/hu/a_tour_of_sage/conf.py index b097f56dfe0..2e5215fcf5d 100644 --- a/src/doc/hu/a_tour_of_sage/conf.py +++ b/src/doc/hu/a_tour_of_sage/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/it/a_tour_of_sage/conf.py b/src/doc/it/a_tour_of_sage/conf.py index d06280ece36..48a568cc4d1 100644 --- a/src/doc/it/a_tour_of_sage/conf.py +++ b/src/doc/it/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/it/faq/conf.py b/src/doc/it/faq/conf.py index e3898184a1f..84a8ac93eab 100644 --- a/src/doc/it/faq/conf.py +++ b/src/doc/it/faq/conf.py @@ -15,6 +15,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/it/tutorial/conf.py b/src/doc/it/tutorial/conf.py index 15186edb4ba..ea77f3199b0 100644 --- a/src/doc/it/tutorial/conf.py +++ b/src/doc/it/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/ja/a_tour_of_sage/conf.py b/src/doc/ja/a_tour_of_sage/conf.py index e8ec7cca39b..eef0eba83b3 100644 --- a/src/doc/ja/a_tour_of_sage/conf.py +++ b/src/doc/ja/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/ja/tutorial/conf.py b/src/doc/ja/tutorial/conf.py index 9002593de99..eaaa4558a34 100644 --- a/src/doc/ja/tutorial/conf.py +++ b/src/doc/ja/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release, latex_elements from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/pt/a_tour_of_sage/conf.py b/src/doc/pt/a_tour_of_sage/conf.py index 267d499ca64..806bc1b77c8 100644 --- a/src/doc/pt/a_tour_of_sage/conf.py +++ b/src/doc/pt/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/pt/tutorial/conf.py b/src/doc/pt/tutorial/conf.py index a5cabc5b0d1..26368567ee4 100644 --- a/src/doc/pt/tutorial/conf.py +++ b/src/doc/pt/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/ru/tutorial/conf.py b/src/doc/ru/tutorial/conf.py index 5d39f7d2600..f2f44113045 100644 --- a/src/doc/ru/tutorial/conf.py +++ b/src/doc/ru/tutorial/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/doc/tr/a_tour_of_sage/conf.py b/src/doc/tr/a_tour_of_sage/conf.py index b7536470bd4..9d2a503d78d 100644 --- a/src/doc/tr/a_tour_of_sage/conf.py +++ b/src/doc/tr/a_tour_of_sage/conf.py @@ -13,6 +13,11 @@ from sage_docbuild.conf import release from sage_docbuild.conf import * # NOQA + +for tag in feature_tags(): + tags.add(tag) + + # Add any paths that contain custom static files (such as style sheets), # relative to this directory to html_static_path. They are copied after the # builtin static files, so a file named "default.css" will overwrite the diff --git a/src/pyproject.toml b/src/pyproject.toml index 4d2704f9469..458144ec462 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -8,12 +8,14 @@ requires = [ 'wheel >=0.36.2', 'cypari2 >=2.1.1', 'cysignals >=1.11.4', - # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748 - 'cython >=3.0, != 3.0.3, <4.0', + # per https://github.com/scipy/scipy/blob/maintenance/1.13.x/pyproject.toml + 'cython >=3.0.8,<3.1.0', 'gmpy2 ~=2.1.b999', 'memory_allocator', - 'numpy >=1.19', + # per https://github.com/scipy/scipy/blob/maintenance/1.13.x/pyproject.toml + 'numpy >=1.22.4', 'pkgconfig', + 'jinja2', ] build-backend = "setuptools.build_meta" diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py index 71277561331..3b681d75d3b 100644 --- a/src/sage/algebras/fusion_rings/fusion_double.py +++ b/src/sage/algebras/fusion_rings/fusion_double.py @@ -133,7 +133,7 @@ class FusionDouble(CombinatorialFreeModule): sage: G = SmallPermutationGroup(16,9) sage: F = FusionDouble(G, prefix='b', inject_variables=True) sage: b13^2 # long time (4s) - b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27 + b0 + b3 + b4 """ @staticmethod def __classcall_private__(cls, G, prefix='s', inject_variables=False): diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py index aabd3cdbb4f..14bebdcd080 100644 --- a/src/sage/categories/simplicial_sets.py +++ b/src/sage/categories/simplicial_sets.py @@ -591,9 +591,9 @@ def _canonical_twisting_operator(self): sage: X = simplicial_sets.Torus() sage: d = X._canonical_twisting_operator() sage: d - {(s_0 v_0, sigma_1): f3, (sigma_1, s_0 v_0): f2*f3^-1, (sigma_1, sigma_1): f2} + {(s_0 v_0, sigma_1): f2, (sigma_1, s_0 v_0): f1*f2^-1, (sigma_1, sigma_1): f1} sage: list(d.values())[0].parent() - Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring + Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring sage: Y = simplicial_sets.RealProjectiveSpace(2) sage: d2 = Y._canonical_twisting_operator() sage: d2 @@ -674,10 +674,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment sage: X = simplicial_sets.Torus() sage: C = X.twisted_chain_complex() sage: C.differential(1) - [ f3 - 1 f2*f3^-1 - 1 f2 - 1] + [ f2 - 1 f1*f2^-1 - 1 f1 - 1] sage: C.differential(2) - [ 1 f2*f3^-1] - [ f3 1] + [ 1 f1*f2^-1] + [ f2 1] [ -1 -1] sage: C.differential(3) [] @@ -844,29 +844,29 @@ def twisted_homology(self, n, reduced=False): sage: # needs sage.graphs sage: Y = simplicial_sets.Torus() sage: Y.twisted_homology(1) - Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [ 1 0 0 0 0] [ 0 1 0 0 0] [ 0 0 1 0 0] [ 0 0 0 1 0] [ 0 0 0 0 1] + [f1*f1inv - 1 0 0 0 0] + [ 0 f1*f1inv - 1 0 0 0] + [ 0 0 f1*f1inv - 1 0 0] + [ 0 0 0 f1*f1inv - 1 0] + [ 0 0 0 0 f1*f1inv - 1] [f2*f2inv - 1 0 0 0 0] [ 0 f2*f2inv - 1 0 0 0] [ 0 0 f2*f2inv - 1 0 0] [ 0 0 0 f2*f2inv - 1 0] [ 0 0 0 0 f2*f2inv - 1] - [f3*f3inv - 1 0 0 0 0] - [ 0 f3*f3inv - 1 0 0 0] - [ 0 0 f3*f3inv - 1 0 0] - [ 0 0 0 f3*f3inv - 1 0] - [ 0 0 0 0 f3*f3inv - 1] sage: Y.twisted_homology(2) - Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [] sage: Y.twisted_homology(1, reduced=True) - Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [1 0 0 0 0] [0 1 0 0 0] diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py index e2d818e9480..84e6c4fcc9b 100644 --- a/src/sage/combinat/matrices/latin.py +++ b/src/sage/combinat/matrices/latin.py @@ -2444,7 +2444,7 @@ def p3_group_bitrade_generators(p): EXAMPLES:: sage: from sage.combinat.matrices.latin import * - sage: p3_group_bitrade_generators(3) + sage: p3_group_bitrade_generators(3) # random output ((2,6,7)(3,8,9), (1,2,3)(4,7,8)(5,6,9), (1,9,2)(3,7,4)(5,8,6), diff --git a/src/sage/features/sphinx.py b/src/sage/features/sphinx.py index ec7c8be17b6..672b826f59d 100644 --- a/src/sage/features/sphinx.py +++ b/src/sage/features/sphinx.py @@ -39,5 +39,33 @@ def __init__(self): PythonModule.__init__(self, 'sphinx', spkg='sphinx', type='standard') +class JupyterSphinx(PythonModule): + r""" + A :class:`sage.features.Feature` describing the presence of + :ref:`jupyter_sphinx `. + + It is provided by a standard package in the Sage distribution, + but it can be disabled by ``configure --disable-doc`` and + ``configure --disable-notebook``. + + EXAMPLES:: + + sage: from sage.features.sphinx import JupyterSphinx + sage: JupyterSphinx().is_present() # optional - jupyter_sphinx + FeatureTestResult('jupyter_sphinx', True) + """ + def __init__(self): + r""" + TESTS:: + + sage: from sage.features.sphinx import JupyterSphinx + sage: isinstance(JupyterSphinx(), JupyterSphinx) + True + """ + PythonModule.__init__(self, 'jupyter_sphinx', + spkg='jupyter_sphinx', type='standard') + + def all_features(): - return [Sphinx()] + return [Sphinx(), + JupyterSphinx()] diff --git a/src/sage/graphs/generic_graph.py b/src/sage/graphs/generic_graph.py index 46523fdfda5..614186f04e4 100644 --- a/src/sage/graphs/generic_graph.py +++ b/src/sage/graphs/generic_graph.py @@ -15993,7 +15993,11 @@ def clustering_coeff(self, {0: 1/3, 1: 1/3, 2: 0, 3: 1/3, 4: 1/3, 5: 1/3, 6: 1/3, 7: 1/3, 8: 0, 9: 1/3, 10: 1/3, 11: 0} - sage: (graphs.FruchtGraph()).clustering_coeff(weight=True) # needs networkx + sage: # needs networkx + sage: import numpy + sage: if int(numpy.version.short_version[0]) > 1: + ....: numpy.set_printoptions(legacy="1.25") + sage: (graphs.FruchtGraph()).clustering_coeff(weight=True) {0: 0.3333333333333333, 1: 0.3333333333333333, 2: 0, 3: 0.3333333333333333, 4: 0.3333333333333333, 5: 0.3333333333333333, 6: 0.3333333333333333, diff --git a/src/sage/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py index 61db70925e1..521289c7578 100644 --- a/src/sage/groups/cubic_braid.py +++ b/src/sage/groups/cubic_braid.py @@ -282,7 +282,7 @@ def _richcmp_(self, other, op): EXAMPLES:: sage: CBG3 = CubicBraidGroup(3) - sage: sorted(CBG3) # indirect doctest + sage: sorted(CBG3) # indirect doctest, random output [(c0*c1^-1)^2, c0*c1^-1*c0, c0^-1*c1*c0^-1, c0^-1*c1^-1*c0, c1*c0^-1*c1, c0^-1*c1^-1*c0^-1, c0^-1*c1^-1, c1^-1*c0*c1^-1, c0*c1^-1*c0^-1, c0^-1*c1, c0^-1*c1*c0, c0*c1^-1, c1*c0^-1, diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py index 4ac2faa783b..7016d08381b 100644 --- a/src/sage/groups/finitely_presented.py +++ b/src/sage/groups/finitely_presented.py @@ -1344,8 +1344,8 @@ def abelianization_map(self): sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) sage: H.abelianization_map() Group morphism: - From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > - To: Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, f3^-1*f4^-1*f3*f4, f2^4, f3^4 > + From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > + To: Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 > sage: g = FreeGroup(0) / [] sage: g.abelianization_map() Group endomorphism of Finitely presented group < | > @@ -1394,10 +1394,10 @@ def abelianization_to_algebra(self, ring=QQ): Defining g0, g1, g2, g3 sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) sage: H.abelianization_to_algebra() - (Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, - f3^-1*f4^-1*f3*f4, f2^4, f3^4 >, - Multivariate Laurent Polynomial Ring in f2, f3, f4 over Rational Field, - [f2^4 - 1, f3^4 - 1], [f2^-1*f3^-2, f3^-2, f4, f3]) + (Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >, + Multivariate Laurent Polynomial Ring in f1, f2, f3 over Rational Field, + [f1^4 - 1, f2^4 - 1], + [f1^3*f2^2, f2^2, f3, f2]) sage: g=FreeGroup(0) / [] sage: g.abelianization_to_algebra() (Finitely presented group < | >, Rational Field, [], []) @@ -1673,7 +1673,7 @@ def abelian_alexander_matrix(self, ring=QQ, simplified=True): [] sage: G = FreeGroup(3)/[(2, 1, 1), (1, 2, 2, 3, 3)] sage: A, ideal = G.abelian_alexander_matrix(simplified=True); A - [-f3^2 - f3^4 - f3^6 f3^3 + f3^6] + [-f1^2 - f1^4 - f1^6 f1^3 + f1^6] sage: g = FreeGroup(1) / [] sage: g.abelian_alexander_matrix() ([], []) @@ -1773,11 +1773,11 @@ def characteristic_varieties(self, ring=QQ, matrix_ideal=None, groebner=False): 3: Ideal (1) of Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring} sage: G = FreeGroup(2)/[(1,2,1,-2,-1,-2)] sage: G.characteristic_varieties() - {0: Ideal (0) of Univariate Laurent Polynomial Ring in f2 over Rational Field, - 1: Ideal (-1 + 2*f2 - 2*f2^2 + f2^3) of Univariate Laurent Polynomial Ring in f2 over Rational Field, - 2: Ideal (1) of Univariate Laurent Polynomial Ring in f2 over Rational Field} + {0: Ideal (0) of Univariate Laurent Polynomial Ring in f1 over Rational Field, + 1: Ideal (-1 + 2*f1 - 2*f1^2 + f1^3) of Univariate Laurent Polynomial Ring in f1 over Rational Field, + 2: Ideal (1) of Univariate Laurent Polynomial Ring in f1 over Rational Field} sage: G.characteristic_varieties(groebner=True) - {0: [0], 1: [-1 + f2, 1 - f2 + f2^2], 2: []} + {0: [0], 1: [-1 + f1, 1 - f1 + f1^2], 2: []} sage: G = FreeGroup(2)/[3 * (1, ), 2 * (2, )] sage: G.characteristic_varieties(groebner=True) {0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2], 2: []} diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py index 5c153b93d4c..bd4afad2942 100644 --- a/src/sage/groups/perm_gps/permgroup_named.py +++ b/src/sage/groups/perm_gps/permgroup_named.py @@ -3465,16 +3465,14 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: G = SmallPermutationGroup(12,4); G Group of order 12 and GAP Id 4 as a permutation group sage: G.gens() - ((1,2)(3,5)(4,10)(6,8)(7,12)(9,11), - (1,3)(2,5)(4,7)(6,9)(8,11)(10,12), - (1,4,8)(2,6,10)(3,7,11)(5,9,12)) + ((4,5), (1,2), (3,4,5)) sage: G.character_table() # needs sage.rings.number_field [ 1 1 1 1 1 1] - [ 1 -1 -1 1 1 -1] + [ 1 -1 1 -1 1 -1] [ 1 -1 1 1 -1 1] - [ 1 1 -1 1 -1 -1] - [ 2 0 -2 -1 0 1] - [ 2 0 2 -1 0 -1] + [ 1 1 1 -1 -1 -1] + [ 2 0 -1 -2 0 1] + [ 2 0 -1 2 0 -1] sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n)) sage: all(SmallPermutationGroup(n,k).id() == [n,k] ....: for n in [1..64] for k in [1..numgps(n)]) @@ -3483,11 +3481,11 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: H.is_abelian() False sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()] - [Subgroup generated by [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)] of + [Subgroup generated by [(1,3), (2,3)] of (Group of order 6 and GAP Id 1 as a permutation group), - Subgroup generated by [(1,2)(3,6)(4,5)] of + Subgroup generated by [(2,3)] of (Group of order 6 and GAP Id 1 as a permutation group), - Subgroup generated by [(1,3,5)(2,4,6), (1,5,3)(2,6,4)] of + Subgroup generated by [(1,2,3)] of (Group of order 6 and GAP Id 1 as a permutation group)] """ diff --git a/src/sage/libs/flint/flint_wrap.h b/src/sage/libs/flint/flint_wrap.h index 1302973779e..2cd39eb1441 100644 --- a/src/sage/libs/flint/flint_wrap.h +++ b/src/sage/libs/flint/flint_wrap.h @@ -26,6 +26,10 @@ #pragma push_macro("ulong") #undef ulong +/* Reserved in C99, needed for FLINT without https://github.com/flintlib/flint/pull/2027 */ +#pragma push_macro("I") +#define I Iv + #include /* If flint was already previously included via another header (e.g. @@ -169,6 +173,7 @@ #undef mp_bitcnt_t #pragma pop_macro("ulong") +#pragma pop_macro("I") /* CPU_SIZE_1 and SIZE_RED_FAILURE_THRESH are defined as macros in flint/fmpz_lll.h * and as variables in fplll/defs.h, which breaks build if linbox is compiled with fplll */ diff --git a/src/sage/matroids/basis_exchange_matroid.pxd b/src/sage/matroids/basis_exchange_matroid.pxd index dc4b4aeb114..06c0c2cabb2 100644 --- a/src/sage/matroids/basis_exchange_matroid.pxd +++ b/src/sage/matroids/basis_exchange_matroid.pxd @@ -46,19 +46,19 @@ cdef class BasisExchangeMatroid(Matroid): cpdef _move_current_basis(self, X, Y) cpdef frozenset _max_independent(self, frozenset F) - cpdef int _rank(self, frozenset F) + cpdef int _rank(self, frozenset F) except -1 cpdef frozenset _circuit(self, frozenset F) cpdef frozenset _fundamental_circuit(self, frozenset B, e) cpdef frozenset _closure(self, frozenset F) cpdef frozenset _max_coindependent(self, frozenset F) - cpdef int _corank(self, frozenset F) + cpdef int _corank(self, frozenset F) noexcept cpdef frozenset _cocircuit(self, frozenset F) cpdef frozenset _fundamental_cocircuit(self, frozenset B, e) cpdef frozenset _coclosure(self, frozenset F) cpdef frozenset _augment(self, frozenset X, frozenset Y) - cpdef bint _is_independent(self, frozenset F) + cpdef bint _is_independent(self, frozenset F) noexcept cpdef list whitney_numbers2(self) cdef _whitney_numbers2_rec(self, object f_vec, bitset_t* flats, bitset_t* todo, long elt, long rnk) @@ -90,6 +90,6 @@ cdef class BasisExchangeMatroid(Matroid): cpdef _is_isomorphism(self, other, morphism) cdef bint __is_isomorphism(self, BasisExchangeMatroid other, morphism) noexcept - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept cdef bint nxksrd(bitset_s *b, long n, long k, bint succ) noexcept diff --git a/src/sage/matroids/basis_exchange_matroid.pyx b/src/sage/matroids/basis_exchange_matroid.pyx index a3c4c897d16..422d9c71d90 100644 --- a/src/sage/matroids/basis_exchange_matroid.pyx +++ b/src/sage/matroids/basis_exchange_matroid.pyx @@ -652,7 +652,7 @@ cdef class BasisExchangeMatroid(Matroid): self.__max_independent(self._output, self._input) return self.__unpack(self._output) - cpdef int _rank(self, frozenset F): + cpdef int _rank(self, frozenset F) except -1: """ Compute the rank of a subset of the groundset. @@ -796,7 +796,7 @@ cdef class BasisExchangeMatroid(Matroid): self.__max_coindependent(self._output, self._input) return self.__unpack(self._output) - cpdef int _corank(self, frozenset F): + cpdef int _corank(self, frozenset F) noexcept: """ Return the corank of a set. @@ -940,7 +940,7 @@ cdef class BasisExchangeMatroid(Matroid): self.__augment(self._output, self._input, self._input2) return self.__unpack(self._output) - cpdef bint _is_independent(self, frozenset F): + cpdef bint _is_independent(self, frozenset F) noexcept: """ Test if input is independent. @@ -2231,7 +2231,7 @@ cdef class BasisExchangeMatroid(Matroid): return self._characteristic_setsystem()._isomorphism(other._characteristic_setsystem(), PS, PO) is not None - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. diff --git a/src/sage/matroids/basis_matroid.pxd b/src/sage/matroids/basis_matroid.pxd index 5789ad98937..fd240b01a38 100644 --- a/src/sage/matroids/basis_matroid.pxd +++ b/src/sage/matroids/basis_matroid.pxd @@ -15,7 +15,7 @@ cdef class BasisMatroid(BasisExchangeMatroid): cdef reset_current_basis(self) - cpdef bint _is_basis(self, frozenset X) + cpdef bint _is_basis(self, frozenset X) noexcept cpdef bases_count(self) cpdef SetSystem bases(self) diff --git a/src/sage/matroids/basis_matroid.pyx b/src/sage/matroids/basis_matroid.pyx index f9710eaac7c..b74a76af956 100644 --- a/src/sage/matroids/basis_matroid.pyx +++ b/src/sage/matroids/basis_matroid.pyx @@ -298,7 +298,7 @@ cdef class BasisMatroid(BasisExchangeMatroid): # a function that is very efficient for this class - cpdef bint _is_basis(self, frozenset X): + cpdef bint _is_basis(self, frozenset X) noexcept: """ Test if input is a basis. diff --git a/src/sage/matroids/circuit_closures_matroid.pxd b/src/sage/matroids/circuit_closures_matroid.pxd index 878443d86f3..2fe5629477c 100644 --- a/src/sage/matroids/circuit_closures_matroid.pxd +++ b/src/sage/matroids/circuit_closures_matroid.pxd @@ -5,9 +5,9 @@ cdef class CircuitClosuresMatroid(Matroid): cdef dict _circuit_closures # _CC cdef int _matroid_rank # _R cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cpdef full_rank(self) - cpdef bint _is_independent(self, frozenset F) + cpdef bint _is_independent(self, frozenset F) noexcept cpdef frozenset _max_independent(self, frozenset F) cpdef frozenset _circuit(self, frozenset F) cpdef dict circuit_closures(self) diff --git a/src/sage/matroids/circuit_closures_matroid.pyx b/src/sage/matroids/circuit_closures_matroid.pyx index 7dd29ee8143..d075792a2f4 100644 --- a/src/sage/matroids/circuit_closures_matroid.pyx +++ b/src/sage/matroids/circuit_closures_matroid.pyx @@ -179,7 +179,7 @@ cdef class CircuitClosuresMatroid(Matroid): """ return frozenset(self._groundset) - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: """ Return the rank of a set ``X``. @@ -221,7 +221,7 @@ cdef class CircuitClosuresMatroid(Matroid): """ return self._matroid_rank - cpdef bint _is_independent(self, frozenset F): + cpdef bint _is_independent(self, frozenset F) noexcept: """ Test if input is independent. diff --git a/src/sage/matroids/circuits_matroid.pxd b/src/sage/matroids/circuits_matroid.pxd index f7b938a4d6f..7fa37c8cebe 100644 --- a/src/sage/matroids/circuits_matroid.pxd +++ b/src/sage/matroids/circuits_matroid.pxd @@ -9,9 +9,9 @@ cdef class CircuitsMatroid(Matroid): cdef list _sorted_C_lens cdef bint _nsc_defined cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cpdef full_rank(self) - cpdef bint _is_independent(self, frozenset X) + cpdef bint _is_independent(self, frozenset X) noexcept cpdef frozenset _max_independent(self, frozenset X) cpdef frozenset _circuit(self, frozenset X) cpdef frozenset _closure(self, frozenset X) @@ -27,11 +27,11 @@ cdef class CircuitsMatroid(Matroid): # properties cpdef girth(self) - cpdef bint is_paving(self) + cpdef bint is_paving(self) noexcept # isomorphism and relabeling cpdef _is_isomorphic(self, other, certificate=*) cpdef relabel(self, mapping) # verification - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept diff --git a/src/sage/matroids/circuits_matroid.pyx b/src/sage/matroids/circuits_matroid.pyx index ae3be51d36f..fed8db3dd47 100644 --- a/src/sage/matroids/circuits_matroid.pyx +++ b/src/sage/matroids/circuits_matroid.pyx @@ -100,7 +100,7 @@ cdef class CircuitsMatroid(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: """ Return the rank of a set ``X``. @@ -140,7 +140,7 @@ cdef class CircuitsMatroid(Matroid): """ return self._matroid_rank - cpdef bint _is_independent(self, frozenset X): + cpdef bint _is_independent(self, frozenset X) noexcept: """ Test if input is independent. @@ -850,7 +850,7 @@ cdef class CircuitsMatroid(Matroid): from sage.rings.infinity import infinity return min(self._k_C, default=infinity) - cpdef bint is_paving(self): + cpdef bint is_paving(self) noexcept: """ Return if ``self`` is paving. @@ -869,7 +869,7 @@ cdef class CircuitsMatroid(Matroid): # verification - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if ``self`` obeys the matroid axioms. diff --git a/src/sage/matroids/flats_matroid.pxd b/src/sage/matroids/flats_matroid.pxd index 956e30f859d..926cce035f2 100644 --- a/src/sage/matroids/flats_matroid.pxd +++ b/src/sage/matroids/flats_matroid.pxd @@ -8,9 +8,9 @@ cdef class FlatsMatroid(Matroid): cdef object _L # lattice of flats cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cpdef frozenset _closure(self, frozenset X) - cpdef bint _is_closed(self, frozenset X) + cpdef bint _is_closed(self, frozenset X) noexcept cpdef full_rank(self) @@ -24,4 +24,4 @@ cdef class FlatsMatroid(Matroid): cpdef relabel(self, mapping) # verification - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept diff --git a/src/sage/matroids/flats_matroid.pyx b/src/sage/matroids/flats_matroid.pyx index 9c6a3c76aeb..369ae137b0a 100644 --- a/src/sage/matroids/flats_matroid.pyx +++ b/src/sage/matroids/flats_matroid.pyx @@ -114,7 +114,7 @@ cdef class FlatsMatroid(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: """ Return the rank of a set ``X``. @@ -191,7 +191,7 @@ cdef class FlatsMatroid(Matroid): if f >= X: return f - cpdef bint _is_closed(self, frozenset X): + cpdef bint _is_closed(self, frozenset X) noexcept: """ Test if input is a closed set. @@ -539,7 +539,7 @@ cdef class FlatsMatroid(Matroid): # verification - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if ``self`` obeys the matroid axioms. diff --git a/src/sage/matroids/graphic_matroid.pxd b/src/sage/matroids/graphic_matroid.pxd index 8ec8dd9e8b0..32c243267ff 100644 --- a/src/sage/matroids/graphic_matroid.pxd +++ b/src/sage/matroids/graphic_matroid.pxd @@ -7,23 +7,23 @@ cdef class GraphicMatroid(Matroid): cdef dict _vertex_map cdef dict _groundset_edge_map cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cpdef _vertex_stars(self) cpdef _minor(self, contractions, deletions) cpdef _has_minor(self, N, bint certificate=*) - cpdef int _corank(self, frozenset X) - cpdef bint _is_circuit(self, frozenset X) + cpdef int _corank(self, frozenset X) noexcept + cpdef bint _is_circuit(self, frozenset X) noexcept cpdef frozenset _closure(self, frozenset X) cpdef frozenset _max_independent(self, frozenset X) cpdef frozenset _max_coindependent(self, frozenset X) cpdef frozenset _circuit(self, frozenset X) cpdef frozenset _coclosure(self, frozenset X) - cpdef bint _is_closed(self, frozenset X) + cpdef bint _is_closed(self, frozenset X) noexcept cpdef _is_isomorphic(self, other, certificate=*) cpdef _isomorphism(self, other) - cpdef bint is_valid(self) - cpdef bint is_graphic(self) - cpdef bint is_regular(self) + cpdef bint is_valid(self) noexcept + cpdef bint is_graphic(self) noexcept + cpdef bint is_regular(self) noexcept cpdef graph(self) cpdef vertex_map(self) cpdef list groundset_to_edges(self, X) diff --git a/src/sage/matroids/graphic_matroid.pyx b/src/sage/matroids/graphic_matroid.pyx index a01cef13fe3..b332897abeb 100644 --- a/src/sage/matroids/graphic_matroid.pyx +++ b/src/sage/matroids/graphic_matroid.pyx @@ -238,7 +238,7 @@ cdef class GraphicMatroid(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: """ Return the rank of a set ``X``. @@ -625,7 +625,7 @@ cdef class GraphicMatroid(Matroid): N = N.regular_matroid() return M._has_minor(N, certificate=certificate) - cpdef int _corank(self, frozenset X): + cpdef int _corank(self, frozenset X) noexcept: """ Return the corank of the set `X` in the matroid. @@ -653,7 +653,7 @@ cdef class GraphicMatroid(Matroid): DS_vertices.union(u, v) return len(X) - (DS_vertices.number_of_subsets() - Integer(1)) - cpdef bint _is_circuit(self, frozenset X): + cpdef bint _is_circuit(self, frozenset X) noexcept: """ Test if input is a circuit. @@ -918,7 +918,7 @@ cdef class GraphicMatroid(Matroid): g.add_edge(e) return frozenset(XX) - cpdef bint _is_closed(self, frozenset X): + cpdef bint _is_closed(self, frozenset X) noexcept: """ Test if input is a closed set. @@ -1093,7 +1093,7 @@ cdef class GraphicMatroid(Matroid): """ return self.is_isomorphic(other, certificate=True)[1] - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: """ Test if the data obey the matroid axioms. @@ -1110,7 +1110,7 @@ cdef class GraphicMatroid(Matroid): """ return True - cpdef bint is_graphic(self): + cpdef bint is_graphic(self) noexcept: r""" Return if ``self`` is graphic. @@ -1124,7 +1124,7 @@ cdef class GraphicMatroid(Matroid): """ return True - cpdef bint is_regular(self): + cpdef bint is_regular(self) noexcept: r""" Return if ``self`` is regular. diff --git a/src/sage/matroids/linear_matroid.pxd b/src/sage/matroids/linear_matroid.pxd index 085a68be0f6..b0890a76148 100644 --- a/src/sage/matroids/linear_matroid.pxd +++ b/src/sage/matroids/linear_matroid.pxd @@ -62,7 +62,7 @@ cdef class LinearMatroid(BasisExchangeMatroid): cpdef _is_3connected_shifting(self, certificate=*) cpdef _is_4connected_shifting(self, certificate=*) - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept cdef class BinaryMatroid(LinearMatroid): cdef tuple _b_invariant, _b_partition @@ -91,8 +91,8 @@ cdef class BinaryMatroid(LinearMatroid): cpdef _fast_isom_test(self, other) cpdef relabel(self, mapping) - cpdef bint is_graphic(self) - cpdef bint is_valid(self) + cpdef bint is_graphic(self) noexcept + cpdef bint is_valid(self) noexcept cdef class TernaryMatroid(LinearMatroid): @@ -122,7 +122,7 @@ cdef class TernaryMatroid(LinearMatroid): cpdef _fast_isom_test(self, other) cpdef relabel(self, mapping) - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept cdef class QuaternaryMatroid(LinearMatroid): cdef object _x_zero, _x_one @@ -149,7 +149,7 @@ cdef class QuaternaryMatroid(LinearMatroid): cpdef _fast_isom_test(self, other) cpdef relabel(self, mapping) - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept cdef class RegularMatroid(LinearMatroid): cdef _bases_count, _r_invariant @@ -172,6 +172,6 @@ cdef class RegularMatroid(LinearMatroid): cpdef has_line_minor(self, k, hyperlines=*, certificate=*) cpdef _linear_extension_chains(self, F, fundamentals=*) - cpdef bint is_regular(self) - cpdef bint is_graphic(self) - cpdef bint is_valid(self) + cpdef bint is_regular(self) noexcept + cpdef bint is_graphic(self) noexcept + cpdef bint is_valid(self) noexcept diff --git a/src/sage/matroids/linear_matroid.pyx b/src/sage/matroids/linear_matroid.pyx index 0310b8c2cd3..6848604f0c8 100644 --- a/src/sage/matroids/linear_matroid.pyx +++ b/src/sage/matroids/linear_matroid.pyx @@ -2614,7 +2614,7 @@ cdef class LinearMatroid(BasisExchangeMatroid): cochains = self.linear_coextension_cochains(F, cosimple=cosimple, fundamentals=fundamentals) return self._linear_coextensions(element, cochains) - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data represent an actual matroid. @@ -3793,7 +3793,7 @@ cdef class BinaryMatroid(LinearMatroid): keep_initial_representation=False) # graphicness test - cpdef bint is_graphic(self): + cpdef bint is_graphic(self) noexcept: """ Test if the binary matroid is graphic. @@ -3862,7 +3862,7 @@ cdef class BinaryMatroid(LinearMatroid): # now self is graphic iff there is a binary vector x so that M*x = 0 and x_0 = 1, so: return BinaryMatroid(m).corank(frozenset([0])) > 0 - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. @@ -4724,7 +4724,7 @@ cdef class TernaryMatroid(LinearMatroid): basis=bas, keep_initial_representation=False) - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. @@ -5488,7 +5488,7 @@ cdef class QuaternaryMatroid(LinearMatroid): basis=bas, keep_initial_representation=False) - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. @@ -6239,7 +6239,7 @@ cdef class RegularMatroid(LinearMatroid): fundamentals = set([1]) return LinearMatroid._linear_extension_chains(self, F, fundamentals) - cpdef bint is_graphic(self): + cpdef bint is_graphic(self) noexcept: """ Test if the regular matroid is graphic. @@ -6270,7 +6270,7 @@ cdef class RegularMatroid(LinearMatroid): """ return BinaryMatroid(reduced_matrix=self._reduced_representation()).is_graphic() - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. @@ -6299,7 +6299,7 @@ cdef class RegularMatroid(LinearMatroid): # representation - cpdef bint is_regular(self): + cpdef bint is_regular(self) noexcept: r""" Return if ``self`` is regular. diff --git a/src/sage/matroids/matroid.pxd b/src/sage/matroids/matroid.pxd index ca197f605b9..fd38cd0b249 100644 --- a/src/sage/matroids/matroid.pxd +++ b/src/sage/matroids/matroid.pxd @@ -9,28 +9,28 @@ cdef class Matroid(SageObject): # virtual methods cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 # internal methods, assuming verified input cpdef frozenset _max_independent(self, frozenset X) cpdef frozenset _circuit(self, frozenset X) cpdef frozenset _fundamental_circuit(self, frozenset B, e) cpdef frozenset _closure(self, frozenset X) - cpdef int _corank(self, frozenset X) + cpdef int _corank(self, frozenset X) noexcept cpdef frozenset _max_coindependent(self, frozenset X) cpdef frozenset _cocircuit(self, frozenset X) cpdef frozenset _fundamental_cocircuit(self, frozenset B, e) cpdef frozenset _coclosure(self, frozenset X) cpdef frozenset _augment(self, frozenset X, frozenset Y) - cpdef bint _is_independent(self, frozenset X) - cpdef bint _is_basis(self, frozenset X) - cpdef bint _is_circuit(self, frozenset X) - cpdef bint _is_closed(self, frozenset X) - cpdef bint _is_coindependent(self, frozenset X) - cpdef bint _is_cobasis(self, frozenset X) - cpdef bint _is_cocircuit(self, frozenset X) - cpdef bint _is_coclosed(self, frozenset X) + cpdef bint _is_independent(self, frozenset X) noexcept + cpdef bint _is_basis(self, frozenset X) noexcept + cpdef bint _is_circuit(self, frozenset X) noexcept + cpdef bint _is_closed(self, frozenset X) noexcept + cpdef bint _is_coindependent(self, frozenset X) noexcept + cpdef bint _is_cobasis(self, frozenset X) noexcept + cpdef bint _is_cocircuit(self, frozenset X) noexcept + cpdef bint _is_coclosed(self, frozenset X) noexcept cpdef _minor(self, contractions, deletions) cpdef _has_minor(self, N, bint certificate=*) @@ -105,7 +105,7 @@ cdef class Matroid(SageObject): cpdef is_coclosed(self, X) # verification - cpdef bint is_valid(self) + cpdef bint is_valid(self) noexcept # enumeration cpdef SetSystem circuits(self, k=*) @@ -184,8 +184,8 @@ cdef class Matroid(SageObject): cpdef _is_3connected_CE(self, certificate=*) cpdef _is_3connected_BC(self, certificate=*) cpdef _is_3connected_BC_recursion(self, basis, fund_cocircuits) - cpdef bint is_paving(self) - cpdef bint is_sparse_paving(self) + cpdef bint is_paving(self) noexcept + cpdef bint is_sparse_paving(self) noexcept cpdef girth(self) # representability @@ -195,8 +195,8 @@ cdef class Matroid(SageObject): cpdef _local_ternary_matroid(self, basis=*) cpdef ternary_matroid(self, randomized_tests=*, verify=*) cpdef is_ternary(self, randomized_tests=*) - cpdef bint is_regular(self) - cpdef bint is_graphic(self) + cpdef bint is_regular(self) noexcept + cpdef bint is_graphic(self) noexcept # matroid k-closed cpdef is_k_closed(self, int k) diff --git a/src/sage/matroids/matroid.pyx b/src/sage/matroids/matroid.pyx index bfcf7d361a2..30ea73f1326 100644 --- a/src/sage/matroids/matroid.pyx +++ b/src/sage/matroids/matroid.pyx @@ -492,7 +492,7 @@ cdef class Matroid(SageObject): """ raise NotImplementedError("subclasses need to implement this") - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: r""" Return the rank of a set ``X``. @@ -513,8 +513,9 @@ cdef class Matroid(SageObject): sage: M = sage.matroids.matroid.Matroid() sage: M._rank(frozenset([0, 1, 2])) - NotImplementedError: subclasses need to implement this + Traceback (most recent call last): ... + NotImplementedError: subclasses need to implement this """ raise NotImplementedError("subclasses need to implement this") @@ -732,7 +733,7 @@ cdef class Matroid(SageObject): XX.pop() return frozenset(XX) - cpdef int _corank(self, frozenset X): + cpdef int _corank(self, frozenset X) noexcept: """ Return the corank of a set. @@ -904,7 +905,7 @@ cdef class Matroid(SageObject): # override the following methods for even better efficiency - cpdef bint _is_independent(self, frozenset X): + cpdef bint _is_independent(self, frozenset X) noexcept: """ Test if input is independent. @@ -925,7 +926,7 @@ cdef class Matroid(SageObject): """ return len(X) == self._rank(X) - cpdef bint _is_basis(self, frozenset X): + cpdef bint _is_basis(self, frozenset X) noexcept: """ Test if input is a basis. @@ -958,7 +959,7 @@ cdef class Matroid(SageObject): """ return self._is_independent(X) - cpdef bint _is_circuit(self, frozenset X): + cpdef bint _is_circuit(self, frozenset X) noexcept: """ Test if input is a circuit. @@ -990,7 +991,7 @@ cdef class Matroid(SageObject): Z.add(x) return True - cpdef bint _is_closed(self, frozenset X): + cpdef bint _is_closed(self, frozenset X) noexcept: """ Test if input is a closed set. @@ -1019,7 +1020,7 @@ cdef class Matroid(SageObject): XX.discard(y) return True - cpdef bint _is_coindependent(self, frozenset X): + cpdef bint _is_coindependent(self, frozenset X) noexcept: """ Test if input is coindependent. @@ -1040,7 +1041,7 @@ cdef class Matroid(SageObject): """ return self._corank(X) == len(X) - cpdef bint _is_cobasis(self, frozenset X): + cpdef bint _is_cobasis(self, frozenset X) noexcept: """ Test if input is a cobasis. @@ -1068,7 +1069,7 @@ cdef class Matroid(SageObject): """ return self._is_basis(self.groundset().difference(X)) - cpdef bint _is_cocircuit(self, frozenset X): + cpdef bint _is_cocircuit(self, frozenset X) noexcept: """ Test if input is a cocircuit. @@ -1100,7 +1101,7 @@ cdef class Matroid(SageObject): Z.add(x) return True - cpdef bint _is_coclosed(self, frozenset X): + cpdef bint _is_coclosed(self, frozenset X) noexcept: """ Test if input is a coclosed set. @@ -2305,7 +2306,7 @@ cdef class Matroid(SageObject): # verification - cpdef bint is_valid(self): + cpdef bint is_valid(self) noexcept: r""" Test if the data obey the matroid axioms. @@ -2338,7 +2339,7 @@ cdef class Matroid(SageObject): TESTS:: sage: def r(X): - ....: return -1 + ....: return -2 sage: M = Matroid(groundset=[0,1,2], rank_function=r) sage: M.is_valid() False @@ -6187,7 +6188,7 @@ cdef class Matroid(SageObject): return False return True - cpdef bint is_paving(self): + cpdef bint is_paving(self) noexcept: """ Return if ``self`` is paving. @@ -6210,7 +6211,7 @@ cdef class Matroid(SageObject): return False return True - cpdef bint is_sparse_paving(self): + cpdef bint is_sparse_paving(self) noexcept: """ Return if ``self`` is sparse-paving. @@ -6577,7 +6578,7 @@ cdef class Matroid(SageObject): """ return self.ternary_matroid(randomized_tests=randomized_tests, verify=True) is not None - cpdef bint is_graphic(self): + cpdef bint is_graphic(self) noexcept: r""" Return if ``self`` is graphic. @@ -6611,7 +6612,7 @@ cdef class Matroid(SageObject): return False return True - cpdef bint is_regular(self): + cpdef bint is_regular(self) noexcept: r""" Return if ``self`` is regular. diff --git a/src/sage/matroids/union_matroid.pxd b/src/sage/matroids/union_matroid.pxd index 518ca54bba9..10d995e28c5 100644 --- a/src/sage/matroids/union_matroid.pxd +++ b/src/sage/matroids/union_matroid.pxd @@ -5,16 +5,16 @@ cdef class MatroidUnion(Matroid): cdef list matroids cdef frozenset _groundset cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cdef class MatroidSum(Matroid): cdef list summands cdef frozenset _groundset cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 cdef class PartitionMatroid(Matroid): cdef dict p cdef frozenset _groundset cpdef frozenset groundset(self) - cpdef int _rank(self, frozenset X) + cpdef int _rank(self, frozenset X) except -1 diff --git a/src/sage/matroids/union_matroid.pyx b/src/sage/matroids/union_matroid.pyx index ef40d0fc1b2..54b57434565 100644 --- a/src/sage/matroids/union_matroid.pyx +++ b/src/sage/matroids/union_matroid.pyx @@ -66,7 +66,7 @@ cdef class MatroidUnion(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: r""" Return the rank of a set ``X``. @@ -195,7 +195,7 @@ cdef class MatroidSum(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: r""" Return the rank of a set ``X``. @@ -290,7 +290,7 @@ cdef class PartitionMatroid(Matroid): """ return self._groundset - cpdef int _rank(self, frozenset X): + cpdef int _rank(self, frozenset X) except -1: r""" Return the rank of a set ``X``. diff --git a/src/sage/sets/disjoint_set.pxd b/src/sage/sets/disjoint_set.pxd index 3c8351983e7..4d981718568 100644 --- a/src/sage/sets/disjoint_set.pxd +++ b/src/sage/sets/disjoint_set.pxd @@ -19,8 +19,8 @@ cdef class DisjointSet_class(SageObject): cpdef number_of_subsets(self) cdef class DisjointSet_of_integers(DisjointSet_class): - cpdef int find(self, int i) - cpdef void union(self, int i, int j) + cpdef int find(self, int i) except -1 + cpdef void union(self, int i, int j) except * cpdef root_to_elements_dict(self) cpdef element_to_root_dict(self) cpdef to_digraph(self) @@ -29,7 +29,7 @@ cdef class DisjointSet_of_hashables(DisjointSet_class): cdef list _int_to_el cdef dict _el_to_int cpdef find(self, e) - cpdef void union(self, e, f) + cpdef void union(self, e, f) noexcept cpdef root_to_elements_dict(self) cpdef element_to_root_dict(self) cpdef to_digraph(self) diff --git a/src/sage/sets/disjoint_set.pyx b/src/sage/sets/disjoint_set.pyx index 1c2d93fea2a..02cf77fbdd7 100644 --- a/src/sage/sets/disjoint_set.pyx +++ b/src/sage/sets/disjoint_set.pyx @@ -448,7 +448,7 @@ cdef class DisjointSet_of_integers(DisjointSet_class): for i, parent in enumerate(l): self.union(parent, i) - cpdef int find(self, int i): + cpdef int find(self, int i) except -1: r""" Return the representative of the set that ``i`` currently belongs to. @@ -479,8 +479,9 @@ cdef class DisjointSet_of_integers(DisjointSet_class): sage: [e.find(i) for i in range(5)] [0, 1, 1, 1, 1] sage: e.find(2**10) - ValueError: i must be between 0 and 4 (1024 given) + Traceback (most recent call last): ... + ValueError: i must be between 0 and 4 (1024 given) .. NOTE:: @@ -492,7 +493,7 @@ cdef class DisjointSet_of_integers(DisjointSet_class): raise ValueError('i must be between 0 and %s (%s given)' % (card - 1, i)) return OP_find(self._nodes, i) - cpdef void union(self, int i, int j): + cpdef void union(self, int i, int j) except *: r""" Combine the set of ``i`` and the set of ``j`` into one. @@ -520,8 +521,9 @@ cdef class DisjointSet_of_integers(DisjointSet_class): sage: d {{0, 1, 2, 4}, {3}} sage: d.union(1, 5) - ValueError: j must be between 0 and 4 (5 given) + Traceback (most recent call last): ... + ValueError: j must be between 0 and 4 (5 given) .. NOTE:: @@ -797,7 +799,7 @@ cdef class DisjointSet_of_hashables(DisjointSet_class): cdef int r = OP_find(self._nodes, i) return self._int_to_el[r] - cpdef void union(self, e, f): + cpdef void union(self, e, f) noexcept: r""" Combine the set of ``e`` and the set of ``f`` into one. diff --git a/src/sage_docbuild/conf.py b/src/sage_docbuild/conf.py index ddd64c2718f..0f0333338e3 100644 --- a/src/sage_docbuild/conf.py +++ b/src/sage_docbuild/conf.py @@ -27,11 +27,12 @@ import sphinx.ext.intersphinx as intersphinx from sphinx import highlighting from sphinx.transforms import SphinxTransform +from sphinx.util.docutils import SphinxDirective from IPython.lib.lexers import IPythonConsoleLexer, IPyLexer from sage.misc.sagedoc import extlinks from sage.env import SAGE_DOC_SRC, SAGE_DOC, PPLPY_DOCS, MATHJAX_DIR from sage.misc.latex_macros import sage_mathjax_macros -from sage.features import PythonModule +from sage.features.sphinx import JupyterSphinx from sage.features.all import all_features import sage.version @@ -56,12 +57,15 @@ 'sphinx_inline_tabs', 'IPython.sphinxext.ipython_directive', 'matplotlib.sphinxext.plot_directive', - 'jupyter_sphinx', ] +if JupyterSphinx().is_present(): + extensions.append('jupyter_sphinx') + jupyter_execute_default_kernel = 'sagemath' if SAGE_LIVE_DOC == 'yes': + JupyterSphinx().require() SAGE_JUPYTER_SERVER = os.environ.get('SAGE_JUPYTER_SERVER', 'binder') if SAGE_JUPYTER_SERVER.startswith('binder'): # format: "binder" or @@ -1037,6 +1041,14 @@ def apply(self): parent.insert(index + 1, container) +class Ignore(SphinxDirective): + + has_content = True + + def run(self): + return [] + + # This replaces the setup() in sage.misc.sagedoc_conf def setup(app): app.connect('autodoc-process-docstring', process_docstring_cython) @@ -1050,6 +1062,12 @@ def setup(app): app.add_transform(SagemathTransform) if SAGE_LIVE_DOC == 'yes' or SAGE_PREPARSED_DOC == 'yes': app.add_transform(SagecodeTransform) + if not JupyterSphinx().is_present(): + app.add_directive("jupyter-execute", Ignore) + app.add_directive("jupyter-kernel", Ignore) + app.add_directive("jupyter-input", Ignore) + app.add_directive("jupyter-output", Ignore) + app.add_directive("thebe-button", Ignore) # When building the standard docs, app.srcdir is set to SAGE_DOC_SRC + # 'LANGUAGE/DOCNAME'. @@ -1071,12 +1089,7 @@ def setup(app): # https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#tags # https://www.sphinx-doc.org/en/master/usage/configuration.html#conf-tags # https://github.com/readthedocs/readthedocs.org/issues/4603#issuecomment-1411594800 -# Workaround to allow importing this file from other confs -if 'tags' not in locals(): - class Tags(set): - has = set.__contains__ - tags = Tags() - - -for feature in all_features(): - tags.add('feature_' + feature.name.replace('.', '_')) +def feature_tags(): + for feature in all_features(): + if feature.is_present(): + yield 'feature_' + feature.name.replace('.', '_') diff --git a/tox.ini b/tox.ini index 3e3d2656553..bb3840cb3ed 100644 --- a/tox.ini +++ b/tox.ini @@ -280,7 +280,7 @@ setenv = linuxmint-21.3: BASE_IMAGE=linuxmintd/mint21.3 # # https://hub.docker.com/_/fedora - # as of 2024-01, latest=39, rawhide=40 + # as of 2024-08, latest=40, rawhide=41 fedora: SYSTEM=fedora fedora: BASE_IMAGE=fedora fedora: IGNORE_MISSING_SYSTEM_PACKAGES=yes @@ -299,6 +299,7 @@ setenv = fedora-38: BASE_TAG=38 fedora-39: BASE_TAG=39 fedora-40: BASE_TAG=40 + fedora-41: BASE_TAG=41 # # https://hub.docker.com/r/scientificlinux/sl # @@ -823,8 +824,8 @@ commands = local: config*) ;; \ local: *) make -k V=0 base-toolchain ;; \ local: esac && \ - local: make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_PRE:} {posargs:build} && \ - local: ( [ -z "{env:TARGETS_OPTIONAL:}" ] || make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) ' + local: make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_PRE:} {posargs:build} && \ + local: ( [ -z "{env:TARGETS_OPTIONAL:}" ] || make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) ' [testenv:check_configure] ## Test that configure behaves properly @@ -855,8 +856,8 @@ setenv = ubuntu-{xenial-toolchain-gcc_9,bionic-gcc_8,focal,jammy,lunar,mantic,noble} \ debian-{bullseye,bookworm,trixie,sid} \ linuxmint-{20.1,20.2,20.3,21,21.1,21.2,21.3} \ - fedora-{30,31,32,33,34,35,36,37,38,39,40} \ - centos-stream-9-python3.9 \ + fedora-{30,31,32,33,34,35,36,37,38,39,40,41} \ + centos-stream-{9,9-python3.12} \ almalinux-{8-python3.9,9-python3.11} \ gentoo-python{3.10,3.11,3.12} \ archlinux-latest \