diff --git a/build/pkgs/highs/SPKG.rst b/build/pkgs/highs/SPKG.rst new file mode 100644 index 00000000000..a1f3de7cc55 --- /dev/null +++ b/build/pkgs/highs/SPKG.rst @@ -0,0 +1,42 @@ +highs: Linear optimization solver +================================= + +Description +----------- + +HiGHS is a high performance serial and parallel solver for large scale sparse +linear optimization problems of the form: + + min c'x subject to L <= Ax <= U; l <= x <= u + +where c, x, L, U, l, u are vectors and A is a matrix. + +HiGHS has implementations of the dual revised simplex method, primal and dual +revised simplex solvers, an interior point solver, and a MIP solver. + +This package builds the HiGHS C/C++ library with C API headers for use in +Sage's numerical backends. + +License +------- + +- MIT License + +Upstream Contact +---------------- + +- https://github.com/ERGO-Code/HiGHS +- https://www.highs.dev +- Email: highsopt@gmail.com + +Dependencies +------------ + +- CMake (build dependency) + +Special Update/Build Instructions +---------------------------------- + +The library is built using CMake and provides the C API interface +(highs_c_api.h) for integration with Sage's backend system. + diff --git a/build/pkgs/highs/checksums.ini b/build/pkgs/highs/checksums.ini new file mode 100644 index 00000000000..9b1df427f0f --- /dev/null +++ b/build/pkgs/highs/checksums.ini @@ -0,0 +1,4 @@ +tarball=highs-VERSION.tar.gz +sha1=576cf6f0fe03a57ebcf6acc6fe77b230b454b0bd +sha256=2b44b074cf41439325ce4d0bbdac2d51379f56faf17ba15320a410d3c1f07275 +upstream_url=https://github.com/ERGO-Code/HiGHS/archive/refs/tags/vVERSION.tar.gz diff --git a/build/pkgs/highs/dependencies b/build/pkgs/highs/dependencies new file mode 100644 index 00000000000..3b5b9e72ad0 --- /dev/null +++ b/build/pkgs/highs/dependencies @@ -0,0 +1,4 @@ +cmake + +---------- +All lines of this file are ignored except the first. diff --git a/build/pkgs/highs/math b/build/pkgs/highs/math new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build/pkgs/highs/package-version.txt b/build/pkgs/highs/package-version.txt new file mode 100644 index 00000000000..1cac385c6cb --- /dev/null +++ b/build/pkgs/highs/package-version.txt @@ -0,0 +1 @@ +1.11.0 diff --git a/build/pkgs/highs/spkg-install.in b/build/pkgs/highs/spkg-install.in new file mode 100644 index 00000000000..531d9dfd6d0 --- /dev/null +++ b/build/pkgs/highs/spkg-install.in @@ -0,0 +1,14 @@ +cd src +mkdir -p build +cd build +sdh_cmake -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=OFF \ + -DBUILD_CXX=ON \ + -DZLIB=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DCMAKE_INSTALL_LIBDIR=lib \ + .. +sdh_make +sdh_make_install + diff --git a/build/pkgs/highs/type b/build/pkgs/highs/type new file mode 100644 index 00000000000..a6a7b9cd726 --- /dev/null +++ b/build/pkgs/highs/type @@ -0,0 +1 @@ +standard diff --git a/build/pkgs/sagelib/dependencies b/build/pkgs/sagelib/dependencies index 662fad365b5..f66215f5a74 100644 --- a/build/pkgs/sagelib/dependencies +++ b/build/pkgs/sagelib/dependencies @@ -1,4 +1,4 @@ -FORCE $(SCRIPTS) $(BLAS) brial cliquer cypari cysignals cython ecl eclib ecm flint libgd gap givaro glpk gmpy2 gsl iml importlib_metadata importlib_resources jupyter_core lcalc lrcalc_python libbraiding libhomfly libpng linbox m4ri m4rie memory_allocator mpc mpfi mpfr $(MP_LIBRARY) ntl numpy pari pip pkgconfig planarity ppl pplpy primesieve primecount primecountpy $(PYTHON) requests rw singular symmetrica typing_extensions $(PCFILES) | $(PYTHON_TOOLCHAIN) meson_python $(PYTHON) pythran +FORCE $(SCRIPTS) $(BLAS) brial cliquer cypari cysignals cython ecl eclib ecm flint libgd gap givaro glpk gmpy2 gsl highs iml importlib_metadata importlib_resources jupyter_core lcalc lrcalc_python libbraiding libhomfly libpng linbox m4ri m4rie memory_allocator mpc mpfi mpfr $(MP_LIBRARY) ntl numpy pari pip pkgconfig planarity ppl pplpy primesieve primecount primecountpy $(PYTHON) requests rw singular symmetrica typing_extensions $(PCFILES) | $(PYTHON_TOOLCHAIN) meson_python $(PYTHON) pythran ---------- All lines of this file are ignored except the first. diff --git a/environment-3.11-linux-aarch64.yml b/environment-3.11-linux-aarch64.yml index bfe75b194e2..6347fffa0dd 100644 --- a/environment-3.11-linux-aarch64.yml +++ b/environment-3.11-linux-aarch64.yml @@ -1,19 +1,25 @@ name: sage-dev # Generated by conda-lock. # platform: linux-aarch64 -# input_hash: 469912c30cc21eabab0fd99524f881f8635933f8faa69ec9d0a539ff5b42c6d6 +# input_hash: 783d222ad3cbd0c2f5f0f0b7ed83ce26e8314eb4c90bead08da0ee85c7a637b6 channels: - conda-forge dependencies: - _openmp_mutex=4.5=2_gnu - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 + - alsa-lib=1.2.14=h86ecc28_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h6fc4d3a_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h1f2db35_3 + - at-spi2-core=2.40.3=h1f2db35_0 + - atk-1.0=2.38.0=hedc4a1f_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbecfd40_1 - automake=1.17=pl5321h8af1aa0_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -21,11 +27,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5ad3122_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=hf1166c9_2 - - binutils_impl_linux-aarch64=2.44=hdf4bb16_2 - - binutils_linux-aarch64=2.44=hf1166c9_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h9678261_openblas + - binutils=2.44=hf1166c9_4 + - binutils_impl_linux-aarch64=2.44=ha36da51_4 + - binutils_linux-aarch64=2.44=hf1166c9_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h9678261_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2a328a1_1 @@ -44,48 +50,59 @@ dependencies: - cairo=1.18.4=h83712da_0 - cddlib=1!0.94m=h719063d_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py311h3324b35_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py311h460c349_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=he30d5cf_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=h92dcf8a_5 + - conda=25.9.1=py311hec3470c_0 + - conda-gcc-specs=14.3.0=h92dcf8a_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py311hfca10b7_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py311h2dad8b0_0 - - cpython=3.11.13=py311hd8ed1ab_0 + - coverage=7.11.0=py311h2dad8b0_0 + - cpp-expected=1.3.1=hdc560ac_0 + - cpython=3.11.14=py311hd8ed1ab_2 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py311h2822d24_0 - - curl=8.14.1=h6702fde_0 + - cryptography=46.0.3=py311h2822d24_0 + - curl=8.16.0=h7bfdcfb_0 - cxx-compiler=1.11.0=h7b35c40_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py311hc8fbf20_0 + - cyrus-sasl=2.1.28=h6c5dea3_0 - cysignals=1.12.5=py311h2cb90db_0 - - cython=3.1.4=py311h396fb50_2 - - dbus=1.13.6=h12b9eeb_3 + - cython=3.1.6=py311hdc11669_0 + - dbus=1.16.2=heda779d_0 - debugpy=1.8.17=py311h8e4e6a5_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.1=h5ad3122_0 - dulwich=0.22.8=py311h0ca61a2_0 - ecl=24.5.10=h043f013_1 - eclib=20250627=h2fd3c11_0 - ecm=7.0.6=hd777dc2_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=he30d5cf_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hfae3067_0 - fflas-ffpack=2.5.0=h503e619_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h416241a_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -99,42 +116,50 @@ dependencies: - fpylll=0.6.4=py311h2dc1a0e_0 - freetype=2.14.1=h8af1aa0_0 - fribidi=1.0.16=he30d5cf_0 + - frozendict=2.4.6=py311h19352d5_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h1754e88_5 - - gap-defaults=4.14.0=h8af1aa0_5 - - gcc=14.3.0=h7408ef6_5 - - gcc_impl_linux-aarch64=14.3.0=h2b96704_5 - - gcc_linux-aarch64=14.3.0=h39d9346_11 + - gap-core=4.15.1=h409ef3a_0 + - gap-defaults=4.15.1=h8af1aa0_0 + - gcc=14.3.0=h7408ef6_7 + - gcc_impl_linux-aarch64=14.3.0=h2b96704_7 + - gcc_linux-aarch64=14.3.0=h118592a_12 + - gdk-pixbuf=2.44.4=h90308e0_0 - gf2x=1.3.0=h9af5f66_3 - gfan=0.6.2=h5f589ec_1003 - - gfortran=14.3.0=ha28f942_5 - - gfortran_impl_linux-aarch64=14.3.0=h8827d62_5 - - gfortran_linux-aarch64=14.3.0=hc530033_11 + - gfortran=14.3.0=ha28f942_7 + - gfortran_impl_linux-aarch64=14.3.0=h8827d62_7 + - gfortran_linux-aarch64=14.3.0=he4becf7_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h3df9001_3 + - glib-tools=2.86.0=hc87f4d4_1 - glpk=5.0=h66325d0_0 - gmp=6.3.0=h0a1ffab_2 - - gmpy2=2.1.5=py311h8dd2ae4_3 + - gmpy2=2.2.1=py311hc14af3f_1 - graphite2=1.3.14=hfae3067_2 - - grayskull=2.9.1=pyhd8ed1ab_0 - - gsl=2.8=hac7f374_1 - - gxx=14.3.0=ha28f942_5 - - gxx_impl_linux-aarch64=14.3.0=h72695c8_5 - - gxx_linux-aarch64=14.3.0=h83defb1_11 + - graphviz=13.1.2=hdb06ba2_0 + - grayskull=2.9.1=pyhcf101f3_1 + - gsl=2.7=h294027d_0 + - gtk3=3.24.43=h4cd1324_6 + - gts=0.7.6=he293c15_4 + - gxx=14.3.0=ha28f942_7 + - gxx_impl_linux-aarch64=14.3.0=h72695c8_7 + - gxx_linux-aarch64=14.3.0=hda493e9_12 - h2=4.3.0=pyhcf101f3_0 - - harfbuzz=11.2.1=h405b6a2_0 + - harfbuzz=12.1.0=he4899c9_0 + - hicolor-icon-theme=0.17=h8af1aa0_2 + - highs=1.11.0=ha6136e2_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hf9b3779_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h1827c4d_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h15043fe_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -144,11 +169,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py311hec3470c_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-aarch64=4.18.0=h05a177a_8 @@ -158,9 +185,10 @@ dependencies: - krb5=1.21.3=h50a48e9_0 - lcalc=2.1.1=h30a6b3d_0 - lcms2=2.17=hc88f144_0 - - ld_impl_linux-aarch64=2.44=h9df1782_2 + - ld_impl_linux-aarch64=2.44=hd32f0e1_4 - lerc=4.0.0=hfdc4d58_1 - - libblas=3.9.0=36_haddc8a3_openblas + - libarchive=3.8.2=gpl_hd746d8a_100 + - libblas=3.9.0=37_haddc8a3_openblas - libboost=1.85.0=h9fa81b4_4 - libboost-devel=1.85.0=h37bb5a9_4 - libboost-headers=1.85.0=h8af1aa0_4 @@ -169,65 +197,91 @@ dependencies: - libbrotlicommon=1.1.0=he30d5cf_4 - libbrotlidec=1.1.0=he30d5cf_4 - libbrotlienc=1.1.0=he30d5cf_4 - - libcblas=3.9.0=36_hd72aa62_openblas - - libcurl=8.14.1=h6702fde_0 + - libcblas=3.9.0=37_hd72aa62_openblas + - libclang-cpp21.1=21.1.4=default_he95a3c9_0 + - libclang13=21.1.4=default_h94a09a5_0 + - libcups=2.3.3=h5cdc715_5 + - libcurl=8.16.0=h7bfdcfb_0 - libdeflate=1.24=he377734_0 + - libdrm=2.4.125=he30d5cf_1 - libedit=3.1.20250104=pl5321h976ea20_0 + - libegl=1.7.0=hd24410f_2 + - libegl-devel=1.7.0=hd24410f_2 - libev=4.33=h31becfc_2 - libexpat=2.7.1=hfae3067_0 - - libffi=3.4.6=he21f813_1 + - libffi=3.5.2=hd65408f_0 - libflint=3.2.2=hd878b8d_0 - libfreetype=2.14.1=h8af1aa0_0 - libfreetype6=2.14.1=hdae7a39_0 - - libgcc=15.1.0=he277a41_5 - - libgcc-devel_linux-aarch64=14.3.0=h370b906_105 - - libgcc-ng=15.1.0=he9431aa_5 + - libgcc=15.2.0=he277a41_7 + - libgcc-devel_linux-aarch64=14.3.0=h370b906_107 + - libgcc-ng=15.2.0=he9431aa_7 - libgd=2.3.3=hc8d7b1d_11 - - libgfortran=15.1.0=he9431aa_5 - - libgfortran-ng=15.1.0=he9431aa_5 - - libgfortran5=15.1.0=hbc25352_5 - - libglib=2.84.1=hc486b8e_0 - - libgomp=15.1.0=he277a41_5 + - libgfortran=15.2.0=he9431aa_7 + - libgfortran-ng=15.2.0=he9431aa_7 + - libgfortran5=15.2.0=h87db57e_7 + - libgl=1.7.0=hd24410f_2 + - libgl-devel=1.7.0=hd24410f_2 + - libglib=2.86.0=he84ff74_1 + - libglvnd=1.7.0=hd24410f_2 + - libglx=1.7.0=hd24410f_2 + - libglx-devel=1.7.0=hd24410f_2 + - libgomp=15.2.0=he277a41_7 - libhomfly=1.03=he30d5cf_0 - libiconv=1.18=h90929bb_2 - libjpeg-turbo=3.1.0=h86ecc28_0 - - liblapack=3.9.0=36_h88aeb00_openblas - - liblapacke=3.9.0=36_hb558247_openblas + - liblapack=3.9.0=37_h88aeb00_openblas + - liblapacke=3.9.0=37_hb558247_openblas + - libllvm21=21.1.4=hfd2ba90_0 - liblzma=5.8.1=h86ecc28_2 - liblzma-devel=5.8.1=h86ecc28_2 + - libmamba=2.3.3=hdcf0ffa_2 + - libmambapy=2.3.3=py311h53fca1a_2 - libnghttp2=1.67.0=ha888d0e_0 - libnsl=2.0.1=h86ecc28_1 + - libntlm=1.4=hf897c2e_1002 - libopenblas=0.3.30=pthreads_h9d3fd7e_2 + - libopengl=1.7.0=hd24410f_2 + - libpciaccess=0.18=h86ecc28_0 - libpng=1.6.50=h1abf092_1 - - libsanitizer=14.3.0=h48d3638_5 + - libpq=18.0=hb4b1422_0 + - librsvg=2.60.0=h8171147_0 + - libsanitizer=14.3.0=h48d3638_7 - libsodium=1.0.20=h68df207_0 + - libsolv=0.7.35=hdda61c4_0 - libsqlite=3.50.4=h022381a_0 - libssh2=1.11.1=h18c354c_0 - - libstdcxx=15.1.0=h3f4de04_5 - - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_105 - - libstdcxx-ng=15.1.0=hf1166c9_5 + - libstdcxx=15.2.0=h3f4de04_7 + - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_107 + - libstdcxx-ng=15.2.0=hf1166c9_7 - libtiff=4.7.1=h7a57436_0 - libuuid=2.41.2=h3e4203c_0 + - libvulkan-loader=1.4.328.1=h8b8848b_0 - libwebp-base=1.6.0=ha2e29f5_0 - libxcb=1.17.0=h262b8f6_0 - libxcrypt=4.4.36=h31becfc_1 - - libxml2=2.15.0=h788dabe_1 - - libxml2-16=2.15.0=h8591a01_1 - - libxml2-devel=2.15.0=h788dabe_1 + - libxkbcommon=1.12.2=h3c6a4c8_0 + - libxml2=2.15.1=h788dabe_0 + - libxml2-16=2.15.1=h8591a01_0 + - libxml2-devel=2.15.1=h788dabe_0 + - libxslt=1.1.43=h6700d25_1 - libzlib=1.3.1=h86ecc28_2 - linbox=1.7.1=h119cb06_0 - lrcalc=2.1=hfae3067_8 + - lz4-c=1.10.0=h5ad3122_1 + - lzo=2.10=h80f16a2_1002 - m4=1.4.20=h86ecc28_0 - m4ri=20250128=hd9db0c5_0 - m4rie=20250128=hd9db0c5_0 - make=4.4.1=h2a6d0cb_2 - markupsafe=3.0.3=py311h2dad8b0_0 - - matplotlib=3.9.1=py311hfecb2dc_1 - - matplotlib-base=3.9.1=py311ha1793d2_2 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py311hfecb2dc_0 + - matplotlib-base=3.10.7=py311hb9c6b48_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h043f013_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py311ha879c10_1 + - memory-allocator=0.1.3=py311h19352d5_2 + - menuinst=2.4.1=py311hec3470c_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -236,35 +290,37 @@ dependencies: - mpfi=1.5.4=h846f343_1001 - mpfr=4.2.1=h2305555_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py311hfca10b7_1 + - msgpack-python=1.1.2=py311hfca10b7_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=he30d5cf_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=ha32ae93_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=hdc560ac_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0d7519b_1 - - numpy=2.3.3=py311h669026d_0 + - numpy=2.3.4=py311h669026d_0 - openblas=0.3.30=pthreads_h3a8cbd8_2 - openjpeg=2.5.4=h5da879a_0 + - openldap=2.6.10=h30c48ee_0 - openssl=3.5.4=h8e36d6e_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=he30d5cf_0 - - pandoc=3.8.1=h8af1aa0_0 + - pandoc=3.8.2.1=h8af1aa0_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - - pango=1.56.3=h1e6a6fd_1 + - pango=1.56.4=he55ef5b_0 - pari=2.17.2=h45cace7_5_pthread - pari-elldata=0.0.20161017=0 - pari-galdata=0.0.20180411=0 - pari-seadata=0.0.20090618=0 - pari-seadata-small=0.0.20090618=0 - parso=0.8.5=pyhcf101f3_0 - - pcre2=10.44=hf4ec17f_2 + - pcre2=10.46=h15761aa_0 - perl=5.32.1=7_h31becfc_perl5 - pexpect=4.9.0=pyhd8ed1ab_1 - pickleshare=0.7.5=pyhd8ed1ab_1004 @@ -274,8 +330,8 @@ dependencies: - pkg-config=0.29.2=hce167ba_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=he30d5cf_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=he30d5cf_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h984aac9_1006 - pplpy=0.8.9=py311h3d7cd5b_2 @@ -284,27 +340,30 @@ dependencies: - primesieve=12.8=h5ad3122_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py311h19352d5_0 + - psutil=7.1.1=py311h19352d5_0 - pthread-stubs=0.4=h86ecc28_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py311h19352d5_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py311h73012f0_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py311hddf1d3d_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py311h31f610e_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py311h19352d5_0 - pyparsing=3.2.5=pyhcf101f3_0 - pyproject-metadata=0.9.1=pyhd8ed1ab_0 - pyproject_hooks=1.2.0=pyhd8ed1ab_1 + - pyside6=6.9.3=py311hf1caecd_1 - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.11.13=h1683364_0_cpython + - python=3.11.14=h91f4b29_2_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 @@ -318,21 +377,24 @@ dependencies: - pyzmq=27.1.0=py311h5e4e491_0 - qd=2.3.22=h05efe27_1004 - qhull=2020.2=h70be974_5 - - r-base=4.2.3=h6952844_18 - - r-lattice=0.22_6=r42h25e906a_0 + - qt6-main=6.9.3=h224e339_1 + - r-base=4.4.3=h63885c9_4 + - r-lattice=0.22_7=r44h0557e7b_1 - rapidfuzz=3.14.1=py311h2cb90db_0 - readline=8.2=h8382b9d_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h86ecc28_0 + - reproc-cpp=14.2.5.post0=h5ad3122_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py311hc91c717_1 - - rpy2=3.5.11=py311r42hf13da56_3 - - ruamel.yaml=0.18.15=py311h19352d5_1 - - ruamel.yaml.clib=0.2.12=py311h19352d5_1 + - rpds-py=0.28.0=py311hc91c717_1 + - rpy2=3.6.4=py311r44hbb815b2_1 + - ruamel.yaml=0.18.16=py311h19352d5_0 + - ruamel.yaml.clib=0.2.14=py311h19352d5_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h46ed904_0 + - ruff=0.14.2=h46ed904_0 - rw=0.9=h31becfc_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -343,7 +405,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - - simplegeneric=0.8.1=pyhd8ed1ab_2 + - simdjson=4.0.7=hfefdfc9_0 - singular=4.4.1=hfdb71ee_1 - sirocco=2.1.0=h7fa4f89_1 - six=1.17.0=pyhe01879c_1 @@ -362,7 +424,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=he8854b5_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h7a35ef0_1 - symmetrica=3.1.0=he30d5cf_0 - sympow=2.023.6=h4d450c3_4 @@ -373,13 +435,14 @@ dependencies: - tk=8.6.13=noxft_h5688188_102 - tktable=2.10=h89546af_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py311hb9158a3_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -387,25 +450,44 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py311h19352d5_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h0157bdf_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h0157bdf_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=h4f8a99f_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py311h19352d5_1 + - xcb-util=0.4.1=hca56bd8_2 + - xcb-util-cursor=0.1.5=h86ecc28_0 + - xcb-util-image=0.4.0=h5c728e9_2 + - xcb-util-keysyms=0.4.1=h5c728e9_0 + - xcb-util-renderutil=0.3.10=h5c728e9_0 + - xcb-util-wm=0.4.2=h5c728e9_0 + - xkeyboard-config=2.46=he30d5cf_0 - xorg-libice=1.1.2=h86ecc28_0 - xorg-libsm=1.2.6=h0808dbd_0 - xorg-libx11=1.8.12=hca56bd8_0 - xorg-libxau=1.0.12=h86ecc28_0 + - xorg-libxcomposite=0.4.6=h86ecc28_2 + - xorg-libxcursor=1.2.3=h86ecc28_0 + - xorg-libxdamage=1.1.6=h86ecc28_0 - xorg-libxdmcp=1.1.5=h57736b2_0 - xorg-libxext=1.3.6=h57736b2_0 + - xorg-libxfixes=6.0.2=he30d5cf_0 + - xorg-libxi=1.8.2=h57736b2_0 + - xorg-libxinerama=1.1.5=h5ad3122_1 + - xorg-libxrandr=1.5.4=h86ecc28_0 - xorg-libxrender=0.9.12=h86ecc28_0 - xorg-libxt=1.3.1=h57736b2_0 + - xorg-libxtst=1.2.5=h57736b2_3 + - xorg-libxxf86vm=1.1.6=h86ecc28_0 + - xorg-xorgproto=2024.1=h86ecc28_1 - xz=5.8.1=h2dbfc1b_2 - xz-gpl-tools=5.8.1=h2dbfc1b_2 - xz-tools=5.8.1=h86ecc28_2 - yaml=0.2.5=h80f16a2_3 + - yaml-cpp=0.8.0=h5ad3122_0 - zeromq=4.3.5=hefbcea8_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h86ecc28_2 diff --git a/environment-3.11-linux.yml b/environment-3.11-linux.yml index cc33017bd18..71dca6689e3 100644 --- a/environment-3.11-linux.yml +++ b/environment-3.11-linux.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: linux-64 -# input_hash: 9818b363ca39ee4e06d33e21a0de85c13aa83ca31c653a7810dd297957fb797a +# input_hash: 94cd9374804f7acd0481d18a115abd77d1073f963d3f8f0ea19bee6f35d069dc channels: - conda-forge @@ -10,13 +10,18 @@ dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - alsa-lib=1.2.14=hb9d3cd8_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hf03ea27_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h0630a04_3 + - at-spi2-core=2.40.3=h0630a04_0 + - atk-1.0=2.38.0=h04ea711_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbb4ee43_1 - automake=1.17=pl5321ha770c72_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -24,11 +29,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5888daf_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=h4852527_2 - - binutils_impl_linux-64=2.44=hdf8817f_2 - - binutils_linux-64=2.44=h4852527_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h1ea3ea9_openblas + - binutils=2.44=h4852527_4 + - binutils_impl_linux-64=2.44=h9d8b0ac_4 + - binutils_linux-64=2.44=h4852527_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h1ea3ea9_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h00ab1b0_1 @@ -47,50 +52,59 @@ dependencies: - cairo=1.18.4=h3394656_0 - cddlib=1!0.94m=h9202a9a_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py311h5b438cf_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py311h03d9500_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hb03c661_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=hb991d5c_5 + - conda=25.9.1=py311h38be061_0 + - conda-gcc-specs=14.3.0=hb991d5c_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py311hdf67eae_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py311h3778330_0 - - cpython=3.11.13=py311hd8ed1ab_0 + - coverage=7.11.0=py311h3778330_0 + - cpp-expected=1.3.1=h171cf75_0 + - cpython=3.11.14=py311hd8ed1ab_2 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py311h8488d03_0 - - curl=8.14.1=h332b0f4_0 + - cryptography=46.0.3=py311h8488d03_0 + - curl=8.16.0=h4e3cde8_0 - cxx-compiler=1.11.0=hfcd1e18_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py311h8699650_0 - cyrus-sasl=2.1.28=hd9c7081_0 - cysignals=1.12.5=py311h1ddb823_0 - - cython=3.1.4=py311h91b4c63_2 + - cython=3.1.6=py311h0daaf2c_0 - dbus=1.16.2=h3c4dab8_0 - debugpy=1.8.17=py311hc665b79_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=h5888daf_0 - dulwich=0.22.8=py311h9e33e62_0 - ecl=24.5.10=h75482ee_1 - eclib=20250627=hd0dfdeb_0 - ecm=7.0.6=h90cbb55_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hb03c661_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hecca717_0 - fflas-ffpack=2.5.0=h4f9960b_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h2b0788b_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -104,42 +118,50 @@ dependencies: - fpylll=0.6.4=py311hf0b6740_0 - freetype=2.14.1=ha770c72_0 - fribidi=1.0.16=hb03c661_0 + - frozendict=2.4.6=py311h49ec1c0_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h3b03731_5 - - gap-defaults=4.14.0=ha770c72_5 - - gcc=14.3.0=h76bdaa0_5 - - gcc_impl_linux-64=14.3.0=hd9e9e21_5 - - gcc_linux-64=14.3.0=h1382650_11 + - gap-core=4.15.1=h60ec763_0 + - gap-defaults=4.15.1=ha770c72_0 + - gcc=14.3.0=h76bdaa0_7 + - gcc_impl_linux-64=14.3.0=hd9e9e21_7 + - gcc_linux-64=14.3.0=h298d278_12 + - gdk-pixbuf=2.44.4=h2b0a6b4_0 - gf2x=1.3.0=h55551d5_3 - gfan=0.6.2=hb86e20a_1003 - - gfortran=14.3.0=he448592_5 - - gfortran_impl_linux-64=14.3.0=h7db7018_5 - - gfortran_linux-64=14.3.0=h30a37f7_11 + - gfortran=14.3.0=he448592_7 + - gfortran_impl_linux-64=14.3.0=h7db7018_7 + - gfortran_linux-64=14.3.0=h961de7f_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h49654ea_3 + - glib-tools=2.86.0=hf516916_1 - glpk=5.0=h445213a_0 - gmp=6.3.0=hac33072_2 - - gmpy2=2.1.5=py311h0f6cedb_3 + - gmpy2=2.2.1=py311h92a432a_1 - graphite2=1.3.14=hecca717_2 - - grayskull=2.9.1=pyhd8ed1ab_0 - - gsl=2.8=hbf7d49c_1 - - gxx=14.3.0=he448592_5 - - gxx_impl_linux-64=14.3.0=he663afc_5 - - gxx_linux-64=14.3.0=ha7acb78_11 + - graphviz=13.1.2=h87b6fe6_0 + - grayskull=2.9.1=pyhcf101f3_1 + - gsl=2.7=he838d99_0 + - gtk3=3.24.43=h993cebd_6 + - gts=0.7.6=h977cf35_4 + - gxx=14.3.0=he448592_7 + - gxx_impl_linux-64=14.3.0=he663afc_7 + - gxx_linux-64=14.3.0=h95f728e_12 - h2=4.3.0=pyhcf101f3_0 - - harfbuzz=11.4.5=h15599e2_0 + - harfbuzz=12.1.0=h15599e2_0 + - hicolor-icon-theme=0.17=ha770c72_2 + - highs=1.11.0=h7aa8ee6_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he02047a_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=0.10.16=h98b0679_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=hfe3e89f_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h623f65a_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -149,11 +171,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py311h38be061_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-64=4.18.0=he073ed8_8 @@ -163,9 +187,10 @@ dependencies: - krb5=1.21.3=h659f571_0 - lcalc=2.1.1=h9cf73fc_0 - lcms2=2.17=h717163a_0 - - ld_impl_linux-64=2.44=ha97dd6f_2 + - ld_impl_linux-64=2.44=h1aa0949_4 - lerc=4.0.0=h0aef613_1 - - libblas=3.9.0=36_h4a7cf45_openblas + - libarchive=3.8.2=gpl_h7be2006_100 + - libblas=3.9.0=37_h4a7cf45_openblas - libboost=1.85.0=h0ccab89_4 - libboost-devel=1.85.0=h00ab1b0_4 - libboost-headers=1.85.0=ha770c72_4 @@ -174,42 +199,46 @@ dependencies: - libbrotlicommon=1.1.0=hb03c661_4 - libbrotlidec=1.1.0=hb03c661_4 - libbrotlienc=1.1.0=hb03c661_4 - - libcblas=3.9.0=36_h0358290_openblas - - libclang-cpp20.1=20.1.8=default_h99862b1_4 - - libclang13=21.1.0=default_h746c552_1 + - libcblas=3.9.0=37_h0358290_openblas + - libclang-cpp21.1=21.1.4=default_h99862b1_0 + - libclang13=21.1.4=default_h746c552_0 - libcups=2.3.3=hb8b1518_5 - - libcurl=8.14.1=h332b0f4_0 + - libcurl=8.16.0=h4e3cde8_0 - libdeflate=1.24=h86f0d12_0 - libdrm=2.4.125=hb03c661_1 - libedit=3.1.20250104=pl5321h7949ede_0 - libegl=1.7.0=ha4b6fd6_2 + - libegl-devel=1.7.0=ha4b6fd6_2 - libev=4.33=hd590300_2 - libexpat=2.7.1=hecca717_0 - - libffi=3.4.6=h2dba641_1 + - libffi=3.5.2=h9ec8514_0 - libflint=3.2.2=h754cb6e_0 - libfreetype=2.14.1=ha770c72_0 - libfreetype6=2.14.1=h73754d4_0 - - libgcc=15.1.0=h767d61c_5 - - libgcc-devel_linux-64=14.3.0=h85bb3a7_105 - - libgcc-ng=15.1.0=h69a702a_5 + - libgcc=15.2.0=h767d61c_7 + - libgcc-devel_linux-64=14.3.0=h85bb3a7_107 + - libgcc-ng=15.2.0=h69a702a_7 - libgd=2.3.3=h6f5c62b_11 - - libgfortran=15.1.0=h69a702a_5 - - libgfortran-ng=15.1.0=h69a702a_5 - - libgfortran5=15.1.0=hcea5267_5 + - libgfortran=15.2.0=h69a702a_7 + - libgfortran-ng=15.2.0=h69a702a_7 + - libgfortran5=15.2.0=hcd61629_7 - libgl=1.7.0=ha4b6fd6_2 - - libglib=2.84.3=hf39c6af_0 + - libgl-devel=1.7.0=ha4b6fd6_2 + - libglib=2.86.0=h32235b2_1 - libglvnd=1.7.0=ha4b6fd6_2 - libglx=1.7.0=ha4b6fd6_2 - - libgomp=15.1.0=h767d61c_5 + - libglx-devel=1.7.0=ha4b6fd6_2 + - libgomp=15.2.0=h767d61c_7 - libhomfly=1.03=hb03c661_0 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=36_h47877c9_openblas - - liblapacke=3.9.0=36_h6ae95b6_openblas - - libllvm20=20.1.8=hecd9e04_0 - - libllvm21=21.1.0=hecd9e04_0 + - liblapack=3.9.0=37_h47877c9_openblas + - liblapacke=3.9.0=37_h6ae95b6_openblas + - libllvm21=21.1.4=hf7376ad_0 - liblzma=5.8.1=hb9d3cd8_2 - liblzma-devel=5.8.1=hb9d3cd8_2 + - libmamba=2.3.3=h09abcb8_1 + - libmambapy=2.3.3=py311hfb22bfb_1 - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libntlm=1.8=hb9d3cd8_0 @@ -217,37 +246,45 @@ dependencies: - libopengl=1.7.0=ha4b6fd6_2 - libpciaccess=0.18=hb9d3cd8_0 - libpng=1.6.50=h421ea60_1 - - libpq=17.6=h3675c94_2 - - libsanitizer=14.3.0=hd08acf3_5 + - libpq=18.0=h3675c94_0 + - librsvg=2.60.0=h61e6d4b_0 + - libsanitizer=14.3.0=hd08acf3_7 - libsodium=1.0.20=h4ab18f5_0 + - libsolv=0.7.35=h9463b59_0 - libsqlite=3.50.4=h0c1763c_0 - libssh2=1.11.1=hcf80075_0 - - libstdcxx=15.1.0=h8f9b012_5 - - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_105 - - libstdcxx-ng=15.1.0=h4852527_5 + - libstdcxx=15.2.0=h8f9b012_7 + - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_107 + - libstdcxx-ng=15.2.0=h4852527_7 - libtiff=4.7.1=h8261f1e_0 - libuuid=2.41.2=he9a06e4_0 + - libvulkan-loader=1.4.328.1=h5279c79_0 - libwebp-base=1.6.0=hd42ef1d_0 - libxcb=1.17.0=h8a09558_0 - libxcrypt=4.4.36=hd590300_1 - - libxkbcommon=1.11.0=he8b52b9_0 - - libxml2=2.13.8=h04c0eec_1 - - libxslt=1.1.43=h7a3aeb2_0 + - libxkbcommon=1.12.2=hca5e8e5_0 + - libxml2=2.15.1=h26afc86_0 + - libxml2-16=2.15.1=ha9997c6_0 + - libxml2-devel=2.15.1=h26afc86_0 + - libxslt=1.1.43=h711ed8c_1 - libzlib=1.3.1=hb9d3cd8_2 - linbox=1.7.1=he8fce6e_0 - lrcalc=2.1=h5888daf_7 - lrslib=71.b=h8aaf9c6_1 + - lz4-c=1.10.0=h5888daf_1 + - lzo=2.10=h280c20c_1002 - m4=1.4.20=hb9d3cd8_0 - m4ri=20250128=h36e74d4_0 - m4rie=20250128=h36e74d4_0 - make=4.4.1=hb9d3cd8_2 - markupsafe=3.0.3=py311h3778330_0 - - matplotlib=3.10.6=py311h38be061_1 - - matplotlib-base=3.10.6=py311h0f3be63_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py311h38be061_0 + - matplotlib-base=3.10.7=py311h0f3be63_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h75482ee_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py311h9ecbd09_1 + - memory-allocator=0.1.3=py311h49ec1c0_2 + - menuinst=2.4.1=py311h38be061_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -256,27 +293,28 @@ dependencies: - mpfi=1.5.4=h9f54685_1001 - mpfr=4.2.1=h90cbb55_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py311hdf67eae_1 + - msgpack-python=1.1.2=py311hdf67eae_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hb03c661_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h2d0b736_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h171cf75_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hef3c4d3_1 - - numpy=2.3.3=py311h2e04523_0 + - numpy=2.3.4=py311h2e04523_0 - openblas=0.3.30=pthreads_h6ec200e_2 - openjpeg=2.5.4=h55fea9a_0 - openldap=2.6.10=he970967_0 - openssl=3.5.4=h26f9b46_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hb03c661_0 - - pandoc=3.8.1=ha770c72_0 + - pandoc=3.8.2.1=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=hadf4263_0 - pari=2.17.2=ha40142e_5_pthread @@ -285,7 +323,7 @@ dependencies: - pari-seadata=0.0.20090618=0 - pari-seadata-small=0.0.20090618=0 - parso=0.8.5=pyhcf101f3_0 - - pcre2=10.45=hc749103_0 + - pcre2=10.46=h1321c63_0 - perl=5.32.1=7_hd590300_perl5 - pexpect=4.9.0=pyhd8ed1ab_1 - pickleshare=0.7.5=pyhd8ed1ab_1004 @@ -295,8 +333,8 @@ dependencies: - pkg-config=0.29.2=h4bc722e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hb03c661_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hb03c661_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h6ec01c2_1006 - pplpy=0.8.9=py311h17071fb_2 @@ -305,28 +343,30 @@ dependencies: - primesieve=12.8=h5888daf_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py311h49ec1c0_0 + - psutil=7.1.1=py311h49ec1c0_0 - pthread-stubs=0.4=hb9d3cd8_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py311h49ec1c0_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py311hdae7d1d_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py311h902ca64_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py311hf824169_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py311h49ec1c0_0 - pyparsing=3.2.5=pyhcf101f3_0 - pyproject-metadata=0.9.1=pyhd8ed1ab_0 - pyproject_hooks=1.2.0=pyhd8ed1ab_1 - - pyside6=6.9.2=py311h72d58bf_1 + - pyside6=6.9.3=py311he4c1a5a_1 - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.11.13=h9e4cc4f_0_cpython + - python=3.11.14=hd63d673_2_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 @@ -340,22 +380,24 @@ dependencies: - pyzmq=27.1.0=py311h2315fbb_0 - qd=2.3.22=h2cc385e_1004 - qhull=2020.2=h434a139_5 - - qt6-main=6.9.2=h3fc9a0a_0 - - r-base=4.2.3=h2d83a99_19 - - r-lattice=0.22_6=r42h57805ef_0 + - qt6-main=6.9.3=h5c1c036_1 + - r-base=4.4.3=h14df4e6_4 + - r-lattice=0.22_7=r44h54b55ab_1 - rapidfuzz=3.14.1=py311h1ddb823_0 - readline=8.2=h8c095d6_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=hb9d3cd8_0 + - reproc-cpp=14.2.5.post0=h5888daf_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py311h902ca64_1 - - rpy2=3.5.11=py311r42h1f0f07a_3 - - ruamel.yaml=0.18.15=py311h49ec1c0_1 - - ruamel.yaml.clib=0.2.12=py311h49ec1c0_1 + - rpds-py=0.28.0=py311h902ca64_1 + - rpy2=3.6.4=py311r44h307a326_1 + - ruamel.yaml=0.18.16=py311h49ec1c0_0 + - ruamel.yaml.clib=0.2.14=py311h49ec1c0_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=ha3a3aed_0 + - ruff=0.14.2=ha3a3aed_0 - rw=0.9=hd590300_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -366,7 +408,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - - simplegeneric=0.8.1=pyhd8ed1ab_2 + - simdjson=4.0.7=hb700be7_0 - singular=4.4.1=h7ee4ccf_1 - sirocco=2.1.0=hd7ee782_1 - six=1.17.0=pyhe01879c_1 @@ -385,7 +427,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hbc0de68_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h064106a_1 - symmetrica=3.1.0=hb03c661_0 - sympow=2.023.6=h3028977_4 @@ -396,13 +438,14 @@ dependencies: - tk=8.6.13=noxft_hd72426e_102 - tktable=2.10=h8d826fa_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py311h49ec1c0_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -410,9 +453,9 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py311h49ec1c0_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h30787bc_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - wayland=1.24.0=h3e06ad9_0 + - uv=0.9.5=h30787bc_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=hd6090a7_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 @@ -436,15 +479,18 @@ dependencies: - xorg-libxext=1.3.6=hb9d3cd8_0 - xorg-libxfixes=6.0.2=hb03c661_0 - xorg-libxi=1.8.2=hb9d3cd8_0 + - xorg-libxinerama=1.1.5=h5888daf_1 - xorg-libxrandr=1.5.4=hb9d3cd8_0 - xorg-libxrender=0.9.12=hb9d3cd8_0 - xorg-libxt=1.3.1=hb9d3cd8_0 - xorg-libxtst=1.2.5=hb9d3cd8_3 - xorg-libxxf86vm=1.1.6=hb9d3cd8_0 + - xorg-xorgproto=2024.1=hb9d3cd8_1 - xz=5.8.1=hbcc6ac9_2 - xz-gpl-tools=5.8.1=hbcc6ac9_2 - xz-tools=5.8.1=hb9d3cd8_2 - yaml=0.2.5=h280c20c_3 + - yaml-cpp=0.8.0=h3f2d84a_0 - zeromq=4.3.5=h387f397_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hb9d3cd8_2 diff --git a/environment-3.11-macos-x86_64.yml b/environment-3.11-macos-x86_64.yml index 102e32f7daf..46a9fddeb54 100644 --- a/environment-3.11-macos-x86_64.yml +++ b/environment-3.11-macos-x86_64.yml @@ -1,20 +1,23 @@ name: sage-dev # Generated by conda-lock. # platform: osx-64 -# input_hash: 3aa259922009a1d38088978c27f80157c0173030b678f90425b9d5c15ad59b62 +# input_hash: 73d87bec9b2a86cfbe3fc9218cb6ba65d8335ba51e77f9217a5449fa331c88c9 channels: - conda-forge dependencies: - 4ti2=1.6.13=he407a3c_0 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hdfe9103_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=h4bec284_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321had7229c_1 - automake=1.17=pl5321h694c41f_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -22,8 +25,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h240833e_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_hbf4f893_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_hbf4f893_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h7728843_1 @@ -40,12 +43,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h950ec3b_0 - - cctools=1024.3=h67a6458_4 - - cctools_osx-64=1024.3=h3b512aa_4 + - cctools=1024.3=h67a6458_5 + - cctools_osx-64=1024.3=llvm19_1_h3b512aa_5 - cddlib=1!0.94m=h0f52abe_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py311h8ebb5ae_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py311h26bcf6e_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_h1323312_5 - clang-19=19.1.7=default_hc369343_5 - clang_impl_osx-64=19.1.7=hc73cdc9_25 @@ -53,46 +56,55 @@ dependencies: - clangxx=19.1.7=default_h1c12a56_5 - clangxx_impl_osx-64=19.1.7=hb295874_25 - clangxx_osx-64=19.1.7=h7e5c614_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=h8616949_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=he914875_1 - compiler-rt_osx-64=19.1.7=h138dee1_1 + - conda=25.9.1=py311h6eed73b_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py311hd4d69bb_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py311he13f9b5_0 - - cpython=3.11.13=py311hd8ed1ab_0 + - coverage=7.11.0=py311he13f9b5_0 + - cpp-expected=1.3.1=h0ba0a54_0 + - cpython=3.11.14=py311hd8ed1ab_2 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py311h3e2dd55_0 - - curl=8.14.1=h5dec5d8_0 + - cryptography=46.0.3=py311h3e2dd55_0 + - curl=8.16.0=h7dd4100_0 - cxx-compiler=1.11.0=h307afc9_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py311h29339b9_0 - cysignals=1.12.5=py311h11ccb26_0 - - cython=3.1.4=py311h8726017_2 + - cython=3.1.6=py311hb8ba39f_0 - debugpy=1.8.17=py311h1854d6b_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py311h3b9c2be_0 - ecl=24.5.10=ha6bf567_1 - eclib=20250627=h28d223a_0 - ecm=7.0.6=h5625669_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=h8616949_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=h21dd04a_0 - fflas-ffpack=2.5.0=h5898d61_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h7a3a4f9_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -106,36 +118,44 @@ dependencies: - fpylll=0.6.4=py311h793c761_0 - freetype=2.14.1=h694c41f_0 - fribidi=1.0.16=h8616949_0 + - frozendict=2.4.6=py311h13e5629_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=hb9686a1_5 - - gap-defaults=4.14.0=h694c41f_5 + - gap-core=4.15.1=h94a3ca4_0 + - gap-defaults=4.15.1=h694c41f_0 + - gdk-pixbuf=2.44.4=h07555a4_0 - gf2x=1.3.0=h35ac7d9_3 - gfan=0.6.2=hd793b56_1003 - gfortran=14.3.0=hcc3c99d_0 - - gfortran_impl_osx-64=14.3.0=he320259_1 + - gfortran_impl_osx-64=14.3.0=h94fe04d_1 - gfortran_osx-64=14.3.0=h3223c34_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=hbf3f340_3 + - glib-tools=2.86.0=h8650975_1 - glpk=5.0=h3cb5acd_0 - gmp=6.3.0=hf036a51_2 - - gmpy2=2.1.5=py311h7945f45_3 + - gmpy2=2.2.1=py311h2f44f96_1 - graphite2=1.3.14=h21dd04a_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=h42bfd48_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h93259b0_0 + - gtk3=3.24.43=h5e629aa_6 + - gts=0.7.6=h53e17e3_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=hc5d3ef4_0 + - hicolor-icon-theme=0.17=h694c41f_2 + - highs=1.11.0=h46ed394_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=h120a0e1_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=1.0.0=h88b1ca6_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=h88b1ca6_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h61918c1_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -145,11 +165,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py311h6eed73b_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -157,11 +179,12 @@ dependencies: - krb5=1.21.3=h37d8d59_0 - lcalc=2.1.1=h0f747f7_0 - lcms2=2.17=h72f5680_0 - - ld64=955.13=hc3792c1_4 - - ld64_osx-64=955.13=h466f870_4 + - ld64=955.13=hc3792c1_5 + - ld64_osx-64=955.13=llvm19_1_h466f870_5 - lerc=4.0.0=hcca01a6_1 + - libarchive=3.8.2=gpl_h889603c_100 - libasprintf=0.25.1=h3184127_1 - - libblas=3.9.0=36_he492b99_openblas + - libblas=3.9.0=37_he492b99_openblas - libboost=1.85.0=hcca3243_4 - libboost-devel=1.85.0=h2b186f8_4 - libboost-headers=1.85.0=h694c41f_4 @@ -170,64 +193,71 @@ dependencies: - libbrotlicommon=1.1.0=h1c43f85_4 - libbrotlidec=1.1.0=h1c43f85_4 - libbrotlienc=1.1.0=h1c43f85_4 - - libcblas=3.9.0=36_h9b27e0a_openblas + - libcblas=3.9.0=37_h9b27e0a_openblas - libclang-cpp19.1=19.1.7=default_hc369343_5 - - libcurl=8.14.1=h5dec5d8_0 - - libcxx=21.1.2=h3d58e20_0 + - libcurl=8.16.0=h7dd4100_0 + - libcxx=21.1.4=h3d58e20_0 - libcxx-devel=19.1.7=h7c275be_1 - libdeflate=1.24=hcc1b750_0 - libedit=3.1.20250104=pl5321ha958ccf_0 - libev=4.33=h10d778d_2 - libexpat=2.7.1=h21dd04a_0 - - libffi=3.4.6=h281671d_1 + - libffi=3.5.2=h750e83c_0 - libflint=3.2.2=h26b1ecd_0 - libfreetype=2.14.1=h694c41f_0 - libfreetype6=2.14.1=h6912278_0 - libgd=2.3.3=h8555400_11 - libgettextpo=0.25.1=h3184127_1 - - libgfortran=15.1.0=h5f6db21_1 + - libgfortran=15.2.0=h306097a_1 - libgfortran-devel_osx-64=14.3.0=h660b60f_1 - - libgfortran5=15.1.0=hfa3c126_1 - - libglib=2.86.0=h7cafd41_0 + - libgfortran5=15.2.0=h336fb69_1 + - libglib=2.86.0=h6ca3a76_1 - libhomfly=1.03=h1c43f85_0 - libiconv=1.18=h57a12c2_2 - libintl=0.25.1=h3184127_1 - libjpeg-turbo=3.1.0=h6e16a3a_0 - - liblapack=3.9.0=36_h859234e_openblas - - liblapacke=3.9.0=36_h94b3770_openblas + - liblapack=3.9.0=37_h859234e_openblas + - liblapacke=3.9.0=37_h94b3770_openblas - libllvm19=19.1.7=h56e7563_2 - liblzma=5.8.1=hd471939_2 - liblzma-devel=5.8.1=hd471939_2 + - libmamba=2.3.3=hf3f6d74_1 + - libmambapy=2.3.3=py311hb021567_1 - libnghttp2=1.67.0=h3338091_0 - libopenblas=0.3.30=openmp_h83c2472_2 - libpng=1.6.50=h84aeda2_1 + - librsvg=2.60.0=h2da6fc3_0 - libsodium=1.0.20=hfdf4475_0 + - libsolv=0.7.35=h6fd32b5_0 - libsqlite=3.50.4=h39a8b3b_0 - libssh2=1.11.1=hed3591d_0 - libtiff=4.7.1=haa3b502_0 - libwebp-base=1.6.0=hb807250_0 - libxcb=1.17.0=hf1f96e2_0 - - libxml2=2.15.0=h7b7ecba_1 - - libxml2-16=2.15.0=ha1d9b0f_1 - - libxml2-devel=2.15.0=h7b7ecba_1 + - libxml2=2.15.1=h7b7ecba_0 + - libxml2-16=2.15.1=ha1d9b0f_0 + - libxml2-devel=2.15.1=h7b7ecba_0 - libzlib=1.3.1=hd23fc13_2 - linbox=1.7.1=h1a86e0a_0 - - llvm-openmp=21.1.2=h472b3d1_3 + - llvm-openmp=21.1.4=h472b3d1_0 - llvm-tools=19.1.7=hb0207f0_2 - llvm-tools-19=19.1.7=h879f4bc_2 - lrcalc=2.1=hac325c4_7 - lrslib=71.b=hda3377a_1 + - lz4-c=1.10.0=h240833e_1 + - lzo=2.10=h4132b18_1002 - m4=1.4.20=h6e16a3a_0 - m4ri=20250128=h95e091b_0 - m4rie=20250128=h95e091b_0 - make=4.4.1=h00291cd_2 - markupsafe=3.0.3=py311he13f9b5_0 - - matplotlib=3.10.6=py311h6eed73b_1 - - matplotlib-base=3.10.6=py311h48d7e91_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py311h6eed73b_0 + - matplotlib-base=3.10.7=py311h48d7e91_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h3080a4d_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py311h3336109_1 + - memory-allocator=0.1.3=py311h13e5629_2 + - menuinst=2.4.1=py311h6eed73b_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -236,26 +266,27 @@ dependencies: - mpfi=1.5.4=h52b28e3_1001 - mpfr=4.2.1=haed47dc_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py311hd4d69bb_1 + - msgpack-python=1.1.2=py311haec20ae_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=h8616949_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h0622a9a_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h0ba0a54_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0ab3c2f_1 - - numpy=2.3.3=py311hf157cb9_0 + - numpy=2.3.4=py311hf157cb9_0 - openblas=0.3.30=openmp_h30af337_2 - openjpeg=2.5.4=h87e8dc5_0 - openssl=3.5.4=h230baf5_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=h8616949_0 - - pandoc=3.8.1=h694c41f_0 + - pandoc=3.8.2.1=h694c41f_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h6ef8af8_0 - pari=2.17.2=h1ed0f1a_5_pthread @@ -274,8 +305,8 @@ dependencies: - pkg-config=0.29.2=hf7e621a_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=h8616949_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=h8616949_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=ha60d53e_1006 - pplpy=0.8.9=py311h221ab62_2 @@ -284,18 +315,20 @@ dependencies: - primesieve=12.8=h240833e_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py311hf197a57_0 + - psutil=7.1.1=py311hf197a57_0 - pthread-stubs=0.4=h00291cd_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py311h13e5629_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py311hd1a56c6_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py311hd2a4513_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py311hcebe98e_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py311hf197a57_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -304,7 +337,7 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.11.13=h9ccd52b_0_cpython + - python=3.11.14=h74c2667_2_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 @@ -322,18 +355,20 @@ dependencies: - r-lattice=0.22_7=r44h735ac91_1 - rapidfuzz=3.14.1=py311h11ccb26_0 - readline=8.2=h7cca4af_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h6e16a3a_0 + - reproc-cpp=14.2.5.post0=h240833e_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py311hd3d88a1_1 + - rpds-py=0.28.0=py311hd2a4513_1 - rpy2=3.6.4=py311r44h52c6234_1 - - ruamel.yaml=0.18.15=py311hf197a57_1 - - ruamel.yaml.clib=0.2.12=py311h13e5629_1 + - ruamel.yaml=0.18.16=py311hf197a57_0 + - ruamel.yaml.clib=0.2.14=py311hf197a57_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=hba89d1c_0 - - rw=0.7=1 + - ruff=0.14.2=hba89d1c_0 + - rw=0.9=h10d778d_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -342,6 +377,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h88f4db0_0 + - simdjson=4.0.7=hcb651aa_0 - singular=4.4.1=haa275bf_1 - sirocco=2.1.0=hfc2cc1e_1 - six=1.17.0=pyhe01879c_1 @@ -360,7 +396,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=h64b5abc_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h79ccd14_1 - symmetrica=3.1.0=h8616949_0 - sympow=2.023.6=h7305399_4 @@ -371,13 +407,14 @@ dependencies: - tk=8.6.13=hf689a15_2 - tktable=2.10=h2c093e9_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py311h13e5629_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -385,20 +422,21 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py311h13e5629_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h66543e4_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h66543e4_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py311h13e5629_1 - - xattr=1.2.0=py311h8e62900_1 + - xattr=1.3.0=py311hab88851_0 - xorg-libxau=1.0.12=h6e16a3a_0 - xorg-libxdmcp=1.1.5=h00291cd_0 - xz=5.8.1=h357f2ed_2 - xz-gpl-tools=5.8.1=h357f2ed_2 - xz-tools=5.8.1=hd471939_2 - yaml=0.2.5=h4132b18_3 + - yaml-cpp=0.8.0=h92383a6_0 - zeromq=4.3.5=h6c33b1e_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hd23fc13_2 diff --git a/environment-3.11-macos.yml b/environment-3.11-macos.yml index 1db05184e49..7b42cceb947 100644 --- a/environment-3.11-macos.yml +++ b/environment-3.11-macos.yml @@ -1,19 +1,22 @@ name: sage-dev # Generated by conda-lock. # platform: osx-arm64 -# input_hash: 616075c960184e88c174fb059b2acc1ba4e38903ed068b8bbd92d1e3a1115a8e +# input_hash: 5daf596d78e1c0b8a60af5e6d0c49e7e8027d5c99684ce012db2a07903ed4c99 channels: - conda-forge dependencies: - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h1f29f7c_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=hd03087b_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hd3c70e0_1 - automake=1.17=pl5321hce30654_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -21,8 +24,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h286801f_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h11c0a38_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_h11c0a38_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2ffa867_1 @@ -39,12 +42,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h6a3b0d2_0 - - cctools=1024.3=hd01ab73_4 - - cctools_osx-arm64=1024.3=h8c76c84_4 + - cctools=1024.3=hd01ab73_5 + - cctools_osx-arm64=1024.3=llvm19_1_h8c76c84_5 - cddlib=1!0.94m=h6d7a090_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py311hcfc1310_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py311hd10dc20_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hf9bcbb7_5 - clang-19=19.1.7=default_h73dfc95_5 - clang_impl_osx-arm64=19.1.7=h76e6a08_25 @@ -52,46 +55,55 @@ dependencies: - clangxx=19.1.7=default_h36137df_5 - clangxx_impl_osx-arm64=19.1.7=h276745f_25 - clangxx_osx-arm64=19.1.7=h07b0088_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hc919400_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h855ad52_1 - compiler-rt_osx-arm64=19.1.7=he32a8d3_1 + - conda=25.9.1=py311h267d04e_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py311h57a9ea7_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py311ha9b3269_0 - - cpython=3.11.13=py311hd8ed1ab_0 + - coverage=7.11.0=py311ha9b3269_0 + - cpp-expected=1.3.1=h4f10f1e_0 + - cpython=3.11.14=py311hd8ed1ab_2 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py311h054b3d0_0 - - curl=8.14.1=h73640d1_0 + - cryptography=46.0.3=py311h054b3d0_0 + - curl=8.16.0=hdece5d2_0 - cxx-compiler=1.11.0=h88570a1_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py311haabaa81_0 - cysignals=1.12.5=py311h251fd82_0 - - cython=3.1.4=py311h9342580_2 + - cython=3.1.6=py311hac7d6c3_0 - debugpy=1.8.17=py311hc58e375_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py311h3ff9189_0 - ecl=24.5.10=hc6c598b_1 - eclib=20250627=h6592c3b_0 - ecm=7.0.6=hdd59bce_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hc919400_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hec049ff_0 - fflas-ffpack=2.5.0=h4bc3318_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h669d743_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -105,36 +117,44 @@ dependencies: - fpylll=0.6.4=py311h4044dbd_0 - freetype=2.14.1=hce30654_0 - fribidi=1.0.16=hc919400_0 + - frozendict=2.4.6=py311h3696347_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h25f1785_5 - - gap-defaults=4.14.0=hce30654_5 + - gap-core=4.15.1=h0c23a18_0 + - gap-defaults=4.15.1=hce30654_0 + - gdk-pixbuf=2.44.4=h7542897_0 - gf2x=1.3.0=hf8f8af4_3 - gfan=0.6.2=hec08f5c_1003 - gfortran=14.3.0=h3ef1dbf_0 - - gfortran_impl_osx-arm64=14.3.0=h969232b_1 + - gfortran_impl_osx-arm64=14.3.0=h6d03799_1 - gfortran_osx-arm64=14.3.0=h3c33bd0_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h5331fe3_3 + - glib-tools=2.86.0=hb9d6e3a_1 - glpk=5.0=h6d7a090_0 - gmp=6.3.0=h7bae524_2 - - gmpy2=2.1.5=py311hb5d9ff4_3 + - gmpy2=2.2.1=py311hb9fe3ed_1 - graphite2=1.3.14=hec049ff_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=hcd33d8b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h6e638da_0 + - gtk3=3.24.43=h5febe37_6 + - gts=0.7.6=he42f4ea_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=haf38c7b_0 + - hicolor-icon-theme=0.17=hce30654_2 + - highs=1.11.0=ha024513_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hfee45f7_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h73cadaf_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=hd73f12c_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -144,11 +164,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py311h267d04e_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -156,11 +178,12 @@ dependencies: - krb5=1.21.3=h237132a_0 - lcalc=2.1.1=hdaf6845_0 - lcms2=2.17=h7eeda09_0 - - ld64=955.13=he86490a_4 - - ld64_osx-arm64=955.13=h6922315_4 + - ld64=955.13=he86490a_5 + - ld64_osx-arm64=955.13=llvm19_1_h6922315_5 - lerc=4.0.0=hd64df32_1 + - libarchive=3.8.2=gpl_h46575ef_100 - libasprintf=0.25.1=h493aca8_0 - - libblas=3.9.0=36_h51639a9_openblas + - libblas=3.9.0=37_h51639a9_openblas - libboost=1.85.0=hf763ba5_4 - libboost-devel=1.85.0=hf450f58_4 - libboost-headers=1.85.0=hce30654_4 @@ -169,63 +192,70 @@ dependencies: - libbrotlicommon=1.1.0=h6caf38d_4 - libbrotlidec=1.1.0=h6caf38d_4 - libbrotlienc=1.1.0=h6caf38d_4 - - libcblas=3.9.0=36_hb0561ab_openblas + - libcblas=3.9.0=37_hb0561ab_openblas - libclang-cpp19.1=19.1.7=default_h73dfc95_5 - - libcurl=8.14.1=h73640d1_0 - - libcxx=21.1.2=hf598326_0 + - libcurl=8.16.0=hdece5d2_0 + - libcxx=21.1.4=hf598326_0 - libcxx-devel=19.1.7=h6dc3340_1 - libdeflate=1.24=h5773f1b_0 - libedit=3.1.20250104=pl5321hafb1f1b_0 - libev=4.33=h93a5062_2 - libexpat=2.7.1=hec049ff_0 - - libffi=3.4.6=h1da3d7d_1 + - libffi=3.5.2=he5f378a_0 - libflint=3.2.2=hf825d4a_0 - libfreetype=2.14.1=hce30654_0 - libfreetype6=2.14.1=h6da58f4_0 - libgd=2.3.3=hb2c3a21_11 - libgettextpo=0.25.1=h493aca8_0 - - libgfortran=15.1.0=hfdf1602_1 + - libgfortran=15.2.0=hfcf01ff_1 - libgfortran-devel_osx-arm64=14.3.0=hc965647_1 - - libgfortran5=15.1.0=hb74de2c_1 - - libglib=2.86.0=h1bb475b_0 + - libgfortran5=15.2.0=h742603c_1 + - libglib=2.86.0=he69a767_1 - libhomfly=1.03=h6caf38d_0 - libiconv=1.18=h23cfdf5_2 - libintl=0.25.1=h493aca8_0 - libjpeg-turbo=3.1.0=h5505292_0 - - liblapack=3.9.0=36_hd9741b5_openblas - - liblapacke=3.9.0=36_h1b118fd_openblas + - liblapack=3.9.0=37_hd9741b5_openblas + - liblapacke=3.9.0=37_h1b118fd_openblas - libllvm19=19.1.7=h8e0c9ce_2 - liblzma=5.8.1=h39f12f2_2 - liblzma-devel=5.8.1=h39f12f2_2 + - libmamba=2.3.3=h1370271_2 + - libmambapy=2.3.3=py311h72cf7df_2 - libnghttp2=1.67.0=hc438710_0 - libopenblas=0.3.30=openmp_h60d53f8_2 - libpng=1.6.50=h280e0eb_1 + - librsvg=2.60.0=h5c55ec3_0 - libsodium=1.0.20=h99b78c6_0 + - libsolv=0.7.35=h5f525b2_0 - libsqlite=3.50.4=h4237e3c_0 - libssh2=1.11.1=h1590b86_0 - libtiff=4.7.1=h7dc4979_0 - libwebp-base=1.6.0=h07db88b_0 - libxcb=1.17.0=hdb1d25a_0 - - libxml2=2.15.0=h9329255_1 - - libxml2-16=2.15.0=h0ff4647_1 - - libxml2-devel=2.15.0=h9329255_1 + - libxml2=2.15.1=h9329255_0 + - libxml2-16=2.15.1=h0ff4647_0 + - libxml2-devel=2.15.1=h9329255_0 - libzlib=1.3.1=h8359307_2 - linbox=1.7.1=h08a833a_0 - - llvm-openmp=21.1.2=h4a912ad_3 + - llvm-openmp=21.1.4=h4a912ad_0 - llvm-tools=19.1.7=h855ad52_2 - llvm-tools-19=19.1.7=h91fd4e7_2 - lrcalc=2.1=hec049ff_8 + - lz4-c=1.10.0=h286801f_1 + - lzo=2.10=h925e9cb_1002 - m4=1.4.20=h5505292_0 - m4ri=20250128=h0f65c67_0 - m4rie=20250128=h0f65c67_0 - make=4.4.1=hc9fafa5_2 - markupsafe=3.0.3=py311ha9b3269_0 - - matplotlib=3.10.6=py311ha1ab1f8_0 - - matplotlib-base=3.10.6=py311h66dac5a_0 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py311ha1ab1f8_0 + - matplotlib-base=3.10.7=py311h29553df_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=hd2c4bfb_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py311h460d6c5_1 + - memory-allocator=0.1.3=py311h3696347_2 + - menuinst=2.4.1=py311h267d04e_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -234,26 +264,27 @@ dependencies: - mpfi=1.5.4=hbde5f5b_1001 - mpfr=4.2.1=hb693164_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py311h57a9ea7_1 + - msgpack-python=1.1.2=py311h5a5e7c7_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hf22a7ee_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h5e97a16_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h4f10f1e_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hbb3f309_1 - - numpy=2.3.3=py311h8685306_0 + - numpy=2.3.4=py311h8685306_0 - openblas=0.3.30=openmp_hea878ba_2 - openjpeg=2.5.4=hbfb3c88_0 - openssl=3.5.4=h5503f6c_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hc919400_0 - - pandoc=3.8.1=hce30654_0 + - pandoc=3.8.2.1=hce30654_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h875632e_0 - pari=2.17.2=h49d18c7_5_pthread @@ -272,8 +303,8 @@ dependencies: - pkg-config=0.29.2=hde07d2e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hc919400_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hc919400_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h8b147cf_1006 - pplpy=0.8.9=py311h911f23a_2 @@ -282,18 +313,20 @@ dependencies: - primesieve=12.8=h286801f_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py311h9408147_0 + - psutil=7.1.1=py311h9408147_0 - pthread-stubs=0.4=hd74edd7_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py311h3696347_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py311hf245fc6_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py311h71babbd_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py311hcada031_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py311h9408147_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -302,7 +335,7 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.11.13=hc22306f_0_cpython + - python=3.11.14=h18782d2_2_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 @@ -320,17 +353,19 @@ dependencies: - r-lattice=0.22_7=r44h6168396_1 - rapidfuzz=3.14.1=py311h251fd82_0 - readline=8.2=h1d1bf99_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h5505292_0 + - reproc-cpp=14.2.5.post0=h286801f_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py311h1c3fc1a_1 + - rpds-py=0.28.0=py311h71babbd_1 - rpy2=3.6.4=py311r44h8940d94_1 - - ruamel.yaml=0.18.15=py311h9408147_1 - - ruamel.yaml.clib=0.2.8=py311hae2e1ce_1 + - ruamel.yaml=0.18.16=py311h9408147_0 + - ruamel.yaml.clib=0.2.14=py311h9408147_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h492a034_0 + - ruff=0.14.2=h492a034_0 - rw=0.9=h93a5062_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -340,6 +375,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h44b9a77_0 + - simdjson=4.0.7=ha7d2532_0 - singular=4.4.1=h837545d_1 - sirocco=2.1.0=h41f8169_1 - six=1.17.0=pyhe01879c_1 @@ -358,7 +394,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hb5dd463_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=hddbed1c_1 - symmetrica=3.1.0=hc919400_0 - sympow=2.023.6=hc13a52f_4 @@ -369,13 +405,14 @@ dependencies: - tk=8.6.13=h892fb3f_2 - tktable=2.10=h3c7de25_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py311h3696347_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -383,20 +420,21 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py311h3696347_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h194b5f9_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h194b5f9_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py311h3696347_1 - - xattr=1.2.0=py311h7d51efc_1 + - xattr=1.3.0=py311h9e99a0f_0 - xorg-libxau=1.0.12=h5505292_0 - xorg-libxdmcp=1.1.5=hd74edd7_0 - xz=5.8.1=h9a6d368_2 - xz-gpl-tools=5.8.1=h9a6d368_2 - xz-tools=5.8.1=h39f12f2_2 - yaml=0.2.5=h925e9cb_3 + - yaml-cpp=0.8.0=ha1acc90_0 - zeromq=4.3.5=h888dc83_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h8359307_2 diff --git a/environment-3.11-win.yml b/environment-3.11-win.yml index 6858d000039..7d48963bb7d 100644 --- a/environment-3.11-win.yml +++ b/environment-3.11-win.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: win-64 -# input_hash: 9780021208eb65d318623452cdd6eb90c0546cca9543dfcd386978e2ebe0bd84 +# input_hash: 05fdaa5149e55053bd5936d4929670689fba98f4dfced0de9d1307543a8fcccc channels: - conda-forge @@ -11,15 +11,16 @@ dependencies: - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - attrs=25.4.0=pyh71513ae_0 - babel=2.17.0=pyhd8ed1ab_0 - backports=1.0=pyhd8ed1ab_5 - backports.tarfile=1.2.0=pyhd8ed1ab_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils_impl_win-64=2.44=h095e170_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_ha590de0_openblas + - binutils_impl_win-64=2.44=h1226360_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_ha590de0_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - boltons=25.0.0=pyhd8ed1ab_0 @@ -34,47 +35,54 @@ dependencies: - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h5782bbf_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py311h3485c13_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py311h3485c13_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hac490eb_5 - clang-19=19.1.7=default_hac490eb_5 - - click=8.3.0=pyh7428d3b_0 + - click=8.1.8=pyh7428d3b_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h49e36cd_1 - compiler-rt_win-64=19.1.7=h49e36cd_1 + - conda=25.9.1=py311h1ea47a8_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyha6a9232_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py311h3fd045d_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py311h3f79411_0 - - cpython=3.11.13=py311hd8ed1ab_0 + - coverage=7.11.0=py311h3f79411_0 + - cpp-expected=1.3.1=h477610d_0 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py311h5e0b3ae_0 - - curl=8.14.1=h88aaa65_0 + - cryptography=46.0.3=py311h5e0b3ae_0 + - curl=8.16.0=h43ecb02_0 - cycler=0.12.1=pyhd8ed1ab_1 - cysignals=1.12.5=py311h3e6a449_0 - - cython=3.1.4=py311hcaecfd5_2 + - cython=3.1.6=py311h9990397_0 - debugpy=1.8.17=py311h5dfdfe8_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=he0c23c2_0 - dulwich=0.22.8=py311h533ab2d_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hac47afa_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 - flang=19.1.7=hbeecb71_0 - flang_impl_win-64=19.1.7=h719f0c7_0 - flang_win-64=19.1.7=h719f0c7_0 + - fmt=12.0.0=h29169d4_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -85,30 +93,35 @@ dependencies: - fonttools=4.60.1=py311h3f79411_0 - fortran-compiler=1.11.0=h95e3450_0 - freetype=2.14.1=h57928b3_0 + - fribidi=1.0.16=hfd05255_0 + - frozendict=2.4.6=py311h3485c13_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gcc_impl_win-64=15.1.0=hb5bc704_5 - - gfortran_impl_win-64=15.1.0=h792c6fe_5 + - gcc_impl_win-64=15.2.0=h90e0b34_7 + - getopt-win32=0.1=h6a83c73_3 + - gfortran_impl_win-64=15.2.0=hd3d1e43_7 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - glpk=5.0=h8ffe710_0 - gmp=6.3.0=hfeafd45_2 - - gmpy2=2.1.5=py311hb8385e8_3 + - gmpy2=2.2.1=py311hf0a8809_1 - graphite2=1.3.14=hac47afa_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=ha5e8f4b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=hdfb1a43_0 - - gxx_impl_win-64=15.1.0=h91e354b_5 + - gts=0.7.6=h6b5321d_4 + - gxx_impl_win-64=15.2.0=h4517dcd_7 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=h5f2951f_0 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he0c23c2_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=1.0.0=h9eeb67d_0 - imagesize=1.4.1=pyhd8ed1ab_0 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh3521513_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh6dadd2b_0 - ipython=9.5.0=pyh6be1c34_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -117,107 +130,119 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py311h1ea47a8_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh5737063_0 + - jupyter_core=5.9.1=pyh6dadd2b_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh7428d3b_0 - kiwisolver=1.4.9=py311h275cad7_1 - krb5=1.21.3=hdf4eb48_0 - lcms2=2.17=hbcf6048_0 - - ld_impl_win-64=2.44=hae1bf67_2 + - ld_impl_win-64=2.44=h13c207b_4 - lerc=4.0.0=h6470a55_1 - - libblas=3.9.0=36_h0adab6e_openblas + - libarchive=3.8.2=gpl_h26aea39_100 + - libblas=3.9.0=37_h0adab6e_openblas - libboost=1.85.0=h444863b_4 - libboost-devel=1.85.0=h91493d7_4 - libboost-headers=1.85.0=h57928b3_4 - libbrotlicommon=1.1.0=hfd05255_4 - libbrotlidec=1.1.0=hfd05255_4 - libbrotlienc=1.1.0=hfd05255_4 - - libcblas=3.9.0=36_h2a8eebe_openblas - - libclang13=21.1.2=default_ha2db4b5_1 - - libcurl=8.14.1=h88aaa65_0 + - libcblas=3.9.0=37_h2a8eebe_openblas + - libclang13=21.1.4=default_ha2db4b5_0 + - libcurl=8.16.0=h43ecb02_0 - libdeflate=1.24=h76ddb4d_0 - libexpat=2.7.1=hac47afa_0 - - libffi=3.4.6=h537db12_1 + - libffi=3.5.2=h52bdfb6_0 - libflang=19.1.7=he0c23c2_0 - libflint=3.2.2=h4de658f_0 - libfreetype=2.14.1=h57928b3_0 - libfreetype6=2.14.1=hdbac1cb_0 - - libgcc=15.1.0=h1383e82_5 - - libgcc-devel_win-64=15.1.0=hec057c1_105 + - libgcc=15.2.0=h1383e82_7 + - libgcc-devel_win-64=15.2.0=h40631e7_107 - libgd=2.3.3=h7208af6_11 - - libgfortran=15.1.0=h719f0c7_5 - - libgfortran5=15.1.0=h997fb6f_5 - - libglib=2.86.0=h5f26cbf_0 - - libgomp=15.1.0=h1383e82_5 + - libgfortran=15.2.0=h719f0c7_7 + - libgfortran5=15.2.0=hf2bee02_7 + - libglib=2.86.0=hd9c3897_1 + - libgomp=15.2.0=h1383e82_7 - libiconv=1.18=hc1393d2_2 - libintl=0.22.5=h5728263_3 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=36_hd232482_openblas - - liblapacke=3.9.0=36_hbb0e6ff_openblas + - liblapack=3.9.0=37_hd232482_openblas + - liblapacke=3.9.0=37_hbb0e6ff_openblas - libllvm19=19.1.7=h830ff33_2 - liblzma=5.8.1=h2466b09_2 - liblzma-devel=5.8.1=h2466b09_2 + - libmamba=2.3.3=h5fbfb43_1 + - libmambapy=2.3.3=py311hd21cfaa_1 - libopenblas=0.3.30=pthreads_ha4fe6b2_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 + - libsolv=0.7.35=h8883371_0 - libsqlite=3.50.4=hf5d6505_0 - libssh2=1.11.1=h9aa295b_0 - - libstdcxx=15.1.0=h904f734_5 - - libstdcxx-devel_win-64=15.1.0=hec057c1_105 + - libstdcxx=15.2.0=h904f734_7 + - libstdcxx-devel_win-64=15.2.0=h40631e7_107 - libtiff=4.7.1=h550210a_0 - - libvulkan-loader=1.4.313.0=h477610d_1 + - libvulkan-loader=1.4.328.1=h477610d_0 - libwebp-base=1.6.0=h4d5522a_0 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - libxcb=1.17.0=h0e4246c_0 - - libxml2=2.15.0=ha29bfb0_1 - - libxml2-16=2.15.0=h06f855e_1 - - libxml2-devel=2.15.0=ha29bfb0_1 + - libxml2=2.15.1=ha29bfb0_0 + - libxml2-16=2.15.1=h06f855e_0 + - libxml2-devel=2.15.1=ha29bfb0_0 - libxslt=1.1.43=h0fbe4c1_1 - libzlib=1.3.1=h2466b09_2 - - lld=21.1.2=hc465015_0 + - lld=21.1.4=hc465015_0 - llvm-tools=19.1.7=h752b59f_2 - - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - lz4-c=1.10.0=h2466b09_1 + - lzo=2.10=h6a83c73_1002 + - m2-conda-epoch=20250515=0_x86_64 + - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - m4ri=20250128=h26c196c_0 - markupsafe=3.0.3=py311h3f79411_0 - - matplotlib=3.10.6=py311h1ea47a8_1 - - matplotlib-base=3.10.6=py311h1675fdf_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py311h1ea47a8_0 + - matplotlib-base=3.10.7=py311h1675fdf_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py311he736701_1 + - memory-allocator=0.1.3=py311h3485c13_2 + - menuinst=2.4.1=py311h3e6a449_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 - - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 + - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mingw-w64-ucrt-x86_64-windows-default-manifest=6.4=he206cdd_7 - - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mistune=3.1.4=pyhcf101f3_0 - more-itertools=10.8.0=pyhd8ed1ab_0 - mpc=1.3.1=h72bc38f_1 - mpfr=4.2.1=hbc20e70_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py311h3fd045d_1 + - msgpack-python=1.1.2=py311h3fd045d_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.6.11=h2fa13f4_1 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h477610d_0 - - numpy=2.3.3=py311h80b3fa1_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 + - numpy=2.3.4=py311h80b3fa1_0 - openblas=0.3.30=pthreads_h4a7f399_2 - openjpeg=2.5.4=h24db6dd_0 - openssl=3.5.4=h725018a_0 - packaging=25.0=pyh29332c3_1 - - pandoc=3.8.1=h57928b3_0 + - pandoc=3.8.2.1=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 + - pango=1.56.4=h03d888a_0 - pari=2.17.2=h637a547_5_pthread - pari-elldata=0.0.20161017=0 - pari-galdata=0.0.20180411=0 @@ -234,24 +259,26 @@ dependencies: - pkg-config=0.29.2=h88c491f_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hfd05255_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hfd05255_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - primesieve=12.8=he0c23c2_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py311h3485c13_0 + - psutil=7.1.1=py311h3485c13_0 - pthread-stubs=0.4=h0e40799_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py311h3485c13_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py311hc4022dc_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py311hf51aa87_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py311hb614d00_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py311h3485c13_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -261,7 +288,7 @@ dependencies: - pysocks=1.7.1=pyh09c184e_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.11.13=h3f84c4b_0_cpython + - python=3.11.14=h0159041_2_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 @@ -275,20 +302,22 @@ dependencies: - pyyaml=6.0.3=py311h3f79411_0 - pyzmq=27.1.0=py311hb77b9c8_0 - qhull=2020.2=hc790b64_5 - - qt6-main=6.9.3=ha0de62e_0 + - qt6-main=6.9.3=ha0de62e_1 - r-base=4.5.1=h4076d79_3 - r-lattice=0.22_7=r45heceb674_1 - rapidfuzz=3.14.1=py311h3e6a449_0 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h2466b09_0 + - reproc-cpp=14.2.5.post0=he0c23c2_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py311hf51aa87_1 - - ruamel.yaml=0.18.15=py311h3485c13_1 - - ruamel.yaml.clib=0.2.12=py311h3485c13_1 + - rpds-py=0.28.0=py311hf51aa87_1 + - ruamel.yaml=0.18.16=py311h3485c13_0 + - ruamel.yaml.clib=0.2.14=py311h3485c13_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h3e3edff_0 + - ruff=0.14.2=h3e3edff_0 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -296,6 +325,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 + - simdjson=4.0.7=h49e36cd_0 - six=1.17.0=pyhe01879c_1 - smmap=5.0.2=pyhd8ed1ab_0 - snowballstemmer=3.0.1=pyhd8ed1ab_0 @@ -312,7 +342,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hdb435a2_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h1ba984b_1 - symmetrica=3.1.0=h1056bf2_0 - sympy=1.14.0=pyh04b8f61_5 @@ -320,13 +350,14 @@ dependencies: - tk=8.6.13=h2c6b04d_2 - tktable=2.10=h7e9e0db_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py311h3485c13_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -334,20 +365,20 @@ dependencies: - ucrt=10.0.26100.0=h57928b3_0 - unicodedata2=16.0.0=py311h3485c13_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=ha1006f7_0 - - vc=14.3=h41ae7f8_31 - - vc14_runtime=14.44.35208=h818238b_31 - - vcomp14=14.44.35208=h818238b_31 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - vs2015_runtime=14.44.35208=h38c0c73_31 - - vs2022_win-64=19.44.35207=ha74f236_31 + - uv=0.9.5=ha1006f7_0 + - vc=14.3=h2b53caa_32 + - vc14_runtime=14.44.35208=h818238b_32 + - vcomp14=14.44.35208=h818238b_32 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - vs2015_runtime=14.44.35208=h38c0c73_32 + - vs2022_win-64=19.44.35207=ha74f236_32 - vswhere=3.1.7=h40126e0_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - wrapt=1.17.3=py311h3485c13_1 - xorg-libice=1.1.2=h0e40799_0 - xorg-libsm=1.2.6=h0e40799_0 @@ -360,6 +391,7 @@ dependencies: - xz=5.8.1=h208afaa_2 - xz-tools=5.8.1=h2466b09_2 - yaml=0.2.5=h6a83c73_3 + - yaml-cpp=0.8.0=he0c23c2_0 - zeromq=4.3.5=h5bddc39_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h2466b09_2 diff --git a/environment-3.12-linux-aarch64.yml b/environment-3.12-linux-aarch64.yml index 88d92dd6580..85b4ccf3c01 100644 --- a/environment-3.12-linux-aarch64.yml +++ b/environment-3.12-linux-aarch64.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: linux-aarch64 -# input_hash: 2b428ab96f1c5e248049d9ce5c2203cd5c93c9120ce3a6134a6961378c9c9e9a +# input_hash: 220953630a422f91cad64739f054b43bae7c69518fa78b1b8b92cfd36729763e channels: - conda-forge @@ -9,12 +9,18 @@ dependencies: - _openmp_mutex=4.5=2_gnu - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 + - alsa-lib=1.2.14=h86ecc28_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h6fc4d3a_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h1f2db35_3 + - at-spi2-core=2.40.3=h1f2db35_0 + - atk-1.0=2.38.0=hedc4a1f_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbecfd40_1 - automake=1.17=pl5321h8af1aa0_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -22,11 +28,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5ad3122_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=hf1166c9_2 - - binutils_impl_linux-aarch64=2.44=hdf4bb16_2 - - binutils_linux-aarch64=2.44=hf1166c9_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h9678261_openblas + - binutils=2.44=hf1166c9_4 + - binutils_impl_linux-aarch64=2.44=ha36da51_4 + - binutils_linux-aarch64=2.44=hf1166c9_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h9678261_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2a328a1_1 @@ -45,48 +51,59 @@ dependencies: - cairo=1.18.4=h83712da_0 - cddlib=1!0.94m=h719063d_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312h2fc7fbd_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py312h1b372e3_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=he30d5cf_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=h92dcf8a_5 + - conda=25.9.1=py312h996f985_0 + - conda-gcc-specs=14.3.0=h92dcf8a_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py312h4f740d2_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py312hd077ced_0 - - cpython=3.12.11=py312hd8ed1ab_0 + - coverage=7.11.0=py312hd077ced_0 + - cpp-expected=1.3.1=hdc560ac_0 + - cpython=3.12.12=py312hd8ed1ab_1 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py312h4cd2d69_0 - - curl=8.14.1=h6702fde_0 + - cryptography=46.0.3=py312h4cd2d69_0 + - curl=8.16.0=h7bfdcfb_0 - cxx-compiler=1.11.0=h7b35c40_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py312hb80cc37_0 + - cyrus-sasl=2.1.28=h6c5dea3_0 - cysignals=1.12.5=py312h1ab2c47_0 - - cython=3.1.4=py312hfce37a5_2 - - dbus=1.13.6=h12b9eeb_3 + - cython=3.1.6=py312he940de5_0 + - dbus=1.16.2=heda779d_0 - debugpy=1.8.17=py312hf55c4e8_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.1=h5ad3122_0 - dulwich=0.22.8=py312h8cbf658_0 - ecl=24.5.10=h043f013_1 - eclib=20250627=h2fd3c11_0 - ecm=7.0.6=hd777dc2_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=he30d5cf_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hfae3067_0 - fflas-ffpack=2.5.0=h503e619_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h416241a_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -100,42 +117,50 @@ dependencies: - fpylll=0.6.4=py312h37c3976_0 - freetype=2.14.1=h8af1aa0_0 - fribidi=1.0.16=he30d5cf_0 + - frozendict=2.4.6=py312hcd1a082_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h1754e88_5 - - gap-defaults=4.14.0=h8af1aa0_5 - - gcc=14.3.0=h7408ef6_5 - - gcc_impl_linux-aarch64=14.3.0=h2b96704_5 - - gcc_linux-aarch64=14.3.0=h39d9346_11 + - gap-core=4.15.1=h409ef3a_0 + - gap-defaults=4.15.1=h8af1aa0_0 + - gcc=14.3.0=h7408ef6_7 + - gcc_impl_linux-aarch64=14.3.0=h2b96704_7 + - gcc_linux-aarch64=14.3.0=h118592a_12 + - gdk-pixbuf=2.44.4=h90308e0_0 - gf2x=1.3.0=h9af5f66_3 - gfan=0.6.2=h5f589ec_1003 - - gfortran=14.3.0=ha28f942_5 - - gfortran_impl_linux-aarch64=14.3.0=h8827d62_5 - - gfortran_linux-aarch64=14.3.0=hc530033_11 + - gfortran=14.3.0=ha28f942_7 + - gfortran_impl_linux-aarch64=14.3.0=h8827d62_7 + - gfortran_linux-aarch64=14.3.0=he4becf7_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h3df9001_3 + - glib-tools=2.86.0=hc87f4d4_1 - glpk=5.0=h66325d0_0 - gmp=6.3.0=h0a1ffab_2 - - gmpy2=2.1.5=py312he9d48ea_3 + - gmpy2=2.2.1=py312h35d709e_1 - graphite2=1.3.14=hfae3067_2 - - grayskull=2.9.1=pyhd8ed1ab_0 - - gsl=2.8=hac7f374_1 - - gxx=14.3.0=ha28f942_5 - - gxx_impl_linux-aarch64=14.3.0=h72695c8_5 - - gxx_linux-aarch64=14.3.0=h83defb1_11 + - graphviz=13.1.2=hdb06ba2_0 + - grayskull=2.9.1=pyhcf101f3_1 + - gsl=2.7=h294027d_0 + - gtk3=3.24.43=h4cd1324_6 + - gts=0.7.6=he293c15_4 + - gxx=14.3.0=ha28f942_7 + - gxx_impl_linux-aarch64=14.3.0=h72695c8_7 + - gxx_linux-aarch64=14.3.0=hda493e9_12 - h2=4.3.0=pyhcf101f3_0 - - harfbuzz=11.2.1=h405b6a2_0 + - harfbuzz=12.1.0=he4899c9_0 + - hicolor-icon-theme=0.17=h8af1aa0_2 + - highs=1.11.0=ha6136e2_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hf9b3779_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h1827c4d_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h15043fe_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -145,11 +170,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py312h996f985_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-aarch64=4.18.0=h05a177a_8 @@ -159,9 +186,10 @@ dependencies: - krb5=1.21.3=h50a48e9_0 - lcalc=2.1.1=h30a6b3d_0 - lcms2=2.17=hc88f144_0 - - ld_impl_linux-aarch64=2.44=h9df1782_2 + - ld_impl_linux-aarch64=2.44=hd32f0e1_4 - lerc=4.0.0=hfdc4d58_1 - - libblas=3.9.0=36_haddc8a3_openblas + - libarchive=3.8.2=gpl_hd746d8a_100 + - libblas=3.9.0=37_haddc8a3_openblas - libboost=1.85.0=h9fa81b4_4 - libboost-devel=1.85.0=h37bb5a9_4 - libboost-headers=1.85.0=h8af1aa0_4 @@ -170,65 +198,91 @@ dependencies: - libbrotlicommon=1.1.0=he30d5cf_4 - libbrotlidec=1.1.0=he30d5cf_4 - libbrotlienc=1.1.0=he30d5cf_4 - - libcblas=3.9.0=36_hd72aa62_openblas - - libcurl=8.14.1=h6702fde_0 + - libcblas=3.9.0=37_hd72aa62_openblas + - libclang-cpp21.1=21.1.4=default_he95a3c9_0 + - libclang13=21.1.4=default_h94a09a5_0 + - libcups=2.3.3=h5cdc715_5 + - libcurl=8.16.0=h7bfdcfb_0 - libdeflate=1.24=he377734_0 + - libdrm=2.4.125=he30d5cf_1 - libedit=3.1.20250104=pl5321h976ea20_0 + - libegl=1.7.0=hd24410f_2 + - libegl-devel=1.7.0=hd24410f_2 - libev=4.33=h31becfc_2 - libexpat=2.7.1=hfae3067_0 - - libffi=3.4.6=he21f813_1 + - libffi=3.5.2=hd65408f_0 - libflint=3.2.2=hd878b8d_0 - libfreetype=2.14.1=h8af1aa0_0 - libfreetype6=2.14.1=hdae7a39_0 - - libgcc=15.1.0=he277a41_5 - - libgcc-devel_linux-aarch64=14.3.0=h370b906_105 - - libgcc-ng=15.1.0=he9431aa_5 + - libgcc=15.2.0=he277a41_7 + - libgcc-devel_linux-aarch64=14.3.0=h370b906_107 + - libgcc-ng=15.2.0=he9431aa_7 - libgd=2.3.3=hc8d7b1d_11 - - libgfortran=15.1.0=he9431aa_5 - - libgfortran-ng=15.1.0=he9431aa_5 - - libgfortran5=15.1.0=hbc25352_5 - - libglib=2.84.1=hc486b8e_0 - - libgomp=15.1.0=he277a41_5 + - libgfortran=15.2.0=he9431aa_7 + - libgfortran-ng=15.2.0=he9431aa_7 + - libgfortran5=15.2.0=h87db57e_7 + - libgl=1.7.0=hd24410f_2 + - libgl-devel=1.7.0=hd24410f_2 + - libglib=2.86.0=he84ff74_1 + - libglvnd=1.7.0=hd24410f_2 + - libglx=1.7.0=hd24410f_2 + - libglx-devel=1.7.0=hd24410f_2 + - libgomp=15.2.0=he277a41_7 - libhomfly=1.03=he30d5cf_0 - libiconv=1.18=h90929bb_2 - libjpeg-turbo=3.1.0=h86ecc28_0 - - liblapack=3.9.0=36_h88aeb00_openblas - - liblapacke=3.9.0=36_hb558247_openblas + - liblapack=3.9.0=37_h88aeb00_openblas + - liblapacke=3.9.0=37_hb558247_openblas + - libllvm21=21.1.4=hfd2ba90_0 - liblzma=5.8.1=h86ecc28_2 - liblzma-devel=5.8.1=h86ecc28_2 + - libmamba=2.3.3=hdcf0ffa_2 + - libmambapy=2.3.3=py312h208ee69_2 - libnghttp2=1.67.0=ha888d0e_0 - libnsl=2.0.1=h86ecc28_1 + - libntlm=1.4=hf897c2e_1002 - libopenblas=0.3.30=pthreads_h9d3fd7e_2 + - libopengl=1.7.0=hd24410f_2 + - libpciaccess=0.18=h86ecc28_0 - libpng=1.6.50=h1abf092_1 - - libsanitizer=14.3.0=h48d3638_5 + - libpq=18.0=hb4b1422_0 + - librsvg=2.60.0=h8171147_0 + - libsanitizer=14.3.0=h48d3638_7 - libsodium=1.0.20=h68df207_0 + - libsolv=0.7.35=hdda61c4_0 - libsqlite=3.50.4=h022381a_0 - libssh2=1.11.1=h18c354c_0 - - libstdcxx=15.1.0=h3f4de04_5 - - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_105 - - libstdcxx-ng=15.1.0=hf1166c9_5 + - libstdcxx=15.2.0=h3f4de04_7 + - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_107 + - libstdcxx-ng=15.2.0=hf1166c9_7 - libtiff=4.7.1=h7a57436_0 - libuuid=2.41.2=h3e4203c_0 + - libvulkan-loader=1.4.328.1=h8b8848b_0 - libwebp-base=1.6.0=ha2e29f5_0 - libxcb=1.17.0=h262b8f6_0 - libxcrypt=4.4.36=h31becfc_1 - - libxml2=2.15.0=h788dabe_1 - - libxml2-16=2.15.0=h8591a01_1 - - libxml2-devel=2.15.0=h788dabe_1 + - libxkbcommon=1.12.2=h3c6a4c8_0 + - libxml2=2.15.1=h788dabe_0 + - libxml2-16=2.15.1=h8591a01_0 + - libxml2-devel=2.15.1=h788dabe_0 + - libxslt=1.1.43=h6700d25_1 - libzlib=1.3.1=h86ecc28_2 - linbox=1.7.1=h119cb06_0 - lrcalc=2.1=hfae3067_8 + - lz4-c=1.10.0=h5ad3122_1 + - lzo=2.10=h80f16a2_1002 - m4=1.4.20=h86ecc28_0 - m4ri=20250128=hd9db0c5_0 - m4rie=20250128=hd9db0c5_0 - make=4.4.1=h2a6d0cb_2 - markupsafe=3.0.3=py312hd077ced_0 - - matplotlib=3.9.1=py312h8025657_1 - - matplotlib-base=3.9.1=py312h97afc53_2 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py312h8025657_0 + - matplotlib-base=3.10.7=py312h9d0c5ba_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h043f013_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py312hb2c0f52_1 + - memory-allocator=0.1.3=py312hcd1a082_2 + - menuinst=2.4.1=py312h996f985_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -237,35 +291,37 @@ dependencies: - mpfi=1.5.4=h846f343_1001 - mpfr=4.2.1=h2305555_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py312h4f740d2_1 + - msgpack-python=1.1.2=py312h4f740d2_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=he30d5cf_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=ha32ae93_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=hdc560ac_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0d7519b_1 - - numpy=2.3.3=py312h6615c27_0 + - numpy=2.3.4=py312h6615c27_0 - openblas=0.3.30=pthreads_h3a8cbd8_2 - openjpeg=2.5.4=h5da879a_0 + - openldap=2.6.10=h30c48ee_0 - openssl=3.5.4=h8e36d6e_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=he30d5cf_0 - - pandoc=3.8.1=h8af1aa0_0 + - pandoc=3.8.2.1=h8af1aa0_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - - pango=1.56.3=h1e6a6fd_1 + - pango=1.56.4=he55ef5b_0 - pari=2.17.2=h45cace7_5_pthread - pari-elldata=0.0.20161017=0 - pari-galdata=0.0.20180411=0 - pari-seadata=0.0.20090618=0 - pari-seadata-small=0.0.20090618=0 - parso=0.8.5=pyhcf101f3_0 - - pcre2=10.44=hf4ec17f_2 + - pcre2=10.46=h15761aa_0 - perl=5.32.1=7_h31becfc_perl5 - pexpect=4.9.0=pyhd8ed1ab_1 - pickleshare=0.7.5=pyhd8ed1ab_1004 @@ -275,8 +331,8 @@ dependencies: - pkg-config=0.29.2=hce167ba_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=he30d5cf_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=he30d5cf_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h984aac9_1006 - pplpy=0.8.9=py312h372cae2_2 @@ -285,31 +341,34 @@ dependencies: - primesieve=12.8=h5ad3122_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py312hcd1a082_0 + - psutil=7.1.1=py312hcd1a082_0 - pthread-stubs=0.4=h86ecc28_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py312hcd1a082_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py312h1c19210_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py312h5eb8f6c_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py312hdab6b20_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py312hcd1a082_0 - pyparsing=3.2.5=pyhcf101f3_0 - pyproject-metadata=0.9.1=pyhd8ed1ab_0 - pyproject_hooks=1.2.0=pyhd8ed1ab_1 + - pyside6=6.9.3=py312h4810df5_1 - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.12.11=h1683364_0_cpython + - python=3.12.12=h91f4b29_1_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 + - python-gil=3.12.12=hd8ed1ab_1 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py312h1ab2c47_8 - python-symengine=0.14.0=py312h70ee296_1 @@ -320,21 +379,24 @@ dependencies: - pyzmq=27.1.0=py312h4552c38_0 - qd=2.3.22=h05efe27_1004 - qhull=2020.2=h70be974_5 - - r-base=4.2.3=h6952844_18 - - r-lattice=0.22_6=r42h25e906a_0 + - qt6-main=6.9.3=h224e339_1 + - r-base=4.4.3=h63885c9_4 + - r-lattice=0.22_7=r44h0557e7b_1 - rapidfuzz=3.14.1=py312h1ab2c47_0 - readline=8.2=h8382b9d_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h86ecc28_0 + - reproc-cpp=14.2.5.post0=h5ad3122_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312h75d7d99_1 - - rpy2=3.5.11=py312r42h3e17d05_3 - - ruamel.yaml=0.18.15=py312hcd1a082_1 - - ruamel.yaml.clib=0.2.12=py312hcd1a082_1 + - rpds-py=0.28.0=py312h75d7d99_1 + - rpy2=3.6.4=py312r44h8fac79a_1 + - ruamel.yaml=0.18.16=py312hcd1a082_0 + - ruamel.yaml.clib=0.2.14=py312hcd1a082_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h46ed904_0 + - ruff=0.14.2=h46ed904_0 - rw=0.9=h31becfc_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -345,7 +407,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - - simplegeneric=0.8.1=pyhd8ed1ab_2 + - simdjson=4.0.7=hfefdfc9_0 - singular=4.4.1=hfdb71ee_1 - sirocco=2.1.0=h7fa4f89_1 - six=1.17.0=pyhe01879c_1 @@ -364,7 +426,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=he8854b5_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h7a35ef0_1 - symmetrica=3.1.0=he30d5cf_0 - sympow=2.023.6=h4d450c3_4 @@ -375,13 +437,14 @@ dependencies: - tk=8.6.13=noxft_h5688188_102 - tktable=2.10=h89546af_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py312hefbd42c_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -389,25 +452,44 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py312hcd1a082_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h0157bdf_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h0157bdf_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=h4f8a99f_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py312hcd1a082_1 + - xcb-util=0.4.1=hca56bd8_2 + - xcb-util-cursor=0.1.5=h86ecc28_0 + - xcb-util-image=0.4.0=h5c728e9_2 + - xcb-util-keysyms=0.4.1=h5c728e9_0 + - xcb-util-renderutil=0.3.10=h5c728e9_0 + - xcb-util-wm=0.4.2=h5c728e9_0 + - xkeyboard-config=2.46=he30d5cf_0 - xorg-libice=1.1.2=h86ecc28_0 - xorg-libsm=1.2.6=h0808dbd_0 - xorg-libx11=1.8.12=hca56bd8_0 - xorg-libxau=1.0.12=h86ecc28_0 + - xorg-libxcomposite=0.4.6=h86ecc28_2 + - xorg-libxcursor=1.2.3=h86ecc28_0 + - xorg-libxdamage=1.1.6=h86ecc28_0 - xorg-libxdmcp=1.1.5=h57736b2_0 - xorg-libxext=1.3.6=h57736b2_0 + - xorg-libxfixes=6.0.2=he30d5cf_0 + - xorg-libxi=1.8.2=h57736b2_0 + - xorg-libxinerama=1.1.5=h5ad3122_1 + - xorg-libxrandr=1.5.4=h86ecc28_0 - xorg-libxrender=0.9.12=h86ecc28_0 - xorg-libxt=1.3.1=h57736b2_0 + - xorg-libxtst=1.2.5=h57736b2_3 + - xorg-libxxf86vm=1.1.6=h86ecc28_0 + - xorg-xorgproto=2024.1=h86ecc28_1 - xz=5.8.1=h2dbfc1b_2 - xz-gpl-tools=5.8.1=h2dbfc1b_2 - xz-tools=5.8.1=h86ecc28_2 - yaml=0.2.5=h80f16a2_3 + - yaml-cpp=0.8.0=h5ad3122_0 - zeromq=4.3.5=hefbcea8_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h86ecc28_2 diff --git a/environment-3.12-linux.yml b/environment-3.12-linux.yml index 4880632e58a..d99500bca9b 100644 --- a/environment-3.12-linux.yml +++ b/environment-3.12-linux.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: linux-64 -# input_hash: cd73f2bbd15303fb58185dccde09fc5ee37a2c41b41afd395bb8aae1f39fa22c +# input_hash: 18adbf810120d0c60073e4ce01f8a7b4b91e43bb396d45685981bf16d61b3ec7 channels: - conda-forge @@ -11,13 +11,18 @@ dependencies: - _openmp_mutex=4.5=2_gnu - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - alsa-lib=1.2.14=hb9d3cd8_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hf03ea27_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h0630a04_3 + - at-spi2-core=2.40.3=h0630a04_0 + - atk-1.0=2.38.0=h04ea711_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbb4ee43_1 - automake=1.17=pl5321ha770c72_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -25,11 +30,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5888daf_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=h4852527_2 - - binutils_impl_linux-64=2.44=hdf8817f_2 - - binutils_linux-64=2.44=h4852527_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h1ea3ea9_openblas + - binutils=2.44=h4852527_4 + - binutils_impl_linux-64=2.44=h9d8b0ac_4 + - binutils_linux-64=2.44=h4852527_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h1ea3ea9_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h00ab1b0_1 @@ -48,50 +53,59 @@ dependencies: - cairo=1.18.4=h3394656_0 - cddlib=1!0.94m=h9202a9a_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312h35888ee_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py312h460c074_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hb03c661_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=hb991d5c_5 + - conda=25.9.1=py312h7900ff3_0 + - conda-gcc-specs=14.3.0=hb991d5c_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py312hd9148b4_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py312h8a5da7c_0 - - cpython=3.12.11=py312hd8ed1ab_0 + - coverage=7.11.0=py312h8a5da7c_0 + - cpp-expected=1.3.1=h171cf75_0 + - cpython=3.12.12=py312hd8ed1ab_1 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py312hee9fe19_0 - - curl=8.14.1=h332b0f4_0 + - cryptography=46.0.3=py312hee9fe19_0 + - curl=8.16.0=h4e3cde8_0 - cxx-compiler=1.11.0=hfcd1e18_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py312hb7bab4f_0 - cyrus-sasl=2.1.28=hd9c7081_0 - cysignals=1.12.5=py312h1289d80_0 - - cython=3.1.4=py312h7c45ced_2 + - cython=3.1.6=py312h68e6be4_0 - dbus=1.16.2=h3c4dab8_0 - debugpy=1.8.17=py312h8285ef7_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=h5888daf_0 - dulwich=0.22.8=py312h12e396e_0 - ecl=24.5.10=h75482ee_1 - eclib=20250627=hd0dfdeb_0 - ecm=7.0.6=h90cbb55_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hb03c661_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hecca717_0 - fflas-ffpack=2.5.0=h4f9960b_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h2b0788b_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -105,42 +119,50 @@ dependencies: - fpylll=0.6.4=py312ha4ee43a_0 - freetype=2.14.1=ha770c72_0 - fribidi=1.0.16=hb03c661_0 + - frozendict=2.4.6=py312h4c3975b_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h3b03731_5 - - gap-defaults=4.14.0=ha770c72_5 - - gcc=14.3.0=h76bdaa0_5 - - gcc_impl_linux-64=14.3.0=hd9e9e21_5 - - gcc_linux-64=14.3.0=h1382650_11 + - gap-core=4.15.1=h60ec763_0 + - gap-defaults=4.15.1=ha770c72_0 + - gcc=14.3.0=h76bdaa0_7 + - gcc_impl_linux-64=14.3.0=hd9e9e21_7 + - gcc_linux-64=14.3.0=h298d278_12 + - gdk-pixbuf=2.44.4=h2b0a6b4_0 - gf2x=1.3.0=h55551d5_3 - gfan=0.6.2=hb86e20a_1003 - - gfortran=14.3.0=he448592_5 - - gfortran_impl_linux-64=14.3.0=h7db7018_5 - - gfortran_linux-64=14.3.0=h30a37f7_11 + - gfortran=14.3.0=he448592_7 + - gfortran_impl_linux-64=14.3.0=h7db7018_7 + - gfortran_linux-64=14.3.0=h961de7f_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h49654ea_3 + - glib-tools=2.86.0=hf516916_1 - glpk=5.0=h445213a_0 - gmp=6.3.0=hac33072_2 - - gmpy2=2.1.5=py312h7201bc8_3 + - gmpy2=2.2.1=py312hcaba1f9_1 - graphite2=1.3.14=hecca717_2 - - grayskull=2.9.1=pyhd8ed1ab_0 - - gsl=2.8=hbf7d49c_1 - - gxx=14.3.0=he448592_5 - - gxx_impl_linux-64=14.3.0=he663afc_5 - - gxx_linux-64=14.3.0=ha7acb78_11 + - graphviz=13.1.2=h87b6fe6_0 + - grayskull=2.9.1=pyhcf101f3_1 + - gsl=2.7=he838d99_0 + - gtk3=3.24.43=h993cebd_6 + - gts=0.7.6=h977cf35_4 + - gxx=14.3.0=he448592_7 + - gxx_impl_linux-64=14.3.0=he663afc_7 + - gxx_linux-64=14.3.0=h95f728e_12 - h2=4.3.0=pyhcf101f3_0 - - harfbuzz=11.4.5=h15599e2_0 + - harfbuzz=12.1.0=h15599e2_0 + - hicolor-icon-theme=0.17=ha770c72_2 + - highs=1.11.0=h7aa8ee6_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he02047a_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=0.10.16=h98b0679_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=hfe3e89f_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h623f65a_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -150,11 +172,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py312h7900ff3_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-64=4.18.0=he073ed8_8 @@ -164,9 +188,10 @@ dependencies: - krb5=1.21.3=h659f571_0 - lcalc=2.1.1=h9cf73fc_0 - lcms2=2.17=h717163a_0 - - ld_impl_linux-64=2.44=ha97dd6f_2 + - ld_impl_linux-64=2.44=h1aa0949_4 - lerc=4.0.0=h0aef613_1 - - libblas=3.9.0=36_h4a7cf45_openblas + - libarchive=3.8.2=gpl_h7be2006_100 + - libblas=3.9.0=37_h4a7cf45_openblas - libboost=1.85.0=h0ccab89_4 - libboost-devel=1.85.0=h00ab1b0_4 - libboost-headers=1.85.0=ha770c72_4 @@ -175,42 +200,46 @@ dependencies: - libbrotlicommon=1.1.0=hb03c661_4 - libbrotlidec=1.1.0=hb03c661_4 - libbrotlienc=1.1.0=hb03c661_4 - - libcblas=3.9.0=36_h0358290_openblas - - libclang-cpp20.1=20.1.8=default_h99862b1_4 - - libclang13=21.1.0=default_h746c552_1 + - libcblas=3.9.0=37_h0358290_openblas + - libclang-cpp21.1=21.1.4=default_h99862b1_0 + - libclang13=21.1.4=default_h746c552_0 - libcups=2.3.3=hb8b1518_5 - - libcurl=8.14.1=h332b0f4_0 + - libcurl=8.16.0=h4e3cde8_0 - libdeflate=1.24=h86f0d12_0 - libdrm=2.4.125=hb03c661_1 - libedit=3.1.20250104=pl5321h7949ede_0 - libegl=1.7.0=ha4b6fd6_2 + - libegl-devel=1.7.0=ha4b6fd6_2 - libev=4.33=hd590300_2 - libexpat=2.7.1=hecca717_0 - - libffi=3.4.6=h2dba641_1 + - libffi=3.5.2=h9ec8514_0 - libflint=3.2.2=h754cb6e_0 - libfreetype=2.14.1=ha770c72_0 - libfreetype6=2.14.1=h73754d4_0 - - libgcc=15.1.0=h767d61c_5 - - libgcc-devel_linux-64=14.3.0=h85bb3a7_105 - - libgcc-ng=15.1.0=h69a702a_5 + - libgcc=15.2.0=h767d61c_7 + - libgcc-devel_linux-64=14.3.0=h85bb3a7_107 + - libgcc-ng=15.2.0=h69a702a_7 - libgd=2.3.3=h6f5c62b_11 - - libgfortran=15.1.0=h69a702a_5 - - libgfortran-ng=15.1.0=h69a702a_5 - - libgfortran5=15.1.0=hcea5267_5 + - libgfortran=15.2.0=h69a702a_7 + - libgfortran-ng=15.2.0=h69a702a_7 + - libgfortran5=15.2.0=hcd61629_7 - libgl=1.7.0=ha4b6fd6_2 - - libglib=2.84.3=hf39c6af_0 + - libgl-devel=1.7.0=ha4b6fd6_2 + - libglib=2.86.0=h32235b2_1 - libglvnd=1.7.0=ha4b6fd6_2 - libglx=1.7.0=ha4b6fd6_2 - - libgomp=15.1.0=h767d61c_5 + - libglx-devel=1.7.0=ha4b6fd6_2 + - libgomp=15.2.0=h767d61c_7 - libhomfly=1.03=hb03c661_0 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=36_h47877c9_openblas - - liblapacke=3.9.0=36_h6ae95b6_openblas - - libllvm20=20.1.8=hecd9e04_0 - - libllvm21=21.1.0=hecd9e04_0 + - liblapack=3.9.0=37_h47877c9_openblas + - liblapacke=3.9.0=37_h6ae95b6_openblas + - libllvm21=21.1.4=hf7376ad_0 - liblzma=5.8.1=hb9d3cd8_2 - liblzma-devel=5.8.1=hb9d3cd8_2 + - libmamba=2.3.3=h09abcb8_1 + - libmambapy=2.3.3=py312h9b917ee_1 - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libntlm=1.8=hb9d3cd8_0 @@ -218,37 +247,45 @@ dependencies: - libopengl=1.7.0=ha4b6fd6_2 - libpciaccess=0.18=hb9d3cd8_0 - libpng=1.6.50=h421ea60_1 - - libpq=17.6=h3675c94_2 - - libsanitizer=14.3.0=hd08acf3_5 + - libpq=18.0=h3675c94_0 + - librsvg=2.60.0=h61e6d4b_0 + - libsanitizer=14.3.0=hd08acf3_7 - libsodium=1.0.20=h4ab18f5_0 + - libsolv=0.7.35=h9463b59_0 - libsqlite=3.50.4=h0c1763c_0 - libssh2=1.11.1=hcf80075_0 - - libstdcxx=15.1.0=h8f9b012_5 - - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_105 - - libstdcxx-ng=15.1.0=h4852527_5 + - libstdcxx=15.2.0=h8f9b012_7 + - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_107 + - libstdcxx-ng=15.2.0=h4852527_7 - libtiff=4.7.1=h8261f1e_0 - libuuid=2.41.2=he9a06e4_0 + - libvulkan-loader=1.4.328.1=h5279c79_0 - libwebp-base=1.6.0=hd42ef1d_0 - libxcb=1.17.0=h8a09558_0 - libxcrypt=4.4.36=hd590300_1 - - libxkbcommon=1.11.0=he8b52b9_0 - - libxml2=2.13.8=h04c0eec_1 - - libxslt=1.1.43=h7a3aeb2_0 + - libxkbcommon=1.12.2=hca5e8e5_0 + - libxml2=2.15.1=h26afc86_0 + - libxml2-16=2.15.1=ha9997c6_0 + - libxml2-devel=2.15.1=h26afc86_0 + - libxslt=1.1.43=h711ed8c_1 - libzlib=1.3.1=hb9d3cd8_2 - linbox=1.7.1=he8fce6e_0 - lrcalc=2.1=h5888daf_7 - lrslib=71.b=h8aaf9c6_1 + - lz4-c=1.10.0=h5888daf_1 + - lzo=2.10=h280c20c_1002 - m4=1.4.20=hb9d3cd8_0 - m4ri=20250128=h36e74d4_0 - m4rie=20250128=h36e74d4_0 - make=4.4.1=hb9d3cd8_2 - markupsafe=3.0.3=py312h8a5da7c_0 - - matplotlib=3.10.6=py312h7900ff3_1 - - matplotlib-base=3.10.6=py312he3d6523_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py312h7900ff3_0 + - matplotlib-base=3.10.7=py312he3d6523_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h75482ee_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py312h66e93f0_1 + - memory-allocator=0.1.3=py312h4c3975b_2 + - menuinst=2.4.1=py312h7900ff3_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -257,27 +294,28 @@ dependencies: - mpfi=1.5.4=h9f54685_1001 - mpfr=4.2.1=h90cbb55_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py312hd9148b4_1 + - msgpack-python=1.1.2=py312hd9148b4_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hb03c661_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h2d0b736_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h171cf75_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hef3c4d3_1 - - numpy=2.3.3=py312h33ff503_0 + - numpy=2.3.4=py312h33ff503_0 - openblas=0.3.30=pthreads_h6ec200e_2 - openjpeg=2.5.4=h55fea9a_0 - openldap=2.6.10=he970967_0 - openssl=3.5.4=h26f9b46_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hb03c661_0 - - pandoc=3.8.1=ha770c72_0 + - pandoc=3.8.2.1=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=hadf4263_0 - pari=2.17.2=ha40142e_5_pthread @@ -286,7 +324,7 @@ dependencies: - pari-seadata=0.0.20090618=0 - pari-seadata-small=0.0.20090618=0 - parso=0.8.5=pyhcf101f3_0 - - pcre2=10.45=hc749103_0 + - pcre2=10.46=h1321c63_0 - perl=5.32.1=7_hd590300_perl5 - pexpect=4.9.0=pyhd8ed1ab_1 - pickleshare=0.7.5=pyhd8ed1ab_1004 @@ -296,8 +334,8 @@ dependencies: - pkg-config=0.29.2=h4bc722e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hb03c661_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hb03c661_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h6ec01c2_1006 - pplpy=0.8.9=py312h7383a07_2 @@ -306,32 +344,34 @@ dependencies: - primesieve=12.8=h5888daf_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py312h4c3975b_0 + - psutil=7.1.1=py312h4c3975b_0 - pthread-stubs=0.4=hb9d3cd8_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py312h4c3975b_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py312h680f630_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py312h868fb18_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py312hdfa1987_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py312h4c3975b_0 - pyparsing=3.2.5=pyhcf101f3_0 - pyproject-metadata=0.9.1=pyhd8ed1ab_0 - pyproject_hooks=1.2.0=pyhd8ed1ab_1 - - pyside6=6.9.2=py312h5654102_1 + - pyside6=6.9.3=py312h9da60e5_1 - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.12.11=h9e4cc4f_0_cpython + - python=3.12.12=hd63d673_1_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 + - python-gil=3.12.12=hd8ed1ab_1 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py312h2ec8cdc_7 - python-symengine=0.14.0=py312h406a2a9_1 @@ -342,22 +382,24 @@ dependencies: - pyzmq=27.1.0=py312hfb55c3c_0 - qd=2.3.22=h2cc385e_1004 - qhull=2020.2=h434a139_5 - - qt6-main=6.9.2=h3fc9a0a_0 - - r-base=4.2.3=h2d83a99_19 - - r-lattice=0.22_6=r42h57805ef_0 + - qt6-main=6.9.3=h5c1c036_1 + - r-base=4.4.3=h14df4e6_4 + - r-lattice=0.22_7=r44h54b55ab_1 - rapidfuzz=3.14.1=py312h1289d80_0 - readline=8.2=h8c095d6_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=hb9d3cd8_0 + - reproc-cpp=14.2.5.post0=h5888daf_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312h868fb18_1 - - rpy2=3.5.11=py312r42hc7c0aa3_3 - - ruamel.yaml=0.18.15=py312h4c3975b_1 - - ruamel.yaml.clib=0.2.12=py312h4c3975b_1 + - rpds-py=0.28.0=py312h868fb18_1 + - rpy2=3.6.4=py312r44h5afe730_1 + - ruamel.yaml=0.18.16=py312h4c3975b_0 + - ruamel.yaml.clib=0.2.14=py312h4c3975b_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=ha3a3aed_0 + - ruff=0.14.2=ha3a3aed_0 - rw=0.9=hd590300_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -368,7 +410,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - - simplegeneric=0.8.1=pyhd8ed1ab_2 + - simdjson=4.0.7=hb700be7_0 - singular=4.4.1=h7ee4ccf_1 - sirocco=2.1.0=hd7ee782_1 - six=1.17.0=pyhe01879c_1 @@ -387,7 +429,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hbc0de68_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h064106a_1 - symmetrica=3.1.0=hb03c661_0 - sympow=2.023.6=h3028977_4 @@ -398,13 +440,14 @@ dependencies: - tk=8.6.13=noxft_hd72426e_102 - tktable=2.10=h8d826fa_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py312h4c3975b_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -412,9 +455,9 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py312h4c3975b_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h30787bc_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - wayland=1.24.0=h3e06ad9_0 + - uv=0.9.5=h30787bc_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=hd6090a7_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 @@ -438,15 +481,18 @@ dependencies: - xorg-libxext=1.3.6=hb9d3cd8_0 - xorg-libxfixes=6.0.2=hb03c661_0 - xorg-libxi=1.8.2=hb9d3cd8_0 + - xorg-libxinerama=1.1.5=h5888daf_1 - xorg-libxrandr=1.5.4=hb9d3cd8_0 - xorg-libxrender=0.9.12=hb9d3cd8_0 - xorg-libxt=1.3.1=hb9d3cd8_0 - xorg-libxtst=1.2.5=hb9d3cd8_3 - xorg-libxxf86vm=1.1.6=hb9d3cd8_0 + - xorg-xorgproto=2024.1=hb9d3cd8_1 - xz=5.8.1=hbcc6ac9_2 - xz-gpl-tools=5.8.1=hbcc6ac9_2 - xz-tools=5.8.1=hb9d3cd8_2 - yaml=0.2.5=h280c20c_3 + - yaml-cpp=0.8.0=h3f2d84a_0 - zeromq=4.3.5=h387f397_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hb9d3cd8_2 diff --git a/environment-3.12-macos-x86_64.yml b/environment-3.12-macos-x86_64.yml index d420132eba5..2e0ececf8c3 100644 --- a/environment-3.12-macos-x86_64.yml +++ b/environment-3.12-macos-x86_64.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: osx-64 -# input_hash: d9c49af23eba1ef91677d7e66f8364f7317fe389f209d27e21b161a16c442ae2 +# input_hash: b76ca3339012ad5e255053307839369ae9bb4d62ddd0ad9aab78f978d0919423 channels: - conda-forge @@ -9,13 +9,16 @@ dependencies: - 4ti2=1.6.13=he407a3c_0 - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hdfe9103_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=h4bec284_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321had7229c_1 - automake=1.17=pl5321h694c41f_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -23,8 +26,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h240833e_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_hbf4f893_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_hbf4f893_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h7728843_1 @@ -41,12 +44,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h950ec3b_0 - - cctools=1024.3=h67a6458_4 - - cctools_osx-64=1024.3=h3b512aa_4 + - cctools=1024.3=h67a6458_5 + - cctools_osx-64=1024.3=llvm19_1_h3b512aa_5 - cddlib=1!0.94m=h0f52abe_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312hf9bc6d9_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py312he90777b_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_h1323312_5 - clang-19=19.1.7=default_hc369343_5 - clang_impl_osx-64=19.1.7=hc73cdc9_25 @@ -54,46 +57,55 @@ dependencies: - clangxx=19.1.7=default_h1c12a56_5 - clangxx_impl_osx-64=19.1.7=hb295874_25 - clangxx_osx-64=19.1.7=h7e5c614_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=h8616949_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=he914875_1 - compiler-rt_osx-64=19.1.7=h138dee1_1 + - conda=25.9.1=py312hb401068_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py312hedd4973_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py312hacf3034_0 - - cpython=3.12.11=py312hd8ed1ab_0 + - coverage=7.11.0=py312hacf3034_0 + - cpp-expected=1.3.1=h0ba0a54_0 + - cpython=3.12.12=py312hd8ed1ab_1 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py312hb922d34_0 - - curl=8.14.1=h5dec5d8_0 + - cryptography=46.0.3=py312hb922d34_0 + - curl=8.16.0=h7dd4100_0 - cxx-compiler=1.11.0=h307afc9_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py312hcedb801_0 - cysignals=1.12.4=py312h462f358_0 - - cython=3.1.4=py312hfbda96f_2 + - cython=3.1.6=py312h33b39b6_0 - debugpy=1.8.17=py312hbfd3414_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py312h0d0de52_0 - ecl=24.5.10=ha6bf567_1 - eclib=20250627=h28d223a_0 - ecm=7.0.6=h5625669_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=h8616949_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=h21dd04a_0 - fflas-ffpack=2.5.0=h5898d61_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h7a3a4f9_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -107,36 +119,44 @@ dependencies: - fpylll=0.6.4=py312hfffdf69_0 - freetype=2.14.1=h694c41f_0 - fribidi=1.0.16=h8616949_0 + - frozendict=2.4.6=py312h2f459f6_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=hb9686a1_5 - - gap-defaults=4.14.0=h694c41f_5 + - gap-core=4.15.1=h94a3ca4_0 + - gap-defaults=4.15.1=h694c41f_0 + - gdk-pixbuf=2.44.4=h07555a4_0 - gf2x=1.3.0=h35ac7d9_3 - gfan=0.6.2=hd793b56_1003 - gfortran=14.3.0=hcc3c99d_0 - - gfortran_impl_osx-64=14.3.0=he320259_1 + - gfortran_impl_osx-64=14.3.0=h94fe04d_1 - gfortran_osx-64=14.3.0=h3223c34_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=hbf3f340_3 + - glib-tools=2.86.0=h8650975_1 - glpk=5.0=h3cb5acd_0 - gmp=6.3.0=hf036a51_2 - - gmpy2=2.1.5=py312h068713c_3 + - gmpy2=2.2.1=py312he31a90d_1 - graphite2=1.3.14=h21dd04a_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=h42bfd48_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h93259b0_0 + - gtk3=3.24.43=h5e629aa_6 + - gts=0.7.6=h53e17e3_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=hc5d3ef4_0 + - hicolor-icon-theme=0.17=h694c41f_2 + - highs=1.11.0=h46ed394_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=h120a0e1_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=1.0.0=h88b1ca6_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=h88b1ca6_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h61918c1_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -146,11 +166,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py312hb401068_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -158,11 +180,12 @@ dependencies: - krb5=1.21.3=h37d8d59_0 - lcalc=2.1.1=h0f747f7_0 - lcms2=2.17=h72f5680_0 - - ld64=955.13=hc3792c1_4 - - ld64_osx-64=955.13=h466f870_4 + - ld64=955.13=hc3792c1_5 + - ld64_osx-64=955.13=llvm19_1_h466f870_5 - lerc=4.0.0=hcca01a6_1 + - libarchive=3.8.2=gpl_h889603c_100 - libasprintf=0.25.1=h3184127_1 - - libblas=3.9.0=36_he492b99_openblas + - libblas=3.9.0=37_he492b99_openblas - libboost=1.85.0=hcca3243_4 - libboost-devel=1.85.0=h2b186f8_4 - libboost-headers=1.85.0=h694c41f_4 @@ -171,64 +194,71 @@ dependencies: - libbrotlicommon=1.1.0=h1c43f85_4 - libbrotlidec=1.1.0=h1c43f85_4 - libbrotlienc=1.1.0=h1c43f85_4 - - libcblas=3.9.0=36_h9b27e0a_openblas + - libcblas=3.9.0=37_h9b27e0a_openblas - libclang-cpp19.1=19.1.7=default_hc369343_5 - - libcurl=8.14.1=h5dec5d8_0 - - libcxx=21.1.2=h3d58e20_0 + - libcurl=8.16.0=h7dd4100_0 + - libcxx=21.1.4=h3d58e20_0 - libcxx-devel=19.1.7=h7c275be_1 - libdeflate=1.24=hcc1b750_0 - libedit=3.1.20250104=pl5321ha958ccf_0 - libev=4.33=h10d778d_2 - libexpat=2.7.1=h21dd04a_0 - - libffi=3.4.6=h281671d_1 + - libffi=3.5.2=h750e83c_0 - libflint=3.2.2=h26b1ecd_0 - libfreetype=2.14.1=h694c41f_0 - libfreetype6=2.14.1=h6912278_0 - libgd=2.3.3=h8555400_11 - libgettextpo=0.25.1=h3184127_1 - - libgfortran=15.1.0=h5f6db21_1 + - libgfortran=15.2.0=h306097a_1 - libgfortran-devel_osx-64=14.3.0=h660b60f_1 - - libgfortran5=15.1.0=hfa3c126_1 - - libglib=2.86.0=h7cafd41_0 + - libgfortran5=15.2.0=h336fb69_1 + - libglib=2.86.0=h6ca3a76_1 - libhomfly=1.03=h1c43f85_0 - libiconv=1.18=h57a12c2_2 - libintl=0.25.1=h3184127_1 - libjpeg-turbo=3.1.0=h6e16a3a_0 - - liblapack=3.9.0=36_h859234e_openblas - - liblapacke=3.9.0=36_h94b3770_openblas + - liblapack=3.9.0=37_h859234e_openblas + - liblapacke=3.9.0=37_h94b3770_openblas - libllvm19=19.1.7=h56e7563_2 - liblzma=5.8.1=hd471939_2 - liblzma-devel=5.8.1=hd471939_2 + - libmamba=2.3.3=hf3f6d74_1 + - libmambapy=2.3.3=py312h1d4d8eb_1 - libnghttp2=1.67.0=h3338091_0 - libopenblas=0.3.30=openmp_h83c2472_2 - libpng=1.6.50=h84aeda2_1 + - librsvg=2.60.0=h2da6fc3_0 - libsodium=1.0.20=hfdf4475_0 + - libsolv=0.7.35=h6fd32b5_0 - libsqlite=3.50.4=h39a8b3b_0 - libssh2=1.11.1=hed3591d_0 - libtiff=4.7.1=haa3b502_0 - libwebp-base=1.6.0=hb807250_0 - libxcb=1.17.0=hf1f96e2_0 - - libxml2=2.15.0=h7b7ecba_1 - - libxml2-16=2.15.0=ha1d9b0f_1 - - libxml2-devel=2.15.0=h7b7ecba_1 + - libxml2=2.15.1=h7b7ecba_0 + - libxml2-16=2.15.1=ha1d9b0f_0 + - libxml2-devel=2.15.1=h7b7ecba_0 - libzlib=1.3.1=hd23fc13_2 - linbox=1.7.1=h1a86e0a_0 - - llvm-openmp=21.1.2=h472b3d1_3 + - llvm-openmp=21.1.4=h472b3d1_0 - llvm-tools=19.1.7=hb0207f0_2 - llvm-tools-19=19.1.7=h879f4bc_2 - lrcalc=2.1=hac325c4_7 - lrslib=71.b=hda3377a_1 + - lz4-c=1.10.0=h240833e_1 + - lzo=2.10=h4132b18_1002 - m4=1.4.20=h6e16a3a_0 - m4ri=20250128=h95e091b_0 - m4rie=20250128=h95e091b_0 - make=4.4.1=h00291cd_2 - markupsafe=3.0.3=py312hacf3034_0 - - matplotlib=3.10.6=py312hb401068_1 - - matplotlib-base=3.10.6=py312h7894933_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py312hb401068_0 + - matplotlib-base=3.10.7=py312h7894933_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h3080a4d_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py312hb553811_1 + - memory-allocator=0.1.3=py312h2f459f6_2 + - menuinst=2.4.1=py312hb401068_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -237,26 +267,27 @@ dependencies: - mpfi=1.5.4=h52b28e3_1001 - mpfr=4.2.1=haed47dc_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py312hedd4973_1 + - msgpack-python=1.1.2=py312hd099df3_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=h8616949_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h0622a9a_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h0ba0a54_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0ab3c2f_1 - - numpy=2.3.3=py312ha3982b3_0 + - numpy=2.3.4=py312ha3982b3_0 - openblas=0.3.30=openmp_h30af337_2 - openjpeg=2.5.4=h87e8dc5_0 - openssl=3.5.4=h230baf5_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=h8616949_0 - - pandoc=3.8.1=h694c41f_0 + - pandoc=3.8.2.1=h694c41f_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h6ef8af8_0 - pari=2.17.2=h1ed0f1a_5_pthread @@ -275,8 +306,8 @@ dependencies: - pkg-config=0.29.2=hf7e621a_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=h8616949_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=h8616949_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=ha60d53e_1006 - pplpy=0.8.9=py312h045e30c_2 @@ -285,18 +316,20 @@ dependencies: - primesieve=12.8=h240833e_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py312h80b0991_0 + - psutil=7.1.1=py312h80b0991_0 - pthread-stubs=0.4=h00291cd_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py312h2f459f6_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py312haba3716_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py312h8a6388b_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py312h8a3153c_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py312h80b0991_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -305,11 +338,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.12.11=h9ccd52b_0_cpython + - python=3.12.12=h74c2667_1_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 + - python-gil=3.12.12=hd8ed1ab_1 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py312h5861a67_7 - python-symengine=0.14.0=py312h33d1391_1 @@ -324,18 +357,20 @@ dependencies: - r-lattice=0.22_7=r44h735ac91_1 - rapidfuzz=3.14.1=py312h69bf00f_0 - readline=8.2=h7cca4af_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h6e16a3a_0 + - reproc-cpp=14.2.5.post0=h240833e_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312h00ff6fd_1 + - rpds-py=0.28.0=py312h8a6388b_1 - rpy2=3.6.4=py312r44h33757c0_1 - - ruamel.yaml=0.18.15=py312h80b0991_1 - - ruamel.yaml.clib=0.2.12=py312h2f459f6_1 + - ruamel.yaml=0.18.16=py312h80b0991_0 + - ruamel.yaml.clib=0.2.14=py312h80b0991_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=hba89d1c_0 - - rw=0.7=1 + - ruff=0.14.2=hba89d1c_0 + - rw=0.9=h10d778d_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -344,6 +379,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h88f4db0_0 + - simdjson=4.0.7=hcb651aa_0 - singular=4.4.1=haa275bf_1 - sirocco=2.1.0=hfc2cc1e_1 - six=1.17.0=pyhe01879c_1 @@ -362,7 +398,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=h64b5abc_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h79ccd14_1 - symmetrica=3.1.0=h8616949_0 - sympow=2.023.6=h7305399_4 @@ -373,13 +409,14 @@ dependencies: - tk=8.6.13=hf689a15_2 - tktable=2.10=h2c093e9_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py312h2f459f6_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -387,20 +424,21 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py312h2f459f6_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h66543e4_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h66543e4_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py312h2f459f6_1 - - xattr=1.2.0=py312hff0d1ab_1 + - xattr=1.3.0=py312h04b4356_0 - xorg-libxau=1.0.12=h6e16a3a_0 - xorg-libxdmcp=1.1.5=h00291cd_0 - xz=5.8.1=h357f2ed_2 - xz-gpl-tools=5.8.1=h357f2ed_2 - xz-tools=5.8.1=hd471939_2 - yaml=0.2.5=h4132b18_3 + - yaml-cpp=0.8.0=h92383a6_0 - zeromq=4.3.5=h6c33b1e_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hd23fc13_2 diff --git a/environment-3.12-macos.yml b/environment-3.12-macos.yml index 84d22c66050..9ee80195c56 100644 --- a/environment-3.12-macos.yml +++ b/environment-3.12-macos.yml @@ -1,20 +1,23 @@ name: sage-dev # Generated by conda-lock. # platform: osx-arm64 -# input_hash: 457d1ad192fc88dae132599d9f1f0a147549a959938e8c3c7e36b2415a272532 +# input_hash: e257333aa80437633273df94a74e1037761dd5c05195d896a9c682b3df09431f channels: - conda-forge dependencies: - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h1f29f7c_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=hd03087b_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hd3c70e0_1 - automake=1.17=pl5321hce30654_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -22,8 +25,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h286801f_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h11c0a38_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_h11c0a38_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2ffa867_1 @@ -40,12 +43,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h6a3b0d2_0 - - cctools=1024.3=hd01ab73_4 - - cctools_osx-arm64=1024.3=h8c76c84_4 + - cctools=1024.3=hd01ab73_5 + - cctools_osx-arm64=1024.3=llvm19_1_h8c76c84_5 - cddlib=1!0.94m=h6d7a090_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312hb65edc0_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py312h1b4d9a2_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hf9bcbb7_5 - clang-19=19.1.7=default_h73dfc95_5 - clang_impl_osx-arm64=19.1.7=h76e6a08_25 @@ -53,46 +56,55 @@ dependencies: - clangxx=19.1.7=default_h36137df_5 - clangxx_impl_osx-arm64=19.1.7=h276745f_25 - clangxx_osx-arm64=19.1.7=h07b0088_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hc919400_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h855ad52_1 - compiler-rt_osx-arm64=19.1.7=he32a8d3_1 + - conda=25.9.1=py312h81bd7bf_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py312ha0dd364_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py312h5748b74_0 - - cpython=3.12.11=py312hd8ed1ab_0 + - coverage=7.11.0=py312h5748b74_0 + - cpp-expected=1.3.1=h4f10f1e_0 + - cpython=3.12.12=py312hd8ed1ab_1 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py312h05a80bc_0 - - curl=8.14.1=h73640d1_0 + - cryptography=46.0.3=py312h05a80bc_0 + - curl=8.16.0=hdece5d2_0 - cxx-compiler=1.11.0=h88570a1_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py312he7c0534_0 - cysignals=1.12.5=py312h455b684_0 - - cython=3.1.4=py312hd9aa7d2_2 + - cython=3.1.6=py312h6868a3c_0 - debugpy=1.8.17=py312h56d30c9_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py312hcd83bfe_0 - ecl=24.5.10=hc6c598b_1 - eclib=20250627=h6592c3b_0 - ecm=7.0.6=hdd59bce_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hc919400_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hec049ff_0 - fflas-ffpack=2.5.0=h4bc3318_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h669d743_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -106,36 +118,44 @@ dependencies: - fpylll=0.6.4=py312h03fe13c_0 - freetype=2.14.1=hce30654_0 - fribidi=1.0.16=hc919400_0 + - frozendict=2.4.6=py312h163523d_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h25f1785_5 - - gap-defaults=4.14.0=hce30654_5 + - gap-core=4.15.1=h0c23a18_0 + - gap-defaults=4.15.1=hce30654_0 + - gdk-pixbuf=2.44.4=h7542897_0 - gf2x=1.3.0=hf8f8af4_3 - gfan=0.6.2=hec08f5c_1003 - gfortran=14.3.0=h3ef1dbf_0 - - gfortran_impl_osx-arm64=14.3.0=h969232b_1 + - gfortran_impl_osx-arm64=14.3.0=h6d03799_1 - gfortran_osx-arm64=14.3.0=h3c33bd0_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h5331fe3_3 + - glib-tools=2.86.0=hb9d6e3a_1 - glpk=5.0=h6d7a090_0 - gmp=6.3.0=h7bae524_2 - - gmpy2=2.1.5=py312h524cf62_3 + - gmpy2=2.2.1=py312h711ec26_1 - graphite2=1.3.14=hec049ff_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=hcd33d8b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h6e638da_0 + - gtk3=3.24.43=h5febe37_6 + - gts=0.7.6=he42f4ea_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=haf38c7b_0 + - hicolor-icon-theme=0.17=hce30654_2 + - highs=1.11.0=ha024513_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hfee45f7_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h73cadaf_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=hd73f12c_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -145,11 +165,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py312h81bd7bf_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -157,11 +179,12 @@ dependencies: - krb5=1.21.3=h237132a_0 - lcalc=2.1.1=hdaf6845_0 - lcms2=2.17=h7eeda09_0 - - ld64=955.13=he86490a_4 - - ld64_osx-arm64=955.13=h6922315_4 + - ld64=955.13=he86490a_5 + - ld64_osx-arm64=955.13=llvm19_1_h6922315_5 - lerc=4.0.0=hd64df32_1 + - libarchive=3.8.2=gpl_h46575ef_100 - libasprintf=0.25.1=h493aca8_0 - - libblas=3.9.0=36_h51639a9_openblas + - libblas=3.9.0=37_h51639a9_openblas - libboost=1.85.0=hf763ba5_4 - libboost-devel=1.85.0=hf450f58_4 - libboost-headers=1.85.0=hce30654_4 @@ -170,63 +193,70 @@ dependencies: - libbrotlicommon=1.1.0=h6caf38d_4 - libbrotlidec=1.1.0=h6caf38d_4 - libbrotlienc=1.1.0=h6caf38d_4 - - libcblas=3.9.0=36_hb0561ab_openblas + - libcblas=3.9.0=37_hb0561ab_openblas - libclang-cpp19.1=19.1.7=default_h73dfc95_5 - - libcurl=8.14.1=h73640d1_0 - - libcxx=21.1.2=hf598326_0 + - libcurl=8.16.0=hdece5d2_0 + - libcxx=21.1.4=hf598326_0 - libcxx-devel=19.1.7=h6dc3340_1 - libdeflate=1.24=h5773f1b_0 - libedit=3.1.20250104=pl5321hafb1f1b_0 - libev=4.33=h93a5062_2 - libexpat=2.7.1=hec049ff_0 - - libffi=3.4.6=h1da3d7d_1 + - libffi=3.5.2=he5f378a_0 - libflint=3.2.2=hf825d4a_0 - libfreetype=2.14.1=hce30654_0 - libfreetype6=2.14.1=h6da58f4_0 - libgd=2.3.3=hb2c3a21_11 - libgettextpo=0.25.1=h493aca8_0 - - libgfortran=15.1.0=hfdf1602_1 + - libgfortran=15.2.0=hfcf01ff_1 - libgfortran-devel_osx-arm64=14.3.0=hc965647_1 - - libgfortran5=15.1.0=hb74de2c_1 - - libglib=2.86.0=h1bb475b_0 + - libgfortran5=15.2.0=h742603c_1 + - libglib=2.86.0=he69a767_1 - libhomfly=1.03=h6caf38d_0 - libiconv=1.18=h23cfdf5_2 - libintl=0.25.1=h493aca8_0 - libjpeg-turbo=3.1.0=h5505292_0 - - liblapack=3.9.0=36_hd9741b5_openblas - - liblapacke=3.9.0=36_h1b118fd_openblas + - liblapack=3.9.0=37_hd9741b5_openblas + - liblapacke=3.9.0=37_h1b118fd_openblas - libllvm19=19.1.7=h8e0c9ce_2 - liblzma=5.8.1=h39f12f2_2 - liblzma-devel=5.8.1=h39f12f2_2 + - libmamba=2.3.3=h1370271_2 + - libmambapy=2.3.3=py312haad32af_2 - libnghttp2=1.67.0=hc438710_0 - libopenblas=0.3.30=openmp_h60d53f8_2 - libpng=1.6.50=h280e0eb_1 + - librsvg=2.60.0=h5c55ec3_0 - libsodium=1.0.20=h99b78c6_0 + - libsolv=0.7.35=h5f525b2_0 - libsqlite=3.50.4=h4237e3c_0 - libssh2=1.11.1=h1590b86_0 - libtiff=4.7.1=h7dc4979_0 - libwebp-base=1.6.0=h07db88b_0 - libxcb=1.17.0=hdb1d25a_0 - - libxml2=2.15.0=h9329255_1 - - libxml2-16=2.15.0=h0ff4647_1 - - libxml2-devel=2.15.0=h9329255_1 + - libxml2=2.15.1=h9329255_0 + - libxml2-16=2.15.1=h0ff4647_0 + - libxml2-devel=2.15.1=h9329255_0 - libzlib=1.3.1=h8359307_2 - linbox=1.7.1=h08a833a_0 - - llvm-openmp=21.1.2=h4a912ad_3 + - llvm-openmp=21.1.4=h4a912ad_0 - llvm-tools=19.1.7=h855ad52_2 - llvm-tools-19=19.1.7=h91fd4e7_2 - lrcalc=2.1=hec049ff_8 + - lz4-c=1.10.0=h286801f_1 + - lzo=2.10=h925e9cb_1002 - m4=1.4.20=h5505292_0 - m4ri=20250128=h0f65c67_0 - m4rie=20250128=h0f65c67_0 - make=4.4.1=hc9fafa5_2 - markupsafe=3.0.3=py312h5748b74_0 - - matplotlib=3.10.6=py312h1f38498_1 - - matplotlib-base=3.10.6=py312h605b88b_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py312h1f38498_0 + - matplotlib-base=3.10.7=py312h605b88b_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=hd2c4bfb_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py312h024a12e_1 + - memory-allocator=0.1.3=py312h163523d_2 + - menuinst=2.4.1=py312h81bd7bf_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -235,26 +265,27 @@ dependencies: - mpfi=1.5.4=hbde5f5b_1001 - mpfr=4.2.1=hb693164_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py312ha0dd364_1 + - msgpack-python=1.1.2=py312h84eede6_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hf22a7ee_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h5e97a16_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h4f10f1e_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hbb3f309_1 - - numpy=2.3.3=py312h85ea64e_0 + - numpy=2.3.4=py312h85ea64e_0 - openblas=0.3.30=openmp_hea878ba_2 - openjpeg=2.5.4=hbfb3c88_0 - openssl=3.5.4=h5503f6c_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hc919400_0 - - pandoc=3.8.1=hce30654_0 + - pandoc=3.8.2.1=hce30654_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h875632e_0 - pari=2.17.2=h49d18c7_5_pthread @@ -273,8 +304,8 @@ dependencies: - pkg-config=0.29.2=hde07d2e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hc919400_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hc919400_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h8b147cf_1006 - pplpy=0.8.9=py312he1ec6da_2 @@ -283,18 +314,20 @@ dependencies: - primesieve=12.8=h286801f_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py312h4409184_0 + - psutil=7.1.1=py312h4409184_0 - pthread-stubs=0.4=hd74edd7_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py312h163523d_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py312hd3c0895_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py312h6ef9ec0_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py312he738534_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py312h4409184_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -303,11 +336,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.12.11=hc22306f_0_cpython + - python=3.12.12=h18782d2_1_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 + - python-gil=3.12.12=hd8ed1ab_1 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py312h6b01ec3_8 - python-symengine=0.14.0=py312hb005d12_1 @@ -322,17 +355,19 @@ dependencies: - r-lattice=0.22_7=r44h6168396_1 - rapidfuzz=3.14.1=py312h455b684_0 - readline=8.2=h1d1bf99_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h5505292_0 + - reproc-cpp=14.2.5.post0=h286801f_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312h6f58b40_1 + - rpds-py=0.28.0=py312h6ef9ec0_1 - rpy2=3.6.4=py312r44hd99f0fb_1 - - ruamel.yaml=0.18.15=py312h4409184_1 - - ruamel.yaml.clib=0.2.12=py312h163523d_1 + - ruamel.yaml=0.18.16=py312h4409184_0 + - ruamel.yaml.clib=0.2.14=py312h4409184_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h492a034_0 + - ruff=0.14.2=h492a034_0 - rw=0.9=h93a5062_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -342,6 +377,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h44b9a77_0 + - simdjson=4.0.7=ha7d2532_0 - singular=4.4.1=h837545d_1 - sirocco=2.1.0=h41f8169_1 - six=1.17.0=pyhe01879c_1 @@ -360,7 +396,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hb5dd463_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=hddbed1c_1 - symmetrica=3.1.0=hc919400_0 - sympow=2.023.6=hc13a52f_4 @@ -371,13 +407,14 @@ dependencies: - tk=8.6.13=h892fb3f_2 - tktable=2.10=h3c7de25_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py312h163523d_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -385,20 +422,21 @@ dependencies: - tzlocal=5.3.1=pyh8f84b5b_0 - unicodedata2=16.0.0=py312h163523d_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h194b5f9_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h194b5f9_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py312h163523d_1 - - xattr=1.2.0=py312h10e72bf_1 + - xattr=1.3.0=py312hdb5c506_0 - xorg-libxau=1.0.12=h5505292_0 - xorg-libxdmcp=1.1.5=hd74edd7_0 - xz=5.8.1=h9a6d368_2 - xz-gpl-tools=5.8.1=h9a6d368_2 - xz-tools=5.8.1=h39f12f2_2 - yaml=0.2.5=h925e9cb_3 + - yaml-cpp=0.8.0=ha1acc90_0 - zeromq=4.3.5=h888dc83_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h8359307_2 diff --git a/environment-3.12-win.yml b/environment-3.12-win.yml index 04551842c20..29df717382a 100644 --- a/environment-3.12-win.yml +++ b/environment-3.12-win.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: win-64 -# input_hash: 5dcbca182aa34b89ddee59e0a0c4d031df96d99c0758250b5492f45b1113f2b2 +# input_hash: cac603e6649e9896174eabea5fdc243490fa1bef4d764e28d463f29ca6fab8bf channels: - conda-forge @@ -12,15 +12,16 @@ dependencies: - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - attrs=25.4.0=pyh71513ae_0 - babel=2.17.0=pyhd8ed1ab_0 - backports=1.0=pyhd8ed1ab_5 - backports.tarfile=1.2.0=pyhd8ed1ab_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils_impl_win-64=2.44=h095e170_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_ha590de0_openblas + - binutils_impl_win-64=2.44=h1226360_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_ha590de0_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - boltons=25.0.0=pyhd8ed1ab_0 @@ -35,47 +36,55 @@ dependencies: - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h5782bbf_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py312he06e257_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py312he06e257_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hac490eb_5 - clang-19=19.1.7=default_hac490eb_5 - - click=8.3.0=pyh7428d3b_0 + - click=8.1.8=pyh7428d3b_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h49e36cd_1 - compiler-rt_win-64=19.1.7=h49e36cd_1 + - conda=25.9.1=py312h2e8e312_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyha6a9232_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py312hf90b1b7_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py312h05f76fc_0 - - cpython=3.12.11=py312hd8ed1ab_0 + - coverage=7.11.0=py312h05f76fc_0 + - cpp-expected=1.3.1=h477610d_0 + - cpython=3.12.12=py312hd8ed1ab_1 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py312h84d000f_0 - - curl=8.14.1=h88aaa65_0 + - cryptography=46.0.3=py312h84d000f_0 + - curl=8.16.0=h43ecb02_0 - cycler=0.12.1=pyhd8ed1ab_1 - cysignals=1.12.5=py312hbb81ca0_0 - - cython=3.1.4=py312h21c92d1_2 + - cython=3.1.6=py312hd245ac3_0 - debugpy=1.8.17=py312ha1a9051_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=he0c23c2_0 - dulwich=0.22.8=py312h2615798_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hac47afa_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 - flang=19.1.7=hbeecb71_0 - flang_impl_win-64=19.1.7=h719f0c7_0 - flang_win-64=19.1.7=h719f0c7_0 + - fmt=12.0.0=h29169d4_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -86,30 +95,35 @@ dependencies: - fonttools=4.60.1=py312h05f76fc_0 - fortran-compiler=1.11.0=h95e3450_0 - freetype=2.14.1=h57928b3_0 + - fribidi=1.0.16=hfd05255_0 + - frozendict=2.4.6=py312he06e257_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gcc_impl_win-64=15.1.0=hb5bc704_5 - - gfortran_impl_win-64=15.1.0=h792c6fe_5 + - gcc_impl_win-64=15.2.0=h90e0b34_7 + - getopt-win32=0.1=h6a83c73_3 + - gfortran_impl_win-64=15.2.0=hd3d1e43_7 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - glpk=5.0=h8ffe710_0 - gmp=6.3.0=hfeafd45_2 - - gmpy2=2.1.5=py312h64bf746_3 + - gmpy2=2.2.1=py312he85694f_1 - graphite2=1.3.14=hac47afa_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=ha5e8f4b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=hdfb1a43_0 - - gxx_impl_win-64=15.1.0=h91e354b_5 + - gts=0.7.6=h6b5321d_4 + - gxx_impl_win-64=15.2.0=h4517dcd_7 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=h5f2951f_0 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he0c23c2_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=1.0.0=h9eeb67d_0 - imagesize=1.4.1=pyhd8ed1ab_0 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh3521513_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh6dadd2b_0 - ipython=9.5.0=pyh6be1c34_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -118,107 +132,119 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py312h2e8e312_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh5737063_0 + - jupyter_core=5.9.1=pyh6dadd2b_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh7428d3b_0 - kiwisolver=1.4.9=py312h78d62e6_1 - krb5=1.21.3=hdf4eb48_0 - lcms2=2.17=hbcf6048_0 - - ld_impl_win-64=2.44=hae1bf67_2 + - ld_impl_win-64=2.44=h13c207b_4 - lerc=4.0.0=h6470a55_1 - - libblas=3.9.0=36_h0adab6e_openblas + - libarchive=3.8.2=gpl_h26aea39_100 + - libblas=3.9.0=37_h0adab6e_openblas - libboost=1.85.0=h444863b_4 - libboost-devel=1.85.0=h91493d7_4 - libboost-headers=1.85.0=h57928b3_4 - libbrotlicommon=1.1.0=hfd05255_4 - libbrotlidec=1.1.0=hfd05255_4 - libbrotlienc=1.1.0=hfd05255_4 - - libcblas=3.9.0=36_h2a8eebe_openblas - - libclang13=21.1.2=default_ha2db4b5_1 - - libcurl=8.14.1=h88aaa65_0 + - libcblas=3.9.0=37_h2a8eebe_openblas + - libclang13=21.1.4=default_ha2db4b5_0 + - libcurl=8.16.0=h43ecb02_0 - libdeflate=1.24=h76ddb4d_0 - libexpat=2.7.1=hac47afa_0 - - libffi=3.4.6=h537db12_1 + - libffi=3.5.2=h52bdfb6_0 - libflang=19.1.7=he0c23c2_0 - libflint=3.2.2=h4de658f_0 - libfreetype=2.14.1=h57928b3_0 - libfreetype6=2.14.1=hdbac1cb_0 - - libgcc=15.1.0=h1383e82_5 - - libgcc-devel_win-64=15.1.0=hec057c1_105 + - libgcc=15.2.0=h1383e82_7 + - libgcc-devel_win-64=15.2.0=h40631e7_107 - libgd=2.3.3=h7208af6_11 - - libgfortran=15.1.0=h719f0c7_5 - - libgfortran5=15.1.0=h997fb6f_5 - - libglib=2.86.0=h5f26cbf_0 - - libgomp=15.1.0=h1383e82_5 + - libgfortran=15.2.0=h719f0c7_7 + - libgfortran5=15.2.0=hf2bee02_7 + - libglib=2.86.0=hd9c3897_1 + - libgomp=15.2.0=h1383e82_7 - libiconv=1.18=hc1393d2_2 - libintl=0.22.5=h5728263_3 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=36_hd232482_openblas - - liblapacke=3.9.0=36_hbb0e6ff_openblas + - liblapack=3.9.0=37_hd232482_openblas + - liblapacke=3.9.0=37_hbb0e6ff_openblas - libllvm19=19.1.7=h830ff33_2 - liblzma=5.8.1=h2466b09_2 - liblzma-devel=5.8.1=h2466b09_2 + - libmamba=2.3.3=h5fbfb43_1 + - libmambapy=2.3.3=py312hc175272_1 - libopenblas=0.3.30=pthreads_ha4fe6b2_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 + - libsolv=0.7.35=h8883371_0 - libsqlite=3.50.4=hf5d6505_0 - libssh2=1.11.1=h9aa295b_0 - - libstdcxx=15.1.0=h904f734_5 - - libstdcxx-devel_win-64=15.1.0=hec057c1_105 + - libstdcxx=15.2.0=h904f734_7 + - libstdcxx-devel_win-64=15.2.0=h40631e7_107 - libtiff=4.7.1=h550210a_0 - - libvulkan-loader=1.4.313.0=h477610d_1 + - libvulkan-loader=1.4.328.1=h477610d_0 - libwebp-base=1.6.0=h4d5522a_0 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - libxcb=1.17.0=h0e4246c_0 - - libxml2=2.15.0=ha29bfb0_1 - - libxml2-16=2.15.0=h06f855e_1 - - libxml2-devel=2.15.0=ha29bfb0_1 + - libxml2=2.15.1=ha29bfb0_0 + - libxml2-16=2.15.1=h06f855e_0 + - libxml2-devel=2.15.1=ha29bfb0_0 - libxslt=1.1.43=h0fbe4c1_1 - libzlib=1.3.1=h2466b09_2 - - lld=21.1.2=hc465015_0 + - lld=21.1.4=hc465015_0 - llvm-tools=19.1.7=h752b59f_2 - - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - lz4-c=1.10.0=h2466b09_1 + - lzo=2.10=h6a83c73_1002 + - m2-conda-epoch=20250515=0_x86_64 + - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - m4ri=20250128=h26c196c_0 - markupsafe=3.0.3=py312h05f76fc_0 - - matplotlib=3.10.6=py312h2e8e312_1 - - matplotlib-base=3.10.6=py312h0ebf65c_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py312h2e8e312_0 + - matplotlib-base=3.10.7=py312h0ebf65c_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py312h4389bb4_1 + - memory-allocator=0.1.3=py312he06e257_2 + - menuinst=2.4.1=py312hbb81ca0_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 - - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 + - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mingw-w64-ucrt-x86_64-windows-default-manifest=6.4=he206cdd_7 - - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mistune=3.1.4=pyhcf101f3_0 - more-itertools=10.8.0=pyhd8ed1ab_0 - mpc=1.3.1=h72bc38f_1 - mpfr=4.2.1=hbc20e70_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py312hf90b1b7_1 + - msgpack-python=1.1.2=py312hf90b1b7_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.6.11=h2fa13f4_1 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h477610d_0 - - numpy=2.3.3=py312ha72d056_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 + - numpy=2.3.4=py312ha72d056_0 - openblas=0.3.30=pthreads_h4a7f399_2 - openjpeg=2.5.4=h24db6dd_0 - openssl=3.5.4=h725018a_0 - packaging=25.0=pyh29332c3_1 - - pandoc=3.8.1=h57928b3_0 + - pandoc=3.8.2.1=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 + - pango=1.56.4=h03d888a_0 - pari=2.17.2=h637a547_5_pthread - pari-elldata=0.0.20161017=0 - pari-galdata=0.0.20180411=0 @@ -235,24 +261,26 @@ dependencies: - pkg-config=0.29.2=h88c491f_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hfd05255_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hfd05255_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - primesieve=12.8=he0c23c2_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py312he06e257_0 + - psutil=7.1.1=py312he06e257_0 - pthread-stubs=0.4=h0e40799_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py312he06e257_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py312h8422cdd_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py312hdabe01f_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py312h7f62ece_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py312he06e257_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -262,11 +290,11 @@ dependencies: - pysocks=1.7.1=pyh09c184e_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.12.11=h3f84c4b_0_cpython + - python=3.12.12=h0159041_1_cpython - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.12.11=hd8ed1ab_0 + - python-gil=3.12.12=hd8ed1ab_1 - python-installer=0.7.0=pyhff2d567_1 - python-symengine=0.14.0=py312hda2f51c_1 - python-utils=3.9.1=pyhff2d567_1 @@ -277,20 +305,22 @@ dependencies: - pyyaml=6.0.3=py312h05f76fc_0 - pyzmq=27.1.0=py312hbb5da91_0 - qhull=2020.2=hc790b64_5 - - qt6-main=6.9.3=ha0de62e_0 + - qt6-main=6.9.3=ha0de62e_1 - r-base=4.5.1=h4076d79_3 - r-lattice=0.22_7=r45heceb674_1 - rapidfuzz=3.14.1=py312hbb81ca0_0 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h2466b09_0 + - reproc-cpp=14.2.5.post0=he0c23c2_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py312hdabe01f_1 - - ruamel.yaml=0.18.15=py312he06e257_1 - - ruamel.yaml.clib=0.2.12=py312he06e257_1 + - rpds-py=0.28.0=py312hdabe01f_1 + - ruamel.yaml=0.18.16=py312he06e257_0 + - ruamel.yaml.clib=0.2.14=py312he06e257_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h3e3edff_0 + - ruff=0.14.2=h3e3edff_0 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -298,6 +328,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 + - simdjson=4.0.7=h49e36cd_0 - six=1.17.0=pyhe01879c_1 - smmap=5.0.2=pyhd8ed1ab_0 - snowballstemmer=3.0.1=pyhd8ed1ab_0 @@ -314,7 +345,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hdb435a2_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h1ba984b_1 - symmetrica=3.1.0=h1056bf2_0 - sympy=1.14.0=pyh04b8f61_5 @@ -322,13 +353,14 @@ dependencies: - tk=8.6.13=h2c6b04d_2 - tktable=2.10=h7e9e0db_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py312he06e257_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 @@ -336,20 +368,20 @@ dependencies: - ucrt=10.0.26100.0=h57928b3_0 - unicodedata2=16.0.0=py312he06e257_1 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=ha1006f7_0 - - vc=14.3=h41ae7f8_31 - - vc14_runtime=14.44.35208=h818238b_31 - - vcomp14=14.44.35208=h818238b_31 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - vs2015_runtime=14.44.35208=h38c0c73_31 - - vs2022_win-64=19.44.35207=ha74f236_31 + - uv=0.9.5=ha1006f7_0 + - vc=14.3=h2b53caa_32 + - vc14_runtime=14.44.35208=h818238b_32 + - vcomp14=14.44.35208=h818238b_32 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - vs2015_runtime=14.44.35208=h38c0c73_32 + - vs2022_win-64=19.44.35207=ha74f236_32 - vswhere=3.1.7=h40126e0_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - wrapt=1.17.3=py312he06e257_1 - xorg-libice=1.1.2=h0e40799_0 - xorg-libsm=1.2.6=h0e40799_0 @@ -362,6 +394,7 @@ dependencies: - xz=5.8.1=h208afaa_2 - xz-tools=5.8.1=h2466b09_2 - yaml=0.2.5=h6a83c73_3 + - yaml-cpp=0.8.0=he0c23c2_0 - zeromq=4.3.5=h5bddc39_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h2466b09_2 diff --git a/environment-3.13-linux-aarch64.yml b/environment-3.13-linux-aarch64.yml index c272a20a7f4..73875756a34 100644 --- a/environment-3.13-linux-aarch64.yml +++ b/environment-3.13-linux-aarch64.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: linux-aarch64 -# input_hash: 7f478f62aacbfba94c048847abde66dce2a93693f79ee639f9c04044e9466a6b +# input_hash: 1c6cb740df8817dd106b9c100c7ff7a80e78266be34dc1280af336c481088d8a channels: - conda-forge @@ -9,13 +9,18 @@ dependencies: - _openmp_mutex=4.5=2_gnu - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - alsa-lib=1.2.14=h86ecc28_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h6fc4d3a_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h1f2db35_3 + - at-spi2-core=2.40.3=h1f2db35_0 + - atk-1.0=2.38.0=hedc4a1f_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbecfd40_1 - automake=1.17=pl5321h8af1aa0_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -23,11 +28,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5ad3122_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=hf1166c9_2 - - binutils_impl_linux-aarch64=2.44=hdf4bb16_2 - - binutils_linux-aarch64=2.44=hf1166c9_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h9678261_openblas + - binutils=2.44=hf1166c9_4 + - binutils_impl_linux-aarch64=2.44=ha36da51_4 + - binutils_linux-aarch64=2.44=hf1166c9_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h9678261_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2a328a1_1 @@ -46,50 +51,59 @@ dependencies: - cairo=1.18.4=h83712da_0 - cddlib=1!0.94m=h719063d_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py313h0f41b0d_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py313h897158f_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=he30d5cf_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=h92dcf8a_5 + - conda=25.9.1=py313hd81a959_0 + - conda-gcc-specs=14.3.0=h92dcf8a_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py313he6111f0_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py313hfa222a2_0 - - cpython=3.13.7=py313hd8ed1ab_100 + - coverage=7.11.0=py313hfa222a2_0 + - cpp-expected=1.3.1=hdc560ac_0 + - cpython=3.13.9=py313hd8ed1ab_101 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py313hbc6eba2_0 - - curl=8.14.1=h6702fde_0 + - cryptography=46.0.3=py313hbc6eba2_0 + - curl=8.16.0=h7bfdcfb_0 - cxx-compiler=1.11.0=h7b35c40_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py313h9954bcd_0 - cyrus-sasl=2.1.28=h6c5dea3_0 - cysignals=1.12.5=py313he352c24_0 - - cython=3.1.4=py313h34093b6_2 + - cython=3.1.6=py313h4aae401_0 - dbus=1.16.2=heda779d_0 - debugpy=1.8.17=py313h59403f9_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=h5ad3122_0 - dulwich=0.22.8=py313h8aa417a_0 - ecl=24.5.10=h043f013_1 - eclib=20250627=h2fd3c11_0 - ecm=7.0.6=hd777dc2_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=he30d5cf_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hfae3067_0 - fflas-ffpack=2.5.0=h503e619_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h416241a_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -103,42 +117,50 @@ dependencies: - fpylll=0.6.4=py313hf5933f0_0 - freetype=2.14.1=h8af1aa0_0 - fribidi=1.0.16=he30d5cf_0 + - frozendict=2.4.6=py313h6194ac5_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h1754e88_5 - - gap-defaults=4.14.0=h8af1aa0_5 - - gcc=14.3.0=h7408ef6_5 - - gcc_impl_linux-aarch64=14.3.0=h2b96704_5 - - gcc_linux-aarch64=14.3.0=h39d9346_11 + - gap-core=4.15.1=h409ef3a_0 + - gap-defaults=4.15.1=h8af1aa0_0 + - gcc=14.3.0=h7408ef6_7 + - gcc_impl_linux-aarch64=14.3.0=h2b96704_7 + - gcc_linux-aarch64=14.3.0=h118592a_12 + - gdk-pixbuf=2.44.4=h90308e0_0 - gf2x=1.3.0=h9af5f66_3 - gfan=0.6.2=h5f589ec_1003 - - gfortran=14.3.0=ha28f942_5 - - gfortran_impl_linux-aarch64=14.3.0=h8827d62_5 - - gfortran_linux-aarch64=14.3.0=hc530033_11 + - gfortran=14.3.0=ha28f942_7 + - gfortran_impl_linux-aarch64=14.3.0=h8827d62_7 + - gfortran_linux-aarch64=14.3.0=he4becf7_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h3df9001_3 + - glib-tools=2.86.0=hc87f4d4_1 - glpk=5.0=h66325d0_0 - gmp=6.3.0=h0a1ffab_2 - - gmpy2=2.1.5=py313h0c041f1_3 + - gmpy2=2.2.1=py313h4ba42fe_1 - graphite2=1.3.14=hfae3067_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=hdb06ba2_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h294027d_0 - - gxx=14.3.0=ha28f942_5 - - gxx_impl_linux-aarch64=14.3.0=h72695c8_5 - - gxx_linux-aarch64=14.3.0=h83defb1_11 + - gtk3=3.24.43=h4cd1324_6 + - gts=0.7.6=he293c15_4 + - gxx=14.3.0=ha28f942_7 + - gxx_impl_linux-aarch64=14.3.0=h72695c8_7 + - gxx_linux-aarch64=14.3.0=hda493e9_12 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=he4899c9_0 + - hicolor-icon-theme=0.17=h8af1aa0_2 + - highs=1.11.0=ha6136e2_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hf9b3779_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h1827c4d_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h15043fe_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -148,11 +170,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py313hd81a959_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-aarch64=4.18.0=h05a177a_8 @@ -162,9 +186,10 @@ dependencies: - krb5=1.21.3=h50a48e9_0 - lcalc=2.1.1=h30a6b3d_0 - lcms2=2.17=hc88f144_0 - - ld_impl_linux-aarch64=2.44=h9df1782_2 + - ld_impl_linux-aarch64=2.44=hd32f0e1_4 - lerc=4.0.0=hfdc4d58_1 - - libblas=3.9.0=36_haddc8a3_openblas + - libarchive=3.8.2=gpl_hd746d8a_100 + - libblas=3.9.0=37_haddc8a3_openblas - libboost=1.85.0=h9fa81b4_4 - libboost-devel=1.85.0=h37bb5a9_4 - libboost-headers=1.85.0=h8af1aa0_4 @@ -173,41 +198,46 @@ dependencies: - libbrotlicommon=1.1.0=he30d5cf_4 - libbrotlidec=1.1.0=he30d5cf_4 - libbrotlienc=1.1.0=he30d5cf_4 - - libcblas=3.9.0=36_hd72aa62_openblas - - libclang-cpp21.1=21.1.2=default_he95a3c9_1 - - libclang13=21.1.2=default_h94a09a5_1 + - libcblas=3.9.0=37_hd72aa62_openblas + - libclang-cpp21.1=21.1.4=default_he95a3c9_0 + - libclang13=21.1.4=default_h94a09a5_0 - libcups=2.3.3=h5cdc715_5 - - libcurl=8.14.1=h6702fde_0 + - libcurl=8.16.0=h7bfdcfb_0 - libdeflate=1.24=he377734_0 - libdrm=2.4.125=he30d5cf_1 - libedit=3.1.20250104=pl5321h976ea20_0 - libegl=1.7.0=hd24410f_2 + - libegl-devel=1.7.0=hd24410f_2 - libev=4.33=h31becfc_2 - libexpat=2.7.1=hfae3067_0 - - libffi=3.4.6=he21f813_1 + - libffi=3.5.2=hd65408f_0 - libflint=3.2.2=hd878b8d_0 - libfreetype=2.14.1=h8af1aa0_0 - libfreetype6=2.14.1=hdae7a39_0 - - libgcc=15.1.0=he277a41_5 - - libgcc-devel_linux-aarch64=14.3.0=h370b906_105 - - libgcc-ng=15.1.0=he9431aa_5 + - libgcc=15.2.0=he277a41_7 + - libgcc-devel_linux-aarch64=14.3.0=h370b906_107 + - libgcc-ng=15.2.0=he9431aa_7 - libgd=2.3.3=hc8d7b1d_11 - - libgfortran=15.1.0=he9431aa_5 - - libgfortran-ng=15.1.0=he9431aa_5 - - libgfortran5=15.1.0=hbc25352_5 + - libgfortran=15.2.0=he9431aa_7 + - libgfortran-ng=15.2.0=he9431aa_7 + - libgfortran5=15.2.0=h87db57e_7 - libgl=1.7.0=hd24410f_2 - - libglib=2.86.0=h7cdfd2c_0 + - libgl-devel=1.7.0=hd24410f_2 + - libglib=2.86.0=he84ff74_1 - libglvnd=1.7.0=hd24410f_2 - libglx=1.7.0=hd24410f_2 - - libgomp=15.1.0=he277a41_5 + - libglx-devel=1.7.0=hd24410f_2 + - libgomp=15.2.0=he277a41_7 - libhomfly=1.03=he30d5cf_0 - libiconv=1.18=h90929bb_2 - libjpeg-turbo=3.1.0=h86ecc28_0 - - liblapack=3.9.0=36_h88aeb00_openblas - - liblapacke=3.9.0=36_hb558247_openblas - - libllvm21=21.1.2=hfd2ba90_0 + - liblapack=3.9.0=37_h88aeb00_openblas + - liblapacke=3.9.0=37_hb558247_openblas + - libllvm21=21.1.4=hfd2ba90_0 - liblzma=5.8.1=h86ecc28_2 - liblzma-devel=5.8.1=h86ecc28_2 + - libmamba=2.3.3=hdcf0ffa_2 + - libmambapy=2.3.3=py313h363f11b_2 - libmpdec=4.0.0=h86ecc28_0 - libnghttp2=1.67.0=ha888d0e_0 - libntlm=1.4=hf897c2e_1002 @@ -216,38 +246,43 @@ dependencies: - libpciaccess=0.18=h86ecc28_0 - libpng=1.6.50=h1abf092_1 - libpq=18.0=hb4b1422_0 - - libsanitizer=14.3.0=h48d3638_5 + - librsvg=2.60.0=h8171147_0 + - libsanitizer=14.3.0=h48d3638_7 - libsodium=1.0.20=h68df207_0 + - libsolv=0.7.35=hdda61c4_0 - libsqlite=3.50.4=h022381a_0 - libssh2=1.11.1=h18c354c_0 - - libstdcxx=15.1.0=h3f4de04_5 - - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_105 - - libstdcxx-ng=15.1.0=hf1166c9_5 + - libstdcxx=15.2.0=h3f4de04_7 + - libstdcxx-devel_linux-aarch64=14.3.0=h370b906_107 + - libstdcxx-ng=15.2.0=hf1166c9_7 - libtiff=4.7.1=h7a57436_0 - libuuid=2.41.2=h3e4203c_0 - - libvulkan-loader=1.4.313.0=h8b8848b_1 + - libvulkan-loader=1.4.328.1=h8b8848b_0 - libwebp-base=1.6.0=ha2e29f5_0 - libxcb=1.17.0=h262b8f6_0 - libxcrypt=4.4.36=h31becfc_1 - - libxkbcommon=1.11.0=h3c6a4c8_1 - - libxml2=2.15.0=h788dabe_1 - - libxml2-16=2.15.0=h8591a01_1 - - libxml2-devel=2.15.0=h788dabe_1 + - libxkbcommon=1.12.2=h3c6a4c8_0 + - libxml2=2.15.1=h788dabe_0 + - libxml2-16=2.15.1=h8591a01_0 + - libxml2-devel=2.15.1=h788dabe_0 - libxslt=1.1.43=h6700d25_1 - libzlib=1.3.1=h86ecc28_2 - linbox=1.7.1=h119cb06_0 - lrcalc=2.1=hfae3067_8 + - lz4-c=1.10.0=h5ad3122_1 + - lzo=2.10=h80f16a2_1002 - m4=1.4.20=h86ecc28_0 - m4ri=20250128=hd9db0c5_0 - m4rie=20250128=hd9db0c5_0 - make=4.4.1=h2a6d0cb_2 - markupsafe=3.0.3=py313hfa222a2_0 - - matplotlib=3.10.6=py313h1258fbd_1 - - matplotlib-base=3.10.6=py313h5dbd8ee_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py313h1258fbd_0 + - matplotlib-base=3.10.7=py313h5dbd8ee_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h043f013_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py313h31d5739_1 + - memory-allocator=0.1.3=py313h6194ac5_2 + - menuinst=2.4.1=py313hd81a959_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -256,27 +291,28 @@ dependencies: - mpfi=1.5.4=h846f343_1001 - mpfr=4.2.1=h2305555_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py313he6111f0_1 + - msgpack-python=1.1.2=py313he6111f0_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=he30d5cf_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=ha32ae93_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=hdc560ac_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0d7519b_1 - - numpy=2.3.3=py313h11e5ff7_0 + - numpy=2.3.4=py313h11e5ff7_0 - openblas=0.3.30=pthreads_h3a8cbd8_2 - openjpeg=2.5.4=h5da879a_0 - openldap=2.6.10=h30c48ee_0 - openssl=3.5.4=h8e36d6e_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=he30d5cf_0 - - pandoc=3.8.1=h8af1aa0_0 + - pandoc=3.8.2.1=h8af1aa0_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=he55ef5b_0 - pari=2.17.2=h45cace7_5_pthread @@ -295,8 +331,8 @@ dependencies: - pkg-config=0.29.2=hce167ba_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=he30d5cf_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=he30d5cf_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h984aac9_1006 - pplpy=0.8.9=py313hb6c4517_2 @@ -305,18 +341,20 @@ dependencies: - primesieve=12.8=h5ad3122_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py313h6194ac5_0 + - psutil=7.1.1=py313h6194ac5_0 - pthread-stubs=0.4=h86ecc28_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py313h6194ac5_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py313h023b233_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py313h5e7b836_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py313h6211ea7_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py313h6194ac5_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -326,11 +364,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.13.7=h23354eb_100_cp313 + - python=3.13.9=h4c0d347_101_cp313 - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.13.7=h4df99d1_100 + - python-gil=3.13.9=h4df99d1_101 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py313he352c24_8 - python-symengine=0.14.0=py313h267d6ee_1 @@ -341,22 +379,24 @@ dependencies: - pyzmq=27.1.0=py312h4552c38_0 - qd=2.3.22=h05efe27_1004 - qhull=2020.2=h70be974_5 - - qt6-main=6.9.3=h224e339_0 + - qt6-main=6.9.3=h224e339_1 - r-base=4.4.3=h63885c9_4 - r-lattice=0.22_7=r44h0557e7b_1 - rapidfuzz=3.14.1=py313he352c24_0 - readline=8.2=h8382b9d_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h86ecc28_0 + - reproc-cpp=14.2.5.post0=h5ad3122_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py313h8f1d341_1 + - rpds-py=0.28.0=py313h8f1d341_1 - rpy2=3.6.4=py313r44h65fa22d_1 - - ruamel.yaml=0.18.15=py313h6194ac5_1 - - ruamel.yaml.clib=0.2.12=py313h6194ac5_1 + - ruamel.yaml=0.18.16=py313h6194ac5_0 + - ruamel.yaml.clib=0.2.14=py313h6194ac5_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h46ed904_0 + - ruff=0.14.2=h46ed904_0 - rw=0.9=h31becfc_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -367,6 +407,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 + - simdjson=4.0.7=hfefdfc9_0 - singular=4.4.1=hfdb71ee_1 - sirocco=2.1.0=h7fa4f89_1 - six=1.17.0=pyhe01879c_1 @@ -385,7 +426,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=he8854b5_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h7a35ef0_1 - symmetrica=3.1.0=he30d5cf_0 - sympow=2.023.6=h4d450c3_4 @@ -396,22 +437,23 @@ dependencies: - tk=8.6.13=noxft_h5688188_102 - tktable=2.10=h89546af_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py313he149459_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 - tzdata=2025b=h78e105d_0 - tzlocal=5.3.1=pyh8f84b5b_0 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h0157bdf_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - wayland=1.24.0=h698ed42_0 + - uv=0.9.5=h0157bdf_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=h4f8a99f_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 @@ -434,15 +476,18 @@ dependencies: - xorg-libxext=1.3.6=h57736b2_0 - xorg-libxfixes=6.0.2=he30d5cf_0 - xorg-libxi=1.8.2=h57736b2_0 + - xorg-libxinerama=1.1.5=h5ad3122_1 - xorg-libxrandr=1.5.4=h86ecc28_0 - xorg-libxrender=0.9.12=h86ecc28_0 - xorg-libxt=1.3.1=h57736b2_0 - xorg-libxtst=1.2.5=h57736b2_3 - xorg-libxxf86vm=1.1.6=h86ecc28_0 + - xorg-xorgproto=2024.1=h86ecc28_1 - xz=5.8.1=h2dbfc1b_2 - xz-gpl-tools=5.8.1=h2dbfc1b_2 - xz-tools=5.8.1=h86ecc28_2 - yaml=0.2.5=h80f16a2_3 + - yaml-cpp=0.8.0=h5ad3122_0 - zeromq=4.3.5=hefbcea8_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h86ecc28_2 diff --git a/environment-3.13-linux.yml b/environment-3.13-linux.yml index af2379353fe..aa8c347ae80 100644 --- a/environment-3.13-linux.yml +++ b/environment-3.13-linux.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: linux-64 -# input_hash: ad6e37a07d00e01612f8e5f20580a4dfaf17edc8b3b6161ddd7bfde56516fe46 +# input_hash: f5a4561249cc7d184ce76042601336c39581dc4bb8d34b354756899688d83bcb channels: - conda-forge @@ -11,13 +11,18 @@ dependencies: - _openmp_mutex=4.5=2_gnu - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - alsa-lib=1.2.14=hb9d3cd8_0 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hf03ea27_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - at-spi2-atk=2.38.0=h0630a04_3 + - at-spi2-core=2.40.3=h0630a04_0 + - atk-1.0=2.38.0=h04ea711_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hbb4ee43_1 - automake=1.17=pl5321ha770c72_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -25,11 +30,11 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h5888daf_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils=2.44=h4852527_2 - - binutils_impl_linux-64=2.44=hdf8817f_2 - - binutils_linux-64=2.44=h4852527_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h1ea3ea9_openblas + - binutils=2.44=h4852527_4 + - binutils_impl_linux-64=2.44=h9d8b0ac_4 + - binutils_linux-64=2.44=h4852527_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_h1ea3ea9_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h00ab1b0_1 @@ -48,50 +53,59 @@ dependencies: - cairo=1.18.4=h3394656_0 - cddlib=1!0.94m=h9202a9a_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py313hf01b4d8_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 - - click=8.3.0=pyh707e725_0 + - cffi=2.0.0=py313hf46b229_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hb03c661_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - conda-gcc-specs=14.3.0=hb991d5c_5 + - conda=25.9.1=py313h78bf25f_0 + - conda-gcc-specs=14.3.0=hb991d5c_7 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyh367d9c9_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py313h7037e92_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py313h3dea7bd_0 - - cpython=3.13.7=py313hd8ed1ab_100 + - coverage=7.11.0=py313h3dea7bd_0 + - cpp-expected=1.3.1=h171cf75_0 + - cpython=3.13.9=py313hd8ed1ab_101 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py313hafb0bba_0 - - curl=8.14.1=h332b0f4_0 + - cryptography=46.0.3=py313hafb0bba_0 + - curl=8.16.0=h4e3cde8_0 - cxx-compiler=1.11.0=hfcd1e18_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py313h69fe8d1_0 - cyrus-sasl=2.1.28=hd9c7081_0 - cysignals=1.12.5=py313h7033f15_0 - - cython=3.1.4=py313h3484ee8_2 + - cython=3.1.6=py313hc80a56d_0 - dbus=1.16.2=h3c4dab8_0 - debugpy=1.8.17=py313h5d5ffb9_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=h5888daf_0 - dulwich=0.22.8=py313h920b4c0_0 - ecl=24.5.10=h75482ee_1 - eclib=20250627=hd0dfdeb_0 - ecm=7.0.6=h90cbb55_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hb03c661_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hecca717_0 - fflas-ffpack=2.5.0=h4f9960b_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h2b0788b_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -105,42 +119,50 @@ dependencies: - fpylll=0.6.4=py313ha800b53_0 - freetype=2.14.1=ha770c72_0 - fribidi=1.0.16=hb03c661_0 + - frozendict=2.4.6=py313h07c4f96_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h3b03731_5 - - gap-defaults=4.14.0=ha770c72_5 - - gcc=14.3.0=h76bdaa0_5 - - gcc_impl_linux-64=14.3.0=hd9e9e21_5 - - gcc_linux-64=14.3.0=h1382650_11 + - gap-core=4.15.1=h60ec763_0 + - gap-defaults=4.15.1=ha770c72_0 + - gcc=14.3.0=h76bdaa0_7 + - gcc_impl_linux-64=14.3.0=hd9e9e21_7 + - gcc_linux-64=14.3.0=h298d278_12 + - gdk-pixbuf=2.44.4=h2b0a6b4_0 - gf2x=1.3.0=h55551d5_3 - gfan=0.6.2=hb86e20a_1003 - - gfortran=14.3.0=he448592_5 - - gfortran_impl_linux-64=14.3.0=h7db7018_5 - - gfortran_linux-64=14.3.0=h30a37f7_11 + - gfortran=14.3.0=he448592_7 + - gfortran_impl_linux-64=14.3.0=h7db7018_7 + - gfortran_linux-64=14.3.0=h961de7f_12 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h49654ea_3 + - glib-tools=2.86.0=hf516916_1 - glpk=5.0=h445213a_0 - gmp=6.3.0=hac33072_2 - - gmpy2=2.1.5=py313h11186cd_3 + - gmpy2=2.2.1=py313h86d8783_1 - graphite2=1.3.14=hecca717_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=h87b6fe6_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=he838d99_0 - - gxx=14.3.0=he448592_5 - - gxx_impl_linux-64=14.3.0=he663afc_5 - - gxx_linux-64=14.3.0=ha7acb78_11 + - gtk3=3.24.43=h993cebd_6 + - gts=0.7.6=h977cf35_4 + - gxx=14.3.0=he448592_7 + - gxx_impl_linux-64=14.3.0=he663afc_7 + - gxx_linux-64=14.3.0=h95f728e_12 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=h15599e2_0 + - hicolor-icon-theme=0.17=ha770c72_2 + - highs=1.11.0=h7aa8ee6_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he02047a_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=1.0.0=hfe3e89f_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=hfe3e89f_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h623f65a_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh82676e8_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyha191276_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -150,11 +172,13 @@ dependencies: - jedi=0.19.2=pyhd8ed1ab_1 - jeepney=0.9.0=pyhd8ed1ab_0 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py313h78bf25f_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kernel-headers_linux-64=4.18.0=he073ed8_8 @@ -164,9 +188,10 @@ dependencies: - krb5=1.21.3=h659f571_0 - lcalc=2.1.1=h9cf73fc_0 - lcms2=2.17=h717163a_0 - - ld_impl_linux-64=2.44=ha97dd6f_2 + - ld_impl_linux-64=2.44=h1aa0949_4 - lerc=4.0.0=h0aef613_1 - - libblas=3.9.0=36_h4a7cf45_openblas + - libarchive=3.8.2=gpl_h7be2006_100 + - libblas=3.9.0=37_h4a7cf45_openblas - libboost=1.85.0=h0ccab89_4 - libboost-devel=1.85.0=h00ab1b0_4 - libboost-headers=1.85.0=ha770c72_4 @@ -175,41 +200,46 @@ dependencies: - libbrotlicommon=1.1.0=hb03c661_4 - libbrotlidec=1.1.0=hb03c661_4 - libbrotlienc=1.1.0=hb03c661_4 - - libcblas=3.9.0=36_h0358290_openblas - - libclang-cpp21.1=21.1.2=default_h99862b1_1 - - libclang13=21.1.2=default_h746c552_1 + - libcblas=3.9.0=37_h0358290_openblas + - libclang-cpp21.1=21.1.4=default_h99862b1_0 + - libclang13=21.1.4=default_h746c552_0 - libcups=2.3.3=hb8b1518_5 - - libcurl=8.14.1=h332b0f4_0 + - libcurl=8.16.0=h4e3cde8_0 - libdeflate=1.24=h86f0d12_0 - libdrm=2.4.125=hb03c661_1 - libedit=3.1.20250104=pl5321h7949ede_0 - libegl=1.7.0=ha4b6fd6_2 + - libegl-devel=1.7.0=ha4b6fd6_2 - libev=4.33=hd590300_2 - libexpat=2.7.1=hecca717_0 - - libffi=3.4.6=h2dba641_1 + - libffi=3.5.2=h9ec8514_0 - libflint=3.2.2=h754cb6e_0 - libfreetype=2.14.1=ha770c72_0 - libfreetype6=2.14.1=h73754d4_0 - - libgcc=15.1.0=h767d61c_5 - - libgcc-devel_linux-64=14.3.0=h85bb3a7_105 - - libgcc-ng=15.1.0=h69a702a_5 + - libgcc=15.2.0=h767d61c_7 + - libgcc-devel_linux-64=14.3.0=h85bb3a7_107 + - libgcc-ng=15.2.0=h69a702a_7 - libgd=2.3.3=h6f5c62b_11 - - libgfortran=15.1.0=h69a702a_5 - - libgfortran-ng=15.1.0=h69a702a_5 - - libgfortran5=15.1.0=hcea5267_5 + - libgfortran=15.2.0=h69a702a_7 + - libgfortran-ng=15.2.0=h69a702a_7 + - libgfortran5=15.2.0=hcd61629_7 - libgl=1.7.0=ha4b6fd6_2 - - libglib=2.86.0=h1fed272_0 + - libgl-devel=1.7.0=ha4b6fd6_2 + - libglib=2.86.0=h32235b2_1 - libglvnd=1.7.0=ha4b6fd6_2 - libglx=1.7.0=ha4b6fd6_2 - - libgomp=15.1.0=h767d61c_5 + - libglx-devel=1.7.0=ha4b6fd6_2 + - libgomp=15.2.0=h767d61c_7 - libhomfly=1.03=hb03c661_0 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=36_h47877c9_openblas - - liblapacke=3.9.0=36_h6ae95b6_openblas - - libllvm21=21.1.2=hf7376ad_0 + - liblapack=3.9.0=37_h47877c9_openblas + - liblapacke=3.9.0=37_h6ae95b6_openblas + - libllvm21=21.1.4=hf7376ad_0 - liblzma=5.8.1=hb9d3cd8_2 - liblzma-devel=5.8.1=hb9d3cd8_2 + - libmamba=2.3.3=h09abcb8_1 + - libmambapy=2.3.3=py313hda67085_1 - libmpdec=4.0.0=hb9d3cd8_0 - libnghttp2=1.67.0=had1ee68_0 - libntlm=1.8=hb9d3cd8_0 @@ -218,39 +248,44 @@ dependencies: - libpciaccess=0.18=hb9d3cd8_0 - libpng=1.6.50=h421ea60_1 - libpq=18.0=h3675c94_0 - - libsanitizer=14.3.0=hd08acf3_5 + - librsvg=2.60.0=h61e6d4b_0 + - libsanitizer=14.3.0=hd08acf3_7 - libsodium=1.0.20=h4ab18f5_0 + - libsolv=0.7.35=h9463b59_0 - libsqlite=3.50.4=h0c1763c_0 - libssh2=1.11.1=hcf80075_0 - - libstdcxx=15.1.0=h8f9b012_5 - - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_105 - - libstdcxx-ng=15.1.0=h4852527_5 + - libstdcxx=15.2.0=h8f9b012_7 + - libstdcxx-devel_linux-64=14.3.0=h85bb3a7_107 + - libstdcxx-ng=15.2.0=h4852527_7 - libtiff=4.7.1=h8261f1e_0 - libuuid=2.41.2=he9a06e4_0 - - libvulkan-loader=1.4.313.0=h5279c79_1 + - libvulkan-loader=1.4.328.1=h5279c79_0 - libwebp-base=1.6.0=hd42ef1d_0 - libxcb=1.17.0=h8a09558_0 - libxcrypt=4.4.36=hd590300_1 - - libxkbcommon=1.11.0=hca5e8e5_1 - - libxml2=2.15.0=h26afc86_1 - - libxml2-16=2.15.0=ha9997c6_1 - - libxml2-devel=2.15.0=h26afc86_1 + - libxkbcommon=1.12.2=hca5e8e5_0 + - libxml2=2.15.1=h26afc86_0 + - libxml2-16=2.15.1=ha9997c6_0 + - libxml2-devel=2.15.1=h26afc86_0 - libxslt=1.1.43=h711ed8c_1 - libzlib=1.3.1=hb9d3cd8_2 - linbox=1.7.1=he8fce6e_0 - lrcalc=2.1=h5888daf_7 - lrslib=71.b=h8aaf9c6_1 + - lz4-c=1.10.0=h5888daf_1 + - lzo=2.10=h280c20c_1002 - m4=1.4.20=hb9d3cd8_0 - m4ri=20250128=h36e74d4_0 - m4rie=20250128=h36e74d4_0 - make=4.4.1=hb9d3cd8_2 - markupsafe=3.0.3=py313h3dea7bd_0 - - matplotlib=3.10.6=py313h78bf25f_1 - - matplotlib-base=3.10.6=py313h683a580_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py313h78bf25f_0 + - matplotlib-base=3.10.7=py313h683a580_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h75482ee_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py313h536fd9c_1 + - memory-allocator=0.1.3=py313h07c4f96_2 + - menuinst=2.4.1=py313h78bf25f_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -259,27 +294,28 @@ dependencies: - mpfi=1.5.4=h9f54685_1001 - mpfr=4.2.1=h90cbb55_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py313h7037e92_1 + - msgpack-python=1.1.2=py313h7037e92_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hb03c661_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h2d0b736_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h171cf75_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hef3c4d3_1 - - numpy=2.3.3=py313hf6604e3_0 + - numpy=2.3.4=py313hf6604e3_0 - openblas=0.3.30=pthreads_h6ec200e_2 - openjpeg=2.5.4=h55fea9a_0 - openldap=2.6.10=he970967_0 - openssl=3.5.4=h26f9b46_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hb03c661_0 - - pandoc=3.8.1=ha770c72_0 + - pandoc=3.8.2.1=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=hadf4263_0 - pari=2.17.2=ha40142e_5_pthread @@ -298,8 +334,8 @@ dependencies: - pkg-config=0.29.2=h4bc722e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hb03c661_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hb03c661_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h6ec01c2_1006 - pplpy=0.8.9=py313hf19506d_2 @@ -308,18 +344,20 @@ dependencies: - primesieve=12.8=h5888daf_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py313h07c4f96_0 + - psutil=7.1.1=py313h07c4f96_0 - pthread-stubs=0.4=hb9d3cd8_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py313h07c4f96_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py313h4b2b08d_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py313h843e2db_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py313h45fd7b0_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py313h07c4f96_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -329,11 +367,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.13.7=h2b335a9_100_cp313 + - python=3.13.9=hc97d973_101_cp313 - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.13.7=h4df99d1_100 + - python-gil=3.13.9=h4df99d1_101 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py313h46c70d0_7 - python-symengine=0.14.0=py313hf59a7b8_1 @@ -344,23 +382,25 @@ dependencies: - pyzmq=27.1.0=py312hfb55c3c_0 - qd=2.3.22=h2cc385e_1004 - qhull=2020.2=h434a139_5 - - qt6-main=6.9.3=h5c1c036_0 + - qt6-main=6.9.3=h5c1c036_1 - r-base=4.4.3=h14df4e6_4 - r-lattice=0.22_7=r44h54b55ab_1 - rapidfuzz=3.14.1=py313h7033f15_0 - readline=8.2=h8c095d6_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=hb9d3cd8_0 + - reproc-cpp=14.2.5.post0=h5888daf_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py313h843e2db_1 + - rpds-py=0.28.0=py313h843e2db_1 - rpy2=3.6.4=py313r44h67dc6d7_1 - - ruamel.yaml=0.18.15=py313h07c4f96_1 - - ruamel.yaml.clib=0.2.12=py313h07c4f96_1 + - ruamel.yaml=0.18.16=py313h07c4f96_0 + - ruamel.yaml.clib=0.2.14=py313h07c4f96_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=ha3a3aed_0 - - rw=0.7=1 + - ruff=0.14.2=ha3a3aed_0 + - rw=0.9=hd590300_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -370,6 +410,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 + - simdjson=4.0.7=hb700be7_0 - singular=4.4.1=h7ee4ccf_1 - sirocco=2.1.0=hd7ee782_1 - six=1.17.0=pyhe01879c_1 @@ -388,7 +429,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hbc0de68_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h064106a_1 - symmetrica=3.1.0=hb03c661_0 - sympow=2.023.6=h3028977_4 @@ -399,22 +440,23 @@ dependencies: - tk=8.6.13=noxft_hd72426e_102 - tktable=2.10=h8d826fa_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py313h07c4f96_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 - tzdata=2025b=h78e105d_0 - tzlocal=5.3.1=pyh8f84b5b_0 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h30787bc_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - wayland=1.24.0=h3e06ad9_0 + - uv=0.9.5=h30787bc_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - wayland=1.24.0=hd6090a7_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 @@ -437,15 +479,18 @@ dependencies: - xorg-libxext=1.3.6=hb9d3cd8_0 - xorg-libxfixes=6.0.2=hb03c661_0 - xorg-libxi=1.8.2=hb9d3cd8_0 + - xorg-libxinerama=1.1.5=h5888daf_1 - xorg-libxrandr=1.5.4=hb9d3cd8_0 - xorg-libxrender=0.9.12=hb9d3cd8_0 - xorg-libxt=1.3.1=hb9d3cd8_0 - xorg-libxtst=1.2.5=hb9d3cd8_3 - xorg-libxxf86vm=1.1.6=hb9d3cd8_0 + - xorg-xorgproto=2024.1=hb9d3cd8_1 - xz=5.8.1=hbcc6ac9_2 - xz-gpl-tools=5.8.1=hbcc6ac9_2 - xz-tools=5.8.1=hb9d3cd8_2 - yaml=0.2.5=h280c20c_3 + - yaml-cpp=0.8.0=h3f2d84a_0 - zeromq=4.3.5=h387f397_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hb9d3cd8_2 diff --git a/environment-3.13-macos-x86_64.yml b/environment-3.13-macos-x86_64.yml index 9f051d4c581..e05d3a689b9 100644 --- a/environment-3.13-macos-x86_64.yml +++ b/environment-3.13-macos-x86_64.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: osx-64 -# input_hash: 380aa928a27b02842ec53ad80405fcb083e22ecec49c5eb945bbc9396b74650c +# input_hash: f05978fb8443c4d3f9c927a3704ea62dc896563bcc55a9b2584d5cdf9d26c4e2 channels: - conda-forge @@ -9,13 +9,16 @@ dependencies: - 4ti2=1.6.13=he407a3c_0 - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_hdfe9103_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=h4bec284_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321had7229c_1 - automake=1.17=pl5321h694c41f_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -23,8 +26,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h240833e_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_hbf4f893_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_hbf4f893_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h7728843_1 @@ -41,12 +44,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h950ec3b_0 - - cctools=1024.3=h67a6458_4 - - cctools_osx-64=1024.3=h3b512aa_4 + - cctools=1024.3=h67a6458_5 + - cctools_osx-64=1024.3=llvm19_1_h3b512aa_5 - cddlib=1!0.94m=h0f52abe_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py313h8715ba9_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py313hf57695f_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_h1323312_5 - clang-19=19.1.7=default_hc369343_5 - clang_impl_osx-64=19.1.7=hc73cdc9_25 @@ -54,46 +57,55 @@ dependencies: - clangxx=19.1.7=default_h1c12a56_5 - clangxx_impl_osx-64=19.1.7=hb295874_25 - clangxx_osx-64=19.1.7=h7e5c614_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=h8616949_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=he914875_1 - compiler-rt_osx-64=19.1.7=h138dee1_1 + - conda=25.9.1=py313habf4b1d_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py313hc551f4f_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py313h0f4d31d_0 - - cpython=3.13.7=py313hd8ed1ab_100 + - coverage=7.11.0=py313h0f4d31d_0 + - cpp-expected=1.3.1=h0ba0a54_0 + - cpython=3.13.9=py313hd8ed1ab_101 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py313h0218d6d_0 - - curl=8.14.1=h5dec5d8_0 + - cryptography=46.0.3=py313h0218d6d_0 + - curl=8.16.0=h7dd4100_0 - cxx-compiler=1.11.0=h307afc9_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py313h9f47f76_0 - cysignals=1.12.5=py313hc4a83b5_0 - - cython=3.1.4=py313ha8e042b_2 + - cython=3.1.6=py313hdeca933_0 - debugpy=1.8.17=py313hff8d55d_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py313h3c055b9_0 - ecl=24.5.10=ha6bf567_1 - eclib=20250627=h28d223a_0 - ecm=7.0.6=h5625669_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=h8616949_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=h21dd04a_0 - fflas-ffpack=2.5.0=h5898d61_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h7a3a4f9_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -107,36 +119,44 @@ dependencies: - fpylll=0.6.4=py313h454044b_0 - freetype=2.14.1=h694c41f_0 - fribidi=1.0.16=h8616949_0 + - frozendict=2.4.6=py313h585f44e_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=hb9686a1_5 - - gap-defaults=4.14.0=h694c41f_5 + - gap-core=4.15.1=h94a3ca4_0 + - gap-defaults=4.15.1=h694c41f_0 + - gdk-pixbuf=2.44.4=h07555a4_0 - gf2x=1.3.0=h35ac7d9_3 - gfan=0.6.2=hd793b56_1003 - gfortran=14.3.0=hcc3c99d_0 - - gfortran_impl_osx-64=14.3.0=he320259_1 + - gfortran_impl_osx-64=14.3.0=h94fe04d_1 - gfortran_osx-64=14.3.0=h3223c34_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=hbf3f340_3 + - glib-tools=2.86.0=h8650975_1 - glpk=5.0=h3cb5acd_0 - gmp=6.3.0=hf036a51_2 - - gmpy2=2.1.5=py313hc0d4f81_3 + - gmpy2=2.2.1=py313h904ca6e_1 - graphite2=1.3.14=h21dd04a_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=h42bfd48_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h93259b0_0 + - gtk3=3.24.43=h5e629aa_6 + - gts=0.7.6=h53e17e3_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=hc5d3ef4_0 + - hicolor-icon-theme=0.17=h694c41f_2 + - highs=1.11.0=h46ed394_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=h120a0e1_0 - - idna=3.10=pyhd8ed1ab_1 - - igraph=1.0.0=h88b1ca6_0 + - idna=3.11=pyhd8ed1ab_0 + - igraph=0.10.17=h88b1ca6_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=h61918c1_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -146,11 +166,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py313habf4b1d_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -158,11 +180,12 @@ dependencies: - krb5=1.21.3=h37d8d59_0 - lcalc=2.1.1=h0f747f7_0 - lcms2=2.17=h72f5680_0 - - ld64=955.13=hc3792c1_4 - - ld64_osx-64=955.13=h466f870_4 + - ld64=955.13=hc3792c1_5 + - ld64_osx-64=955.13=llvm19_1_h466f870_5 - lerc=4.0.0=hcca01a6_1 + - libarchive=3.8.2=gpl_h889603c_100 - libasprintf=0.25.1=h3184127_1 - - libblas=3.9.0=36_he492b99_openblas + - libblas=3.9.0=37_he492b99_openblas - libboost=1.85.0=hcca3243_4 - libboost-devel=1.85.0=h2b186f8_4 - libboost-headers=1.85.0=h694c41f_4 @@ -171,65 +194,72 @@ dependencies: - libbrotlicommon=1.1.0=h1c43f85_4 - libbrotlidec=1.1.0=h1c43f85_4 - libbrotlienc=1.1.0=h1c43f85_4 - - libcblas=3.9.0=36_h9b27e0a_openblas + - libcblas=3.9.0=37_h9b27e0a_openblas - libclang-cpp19.1=19.1.7=default_hc369343_5 - - libcurl=8.14.1=h5dec5d8_0 - - libcxx=21.1.2=h3d58e20_0 + - libcurl=8.16.0=h7dd4100_0 + - libcxx=21.1.4=h3d58e20_0 - libcxx-devel=19.1.7=h7c275be_1 - libdeflate=1.24=hcc1b750_0 - libedit=3.1.20250104=pl5321ha958ccf_0 - libev=4.33=h10d778d_2 - libexpat=2.7.1=h21dd04a_0 - - libffi=3.4.6=h281671d_1 + - libffi=3.5.2=h750e83c_0 - libflint=3.2.2=h26b1ecd_0 - libfreetype=2.14.1=h694c41f_0 - libfreetype6=2.14.1=h6912278_0 - libgd=2.3.3=h8555400_11 - libgettextpo=0.25.1=h3184127_1 - - libgfortran=15.1.0=h5f6db21_1 + - libgfortran=15.2.0=h306097a_1 - libgfortran-devel_osx-64=14.3.0=h660b60f_1 - - libgfortran5=15.1.0=hfa3c126_1 - - libglib=2.86.0=h7cafd41_0 + - libgfortran5=15.2.0=h336fb69_1 + - libglib=2.86.0=h6ca3a76_1 - libhomfly=1.03=h1c43f85_0 - libiconv=1.18=h57a12c2_2 - libintl=0.25.1=h3184127_1 - libjpeg-turbo=3.1.0=h6e16a3a_0 - - liblapack=3.9.0=36_h859234e_openblas - - liblapacke=3.9.0=36_h94b3770_openblas + - liblapack=3.9.0=37_h859234e_openblas + - liblapacke=3.9.0=37_h94b3770_openblas - libllvm19=19.1.7=h56e7563_2 - liblzma=5.8.1=hd471939_2 - liblzma-devel=5.8.1=hd471939_2 + - libmamba=2.3.3=hf3f6d74_1 + - libmambapy=2.3.3=py313h512d30b_1 - libmpdec=4.0.0=h6e16a3a_0 - libnghttp2=1.67.0=h3338091_0 - libopenblas=0.3.30=openmp_h83c2472_2 - libpng=1.6.50=h84aeda2_1 + - librsvg=2.60.0=h2da6fc3_0 - libsodium=1.0.20=hfdf4475_0 + - libsolv=0.7.35=h6fd32b5_0 - libsqlite=3.50.4=h39a8b3b_0 - libssh2=1.11.1=hed3591d_0 - libtiff=4.7.1=haa3b502_0 - libwebp-base=1.6.0=hb807250_0 - libxcb=1.17.0=hf1f96e2_0 - - libxml2=2.15.0=h7b7ecba_1 - - libxml2-16=2.15.0=ha1d9b0f_1 - - libxml2-devel=2.15.0=h7b7ecba_1 + - libxml2=2.15.1=h7b7ecba_0 + - libxml2-16=2.15.1=ha1d9b0f_0 + - libxml2-devel=2.15.1=h7b7ecba_0 - libzlib=1.3.1=hd23fc13_2 - linbox=1.7.1=h1a86e0a_0 - - llvm-openmp=21.1.2=h472b3d1_3 + - llvm-openmp=21.1.4=h472b3d1_0 - llvm-tools=19.1.7=hb0207f0_2 - llvm-tools-19=19.1.7=h879f4bc_2 - lrcalc=2.1=hac325c4_7 - lrslib=71.b=hda3377a_1 + - lz4-c=1.10.0=h240833e_1 + - lzo=2.10=h4132b18_1002 - m4=1.4.20=h6e16a3a_0 - m4ri=20250128=h95e091b_0 - m4rie=20250128=h95e091b_0 - make=4.4.1=h00291cd_2 - markupsafe=3.0.3=py313h0f4d31d_0 - - matplotlib=3.10.6=py313habf4b1d_1 - - matplotlib-base=3.10.6=py313h4ad75b8_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py313habf4b1d_0 + - matplotlib-base=3.10.7=py313h4ad75b8_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=h3080a4d_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py313ha37c0e0_1 + - memory-allocator=0.1.3=py313h585f44e_2 + - menuinst=2.4.1=py313habf4b1d_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -238,26 +268,27 @@ dependencies: - mpfi=1.5.4=h52b28e3_1001 - mpfr=4.2.1=haed47dc_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py313hc551f4f_1 + - msgpack-python=1.1.2=py313h5eff275_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=h8616949_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h0622a9a_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h0ba0a54_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=h0ab3c2f_1 - - numpy=2.3.3=py313ha99c057_0 + - numpy=2.3.4=py313ha99c057_0 - openblas=0.3.30=openmp_h30af337_2 - openjpeg=2.5.4=h87e8dc5_0 - openssl=3.5.4=h230baf5_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=h8616949_0 - - pandoc=3.8.1=h694c41f_0 + - pandoc=3.8.2.1=h694c41f_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h6ef8af8_0 - pari=2.17.2=h1ed0f1a_5_pthread @@ -276,8 +307,8 @@ dependencies: - pkg-config=0.29.2=hf7e621a_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=h8616949_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=h8616949_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=ha60d53e_1006 - pplpy=0.8.9=py313h65e192f_2 @@ -286,18 +317,20 @@ dependencies: - primesieve=12.8=h240833e_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py313hf050af9_0 + - psutil=7.1.1=py313hf050af9_0 - pthread-stubs=0.4=h00291cd_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py313h585f44e_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py313hb35714d_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py313hcc225dc_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py313heed2c0d_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py313hf050af9_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -306,11 +339,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.13.7=h5eba815_100_cp313 + - python=3.13.9=h17c18a5_101_cp313 - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.13.7=h4df99d1_100 + - python-gil=3.13.9=h4df99d1_101 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py313h9ea2907_7 - python-symengine=0.14.0=py313ha96cbe4_1 @@ -325,18 +358,20 @@ dependencies: - r-lattice=0.22_7=r44h735ac91_1 - rapidfuzz=3.14.1=py313hc4a83b5_0 - readline=8.2=h7cca4af_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h6e16a3a_0 + - reproc-cpp=14.2.5.post0=h240833e_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py313h66e1e84_1 + - rpds-py=0.28.0=py313hcc225dc_1 - rpy2=3.6.4=py313r44h91f4b35_1 - - ruamel.yaml=0.18.15=py313hf050af9_1 - - ruamel.yaml.clib=0.2.12=py313h585f44e_1 + - ruamel.yaml=0.18.16=py313hf050af9_0 + - ruamel.yaml.clib=0.2.14=py313hf050af9_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=hba89d1c_0 - - rw=0.7=1 + - ruff=0.14.2=hba89d1c_0 + - rw=0.9=h10d778d_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -345,6 +380,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h88f4db0_0 + - simdjson=4.0.7=hcb651aa_0 - singular=4.4.1=haa275bf_1 - sirocco=2.1.0=hfc2cc1e_1 - six=1.17.0=pyhe01879c_1 @@ -363,7 +399,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=h64b5abc_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h79ccd14_1 - symmetrica=3.1.0=h8616949_0 - sympow=2.023.6=h7305399_4 @@ -374,32 +410,34 @@ dependencies: - tk=8.6.13=hf689a15_2 - tktable=2.10=h2c093e9_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py313h585f44e_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 - tzdata=2025b=h78e105d_0 - tzlocal=5.3.1=pyh8f84b5b_0 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h66543e4_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h66543e4_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py313h585f44e_1 - - xattr=1.2.0=py313h6d86140_1 + - xattr=1.3.0=py313h2960249_0 - xorg-libxau=1.0.12=h6e16a3a_0 - xorg-libxdmcp=1.1.5=h00291cd_0 - xz=5.8.1=h357f2ed_2 - xz-gpl-tools=5.8.1=h357f2ed_2 - xz-tools=5.8.1=hd471939_2 - yaml=0.2.5=h4132b18_3 + - yaml-cpp=0.8.0=h92383a6_0 - zeromq=4.3.5=h6c33b1e_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=hd23fc13_2 diff --git a/environment-3.13-macos.yml b/environment-3.13-macos.yml index 3080ac1009a..91b78d51939 100644 --- a/environment-3.13-macos.yml +++ b/environment-3.13-macos.yml @@ -1,20 +1,23 @@ name: sage-dev # Generated by conda-lock. # platform: osx-arm64 -# input_hash: f69cdaab0c5776f98a4160f45afa4155ddb87c78c9fe43cc12302d6b08af9f51 +# input_hash: cfaaccb5a3ecc0d8bad0ec4243e9203845d65c2e780c945d55497325459cbb38 channels: - conda-forge dependencies: - _python_abi3_support=1.0=hd8ed1ab_2 - _r-mutex=1.0.1=anacondar_1 + - adwaita-icon-theme=49.0=unix_0 - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - arpack=3.9.1=nompi_h1f29f7c_102 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - atk-1.0=2.38.0=hd03087b_2 + - attrs=25.4.0=pyh71513ae_0 - autoconf=2.72=pl5321hd3c70e0_1 - automake=1.17=pl5321hce30654_0 - babel=2.17.0=pyhd8ed1ab_0 @@ -22,8 +25,8 @@ dependencies: - backports.tarfile=1.2.0=pyhd8ed1ab_1 - bdw-gc=8.2.8=h286801f_2 - beautifulsoup4=4.14.2=pyha770c72_0 - - blas=2.136=openblas - - blas-devel=3.9.0=36_h11c0a38_openblas + - blas=2.137=openblas + - blas-devel=3.9.0=37_h11c0a38_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bliss=0.77=h2ffa867_1 @@ -40,12 +43,12 @@ dependencies: - cachecontrol=0.14.3=pyha770c72_0 - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h6a3b0d2_0 - - cctools=1024.3=hd01ab73_4 - - cctools_osx-arm64=1024.3=h8c76c84_4 + - cctools=1024.3=hd01ab73_5 + - cctools_osx-arm64=1024.3=llvm19_1_h8c76c84_5 - cddlib=1!0.94m=h6d7a090_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py313h89bd988_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py313h224173a_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hf9bcbb7_5 - clang-19=19.1.7=default_h73dfc95_5 - clang_impl_osx-arm64=19.1.7=h76e6a08_25 @@ -53,46 +56,55 @@ dependencies: - clangxx=19.1.7=default_h36137df_5 - clangxx_impl_osx-arm64=19.1.7=h276745f_25 - clangxx_osx-arm64=19.1.7=h07b0088_25 - - click=8.3.0=pyh707e725_0 + - click=8.1.8=pyh707e725_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - cliquer=1.23=hc919400_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h855ad52_1 - compiler-rt_osx-arm64=19.1.7=he32a8d3_1 + - conda=25.9.1=py313h8f79df9_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyhb3ed7dc_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py313hc50a443_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py313h7d74516_0 - - cpython=3.13.7=py313hd8ed1ab_100 + - coverage=7.11.0=py313h7d74516_0 + - cpp-expected=1.3.1=h4f10f1e_0 + - cpython=3.13.9=py313hd8ed1ab_101 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py313h4d9e278_0 - - curl=8.14.1=h73640d1_0 + - cryptography=46.0.3=py313h4d9e278_0 + - curl=8.16.0=hdece5d2_0 - cxx-compiler=1.11.0=h88570a1_0 - cycler=0.12.1=pyhd8ed1ab_1 - cypari2=2.2.2=py313ha4cfd47_0 - cysignals=1.12.5=py313h0e822ff_0 - - cython=3.1.4=py313h4e8f416_2 + - cython=3.1.6=py313h66a7184_0 - debugpy=1.8.17=py313hc37fe24_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - dulwich=0.22.8=py313hdde674f_0 - ecl=24.5.10=hc6c598b_1 - eclib=20250627=h6592c3b_0 - ecm=7.0.6=hdd59bce_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 + - epoxy=1.5.10=hc919400_2 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hec049ff_0 - fflas-ffpack=2.5.0=h4bc3318_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 + - fmt=12.0.0=h669d743_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -106,36 +118,44 @@ dependencies: - fpylll=0.6.4=py313h15e87fc_0 - freetype=2.14.1=hce30654_0 - fribidi=1.0.16=hc919400_0 + - frozendict=2.4.6=py313hcdf3177_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gap-core=4.14.0=h25f1785_5 - - gap-defaults=4.14.0=hce30654_5 + - gap-core=4.15.1=h0c23a18_0 + - gap-defaults=4.15.1=hce30654_0 + - gdk-pixbuf=2.44.4=h7542897_0 - gf2x=1.3.0=hf8f8af4_3 - gfan=0.6.2=hec08f5c_1003 - gfortran=14.3.0=h3ef1dbf_0 - - gfortran_impl_osx-arm64=14.3.0=h969232b_1 + - gfortran_impl_osx-arm64=14.3.0=h6d03799_1 - gfortran_osx-arm64=14.3.0=h3c33bd0_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - givaro=4.2.0=h5331fe3_3 + - glib-tools=2.86.0=hb9d6e3a_1 - glpk=5.0=h6d7a090_0 - gmp=6.3.0=h7bae524_2 - - gmpy2=2.1.5=py313h2cdc120_3 + - gmpy2=2.2.1=py313h6d8efe1_1 - graphite2=1.3.14=hec049ff_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=hcd33d8b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=h6e638da_0 + - gtk3=3.24.43=h5febe37_6 + - gts=0.7.6=he42f4ea_4 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=haf38c7b_0 + - hicolor-icon-theme=0.17=hce30654_2 + - highs=1.11.0=ha024513_1 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hfee45f7_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=0.10.17=h73cadaf_1 - imagesize=1.4.1=pyhd8ed1ab_0 - iml=1.0.5=hd73f12c_1004 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh92f572d_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh5552912_0 - ipython=9.5.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -145,11 +165,13 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py313h8f79df9_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh31011fe_0 + - jupyter_core=5.9.1=pyhc90fa1f_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh534df25_0 @@ -157,11 +179,12 @@ dependencies: - krb5=1.21.3=h237132a_0 - lcalc=2.1.1=hdaf6845_0 - lcms2=2.17=h7eeda09_0 - - ld64=955.13=he86490a_4 - - ld64_osx-arm64=955.13=h6922315_4 + - ld64=955.13=he86490a_5 + - ld64_osx-arm64=955.13=llvm19_1_h6922315_5 - lerc=4.0.0=hd64df32_1 + - libarchive=3.8.2=gpl_h46575ef_100 - libasprintf=0.25.1=h493aca8_0 - - libblas=3.9.0=36_h51639a9_openblas + - libblas=3.9.0=37_h51639a9_openblas - libboost=1.85.0=hf763ba5_4 - libboost-devel=1.85.0=hf450f58_4 - libboost-headers=1.85.0=hce30654_4 @@ -170,64 +193,71 @@ dependencies: - libbrotlicommon=1.1.0=h6caf38d_4 - libbrotlidec=1.1.0=h6caf38d_4 - libbrotlienc=1.1.0=h6caf38d_4 - - libcblas=3.9.0=36_hb0561ab_openblas + - libcblas=3.9.0=37_hb0561ab_openblas - libclang-cpp19.1=19.1.7=default_h73dfc95_5 - - libcurl=8.14.1=h73640d1_0 - - libcxx=21.1.2=hf598326_0 + - libcurl=8.16.0=hdece5d2_0 + - libcxx=21.1.4=hf598326_0 - libcxx-devel=19.1.7=h6dc3340_1 - libdeflate=1.24=h5773f1b_0 - libedit=3.1.20250104=pl5321hafb1f1b_0 - libev=4.33=h93a5062_2 - libexpat=2.7.1=hec049ff_0 - - libffi=3.4.6=h1da3d7d_1 + - libffi=3.5.2=he5f378a_0 - libflint=3.2.2=hf825d4a_0 - libfreetype=2.14.1=hce30654_0 - libfreetype6=2.14.1=h6da58f4_0 - libgd=2.3.3=hb2c3a21_11 - libgettextpo=0.25.1=h493aca8_0 - - libgfortran=15.1.0=hfdf1602_1 + - libgfortran=15.2.0=hfcf01ff_1 - libgfortran-devel_osx-arm64=14.3.0=hc965647_1 - - libgfortran5=15.1.0=hb74de2c_1 - - libglib=2.86.0=h1bb475b_0 + - libgfortran5=15.2.0=h742603c_1 + - libglib=2.86.0=he69a767_1 - libhomfly=1.03=h6caf38d_0 - libiconv=1.18=h23cfdf5_2 - libintl=0.25.1=h493aca8_0 - libjpeg-turbo=3.1.0=h5505292_0 - - liblapack=3.9.0=36_hd9741b5_openblas - - liblapacke=3.9.0=36_h1b118fd_openblas + - liblapack=3.9.0=37_hd9741b5_openblas + - liblapacke=3.9.0=37_h1b118fd_openblas - libllvm19=19.1.7=h8e0c9ce_2 - liblzma=5.8.1=h39f12f2_2 - liblzma-devel=5.8.1=h39f12f2_2 + - libmamba=2.3.3=h1370271_2 + - libmambapy=2.3.3=py313h7196231_2 - libmpdec=4.0.0=h5505292_0 - libnghttp2=1.67.0=hc438710_0 - libopenblas=0.3.30=openmp_h60d53f8_2 - libpng=1.6.50=h280e0eb_1 + - librsvg=2.60.0=h5c55ec3_0 - libsodium=1.0.20=h99b78c6_0 + - libsolv=0.7.35=h5f525b2_0 - libsqlite=3.50.4=h4237e3c_0 - libssh2=1.11.1=h1590b86_0 - libtiff=4.7.1=h7dc4979_0 - libwebp-base=1.6.0=h07db88b_0 - libxcb=1.17.0=hdb1d25a_0 - - libxml2=2.15.0=h9329255_1 - - libxml2-16=2.15.0=h0ff4647_1 - - libxml2-devel=2.15.0=h9329255_1 + - libxml2=2.15.1=h9329255_0 + - libxml2-16=2.15.1=h0ff4647_0 + - libxml2-devel=2.15.1=h9329255_0 - libzlib=1.3.1=h8359307_2 - linbox=1.7.1=h08a833a_0 - - llvm-openmp=21.1.2=h4a912ad_3 + - llvm-openmp=21.1.4=h4a912ad_0 - llvm-tools=19.1.7=h855ad52_2 - llvm-tools-19=19.1.7=h91fd4e7_2 - lrcalc=2.1=hec049ff_8 + - lz4-c=1.10.0=h286801f_1 + - lzo=2.10=h925e9cb_1002 - m4=1.4.20=h5505292_0 - m4ri=20250128=h0f65c67_0 - m4rie=20250128=h0f65c67_0 - make=4.4.1=hc9fafa5_2 - markupsafe=3.0.3=py313h7d74516_0 - - matplotlib=3.10.6=py313h39782a4_1 - - matplotlib-base=3.10.6=py313h58042b9_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py313h39782a4_0 + - matplotlib-base=3.10.7=py313h58042b9_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - maxima=5.47.0=hd2c4bfb_3 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py313h20a7fcf_1 + - memory-allocator=0.1.3=py313hcdf3177_2 + - menuinst=2.4.1=py313h8f79df9_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - mistune=3.1.4=pyhcf101f3_0 @@ -236,26 +266,27 @@ dependencies: - mpfi=1.5.4=hbde5f5b_1001 - mpfr=4.2.1=hb693164_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py313hc50a443_1 + - msgpack-python=1.1.2=py313ha61f8ec_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.9.1=hf22a7ee_0 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h5e97a16_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h4f10f1e_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 - ntl=11.4.3=hbb3f309_1 - - numpy=2.3.3=py313h9771d21_0 + - numpy=2.3.4=py313h9771d21_0 - openblas=0.3.30=openmp_hea878ba_2 - openjpeg=2.5.4=hbfb3c88_0 - openssl=3.5.4=h5503f6c_0 - packaging=25.0=pyh29332c3_1 - palp=2.21=hc919400_0 - - pandoc=3.8.1=hce30654_0 + - pandoc=3.8.2.1=hce30654_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h875632e_0 - pari=2.17.2=h49d18c7_5_pthread @@ -274,8 +305,8 @@ dependencies: - pkg-config=0.29.2=hde07d2e_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hc919400_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hc919400_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - ppl=1.2=h8b147cf_1006 - pplpy=0.8.9=py313h6afad4e_2 @@ -284,18 +315,20 @@ dependencies: - primesieve=12.8=h286801f_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py313h6535dbc_0 + - psutil=7.1.1=py313h6535dbc_0 - pthread-stubs=0.4=hd74edd7_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=11=hc364b38_1 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py313hcdf3177_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py313hf3ab51e_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py313h2c089d5_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py313hbf151f7_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py313h6535dbc_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -304,11 +337,11 @@ dependencies: - pysocks=1.7.1=pyha55dd90_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.13.7=h5c937ed_100_cp313 + - python=3.13.9=hfc2f54d_101_cp313 - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.13.7=h4df99d1_100 + - python-gil=3.13.9=h4df99d1_101 - python-installer=0.7.0=pyhff2d567_1 - python-lrcalc=2.1=py313hb4b7877_8 - python-symengine=0.14.0=py313h17761ef_1 @@ -323,17 +356,19 @@ dependencies: - r-lattice=0.22_7=r44h6168396_1 - rapidfuzz=3.14.1=py313h0e822ff_0 - readline=8.2=h1d1bf99_2 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h5505292_0 + - reproc-cpp=14.2.5.post0=h286801f_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py313h80e0809_1 + - rpds-py=0.28.0=py313h2c089d5_1 - rpy2=3.6.4=py313r44hba5b986_1 - - ruamel.yaml=0.18.15=py313h6535dbc_1 - - ruamel.yaml.clib=0.2.12=py313hcdf3177_1 + - ruamel.yaml=0.18.16=py313h6535dbc_0 + - ruamel.yaml.clib=0.2.14=py313h6535dbc_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h492a034_0 + - ruff=0.14.2=h492a034_0 - rw=0.9=h93a5062_2 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 @@ -343,6 +378,7 @@ dependencies: - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 - sigtool=0.1.3=h44b9a77_0 + - simdjson=4.0.7=ha7d2532_0 - singular=4.4.1=h837545d_1 - sirocco=2.1.0=h41f8169_1 - six=1.17.0=pyhe01879c_1 @@ -361,7 +397,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hb5dd463_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=hddbed1c_1 - symmetrica=3.1.0=hc919400_0 - sympow=2.023.6=hc13a52f_4 @@ -372,32 +408,34 @@ dependencies: - tk=8.6.13=h892fb3f_2 - tktable=2.10=h3c7de25_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py313hcdf3177_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 - tzdata=2025b=h78e105d_0 - tzlocal=5.3.1=pyh8f84b5b_0 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=h194b5f9_0 - - virtualenv=20.34.0=pyhd8ed1ab_0 + - uv=0.9.5=h194b5f9_0 + - virtualenv=20.35.3=pyhd8ed1ab_0 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.3=py313hcdf3177_1 - - xattr=1.2.0=py313he42fbfc_1 + - xattr=1.3.0=py313h41b806d_0 - xorg-libxau=1.0.12=h5505292_0 - xorg-libxdmcp=1.1.5=hd74edd7_0 - xz=5.8.1=h9a6d368_2 - xz-gpl-tools=5.8.1=h9a6d368_2 - xz-tools=5.8.1=h39f12f2_2 - yaml=0.2.5=h925e9cb_3 + - yaml-cpp=0.8.0=ha1acc90_0 - zeromq=4.3.5=h888dc83_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h8359307_2 diff --git a/environment-3.13-win.yml b/environment-3.13-win.yml index bf23e391447..bce235c05af 100644 --- a/environment-3.13-win.yml +++ b/environment-3.13-win.yml @@ -1,7 +1,7 @@ name: sage-dev # Generated by conda-lock. # platform: win-64 -# input_hash: f4b04654e48d28bf58d7dc20604e4ceb00343d0ba41c3bb9bdce898c9db2c6a3 +# input_hash: 40f01d861e6cc0f2c778da945e52c01e30433dd0f45fd0ac0c182d33b70b291a channels: - conda-forge @@ -12,15 +12,16 @@ dependencies: - alabaster=1.0.0=pyhd8ed1ab_1 - annotated-types=0.7.0=pyhd8ed1ab_1 - appdirs=1.4.4=pyhd8ed1ab_1 + - archspec=0.2.5=pyhd8ed1ab_0 - asttokens=3.0.0=pyhd8ed1ab_1 - - attrs=25.3.0=pyh71513ae_0 + - attrs=25.4.0=pyh71513ae_0 - babel=2.17.0=pyhd8ed1ab_0 - backports=1.0=pyhd8ed1ab_5 - backports.tarfile=1.2.0=pyhd8ed1ab_1 - beautifulsoup4=4.14.2=pyha770c72_0 - - binutils_impl_win-64=2.44=h095e170_2 - - blas=2.136=openblas - - blas-devel=3.9.0=36_ha590de0_openblas + - binutils_impl_win-64=2.44=h1226360_4 + - blas=2.137=openblas + - blas-devel=3.9.0=37_ha590de0_openblas - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - boltons=25.0.0=pyhd8ed1ab_0 @@ -35,47 +36,55 @@ dependencies: - cachecontrol-with-filecache=0.14.3=pyhd8ed1ab_0 - cairo=1.18.4=h5782bbf_0 - certifi=2025.10.5=pyhd8ed1ab_0 - - cffi=2.0.0=py313h5ea7bf4_0 - - charset-normalizer=3.4.3=pyhd8ed1ab_0 + - cffi=2.0.0=py313h5ea7bf4_1 + - charset-normalizer=3.4.4=pyhd8ed1ab_0 - clang=19.1.7=default_hac490eb_5 - clang-19=19.1.7=default_hac490eb_5 - - click=8.3.0=pyh7428d3b_0 + - click=8.1.8=pyh7428d3b_0 - click-default-group=1.2.4=pyhd8ed1ab_1 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - compiler-rt=19.1.7=h49e36cd_1 - compiler-rt_win-64=19.1.7=h49e36cd_1 + - conda=25.9.1=py313hfa70ccb_0 + - conda-libmamba-solver=25.4.0=pyhd8ed1ab_0 - conda-lock=3.0.4=pyha6a9232_1 + - conda-package-handling=2.4.0=pyh7900ff3_2 + - conda-package-streaming=0.12.0=pyhd8ed1ab_0 + - conda-recipe-manager=0.7.1=pyhd8ed1ab_0 - conda-souschef=2.2.3=pyhd8ed1ab_0 - contourpy=1.3.3=py313hf069bd2_2 - conway-polynomials=0.10=pyhd8ed1ab_1 - - coverage=7.10.7=py313hd650c13_0 - - cpython=3.13.7=py313hd8ed1ab_100 + - coverage=7.11.0=py313hd650c13_0 + - cpp-expected=1.3.1=h477610d_0 + - cpython=3.13.9=py313hd8ed1ab_101 - crashtest=0.4.1=pyhd8ed1ab_1 - - cryptography=46.0.2=py313h392ebe0_0 - - curl=8.14.1=h88aaa65_0 + - cryptography=46.0.3=py313h392ebe0_0 + - curl=8.16.0=h43ecb02_0 - cycler=0.12.1=pyhd8ed1ab_1 - cysignals=1.12.5=py313hfe59770_0 - - cython=3.1.4=py313hb1c8229_2 + - cython=3.1.6=py313h560b0a0_0 - debugpy=1.8.17=py313h927ade5_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 - distlib=0.4.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_1 - docutils=0.21.2=pyhd8ed1ab_1 - double-conversion=3.3.1=he0c23c2_0 - dulwich=0.22.8=py313hf3b5b86_0 - - ensureconda=1.4.7=pyh29332c3_0 + - ensureconda=1.6.0=pyhcf101f3_0 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - execnet=2.1.1=pyhd8ed1ab_1 - executing=2.2.1=pyhd8ed1ab_0 - expat=2.7.1=hac47afa_0 - - filelock=3.19.1=pyhd8ed1ab_0 + - filelock=3.20.0=pyhd8ed1ab_0 - flake8=7.3.0=pyhd8ed1ab_0 - - flake8-rst-docstrings=0.3.1=pyhd8ed1ab_0 + - flake8-rst-docstrings=0.4.0=pyhd8ed1ab_0 - flang=19.1.7=hbeecb71_0 - flang_impl_win-64=19.1.7=h719f0c7_0 - flang_win-64=19.1.7=h719f0c7_0 + - fmt=12.0.0=h29169d4_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 @@ -86,30 +95,35 @@ dependencies: - fonttools=4.60.1=py313hd650c13_0 - fortran-compiler=1.11.0=h95e3450_0 - freetype=2.14.1=h57928b3_0 + - fribidi=1.0.16=hfd05255_0 + - frozendict=2.4.6=py313h5ea7bf4_1 - furo=2024.8.6=pyhd8ed1ab_2 - - gcc_impl_win-64=15.1.0=hb5bc704_5 - - gfortran_impl_win-64=15.1.0=h792c6fe_5 + - gcc_impl_win-64=15.2.0=h90e0b34_7 + - getopt-win32=0.1=h6a83c73_3 + - gfortran_impl_win-64=15.2.0=hd3d1e43_7 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.45=pyhff2d567_0 - glpk=5.0=h8ffe710_0 - gmp=6.3.0=hfeafd45_2 - - gmpy2=2.1.5=py313h0a46711_3 + - gmpy2=2.2.1=py313hb6bface_1 - graphite2=1.3.14=hac47afa_2 - - grayskull=2.9.1=pyhd8ed1ab_0 + - graphviz=13.1.2=ha5e8f4b_0 + - grayskull=2.9.1=pyhcf101f3_1 - gsl=2.7=hdfb1a43_0 - - gxx_impl_win-64=15.1.0=h91e354b_5 + - gts=0.7.6=h6b5321d_4 + - gxx_impl_win-64=15.2.0=h4517dcd_7 - h2=4.3.0=pyhcf101f3_0 - harfbuzz=12.1.0=h5f2951f_0 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=he0c23c2_0 - - idna=3.10=pyhd8ed1ab_1 + - idna=3.11=pyhd8ed1ab_0 - igraph=1.0.0=h9eeb67d_0 - imagesize=1.4.1=pyhd8ed1ab_0 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - - iniconfig=2.0.0=pyhd8ed1ab_1 - - ipykernel=6.30.1=pyh3521513_0 + - iniconfig=2.3.0=pyhd8ed1ab_0 + - ipykernel=7.0.1=pyh6dadd2b_0 - ipython=9.5.0=pyh6be1c34_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 @@ -118,108 +132,120 @@ dependencies: - jaraco.functools=4.3.0=pyhd8ed1ab_0 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 + - jsonpatch=1.33=pyhd8ed1ab_1 + - jsonpointer=3.0.0=py313hfa70ccb_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - jupyter-sphinx=0.5.3=pyha770c72_5 - jupyter_client=8.6.3=pyhd8ed1ab_1 - - jupyter_core=5.8.1=pyh5737063_0 + - jupyter_core=5.9.1=pyh6dadd2b_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - keyring=25.6.0=pyh7428d3b_0 - kiwisolver=1.4.9=py313h1a38498_1 - krb5=1.21.3=hdf4eb48_0 - lcms2=2.17=hbcf6048_0 - - ld_impl_win-64=2.44=hae1bf67_2 + - ld_impl_win-64=2.44=h13c207b_4 - lerc=4.0.0=h6470a55_1 - - libblas=3.9.0=36_h0adab6e_openblas + - libarchive=3.8.2=gpl_h26aea39_100 + - libblas=3.9.0=37_h0adab6e_openblas - libboost=1.85.0=h444863b_4 - libboost-devel=1.85.0=h91493d7_4 - libboost-headers=1.85.0=h57928b3_4 - libbrotlicommon=1.1.0=hfd05255_4 - libbrotlidec=1.1.0=hfd05255_4 - libbrotlienc=1.1.0=hfd05255_4 - - libcblas=3.9.0=36_h2a8eebe_openblas - - libclang13=21.1.2=default_ha2db4b5_1 - - libcurl=8.14.1=h88aaa65_0 + - libcblas=3.9.0=37_h2a8eebe_openblas + - libclang13=21.1.4=default_ha2db4b5_0 + - libcurl=8.16.0=h43ecb02_0 - libdeflate=1.24=h76ddb4d_0 - libexpat=2.7.1=hac47afa_0 - - libffi=3.4.6=h537db12_1 + - libffi=3.5.2=h52bdfb6_0 - libflang=19.1.7=he0c23c2_0 - libflint=3.2.2=h4de658f_0 - libfreetype=2.14.1=h57928b3_0 - libfreetype6=2.14.1=hdbac1cb_0 - - libgcc=15.1.0=h1383e82_5 - - libgcc-devel_win-64=15.1.0=hec057c1_105 + - libgcc=15.2.0=h1383e82_7 + - libgcc-devel_win-64=15.2.0=h40631e7_107 - libgd=2.3.3=h7208af6_11 - - libgfortran=15.1.0=h719f0c7_5 - - libgfortran5=15.1.0=h997fb6f_5 - - libglib=2.86.0=h5f26cbf_0 - - libgomp=15.1.0=h1383e82_5 + - libgfortran=15.2.0=h719f0c7_7 + - libgfortran5=15.2.0=hf2bee02_7 + - libglib=2.86.0=hd9c3897_1 + - libgomp=15.2.0=h1383e82_7 - libiconv=1.18=hc1393d2_2 - libintl=0.22.5=h5728263_3 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=36_hd232482_openblas - - liblapacke=3.9.0=36_hbb0e6ff_openblas + - liblapack=3.9.0=37_hd232482_openblas + - liblapacke=3.9.0=37_hbb0e6ff_openblas - libllvm19=19.1.7=h830ff33_2 - liblzma=5.8.1=h2466b09_2 - liblzma-devel=5.8.1=h2466b09_2 + - libmamba=2.3.3=h5fbfb43_1 + - libmambapy=2.3.3=py313h17165e1_1 - libmpdec=4.0.0=h2466b09_0 - libopenblas=0.3.30=pthreads_ha4fe6b2_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 + - libsolv=0.7.35=h8883371_0 - libsqlite=3.50.4=hf5d6505_0 - libssh2=1.11.1=h9aa295b_0 - - libstdcxx=15.1.0=h904f734_5 - - libstdcxx-devel_win-64=15.1.0=hec057c1_105 + - libstdcxx=15.2.0=h904f734_7 + - libstdcxx-devel_win-64=15.2.0=h40631e7_107 - libtiff=4.7.1=h550210a_0 - - libvulkan-loader=1.4.313.0=h477610d_1 + - libvulkan-loader=1.4.328.1=h477610d_0 - libwebp-base=1.6.0=h4d5522a_0 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - libxcb=1.17.0=h0e4246c_0 - - libxml2=2.15.0=ha29bfb0_1 - - libxml2-16=2.15.0=h06f855e_1 - - libxml2-devel=2.15.0=ha29bfb0_1 + - libxml2=2.15.1=ha29bfb0_0 + - libxml2-16=2.15.1=h06f855e_0 + - libxml2-devel=2.15.1=ha29bfb0_0 - libxslt=1.1.43=h0fbe4c1_1 - libzlib=1.3.1=h2466b09_2 - - lld=21.1.2=hc465015_0 + - lld=21.1.4=hc465015_0 - llvm-tools=19.1.7=h752b59f_2 - - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - lz4-c=1.10.0=h2466b09_1 + - lzo=2.10=h6a83c73_1002 + - m2-conda-epoch=20250515=0_x86_64 + - m2w64-sysroot_win-64=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - m4ri=20250128=h26c196c_0 - markupsafe=3.0.3=py313hd650c13_0 - - matplotlib=3.10.6=py313hfa70ccb_1 - - matplotlib-base=3.10.6=py313he1ded55_1 - - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - matplotlib=3.10.7=py313hfa70ccb_0 + - matplotlib-base=3.10.7=py313he1ded55_0 + - matplotlib-inline=0.2.1=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_1 - - memory-allocator=0.1.3=py313ha7868ed_1 + - memory-allocator=0.1.3=py313h5ea7bf4_2 + - menuinst=2.4.1=py313hfe59770_0 - meson=1.9.0=pyhcf101f3_0 - meson-python=0.18.0=pyh70fd9c4_0 - - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 - - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-crt-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 + - mingw-w64-ucrt-x86_64-headers-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mingw-w64-ucrt-x86_64-windows-default-manifest=6.4=he206cdd_7 - - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=h7428d3b_9 + - mingw-w64-ucrt-x86_64-winpthreads-git=12.0.0.r4.gg4f2fc60ca=hd8ed1ab_10 - mistune=3.1.4=pyhcf101f3_0 - more-itertools=10.8.0=pyhd8ed1ab_0 - mpc=1.3.1=h72bc38f_1 - mpfr=4.2.1=hbc20e70_3 - mpmath=1.3.0=pyhd8ed1ab_1 - - msgpack-python=1.1.1=py313hf069bd2_1 + - msgpack-python=1.1.2=py313hf069bd2_0 - munkres=1.1.4=pyhd8ed1ab_1 - nauty=2.6.11=h2fa13f4_1 - nbclient=0.10.2=pyhd8ed1ab_0 - - nbconvert=7.16.6=hb482800_0 - - nbconvert-core=7.16.6=pyh29332c3_0 - - nbconvert-pandoc=7.16.6=hed9df3c_0 + - nbconvert=7.16.6=hc388f54_1 + - nbconvert-core=7.16.6=pyhcf101f3_1 + - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.10.4=pyhd8ed1ab_1 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - networkx=3.5=pyhe01879c_0 - ninja=1.13.1=h477610d_0 - - numpy=2.3.3=py313hce7ae62_0 + - nlohmann_json-abi=3.12.0=h0f90c79_1 + - numpy=2.3.4=py313hce7ae62_0 - openblas=0.3.30=pthreads_h4a7f399_2 - openjpeg=2.5.4=h24db6dd_0 - openssl=3.5.4=h725018a_0 - packaging=25.0=pyh29332c3_1 - - pandoc=3.8.1=h57928b3_0 + - pandoc=3.8.2.1=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 + - pango=1.56.4=h03d888a_0 - pari=2.17.2=h637a547_5_pthread - pari-elldata=0.0.20161017=0 - pari-galdata=0.0.20180411=0 @@ -236,24 +262,26 @@ dependencies: - pkg-config=0.29.2=h88c491f_1009 - pkgconfig=1.5.5=pyhd8ed1ab_5 - pkginfo=1.12.1.2=pyhd8ed1ab_0 - - planarity=4.0.0.0=hfd05255_0 - - platformdirs=4.4.0=pyhcf101f3_0 + - planarity=4.0.1.0=hfd05255_0 + - platformdirs=4.5.0=pyhcf101f3_0 - pluggy=1.6.0=pyhd8ed1ab_0 - primesieve=12.8=he0c23c2_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - prompt-toolkit=3.0.52=pyha770c72_0 - - psutil=7.1.0=py313h5ea7bf4_0 + - psutil=7.1.1=py313h5ea7bf4_0 - pthread-stubs=0.4=h0e40799_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 + - pybind11-abi=4=hd8ed1ab_3 - pycodestyle=2.14.0=pyhd8ed1ab_0 - pycosat=0.6.6=py313h5ea7bf4_3 - pycparser=2.22=pyh29332c3_1 - - pydantic=2.11.10=pyh3cfb1c2_0 - - pydantic-core=2.33.2=py313ha8a9a3c_0 + - pydantic=2.12.3=pyh3cfb1c2_0 + - pydantic-core=2.41.4=py313hfbe8231_0 - pyflakes=3.4.0=pyhd8ed1ab_0 - pygithub=2.8.1=pyhd8ed1ab_0 - pygments=2.19.2=pyhd8ed1ab_0 + - pygraphviz=1.14=py313ha0607a2_2 - pyjwt=2.10.1=pyhd8ed1ab_0 - pynacl=1.6.0=py313h5ea7bf4_0 - pyparsing=3.2.5=pyhcf101f3_0 @@ -263,11 +291,11 @@ dependencies: - pysocks=1.7.1=pyh09c184e_7 - pytest=8.4.2=pyhd8ed1ab_0 - pytest-xdist=3.8.0=pyhd8ed1ab_0 - - python=3.13.7=hdf00ec1_100_cp313 + - python=3.13.9=h09917c8_101_cp313 - python-build=1.3.0=pyhff2d567_0 - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.2=pyhe01879c_0 - - python-gil=3.13.7=h4df99d1_100 + - python-gil=3.13.9=h4df99d1_101 - python-installer=0.7.0=pyhff2d567_1 - python-symengine=0.14.0=py313h9ea13ff_1 - python-utils=3.9.1=pyhff2d567_1 @@ -278,20 +306,22 @@ dependencies: - pyyaml=6.0.3=py313hd650c13_0 - pyzmq=27.1.0=py312hbb5da91_0 - qhull=2020.2=hc790b64_5 - - qt6-main=6.9.3=ha0de62e_0 + - qt6-main=6.9.3=ha0de62e_1 - r-base=4.5.1=h4076d79_3 - r-lattice=0.22_7=r45heceb674_1 - rapidfuzz=3.14.1=py313hfe59770_0 - - referencing=0.36.2=pyh29332c3_0 + - referencing=0.37.0=pyhcf101f3_0 + - reproc=14.2.5.post0=h2466b09_0 + - reproc-cpp=14.2.5.post0=he0c23c2_0 - requests=2.32.5=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_1 - restructuredtext_lint=1.4.0=pyhd8ed1ab_1 - roman-numerals-py=3.1.0=pyhd8ed1ab_0 - - rpds-py=0.27.1=py313hfbe8231_1 - - ruamel.yaml=0.18.15=py313h5ea7bf4_1 - - ruamel.yaml.clib=0.2.12=py313h5ea7bf4_1 + - rpds-py=0.28.0=py313hfbe8231_1 + - ruamel.yaml=0.18.16=py313h5ea7bf4_0 + - ruamel.yaml.clib=0.2.14=py313h5ea7bf4_0 - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 - - ruff=0.13.3=h3e3edff_0 + - ruff=0.14.2=h3e3edff_0 - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 - sagemath-db-graphs=20210214=hd8ed1ab_0 - sagemath-db-polytopes=20170220=1 @@ -299,6 +329,7 @@ dependencies: - semver=3.0.4=pyhd8ed1ab_0 - setuptools=80.9.0=pyhff2d567_0 - shellingham=1.5.4=pyhd8ed1ab_1 + - simdjson=4.0.7=h49e36cd_0 - six=1.17.0=pyhe01879c_1 - smmap=5.0.2=pyhd8ed1ab_0 - snowballstemmer=3.0.1=pyhd8ed1ab_0 @@ -315,7 +346,7 @@ dependencies: - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 - sqlite=3.50.4=hdb435a2_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - stdlib-list=0.11.1=pyhd8ed1ab_0 + - stdlib-list=0.12.0=pyhd8ed1ab_0 - symengine=0.14.0=h1ba984b_1 - symmetrica=3.1.0=h1056bf2_0 - sympy=1.14.0=pyh04b8f61_5 @@ -323,32 +354,33 @@ dependencies: - tk=8.6.13=h2c6b04d_2 - tktable=2.10=h7e9e0db_7 - toml=0.10.2=pyhd8ed1ab_1 - - tomli=2.2.1=pyhe01879c_2 + - tomli=2.3.0=pyhcf101f3_0 - tomli-w=1.2.0=pyhd8ed1ab_0 - tomlkit=0.13.3=pyha770c72_0 - tornado=6.5.2=py313h5ea7bf4_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trove-classifiers=2025.9.11.17=pyhd8ed1ab_0 + - truststore=0.10.3=pyhe01879c_0 - typing-extensions=4.15.0=h396c80c_0 - typing-inspection=0.4.2=pyhd8ed1ab_0 - typing_extensions=4.15.0=pyhcf101f3_0 - tzdata=2025b=h78e105d_0 - ucrt=10.0.26100.0=h57928b3_0 - urllib3=2.5.0=pyhd8ed1ab_0 - - uv=0.8.22=ha1006f7_0 - - vc=14.3=h41ae7f8_31 - - vc14_runtime=14.44.35208=h818238b_31 - - vcomp14=14.44.35208=h818238b_31 - - virtualenv=20.34.0=pyhd8ed1ab_0 - - vs2015_runtime=14.44.35208=h38c0c73_31 - - vs2022_win-64=19.44.35207=ha74f236_31 + - uv=0.9.5=ha1006f7_0 + - vc=14.3=h2b53caa_32 + - vc14_runtime=14.44.35208=h818238b_32 + - vcomp14=14.44.35208=h818238b_32 + - virtualenv=20.35.3=pyhd8ed1ab_0 + - vs2015_runtime=14.44.35208=h38c0c73_32 + - vs2022_win-64=19.44.35207=ha74f236_32 - vswhere=3.1.7=h40126e0_1 - wcwidth=0.2.14=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_10 - wrapt=1.17.3=py313h5ea7bf4_1 - xorg-libice=1.1.2=h0e40799_0 - xorg-libsm=1.2.6=h0e40799_0 @@ -361,6 +393,7 @@ dependencies: - xz=5.8.1=h208afaa_2 - xz-tools=5.8.1=h2466b09_2 - yaml=0.2.5=h6a83c73_3 + - yaml-cpp=0.8.0=he0c23c2_0 - zeromq=4.3.5=h5bddc39_9 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h2466b09_2 diff --git a/src/sage/numerical/backends/generic_backend.pyx b/src/sage/numerical/backends/generic_backend.pyx index edda183ade9..cdcff372898 100644 --- a/src/sage/numerical/backends/generic_backend.pyx +++ b/src/sage/numerical/backends/generic_backend.pyx @@ -1633,7 +1633,7 @@ def default_mip_solver(solver=None): return default_solver else: - for s in ["Cplex", "Gurobi", "Cvxpy/cbc", "Coin", "Glpk", "SCIP"]: + for s in ["Cplex", "Gurobi", "Cvxpy/cbc", "Coin", "Glpk", "Highs", "SCIP"]: try: default_mip_solver(s) return s @@ -1684,6 +1684,13 @@ def default_mip_solver(solver=None): elif solver == "Glpk" or solver == "Glpk/exact": default_solver = solver + elif solver == "Highs": + try: + from sage.numerical.backends.highs_backend import HiGHSBackend + default_solver = solver + except ImportError: + raise ValueError("HiGHS is not available. Please refer to the documentation to install it.") + elif solver == "Interactivelp": default_solver = solver @@ -1713,7 +1720,7 @@ def default_mip_solver(solver=None): raise ValueError("SCIP is not available. Please refer to the documentation to install it.") else: - raise ValueError("'solver' should be set to 'GLPK', 'Coin', 'CPLEX', 'CVXOPT', 'CVXPY', 'Gurobi', 'PPL', 'SCIP', 'InteractiveLP', a callable, or None.") + raise ValueError("'solver' should be set to 'GLPK', 'HiGHS', 'Coin', 'CPLEX', 'CVXOPT', 'CVXPY', 'Gurobi', 'PPL', 'SCIP', 'InteractiveLP', a callable, or None.") cpdef GenericBackend get_solver(constraint_generation=False, solver=None, base_ring=None): @@ -1852,6 +1859,10 @@ cpdef GenericBackend get_solver(constraint_generation=False, solver=None, base_r from sage.numerical.backends.glpk_exact_backend import GLPKExactBackend return GLPKExactBackend() + elif solver == "Highs": + from sage.numerical.backends.highs_backend import HiGHSBackend + return HiGHSBackend() + elif solver == "Cplex": from sage_numerical_backends_cplex.cplex_backend import CPLEXBackend return CPLEXBackend() @@ -1884,4 +1895,4 @@ cpdef GenericBackend get_solver(constraint_generation=False, solver=None, base_r return SCIPBackend() else: - raise ValueError("'solver' should be set to 'GLPK', 'GLPK/exact', 'Coin', 'CPLEX', 'CVXOPT', 'CVXPY', 'Gurobi', 'PPL', 'SCIP', 'InteractiveLP', None (in which case the default one is used), or a callable.") + raise ValueError("'solver' should be set to 'GLPK', 'GLPK/exact', 'Coin', 'CPLEX', 'CVXOPT', 'CVXPY', 'Gurobi', 'HiGHS', 'PPL', 'SCIP', 'InteractiveLP', None (in which case the default one is used), or a callable.") diff --git a/src/sage/numerical/backends/highs_backend.pxd b/src/sage/numerical/backends/highs_backend.pxd new file mode 100644 index 00000000000..526a159763e --- /dev/null +++ b/src/sage/numerical/backends/highs_backend.pxd @@ -0,0 +1,33 @@ +#***************************************************************************** +# Copyright (C) 2025 SageMath Developers +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from sage.numerical.backends.generic_backend cimport GenericBackend + +cdef class HiGHSBackend(GenericBackend): + cdef void* highs + cdef str prob_name + cdef dict col_name_var + cdef dict row_name_var + cdef dict row_data_cache + cdef int numcols + cdef int numrows + cdef void _get_col_bounds(self, int col, double* lb, double* ub) except * + cdef void _get_row_bounds(self, int row, double* lb, double* ub) except * + cpdef __copy__(self) + cpdef get_row_prim(self, int i) + cpdef double get_row_dual(self, int i) except? -1 + cpdef double get_col_dual(self, int j) except? -1 + cpdef int get_row_stat(self, int i) except? -1 + cpdef int get_col_stat(self, int j) except? -1 + cpdef set_row_stat(self, int i, int stat) + cpdef set_col_stat(self, int j, int stat) + cpdef int warm_up(self) noexcept + cpdef int add_variable_with_type(self, int vtype, lower_bound=*, upper_bound=*, + obj=*, name=*) except -1 \ No newline at end of file diff --git a/src/sage/numerical/backends/highs_backend.pyx b/src/sage/numerical/backends/highs_backend.pyx new file mode 100644 index 00000000000..6a3fb78a665 --- /dev/null +++ b/src/sage/numerical/backends/highs_backend.pyx @@ -0,0 +1,2795 @@ +""" +HiGHS Backend + +AUTHORS: + +- Chenxin Zhong (chenxin.zhong@outlook.com): initial implementation + +This backend uses the HiGHS optimization solver C API, which supports Linear Programming (LP), +Quadratic Programming (QP), and Mixed Integer Programming (MIP). + +HiGHS is available under the MIT License. +""" + +# **************************************************************************** +# Copyright (C) 2025 SageMath Developers +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# https://www.gnu.org/licenses/ +# **************************************************************************** + +from sage.numerical.mip import MIPSolverException +from copy import copy +from cysignals.signals cimport sig_on, sig_off + +# C standard library for memory allocation +cdef extern from "stdlib.h": + void* malloc(size_t size) nogil + void free(void* ptr) nogil + +# Declare HiGHS C API - all functions are declared with nogil for use with sig_on/sig_off +cdef extern from "highs/interfaces/highs_c_api.h": + ctypedef int HighsInt + + # Constants from C API + const HighsInt kHighsStatusError + const HighsInt kHighsStatusOk + const HighsInt kHighsStatusWarning + + const HighsInt kHighsVarTypeContinuous + const HighsInt kHighsVarTypeInteger + const HighsInt kHighsVarTypeSemiContinuous + const HighsInt kHighsVarTypeSemiInteger + + const HighsInt kHighsObjSenseMinimize + const HighsInt kHighsObjSenseMaximize + + const HighsInt kHighsModelStatusNotset + const HighsInt kHighsModelStatusLoadError + const HighsInt kHighsModelStatusModelError + const HighsInt kHighsModelStatusOptimal + const HighsInt kHighsModelStatusInfeasible + const HighsInt kHighsModelStatusUnboundedOrInfeasible + const HighsInt kHighsModelStatusUnbounded + const HighsInt kHighsModelStatusTimeLimit + const HighsInt kHighsModelStatusIterationLimit + const HighsInt kHighsModelStatusInterrupt + const HighsInt kHighsModelStatusMemoryLimit + + const HighsInt kHighsBasisStatusLower + const HighsInt kHighsBasisStatusBasic + const HighsInt kHighsBasisStatusUpper + const HighsInt kHighsBasisStatusZero + const HighsInt kHighsBasisStatusNonbasic + + # Core functions + void* Highs_create() nogil + void Highs_destroy(void* highs) nogil + HighsInt Highs_run(void* highs) nogil + + # Model building + HighsInt Highs_addCol(void* highs, double cost, double lower, double upper, + HighsInt num_nz, const HighsInt* index, const double* value) nogil + HighsInt Highs_addRow(void* highs, double lower, double upper, + HighsInt num_nz, const HighsInt* index, const double* value) nogil + HighsInt Highs_addCols(void* highs, HighsInt num_new_col, const double* costs, + const double* lower, const double* upper, HighsInt num_new_nz, + const HighsInt* starts, const HighsInt* indices, const double* values) nogil + HighsInt Highs_addRows(void* highs, HighsInt num_new_row, const double* lower, + const double* upper, HighsInt num_new_nz, const HighsInt* starts, + const HighsInt* indices, const double* values) nogil + + # Objective + HighsInt Highs_changeObjectiveSense(void* highs, HighsInt sense) nogil + HighsInt Highs_changeColCost(void* highs, HighsInt col, double cost) nogil + HighsInt Highs_changeObjectiveOffset(void* highs, double offset) nogil + + # Bounds + HighsInt Highs_changeColBounds(void* highs, HighsInt col, double lower, double upper) nogil + HighsInt Highs_changeRowBounds(void* highs, HighsInt row, double lower, double upper) nogil + + # Integrality + HighsInt Highs_changeColIntegrality(void* highs, HighsInt col, HighsInt integrality) nogil + HighsInt Highs_getColIntegrality(const void* highs, HighsInt col, HighsInt* integrality) nogil + + # Solution queries + HighsInt Highs_getSolution(void* highs, double* col_value, double* col_dual, + double* row_value, double* row_dual) nogil + HighsInt Highs_getBasis(void* highs, HighsInt* col_status, HighsInt* row_status) nogil + + # Info queries + HighsInt Highs_getModelStatus(const void* highs) nogil + HighsInt Highs_getNumCol(const void* highs) nogil + HighsInt Highs_getNumRow(const void* highs) nogil + HighsInt Highs_getNumNz(const void* highs) nogil + double Highs_getInfinity(const void* highs) nogil + double Highs_getObjectiveValue(const void* highs) nogil + HighsInt Highs_getDoubleInfoValue(const void* highs, const char* info, double* value) nogil + HighsInt Highs_getIntInfoValue(const void* highs, const char* info, HighsInt* value) nogil + HighsInt Highs_getObjectiveSense(const void* highs, HighsInt* sense) nogil + HighsInt Highs_getObjectiveOffset(const void* highs, double* offset) nogil + + # Get columns/rows data + HighsInt Highs_getColsByRange(const void* highs, HighsInt from_col, HighsInt to_col, + HighsInt* num_col, double* costs, double* lower, double* upper, + HighsInt* num_nz, HighsInt* matrix_start, HighsInt* matrix_index, + double* matrix_value) nogil + + # Name functions + HighsInt Highs_passColName(void* highs, HighsInt col, const char* name) nogil + HighsInt Highs_passRowName(void* highs, HighsInt row, const char* name) nogil + + # Options + HighsInt Highs_setBoolOptionValue(void* highs, const char* option, HighsInt value) nogil + HighsInt Highs_setIntOptionValue(void* highs, const char* option, HighsInt value) nogil + HighsInt Highs_setDoubleOptionValue(void* highs, const char* option, double value) nogil + HighsInt Highs_setStringOptionValue(void* highs, const char* option, const char* value) nogil + HighsInt Highs_getBoolOptionValue(const void* highs, const char* option, HighsInt* value) nogil + HighsInt Highs_getIntOptionValue(const void* highs, const char* option, HighsInt* value) nogil + HighsInt Highs_getDoubleOptionValue(const void* highs, const char* option, double* value) nogil + HighsInt Highs_getStringOptionValue(const void* highs, const char* option, char* value) nogil + + # Write model + HighsInt Highs_writeModel(void* highs, const char* filename) nogil + HighsInt Highs_readModel(void* highs, const char* filename) nogil + + # Basis functions + HighsInt Highs_setBasic(void* highs, HighsInt* col_status, HighsInt* row_status) nogil + HighsInt Highs_setBasis(void* highs, const HighsInt* col_status, const HighsInt* row_status) nogil + + # Delete functions + HighsInt Highs_deleteRowsByRange(void* highs, HighsInt from_row, HighsInt to_row) nogil + HighsInt Highs_deleteColsByRange(void* highs, HighsInt from_col, HighsInt to_col) nogil + HighsInt Highs_deleteRowsBySet(void* highs, HighsInt num_set_entries, const HighsInt* set) nogil + HighsInt Highs_deleteColsBySet(void* highs, HighsInt num_set_entries, const HighsInt* set) nogil + + # Change coefficient + HighsInt Highs_changeCoeff(void* highs, HighsInt row, HighsInt col, double value) nogil + + # Model data access + HighsInt Highs_getRowsByRange(const void* highs, HighsInt from_row, HighsInt to_row, + HighsInt* num_row, double* lower, double* upper, HighsInt* num_nz, + HighsInt* matrix_start, HighsInt* matrix_index, double* matrix_value) nogil + + # Model data access + HighsInt Highs_getColsByRange(const void* highs, HighsInt from_col, HighsInt to_col, + HighsInt* num_col, double* costs, double* lower, double* upper, + HighsInt* num_nz, HighsInt* matrix_start, HighsInt* matrix_index, + double* matrix_value) nogil + + # Names (these are not nogil since they deal with strings) + HighsInt Highs_getColName(const void* highs, HighsInt col, char* name) + HighsInt Highs_getRowName(const void* highs, HighsInt row, char* name) + + +cdef class HiGHSBackend(GenericBackend): + """ + MIP Backend that uses the HiGHS solver via C API. + + HiGHS is a high-performance solver for large-scale LP, QP, and MIP. + This implementation uses the HiGHS C API directly for optimal performance + and proper interrupt handling with sig_on/sig_off. + """ + + def __cinit__(self, maximization=True): + """ + Constructor. + + EXAMPLES:: + + sage: p = MixedIntegerLinearProgram(solver='HiGHS') + """ + # Create HiGHS instance + self.highs = Highs_create() + if self.highs == NULL: + raise MemoryError("Failed to create HiGHS instance") + + # Initialize metadata + self.prob_name = "" + self.col_name_var = {} + self.row_name_var = {} + self.row_data_cache = {} + self.numcols = 0 + self.numrows = 0 + self.obj_constant_term = 0.0 + + # Suppress HiGHS output messages + Highs_setBoolOptionValue(self.highs, b"log_to_console", 0) + + # Set optimization sense + if maximization: + self.set_sense(+1) + else: + self.set_sense(-1) + + def __dealloc__(self): + """ + Destructor - free HiGHS instance. + """ + if self.highs != NULL: + Highs_destroy(self.highs) + self.highs = NULL + + cdef void _get_col_bounds(self, int col, double* lb, double* ub) except *: + """ + Helper method to get column bounds using Highs_getColsByRange. + """ + cdef HighsInt num_col, num_nz, status + + sig_on() + status = Highs_getColsByRange(self.highs, col, col, + &num_col, NULL, lb, ub, + &num_nz, NULL, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get column bounds") + + cdef void _get_row_bounds(self, int row, double* lb, double* ub) except *: + """ + Helper method to get row bounds using Highs_getRowsByRange. + """ + cdef HighsInt num_row, num_nz, status + + sig_on() + status = Highs_getRowsByRange(self.highs, row, row, + &num_row, lb, ub, + &num_nz, NULL, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get row bounds") + + cpdef int add_variable(self, lower_bound=0.0, upper_bound=None, binary=False, + continuous=False, integer=False, obj=0.0, name=None) except -1: + """ + Add a variable. + + This amounts to adding a new column to the matrix. By default, + the variable is both positive, real and the coefficient in the + objective function is 0.0. + + INPUT: + + - ``lower_bound`` -- the lower bound of the variable (default: 0) + + - ``upper_bound`` -- the upper bound of the variable (default: ``None``) + + - ``binary`` -- ``True`` if the variable is binary (default: ``False``) + + - ``continuous`` -- ``True`` if the variable is continuous (default: ``True``) + + - ``integer`` -- ``True`` if the variable is integral (default: ``False``) + + - ``obj`` -- (optional) coefficient of this variable in the objective function (default: 0.0) + + - ``name`` -- an optional name for the newly added variable (default: ``None``) + + OUTPUT: the index of the newly created variable + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.ncols() + 0 + sage: p.add_variable() + 0 + sage: p.ncols() + 1 + sage: p.add_variable(binary=True) + 1 + sage: p.add_variable(lower_bound=-2.0, integer=True) + 2 + sage: p.add_variable(continuous=True, integer=True) + Traceback (most recent call last): + ... + ValueError: ... + sage: p.add_variable(name='x', obj=1.0) + 3 + sage: p.col_name(3) + 'x' + sage: p.objective_coefficient(3) + 1.0 + """ + cdef HighsInt var_type + cdef double lb, ub + cdef HighsInt status + cdef HighsInt col_idx + + # Determine variable type + if integer and continuous: + raise ValueError("Variable cannot be both continuous and integer") + elif integer and binary: + raise ValueError("Variable cannot be both binary and integer") + elif continuous and binary: + raise ValueError("Variable cannot be both binary and continuous") + elif continuous and integer and binary: + raise ValueError("Variable cannot be binary, continuous, and integer simultaneously") + elif binary: + var_type = kHighsVarTypeInteger + lb = 0.0 + ub = 1.0 + elif integer: + var_type = kHighsVarTypeInteger + else: + var_type = kHighsVarTypeContinuous + + # Set bounds + if lower_bound is None: + if binary: + lb = 0.0 + else: + lb = -Highs_getInfinity(self.highs) + else: + lb = float(lower_bound) + + if upper_bound is None: + if binary: + ub = 1.0 + else: + ub = Highs_getInfinity(self.highs) + else: + ub = float(upper_bound) + + # Add column with empty constraint coefficients + sig_on() + status = Highs_addCol(self.highs, float(obj), lb, ub, 0, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to add variable") + + col_idx = self.numcols + self.numcols += 1 + + # Set integrality if needed + if var_type == kHighsVarTypeInteger: + sig_on() + status = Highs_changeColIntegrality(self.highs, col_idx, kHighsVarTypeInteger) + sig_off() + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set variable integrality") + + # Set name if provided + if name is not None: + name_bytes = str(name).encode('utf-8') + Highs_passColName(self.highs, col_idx, name_bytes) + self.col_name_var[col_idx] = str(name) + + return col_idx + + cpdef int add_variable_with_type(self, int vtype, lower_bound=0.0, upper_bound=None, + obj=0.0, name=None) except -1: + """ + Add a variable with type specified as an integer. + + This amounts to adding a new column to the matrix. By default, + the variable is positive and real, and the coefficient in the + objective function is 0.0. + + INPUT: + + - ``vtype`` -- integer specifying the variable type: + + * ``1`` = Integer + * ``0`` = Binary + * ``-1`` = Real (Continuous) + + - ``lower_bound`` -- the lower bound of the variable (default: 0) + + - ``upper_bound`` -- the upper bound of the variable (default: ``None``) + + - ``obj`` -- (optional) coefficient of this variable in the objective function (default: 0.0) + + - ``name`` -- an optional name for the newly added variable (default: ``None``) + + OUTPUT: the index of the newly created variable + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.ncols() + 0 + sage: p.add_variable_with_type(-1) # Continuous variable + 0 + sage: p.is_variable_continuous(0) + True + sage: p.add_variable_with_type(0) # Binary variable + 1 + sage: p.is_variable_binary(1) + True + sage: p.add_variable_with_type(1, lower_bound=-2.0) # Integer variable + 2 + sage: p.is_variable_integer(2) + True + sage: p.add_variable_with_type(1, name='x', obj=1.0) + 3 + sage: p.col_name(3) + 'x' + sage: p.objective_coefficient(3) + 1.0 + + TESTS: + + Invalid variable type raises an error:: + + sage: p.add_variable_with_type(2) + Traceback (most recent call last): + ... + ValueError: Invalid variable type 2. Must be -1 (continuous), 0 (binary), or 1 (integer) + """ + cdef HighsInt var_type + cdef double lb, ub + cdef HighsInt status + cdef HighsInt col_idx + + # Validate and determine variable type + if vtype == 1: + # Integer + var_type = kHighsVarTypeInteger + elif vtype == 0: + # Binary - set type to integer with bounds [0,1] + var_type = kHighsVarTypeInteger + elif vtype == -1: + # Continuous + var_type = kHighsVarTypeContinuous + else: + raise ValueError(f"Invalid variable type {vtype}. Must be -1 (continuous), 0 (binary), or 1 (integer)") + + # Set bounds + if vtype == 0: # Binary + # Binary variables have fixed bounds [0, 1] + lb = 0.0 + ub = 1.0 + # Override user-provided bounds for binary variables + else: + # For integer and continuous variables, use provided bounds + if lower_bound is None: + lb = -Highs_getInfinity(self.highs) + else: + lb = float(lower_bound) + + if upper_bound is None: + ub = Highs_getInfinity(self.highs) + else: + ub = float(upper_bound) + + # Add column with empty constraint coefficients + sig_on() + status = Highs_addCol(self.highs, float(obj), lb, ub, 0, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to add variable") + + col_idx = self.numcols + self.numcols += 1 + + # Set integrality if needed (for integer or binary) + if var_type == kHighsVarTypeInteger: + sig_on() + status = Highs_changeColIntegrality(self.highs, col_idx, kHighsVarTypeInteger) + sig_off() + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set variable integrality") + + # Set name if provided + if name is not None: + name_bytes = str(name).encode('utf-8') + Highs_passColName(self.highs, col_idx, name_bytes) + self.col_name_var[col_idx] = str(name) + + return col_idx + + + cpdef set_sense(self, int sense): + """ + Set the direction (maximization/minimization). + + INPUT: + + - ``sense`` -- +1 for maximization; -1 for minimization + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.is_maximization() + True + sage: p.set_sense(-1) + sage: p.is_maximization() + False + """ + cdef HighsInt highs_sense + cdef HighsInt status + + if sense == 1: + highs_sense = kHighsObjSenseMaximize + else: + highs_sense = kHighsObjSenseMinimize + + sig_on() + status = Highs_changeObjectiveSense(self.highs, highs_sense) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set objective sense") + + cpdef int solve(self) except -1: + """ + Solve the problem. + + Sage uses HiGHS's implementation of the branch-and-cut + algorithm to solve mixed-integer linear programs. HiGHS + automatically selects the most appropriate algorithm based + on the problem type. + + .. NOTE:: + + This method raises ``MIPSolverException`` exceptions when + the solution cannot be computed for any reason (none + exists, or the solver was not able to find it, etc...) + + EXAMPLES:: + + sage: lp = MixedIntegerLinearProgram(solver = 'HiGHS', maximization = False) + sage: x, y = lp[0], lp[1] + sage: lp.add_constraint(-2*x + y <= 1) + sage: lp.add_constraint(x - y <= 1) + sage: lp.add_constraint(x + y >= 2) + sage: lp.set_objective(x + y) + sage: lp.set_integer(x) + sage: lp.set_integer(y) + sage: lp.solve() + 2.0 + sage: lp.get_values([x, y]) + [1.0, 1.0] + + TESTS:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.set_objective([1, 1]) + sage: p.solve() + 0 + sage: p.objective_coefficient(0,1) + sage: p.solve() + 0 + """ + cdef HighsInt status + cdef HighsInt model_status + + # Pure C API call between sig_on/sig_off - no Python objects touched! + sig_on() + status = Highs_run(self.highs) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Solver run failed") + + # Check model status + model_status = Highs_getModelStatus(self.highs) + + if model_status == kHighsModelStatusOptimal: + return 0 # Success + elif model_status == kHighsModelStatusInfeasible: + raise MIPSolverException("HiGHS: Problem is infeasible") + elif model_status == kHighsModelStatusUnbounded: + raise MIPSolverException("HiGHS: Problem is unbounded") + elif model_status == kHighsModelStatusTimeLimit: + raise MIPSolverException("HiGHS: Time limit reached") + elif model_status == kHighsModelStatusIterationLimit: + raise MIPSolverException("HiGHS: Iteration limit reached") + elif model_status == kHighsModelStatusInterrupt: + raise MIPSolverException("HiGHS: Interrupted by user") + else: + raise MIPSolverException(f"HiGHS: Solver failed with status {model_status}") + + cpdef get_objective_value(self): + """ + Return the value of the objective function. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.set_objective([1, 1]) + sage: p.solve() + 0 + sage: p.get_objective_value() + 2.0 + """ + cdef double obj_value + + obj_value = Highs_getObjectiveValue(self.highs) + # HiGHS already includes the offset, so don't add it again + return obj_value + + cpdef get_variable_value(self, int variable): + """ + Return the value of a variable given by the solver. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.set_objective([1, 1]) + sage: p.solve() + 0 + sage: p.get_variable_value(0) + 2.0 + sage: p.get_variable_value(1) + 0.0 + """ + cdef double* col_value + cdef HighsInt num_cols + cdef HighsInt status + cdef double result + + num_cols = Highs_getNumCol(self.highs) + + if variable < 0 or variable >= num_cols: + raise ValueError(f"Variable index {variable} out of range [0, {num_cols})") + + # Allocate array for solution + col_value = malloc(num_cols * sizeof(double)) + if col_value == NULL: + raise MemoryError("Failed to allocate memory for solution") + + try: + sig_on() + status = Highs_getSolution(self.highs, col_value, NULL, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get solution") + + result = col_value[variable] + finally: + free(col_value) + + return result + + cpdef int add_variables(self, int number, lower_bound=0.0, upper_bound=None, + binary=False, continuous=False, integer=False, obj=0.0, + names=None) except -1: + """ + Add ``number`` new variables. + + This amounts to adding new columns to the matrix. By default, + the variables are both positive, real and their coefficient in + the objective function is 0.0. + + INPUT: + + - ``n`` -- the number of new variables (must be > 0) + + - ``lower_bound`` -- the lower bound of the variable (default: 0) + + - ``upper_bound`` -- the upper bound of the variable (default: ``None``) + + - ``binary`` -- ``True`` if the variable is binary (default: ``False``) + + - ``continuous`` -- ``True`` if the variable is binary (default: ``True``) + + - ``integer`` -- ``True`` if the variable is binary (default: ``False``) + + - ``obj`` -- coefficient of all variables in the objective function (default: 0.0) + + - ``names`` -- list of names (default: ``None``) + + OUTPUT: the index of the variable created last + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.ncols() + 0 + sage: p.add_variables(5) + 4 + sage: p.ncols() + 5 + sage: p.add_variables(2, lower_bound=-2.0, integer=True, obj=42.0, names=['a','b']) + 6 + + TESTS: + + Check that arguments are used:: + + sage: p.col_bounds(5) # tol 1e-8 + (-2.0, None) + sage: p.is_variable_integer(5) + True + sage: p.col_name(5) + 'a' + sage: p.objective_coefficient(5) + 42.0 + """ + cdef int i + + for i in range(number): + name = None + if names is not None and i < len(names): + name = names[i] + self.add_variable(lower_bound=lower_bound, upper_bound=upper_bound, + binary=binary, continuous=continuous, integer=integer, + obj=obj, name=name) + + return self.numcols - 1 + + cpdef objective_coefficient(self, int variable, coeff=None): + """ + Add ``number`` new variables. + + This amounts to adding new columns to the matrix. By default, + the variables are both positive, real and their coefficient in + the objective function is 0.0. + + INPUT: + + - ``n`` -- the number of new variables (must be > 0) + + - ``lower_bound`` -- the lower bound of the variable (default: 0) + + - ``upper_bound`` -- the upper bound of the variable (default: ``None``) + + - ``binary`` -- ``True`` if the variable is binary (default: ``False``) + + - ``continuous`` -- ``True`` if the variable is binary (default: ``True``) + + - ``integer`` -- ``True`` if the variable is binary (default: ``False``) + + - ``obj`` -- coefficient of all variables in the objective function (default: 0.0) + + - ``names`` -- list of names (default: ``None``) + + OUTPUT: the index of the variable created last + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.ncols() + 0 + sage: p.add_variables(5) + 4 + sage: p.ncols() + 5 + sage: p.add_variables(2, lower_bound=-2.0, integer=True, obj=42.0, names=['a','b']) + 6 + + TESTS: + + Check that arguments are used:: + + sage: p.col_bounds(5) # tol 1e-8 + (-2.0, None) + sage: p.is_variable_integer(5) + True + sage: p.col_name(5) + 'a' + sage: p.objective_coefficient(5) + 42.0 + """ + cdef HighsInt status + cdef double cost + cdef HighsInt num_col + cdef HighsInt num_nz + + if variable < 0 or variable >= self.numcols: + raise ValueError(f"invalid variable index {variable}") + + if coeff is None: + # Get coefficient using Highs_getColsByRange + sig_on() + status = Highs_getColsByRange(self.highs, variable, variable, + &num_col, &cost, NULL, NULL, + &num_nz, NULL, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get objective coefficient") + return cost + else: + # Set coefficient + sig_on() + status = Highs_changeColCost(self.highs, variable, float(coeff)) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set objective coefficient") + + cpdef problem_name(self, name=None): + """ + Return or define the problem's name. + + INPUT: + + - ``name`` -- string; the problem's name. When set to + ``None`` (default), the method returns the problem's name. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver = "HiGHS") + sage: p.problem_name("There once was a french fry") + sage: print(p.problem_name()) + There once was a french fry + """ + if name is None: + return self.prob_name + else: + self.prob_name = str(name) + + cpdef set_objective(self, list coeff, d=0.0): + """ + Set the objective function. + + INPUT: + + - ``coeff`` -- list of real values, whose i-th element is the + coefficient of the i-th variable in the objective function + - ``d`` -- constant term in objective function (default: 0.0) + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(5) + 4 + sage: p.set_objective([1, 1, 2, 1, 3]) + """ + cdef int i + for i in range(len(coeff)): + if i < self.numcols: + self.objective_coefficient(i, coeff[i]) + + self.obj_constant_term = d + + # Set offset in HiGHS + sig_on() + Highs_changeObjectiveOffset(self.highs, d) + sig_off() + + cpdef set_verbosity(self, int level): + """ + Set the log (verbosity) level. + + INPUT: + + - ``level`` -- integer; from 0 (no verbosity) to 1 + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.set_verbosity(0) + """ + cdef HighsInt status + cdef bint log_to_console + + if level == 0: + log_to_console = False + elif level == 1: + log_to_console = True + else: + raise ValueError("Invalid verbosity level. Must be 0 or 1.") + + status = Highs_setBoolOptionValue(self.highs, b"log_to_console", log_to_console) + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set verbosity") + + cpdef add_linear_constraint(self, coefficients, lower_bound, upper_bound, name=None): + """ + Add a linear constraint. + + INPUT: + + - ``coefficients`` -- an iterable of pairs ``(i, v)`` where ``i`` is a + variable index and ``v`` is a value + - ``lower_bound`` -- a lower bound, either a real value or ``None`` + - ``upper_bound`` -- an upper bound, either a real value or ``None`` + - ``name`` -- optional name for this constraint + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(5) + 4 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + """ + cdef double lb, ub + cdef HighsInt num_nz + cdef HighsInt* indices + cdef double* values + cdef HighsInt status + cdef int i + + # Convert bounds + if lower_bound is None: + lb = -Highs_getInfinity(self.highs) + else: + lb = float(lower_bound) + + if upper_bound is None: + ub = Highs_getInfinity(self.highs) + else: + ub = float(upper_bound) + + # Build coefficient arrays + coeff_list = list(coefficients) + num_nz = len(coeff_list) + + if num_nz == 0: + # Empty constraint + sig_on() + status = Highs_addRow(self.highs, lb, ub, 0, NULL, NULL) + sig_off() + else: + # Allocate arrays + indices = malloc(num_nz * sizeof(HighsInt)) + values = malloc(num_nz * sizeof(double)) + + if indices == NULL or values == NULL: + free(indices) + free(values) + raise MemoryError("Failed to allocate memory for constraint") + + try: + # Fill arrays + for i in range(num_nz): + var_idx, coeff_val = coeff_list[i] + if var_idx < 0 or var_idx >= self.ncols(): + raise ValueError(f"invalid variable index {var_idx}") + indices[i] = var_idx + values[i] = float(coeff_val) + + # Add constraint + sig_on() + status = Highs_addRow(self.highs, lb, ub, num_nz, indices, values) + sig_off() + finally: + free(indices) + free(values) + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to add constraint") + + # Handle name + if name is not None: + self.row_name_var[name] = self.numrows + + self.numrows += 1 + + cpdef add_linear_constraints(self, int number, lower_bound, upper_bound, names=None): + """ + Add ``number`` linear constraints. + + INPUT: + + - ``number`` -- integer; the number of constraints to add + + - ``lower_bound`` -- a lower bound, either a real value or ``None`` + + - ``upper_bound`` -- an upper bound, either a real value or ``None`` + + - ``names`` -- an optional list of names (default: ``None``) + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(5) + 4 + sage: p.add_linear_constraints(5, None, 2) + sage: p.row_bounds(4) + (None, 2.0) + sage: p.add_linear_constraints(2, None, 2, names=['foo','bar']) + """ + cdef int i + cdef double lb, ub + cdef HighsInt status + + # Convert bounds + if lower_bound is None: + lb = -Highs_getInfinity(self.highs) + else: + lb = float(lower_bound) + + if upper_bound is None: + ub = Highs_getInfinity(self.highs) + else: + ub = float(upper_bound) + + # Add empty constraints + for i in range(number): + sig_on() + status = Highs_addRow(self.highs, lb, ub, 0, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to add constraint") + + if names is not None and i < len(names): + name = names[i] + if name is not None: + self.row_name_var[name] = self.numrows + + self.numrows += 1 + + cpdef int ncols(self) noexcept: + """ + Return the number of columns/variables. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.ncols() + 0 + sage: p.add_variables(2) + 1 + sage: p.ncols() + 2 + """ + return self.numcols + + cpdef int nrows(self) noexcept: + """ + Return the number of rows/constraints. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.nrows() + 0 + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.nrows() + 1 + """ + return self.numrows + + cpdef bint is_maximization(self) noexcept: + """ + Test whether the problem is a maximization. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.is_maximization() + True + """ + cdef HighsInt sense, status + status = Highs_getObjectiveSense(self.highs, &sense) + if status != kHighsStatusOk: + return True # default to maximize + return sense == kHighsObjSenseMaximize + + cpdef get_row_prim(self, int i): + """ + Return the value of the auxiliary variable associated with i-th row. + + .. NOTE:: + + Behaviour is undefined unless ``solve`` has been called before. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_objective_value() + 280.0 + sage: lp.get_row_prim(0) + 24.0 + sage: lp.get_row_prim(1) + 20.0 + sage: lp.get_row_prim(2) + 8.0 + + TESTS: + + We sanity check the input:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.get_row_prim(2) + Traceback (most recent call last): + ... + ValueError: Row index 2 out of range ... + """ + cdef double* row_value + cdef HighsInt num_rows + cdef HighsInt status + cdef double result + + num_rows = Highs_getNumRow(self.highs) + + if i < 0 or i >= num_rows: + raise ValueError(f"Row index {i} out of range [0, {num_rows})") + + row_value = malloc(num_rows * sizeof(double)) + if row_value == NULL: + raise MemoryError("Failed to allocate memory") + + try: + sig_on() + status = Highs_getSolution(self.highs, NULL, NULL, row_value, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get solution") + + result = row_value[i] + finally: + free(row_value) + + return result + + cpdef double get_row_dual(self, int i) except? -1: + """ + Return the dual value of a constraint. + + The dual value of the i-th row is also the value of the i-th variable + of the dual problem. + + The dual value of a constraint is the shadow price of the constraint. + The shadow price is the amount by which the objective value will change + if the constraint's bounds change by one unit under the precondition + that the basis remains the same. + + INPUT: + + - ``i`` -- the index of the constraint + + .. NOTE:: + + Behaviour is undefined unless ``solve`` has been called before. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_row_dual(0) # tol 1e-6 + 0.0 + sage: lp.get_row_dual(1) # tol 1e-6 + 10.0 + sage: lp.get_row_dual(2) # tol 1e-6 + 10.0 + + TESTS: + + We sanity check the input:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.get_row_dual(2) + Traceback (most recent call last): + ... + ValueError: Row index 2 out of range ... + """ + cdef double* row_dual + cdef HighsInt num_rows + cdef HighsInt status + cdef double result + + num_rows = Highs_getNumRow(self.highs) + + if i < 0 or i >= num_rows: + raise ValueError(f"Row index {i} out of range [0, {num_rows})") + + row_dual = malloc(num_rows * sizeof(double)) + if row_dual == NULL: + raise MemoryError("Failed to allocate memory") + + try: + sig_on() + status = Highs_getSolution(self.highs, NULL, NULL, NULL, row_dual) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get dual solution") + + result = row_dual[i] + finally: + free(row_dual) + + return result + + cpdef double get_col_dual(self, int j) except? -1: + """ + Return the dual value (reduced cost) of a variable. + + The dual value is the reduced cost of a variable. + The reduced cost is the amount by which the objective coefficient + of a non-basic variable has to change to become a basic variable. + + INPUT: + + - ``j`` -- the index of the variable + + .. NOTE:: + + Behaviour is undefined unless ``solve`` has been called before. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(3) + 2 + sage: p.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: p.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: p.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: p.set_objective([60, 30, 20]) + sage: p.solve() + 0 + sage: p.get_col_dual(0) # tol 1e-6 + 0.0 + sage: p.get_col_dual(1) # tol 1e-6 + -5.0 + sage: p.get_col_dual(2) # tol 1e-6 + 0.0 + + TESTS: + + We sanity check the input:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.get_col_dual(2) + Traceback (most recent call last): + ... + ValueError: Variable index 2 out of range ... + """ + cdef double* col_dual + cdef HighsInt num_cols + cdef HighsInt status + cdef double result + + num_cols = Highs_getNumCol(self.highs) + + if j < 0 or j >= num_cols: + raise ValueError(f"Variable index {j} out of range [0, {num_cols})") + + col_dual = malloc(num_cols * sizeof(double)) + if col_dual == NULL: + raise MemoryError("Failed to allocate memory") + + try: + sig_on() + status = Highs_getSolution(self.highs, NULL, col_dual, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get dual solution") + + result = col_dual[j] + finally: + free(col_dual) + + return result + + cpdef best_known_objective_bound(self): + """ + Return the value of the currently best known bound. + + This method returns the current best upper (resp. lower) bound on the + optimal value of the objective function in a maximization + (resp. minimization) problem. It is equal to the output of + :meth:`get_objective_value` if the MILP found an optimal solution, but + it can differ if it was interrupted manually or after a time limit (cf + :meth:`solver_parameter`). + + .. NOTE:: + + Has no meaning unless ``solve`` has been called before. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.set_objective([1, 1]) + sage: p.solve() + 0 + sage: p.best_known_objective_bound() + 2.0 + + TESTS:: + sage: # needs sage.graphs + sage: g = graphs.CubeGraph(9) + sage: p = MixedIntegerLinearProgram(solver='HiGHS') + sage: p.solver_parameter("mip_rel_gap",100) + sage: b = p.new_variable(binary=True) + sage: p.set_objective(p.sum(b[v] for v in g)) + sage: for v in g: + ....: p.add_constraint(b[v]+p.sum(b[u] for u in g.neighbors(v)) <= 1) + sage: p.add_constraint(b[v] == 1) # Force an easy non-0 solution + sage: p.solve() # rel tol 100 + 2.0 + sage: backend = p.get_backend() + sage: backend.best_known_objective_bound() + 48.0 + """ + cdef double mip_dual_bound + cdef HighsInt status + cdef HighsInt i, var_type + cdef bint is_mip = False + + # Check if this is a MIP problem (has integer variables) + for i in range(self.numcols): + status = Highs_getColIntegrality(self.highs, i, &var_type) + if status != kHighsStatusOk: + continue + if var_type == kHighsVarTypeInteger: + is_mip = True + break + + if not is_mip: + # For LP problems, the bound equals the objective value + return self.get_objective_value() + + # Get the MIP dual bound using info query + status = Highs_getDoubleInfoValue(self.highs, b"mip_dual_bound", &mip_dual_bound) + if status != kHighsStatusOk: + # If not available, return the objective value + return ValueError("MIP dual bound not available") + # HiGHS already includes the offset in the dual bound + return mip_dual_bound + + cpdef get_relative_objective_gap(self): + """ + Return the relative objective gap of the best known solution. + + For a minimization problem, this value is computed by + `(\texttt{bestinteger} - \texttt{bestobjective}) / (1e-10 + + |\texttt{bestobjective}|)`, where ``bestinteger`` is the value returned + by :meth:`get_objective_value` and ``bestobjective`` is the value + returned by :meth:`best_known_objective_bound`. For a maximization + problem, the value is computed by `(\texttt{bestobjective} - + \texttt{bestinteger}) / (1e-10 + |\texttt:bestobjective}|)`. + + .. NOTE:: + + Has no meaning unless ``solve`` has been called before. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: p.set_objective([1, 1]) + sage: p.solve() + 0 + sage: p.get_relative_objective_gap() + 0.0 + """ + cdef double gap + cdef HighsInt status + cdef HighsInt i, var_type + cdef bint is_mip = False + + # Check if this is a MIP problem (has integer variables) + for i in range(self.numcols): + status = Highs_getColIntegrality(self.highs, i, &var_type) + if status != kHighsStatusOk: + continue + if var_type == kHighsVarTypeInteger: + is_mip = True + break + + if not is_mip: + # For LP problems, the gap is 0 + return 0.0 + + # Get the MIP gap using info query + status = Highs_getDoubleInfoValue(self.highs, b"mip_gap", &gap) + if status != kHighsStatusOk: + # If not available, return 0 + return ValueError("MIP gap not available") + return gap + + cpdef variable_upper_bound(self, int index, value=None): + """ + Set or get the upper bound of a variable. + + INPUT: + + - ``index`` -- the variable's id + - ``value`` -- real value or ``None`` to get the current value + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.variable_upper_bound(0) + sage: p.variable_upper_bound(0, 10.0) + sage: p.variable_upper_bound(0) + 10.0 + + TESTS: + + Check that invalid indices raise errors:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.variable_upper_bound(2) + Traceback (most recent call last): + ... + ValueError: invalid variable index 2 + sage: p.variable_upper_bound(-1) + Traceback (most recent call last): + ... + ValueError: invalid variable index -1 + sage: p.add_variable() + 0 + sage: p.variable_upper_bound(3, 5) + Traceback (most recent call last): + ... + ValueError: invalid variable index 3 + """ + cdef double lb, ub + cdef HighsInt status + + if index < 0 or index >= self.numcols: + raise ValueError(f"invalid variable index {index}") + + if value is None: + # Get current bound + self._get_col_bounds(index, &lb, &ub) + + if ub >= Highs_getInfinity(self.highs) - 1: + return None + else: + return ub + else: + # Set new bound + self._get_col_bounds(index, &lb, &ub) + + if value is None: + ub = Highs_getInfinity(self.highs) + else: + ub = float(value) + + sig_on() + status = Highs_changeColBounds(self.highs, index, lb, ub) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set variable upper bound") + + cpdef variable_lower_bound(self, int index, value=None): + """ + Set or get the lower bound of a variable. + + INPUT: + + - ``index`` -- the variable's id + - ``value`` -- real value or ``None`` to get the current value + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.variable_lower_bound(0) + 0.0 + sage: p.variable_lower_bound(0, -10.0) + sage: p.variable_lower_bound(0) + -10.0 + + TESTS: + + Check that invalid indices raise errors:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.variable_lower_bound(2) + Traceback (most recent call last): + ... + ValueError: invalid variable index 2 + sage: p.variable_lower_bound(-1) + Traceback (most recent call last): + ... + ValueError: invalid variable index -1 + sage: p.add_variable() + 0 + sage: p.variable_lower_bound(3, 5) + Traceback (most recent call last): + ... + ValueError: invalid variable index 3 + """ + cdef double lb, ub + cdef HighsInt status + + if index < 0 or index >= self.numcols: + raise ValueError(f"invalid variable index {index}") + + if value is None: + # Get current bound + self._get_col_bounds(index, &lb, &ub) + + if lb <= -Highs_getInfinity(self.highs) - 1: + return None + else: + return lb + else: + # Set new bound + self._get_col_bounds(index, &lb, &ub) + + if value is None: + lb = -Highs_getInfinity(self.highs) + else: + lb = float(value) + + sig_on() + status = Highs_changeColBounds(self.highs, index, lb, ub) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set variable lower bound") + + cpdef col_name(self, int index): + """ + Return the ``index``-th column name. + + INPUT: + + - ``index`` -- integer; the column's id + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable(name='x') + 0 + sage: p.col_name(0) + 'x' + """ + if index < 0 or index >= self.numcols: + raise ValueError(f"invalid column index {index}") + return self.col_name_var.get(index, f"x_{index}") + + cpdef col_bounds(self, int index): + """ + Return the bounds of a specific variable. + + INPUT: + + - ``index`` -- integer; the variable's id + + OUTPUT: + + A pair ``(lower_bound, upper_bound)``. Each of them can be set + to ``None`` if the variable is not bounded in the + corresponding direction, and is a real value otherwise. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.col_bounds(0) + (0.0, None) + sage: p.variable_upper_bound(0, 5) + sage: p.col_bounds(0) + (0.0, 5.0) + """ + cdef double lb, ub + + if index < 0 or index >= self.numcols: + raise ValueError(f"invalid variable index {index}") + + self._get_col_bounds(index, &lb, &ub) + + # Convert infinities to None + if lb <= -Highs_getInfinity(self.highs) + 1: + lb_ret = None + else: + lb_ret = lb + + if ub >= Highs_getInfinity(self.highs) - 1: + ub_ret = None + else: + ub_ret = ub + + return (lb_ret, ub_ret) + + cpdef bint is_variable_integer(self, int index) noexcept: + """ + Test whether the given variable is of integer type. + + INPUT: + + - ``index`` -- integer; the variable's id + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.is_variable_integer(0) + False + sage: p.add_variable(integer=True) + 1 + sage: p.is_variable_integer(1) + True + + TESTS: + + We check the behavior for an invalid index:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.is_variable_integer(2) + False + """ + cdef HighsInt integrality, status + + if index < 0 or index >= self.numcols: + return False + + status = Highs_getColIntegrality(self.highs, index, &integrality) + if status != kHighsStatusOk: + return False + return integrality == kHighsVarTypeInteger + + cpdef bint is_variable_binary(self, int index) noexcept: + """ + Test whether the given variable is of binary type. + + INPUT: + + - ``index`` -- integer; the variable's id + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.is_variable_binary(0) + False + sage: p.add_variable(binary=True) + 1 + sage: p.is_variable_binary(1) + True + + TESTS: + + We check the behavior for an invalid index:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.is_variable_binary(2) + False + """ + cdef HighsInt integrality, status + cdef double lb, ub + + if index < 0 or index >= self.numcols: + return False + + status = Highs_getColIntegrality(self.highs, index, &integrality) + if status != kHighsStatusOk: + return False + + if integrality == kHighsVarTypeInteger: + self._get_col_bounds(index, &lb, &ub) + return lb == 0.0 and ub == 1.0 + + return False + + cpdef bint is_variable_continuous(self, int index) noexcept: + """ + Test whether the given variable is of continuous/real type. + + INPUT: + + - ``index`` -- integer; the variable's id + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.is_variable_continuous(0) + True + + TESTS: + + We check the behavior for an invalid index:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.is_variable_continuous(2) + False + """ + cdef HighsInt integrality, status + + if index < 0 or index >= self.numcols: + return False + + status = Highs_getColIntegrality(self.highs, index, &integrality) + if status != kHighsStatusOk: + return True # default to continuous + return integrality == kHighsVarTypeContinuous + + cpdef set_variable_type(self, int variable, int vtype): + """ + Set the type of a variable. + + INPUT: + + - ``variable`` -- integer; the variable's id + + - ``vtype`` -- integer: + + * `1` = Integer + * `0` = Binary + * `-1` = Real (Continuous) + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variable() + 0 + sage: p.is_variable_continuous(0) + True + sage: p.set_variable_type(0, 1) + sage: p.is_variable_integer(0) + True + + TESTS: + + We sanity check the input that will be passed to HiGHS:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.set_variable_type(2, 0) + Traceback (most recent call last): + ... + ValueError: invalid variable index 2 + """ + cdef HighsInt status + cdef double lb, ub + + if variable < 0 or variable >= self.numcols: + raise ValueError(f"invalid variable index {variable}") + + if vtype == 1: + # Integer + sig_on() + status = Highs_changeColIntegrality(self.highs, variable, kHighsVarTypeInteger) + sig_off() + elif vtype == 0: + # Binary - set to integer and change bounds to [0,1] + sig_on() + status = Highs_changeColIntegrality(self.highs, variable, kHighsVarTypeInteger) + sig_off() + + if status == kHighsStatusOk: + sig_on() + status = Highs_changeColBounds(self.highs, variable, 0.0, 1.0) + sig_off() + elif vtype == -1: + # Continuous + sig_on() + status = Highs_changeColIntegrality(self.highs, variable, kHighsVarTypeContinuous) + sig_off() + else: + raise ValueError(f"Unknown variable type {vtype}") + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set variable type") + + cpdef row_bounds(self, int index): + """ + Return the bounds of a specific constraint. + + INPUT: + + - ``index`` -- integer; the constraint's id + + OUTPUT: + + A pair ``(lower_bound, upper_bound)``. Each of them can be set + to ``None`` if the constraint is not bounded in the + corresponding direction, and is a real value otherwise. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(5) + 4 + sage: p.add_linear_constraint(list(zip(range(5), range(5))), 2, 2) + sage: p.row(0) # Note: zero coefficients are excluded in sparse format + ([1, 2, 3, 4], [1.0, 2.0, 3.0, 4.0]) + sage: p.row_bounds(0) + (2.0, 2.0) + """ + cdef double lb, ub + cdef double infinity + + if index < 0 or index >= self.numrows: + raise ValueError(f"invalid row index {index}") + + self._get_row_bounds(index, &lb, &ub) + infinity = Highs_getInfinity(self.highs) + + return ( + (lb if abs(lb) < infinity else None), + (ub if abs(ub) < infinity else None) + ) + + cpdef row_name(self, int index): + """ + Return the ``index``-th row name. + + INPUT: + + - ``index`` -- integer; the row's id + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_linear_constraint([], 2, 2, name='foo') + sage: p.row_name(0) + 'foo' + """ + if index < 0 or index >= self.numrows: + raise ValueError(f"invalid row index {index}") + + # Search for name in dictionary + for name, idx in self.row_name_var.items(): + if idx == index: + return str(name) + + return f"constraint_{index}" + + cpdef solver_parameter(self, name, value=None): + """ + Return or define a solver parameter. + + INPUT: + + - ``name`` -- string; the parameter name + + - ``value`` -- the parameter's value if it is to be defined, + or ``None`` (default) to obtain its current value + + HiGHS solver parameters can be set using their option names as documented + in the HiGHS documentation: https://ergo-code.github.io/HiGHS/dev/options/definitions/ + + Common parameters include: + + - ``time_limit`` -- maximum time in seconds (double) + - ``mip_rel_gap`` -- relative MIP gap tolerance (double) + - ``mip_abs_gap`` -- absolute MIP gap tolerance (double) + - ``threads`` -- number of threads to use (int) + - ``presolve`` -- presolve option: "off", "choose", or "on" + - ``solver`` -- solver to use: "choose", "simplex", "ipm", or "pdlp (need CUDA)" + - ``parallel`` -- parallel option: "off", "choose", or "on" + - ``log_to_console`` -- whether to log to console: True or False + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.solver_parameter("time_limit", 60) + sage: p.solver_parameter("time_limit") + 60.0 + sage: p.solver_parameter("threads", 2) + sage: p.solver_parameter("threads") + 2 + sage: p.solver_parameter("presolve", "on") + sage: p.solver_parameter("presolve") + 'on' + + You can also use boolean values for options:: + + sage: p.solver_parameter("log_to_console", False) + sage: p.solver_parameter("log_to_console") + False + + Float parameters like MIP gap tolerance work correctly:: + + sage: p.solver_parameter("mip_rel_gap", 0.05) + sage: p.solver_parameter("mip_rel_gap") + 0.05 + """ + cdef HighsInt status + cdef bytes name_bytes + cdef HighsInt int_value + cdef double double_value + cdef HighsInt bool_value + cdef char* str_value + cdef HighsInt option_type + + name_bytes = str(name).encode('utf-8') + + if value is None: + # Get parameter - try each type until one succeeds + # Try int first + status = Highs_getIntOptionValue(self.highs, name_bytes, &int_value) + if status == kHighsStatusOk: + return int_value + + # Try double + status = Highs_getDoubleOptionValue(self.highs, name_bytes, &double_value) + if status == kHighsStatusOk: + return double_value + + # Try bool + status = Highs_getBoolOptionValue(self.highs, name_bytes, &bool_value) + if status == kHighsStatusOk: + return bool(bool_value) + + # Try string (allocate buffer for string value) + str_value = malloc(256 * sizeof(char)) + if str_value == NULL: + raise MemoryError("Failed to allocate memory for string option") + try: + status = Highs_getStringOptionValue(self.highs, name_bytes, str_value) + if status == kHighsStatusOk: + result = str_value.decode('utf-8') + return result + else: + raise ValueError(f"Unknown option {name}") + finally: + free(str_value) + else: + # Set parameter - need to determine type + # Convert Sage types to Python types for easier type checking + try: + # Try to convert to Python numeric type if it's a Sage type + # Check for float first since int() would truncate floats + if isinstance(value, float): + pass # Already a Python float + elif hasattr(value, '__float__') and not isinstance(value, (bool, str, int)): + value = float(value) + elif hasattr(value, '__int__') and not isinstance(value, (bool, str, float)): + value = int(value) + except (TypeError, AttributeError): + pass + + # Check bool first since bool is a subclass of int in Python + if isinstance(value, bool): + status = Highs_setBoolOptionValue(self.highs, name_bytes, value) + elif isinstance(value, str): + value_bytes = value.encode('utf-8') + status = Highs_setStringOptionValue(self.highs, name_bytes, value_bytes) + elif isinstance(value, (int, float)): + # Try as double first (works for both int and float) + status = Highs_setDoubleOptionValue(self.highs, name_bytes, float(value)) + if status != kHighsStatusOk and isinstance(value, int): + # If double failed and it's an int, try as int + status = Highs_setIntOptionValue(self.highs, name_bytes, value) + if status != kHighsStatusOk: + # If both numeric methods failed, try as string (works for advanced options) + # For floats that are whole numbers, convert to int string to avoid "4.0" format + if isinstance(value, float) and value == int(value): + value_bytes = str(int(value)).encode('utf-8') + else: + value_bytes = str(value).encode('utf-8') + status = Highs_setStringOptionValue(self.highs, name_bytes, value_bytes) + else: + raise ValueError(f"Unknown parameter type for {name}: {type(value)}") + + if status != kHighsStatusOk: + raise MIPSolverException(f"HiGHS: Failed to set parameter {name}") + + cpdef write_lp(self, filename): + """ + Write the problem to a .lp file. + + INPUT: + + - ``filename`` -- string; the file name + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: import tempfile + sage: with tempfile.NamedTemporaryFile(suffix='.lp') as f: + ....: p.write_lp(f.name) + """ + cdef bytes filename_bytes + cdef HighsInt status + + filename_bytes = str(filename).encode('utf-8') + + status = Highs_writeModel(self.highs, filename_bytes) + + if status != kHighsStatusOk: + raise MIPSolverException(f"HiGHS: Failed to write LP file {filename}") + + cpdef write_mps(self, filename, int modern): + """ + Write the problem to a .mps file. + + INPUT: + + - ``filename`` -- string; the file name + - ``modern`` -- integer; whether to use modern MPS format (ignored for HiGHS) + + .. NOTE:: + + HiGHS may not support writing MPS files directly. If writing fails, + consider using write_lp() instead, or use another solver for MPS output. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: p.add_linear_constraint([(0, 1), (1, 1)], None, 2.0) + sage: import tempfile + sage: with tempfile.NamedTemporaryFile(suffix='.mps') as f: # doctest: +SKIP + ....: p.write_mps(f.name, 1) + """ + cdef bytes filename_bytes + cdef HighsInt status + + filename_bytes = str(filename).encode('utf-8') + + status = Highs_writeModel(self.highs, filename_bytes) + + if status != kHighsStatusOk: + # HiGHS may not support MPS write. Try converting filename to .lp temporarily + import os + base, ext = os.path.splitext(filename) + if ext.lower() == '.mps': + # Try writing as LP first, then convert if needed + # For now, just inform the user + raise MIPSolverException( + f"HiGHS: Failed to write MPS file {filename}. " + "HiGHS may not support writing MPS files directly. " + "Consider using write_lp() instead." + ) + raise MIPSolverException(f"HiGHS: Failed to write MPS file {filename}") + + cpdef remove_constraint(self, int i): + """ + Remove a constraint from ``self``. + + INPUT: + + - ``i`` -- index of the constraint to remove + + EXAMPLES:: + + sage: p = MixedIntegerLinearProgram(solver='HiGHS') + sage: x, y = p['x'], p['y'] + sage: p.add_constraint(2*x + 3*y <= 6) + sage: p.add_constraint(3*x + 2*y <= 6) + sage: p.add_constraint(x >= 0) + sage: p.set_objective(x + y + 7) + sage: p.set_integer(x); p.set_integer(y) + sage: p.solve() + 9.0 + sage: p.remove_constraint(0) + sage: p.solve() + 10.0 + + Removing fancy constraints does not make Sage crash:: + + sage: MixedIntegerLinearProgram(solver = "HiGHS").remove_constraint(-2) + Traceback (most recent call last): + ... + ValueError: The constraint's index i must satisfy 0 <= i < number_of_constraints + """ + cdef HighsInt status + + if i < 0 or i >= self.numrows: + raise ValueError("The constraint's index i must satisfy 0 <= i < number_of_constraints") + + # Delete the single row + sig_on() + status = Highs_deleteRowsByRange(self.highs, i, i) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to remove constraint") + + self.numrows -= 1 + + # Update row name mapping + names_to_update = {} + names_to_remove = [] + for name, row_idx in self.row_name_var.items(): + if row_idx < i: + names_to_update[name] = row_idx + elif row_idx > i: + names_to_update[name] = row_idx - 1 + else: + names_to_remove.append(name) + + for name in names_to_remove: + del self.row_name_var[name] + self.row_name_var.update(names_to_update) + + cpdef remove_constraints(self, constraints): + """ + Remove several constraints. + + INPUT: + + - ``constraints`` -- an iterable containing the indices of the rows to remove + + EXAMPLES:: + + sage: p = MixedIntegerLinearProgram(solver='HiGHS') + sage: x, y = p['x'], p['y'] + sage: p.add_constraint(2*x + 3*y <= 6) + sage: p.add_constraint(3*x + 2*y <= 6) + sage: p.add_constraint(x >= 0) + sage: p.set_objective(x + y + 7) + sage: p.set_integer(x); p.set_integer(y) + sage: p.solve() + 9.0 + sage: p.remove_constraints([0]) + sage: p.solve() + 10.0 + sage: p.get_values([x,y]) + [-0.0, 3.0] + + TESTS: + + Removing fancy constraints does not make Sage crash:: + + sage: MixedIntegerLinearProgram(solver="HiGHS").remove_constraints([0, -2]) + Traceback (most recent call last): + ... + ValueError: The constraint's index i must satisfy 0 <= i < number_of_constraints + """ + if isinstance(constraints, int): + self.remove_constraint(constraints) + return + + cdef int last = self.nrows() + 1 + + for c in sorted(constraints, reverse=True): + if c != last: + self.remove_constraint(c) + last = c + + cpdef row(self, int index): + """ + Return the ``index``-th constraint as a pair of lists. + + INPUT: + + - ``index`` -- index of the constraint + + OUTPUT: + + A pair ``(indices, coeffs)`` where ``indices`` lists the + entries whose coefficient is nonzero, and to which ``coeffs`` + associates their coefficient in the order of `indices`. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(5) + 4 + sage: p.add_linear_constraint(list(zip(range(5), range(5))), 2, 2) + sage: p.row(0) # Note: zero coefficients are excluded in sparse format + ([1, 2, 3, 4], [1.0, 2.0, 3.0, 4.0]) + sage: p.row(1) + Traceback (most recent call last): + ... + ValueError: invalid row index 1 + """ + cdef HighsInt num_row, num_nz, matrix_start + cdef HighsInt* matrix_index + cdef double* matrix_value + cdef double lb, ub + cdef HighsInt status + cdef list indices = [] + cdef list coeffs = [] + cdef int j + + if index < 0 or index >= self.numrows: + raise ValueError(f"invalid row index {index}") + + # First call: get the number of non-zeros + sig_on() + status = Highs_getRowsByRange(self.highs, index, index, + &num_row, &lb, &ub, &num_nz, + NULL, NULL, NULL) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get row info") + + if num_nz == 0: + return ([], []) + + # Allocate space for the matrix data + matrix_index = malloc(num_nz * sizeof(HighsInt)) + matrix_value = malloc(num_nz * sizeof(double)) + + if matrix_index == NULL or matrix_value == NULL: + free(matrix_index) + free(matrix_value) + raise MemoryError("Failed to allocate memory") + + try: + # Second call: get the actual matrix data + sig_on() + status = Highs_getRowsByRange(self.highs, index, index, + &num_row, &lb, &ub, &num_nz, + &matrix_start, matrix_index, matrix_value) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get row data") + + # Extract indices and coefficients + for j in range(num_nz): + indices.append(matrix_index[j]) + coeffs.append(matrix_value[j]) + finally: + free(matrix_index) + free(matrix_value) + + return (indices, coeffs) + + cpdef add_col(self, indices, coeffs): + """ + Add a column. + + INPUT: + + - ``indices`` -- list of integers; this list contains the + indices of the constraints in which the variable's + coefficient is nonzero + + - ``coeffs`` -- list of real values; associates a coefficient + to the variable in each of the constraints in which it + appears. Namely, the i-th entry of ``coeffs`` corresponds to + the coefficient of the variable in the constraint + represented by the i-th entry in ``indices``. + + .. NOTE:: + + ``indices`` and ``coeffs`` are expected to be of the same + length. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.ncols() + 0 + sage: p.nrows() + 0 + sage: p.add_linear_constraints(5, 0, None) + sage: p.add_col(list(range(5)), list(range(5))) + sage: p.nrows() + 5 + """ + cdef int col_idx + cdef int i, constraint_idx + cdef HighsInt status + + # Add a new column (variable) + col_idx = self.add_variable(lower_bound=0.0, upper_bound=None) + + # Set the coefficients for this column in the existing constraints + for i, constraint_idx in enumerate(indices): + if constraint_idx < 0 or constraint_idx >= self.nrows(): + continue + + coeff = coeffs[i] + if coeff != 0: + sig_on() + status = Highs_changeCoeff(self.highs, constraint_idx, col_idx, float(coeff)) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set coefficient") + + cpdef int get_row_stat(self, int i) except? -1: + """ + Retrieve the status of a constraint. + + INPUT: + + - ``i`` -- the index of the constraint + + OUTPUT: + + Current status assigned to the auxiliary variable associated with the i-th row: + + * 0 kLower: non-basic variable at lower bound + * 1 kBasic: basic variable + * 2 kUpper: non-basic variable at upper bound + * 3 kZero: non-basic free variable at zero + * 4 kNonbasic: nonbasic (used for unbounded variables) + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_row_stat(0) # doctest: +SKIP + 2 + sage: lp.get_row_stat(1) # doctest: +SKIP + 2 + sage: lp.get_row_stat(-1) + Traceback (most recent call last): + ... + ValueError: The constraint's index i must satisfy 0 <= i < number_of_constraints + """ + cdef HighsInt* row_status + cdef HighsInt* col_status + cdef HighsInt num_rows, num_cols + cdef HighsInt status + cdef HighsInt result + + if i < 0 or i >= self.numrows: + raise ValueError("The constraint's index i must satisfy 0 <= i < number_of_constraints") + + # Note: HiGHS C API doesn't have getBasisValidity function + # We'll try to get the basis and handle errors if no basis exists + + num_rows = Highs_getNumRow(self.highs) + num_cols = Highs_getNumCol(self.highs) + + row_status = malloc(num_rows * sizeof(HighsInt)) + col_status = malloc(num_cols * sizeof(HighsInt)) + + if row_status == NULL or col_status == NULL: + free(row_status) + free(col_status) + raise MemoryError("Failed to allocate memory") + + try: + sig_on() + status = Highs_getBasis(self.highs, col_status, row_status) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get basis") + + result = row_status[i] + finally: + free(row_status) + free(col_status) + + return result + + cpdef int get_col_stat(self, int j) except? -1: + """ + Retrieve the status of a variable. + + INPUT: + + - ``j`` -- the index of the variable + + OUTPUT: + + Current status assigned to the structural variable associated with the j-th column: + + * 0 kLower: non-basic variable at lower bound + * 1 kBasic: basic variable + * 2 kUpper: non-basic variable at upper bound + * 3 kZero: non-basic free variable at zero + * 4 kNonbasic: nonbasic (used for unbounded variables) + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_col_stat(0) + 1 + sage: lp.get_col_stat(1) + 0 + sage: lp.get_col_stat(100) + Traceback (most recent call last): + ... + ValueError: The variable's index j must satisfy 0 <= j < number_of_variables + """ + cdef HighsInt* col_status + cdef HighsInt* row_status + cdef HighsInt num_cols, num_rows + cdef HighsInt status + cdef HighsInt result + + if j < 0 or j >= self.numcols: + raise ValueError("The variable's index j must satisfy 0 <= j < number_of_variables") + + # Note: HiGHS C API doesn't have getBasisValidity function + # We'll try to get the basis and handle errors if no basis exists + + num_cols = Highs_getNumCol(self.highs) + num_rows = Highs_getNumRow(self.highs) + + col_status = malloc(num_cols * sizeof(HighsInt)) + row_status = malloc(num_rows * sizeof(HighsInt)) + + if col_status == NULL or row_status == NULL: + free(col_status) + free(row_status) + raise MemoryError("Failed to allocate memory") + + try: + sig_on() + status = Highs_getBasis(self.highs, col_status, row_status) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to get basis") + + result = col_status[j] + finally: + free(col_status) + free(row_status) + + return result + + cpdef set_row_stat(self, int i, int stat): + """ + Set the status of a constraint. + + INPUT: + + - ``i`` -- the index of the constraint + + - ``stat`` -- the status to set to: + + * 0 kLower: non-basic variable at lower bound + * 1 kBasic: basic variable + * 2 kUpper: non-basic variable at upper bound + * 3 kZero: non-basic free variable at zero + * 4 kNonbasic: nonbasic (used for unbounded variables) + + .. NOTE:: + + HiGHS may reject invalid basis configurations. Setting arbitrary + status values may result in the basis being rejected and the + original basis being preserved. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_row_stat(0) + 1 + sage: lp.set_col_stat(0, 2) + sage: lp.get_col_stat(0) + 2 + sage: lp.set_row_stat(0, 3) + sage: lp.get_row_stat(0) + 3 + """ + cdef HighsInt* row_status + cdef HighsInt* col_status + cdef HighsInt num_rows, num_cols + cdef HighsInt status + cdef int j + + if i < 0 or i >= self.numrows: + raise ValueError("The constraint's index i must satisfy 0 <= i < number_of_constraints") + + if stat < 0 or stat > 4: + raise ValueError("Invalid status value. Must be 0-4") + + num_rows = Highs_getNumRow(self.highs) + num_cols = Highs_getNumCol(self.highs) + + row_status = malloc(num_rows * sizeof(HighsInt)) + col_status = malloc(num_cols * sizeof(HighsInt)) + + if row_status == NULL or col_status == NULL: + free(row_status) + free(col_status) + raise MemoryError("Failed to allocate memory") + + try: + # Get current basis + sig_on() + status = Highs_getBasis(self.highs, col_status, row_status) + sig_off() + + # Set the new status + row_status[i] = stat + + # Set the modified basis + sig_on() + status = Highs_setBasis(self.highs, col_status, row_status) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set basis") + finally: + free(row_status) + free(col_status) + + cpdef set_col_stat(self, int j, int stat): + """ + Set the status of a variable. + + INPUT: + + - ``j`` -- the index of the variable + + - ``stat`` -- the status to set to: + + * 0 kLower: non-basic variable at lower bound + * 1 kBasic: basic variable + * 2 kUpper: non-basic variable at upper bound + * 3 kZero: non-basic free variable at zero + * 4 kNonbasic: nonbasic (used for unbounded variables) + + .. NOTE:: + + HiGHS may reject invalid basis configurations. Setting arbitrary + status values may result in the basis being rejected and the + original basis being preserved. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver='HiGHS') + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_col_stat(0) + 1 + sage: lp.set_col_stat(0, 2) + sage: lp.get_col_stat(0) + 2 + """ + cdef HighsInt* row_status + cdef HighsInt* col_status + cdef HighsInt num_rows, num_cols + cdef HighsInt status + + if j < 0 or j >= self.numcols: + raise ValueError("The variable's index j must satisfy 0 <= j < number_of_variables") + + if stat < 0 or stat > 4: + raise ValueError("Invalid status value. Must be 0-4") + + num_rows = Highs_getNumRow(self.highs) + num_cols = Highs_getNumCol(self.highs) + + row_status = malloc(num_rows * sizeof(HighsInt)) + col_status = malloc(num_cols * sizeof(HighsInt)) + + if row_status == NULL or col_status == NULL: + free(row_status) + free(col_status) + raise MemoryError("Failed to allocate memory") + + try: + # Get current basis + sig_on() + status = Highs_getBasis(self.highs, col_status, row_status) + sig_off() + + # Set the new status + col_status[j] = stat + + # Set the modified basis + sig_on() + status = Highs_setBasis(self.highs, col_status, row_status) + sig_off() + + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to set basis") + finally: + free(row_status) + free(col_status) + + cpdef int warm_up(self) noexcept: + """ + Warm up the basis using current statuses assigned to rows and cols. + + This method attempts to validate and use the currently set basis. + In HiGHS, setting a basis automatically attempts to factorize it, + so this method checks if the current basis is valid. + + OUTPUT: the warming up status + + * 0 The operation has been successfully performed. + * -1 The basis is invalid or could not be factorized. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: lp = get_solver(solver = "HiGHS") + sage: lp.add_variables(3) + 2 + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [8, 6, 1])), None, 48) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [4, 2, 1.5])), None, 20) + sage: lp.add_linear_constraint(list(zip([0, 1, 2], [2, 1.5, 0.5])), None, 8) + sage: lp.set_objective([60, 30, 20]) + sage: lp.solve() + 0 + sage: lp.get_objective_value() + 280.0 + sage: lp.set_row_stat(0, 3) + sage: lp.set_col_stat(1, 1) + sage: lp.warm_up() + 0 + """ + cdef HighsInt basis_validity + cdef HighsInt status + cdef HighsInt* col_status + cdef HighsInt* row_status + cdef HighsInt num_cols, num_rows + + # Note: HiGHS C API doesn't have getBasisValidity function + # Try to get the basis to check if it's available + num_cols = Highs_getNumCol(self.highs) + num_rows = Highs_getNumRow(self.highs) + + if num_cols == 0 or num_rows == 0: + return -1 + + col_status = malloc(num_cols * sizeof(HighsInt)) + row_status = malloc(num_rows * sizeof(HighsInt)) + + if col_status == NULL or row_status == NULL: + free(col_status) + free(row_status) + return -1 + + try: + status = Highs_getBasis(self.highs, col_status, row_status) + if status != kHighsStatusOk: + return -1 + return 0 + finally: + free(col_status) + free(row_status) + + cpdef __copy__(self): + """ + Return a copy of ``self``. + + EXAMPLES:: + + sage: from sage.numerical.backends.generic_backend import get_solver + sage: p = get_solver(solver='HiGHS') + sage: p.add_variables(2) + 1 + sage: q = copy(p) + sage: q.ncols() + 2 + """ + cdef HiGHSBackend p + cdef HighsInt status + cdef bytes temp_file + + import tempfile + import os + + p = HiGHSBackend(maximization=self.is_maximization()) + + # If model is empty (no constraints), just copy metadata + if self.numrows == 0 and self.numcols > 0: + # Add the same number of variables + for i in range(self.numcols): + lb, ub = self.col_bounds(i) + p.add_variable(lb, ub, + self.objective_coefficient(i), + self.is_variable_binary(i), + self.is_variable_continuous(i), + self.is_variable_integer(i), + self.col_name(i)) + else: + # Copy by writing and reading through a temporary MPS file + with tempfile.NamedTemporaryFile(mode='w', suffix='.mps', delete=False) as f: + temp_file = f.name.encode('utf-8') + + try: + status = Highs_writeModel(self.highs, temp_file) + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to write model for copy") + + status = Highs_readModel(p.highs, temp_file) + if status != kHighsStatusOk: + raise MIPSolverException("HiGHS: Failed to read model for copy") + + # Turn off logging for the copied model + Highs_setBoolOptionValue(p.highs, b"log_to_console", False) + finally: + if os.path.exists(temp_file.decode('utf-8')): + os.unlink(temp_file.decode('utf-8')) + + p.prob_name = self.prob_name + p.col_name_var = copy(self.col_name_var) + p.row_name_var = copy(self.row_name_var) + p.numcols = self.numcols + p.numrows = self.numrows + p.obj_constant_term = self.obj_constant_term + + return p diff --git a/src/sage/numerical/backends/meson.build b/src/sage/numerical/backends/meson.build index 57454e81e88..5e5dc3fbd0e 100644 --- a/src/sage/numerical/backends/meson.build +++ b/src/sage/numerical/backends/meson.build @@ -1,6 +1,46 @@ # Cannot be found via pkg-config glpk = cc.find_library('glpk', required: not is_windows, disabler: true) +highs = dependency('highs', required: false, disabler: true) +if not highs.found() + highs = cc.find_library('highs', required: not is_windows, disabler: true) +endif +# HiGHS headers use relative includes like #include "lp_data/HighsCallbackStruct.h" +# so we need to add the highs subdirectory to the include path. +# Check multiple locations in order: SAGE_LOCAL, Python prefix (conda), system paths +highs_compile_args = [] +# 1. Check SAGE_LOCAL +sage_local = get_option('SAGE_LOCAL') +if sage_local == '' + sage_local = meson.project_source_root() / '..' / 'local' +endif +highs_local_include = sage_local / 'include' / 'highs' +if fs.is_dir(highs_local_include) + highs_compile_args += ['-I' + highs_local_include] +endif + +# 2. Check Python prefix (for conda environments) - this is the most common case for CI +python_prefix = run_command( + py, + ['-c', 'import sys; print(sys.prefix)'], + check: false +).stdout().strip() + +if python_prefix != '' + highs_prefix_include = python_prefix / 'include' / 'highs' + if fs.is_dir(highs_prefix_include) + highs_compile_args += ['-I' + highs_prefix_include] + endif +endif + +# 3. Check common system paths +foreach include_base : ['/usr/include', '/usr/local/include', get_option('prefix') / 'include'] + highs_system_include = include_base / 'highs' + if fs.is_dir(highs_system_include) + highs_compile_args += ['-I' + highs_system_include] + break + endif +endforeach py.install_sources( '__init__.py', 'all.py', @@ -23,6 +63,8 @@ py.install_sources( 'glpk_exact_backend_test.py', 'glpk_graph_backend.pxd', 'glpk_graph_backend.pyx', + 'highs_backend.pxd', + 'highs_backend.pyx', 'interactivelp_backend.pxd', 'interactivelp_backend.pyx', 'interactivelp_backend_test.py', @@ -46,6 +88,7 @@ extension_data = { 'glpk_backend' : files('glpk_backend.pyx'), 'glpk_exact_backend' : files('glpk_exact_backend.pyx'), 'glpk_graph_backend' : files('glpk_graph_backend.pyx'), + 'highs_backend' : files('highs_backend.pyx'), 'interactivelp_backend' : files('interactivelp_backend.pyx'), 'matrix_sdp_backend' : files('matrix_sdp_backend.pyx'), 'ppl_backend' : files('ppl_backend.pyx'), @@ -58,7 +101,8 @@ foreach name, pyx : extension_data subdir: 'sage/numerical/backends', install: true, include_directories: [inc_cpython, inc_rings], - dependencies: [py_dep, cysignals, glpk, gmp], + c_args: highs_compile_args, + dependencies: [py_dep, cysignals, glpk, highs, gmp], ) endforeach @@ -75,4 +119,3 @@ foreach name, pyx : extension_data_cpp dependencies: [py_dep, cysignals, gmp], ) endforeach -