Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: Update Linux platforms / runners, remove ubuntu-trusty, opensuse-{15.3,15.4} #37351

Merged
merged 9 commits into from
Apr 12, 2024
Merged
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "ubuntu-trusty-toolchain-gcc_9-minimal (≥ 8-core)",
"name": "fedora-40-minimal (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "ubuntu-trusty-toolchain-gcc_9",
"SYSTEM_FACTOR": "fedora-40",
"PACKAGE_FACTOR": "minimal",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "ubuntu-trusty-toolchain-gcc_9-standard (≥ 8-core)",
"name": "fedora-40-standard (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "ubuntu-trusty-toolchain-gcc_9",
"SYSTEM_FACTOR": "fedora-40",
"PACKAGE_FACTOR": "standard",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "opensuse-15.3-gcc_11-python3.9-minimal (≥ 8-core)",
"name": "gentoo-python3.12-minimal (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "opensuse-15.3-gcc_11-python3.9",
"SYSTEM_FACTOR": "gentoo-python3.12",
"PACKAGE_FACTOR": "minimal",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "opensuse-15.3-gcc_11-python3.9-standard (≥ 8-core)",
"name": "gentoo-python3.12-standard (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "opensuse-15.3-gcc_11-python3.9",
"SYSTEM_FACTOR": "gentoo-python3.12",
"PACKAGE_FACTOR": "standard",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "opensuse-15.4-gcc_11-python3.10-minimal (≥ 8-core)",
"name": "linuxmint-21.3-minimal (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "opensuse-15.4-gcc_11-python3.10",
"SYSTEM_FACTOR": "linuxmint-21.3",
"PACKAGE_FACTOR": "minimal",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
// from .devcontainer/portability-devcontainer.json.in
// See https://aka.ms/devcontainer.json for format details.
{
"name": "opensuse-15.4-gcc_11-python3.10-standard (≥ 8-core)",
"name": "linuxmint-21.3-standard (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "opensuse-15.4-gcc_11-python3.10",
"SYSTEM_FACTOR": "linuxmint-21.3",
"PACKAGE_FACTOR": "standard",
"DOCKER_TARGET": "with-targets",
"DOCKER_TAG": "dev"
25 changes: 25 additions & 0 deletions .devcontainer/portability-ubuntu-noble-minimal/devcontainer.json
Original file line number Diff line number Diff line change
@@ -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": "ubuntu-noble-minimal (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "ubuntu-noble",
"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"
]
}
25 changes: 25 additions & 0 deletions .devcontainer/portability-ubuntu-noble-standard/devcontainer.json
Original file line number Diff line number Diff line change
@@ -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": "ubuntu-noble-standard (≥ 8-core)",
"build": {
"dockerfile": "portability-Dockerfile",
// See tox.ini for definitions
"args": {
"SYSTEM_FACTOR": "ubuntu-noble",
"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"
]
}
28 changes: 14 additions & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ on:
platform:
description: 'Platform'
required: true
default: 'ubuntu-focal-standard'
default: 'ubuntu-jammy-standard'
docker_tag:
description: 'Docker tag'
required: true
@@ -52,7 +52,7 @@ jobs:

build:
runs-on: ubuntu-latest
container: ghcr.io/sagemath/sage/sage-${{ github.event.inputs.platform || 'ubuntu-focal-standard' }}-with-targets:${{ github.event.inputs.docker_tag || 'dev'}}
container: ghcr.io/sagemath/sage/sage-${{ github.event.inputs.platform || 'ubuntu-jammy-standard' }}-with-targets:${{ github.event.inputs.docker_tag || 'dev'}}
needs: [get_ci_fixes]
steps:
- name: Checkout
@@ -93,16 +93,16 @@ jobs:
./bootstrap && make build
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Build modularized distributions
if: (success() || failure()) && steps.worktree.outcome == 'success'
run: make V=0 tox && make SAGE_CHECK=no pypi-wheels
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Static code check with pyright
if: (success() || failure()) && steps.worktree.outcome == 'success'
@@ -137,8 +137,8 @@ jobs:
./bootstrap && make doc-clean doc-uninstall sagelib-clean && git clean -fx src/sage && ./config.status
working-directory: ./worktree-image
env:
MAKE: make -j2
SAGE_NUM_THREADS: 2
MAKE: make -j4
SAGE_NUM_THREADS: 4

- name: Build
# This step is needed because building the modularized distributions installs some optional packages,
@@ -149,8 +149,8 @@ jobs:
make build
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

# Testing

@@ -161,16 +161,16 @@ jobs:
./sage -t --new -p2
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Test modularized distributions
if: (success() || failure()) && steps.build.outcome == 'success'
run: make V=0 tox && make pypi-wheels-check
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Check that all modules can be imported
run: |
6 changes: 3 additions & 3 deletions .github/workflows/ci-conda.yml
Original file line number Diff line number Diff line change
@@ -35,12 +35,12 @@ jobs:
# environment: [environment, environment-optional]
conda-env: [environment]
# On pull requests, only test two jobs:
# Ubuntu with Python 3.9, macOS with Python 3.10.
# Build & Test currently uses Python 3.11 (on ubuntu-focal).
# Ubuntu with Python 3.9, macOS with Python 3.11.
# Build & Test currently uses Python 3.10 (on ubuntu-jammy).
# Together, they cover the supported minor Python versions.
include: >-
${{ github.event_name == 'pull_request'
&& fromJson('[{"os": "macos", "python": "3.10", "conda-env": "environment"}]')
&& fromJson('[{"os": "macos", "python": "3.11", "conda-env": "environment"}]')
|| fromJson('[]') }}
steps:
13 changes: 2 additions & 11 deletions .github/workflows/ci-linux.yml
Original file line number Diff line number Diff line change
@@ -46,7 +46,7 @@ jobs:
targets: build doc-html
targets_optional: ptest
tox_system_factors: >-
["ubuntu-focal"]
["ubuntu-jammy"]
tox_packages_factors: >-
["standard"]
docker_push_repository: ghcr.io/${{ github.repository }}/
@@ -111,18 +111,11 @@ jobs:
["ubuntu-jammy",
"ubuntu-lunar",
"ubuntu-mantic",
"debian-bullseye",
"debian-bookworm",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@orlitzky The changes in this file reduce the platforms tested with --enable-system-site-packages. Is this change OK with you?
(See https://github.com/sagemath/sage/actions/runs/8501570896 for the tests with 10.4.beta1)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It makes no difference to me. Having e.g. debian-bullseye in the CI is useful only to people who want to use system packages on Debian bullseye. I don't think we have any -- not developers, anyway.

"debian-trixie",
"debian-sid",
"linuxmint-21",
"linuxmint-21.1",
"linuxmint-21.2",
"fedora-33",
"fedora-34",
"fedora-35",
"fedora-36",
"fedora-37",
"fedora-38",
"fedora-39",
"centos-stream-8-python3.9",
@@ -131,11 +124,9 @@ jobs:
"gentoo-python3.10",
"gentoo-python3.11",
"archlinux-latest",
"opensuse-15.4-gcc_11-python3.10",
"opensuse-15.5-gcc_11-python3.11",
"opensuse-tumbleweed-python3.10",
"opensuse-tumbleweed",
"debian-bullseye-i386"]
"opensuse-tumbleweed"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 8

16 changes: 8 additions & 8 deletions .github/workflows/doc-build-pdf.yml
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ on:
platform:
description: 'Platform'
required: true
default: 'ubuntu-focal-standard'
default: 'ubuntu-jammy-standard'
docker_tag:
description: 'Docker tag'
required: true
@@ -46,7 +46,7 @@ jobs:

build-docs-pdf:
runs-on: ubuntu-latest
container: ghcr.io/sagemath/sage/sage-${{ github.event.inputs.platform || 'ubuntu-focal-standard' }}-with-targets:${{ github.event.inputs.docker_tag || 'dev'}}
container: ghcr.io/sagemath/sage/sage-${{ github.event.inputs.platform || 'ubuntu-jammy-standard' }}-with-targets:${{ github.event.inputs.docker_tag || 'dev'}}
needs: [get_ci_fixes]
steps:
- name: Checkout
@@ -87,8 +87,8 @@ jobs:
./bootstrap && make build
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Build (fallback to non-incremental)
id: build
@@ -98,8 +98,8 @@ jobs:
make sagelib-clean && git clean -fx src/sage && ./config.status && make build
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Build docs (PDF)
id: docbuild
@@ -108,8 +108,8 @@ jobs:
make doc-clean doc-uninstall; make sagemath_doc_html-build-deps sagemath_doc_pdf-no-deps
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Copy docs
id: copy
18 changes: 9 additions & 9 deletions .github/workflows/doc-build.yml
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ jobs:

build-docs:
runs-on: ubuntu-latest
container: ghcr.io/sagemath/sage/sage-ubuntu-focal-standard-with-targets:dev
container: ghcr.io/sagemath/sage/sage-ubuntu-jammy-standard-with-targets:dev
needs: [get_ci_fixes]
steps:
- name: Checkout
@@ -95,8 +95,8 @@ jobs:
./bootstrap && make sagemath_doc_html-build-deps
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Build (fallback to non-incremental)
id: build
@@ -106,8 +106,8 @@ jobs:
make sagelib-clean && git clean -fx src/sage && ./config.status && make sagemath_doc_html-build-deps
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Build docs
id: docbuild
@@ -124,8 +124,8 @@ jobs:
./config.status && make sagemath_doc_html-no-deps
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Copy docs
id: copy
@@ -169,8 +169,8 @@ jobs:
./config.status && make sagemath_doc_html-no-deps sagemath_doc_pdf-no-deps
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2
MAKE: make -j4 --output-sync=recurse
SAGE_NUM_THREADS: 4

- name: Copy live doc
id: copylivedoc
9 changes: 5 additions & 4 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -18,13 +18,13 @@ on:
# 'tox -e update_docker_platforms' updates below
default: >-
[
"ubuntu-trusty-toolchain-gcc_9",
"ubuntu-xenial-toolchain-gcc_9",
"ubuntu-bionic-gcc_8",
"ubuntu-focal",
"ubuntu-jammy",
"ubuntu-lunar",
"ubuntu-mantic",
"ubuntu-noble",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove some old systems to keep the maintenance effort and the cpu time (relatively) constant.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, we will continue to test what is supported.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean supported by SageMath or the Ubuntu organization?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

If the latter, I am not sure we should worry about "pro support". But maybe we have a policy about that that I am not aware of?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@saraedum I mean supported by SageMath.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@saraedum for reference, what is supported by SageMath and why we drop support is tracked in #32074.

"debian-buster-gcc_spkg",
"debian-bullseye",
"debian-bookworm",
@@ -36,6 +36,7 @@ on:
"linuxmint-21",
"linuxmint-21.1",
"linuxmint-21.2",
"linuxmint-21.3",
"fedora-30",
"fedora-31",
"fedora-32",
@@ -46,16 +47,16 @@ on:
"fedora-37",
"fedora-38",
"fedora-39",
"fedora-40",
"centos-7-devtoolset-gcc_11",
"centos-stream-8-python3.9",
"centos-stream-9-python3.9",
"almalinux-8-python3.9",
"almalinux-9-python3.11",
"gentoo-python3.10",
"gentoo-python3.11",
"gentoo-python3.12",
"archlinux-latest",
"opensuse-15.3-gcc_11-python3.9",
"opensuse-15.4-gcc_11-python3.10",
"opensuse-15.5-gcc_11-python3.11",
"opensuse-tumbleweed-python3.10",
"opensuse-tumbleweed",
@@ -244,7 +245,7 @@ jobs:
# configuration on many platforms.
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=4 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" 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 "/^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"
455 changes: 260 additions & 195 deletions src/doc/en/developer/portability_platform_table.rst

Large diffs are not rendered by default.

16 changes: 10 additions & 6 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -205,8 +205,9 @@ setenv =
docker: BASE_TAG=latest
#
# https://hub.docker.com/_/ubuntu?tab=description
# as of 2023-05, latest=jammy=22.04, rolling=lunar=23.04, devel=mantic=23.10
# as of 2024-02, latest=jammy=22.04, rolling=mantic=23.10, devel=noble=24.04
# ubuntu-focal does not have libgap-dev
# ubuntu-noble does not have libbrial-dev
#
ubuntu: SYSTEM=debian
ubuntu: BASE_IMAGE=ubuntu
@@ -226,6 +227,8 @@ setenv =
ubuntu-jammy: BASE_TAG=jammy
ubuntu-lunar: BASE_TAG=lunar
ubuntu-mantic: BASE_TAG=mantic
ubuntu-noble: BASE_TAG=noble
ubuntu-noble: IGNORE_MISSING_SYSTEM_PACKAGES=yes
#
# https://hub.docker.com/_/debian
# debian-buster does not have libfreetype-dev (it only has libfreetype6-dev)
@@ -264,6 +267,7 @@ setenv =
linuxmint-21: BASE_IMAGE=linuxmintd/mint21
linuxmint-21.1: BASE_IMAGE=linuxmintd/mint21.1
linuxmint-21.2: BASE_IMAGE=linuxmintd/mint21.2
linuxmint-21.3: BASE_IMAGE=linuxmintd/mint21.3
#
# https://hub.docker.com/_/fedora
# as of 2024-01, latest=39, rawhide=40
@@ -848,16 +852,16 @@ setenv =
# Master list of platforms tested in CI Linux
#
DEFAULT_SYSTEM_FACTORS=\
ubuntu-{trusty-toolchain-gcc_9,xenial-toolchain-gcc_9,bionic-gcc_8,focal,jammy,lunar,mantic} \
ubuntu-{xenial-toolchain-gcc_9,bionic-gcc_8,focal,jammy,lunar,mantic,noble} \
debian-{buster-gcc_spkg,bullseye,bookworm,trixie,sid} \
linuxmint-{20.1,20.2,20.3,21,21.1,21.2} \
fedora-{30,31,32,33,34,35,36,37,38,39} \
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-7-devtoolset-gcc_11 \
centos-stream-{8,9}-python3.9 \
almalinux-{8-python3.9,9-python3.11} \
gentoo-python{3.10,3.11} \
gentoo-python{3.10,3.11,3.12} \
archlinux-latest \
opensuse-{15.3-gcc_11-python3.9,15.4-gcc_11-python3.10,15.5-gcc_11-python3.11} \
opensuse-15.5-gcc_11-python3.11 \
opensuse-tumbleweed{-python3.10,} \
conda-forge-python3.11 \
ubuntu-bionic-gcc_8-i386 \

Unchanged files with check annotations Beta

sage: pi_def = gp(pi); pi_def
3.141592653589793238462643383 # 32-bit
3.1415926535897932384626433832795028842 # 64-bit
sage: pi_def.precision()

Check warning on line 799 in src/sage/interfaces/gp.py

GitHub Actions / build

Warning: Variable 'pi_def' referenced here was set only in doctest marked '# needs sage.libs.pari sage.symbolic'

Variable 'pi_def' referenced here was set only in doctest marked '# needs sage.libs.pari sage.symbolic'
28 # 32-bit
38 # 64-bit
sage: pi_150 = gp.new_with_bits_prec(pi, 150)
sage: b.dtype
dtype('int32') # 32-bit
dtype('int64') # 64-bit
sage: b.shape

Check warning on line 729 in src/sage/matrix/matrix1.pyx

GitHub Actions / build

Warning: Variable 'b' referenced here was set only in doctest marked '# needs numpy'

Variable 'b' referenced here was set only in doctest marked '# needs numpy'
(3, 4)
"""
import numpy