diff --git a/.bazelrc b/.bazelrc
index c50ba9a2c9f..0cab7d76aed 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,40 +1,65 @@
# Enable logging rc options.
common --announce_rc
-# ----CONFIG OPTIONS----
+###############################################################################
+# Global options for building OR-Tools.
+###############################################################################
+
build --flag_alias=with_bop=//ortools/linear_solver:with_bop
build --flag_alias=with_cbc=//ortools/linear_solver:with_cbc
build --flag_alias=with_clp=//ortools/linear_solver:with_clp
build --flag_alias=with_cp_sat=//ortools/linear_solver:with_cp_sat
+build --flag_alias=with_cplex=//ortools/linear_solver:with_cplex
build --flag_alias=with_glop=//ortools/linear_solver:with_glop
build --flag_alias=with_glpk=//ortools/linear_solver:with_glpk
build --flag_alias=with_highs=//ortools/linear_solver:with_highs
build --flag_alias=with_pdlp=//ortools/linear_solver:with_pdlp
build --flag_alias=with_scip=//ortools/linear_solver:with_scip
-
-build --flag_alias=with_cplex=//ortools/linear_solver:with_cplex
build --flag_alias=with_xpress=//ortools/linear_solver:with_xpress
-# Sets the default Apple platform to macOS.
-build --apple_platform_type=macos
-
-# By default, build OR-Tools in C++ 17 mode, with various extra flags per
-# platform.
-build --enable_platform_specific_config
+# Enable absl::string_view support in @googletest
+build --define absl=1
# Fix the python version
build --@rules_python//python/config_settings:python_version=3.12
-# Per platform parameters.
-build:linux --cxxopt="-std=c++17" --cxxopt=-Wno-sign-compare
-build:linux --host_cxxopt="-std=c++17" --host_cxxopt=-Wno-sign-compare
+# Fix the Java version
+build --java_language_version=21 # Version of the source files
+build --java_runtime_version=remotejdk_21 # Hermetic JRE
+
+###############################################################################
+# Per plaform options
+###############################################################################
+
+# By default, build with various extra flags per platform.
+build --enable_platform_specific_config
+
+###############################################################################
+# Options for Linux.
+###############################################################################
+build:linux --cxxopt=-std=c++20 --host_cxxopt=-std=c++20
+build:linux --cxxopt=-Wno-sign-compare --host_cxxopt=-Wno-sign-compare
+build:linux --cxxopt=-Wno-range-loop-construct --host_cxxopt=-Wno-range-loop-construct
+
+###############################################################################
+# Options for macOS.
+###############################################################################
+
+# Sets the default Apple platform to macOS.
+build --apple_platform_type=macos
build:macos --features=-supports_dynamic_linker
-build:macos --cxxopt="-std=c++17" --cxxopt=-Wno-sign-compare --cxxopt=-mmacos-version-min=10.15 --cxxopt=-Wno-dangling-field
-build:macos --host_cxxopt="-std=c++17" --host_cxxopt=-Wno-sign-compare --host_cxxopt=-mmacos-version-min=10.15 --host_cxxopt=-Wno-dangling-field
+build:macos --cxxopt=-std=c++20 --host_cxxopt=-std=c++20
+build:macos --cxxopt=-Wno-sign-compare --host_cxxopt=-Wno-sign-compare
+build:macos --cxxopt=-Wno-dangling-field --host_cxxopt=-Wno-dangling-field
+build:macos --cxxopt=-Wno-range-loop-construct --host_cxxopt=-Wno-range-loop-construct
+build:macos --cxxopt=-mmacos-version-min=10.15 --host_cxxopt=-mmacos-version-min=10.15
+
+###############################################################################
+# Options for Windows.
+###############################################################################
-build:windows --cxxopt="/std:c++20"
-build:windows --host_cxxopt="/std:c++20"
+build:windows --cxxopt=/std:c++20 --host_cxxopt=/std:c++20
# Enable the runfiles symlink tree on Windows. This makes it possible to build
# the pip package on Windows without an intermediate data-file archive, as the
@@ -43,16 +68,38 @@ build:windows --host_cxxopt="/std:c++20"
startup --windows_enable_symlinks
build:windows --enable_runfiles
-# Print command lines for build commands.
-# build --subcommands=pretty_print
+###############################################################################
+# Options for continuous integration.
+###############################################################################
+
+# All build options also apply to test as described by the "Option precedence"
+# section in https://bazel.build/run/bazelrc#bazelrc-syntax-semantics.
-# Print test logs for failed tests.
-test --test_output=errors --test_timeout_filters=-eternal
+# Note for anybody considering using --compilation_mode=opt in CI, it builds
+# most files twice, one PIC version for shared libraries in tests, and one
+# non-PIC version for binaries.
+build:ci --copt=-O1
-# Put user-specific options in .bazelrc.user
-try-import %workspace%/.bazelrc.user
+# Show as many errors as possible.
+build:ci --keep_going
+
+# Show test errors.
+build:ci --test_output=errors
+
+# Skip tests that are too large to run on CI.
+build:ci --test_tag_filters=-noci
+
+# Print information only about tests executed
+build:ci --test_summary=short
+
+# Attempt to work around intermittent issue while trying to fetch remote blob.
+# See e.g. https://github.com/bazelbuild/bazel/issues/18694.
+build:ci --remote_default_exec_properties=cache-silo-key=CleverPeafowl
+
+###############################################################################
+# Options for asan.
+################################################################################
-# asan
build:asan --strip=never
build:asan --copt -fsanitize=address
build:asan --copt -DADDRESS_SANITIZER
@@ -60,3 +107,9 @@ build:asan --copt -O1
build:asan --copt -g
build:asan --copt -fno-omit-frame-pointer
build:asan --linkopt -fsanitize=address
+
+###############################################################################
+# Put user-specific options in user.bazelrc
+# See https://bazel.build/configure/best-practices#bazelrc-file
+################################################################################
+try-import %workspace%/user.bazelrc
diff --git a/.cmake-format.py b/.cmake-format.py
index 889375a5844..6b6402821ab 100644
--- a/.cmake-format.py
+++ b/.cmake-format.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
# Copyright 2010-2025 Google LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/.dockerignore b/.dockerignore
index 87ec80e5e9b..7e6efdf9372 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -32,7 +32,6 @@ makefiles/docker
makefiles/Makefile
Makefile.local
-binder
docs
tools/docker
tools/release
@@ -43,6 +42,7 @@ CONTRIBUTING.md
#LICENSE-2.0.txt
# Native CMake/Make build
+.cache/
dependencies/sources
dependencies/install
ortools/gen
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000000..dfc5bc43d13
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+examples/cpp/wt40.txt text eol=lf
+examples/cpp/testdata/wt40.txt text eol=lf
diff --git a/.github/workflows/aarch64_toolchain.yml b/.github/workflows/aarch64_toolchain.yml
index 95fb8a35a6a..eb3700f8247 100644
--- a/.github/workflows/aarch64_toolchain.yml
+++ b/.github/workflows/aarch64_toolchain.yml
@@ -1,7 +1,7 @@
# ref: https://toolchains.bootlin.com/
name: aarch64 Toolchain
-on: [push, pull_request, workflow_dispatch]
+on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/amd64_cmake_glop_cpp.yml b/.github/workflows/amd64_cmake_glop_cpp.yml
deleted file mode 100644
index 22728a3b003..00000000000
--- a/.github/workflows/amd64_cmake_glop_cpp.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-# ref: https://github.com/actions/runner-images
-name: amd64 CMake Glop C++
-
-on: [push, pull_request, workflow_dispatch]
-
-concurrency:
- group: ${{github.workflow}}-${{github.ref}}
- cancel-in-progress: true
-
-jobs:
- docker:
- name: amd64•Docker•CMake•Glop
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v6
- - name: Build env image
- run: make --directory=cmake glop_env
- - name: Build devel image
- run: make --directory=cmake glop_devel
- - name: Build project
- run: make --directory=cmake glop_build
- - name: Test project
- run: make --directory=cmake glop_test
- - name: Build Install env image
- run: make --directory=cmake glop_install_env
- - name: Build Install devel image
- run: make --directory=cmake glop_install_devel
- - name: Build Install
- run: make --directory=cmake glop_install_build
- - name: Test Install
- run: make --directory=cmake glop_install_test
-
- # ref: https://github.com/actions/runner-images
- native:
- strategy:
- matrix:
- cmake: [
- {
- platform: amd64,
- runner: "ubuntu-latest",
- generator: "Unix Makefiles",
- config: Release,
- build_target: all,
- test_target: test,
- install_target: install
- },
- {
- platform: amd64,
- runner: "macos-13", # last macos intel based runner
- generator: "Xcode",
- config: Release,
- build_target: ALL_BUILD,
- test_target: RUN_TESTS,
- install_target: install
- },
- {
- platform: arm64,
- runner: "macos-latest", # macos arm64 based runner
- generator: "Xcode",
- config: Release,
- build_target: ALL_BUILD,
- test_target: RUN_TESTS,
- install_target: install
- },
- {
- platform: amd64,
- runner: "windows-latest",
- generator: "Visual Studio 17 2022",
- config: Release,
- build_target: ALL_BUILD,
- test_target: RUN_TESTS,
- install_target: INSTALL
- },
- ]
- fail-fast: false
- name: ${{matrix.cmake.platform}}•${{matrix.cmake.runner}}•CMake•Glop
- runs-on: ${{matrix.cmake.runner}}
- steps:
- - uses: actions/checkout@v6
- - name: Check cmake
- run: cmake --version
- - name: Configure
- run: >
- cmake -S. -Bbuild
- -G "${{matrix.cmake.generator}}"
- -DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
- -DBUILD_DEPS=ON
- -DBUILD_CXX=OFF -DBUILD_GLOP=ON
- -DCMAKE_INSTALL_PREFIX=install
- - name: Build
- run: >
- cmake --build build
- --config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.build_target}}
- -v -j2
- - name: Install
- run: >
- cmake --build build
- --config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.install_target}}
- -v
diff --git a/.github/workflows/amd64_docker_bazel.yml b/.github/workflows/amd64_docker_bazel.yml
index 4f5f3d778bb..902743dcbe5 100644
--- a/.github/workflows/amd64_docker_bazel.yml
+++ b/.github/workflows/amd64_docker_bazel.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Docker Bazel
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/amd64_docker_cmake.yml b/.github/workflows/amd64_docker_cmake.yml
index 8e2b7fad05a..a9a541b9a49 100644
--- a/.github/workflows/amd64_docker_cmake.yml
+++ b/.github/workflows/amd64_docker_cmake.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Docker CMake
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/amd64_freebsd_cmake.yml b/.github/workflows/amd64_freebsd_cmake.yml
index 31b609d1f2a..f814ba62243 100644
--- a/.github/workflows/amd64_freebsd_cmake.yml
+++ b/.github/workflows/amd64_freebsd_cmake.yml
@@ -1,36 +1,50 @@
+# ref: https://github.com/actions/runner-images
name: amd64 FreeBSD CMake
-on: [push, pull_request, workflow_dispatch]
+on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
-# Only macos-12 runner provide virtualisation with vagrant/virtualbox installed.
-# ref: https://github.com/actions/runner-images/tree/main/images/macos
-# ref: https://app.vagrantup.com/generic/boxes/freebsd13
+# Building using the github runner environement directly.
jobs:
vagrant:
strategy:
- fail-fast: false
matrix:
- distro: [freebsd]
- lang: [cpp, python]
- allow_failure: [false]
- include:
- - distro: freebsd
- lang: dotnet
- allow_failure: true
- - distro: freebsd
- lang: java
- allow_failure: true
- name: amd64•FreeBSD•CMake•${{matrix.lang}}
- runs-on: macos-12
+ distro: [
+ freebsd,
+ #netbsd,
+ #openbsd,
+ ]
+ lang: [
+ cpp,
+ dotnet,
+ java,
+ python,
+ ]
+ allow_failure: [true]
+ fail-fast: false
+ name: amd64•${{matrix.distro}}•CMake•${{matrix.lang}}
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- - name: vagrant version
- run: Vagrant --version
- - name: VirtualBox version
- run: virtualbox -h
+ - name: Virtualbox install
+ run: |
+ sudo apt update -q
+ sudo apt install -yq virtualbox
+ virtualbox --help
+ - name: Vagrant install
+ run: |
+ sudo apt update -q
+ wget https://releases.hashicorp.com/vagrant/2.4.7/vagrant_2.4.7-1_amd64.deb
+ sudo apt install -y ./vagrant_2.4.7-1_amd64.deb
+ vagrant --version
- name: Build
run: make --directory=cmake ${{matrix.distro}}_${{matrix.lang}}
+
+ amd64_bsd_cmake:
+ runs-on: ubuntu-latest
+ needs: vagrant
+ steps:
+ - uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_linux_bazel.yml b/.github/workflows/amd64_linux_bazel.yml
index 5b3d6a86e39..a954decfe22 100644
--- a/.github/workflows/amd64_linux_bazel.yml
+++ b/.github/workflows/amd64_linux_bazel.yml
@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux Bazel
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
+env:
+ cache-root: /tmp/bazel
+
# Building using the github runner environement directly.
jobs:
- native:
+ amd64-Linux-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,13 +25,14 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
+ #{version: '3.14'},
]
fail-fast: false
- name: amd64•Linux•Bazel•Python-${{matrix.python.version}}
- runs-on: ubuntu-latest
env:
CC: gcc-12
CXX: g++-12
+ cache-name: ${{github.job}}-${{matrix.python.version}}
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check Java
@@ -53,21 +62,26 @@ jobs:
run: |
sed -i -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]\+"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
+ - name: Restore bazel cache
+ uses: actions/cache/restore@v4
+ id: bazel-cache-restore
+ with:
+ key: ${{env.cache-name}}
+ path: ${{env.cache-root}}
- name: Build
- run: >
- bazel build
- -c opt
- --subcommands=pretty_print
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} build --config=ci //...
- name: Test
- run: >
- bazel test
- -c opt
- --test_output=errors
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} test --config=ci //...
+ - name: Save Bazel cache for branch main even when Build and Test fail.
+ uses: actions/cache/save@v4
+ # https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
+ if: always() && github.ref == 'refs/heads/main'
+ with:
+ key: ${{env.cache-name}}-${{github.sha}}
+ path: ${{env.cache-root}}
amd64_linux_bazel:
runs-on: ubuntu-latest
- needs: native
+ needs: amd64-Linux-Bazel-Python
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_linux_cmake_coinor_off.yml b/.github/workflows/amd64_linux_cmake_coinor_off.yml
index 36078f8d95e..c6812d5cc1f 100644
--- a/.github/workflows/amd64_linux_cmake_coinor_off.yml
+++ b/.github/workflows/amd64_linux_cmake_coinor_off.yml
@@ -1,75 +1,135 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake CoinOR OFF
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
- strategy:
- matrix:
- cmake: [
- {language: 'C++', args: '-DBUILD_CXX=ON'},
- {language: '.Net', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'},
- {language: 'Java', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON'},
- {language: 'Python', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'},
- ]
- fail-fast: false
- name: amd64•Linux•CMake•${{matrix.cmake.language}}•CoinOR=OFF
+ name: amd64•Linux•CMake•CoinOR=OFF
+ runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_coinor_deps_src
+ deps_build_key: amd64_linux_coinor_deps_build
+ ccache_key: amd64_linux_coinor_ccache
+ steps:
+ - uses: actions/checkout@v6
+ - name: Install Dependencies
+ run: |
+ sudo apt update
+ sudo apt install -y ninja-build ccache swig
+ swig -version
+ # Install .NET SDKs
+ - name: Setup .NET 8.0
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: 8.0.x
+ - name: Check dotnet
+ run: dotnet --info
+ # Install Java
+ - name: Check java
+ run: java -version
+ # Install Python
+ - name: Install python3 venv
+ run: sudo apt-get install python3-venv
+ - name: Update Path
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
+ - name: Check CMake
+ run: cmake --version
+ - name: Configure
+ run: >
+ cmake -S. -Bbuild
+ -G "Ninja"
+ -DCMAKE_BUILD_TYPE=Release
+ -DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
+ -DUSE_GLPK=OFF -DUSE_SCIP=OFF
+ -DUSE_COINOR=OFF
+ -DCMAKE_INSTALL_PREFIX=install
+ - name: Build
+ run: >
+ cmake --build build
+ --config Release
+ --target all
+ -v -j2
+ - name: Test
+ run: >
+ CTEST_OUTPUT_ON_FAILURE=1
+ cmake --build build
+ --config Release
+ --target test
+ -v
+ - name: Install
+ run: >
+ cmake --build build
+ --config Release
+ --target install
+ -v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
+
+ amd64_linux_cmake_coinor:
runs-on: ubuntu-latest
+ needs: native
steps:
- - uses: actions/checkout@v6
- # Install SWIG
- - name: Swig install
- run: sudo apt install -y swig
- - name: Check swig
- run: swig -version
- # Install .NET SDKs
- - name: Setup .NET 8.0
- uses: actions/setup-dotnet@v5
- with:
- dotnet-version: 8.0.x
- - name: Check dotnet
- run: dotnet --info
- # Install Java
- - name: Check java
- run: java -version
- # Install Python
- - name: Install python3 venv
- run: sudo apt-get install python3-venv
- - name: Update Path
- run: echo "$HOME/.local/bin" >> $GITHUB_PATH
- # CMake
- - name: Check cmake
- run: cmake --version
- - name: Configure
- run: >
- cmake -S. -Bbuild
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_DEPS=ON
- -DUSE_COINOR=OFF
- ${{matrix.cmake.args}}
- - name: Build
- run: >
- cmake --build build
- --config Release
- --target all
- -v -j2
- - name: Test
- run: >
- CTEST_OUTPUT_ON_FAILURE=1
- cmake --build build
- --config Release
- --target test
- -v
- - name: Install
- run: >
- cmake --build build
- --config Release
- --target install
- -v
- -- DESTDIR=install
+ - uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_linux_cmake_cpp.yml b/.github/workflows/amd64_linux_cmake_cpp.yml
index c82fdbfb5f4..497f0887d37 100644
--- a/.github/workflows/amd64_linux_cmake_cpp.yml
+++ b/.github/workflows/amd64_linux_cmake_cpp.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake C++
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -15,17 +24,45 @@ jobs:
cmake: [
{name: "Make", generator: "Unix Makefiles", config: Release},
{name: "Ninja", generator: "Ninja", config: Release},
- {name: "Ninja Multi", generator: "Ninja Multi-Config", config: Release},
- ]
+ {name: "NinjaMulti", generator: "Ninja Multi-Config", config: Release}
+ ]
fail-fast: false
name: amd64•Linux•CMake(${{matrix.cmake.name}})•C++
runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_cpp_deps_src
+ deps_build_key: amd64_linux_cpp_deps_build_${{matrix.cmake.name}}
+ ccache_key: amd64_linux_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Install Ninja
+ - name: Install Dependencies
run: |
- sudo apt-get update
- sudo apt-get install ninja-build
+ sudo apt update
+ sudo apt install -y ninja-build ccache
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -54,6 +91,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target install
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_cpp:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_linux_cmake_dotnet.yml b/.github/workflows/amd64_linux_cmake_dotnet.yml
index a68b7b46172..354cd816f21 100644
--- a/.github/workflows/amd64_linux_cmake_dotnet.yml
+++ b/.github/workflows/amd64_linux_cmake_dotnet.yml
@@ -1,22 +1,43 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake .Net
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
- name: amd64•Linux•CMake•.Net
+ strategy:
+ matrix:
+ config: [
+ {name: "examples", flags: "-DBUILD_DOTNET_EXAMPLES=ON -DBUILD_DOTNET_SAMPLES=OFF"},
+ {name: "samples", flags: "-DBUILD_DOTNET_EXAMPLES=OFF -DBUILD_DOTNET_SAMPLES=ON"},
+ ]
+ fail-fast: false
+ name: amd64•Linux•CMake•.Net(${{matrix.config.name}})
runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_dotnet_deps_src
+ deps_build_key: amd64_linux_dotnet_deps_build
+ ccache_key: amd64_linux_dotnet_ccache
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- sudo apt install -y swig
+ sudo apt update
+ sudo apt install -y ninja-build ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -24,13 +45,39 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
+ -G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
+ ${{matrix.config.flags}}
-DBUILD_DOTNET=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
@@ -52,6 +99,32 @@ jobs:
--config Release
--target install
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_dotnet:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_linux_cmake_glpk_on.yml b/.github/workflows/amd64_linux_cmake_glpk_on.yml
index 23271f796cc..1844adf6e1f 100644
--- a/.github/workflows/amd64_linux_cmake_glpk_on.yml
+++ b/.github/workflows/amd64_linux_cmake_glpk_on.yml
@@ -1,28 +1,87 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake GLPK ON
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
name: amd64•Linux•CMake•GLPK=ON
runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_glpk_deps_src
+ deps_build_key: amd64_linux_glpk_deps_build
+ ccache_key: amd64_linux_glpk_ccache
steps:
- uses: actions/checkout@v6
- - name: Check cmake
+ - name: Install Dependencies
+ run: |
+ sudo apt update
+ sudo apt install -y ninja-build ccache swig
+ swig -version
+ # Install .NET SDKs
+ - name: Setup .NET 8.0
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: 8.0.x
+ - name: Check dotnet
+ run: dotnet --info
+ # Install Java
+ - name: Check java
+ run: java -version
+ # Install Python
+ - name: Install python3 venv
+ run: sudo apt-get install python3-venv
+ - name: Update Path
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
+ - name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
+ -G "Ninja"
-DCMAKE_BUILD_TYPE=Release
- -DBUILD_DEPS=ON
+ -DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
-DUSE_SCIP=OFF -DUSE_COINOR=OFF
-DUSE_GLPK=ON
+ -DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
@@ -42,4 +101,35 @@ jobs:
--config Release
--target install
-v
- -- DESTDIR=install
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
+
+ amd64_linux_cmake_glpk:
+ runs-on: ubuntu-latest
+ needs: native
+ steps:
+ - uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_linux_cmake_java.yml b/.github/workflows/amd64_linux_cmake_java.yml
index 3f5fea295f7..6c5b9763c43 100644
--- a/.github/workflows/amd64_linux_cmake_java.yml
+++ b/.github/workflows/amd64_linux_cmake_java.yml
@@ -1,30 +1,68 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake Java
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
name: amd64•Linux•CMake•Java
runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_java_deps_src
+ deps_build_key: amd64_linux_java_deps_build
+ ccache_key: amd64_linux_java_ccache
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- sudo apt install -y swig
+ sudo apt update
+ sudo apt install -y ninja-build ccache swig
swig -version
- - name: Check java
- run: java -version
+ echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
+ -G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_JAVA=ON -DSKIP_GPG=ON
@@ -48,6 +86,32 @@ jobs:
--config Release
--target install
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_java:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_linux_cmake_python.yml b/.github/workflows/amd64_linux_cmake_python.yml
index b45314dd3e8..9b0c082d18a 100644
--- a/.github/workflows/amd64_linux_cmake_python.yml
+++ b/.github/workflows/amd64_linux_cmake_python.yml
@@ -1,41 +1,47 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake Python
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
matrix:
- cmake: [
- {name: "Make", generator: "Unix Makefiles", config: Release},
- {name: "Ninja", generator: "Ninja", config: Release},
- {name: "Ninja Multi", generator: "Ninja Multi-Config", config: Release},
- ]
python: [
{version: "3.9"},
- {version: "3.10"},
- {version: "3.11"},
- {version: "3.12"},
+ #{version: "3.10"},
+ #{version: "3.11"},
+ #{version: "3.12"},
{version: "3.13"},
- ]
+ {version: "3.14"},
+ ]
fail-fast: false
- name: amd64•Linux•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
+ name: amd64•Linux•CMake•Python${{matrix.python.version}}
runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_python_deps_src_${{matrix.python.version}}
+ deps_build_key: amd64_linux_python_deps_build_${{matrix.python.version}}
+ ccache_key: amd64_linux_python_ccache_${{matrix.python.version}}
steps:
- uses: actions/checkout@v6
- - name: Install Ninja
+ - name: Install Dependencies
run: |
sudo apt update
- sudo apt install -y ninja-build
- - name: Swig install
- run: |
- sudo apt install -y swig
+ sudo apt install -y ninja-build ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -43,35 +49,85 @@ jobs:
python-version: ${{matrix.python.version}}
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
- -G "${{matrix.cmake.generator}}"
- -DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
+ -G "Ninja"
+ -DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_PYTHON=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
- --config ${{matrix.cmake.config}}
+ --config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
- --config ${{matrix.cmake.config}}
+ --config Release
--target test
-v
- name: Install
run: >
cmake --build build
- --config ${{matrix.cmake.config}}
+ --config Release
--target install
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_python:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_linux_cmake_scip_off.yml b/.github/workflows/amd64_linux_cmake_scip_off.yml
index e68901c1112..6689b1bd929 100644
--- a/.github/workflows/amd64_linux_cmake_scip_off.yml
+++ b/.github/workflows/amd64_linux_cmake_scip_off.yml
@@ -1,75 +1,135 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake SCIP OFF
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
- strategy:
- matrix:
- cmake: [
- {language: 'C++', args: '-DBUILD_CXX=ON'},
- {language: '.Net', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'},
- {language: 'Java', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON'},
- {language: 'Python', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'},
- ]
- fail-fast: false
- name: amd64•Linux•CMake•${{matrix.cmake.language}}•SCIP=OFF
+ name: amd64•Linux•CMake•SCIP=OFF
+ runs-on: ubuntu-latest
+ env:
+ deps_src_key: amd64_linux_scip_deps_src
+ deps_build_key: amd64_linux_scip_deps_build
+ ccache_key: amd64_linux_scip_ccache
+ steps:
+ - uses: actions/checkout@v6
+ - name: Install Dependencies
+ run: |
+ sudo apt update
+ sudo apt install -y ninja-build ccache swig
+ swig -version
+ # Install .NET SDKs
+ - name: Setup .NET 8.0
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: 8.0.x
+ - name: Check dotnet
+ run: dotnet --info
+ # Install Java
+ - name: Check java
+ run: java -version
+ # Install Python
+ - name: Install python3 venv
+ run: sudo apt-get install python3-venv
+ - name: Update Path
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
+ - name: Check CMake
+ run: cmake --version
+ - name: Configure
+ run: >
+ cmake -S. -Bbuild
+ -G "Ninja"
+ -DCMAKE_BUILD_TYPE=Release
+ -DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
+ -DUSE_COINOR=OFF -DUSE_GLPK=OFF
+ -DUSE_SCIP=OFF
+ -DCMAKE_INSTALL_PREFIX=install
+ - name: Build
+ run: >
+ cmake --build build
+ --config Release
+ --target all
+ -v -j2
+ - name: Test
+ run: >
+ CTEST_OUTPUT_ON_FAILURE=1
+ cmake --build build
+ --config Release
+ --target test
+ -v
+ - name: Install
+ run: >
+ cmake --build build
+ --config Release
+ --target install
+ -v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
+
+ amd64_linux_cmake_scip:
runs-on: ubuntu-latest
+ needs: native
steps:
- - uses: actions/checkout@v6
- # Install SWIG
- - name: Swig install
- run: sudo apt install -y swig
- - name: Check swig
- run: swig -version
- # Install .NET SDKs
- - name: Setup .NET 8.0
- uses: actions/setup-dotnet@v5
- with:
- dotnet-version: 8.0.x
- - name: Check dotnet
- run: dotnet --info
- # Install Java
- - name: Check java
- run: java -version
- # Install Python
- - name: Install python3 venv
- run: sudo apt-get install python3-venv
- - name: Update Path
- run: echo "$HOME/.local/bin" >> $GITHUB_PATH
- # CMake
- - name: Check cmake
- run: cmake --version
- - name: Configure
- run: >
- cmake -S. -Bbuild
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_DEPS=ON
- -DUSE_SCIP=OFF
- ${{matrix.cmake.args}}
- - name: Build
- run: >
- cmake --build build
- --config Release
- --target all
- -v -j2
- - name: Test
- run: >
- CTEST_OUTPUT_ON_FAILURE=1
- cmake --build build
- --config Release
- --target test
- -v
- - name: Install
- run: >
- cmake --build build
- --config Release
- --target install
- -v
- -- DESTDIR=install
+ - uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_linux_cmake_system_deps.yml b/.github/workflows/amd64_linux_cmake_system_deps.yml
index d95993afaca..aed615d4b6e 100644
--- a/.github/workflows/amd64_linux_cmake_system_deps.yml
+++ b/.github/workflows/amd64_linux_cmake_system_deps.yml
@@ -1,14 +1,19 @@
# Test or-tools using system wide install dependencies.
name: amd64 Linux CMake System Dependencies
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
jobs:
- native:
+ docker:
strategy:
matrix:
distro: [system_deps]
diff --git a/.github/workflows/amd64_macos_bazel.yml b/.github/workflows/amd64_macos_bazel.yml
index 33ac3a97ab6..76ef523f932 100644
--- a/.github/workflows/amd64_macos_bazel.yml
+++ b/.github/workflows/amd64_macos_bazel.yml
@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS Bazel
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
+env:
+ cache-root: /private/tmp/bazel
+
# Building using the github runner environement directly.
jobs:
- native:
+ amd64-MacOS-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,17 +25,19 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
+ #{version: '3.14'},
]
fail-fast: false
- name: amd64•MacOS•Bazel•Python-${{matrix.python.version}}
- runs-on: macos-13 # last macos intel based runner
+ env:
+ cache-name: ${{github.job}}-${{matrix.python.version}}
+ runs-on: macos-15-intel
steps:
- uses: actions/checkout@v6
- - name: Set Java to OpenJDK 17 (Temurin)
+ - name: Set Java to OpenJDK 21 (Temurin)
uses: actions/setup-java@v5
with:
distribution: 'temurin'
- java-version: '17'
+ java-version: '21'
- name: Check mvn
run: mvn --version
- name: Setup Python
@@ -46,21 +56,26 @@ jobs:
run: |
sed -i '' -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]*"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
+ - name: Restore bazel cache
+ uses: actions/cache/restore@v4
+ id: bazel-cache-restore
+ with:
+ key: ${{env.cache-name}}
+ path: ${{env.cache-root}}
- name: Build
- run: >
- bazel build
- -c opt
- --subcommands=pretty_print
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} build --config=ci //...
- name: Test
- run: >
- bazel test
- -c opt
- --test_output=errors
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} test --config=ci //...
+ - name: Save Bazel cache for branch main even when Build and Test fail.
+ uses: actions/cache/save@v4
+ # https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
+ if: always() && github.ref == 'refs/heads/main'
+ with:
+ key: ${{env.cache-name}}-${{github.sha}}
+ path: ${{env.cache-root}}
amd64_macos_bazel:
runs-on: ubuntu-latest
- needs: native
+ needs: amd64-MacOS-Bazel-Python
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_macos_cmake_cpp.yml b/.github/workflows/amd64_macos_cmake_cpp.yml
index 816dbcee1fd..28964ae5a2f 100644
--- a/.github/workflows/amd64_macos_cmake_cpp.yml
+++ b/.github/workflows/amd64_macos_cmake_cpp.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake C++
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -18,9 +27,39 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•C++
- runs-on: macos-13 # last macos intel based runner
+ runs-on: macos-15-intel
+ env:
+ deps_src_key: amd64_macos_cpp_deps_src
+ deps_build_key: amd64_macos_cpp_deps_build_${{matrix.cmake.name}}
+ ccache_key: amd64_macos_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
+ - name: Install Dependencies
+ run: brew install ccache
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -49,6 +88,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_cpp:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_macos_cmake_dotnet.yml b/.github/workflows/amd64_macos_cmake_dotnet.yml
index 8a89d6312d4..455fc76f82a 100644
--- a/.github/workflows/amd64_macos_cmake_dotnet.yml
+++ b/.github/workflows/amd64_macos_cmake_dotnet.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake .Net
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -18,12 +27,16 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•.Net
- runs-on: macos-13 # last macos intel based runner
+ runs-on: macos-15-intel
+ env:
+ deps_src_key: amd64_macos_dotnet_deps_src
+ deps_build_key: amd64_macos_dotnet_deps_build_${{matrix.cmake.name}}
+ ccache_key: amd64_macos_dotnet_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -31,6 +44,30 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -60,6 +97,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_dotnet:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_macos_cmake_java.yml b/.github/workflows/amd64_macos_cmake_java.yml
index 1551ea2ff2d..e33566dd374 100644
--- a/.github/workflows/amd64_macos_cmake_java.yml
+++ b/.github/workflows/amd64_macos_cmake_java.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake Java
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -18,15 +27,42 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•Java
- runs-on: macos-13 # last macos intel based runner
+ runs-on: macos-15-intel
+ env:
+ deps_src_key: amd64_macos_java_deps_src
+ deps_build_key: amd64_macos_java_deps_build_${{matrix.cmake.name}}
+ ccache_key: amd64_macos_java_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- - name: Check java
- run: java -version
+ echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -56,6 +92,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_java:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_macos_cmake_python.yml b/.github/workflows/amd64_macos_cmake_python.yml
index 1566b1c8f5c..72b961b4807 100644
--- a/.github/workflows/amd64_macos_cmake_python.yml
+++ b/.github/workflows/amd64_macos_cmake_python.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake Python
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -17,20 +26,25 @@ jobs:
{name: "Make", generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
python: [
- {version: "3.9"},
- {version: "3.10"},
- {version: "3.11"},
- {version: "3.12"},
+ #{version: "3.9"},
+ #{version: "3.10"},
+ #{version: "3.11"},
+ #{version: "3.12"},
{version: "3.13"},
+ {version: "3.14"},
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
- runs-on: macos-13 # last macos intel based runner
+ runs-on: macos-15-intel
+ env:
+ deps_src_key: amd64_macos_python_deps_src
+ deps_build_key: amd64_macos_python_deps_build_${{matrix.cmake.name}}
+ ccache_key: amd64_macos_python_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -40,6 +54,30 @@ jobs:
run: |
echo "$HOME/Library/Python/${{matrix.python.version}}/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -69,6 +107,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_python:
runs-on: ubuntu-latest
diff --git a/.github/workflows/amd64_web.yml b/.github/workflows/amd64_web.yml
index 239a35c2786..b2c585b109b 100644
--- a/.github/workflows/amd64_web.yml
+++ b/.github/workflows/amd64_web.yml
@@ -1,7 +1,8 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Web
-on: [push, pull_request, workflow_dispatch]
+# still experimental
+on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/amd64_windows_bazel.yml b/.github/workflows/amd64_windows_bazel.yml
index 47f59843be1..f9ee9cc1617 100644
--- a/.github/workflows/amd64_windows_bazel.yml
+++ b/.github/workflows/amd64_windows_bazel.yml
@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows Bazel
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
+env:
+ cache-root: '%USERPROFILE%\AppData\Local\Temp\bazel'
+
# Building using the github runner environement directly.
jobs:
- native:
+ amd64-Windows-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,16 +25,18 @@ jobs:
# {version: '3.11'},
{version: '3.12'},
# {version: '3.13'},
+ # {version: '3.14'},
]
fail-fast: false # Don't cancel all jobs if one fails.
- name: amd64•Windows•Bazel•Python-${{matrix.python.version}}
+ env:
+ cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: windows-2022
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'temurin'
- java-version: '17'
+ java-version: '21'
- name: Check java
run: java -version
- name: Check mvn
@@ -41,21 +51,26 @@ jobs:
run: choco install bazel
- name: Check Bazel
run: bazel version
+ - name: Restore bazel cache
+ uses: actions/cache/restore@v4
+ id: bazel-cache-restore
+ with:
+ key: ${{env.cache-name}}
+ path: ${{env.cache-root}}
- name: Build
- run: >
- bazel build
- -c opt
- --subcommands=pretty_print
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} build --config=ci //...
- name: Test
- run: >
- bazel test
- -c opt
- --test_output=errors
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} test --config=ci //...
+ - name: Save Bazel cache for branch main even when Build and Test fail.
+ uses: actions/cache/save@v4
+ # https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
+ if: always() && github.ref == 'refs/heads/main'
+ with:
+ key: ${{env.cache-name}}-${{github.sha}}
+ path: ${{env.cache-root}}
amd64_windows_bazel:
runs-on: ubuntu-latest
- needs: native
+ needs: amd64-Windows-Bazel-Python
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/amd64_windows_cmake_cpp.yml b/.github/workflows/amd64_windows_cmake_cpp.yml
index 1401f17fc4d..20457d19a35 100644
--- a/.github/workflows/amd64_windows_cmake_cpp.yml
+++ b/.github/workflows/amd64_windows_cmake_cpp.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake C++
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,16 +18,33 @@ jobs:
strategy:
matrix:
cmake: [
- {name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
- {name: "VS2022", generator: "Visual Studio 17 2022", config: Debug, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
+ {name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
+ # {name: "VS2022", generator: "Visual Studio 17 2022", config: Debug}, # too many symbols
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}},${{matrix.cmake.config}})•C++
runs-on: windows-latest
env:
+ deps_src_key: amd64_windows_cpp_deps_src
+ deps_build_key: amd64_windows_cpp_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
+
+ # CONFIGURING CACHES
+ - name: Cache CMake dependency source code
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Cache CMake dependency build
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+
- name: Check CMake
run: |
cmake --version
@@ -38,19 +60,19 @@ jobs:
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.build_target}}
+ --target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.test_target}}
+ --target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.install_target}}
+ --target INSTALL
-v
amd64_windows_cmake_cpp:
diff --git a/.github/workflows/amd64_windows_cmake_dotnet.yml b/.github/workflows/amd64_windows_cmake_dotnet.yml
index 13676c49a7f..47269dbc654 100644
--- a/.github/workflows/amd64_windows_cmake_dotnet.yml
+++ b/.github/workflows/amd64_windows_cmake_dotnet.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake .Net
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,12 +18,14 @@ jobs:
strategy:
matrix:
cmake: [
- {name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
+ {name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•.Net
runs-on: windows-latest
env:
+ deps_src_key: amd64_windows_dotnet_deps_src
+ deps_build_key: amd64_windows_dotnet_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -28,32 +35,49 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
+
+ # CONFIGURING CACHES
+ - name: Cache CMake dependency source code
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Cache CMake dependency build
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+
- name: Check CMake
- run: cmake --version
+ run: |
+ cmake --version
+ cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
- -DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
+ -DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_DOTNET=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.build_target}}
+ --target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.test_target}}
+ --target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.install_target}}
+ --target INSTALL
-v
amd64_windows_cmake_dotnet:
diff --git a/.github/workflows/amd64_windows_cmake_java.yml b/.github/workflows/amd64_windows_cmake_java.yml
index 195850c5db1..5445cf09b93 100644
--- a/.github/workflows/amd64_windows_cmake_java.yml
+++ b/.github/workflows/amd64_windows_cmake_java.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake Java
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,28 +18,25 @@ jobs:
strategy:
matrix:
cmake: [
- {name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
+ {name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
java: [
# see https://endoflife.date/azul-zulu
- {distrib: 'zulu', version: '8'}, # 2030/12
- {distrib: 'zulu', version: '11'}, # 2026/09
- {distrib: 'zulu', version: '17'}, # 2029/09
{distrib: 'zulu', version: '21'}, # 2031/09
+ {distrib: 'zulu', version: '25'}, # 2033/09
# see https://endoflife.date/eclipse-temurin
- {distrib: 'temurin', version: '8'}, # 2026/11
- {distrib: 'temurin', version: '11'}, # 2027/10
- {distrib: 'temurin', version: '17'}, # 2027/10
{distrib: 'temurin', version: '21'}, # 2029/12
+ {distrib: 'temurin', version: '25'}, # 2031/09
# see https://endoflife.date/microsoft-build-of-openjdk
- {distrib: 'microsoft', version: '11'}, # 2027/09
- {distrib: 'microsoft', version: '17'}, # 2027/09
- {distrib: 'microsoft', version: '21'}, # 2028/09
+ # microsoft jdk seems to use an older redistributable
+ #{distrib: 'microsoft', version: '21'}, # 2028/09
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•${{matrix.java.distrib}}-${{matrix.java.version}}
runs-on: windows-latest
env:
+ deps_src_key: amd64_windows_java_deps_src
+ deps_build_key: amd64_windows_java_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -42,40 +44,53 @@ jobs:
with:
distribution: ${{matrix.java.distrib}}
java-version: ${{matrix.java.version}}
- - name: Update maven
- run: |
- choco upgrade maven
- echo "C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Check java
run: |
java -version
mvn --version
+
+ # CONFIGURING CACHES
+ - name: Cache CMake dependency source code
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Cache CMake dependency build
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+
- name: Check CMake
- run: cmake --version
+ run: |
+ cmake --version
+ cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
- -DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
+ -DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_JAVA=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.build_target}}
+ --target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.test_target}}
+ --target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.install_target}}
+ --target INSTALL
-v
amd64_windows_cmake_java:
diff --git a/.github/workflows/amd64_windows_cmake_python.yml b/.github/workflows/amd64_windows_cmake_python.yml
index dac08692514..7a1beb4c766 100644
--- a/.github/workflows/amd64_windows_cmake_python.yml
+++ b/.github/workflows/amd64_windows_cmake_python.yml
@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake Python
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,19 +18,22 @@ jobs:
strategy:
matrix:
cmake: [
- {name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
+ {name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
python: [
{version: "3.9", dir: Python309},
- {version: "3.10", dir: Python310},
- {version: "3.11", dir: Python311},
- {version: "3.12", dir: Python312},
+ #{version: "3.10", dir: Python310},
+ #{version: "3.11", dir: Python311},
+ #{version: "3.12", dir: Python312},
{version: "3.13", dir: Python313},
+ {version: "3.14", dir: Python314},
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
runs-on: windows-latest
env:
+ deps_src_key: amd64_windows_python_deps_src
+ deps_build_key: amd64_windows_python_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -38,32 +46,49 @@ jobs:
run: >
echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/${{matrix.python.dir}}/Scripts" |
Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+
+ # CONFIGURING CACHES
+ - name: Cache CMake dependency source code
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Cache CMake dependency build
+ uses: actions/cache@v4
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+
- name: Check CMake
- run: cmake --version
+ run: |
+ cmake --version
+ cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
- -DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
+ -DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_PYTHON=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.build_target}}
+ --target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.test_target}}
+ --target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
- --target ${{matrix.cmake.install_target}}
+ --target INSTALL
-v
amd64_windows_cmake_python:
diff --git a/.github/workflows/arm64_macos_bazel.yml b/.github/workflows/arm64_macos_bazel.yml
index 3a715972e9d..09f17dc6ef8 100644
--- a/.github/workflows/arm64_macos_bazel.yml
+++ b/.github/workflows/arm64_macos_bazel.yml
@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS Bazel
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
+env:
+ cache-root: /private/tmp/bazel
+
# Building using the github runner environement directly.
jobs:
- native:
+ arm64-MacOS-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,17 +25,19 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
+ #{version: '3.14'},
]
fail-fast: false
- name: arm64•MacOS•Bazel•Python-${{matrix.python.version}}
+ env:
+ cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: macos-latest # macos arm64 based runner
steps:
- uses: actions/checkout@v6
- - name: Set Java to OpenJDK 17 (Temurin)
+ - name: Set Java to OpenJDK 21 (Temurin)
uses: actions/setup-java@v5
with:
distribution: 'temurin'
- java-version: '17'
+ java-version: '21'
- name: Check mvn
run: mvn --version
- name: Setup Python
@@ -46,21 +56,26 @@ jobs:
run: |
sed -i '' -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]*"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
+ - name: Restore bazel cache
+ uses: actions/cache/restore@v4
+ id: bazel-cache-restore
+ with:
+ key: ${{env.cache-name}}
+ path: ${{env.cache-root}}
- name: Build
- run: >
- bazel build
- -c opt
- --subcommands=pretty_print
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} build --config=ci //...
- name: Test
- run: >
- bazel test
- -c opt
- --test_output=errors
- //ortools/... //examples/...
+ run: bazel --output_user_root=${{env.cache-root}} test --config=ci //...
+ - name: Save Bazel cache for branch main even when Build and Test fail.
+ uses: actions/cache/save@v4
+ # https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
+ if: always() && github.ref == 'refs/heads/main'
+ with:
+ key: ${{env.cache-name}}-${{github.sha}}
+ path: ${{env.cache-root}}
arm64_macos_bazel:
runs-on: ubuntu-latest
- needs: native
+ needs: arm64-MacOS-Bazel-Python
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/arm64_macos_cmake_cpp.yml b/.github/workflows/arm64_macos_cmake_cpp.yml
index bc823afdf69..f9ee7eb27d5 100644
--- a/.github/workflows/arm64_macos_cmake_cpp.yml
+++ b/.github/workflows/arm64_macos_cmake_cpp.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake C++
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -19,8 +28,38 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•C++
runs-on: macos-latest # macos M1 based runner
+ env:
+ deps_src_key: arm64_macos_cpp_deps_src
+ deps_build_key: arm64_macos_cpp_deps_build_${{matrix.cmake.name}}
+ ccache_key: arm64_macos_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
+ - name: Install Dependencies
+ run: brew install ccache
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -49,6 +88,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_cpp:
runs-on: ubuntu-latest
diff --git a/.github/workflows/arm64_macos_cmake_dotnet.yml b/.github/workflows/arm64_macos_cmake_dotnet.yml
index 3db3a940bea..8b54e39e6cc 100644
--- a/.github/workflows/arm64_macos_cmake_dotnet.yml
+++ b/.github/workflows/arm64_macos_cmake_dotnet.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake .Net
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -19,11 +28,15 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•.Net
runs-on: macos-latest # macos arm64 based runner
+ env:
+ deps_src_key: arm64_macos_dotnet_deps_src
+ deps_build_key: arm64_macos_dotnet_deps_build_${{matrix.cmake.name}}
+ ccache_key: arm64_macos_dotnet_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -31,6 +44,30 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -60,6 +97,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_dotnet:
runs-on: ubuntu-latest
diff --git a/.github/workflows/arm64_macos_cmake_java.yml b/.github/workflows/arm64_macos_cmake_java.yml
index 44786044f65..1a5e76f5488 100644
--- a/.github/workflows/arm64_macos_cmake_java.yml
+++ b/.github/workflows/arm64_macos_cmake_java.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake Java
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -19,14 +28,41 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•Java
runs-on: macos-latest # macos arm64 based runner
+ env:
+ deps_src_key: arm64_macos_java_deps_src
+ deps_build_key: arm64_macos_java_deps_build_${{matrix.cmake.name}}
+ ccache_key: arm64_macos_java_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- - name: Check java
- run: java -version
+ echo "JAVA_HOME=$JAVA_HOME_21_arm64" >> $GITHUB_ENV
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -56,6 +92,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_java:
runs-on: ubuntu-latest
diff --git a/.github/workflows/arm64_macos_cmake_python.yml b/.github/workflows/arm64_macos_cmake_python.yml
index 73506fbbb86..0fa219c609b 100644
--- a/.github/workflows/arm64_macos_cmake_python.yml
+++ b/.github/workflows/arm64_macos_cmake_python.yml
@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake Python
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
+env:
+ CCACHE_BASEDIR: ${{github.workspace}}
+ CCACHE_DIR: ${{github.workspace}}/.ccache
+
jobs:
native:
strategy:
@@ -17,20 +26,25 @@ jobs:
{name: "Make", generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
python: [
- {version: "3.9"},
- {version: "3.10"},
- {version: "3.11"},
+ #{version: "3.9"},
+ #{version: "3.10"},
+ #{version: "3.11"},
{version: "3.12"},
- {version: "3.13"},
+ #{version: "3.13"},
+ #{version: "3.14"},
]
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
runs-on: macos-latest # macos arm64 based runner
+ env:
+ deps_src_key: arm64_macos_python_deps_src
+ deps_build_key: arm64_macos_python_deps_build_${{matrix.cmake.name}}
+ ccache_key: arm64_macos_python_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- - name: Swig install
+ - name: Install Dependencies
run: |
- brew install swig
+ brew install ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -40,6 +54,30 @@ jobs:
run: |
echo "$HOME/Library/Python/${{matrix.python.version}}/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ # RESTORING CACHES
+ - name: Restore CMake dependency source code
+ uses: actions/cache/restore@v4
+ id: deps_src_restore
+ with:
+ key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: ${{github.workspace}}/build/_deps/*-src
+ - name: Restore CMake dependency build
+ uses: actions/cache/restore@v4
+ id: deps_build_restore
+ with:
+ key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Restore CCache
+ uses: actions/cache/restore@v4
+ id: ccache_restore
+ with:
+ key: ${{env.ccache_key}}-${{github.sha}}
+ restore-keys: ${{env.ccache_key}}-
+ path: ${{env.CCACHE_DIR}}
+
- name: Check CMake
run: cmake --version
- name: Configure
@@ -69,6 +107,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
+ - name: CCache stats
+ run: |
+ ccache --show-stats
+ ccache --zero-stats
+
+ # SAVING CACHES
+ - name: Save CCache
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.ccache_restore.outputs.cache-primary-key}}
+ path: ${{env.CCACHE_DIR}}
+ - name: Save CMake dependency build
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
+ path: |
+ ${{github.workspace}}/build/_deps/*-build
+ ${{github.workspace}}/build/_deps/*-subbuild
+ - name: Save CMake dependency source code
+ if: github.ref == 'refs/heads/main'
+ uses: actions/cache/save@v4
+ with:
+ key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
+ path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_python:
runs-on: ubuntu-latest
diff --git a/.github/workflows/check_format.yml b/.github/workflows/check_format.yml
index 0ceb096d0e3..9f18b2a5a83 100644
--- a/.github/workflows/check_format.yml
+++ b/.github/workflows/check_format.yml
@@ -1,6 +1,11 @@
name: Check Format
-on: [push, pull_request, workflow_dispatch]
+on:
+ push:
+ branches:
+ - main
+ - v99bugfix
+ workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/mips_toolchain.yml b/.github/workflows/mips_toolchain.yml
index ff8efb848c8..bc8d194ec02 100644
--- a/.github/workflows/mips_toolchain.yml
+++ b/.github/workflows/mips_toolchain.yml
@@ -1,7 +1,7 @@
# ref: https://codescape.mips.com/components/toolchain/2021.09-01/downloads.html
name: mips Toolchain
-on: [push, pull_request, workflow_dispatch]
+on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/powerpc_toolchain.yml b/.github/workflows/powerpc_toolchain.yml
index a85bae6a8aa..f7553890d54 100644
--- a/.github/workflows/powerpc_toolchain.yml
+++ b/.github/workflows/powerpc_toolchain.yml
@@ -1,7 +1,7 @@
# ref: https://toolchains.bootlin.com/
name: powerpc Toolchain
-on: [push, pull_request, workflow_dispatch]
+on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml
new file mode 100644
index 00000000000..f607b585a97
--- /dev/null
+++ b/.github/workflows/presubmit.yml
@@ -0,0 +1,123 @@
+# ref: https://github.com/actions/runner-images
+name: Presubmit
+
+on:
+ pull_request:
+ branches:
+ - main
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref_name }}
+ cancel-in-progress: true
+
+env:
+ PYTHON_VERSION: '3.12'
+ JAVA_DISTRIBUTION: 'temurin'
+ JAVA_VERSION: '21'
+
+jobs:
+###############################################################################
+ clang-format:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: jidicula/clang-format-action@v4.16.0
+ with:
+ exclude-regex: '\.tab\.hh$'
+###############################################################################
+ Bazel:
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-15-intel, macos-latest, windows-2022]
+ runs-on: ${{matrix.os}}
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-python@v6
+ with:
+ python-version: ${{env.PYTHON_VERSION}}
+ - uses: bazel-contrib/setup-bazel@0.15.0
+ - name: Build
+ run: bazel test --config=ci //ortools/...
+ shell: bash
+###############################################################################
+ CMake:
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-15-intel, macos-latest, windows-2022]
+ build: [cpp, java, dotnet, python]
+ include:
+ # Map build to CMake
+ - build: cpp
+ cmake: ''
+ - build: java
+ cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON -DSKIP_GPG=ON'
+ - build: dotnet
+ cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'
+ - build: python
+ cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'
+ # Map os to platform / generator
+ - os: ubuntu-latest
+ platform: linux
+ generator: Ninja
+ - os: macos-15-intel
+ platform: macos
+ generator: Xcode
+ - os: macos-latest
+ platform: macos
+ generator: Xcode
+ - os: windows-2022
+ platform: windows
+ generator: 'Visual Studio 17 2022'
+ runs-on: ${{matrix.os}}
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-java@v5
+ if: ${{ matrix.build == 'java' }}
+ with:
+ distribution: ${{env.JAVA_DISTRIBUTION}}
+ java-version: ${{env.JAVA_VERSION}}
+ - uses: actions/setup-python@v6
+ with:
+ python-version: ${{env.PYTHON_VERSION}}
+ - name: Setup linux
+ if: ${{ matrix.platform == 'linux' }}
+ run: sudo apt install -y ninja-build ccache swig
+ - name: Setup macos
+ if: ${{ matrix.platform == 'macos' }}
+ run: brew install ccache swig
+ - name: Setup Linux Python Env
+ if: ${{ matrix.build == 'python' && matrix.platform == 'linux' }}
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
+ - name: Setup MacOs Python Env
+ if: ${{ matrix.build == 'python' && matrix.platform == 'macos' }}
+ run: |
+ echo "$HOME/Library/Python/${{env.PYTHON_VERSION}}/bin" >> $GITHUB_PATH
+ echo "$HOME/.local/bin" >> $GITHUB_PATH
+ - name: Setup Windows Python Env
+ if: ${{ matrix.build == 'python' && matrix.platform == 'windows' }}
+ run: |
+ python3 -m pip install --user mypy-protobuf absl-py setuptools wheel numpy pandas
+ echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/Python312/Scripts" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ - name: Config
+ run: >
+ cmake
+ -S.
+ -Bbuild
+ -G "${{matrix.generator}}"
+ -DBUILD_DEPS=ON
+ -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_C_FLAGS_RELEASE="-O1 -DNDEBUG"
+ -DCMAKE_CXX_FLAGS_RELEASE="-O1 -DNDEBUG"
+ -DCMAKE_INSTALL_PREFIX=install
+ -DUSE_COINOR=OFF
+ -DUSE_HIGHS=OFF
+ -DUSE_SCIP=OFF
+ ${{matrix.cmake}}
+ - name: Build
+ run: cmake --build build --config Release -j --target ${{ matrix.generator == 'Ninja' && 'all' || 'ALL_BUILD'}}
+ - name: Test
+ env:
+ CTEST_OUTPUT_ON_FAILURE: 1
+ run: cmake --build build --config Release -j --target ${{ matrix.generator == 'Ninja' && 'test' || 'RUN_TESTS'}}
diff --git a/.gitignore b/.gitignore
index cb96e754433..692491ab1a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,6 +64,7 @@ export_meta
ortools/bazel-*
examples/bazel-*
bazel-*
+user.bazelrc
.vagrant/
@@ -94,8 +95,6 @@ ortools/dotnet/*/bin
ortools/dotnet/*/obj
ortools/**/samples/bin
ortools/**/samples/obj
-examples/tests/bin
-examples/tests/obj
examples/contrib/bin
examples/contrib/obj
examples/dotnet/bin
@@ -106,8 +105,7 @@ examples/dotnet/obj
CMakeCache.txt
CMakeFiles
DartConfiguration.tcl
-*build*/*
-build/
+/build*/
# Ignore Bzlmod lock file until it is more stable
MODULE.bazel.lock
diff --git a/BUILD.bazel b/BUILD.bazel
index d76269a5a59..41fbb03aeb6 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -14,17 +14,18 @@
load("@gazelle//:def.bzl", "gazelle")
load("@rules_license//rules:license.bzl", "license")
+package(default_applicable_licenses = [":license"])
+
# Expose license for external usage through bazel.
licenses(["notice"])
+
exports_files(["LICENSE"])
+
license(
- name = "license",
- package_name = "or-tools",
- license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
- license_text = ":LICENSE",
-)
-package(
- default_applicable_licenses = [":license"],
+ name = "license",
+ package_name = "or-tools",
+ license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
+ license_text = ":LICENSE",
)
# gazelle:build_file_name BUILD,BUILD.bazel
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b06184dc019..4740f78d491 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,27 +12,23 @@
# limitations under the License.
# This file is just an orchestration
-cmake_minimum_required(VERSION 3.20)
+cmake_minimum_required(VERSION 3.24)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# Enable output of compile commands during generation.
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" ON)
include(utils)
-set_version(VERSION)
+set_version(VERSION RELEASE)
project(ortools VERSION ${VERSION} LANGUAGES CXX C)
set(PROJECT_NAMESPACE ortools)
-message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
+message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION} release: ${RELEASE}")
#message(STATUS "major: ${PROJECT_VERSION_MAJOR}")
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
#message(STATUS "patch: ${PROJECT_VERSION_PATCH}")
-if(MSVC)
- set(CMAKE_CXX_STANDARD 20)
-else()
- set(CMAKE_CXX_STANDARD 17)
-endif()
+set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -90,20 +86,14 @@ if(MSVC AND BUILD_SHARED_LIBS)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
+# Enable CCache if any
+include(ccache)
+
# Disable CTest targets
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
include(CTest)
# By default only build the C++ library which agregate all components.
-option(BUILD_CXX "Build C++ library" ON)
-message(STATUS "Build C++ library: ${BUILD_CXX}")
-
-# If we don't build ortools we could build the GLOP standalone project
-if(NOT BUILD_CXX)
- OPTION(BUILD_GLOP "Build GLOP standalone" ON)
- message(STATUS "Build standalone Glop: ${BUILD_GLOP}")
-endif()
-
option(BUILD_PYTHON "Build Python Library" OFF)
message(STATUS "Build Python: ${BUILD_PYTHON}")
option(BUILD_JAVA "Build Java Library" OFF)
@@ -120,17 +110,17 @@ include(CMakeDependentOption)
# Optional components (enabled by default)
## Flatzinc
-CMAKE_DEPENDENT_OPTION(BUILD_FLATZINC "Build flatzinc" ON "BUILD_CXX" OFF)
+option(BUILD_FLATZINC "Build flatzinc" ON)
message(STATUS "Build Flatzinc: ${BUILD_FLATZINC}")
## MathOpt
-CMAKE_DEPENDENT_OPTION(BUILD_MATH_OPT "Build the MATH_OPT" ON "BUILD_CXX" OFF)
+option(BUILD_MATH_OPT "Build the MATH_OPT" ON)
message(STATUS "Build MathOpt: ${BUILD_MATH_OPT}")
## Samples
option(BUILD_SAMPLES "Build samples" ON)
message(STATUS "Build samples: ${BUILD_SAMPLES}")
-CMAKE_DEPENDENT_OPTION(BUILD_CXX_SAMPLES "Build cxx samples" ON "BUILD_SAMPLES;BUILD_CXX" OFF)
+CMAKE_DEPENDENT_OPTION(BUILD_CXX_SAMPLES "Build cxx samples" ON "BUILD_SAMPLES" OFF)
message(STATUS "Build C++ samples: ${BUILD_CXX_SAMPLES}")
CMAKE_DEPENDENT_OPTION(BUILD_PYTHON_SAMPLES "Build python samples" ON "BUILD_SAMPLES;BUILD_PYTHON" OFF)
message(STATUS "Build Python samples: ${BUILD_PYTHON_SAMPLES}")
@@ -142,7 +132,7 @@ message(STATUS "Build .Net samples: ${BUILD_DOTNET_SAMPLES}")
## Examples
option(BUILD_EXAMPLES "Build examples" ON)
message(STATUS "Build examples: ${BUILD_EXAMPLES}")
-CMAKE_DEPENDENT_OPTION(BUILD_CXX_EXAMPLES "Build cxx examples" ON "BUILD_EXAMPLES;BUILD_CXX" OFF)
+CMAKE_DEPENDENT_OPTION(BUILD_CXX_EXAMPLES "Build cxx examples" ON "BUILD_EXAMPLES" OFF)
message(STATUS "Build C++ examples: ${BUILD_CXX_EXAMPLES}")
CMAKE_DEPENDENT_OPTION(BUILD_PYTHON_EXAMPLES "Build python examples" ON "BUILD_EXAMPLES;BUILD_PYTHON" OFF)
message(STATUS "Build Python examples: ${BUILD_PYTHON_EXAMPLES}")
@@ -153,7 +143,7 @@ message(STATUS "Build .Net examples: ${BUILD_DOTNET_EXAMPLES}")
option(BUILD_DOC "Build documentation" OFF)
message(STATUS "Build documentation: ${BUILD_DOC}")
-CMAKE_DEPENDENT_OPTION(INSTALL_DOC "Install doc" ON "BUILD_CXX AND BUILD_DOC" OFF)
+CMAKE_DEPENDENT_OPTION(INSTALL_DOC "Install doc" ON "BUILD_DOC" OFF)
message(STATUS "Install doc: ${INSTALL_DOC}")
# By default all dependencies are NOT built (i.e. BUILD_DEPS=OFF),
@@ -193,41 +183,30 @@ CMAKE_DEPENDENT_OPTION(BUILD_re2 "Build the re2 dependency Library" OFF
message(STATUS "Build re2: ${BUILD_re2}")
if(BUILD_TESTING)
+ set(OR_TOOLS_BUILD_TESTING ON)
CMAKE_DEPENDENT_OPTION(BUILD_googletest "Build googletest" OFF
"NOT BUILD_DEPS" ON)
CMAKE_DEPENDENT_OPTION(BUILD_benchmark "Build benchmark" OFF
"NOT BUILD_DEPS" ON)
- # Fuzztest do not support MSVC or toolchain
- if(MSVC OR CMAKE_CROSSCOMPILING)
- set(USE_fuzztest OFF)
- else()
- CMAKE_DEPENDENT_OPTION(USE_fuzztest "Enable fuzztest" ON "BUILD_CXX" OFF)
- endif()
- if(NOT USE_fuzztest)
- set(BUILD_fuzztest OFF)
- else()
- CMAKE_DEPENDENT_OPTION(BUILD_fuzztest "Build fuzztest" OFF
- "NOT BUILD_DEPS" ON)
- endif()
+ set(BUILD_protobuf_matchers ON)
else()
+ set(OR_TOOLS_BUILD_TESTING OFF)
set(BUILD_googletest OFF)
+ set(BUILD_protobuf_matchers OFF)
set(BUILD_benchmark OFF)
- set(USE_fuzztest OFF)
- set(BUILD_fuzztest OFF)
endif()
message(STATUS "Build googletest: ${BUILD_googletest}")
+message(STATUS "Build protobuf_matchers: ${BUILD_protobuf_matchers}")
message(STATUS "Build benchmark: ${BUILD_benchmark}")
-message(STATUS "Enable fuzztest: ${USE_fuzztest}")
-message(STATUS "Build fuzztest: ${BUILD_fuzztest}")
# Optional third party solvers (enabled by default)
## BOP
# note OFF is currently not supported.
-CMAKE_DEPENDENT_OPTION(USE_BOP "Use the BOP solver" ON "BUILD_CXX" OFF)
+option(USE_BOP "Use the BOP solver" ON)
message(STATUS "BOP support: ${USE_BOP}")
## COIN-OR Solvers (Cbc, Clp)
-CMAKE_DEPENDENT_OPTION(USE_COINOR "Use the COIN-OR solver" ON "BUILD_CXX" OFF)
+option(USE_COINOR "Use the COIN-OR solver" ON)
message(STATUS "COIN-OR support: ${USE_COINOR}")
if(USE_COINOR)
CMAKE_DEPENDENT_OPTION(BUILD_CoinUtils "Build the CoinUtils dependency Library" OFF
@@ -258,14 +237,14 @@ else()
endif()
## GLOP
-# note OFF is currently not supported.
-CMAKE_DEPENDENT_OPTION(USE_GLOP "Use the GLOP solver" ON "BUILD_CXX" OFF)
+# note: -DUSE_GLOP=OFF is currently not supported.
+option(USE_GLOP "Use the GLOP solver" ON)
message(STATUS "GLOP support: ${USE_GLOP}")
## GLPK
# Disable by default since it is GPLv3, user could enable it and release under GPLv3
# see: https://www.apache.org/licenses/GPL-compatibility.html
-CMAKE_DEPENDENT_OPTION(USE_GLPK "Use the GLPK solver" OFF "BUILD_CXX" OFF)
+option(USE_GLPK "Use the GLPK solver" OFF)
message(STATUS "GLPK support: ${USE_GLPK}")
if(USE_GLPK)
CMAKE_DEPENDENT_OPTION(BUILD_GLPK "Build the GLPK dependency Library" OFF
@@ -277,12 +256,12 @@ message(STATUS "Build GLPK: ${BUILD_GLPK}")
## GUROBI
# Since it is dynamicaly loaded upon use, OFF is currently not supported.
-CMAKE_DEPENDENT_OPTION(USE_GUROBI "Use the Gurobi solver" ON "BUILD_CXX" OFF)
+option(USE_GUROBI "Use the Gurobi solver" ON)
message(STATUS "Gurobi support: ${USE_GUROBI}")
## HiGHS
# see: https://github.com/ERGO-Code/HiGHS
-CMAKE_DEPENDENT_OPTION(USE_HIGHS "Use the HiGHS solver" ON "BUILD_CXX" OFF)
+option(USE_HIGHS "Use the HiGHS solver" ON)
message(STATUS "HiGHS support: ${USE_HIGHS}")
if(USE_HIGHS)
CMAKE_DEPENDENT_OPTION(BUILD_HIGHS "Build the HiGHS dependency Library" OFF
@@ -293,7 +272,7 @@ endif()
message(STATUS "Build HiGHS: ${BUILD_HIGHS}")
## PDLP
-CMAKE_DEPENDENT_OPTION(USE_PDLP "Use the PDLP solver" ON "BUILD_CXX" OFF)
+option(USE_PDLP "Use the PDLP solver" ON)
message(STATUS "PDLP support: ${USE_PDLP}")
if(USE_PDLP)
CMAKE_DEPENDENT_OPTION(BUILD_PDLP "Build the PDLP dependency Library" ON
@@ -305,7 +284,7 @@ message(STATUS "Build PDLP: ${BUILD_PDLP}")
## SCIP
# see: https://github.com/scipopt/scip
-CMAKE_DEPENDENT_OPTION(USE_SCIP "Use the Scip solver" ON "BUILD_CXX" OFF)
+option(USE_SCIP "Use the Scip solver" ON)
message(STATUS "SCIP support: ${USE_SCIP}")
if(USE_SCIP)
CMAKE_DEPENDENT_OPTION(BUILD_Boost "Build the Boost dependency Library" OFF
@@ -330,14 +309,12 @@ message(STATUS "CPLEX support: ${USE_CPLEX}")
## XPRESS
# Since it is dynamicaly loaded upon use, OFF is currently not supported.
-CMAKE_DEPENDENT_OPTION(USE_XPRESS "Use the Xpress solver" ON "BUILD_CXX" OFF)
+option(USE_XPRESS "Use the Xpress solver" ON)
message(STATUS "Xpress support: ${USE_XPRESS}")
# Language specific options
-if(BUILD_CXX)
- CMAKE_DEPENDENT_OPTION(BUILD_CXX_DOC "Build the C++ doc" OFF "NOT BUILD_DOC" ON)
- message(STATUS "C++: Build doc: ${BUILD_CXX_DOC}")
-endif()
+CMAKE_DEPENDENT_OPTION(BUILD_CXX_DOC "Build the C++ doc" OFF "NOT BUILD_DOC" ON)
+message(STATUS "C++: Build doc: ${BUILD_CXX_DOC}")
if(BUILD_DOTNET)
option(UNIVERSAL_DOTNET_PACKAGE "Build a .Net multi OS Package" OFF)
@@ -454,7 +431,6 @@ include(check_deps)
include(cpp)
include(flatzinc)
-include(glop)
include(python)
include(java)
@@ -467,6 +443,7 @@ foreach(SAMPLES IN ITEMS
graph
glop
constraint_solver
+ routing
linear_solver
${MATH_OPT_DIR}
${PDLP_DIR}
@@ -475,9 +452,6 @@ foreach(SAMPLES IN ITEMS
endforeach()
# Same for examples
-foreach(EXAMPLES IN ITEMS contrib cpp dotnet java python)
+foreach(EXAMPLES IN ITEMS contrib cpp dotnet python)
add_subdirectory(examples/${EXAMPLES})
endforeach()
-
-# Add tests in examples/tests
-add_subdirectory(examples/tests)
diff --git a/Dependencies.txt b/Dependencies.txt
index 5d072a8acb3..e8df0494300 100644
--- a/Dependencies.txt
+++ b/Dependencies.txt
@@ -1,16 +1,17 @@
ZLIB=1.3.1
-abseil-cpp=20250512.0
-Protobuf=v31.1
+abseil-cpp=20250814.1
+Protobuf=v33.1
Eigen=3.4.0
-Re2=2024-07-02
+Re2=2025-08-12
CoinUtils=2.11.12
Osi=0.108.11
Clp=1.17.10
Cgl=0.60.9
Cbc=2.10.12
GLPK=5.0
-HiGHS=v1.11.0
-Scip=v922
+HiGHS=v1.12.0
+Scip=v10.0.0
+Soplex=v8.0.0
# Python
pybind11=v2.13.6
pybind11_abseil=v202402.0
diff --git a/MODULE.bazel b/MODULE.bazel
index 4c1ba603ffe..a075710fa94 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,3 +1,16 @@
+# Copyright 2010-2025 Google LLC
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
###############################################################################
# Bazel now uses Bzlmod by default to manage external dependencies.
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
@@ -5,48 +18,51 @@
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
###############################################################################
-OR_TOOLS_VERSION = "9.14"
-
module(
name = "or-tools",
- version = OR_TOOLS_VERSION,
+ version = "10.0",
)
# see https://registry.bazel.build/
-bazel_dep(name = "abseil-cpp", version = "20250512.0")
-bazel_dep(name = "bazel_skylib", version = "1.7.1")
-bazel_dep(name = "bzip2", version = "1.0.8.bcr.2")
+# Bazel dependencies
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "contrib_rules_jvm", version = "0.28.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.9")
+bazel_dep(name = "rules_go", version = "0.53.0")
+bazel_dep(name = "rules_java", version = "8.14.0")
+bazel_dep(name = "rules_jvm_external", version = "6.7")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "rules_python", version = "1.7.0")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
+# OR-Tools C++ dependencies
+bazel_dep(name = "abseil-cpp", version = "20250814.1")
+bazel_dep(name = "bzip2", version = "1.0.8.bcr.2")
bazel_dep(name = "eigen", version = "3.4.0.bcr.3")
-bazel_dep(name = "fuzztest", version = "20250214.0")
-bazel_dep(name = "riegeli", version = "0.0.0-20241218-3385e3c") # otherwise fuzztest use a borken version
-bazel_dep(name = "gazelle", version = "0.43.0")
bazel_dep(name = "glpk", version = "5.0.bcr.4")
bazel_dep(name = "google_benchmark", version = "1.9.2")
bazel_dep(name = "googletest", version = "1.17.0")
bazel_dep(name = "highs", version = "1.11.0")
-bazel_dep(name = "platforms", version = "0.0.11")
-bazel_dep(name = "protobuf", version = "31.1")
+bazel_dep(name = "protobuf-matchers", version = "0.1.1")
+bazel_dep(name = "protobuf", version = "32.0")
+bazel_dep(name = "re2", version = "2025-08-12")
+bazel_dep(name = "scip", version = "9.2.3")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.7")
+
+# OR-Tools wrappers dependencies
+bazel_dep(name = "gazelle", version = "0.43.0")
bazel_dep(name = "pybind11_abseil", version = "202402.0")
bazel_dep(name = "pybind11_bazel", version = "2.13.6")
bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20240524-1d7a729")
-bazel_dep(name = "re2", version = "2024-07-02.bcr.1")
-bazel_dep(name = "rules_cc", version = "0.1.1")
-bazel_dep(name = "rules_go", version = "0.53.0")
-bazel_dep(name = "rules_java", version = "8.11.0")
-bazel_dep(name = "rules_jvm_external", version = "6.7")
-bazel_dep(name = "rules_license", version = "1.0.0")
-bazel_dep(name = "rules_proto", version = "7.1.0")
-bazel_dep(name = "rules_python", version = "1.2.0")
-bazel_dep(name = "scip", version = "9.2.2")
bazel_dep(name = "swig", version = "4.3.0")
-bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
git_override(
module_name = "pybind11_bazel",
commit = "2b6082a4d9d163a52299718113fa41e4b7978db5",
patch_strip = 1,
- patches = ["//patches:pybind11_bazel.patch"],
+ patches = ["//:patches/pybind11_bazel.patch"],
remote = "https://github.com/pybind/pybind11_bazel.git",
)
@@ -54,62 +70,46 @@ git_override(
module_name = "pybind11_abseil",
commit = "70f8b693b3b70573ca785ef62d9f48054f45d786",
patch_strip = 1,
- patches = ["//patches:pybind11_abseil.patch"],
+ patches = ["//:patches/pybind11_abseil.patch"],
remote = "https://github.com/pybind/pybind11_abseil.git",
)
git_override(
module_name = "pybind11_protobuf",
commit = "f02a2b7653bc50eb5119d125842a3870db95d251",
- #patch_strip = 1,
- #patches = ["//patches:pybind11_protobuf.patch"],
remote = "https://github.com/pybind/pybind11_protobuf.git",
)
-SUPPORTED_PYTHON_VERSIONS = [
- "3.9",
- "3.10",
- "3.11",
- "3.12",
- "3.13",
-]
+# Python
+# https://rules-python.readthedocs.io/en/latest/toolchains.html#library-modules-with-dev-only-python-usage
-DEFAULT_PYTHON = "3.11"
+DEFAULT_PYTHON = "3.12"
python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
-
-[
- python.toolchain(
- ignore_root_user_error = True, # needed for CI
- is_default = version == DEFAULT_PYTHON,
- python_version = version,
- )
- for version in SUPPORTED_PYTHON_VERSIONS
-]
+python.defaults(python_version = DEFAULT_PYTHON)
+python.toolchain(python_version = DEFAULT_PYTHON)
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
[
pip.parse(
- hub_name = "ortools_pip_deps",
- python_version = python_version,
- requirements_lock = "//bazel:ortools_requirements.txt",
+ envsubst = ["PIP_INDEX_URL"],
+ experimental_index_url = "${PIP_INDEX_URL:-https://pypi.org/simple}",
+ hub_name = hub_name,
+ python_version = DEFAULT_PYTHON,
+ requirements_lock = requirements_lock,
)
- for python_version in SUPPORTED_PYTHON_VERSIONS
-]
-
-[
- pip.parse(
- hub_name = "ortools_notebook_deps",
- python_version = python_version,
- requirements_lock = "//bazel:notebook_requirements.txt",
- )
- for python_version in SUPPORTED_PYTHON_VERSIONS
+ for hub_name, requirements_lock in [
+ ("ortools_pip_deps", "//bazel:ortools_requirements.txt"),
+ ("ortools_notebook_deps", "//bazel:notebook_requirements.txt"),
+ ]
]
use_repo(pip, pip_deps = "ortools_pip_deps")
use_repo(pip, "ortools_notebook_deps")
+# Java
+
JUNIT_PLATFORM_VERSION = "1.9.2"
JUNIT_JUPITER_VERSION = "5.9.2"
diff --git a/Makefile b/Makefile
index a590e1d7482..1021b82baf1 100644
--- a/Makefile
+++ b/Makefile
@@ -101,13 +101,6 @@ include $(OR_ROOT)makefiles/Makefile.dotnet.mk
include $(OR_ROOT)makefiles/Makefile.java.mk
include $(OR_ROOT)makefiles/Makefile.python.mk
include $(OR_ROOT)makefiles/Makefile.archive.mk
-ifneq ($(PLATFORM),WIN64)
-include $(OR_ROOT)makefiles/Makefile.doc.mk
-else
-# Remove some rules on windows
-help_doc:
-
-endif
.PHONY: help_usage
help_usage:
@@ -125,7 +118,7 @@ else
endif
.PHONY: help_all
-help_all: help_usage help_cpp help_dotnet help_java help_python help_archive help_doc
+help_all: help_usage help_cpp help_dotnet help_java help_python help_archive
.PHONY: check_all
check_all: check_cpp check_dotnet check_java check_python
diff --git a/README.md b/README.md
index 54dfa84f0f6..344dfd9abc4 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
[](https://pypi.org/project/ortools/)
[](https://pypi.org/project/ortools/#files)
-[](https://mybinder.org/v2/gh/google/or-tools/main)
\
[](https://www.nuget.org/packages/Google.OrTools)
[](https://www.nuget.org/packages/Google.OrTools)
@@ -85,7 +84,6 @@ This software suite is composed of the following components:
* [python](examples/python) Python examples.
* [notebook](examples/notebook) Jupyter/IPython notebooks.
* [flatzinc](examples/flatzinc) FlatZinc examples.
- * [tests](examples/tests) Unit tests and bug reports.
* [tools](tools) Delivery Tools (e.g. Windows GNU binaries, scripts, release dockers)
## Installation
diff --git a/Version.txt b/Version.txt
index 1d4910fae04..820d4b64d28 100644
--- a/Version.txt
+++ b/Version.txt
@@ -1,3 +1,3 @@
-OR_TOOLS_MAJOR=9
-OR_TOOLS_MINOR=14
-#PRE_RELEASE=YES
+OR_TOOLS_MAJOR=10
+OR_TOOLS_MINOR=0
+RELEASE_CANDIDATE=YES
diff --git a/arm.sh b/arm.sh
deleted file mode 100755
index ebc6600739d..00000000000
--- a/arm.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2010-2025 Google LLC
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -euo pipefail
-
-#./tools/cross_compile.sh --help
-
-export PROJECT=or-tools
-#export PROJECT=glop
-
-#export TARGET=x86_64
-export TARGET=aarch64
-#export TARGET=mips64
-#export TARGET=ppc64
-
-./tools/cross_compile.sh toolchain
-./tools/cross_compile.sh build
-./tools/cross_compile.sh qemu
-./tools/cross_compile.sh test
diff --git a/bazel/BUILD.bazel b/bazel/BUILD.bazel
index 916b06a37fe..962f791284e 100644
--- a/bazel/BUILD.bazel
+++ b/bazel/BUILD.bazel
@@ -13,33 +13,33 @@
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
-exports_files([
- "archive_helper.bzl",
- "notebook_requirements.in",
- "notebook_requirements.txt",
- "ortools_requirements.in",
- "ortools_requirements.txt",
- "scip-v920.patch",
-])
+extra_args = [
+ "--no-emit-index-url", # Prevent emitting url in .txt file when using a proxy.
+ "--reuse-hashes", # Improve the speed of --generate-hashes by reusing the hashes from an existing output file.
+ "--verbose",
+]
compile_pip_requirements(
name = "ortools_requirements",
- extra_args = [
- "--allow-unsafe", # Pin packages considered unsafe
- "--resolver=backtracking", # Avoid warning, new default
- ],
- generate_hashes = False,
- requirements_in = "ortools_requirements.in",
+ src = "ortools_requirements.in",
+ extra_args = extra_args,
+ generate_hashes = True,
requirements_txt = "ortools_requirements.txt",
)
compile_pip_requirements(
name = "notebook_requirements",
- extra_args = [
- "--allow-unsafe", # Pin packages considered unsafe
- "--resolver=backtracking", # Avoid warning, new default
- ],
- generate_hashes = False,
- requirements_in = "notebook_requirements.in",
+ src = "notebook_requirements.in",
+ data = ["ortools_requirements.in"],
+ extra_args = extra_args,
+ generate_hashes = True,
requirements_txt = "notebook_requirements.txt",
)
+
+# To fully update `requirements.txt` files run the following commands:
+# cat /dev/null > bazel/ortools_requirements.txt
+# cat /dev/null > bazel/notebook_requirements.txt
+# bazelisk-linux-amd64 run --config=ci //bazel:ortools_requirements.update
+# bazelisk-linux-amd64 run --config=ci //bazel:notebook_requirements.update
+
+package(default_visibility = ["//visibility:public"])
diff --git a/bazel/README.md b/bazel/README.md
index 61e3a212c65..e4c265969af 100644
--- a/bazel/README.md
+++ b/bazel/README.md
@@ -72,35 +72,15 @@ OR-Tools depends on several mandatory libraries.
## Compilation
-You must compile OR-Tools using at least C++17 (C++20 on windows):
-
-* on UNIX:
-
- ```sh
- bazel build -c opt --cxxopt=-std=c++17 ...
- ```
-
-* on Windows when using MSVC:
-
- ```sh
- bazel build -c opt --cxxopt="/std:c++20" ...
- ```
+```sh
+bazel build -c opt //...
+```
## Testing
-You may run tests using:
-
-* on UNIX:
-
- ```sh
- bazel test -c opt --cxxopt=-std=c++17 ...
- ```
-
-* on Windows when using MSVC:
-
- ```sh
- bazel test -c opt --cxxopt="/std:c++20" ...
- ```
+```sh
+bazel test -c opt //...
+```
## Integration
diff --git a/bazel/docker/almalinux/Dockerfile b/bazel/docker/almalinux/Dockerfile
index 74384686379..4c8cbaaa034 100644
--- a/bazel/docker/almalinux/Dockerfile
+++ b/bazel/docker/almalinux/Dockerfile
@@ -5,23 +5,21 @@ FROM almalinux:latest AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
RUN dnf -y update \
-&& dnf -y install git wget zlib-devel gcc-toolset-13 \
+&& dnf -y install git wget zlib-devel \
&& dnf -y group install "Development Tools" \
&& dnf clean all \
&& rm -rf /var/cache/dnf
-RUN echo "source /opt/rh/gcc-toolset-13/enable" >> /etc/bashrc
-SHELL ["/bin/bash", "--login", "-c"]
-
# Install Bazelisk
+ARG TARGETARCH=amd64
RUN wget \
-https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
-&& chmod +x bazelisk-linux-amd64 \
-&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
-&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \
+&& dnf -y install java-21-openjdk java-21-openjdk-devel maven \
&& dnf clean all
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
@@ -38,13 +36,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/alpine/Dockerfile b/bazel/docker/alpine/Dockerfile
index 5908e0fb036..5abb0038b6d 100644
--- a/bazel/docker/alpine/Dockerfile
+++ b/bazel/docker/alpine/Dockerfile
@@ -4,15 +4,19 @@ FROM alpine:edge AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
-RUN apk add --no-cache git build-base linux-headers zlib-dev
-RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing bazel7
+RUN apk add --no-cache \
+ git build-base linux-headers zlib-dev \
+ python3
+RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing bazel8
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
ENV PATH=$JAVA_HOME/bin:$PATH
# Install Python
-RUN apk add --no-cache openssl python3-dev py3-pip py3-wheel py3-numpy py3-pandas
-RUN python3 -m pip install --break-system-package absl-py mypy-protobuf
+RUN apk add --no-cache \
+ openssl python3-dev py3-pip py3-wheel py3-numpy py3-pandas
+RUN python3 -m pip install --break-system-package \
+ absl-py mypy-protobuf
FROM env AS devel
WORKDIR /home/project
@@ -20,13 +24,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/archlinux/Dockerfile b/bazel/docker/archlinux/Dockerfile
index 727cc90a779..d3c08a94d14 100644
--- a/bazel/docker/archlinux/Dockerfile
+++ b/bazel/docker/archlinux/Dockerfile
@@ -16,13 +16,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/debian/Dockerfile b/bazel/docker/debian/Dockerfile
index 798da5d08e3..ae026de4f28 100644
--- a/bazel/docker/debian/Dockerfile
+++ b/bazel/docker/debian/Dockerfile
@@ -10,15 +10,12 @@ RUN apt-get update -qq \
&& apt-get install -yq default-jdk \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Install Bazel
-RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
+# Install Bazelisk
ARG TARGETARCH=amd64
-RUN echo "deb [arch=$TARGETARCH] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
-RUN apt-get update -qq \
-&& apt-get install -yq bazel \
-&& apt-get clean \
-&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+RUN wget \
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
FROM env AS devel
WORKDIR /home/project
@@ -26,13 +23,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/fedora/Dockerfile b/bazel/docker/fedora/Dockerfile
index 322071bb804..05c2332ebb4 100644
--- a/bazel/docker/fedora/Dockerfile
+++ b/bazel/docker/fedora/Dockerfile
@@ -13,10 +13,11 @@ RUN dnf -y update \
&& dnf clean all
# Install Bazelisk
+ARG TARGETARCH=amd64
RUN wget \
-https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
-&& chmod +x bazelisk-linux-amd64 \
-&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
@@ -35,13 +36,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/opensuse/Dockerfile b/bazel/docker/opensuse/Dockerfile
index 3e4a4cfdb91..12e30c82ab8 100644
--- a/bazel/docker/opensuse/Dockerfile
+++ b/bazel/docker/opensuse/Dockerfile
@@ -10,14 +10,15 @@ RUN zypper update -y \
ENV CC=gcc CXX=g++
# Install Bazelisk
+ARG TARGETARCH=amd64
RUN wget \
-https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
-&& chmod +x bazelisk-linux-amd64 \
-&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java JDK and Maven
RUN zypper refresh \
-&& zypper install -y java-17-openjdk-devel maven \
+&& zypper install -y java-21-openjdk-devel maven \
&& zypper clean -a
ENV PATH=/usr/share/maven/bin:$PATH
@@ -32,13 +33,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/rockylinux/Dockerfile b/bazel/docker/rockylinux/Dockerfile
index 47e941e8d4e..fdc4f495687 100644
--- a/bazel/docker/rockylinux/Dockerfile
+++ b/bazel/docker/rockylinux/Dockerfile
@@ -1,6 +1,6 @@
# Create a virtual environment with all tools installed
-# ref: https://hub.docker.com/_/rockylinux
-FROM rockylinux:9 AS env
+# ref: https://hub.docker.com/rockylinux/rockylinux
+FROM rockylinux/rockylinux:9 AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
@@ -14,14 +14,15 @@ RUN echo "source /opt/rh/gcc-toolset-13/enable" >> /etc/bashrc
SHELL ["/bin/bash", "--login", "-c"]
# Install Bazelisk
+ARG TARGETARCH=amd64
RUN wget \
-https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
-&& chmod +x bazelisk-linux-amd64 \
-&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
-&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \
+&& dnf -y install java-21-openjdk java-21-openjdk-devel maven \
&& dnf clean all
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
@@ -38,13 +39,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/docker/ubuntu/Dockerfile b/bazel/docker/ubuntu/Dockerfile
index 83fbe80f51e..35f6bba9471 100644
--- a/bazel/docker/ubuntu/Dockerfile
+++ b/bazel/docker/ubuntu/Dockerfile
@@ -15,16 +15,12 @@ RUN apt update -qq \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-# Install Bazel
-RUN apt install -y apt-transport-https curl gnupg \
-&& curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg \
-&& mv bazel-archive-keyring.gpg /usr/share/keyrings
+# Install Bazelisk
ARG TARGETARCH=amd64
-RUN echo "deb [arch=$TARGETARCH signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
-RUN apt update -qq \
-&& apt install -yq bazel \
-&& apt clean \
-&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+RUN wget \
+https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
+&& chmod +x bazelisk-linux-${TARGETARCH} \
+&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
FROM env AS devel
WORKDIR /home/project
@@ -32,13 +28,7 @@ COPY . .
FROM devel AS build
RUN bazel version
-RUN bazel build \
- -c opt \
- --subcommands=true \
- //ortools/... //examples/...
+RUN bazel build --config=ci //...
FROM build AS test
-RUN bazel test \
- -c opt \
- --test_output=errors \
- //ortools/... //examples/...
+RUN bazel test --config=ci //...
diff --git a/bazel/notebook_requirements.in b/bazel/notebook_requirements.in
index e72726c49f0..178a1cee282 100644
--- a/bazel/notebook_requirements.in
+++ b/bazel/notebook_requirements.in
@@ -1,29 +1,12 @@
-# OR-Tools code dependencies
-absl-py==2.2.2
-immutabledict==4.2.1
-numpy==2.2.0
-protobuf==6.31.1
-requests==2.32.4
-scipy==1.14.1
-typing-extensions==4.13.1
-
-# OR-Tools build dependencies
-mypy==1.6.1
-mypy-protobuf==3.5.0
-virtualenv==20.28.1
-black==24.8.0
-
-# Example dependencies
-pandas==2.2.3
+-r ortools_requirements.in
# Visualization dependencies
-svgwrite==1.4.3
plotly==5.15.0
# Notebook
jupyterlab==4.4.8
notebook==7.4.2
-jupyter-server==2.16.0
+jupyter-server==2.17.0
tornado==6.5.0
Pygments==2.19.1
jsonschema==4.23.0
diff --git a/bazel/notebook_requirements.txt b/bazel/notebook_requirements.txt
index 299e56320bc..f52602fa8bd 100644
--- a/bazel/notebook_requirements.txt
+++ b/bazel/notebook_requirements.txt
@@ -4,112 +4,433 @@
#
# bazel run //bazel:notebook_requirements.update
#
-absl-py==2.2.2
- # via -r notebook_requirements.in
-anyio==4.9.0
+absl-py==2.3.1 \
+ --hash=sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9 \
+ --hash=sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d
+ # via -r bazel/ortools_requirements.in
+anyio==4.12.0 \
+ --hash=sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0 \
+ --hash=sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb
# via
# httpx
# jupyter-server
-argon2-cffi==25.1.0
+argon2-cffi==25.1.0 \
+ --hash=sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1 \
+ --hash=sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741
# via jupyter-server
-argon2-cffi-bindings==21.2.0
+argon2-cffi-bindings==25.1.0 \
+ --hash=sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99 \
+ --hash=sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6 \
+ --hash=sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d \
+ --hash=sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44 \
+ --hash=sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a \
+ --hash=sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f \
+ --hash=sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2 \
+ --hash=sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690 \
+ --hash=sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584 \
+ --hash=sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e \
+ --hash=sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0 \
+ --hash=sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f \
+ --hash=sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623 \
+ --hash=sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b \
+ --hash=sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44 \
+ --hash=sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98 \
+ --hash=sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500 \
+ --hash=sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94 \
+ --hash=sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6 \
+ --hash=sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d \
+ --hash=sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85 \
+ --hash=sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92 \
+ --hash=sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d \
+ --hash=sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a \
+ --hash=sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520 \
+ --hash=sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb
# via argon2-cffi
-arrow==1.3.0
+arrow==1.4.0 \
+ --hash=sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 \
+ --hash=sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7
# via isoduration
-asttokens==3.0.0
+asttokens==3.0.1 \
+ --hash=sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a \
+ --hash=sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7
# via stack-data
-async-lru==2.0.5
+async-lru==2.0.5 \
+ --hash=sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb \
+ --hash=sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943
# via jupyterlab
-attrs==25.3.0
+attrs==25.4.0 \
+ --hash=sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11 \
+ --hash=sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373
# via
# jsonschema
# referencing
-babel==2.17.0
+babel==2.17.0 \
+ --hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \
+ --hash=sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2
# via jupyterlab-server
-beautifulsoup4==4.13.4
+beautifulsoup4==4.14.3 \
+ --hash=sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb \
+ --hash=sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86
# via nbconvert
-black==24.8.0
- # via -r notebook_requirements.in
-bleach[css]==6.2.0
+bleach[css]==6.3.0 \
+ --hash=sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22 \
+ --hash=sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6
# via nbconvert
-certifi==2025.4.26
+certifi==2025.11.12 \
+ --hash=sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b \
+ --hash=sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316
# via
# httpcore
# httpx
# requests
-cffi==1.17.1
+cffi==2.0.0 \
+ --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \
+ --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \
+ --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \
+ --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \
+ --hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \
+ --hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \
+ --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \
+ --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \
+ --hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \
+ --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \
+ --hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \
+ --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \
+ --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \
+ --hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \
+ --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \
+ --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \
+ --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \
+ --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \
+ --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \
+ --hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \
+ --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \
+ --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \
+ --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \
+ --hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \
+ --hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \
+ --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \
+ --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \
+ --hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \
+ --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \
+ --hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \
+ --hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \
+ --hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \
+ --hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \
+ --hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \
+ --hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \
+ --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \
+ --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \
+ --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \
+ --hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \
+ --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \
+ --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \
+ --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \
+ --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \
+ --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \
+ --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \
+ --hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \
+ --hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \
+ --hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \
+ --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \
+ --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \
+ --hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \
+ --hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \
+ --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \
+ --hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \
+ --hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \
+ --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \
+ --hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \
+ --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \
+ --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \
+ --hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \
+ --hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \
+ --hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \
+ --hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \
+ --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \
+ --hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \
+ --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \
+ --hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \
+ --hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \
+ --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \
+ --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \
+ --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \
+ --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \
+ --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \
+ --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \
+ --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \
+ --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \
+ --hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \
+ --hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \
+ --hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \
+ --hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \
+ --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \
+ --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \
+ --hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \
+ --hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf
# via argon2-cffi-bindings
-charset-normalizer==3.4.2
+charset-normalizer==3.4.4 \
+ --hash=sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad \
+ --hash=sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93 \
+ --hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \
+ --hash=sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89 \
+ --hash=sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc \
+ --hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \
+ --hash=sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63 \
+ --hash=sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d \
+ --hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \
+ --hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \
+ --hash=sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0 \
+ --hash=sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505 \
+ --hash=sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161 \
+ --hash=sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af \
+ --hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \
+ --hash=sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318 \
+ --hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \
+ --hash=sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4 \
+ --hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \
+ --hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \
+ --hash=sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576 \
+ --hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \
+ --hash=sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1 \
+ --hash=sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8 \
+ --hash=sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1 \
+ --hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \
+ --hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \
+ --hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \
+ --hash=sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88 \
+ --hash=sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016 \
+ --hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \
+ --hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \
+ --hash=sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a \
+ --hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \
+ --hash=sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0 \
+ --hash=sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84 \
+ --hash=sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db \
+ --hash=sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1 \
+ --hash=sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7 \
+ --hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \
+ --hash=sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8 \
+ --hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \
+ --hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \
+ --hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \
+ --hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \
+ --hash=sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2 \
+ --hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \
+ --hash=sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d \
+ --hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \
+ --hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \
+ --hash=sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf \
+ --hash=sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6 \
+ --hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \
+ --hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \
+ --hash=sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa \
+ --hash=sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381 \
+ --hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \
+ --hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \
+ --hash=sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc \
+ --hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \
+ --hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \
+ --hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \
+ --hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \
+ --hash=sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e \
+ --hash=sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313 \
+ --hash=sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569 \
+ --hash=sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3 \
+ --hash=sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d \
+ --hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \
+ --hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \
+ --hash=sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3 \
+ --hash=sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9 \
+ --hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \
+ --hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \
+ --hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \
+ --hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \
+ --hash=sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50 \
+ --hash=sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf \
+ --hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \
+ --hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \
+ --hash=sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac \
+ --hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \
+ --hash=sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815 \
+ --hash=sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c \
+ --hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \
+ --hash=sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6 \
+ --hash=sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e \
+ --hash=sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4 \
+ --hash=sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84 \
+ --hash=sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69 \
+ --hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \
+ --hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \
+ --hash=sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0 \
+ --hash=sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897 \
+ --hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \
+ --hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \
+ --hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \
+ --hash=sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d \
+ --hash=sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074 \
+ --hash=sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3 \
+ --hash=sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224 \
+ --hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \
+ --hash=sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a \
+ --hash=sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d \
+ --hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \
+ --hash=sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f \
+ --hash=sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8 \
+ --hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \
+ --hash=sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966 \
+ --hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 \
+ --hash=sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3 \
+ --hash=sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e \
+ --hash=sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608
# via requests
-click==8.2.1
- # via black
-comm==0.2.2
+comm==0.2.3 \
+ --hash=sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971 \
+ --hash=sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417
# via ipykernel
-debugpy==1.8.14
+debugpy==1.8.18 \
+ --hash=sha256:02551b1b84a91faadd2db9bc4948873f2398190c95b3cc6f97dc706f43e8c433 \
+ --hash=sha256:0701d83c4c1a74ed2c9abdabce102b1daf24cf81e1802421980871c9ee41f371 \
+ --hash=sha256:1b224887af5121fa702f9f542968170d104e3f9cac827d85fdefe89702dc235c \
+ --hash=sha256:2721237f9456394943f75c4b6f7cf2aed6ab9c59b7beca4bf553621d37000115 \
+ --hash=sha256:32dd56d50fe15c47d0f930a7f0b9d3e5eb8ed04770bc6c313fba6d226f87e1e8 \
+ --hash=sha256:3dae1d65e581406a4d7c1bb44391f47e621b8c87c5639b6607e6007a5d823205 \
+ --hash=sha256:46e4aa316f9c16fa7145f192bf0fd1c5c43effca13b8767270a99e7e7ac464f5 \
+ --hash=sha256:4d26736dfabf404e9f3032015ec7b0189e7396d0664e29e5bdbe7ac453043c95 \
+ --hash=sha256:530c38114725505a7e4ea95328dbc24aabb9be708c6570623c8163412e6d1d6b \
+ --hash=sha256:63424eb602ccb2c158fbd40437404d29ce0da5f9552e8bab53fb265e19e686ee \
+ --hash=sha256:636a5445a3336e4aba323a3545ca2bb373b04b0bc14084a4eb20c989db44429f \
+ --hash=sha256:6da217ac8c1152d698b9809484d50c75bef9cc02fd6886a893a6df81ec952ff8 \
+ --hash=sha256:6f97083b68f680b244a96c5923862a84aab32b486393c71deac152b1c001429b \
+ --hash=sha256:714b61d753cfe3ed5e7bf0aad131506d750e271726ac86e3e265fd7eeebbe765 \
+ --hash=sha256:75d14dd04b617ee38e46786394ec0dd5e1ac5e3d10ffb034fd6c7b72111174c2 \
+ --hash=sha256:7e68ba950acbcf95ee862210133681f408cbb78d1c9badbb515230ec55ed6487 \
+ --hash=sha256:8804d1288e6006629a87d53eb44b7b66e695d428ac529ffd75bfc7d730a9c821 \
+ --hash=sha256:971965e264faed48ae961ff1e1ad2ce32d8e0cc550a4baa7643a25f1782b7125 \
+ --hash=sha256:a114865099283cbed4c9330cb0c9cb7a04cfa92e803577843657302d526141ec \
+ --hash=sha256:a69ef7d6050e5d26cf8e0081c6b591a41383dc18db734c4acafdd49568bb7a6f \
+ --hash=sha256:ab8cf0abe0fe2dfe1f7e65abc04b1db8740f9be80c1274acb625855c5c3ece6e \
+ --hash=sha256:be7f622d250fe3429571e84572eb771023f1da22c754f28d2c60a10d74a4cc1b \
+ --hash=sha256:cab3abf0ee2328269c380f7a8a1c41ea1d80d6507404db9b005c8432bc6224a1 \
+ --hash=sha256:d44e9c531f2519ec4b856ddde8f536615918f5b7886c658a81bf200c90315f77 \
+ --hash=sha256:ded8a5a413bd0a249b3c0be9f43128f437755180ac431222a6354c7d76a76a54 \
+ --hash=sha256:df6c1243dedcb6bf9a5dc1c5668009e2b5508b8525f27d9821be91da57827743 \
+ --hash=sha256:df8bf7cd78019d5d155213bf5a1818b36403d0c3758d669e76827d4db026b840 \
+ --hash=sha256:df93f78d6d031b6d2aae72fee7b000985bc88f6496d8eec2bd1bbfe7b61aa20a \
+ --hash=sha256:e8431bc71a3903c6d7f39c91b550aed73f98f0e179967380f04f6f779b8171ee \
+ --hash=sha256:f312871f85a30522bc31be6f52343de0420474fe467e2bfe38d6d4a4029db194
# via ipykernel
-decorator==5.2.1
+decorator==5.2.1 \
+ --hash=sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360 \
+ --hash=sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a
# via ipython
-defusedxml==0.7.1
+defusedxml==0.7.1 \
+ --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \
+ --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61
# via nbconvert
-distlib==0.3.9
+distlib==0.4.0 \
+ --hash=sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16 \
+ --hash=sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d
# via virtualenv
-executing==2.2.0
+executing==2.2.1 \
+ --hash=sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4 \
+ --hash=sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017
# via stack-data
-fastjsonschema==2.21.1
+fastjsonschema==2.21.2 \
+ --hash=sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463 \
+ --hash=sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de
# via nbformat
-filelock==3.18.0
+filelock==3.20.1 \
+ --hash=sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a \
+ --hash=sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c
# via virtualenv
-fqdn==1.5.1
+fqdn==1.5.1 \
+ --hash=sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f \
+ --hash=sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014
# via jsonschema
-h11==0.16.0
+h11==0.16.0 \
+ --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \
+ --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86
# via httpcore
-httpcore==1.0.9
+httpcore==1.0.9 \
+ --hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \
+ --hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8
# via httpx
-httpx==0.28.1
+httpx==0.28.1 \
+ --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \
+ --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad
# via jupyterlab
-idna==3.10
+idna==3.11 \
+ --hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
+ --hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
# via
# anyio
# httpx
# jsonschema
# requests
-immutabledict==4.2.1
- # via -r notebook_requirements.in
-ipykernel==6.29.5
+immutabledict==4.2.2 \
+ --hash=sha256:97c31d098a2c850e93a958badeef765e4736ed7942ec73e439facd764a3a7217 \
+ --hash=sha256:cb6ed3090df593148f94cb407d218ca526fd2639694afdb553dc4f50ce6feeca
+ # via -r bazel/ortools_requirements.in
+ipykernel==7.1.0 \
+ --hash=sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db \
+ --hash=sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c
# via jupyterlab
-ipython==9.3.0
+ipython==9.8.0 \
+ --hash=sha256:8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83 \
+ --hash=sha256:ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385
# via ipykernel
-ipython-pygments-lexers==1.1.1
+ipython-pygments-lexers==1.1.1 \
+ --hash=sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81 \
+ --hash=sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c
# via ipython
-isoduration==20.11.0
+isoduration==20.11.0 \
+ --hash=sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9 \
+ --hash=sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042
# via jsonschema
-jedi==0.19.2
+jedi==0.19.2 \
+ --hash=sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0 \
+ --hash=sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9
# via ipython
-jinja2==3.1.6
+jinja2==3.1.6 \
+ --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
+ --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# jupyter-server
# jupyterlab
# jupyterlab-server
# nbconvert
-json5==0.12.0
+json5==0.12.1 \
+ --hash=sha256:b2743e77b3242f8d03c143dd975a6ec7c52e2f2afe76ed934e53503dd4ad4990 \
+ --hash=sha256:d9c9b3bc34a5f54d43c35e11ef7cb87d8bdd098c6ace87117a7b7e83e705c1d5
# via jupyterlab-server
-jsonpointer==3.0.0
+jsonpointer==3.0.0 \
+ --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \
+ --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef
# via jsonschema
-jsonschema[format-nongpl]==4.23.0
+jsonschema[format-nongpl]==4.23.0 \
+ --hash=sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4 \
+ --hash=sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# jupyter-events
# jupyterlab-server
# nbformat
-jsonschema-specifications==2025.4.1
+jsonschema-specifications==2025.9.1 \
+ --hash=sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe \
+ --hash=sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d
# via jsonschema
-jupyter-client==8.6.3
+jupyter-client==8.7.0 \
+ --hash=sha256:3357212d9cbe01209e59190f67a3a7e1f387a4f4e88d1e0433ad84d7b262531d \
+ --hash=sha256:3671a94fd25e62f5f2f554f5e95389c2294d89822378a5f2dd24353e1494a9e0
# via
# ipykernel
# jupyter-server
# nbclient
-jupyter-core==5.8.1
+jupyter-core==5.9.1 \
+ --hash=sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508 \
+ --hash=sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407
# via
# ipykernel
# jupyter-client
@@ -118,75 +439,296 @@ jupyter-core==5.8.1
# nbclient
# nbconvert
# nbformat
-jupyter-events==0.12.0
+jupyter-events==0.12.0 \
+ --hash=sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb \
+ --hash=sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b
# via jupyter-server
-jupyter-lsp==2.2.5
+jupyter-lsp==2.3.0 \
+ --hash=sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245 \
+ --hash=sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f
# via jupyterlab
-jupyter-server==2.16.0
+jupyter-server==2.17.0 \
+ --hash=sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5 \
+ --hash=sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# jupyter-lsp
# jupyterlab
# jupyterlab-server
# notebook
# notebook-shim
-jupyter-server-terminals==0.5.3
+jupyter-server-terminals==0.5.3 \
+ --hash=sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa \
+ --hash=sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269
# via jupyter-server
-jupyterlab==4.4.8
+jupyterlab==4.4.8 \
+ --hash=sha256:81b56f33f35be15150e7ccd43440963a93d2b115ffa614a06d38b91e4d650f92 \
+ --hash=sha256:a89e5a2e9f9295ae039356fc5247e5bfac64936126ab805e3ff8e47f385b0c7e
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# notebook
-jupyterlab-pygments==0.3.0
+jupyterlab-pygments==0.3.0 \
+ --hash=sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d \
+ --hash=sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780
# via nbconvert
-jupyterlab-server==2.27.3
+jupyterlab-server==2.28.0 \
+ --hash=sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c \
+ --hash=sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968
# via
# jupyterlab
# notebook
-markupsafe==3.0.2
+markupsafe==3.0.3 \
+ --hash=sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f \
+ --hash=sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a \
+ --hash=sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf \
+ --hash=sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19 \
+ --hash=sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf \
+ --hash=sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c \
+ --hash=sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175 \
+ --hash=sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219 \
+ --hash=sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb \
+ --hash=sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6 \
+ --hash=sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab \
+ --hash=sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26 \
+ --hash=sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1 \
+ --hash=sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce \
+ --hash=sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218 \
+ --hash=sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634 \
+ --hash=sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695 \
+ --hash=sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad \
+ --hash=sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73 \
+ --hash=sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c \
+ --hash=sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe \
+ --hash=sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa \
+ --hash=sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559 \
+ --hash=sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa \
+ --hash=sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37 \
+ --hash=sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758 \
+ --hash=sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f \
+ --hash=sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8 \
+ --hash=sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d \
+ --hash=sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c \
+ --hash=sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 \
+ --hash=sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a \
+ --hash=sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19 \
+ --hash=sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9 \
+ --hash=sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9 \
+ --hash=sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc \
+ --hash=sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2 \
+ --hash=sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4 \
+ --hash=sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354 \
+ --hash=sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50 \
+ --hash=sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698 \
+ --hash=sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9 \
+ --hash=sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b \
+ --hash=sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc \
+ --hash=sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115 \
+ --hash=sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e \
+ --hash=sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485 \
+ --hash=sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f \
+ --hash=sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12 \
+ --hash=sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025 \
+ --hash=sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009 \
+ --hash=sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d \
+ --hash=sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b \
+ --hash=sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a \
+ --hash=sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5 \
+ --hash=sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f \
+ --hash=sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d \
+ --hash=sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1 \
+ --hash=sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287 \
+ --hash=sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6 \
+ --hash=sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f \
+ --hash=sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581 \
+ --hash=sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed \
+ --hash=sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b \
+ --hash=sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c \
+ --hash=sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 \
+ --hash=sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8 \
+ --hash=sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676 \
+ --hash=sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6 \
+ --hash=sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e \
+ --hash=sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d \
+ --hash=sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d \
+ --hash=sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01 \
+ --hash=sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7 \
+ --hash=sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419 \
+ --hash=sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795 \
+ --hash=sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1 \
+ --hash=sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5 \
+ --hash=sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d \
+ --hash=sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42 \
+ --hash=sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe \
+ --hash=sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda \
+ --hash=sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e \
+ --hash=sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737 \
+ --hash=sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523 \
+ --hash=sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591 \
+ --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \
+ --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \
+ --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50
# via
# jinja2
# nbconvert
-matplotlib-inline==0.1.7
+matplotlib-inline==0.1.7 \
+ --hash=sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90 \
+ --hash=sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca
# via
# ipykernel
# ipython
-mistune==3.1.3
+mistune==3.1.4 \
+ --hash=sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d \
+ --hash=sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164
# via nbconvert
-mypy==1.6.1
- # via -r notebook_requirements.in
-mypy-extensions==1.1.0
- # via
- # black
- # mypy
-mypy-protobuf==3.5.0
- # via -r notebook_requirements.in
-nbclient==0.10.2
+mypy==1.6.1 \
+ --hash=sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7 \
+ --hash=sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e \
+ --hash=sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c \
+ --hash=sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169 \
+ --hash=sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208 \
+ --hash=sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0 \
+ --hash=sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1 \
+ --hash=sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1 \
+ --hash=sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7 \
+ --hash=sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45 \
+ --hash=sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143 \
+ --hash=sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5 \
+ --hash=sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f \
+ --hash=sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd \
+ --hash=sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245 \
+ --hash=sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f \
+ --hash=sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332 \
+ --hash=sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30 \
+ --hash=sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183 \
+ --hash=sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f \
+ --hash=sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85 \
+ --hash=sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46 \
+ --hash=sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71 \
+ --hash=sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660 \
+ --hash=sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb \
+ --hash=sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c \
+ --hash=sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a
+ # via -r bazel/ortools_requirements.in
+mypy-extensions==1.1.0 \
+ --hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \
+ --hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558
+ # via mypy
+mypy-protobuf==3.5.0 \
+ --hash=sha256:0d0548c6b9a6faf14ce1a9ce2831c403a5c1f2a9363e85b1e2c51d5d57aa8393 \
+ --hash=sha256:21f270da0a9792a9dac76b0df463c027e561664ab6973c59be4e4d064dfe67dc
+ # via -r bazel/ortools_requirements.in
+nbclient==0.10.2 \
+ --hash=sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d \
+ --hash=sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193
# via nbconvert
-nbconvert==7.16.6
+nbconvert==7.16.6 \
+ --hash=sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b \
+ --hash=sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582
# via jupyter-server
-nbformat==5.10.4
+nbformat==5.10.4 \
+ --hash=sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a \
+ --hash=sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b
# via
# jupyter-server
# nbclient
# nbconvert
-nest-asyncio==1.6.0
+nest-asyncio==1.6.0 \
+ --hash=sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe \
+ --hash=sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c
# via ipykernel
-notebook==7.4.2
- # via -r notebook_requirements.in
-notebook-shim==0.2.4
+notebook==7.4.2 \
+ --hash=sha256:9ccef602721aaa5530852e3064710b8ae5415c4e2ce26f8896d0433222755259 \
+ --hash=sha256:e739defd28c3f615a6bfb0a2564bd75018a9cc6613aa00bbd9c15e68eed2de1b
+ # via -r bazel/notebook_requirements.in
+notebook-shim==0.2.4 \
+ --hash=sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef \
+ --hash=sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb
# via
# jupyterlab
# notebook
-numpy==2.2.0
+numpy==2.3.5 \
+ --hash=sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b \
+ --hash=sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae \
+ --hash=sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3 \
+ --hash=sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0 \
+ --hash=sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b \
+ --hash=sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa \
+ --hash=sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28 \
+ --hash=sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e \
+ --hash=sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017 \
+ --hash=sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41 \
+ --hash=sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e \
+ --hash=sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63 \
+ --hash=sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9 \
+ --hash=sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8 \
+ --hash=sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff \
+ --hash=sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7 \
+ --hash=sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139 \
+ --hash=sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4 \
+ --hash=sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748 \
+ --hash=sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952 \
+ --hash=sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd \
+ --hash=sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b \
+ --hash=sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce \
+ --hash=sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f \
+ --hash=sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5 \
+ --hash=sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42 \
+ --hash=sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7 \
+ --hash=sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248 \
+ --hash=sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e \
+ --hash=sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3 \
+ --hash=sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b \
+ --hash=sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e \
+ --hash=sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0 \
+ --hash=sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa \
+ --hash=sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a \
+ --hash=sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5 \
+ --hash=sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d \
+ --hash=sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4 \
+ --hash=sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c \
+ --hash=sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52 \
+ --hash=sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5 \
+ --hash=sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d \
+ --hash=sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1 \
+ --hash=sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c \
+ --hash=sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18 \
+ --hash=sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7 \
+ --hash=sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188 \
+ --hash=sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218 \
+ --hash=sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2 \
+ --hash=sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903 \
+ --hash=sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c \
+ --hash=sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c \
+ --hash=sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234 \
+ --hash=sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82 \
+ --hash=sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39 \
+ --hash=sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf \
+ --hash=sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20 \
+ --hash=sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946 \
+ --hash=sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0 \
+ --hash=sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9 \
+ --hash=sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff \
+ --hash=sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad \
+ --hash=sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227 \
+ --hash=sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10 \
+ --hash=sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e \
+ --hash=sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf \
+ --hash=sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769 \
+ --hash=sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310 \
+ --hash=sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425 \
+ --hash=sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013 \
+ --hash=sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c \
+ --hash=sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb \
+ --hash=sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d \
+ --hash=sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520
# via
- # -r notebook_requirements.in
+ # -r bazel/ortools_requirements.in
# pandas
# scipy
-overrides==7.7.0
- # via jupyter-server
-packaging==25.0
+packaging==25.0 \
+ --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \
+ --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f
# via
- # black
# ipykernel
# jupyter-events
# jupyter-server
@@ -194,120 +736,602 @@ packaging==25.0
# jupyterlab-server
# nbconvert
# plotly
-pandas==2.2.3
- # via -r notebook_requirements.in
-pandocfilters==1.5.1
+pandas==2.3.3 \
+ --hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \
+ --hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \
+ --hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \
+ --hash=sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791 \
+ --hash=sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73 \
+ --hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \
+ --hash=sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4 \
+ --hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \
+ --hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \
+ --hash=sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084 \
+ --hash=sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c \
+ --hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \
+ --hash=sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35 \
+ --hash=sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250 \
+ --hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \
+ --hash=sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826 \
+ --hash=sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9 \
+ --hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \
+ --hash=sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1 \
+ --hash=sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523 \
+ --hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \
+ --hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \
+ --hash=sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53 \
+ --hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \
+ --hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \
+ --hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \
+ --hash=sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff \
+ --hash=sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45 \
+ --hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \
+ --hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \
+ --hash=sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b \
+ --hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \
+ --hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \
+ --hash=sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8 \
+ --hash=sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98 \
+ --hash=sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89 \
+ --hash=sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66 \
+ --hash=sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b \
+ --hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \
+ --hash=sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29 \
+ --hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \
+ --hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \
+ --hash=sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2 \
+ --hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \
+ --hash=sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa \
+ --hash=sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151 \
+ --hash=sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838 \
+ --hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \
+ --hash=sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a \
+ --hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \
+ --hash=sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908 \
+ --hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \
+ --hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \
+ --hash=sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c \
+ --hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee
+ # via -r bazel/ortools_requirements.in
+pandocfilters==1.5.1 \
+ --hash=sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e \
+ --hash=sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc
# via nbconvert
-parso==0.8.4
+parso==0.8.5 \
+ --hash=sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a \
+ --hash=sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887
# via jedi
-pathspec==0.12.1
- # via black
-pexpect==4.9.0
+pexpect==4.9.0 \
+ --hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \
+ --hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f
# via ipython
-platformdirs==4.3.8
+platformdirs==4.5.1 \
+ --hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \
+ --hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
# via
- # black
# jupyter-core
# virtualenv
-plotly==5.15.0
- # via -r notebook_requirements.in
-prometheus-client==0.22.1
+plotly==5.15.0 \
+ --hash=sha256:3508876bbd6aefb8a692c21a7128ca87ce42498dd041efa5c933ee44b55aab24 \
+ --hash=sha256:822eabe53997d5ebf23c77e1d1fcbf3bb6aa745eb05d532afd4b6f9a2e2ab02f
+ # via -r bazel/notebook_requirements.in
+prometheus-client==0.23.1 \
+ --hash=sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce \
+ --hash=sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99
# via jupyter-server
-prompt-toolkit==3.0.51
+prompt-toolkit==3.0.52 \
+ --hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \
+ --hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955
# via ipython
-protobuf==6.31.1
+protobuf==6.32.0 \
+ --hash=sha256:15eba1b86f193a407607112ceb9ea0ba9569aed24f93333fe9a497cf2fda37d3 \
+ --hash=sha256:501fe6372fd1c8ea2a30b4d9be8f87955a64d6be9c88a973996cef5ef6f0abf1 \
+ --hash=sha256:75a2aab2bd1aeb1f5dc7c5f33bcb11d82ea8c055c9becbb41c26a8c43fd7092c \
+ --hash=sha256:7db8ed09024f115ac877a1427557b838705359f047b2ff2f2b2364892d19dacb \
+ --hash=sha256:84f9e3c1ff6fb0308dbacb0950d8aa90694b0d0ee68e75719cb044b7078fe741 \
+ --hash=sha256:a81439049127067fc49ec1d36e25c6ee1d1a2b7be930675f919258d03c04e7d2 \
+ --hash=sha256:a8bdbb2f009cfc22a36d031f22a625a38b615b5e19e558a7b756b3279723e68e \
+ --hash=sha256:ba377e5b67b908c8f3072a57b63e2c6a4cbd18aea4ed98d2584350dbf46f2783 \
+ --hash=sha256:d52691e5bee6c860fff9a1c86ad26a13afbeb4b168cd4445c922b7e2cf85aaf0
# via
- # -r notebook_requirements.in
+ # -r bazel/ortools_requirements.in
# mypy-protobuf
-psutil==7.0.0
+psutil==7.1.3 \
+ --hash=sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc \
+ --hash=sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251 \
+ --hash=sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa \
+ --hash=sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0 \
+ --hash=sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab \
+ --hash=sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264 \
+ --hash=sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7 \
+ --hash=sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3 \
+ --hash=sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b \
+ --hash=sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74 \
+ --hash=sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9 \
+ --hash=sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7 \
+ --hash=sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b \
+ --hash=sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353 \
+ --hash=sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880 \
+ --hash=sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1 \
+ --hash=sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee \
+ --hash=sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd \
+ --hash=sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f
# via ipykernel
-ptyprocess==0.7.0
+ptyprocess==0.7.0 \
+ --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \
+ --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220
# via
# pexpect
# terminado
-pure-eval==0.2.3
+pure-eval==0.2.3 \
+ --hash=sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 \
+ --hash=sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42
# via stack-data
-pycparser==2.22
+pycparser==2.23 \
+ --hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \
+ --hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934
# via cffi
-pygments==2.19.1
+pygments==2.19.1 \
+ --hash=sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f \
+ --hash=sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# ipython
# ipython-pygments-lexers
# nbconvert
-python-dateutil==2.9.0.post0
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via
# arrow
# jupyter-client
# pandas
-python-json-logger==3.3.0
+python-json-logger==4.0.0 \
+ --hash=sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2 \
+ --hash=sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f
# via jupyter-events
-pytz==2025.2
+pytz==2025.2 \
+ --hash=sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3 \
+ --hash=sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00
# via pandas
-pyyaml==6.0.2
+pyyaml==6.0.3 \
+ --hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \
+ --hash=sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a \
+ --hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \
+ --hash=sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956 \
+ --hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \
+ --hash=sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c \
+ --hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \
+ --hash=sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a \
+ --hash=sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0 \
+ --hash=sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b \
+ --hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \
+ --hash=sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6 \
+ --hash=sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7 \
+ --hash=sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e \
+ --hash=sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007 \
+ --hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \
+ --hash=sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4 \
+ --hash=sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9 \
+ --hash=sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295 \
+ --hash=sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea \
+ --hash=sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0 \
+ --hash=sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e \
+ --hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \
+ --hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \
+ --hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \
+ --hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \
+ --hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \
+ --hash=sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b \
+ --hash=sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69 \
+ --hash=sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5 \
+ --hash=sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b \
+ --hash=sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c \
+ --hash=sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369 \
+ --hash=sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd \
+ --hash=sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824 \
+ --hash=sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198 \
+ --hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \
+ --hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \
+ --hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \
+ --hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \
+ --hash=sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 \
+ --hash=sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b \
+ --hash=sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00 \
+ --hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \
+ --hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \
+ --hash=sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e \
+ --hash=sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28 \
+ --hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \
+ --hash=sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5 \
+ --hash=sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4 \
+ --hash=sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b \
+ --hash=sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf \
+ --hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \
+ --hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \
+ --hash=sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8 \
+ --hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \
+ --hash=sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da \
+ --hash=sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d \
+ --hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc \
+ --hash=sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c \
+ --hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \
+ --hash=sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f \
+ --hash=sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917 \
+ --hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \
+ --hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \
+ --hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \
+ --hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \
+ --hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \
+ --hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \
+ --hash=sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3 \
+ --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \
+ --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \
+ --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0
# via jupyter-events
-pyzmq==26.4.0
+pyzmq==27.1.0 \
+ --hash=sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d \
+ --hash=sha256:01f9437501886d3a1dd4b02ef59fb8cc384fa718ce066d52f175ee49dd5b7ed8 \
+ --hash=sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e \
+ --hash=sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba \
+ --hash=sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581 \
+ --hash=sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05 \
+ --hash=sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386 \
+ --hash=sha256:0c996ded912812a2fcd7ab6574f4ad3edc27cb6510349431e4930d4196ade7db \
+ --hash=sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28 \
+ --hash=sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e \
+ --hash=sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea \
+ --hash=sha256:18339186c0ed0ce5835f2656cdfb32203125917711af64da64dbaa3d949e5a1b \
+ --hash=sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066 \
+ --hash=sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97 \
+ --hash=sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0 \
+ --hash=sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113 \
+ --hash=sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92 \
+ --hash=sha256:1f8426a01b1c4098a750973c37131cf585f61c7911d735f729935a0c701b68d3 \
+ --hash=sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86 \
+ --hash=sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd \
+ --hash=sha256:346e9ba4198177a07e7706050f35d733e08c1c1f8ceacd5eb6389d653579ffbc \
+ --hash=sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233 \
+ --hash=sha256:3970778e74cb7f85934d2b926b9900e92bfe597e62267d7499acc39c9c28e345 \
+ --hash=sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31 \
+ --hash=sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74 \
+ --hash=sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc \
+ --hash=sha256:49d3980544447f6bd2968b6ac913ab963a49dcaa2d4a2990041f16057b04c429 \
+ --hash=sha256:4a19387a3dddcc762bfd2f570d14e2395b2c9701329b266f83dd87a2b3cbd381 \
+ --hash=sha256:4c618fbcd069e3a29dcd221739cacde52edcc681f041907867e0f5cc7e85f172 \
+ --hash=sha256:50081a4e98472ba9f5a02850014b4c9b629da6710f8f14f3b15897c666a28f1b \
+ --hash=sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556 \
+ --hash=sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4 \
+ --hash=sha256:510869f9df36ab97f89f4cff9d002a89ac554c7ac9cadd87d444aa4cf66abd27 \
+ --hash=sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c \
+ --hash=sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd \
+ --hash=sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e \
+ --hash=sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526 \
+ --hash=sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e \
+ --hash=sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f \
+ --hash=sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128 \
+ --hash=sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96 \
+ --hash=sha256:722ea791aa233ac0a819fc2c475e1292c76930b31f1d828cb61073e2fe5e208f \
+ --hash=sha256:726b6a502f2e34c6d2ada5e702929586d3ac948a4dbbb7fed9854ec8c0466027 \
+ --hash=sha256:753d56fba8f70962cd8295fb3edb40b9b16deaa882dd2b5a3a2039f9ff7625aa \
+ --hash=sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f \
+ --hash=sha256:7be883ff3d722e6085ee3f4afc057a50f7f2e0c72d289fd54df5706b4e3d3a50 \
+ --hash=sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c \
+ --hash=sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2 \
+ --hash=sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146 \
+ --hash=sha256:849ca054d81aa1c175c49484afaaa5db0622092b5eccb2055f9f3bb8f703782d \
+ --hash=sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97 \
+ --hash=sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5 \
+ --hash=sha256:9541c444cfe1b1c0156c5c86ece2bb926c7079a18e7b47b0b1b3b1b875e5d098 \
+ --hash=sha256:96c71c32fff75957db6ae33cd961439f386505c6e6b377370af9b24a1ef9eafb \
+ --hash=sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32 \
+ --hash=sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62 \
+ --hash=sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf \
+ --hash=sha256:a1aa0ee920fb3825d6c825ae3f6c508403b905b698b6460408ebd5bb04bbb312 \
+ --hash=sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda \
+ --hash=sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540 \
+ --hash=sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604 \
+ --hash=sha256:ad68808a61cbfbbae7ba26d6233f2a4aa3b221de379ce9ee468aa7a83b9c36b0 \
+ --hash=sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db \
+ --hash=sha256:b1267823d72d1e40701dcba7edc45fd17f71be1285557b7fe668887150a14b78 \
+ --hash=sha256:b2e592db3a93128daf567de9650a2f3859017b3f7a66bc4ed6e4779d6034976f \
+ --hash=sha256:b721c05d932e5ad9ff9344f708c96b9e1a485418c6618d765fca95d4daacfbef \
+ --hash=sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2 \
+ --hash=sha256:bd67e7c8f4654bef471c0b1ca6614af0b5202a790723a58b79d9584dc8022a78 \
+ --hash=sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b \
+ --hash=sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f \
+ --hash=sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6 \
+ --hash=sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39 \
+ --hash=sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f \
+ --hash=sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355 \
+ --hash=sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a \
+ --hash=sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a \
+ --hash=sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856 \
+ --hash=sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9 \
+ --hash=sha256:da96ecdcf7d3919c3be2de91a8c513c186f6762aa6cf7c01087ed74fad7f0968 \
+ --hash=sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7 \
+ --hash=sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1 \
+ --hash=sha256:df7cd397ece96cf20a76fae705d40efbab217d217897a5053267cd88a700c266 \
+ --hash=sha256:e2687c2d230e8d8584fbea433c24382edfeda0c60627aca3446aa5e58d5d1831 \
+ --hash=sha256:e30a74a39b93e2e1591b58eb1acef4902be27c957a8720b0e368f579b82dc22f \
+ --hash=sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7 \
+ --hash=sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394 \
+ --hash=sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07 \
+ --hash=sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496 \
+ --hash=sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90 \
+ --hash=sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271 \
+ --hash=sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6 \
+ --hash=sha256:ff8d114d14ac671d88c89b9224c63d6c4e5a613fe8acd5594ce53d752a3aafe9
# via
# ipykernel
# jupyter-client
# jupyter-server
-referencing==0.36.2
+referencing==0.37.0 \
+ --hash=sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231 \
+ --hash=sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8
# via
# jsonschema
# jsonschema-specifications
# jupyter-events
-requests==2.32.4
+requests==2.32.4 \
+ --hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \
+ --hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422
# via
- # -r notebook_requirements.in
+ # -r bazel/ortools_requirements.in
# jupyterlab-server
-rfc3339-validator==0.1.4
+rfc3339-validator==0.1.4 \
+ --hash=sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b \
+ --hash=sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa
# via
# jsonschema
# jupyter-events
-rfc3986-validator==0.1.1
+rfc3986-validator==0.1.1 \
+ --hash=sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 \
+ --hash=sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055
# via
# jsonschema
# jupyter-events
-rpds-py==0.25.1
+rpds-py==0.30.0 \
+ --hash=sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f \
+ --hash=sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136 \
+ --hash=sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3 \
+ --hash=sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7 \
+ --hash=sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65 \
+ --hash=sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4 \
+ --hash=sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169 \
+ --hash=sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf \
+ --hash=sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4 \
+ --hash=sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2 \
+ --hash=sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c \
+ --hash=sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4 \
+ --hash=sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3 \
+ --hash=sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6 \
+ --hash=sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7 \
+ --hash=sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89 \
+ --hash=sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85 \
+ --hash=sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6 \
+ --hash=sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa \
+ --hash=sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb \
+ --hash=sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6 \
+ --hash=sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87 \
+ --hash=sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856 \
+ --hash=sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4 \
+ --hash=sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f \
+ --hash=sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53 \
+ --hash=sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229 \
+ --hash=sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad \
+ --hash=sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23 \
+ --hash=sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db \
+ --hash=sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038 \
+ --hash=sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27 \
+ --hash=sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00 \
+ --hash=sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18 \
+ --hash=sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083 \
+ --hash=sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c \
+ --hash=sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738 \
+ --hash=sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898 \
+ --hash=sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e \
+ --hash=sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7 \
+ --hash=sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08 \
+ --hash=sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6 \
+ --hash=sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551 \
+ --hash=sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e \
+ --hash=sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288 \
+ --hash=sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df \
+ --hash=sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0 \
+ --hash=sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2 \
+ --hash=sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05 \
+ --hash=sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0 \
+ --hash=sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464 \
+ --hash=sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5 \
+ --hash=sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404 \
+ --hash=sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7 \
+ --hash=sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139 \
+ --hash=sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394 \
+ --hash=sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb \
+ --hash=sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15 \
+ --hash=sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff \
+ --hash=sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed \
+ --hash=sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6 \
+ --hash=sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e \
+ --hash=sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95 \
+ --hash=sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d \
+ --hash=sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950 \
+ --hash=sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3 \
+ --hash=sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5 \
+ --hash=sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97 \
+ --hash=sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e \
+ --hash=sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e \
+ --hash=sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b \
+ --hash=sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd \
+ --hash=sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad \
+ --hash=sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8 \
+ --hash=sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425 \
+ --hash=sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221 \
+ --hash=sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d \
+ --hash=sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825 \
+ --hash=sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51 \
+ --hash=sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e \
+ --hash=sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f \
+ --hash=sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8 \
+ --hash=sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f \
+ --hash=sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d \
+ --hash=sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07 \
+ --hash=sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877 \
+ --hash=sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31 \
+ --hash=sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58 \
+ --hash=sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94 \
+ --hash=sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28 \
+ --hash=sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000 \
+ --hash=sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1 \
+ --hash=sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1 \
+ --hash=sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7 \
+ --hash=sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7 \
+ --hash=sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40 \
+ --hash=sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d \
+ --hash=sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0 \
+ --hash=sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84 \
+ --hash=sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f \
+ --hash=sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a \
+ --hash=sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7 \
+ --hash=sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419 \
+ --hash=sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8 \
+ --hash=sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a \
+ --hash=sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9 \
+ --hash=sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be \
+ --hash=sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed \
+ --hash=sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a \
+ --hash=sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d \
+ --hash=sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324 \
+ --hash=sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f \
+ --hash=sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2 \
+ --hash=sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f \
+ --hash=sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5
# via
# jsonschema
# referencing
-scipy==1.14.1
- # via -r notebook_requirements.in
-send2trash==1.8.3
+scipy==1.16.3 \
+ --hash=sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2 \
+ --hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \
+ --hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \
+ --hash=sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203 \
+ --hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \
+ --hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \
+ --hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \
+ --hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \
+ --hash=sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe \
+ --hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \
+ --hash=sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb \
+ --hash=sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9 \
+ --hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \
+ --hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \
+ --hash=sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686 \
+ --hash=sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97 \
+ --hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \
+ --hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \
+ --hash=sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876 \
+ --hash=sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78 \
+ --hash=sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc \
+ --hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \
+ --hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \
+ --hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \
+ --hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \
+ --hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \
+ --hash=sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1 \
+ --hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \
+ --hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \
+ --hash=sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6 \
+ --hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \
+ --hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \
+ --hash=sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511 \
+ --hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \
+ --hash=sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184 \
+ --hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \
+ --hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \
+ --hash=sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2 \
+ --hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \
+ --hash=sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e \
+ --hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \
+ --hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \
+ --hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \
+ --hash=sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005 \
+ --hash=sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70 \
+ --hash=sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07 \
+ --hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \
+ --hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \
+ --hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \
+ --hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \
+ --hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \
+ --hash=sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733 \
+ --hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \
+ --hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \
+ --hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \
+ --hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \
+ --hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \
+ --hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \
+ --hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \
+ --hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \
+ --hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d
+ # via -r bazel/ortools_requirements.in
+send2trash==1.8.3 \
+ --hash=sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9 \
+ --hash=sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf
# via jupyter-server
-six==1.17.0
+six==1.17.0 \
+ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
+ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via
# python-dateutil
# rfc3339-validator
-sniffio==1.3.1
- # via anyio
-soupsieve==2.7
+soupsieve==2.8 \
+ --hash=sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c \
+ --hash=sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f
# via beautifulsoup4
-stack-data==0.6.3
+stack-data==0.6.3 \
+ --hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \
+ --hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695
# via ipython
-svgwrite==1.4.3
- # via -r notebook_requirements.in
-tenacity==9.1.2
+svgwrite==1.4.3 \
+ --hash=sha256:bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d
+ # via -r bazel/ortools_requirements.in
+tenacity==9.1.2 \
+ --hash=sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb \
+ --hash=sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138
# via plotly
-terminado==0.18.1
+terminado==0.18.1 \
+ --hash=sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 \
+ --hash=sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e
# via
# jupyter-server
# jupyter-server-terminals
-tinycss2==1.4.0
+tinycss2==1.4.0 \
+ --hash=sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7 \
+ --hash=sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289
# via bleach
-tornado==6.5
+tornado==6.5 \
+ --hash=sha256:007f036f7b661e899bd9ef3fa5f87eb2cb4d1b2e7d67368e778e140a2f101a7a \
+ --hash=sha256:03576ab51e9b1677e4cdaae620d6700d9823568b7939277e4690fe4085886c55 \
+ --hash=sha256:119c03f440a832128820e87add8a175d211b7f36e7ee161c631780877c28f4fb \
+ --hash=sha256:231f2193bb4c28db2bdee9e57bc6ca0cd491f345cd307c57d79613b058e807e0 \
+ --hash=sha256:542e380658dcec911215c4820654662810c06ad872eefe10def6a5e9b20e9633 \
+ --hash=sha256:7c625b9d03f1fb4d64149c47d0135227f0434ebb803e2008040eb92906b0105a \
+ --hash=sha256:9a0d8d2309faf015903080fb5bdd969ecf9aa5ff893290845cf3fd5b2dd101bc \
+ --hash=sha256:9ac1cbe1db860b3cbb251e795c701c41d343f06a96049d6274e7c77559117e41 \
+ --hash=sha256:ab75fe43d0e1b3a5e3ceddb2a611cb40090dd116a84fc216a07a298d9e000471 \
+ --hash=sha256:c70c0a26d5b2d85440e4debd14a8d0b463a0cf35d92d3af05f5f1ffa8675c826 \
+ --hash=sha256:f81067dad2e4443b015368b24e802d0083fecada4f0a4572fdb72fc06e54a9a6 \
+ --hash=sha256:fd20c816e31be1bbff1f7681f970bbbd0bb241c364220140228ba24242bcdc59
# via
- # -r notebook_requirements.in
+ # -r bazel/notebook_requirements.in
# ipykernel
# jupyter-client
# jupyter-server
# jupyterlab
# notebook
# terminado
-traitlets==5.14.3
+traitlets==5.14.3 \
+ --hash=sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7 \
+ --hash=sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f
# via
- # comm
# ipykernel
# ipython
# jupyter-client
@@ -319,36 +1343,58 @@ traitlets==5.14.3
# nbclient
# nbconvert
# nbformat
-types-protobuf==6.30.2.20250516
+types-protobuf==6.32.1.20251105 \
+ --hash=sha256:641002611ff87dd9fedc38a39a29cacb9907ae5ce61489b53e99ca2074bef764 \
+ --hash=sha256:a15109d38f7cfefd2539ef86d3f93a6a41c7cad53924f8aa1a51eaddbb72a660
# via mypy-protobuf
-types-python-dateutil==2.9.0.20250516
- # via arrow
-typing-extensions==4.13.1
+typing-extensions==4.15.0 \
+ --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
+ --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
# via
- # -r notebook_requirements.in
+ # -r bazel/ortools_requirements.in
# anyio
# beautifulsoup4
# mypy
# referencing
-tzdata==2025.2
- # via pandas
-uri-template==1.3.0
+tzdata==2025.3 \
+ --hash=sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1 \
+ --hash=sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7
+ # via
+ # arrow
+ # pandas
+uri-template==1.3.0 \
+ --hash=sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7 \
+ --hash=sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363
# via jsonschema
-urllib3==2.5.0
+urllib3==2.6.3 \
+ --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \
+ --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4
# via requests
-virtualenv==20.28.1
- # via -r notebook_requirements.in
-wcwidth==0.2.13
+virtualenv==20.35.4 \
+ --hash=sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c \
+ --hash=sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b
+ # via -r bazel/ortools_requirements.in
+wcwidth==0.2.14 \
+ --hash=sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605 \
+ --hash=sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1
# via prompt-toolkit
-webcolors==24.11.1
+webcolors==25.10.0 \
+ --hash=sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d \
+ --hash=sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf
# via jsonschema
-webencodings==0.5.1
+webencodings==0.5.1 \
+ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
+ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
# via
# bleach
# tinycss2
-websocket-client==1.8.0
+websocket-client==1.9.0 \
+ --hash=sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98 \
+ --hash=sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef
# via jupyter-server
# The following packages are considered to be unsafe in a requirements file:
-setuptools==80.9.0
+setuptools==80.9.0 \
+ --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
+ --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
# via jupyterlab
diff --git a/bazel/ortools_requirements.in b/bazel/ortools_requirements.in
index e893a8b6290..e15ee208da9 100644
--- a/bazel/ortools_requirements.in
+++ b/bazel/ortools_requirements.in
@@ -1,20 +1,19 @@
# OR-Tools code dependencies
-absl-py==2.2.2
-immutabledict==4.2.1
-numpy==2.2.0
-protobuf==6.31.1
+absl-py==2.3.1
+immutabledict==4.2.2
+numpy==2.3.5
+protobuf==6.32.0
requests==2.32.4
-scipy==1.14.1
-typing-extensions==4.13.1
+scipy==1.16.3
+typing-extensions==4.15.0
# OR-Tools build dependencies
mypy==1.6.1
mypy-protobuf==3.5.0
-virtualenv==20.28.1
-black==24.8.0
+virtualenv==20.35.4
# Example dependencies
-pandas==2.2.3
+pandas==2.3.3
# Visualization dependencies
svgwrite==1.4.3
diff --git a/bazel/ortools_requirements.txt b/bazel/ortools_requirements.txt
index fd8facba519..2902cad2c12 100644
--- a/bazel/ortools_requirements.txt
+++ b/bazel/ortools_requirements.txt
@@ -4,72 +4,435 @@
#
# bazel run //bazel:ortools_requirements.update
#
-absl-py==2.2.2
- # via -r ortools_requirements.in
-black==24.8.0
- # via -r ortools_requirements.in
-certifi==2024.7.4
+absl-py==2.3.1 \
+ --hash=sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9 \
+ --hash=sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d
+ # via -r bazel/ortools_requirements.in
+certifi==2025.11.12 \
+ --hash=sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b \
+ --hash=sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316
# via requests
-charset-normalizer==3.3.2
+charset-normalizer==3.4.4 \
+ --hash=sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad \
+ --hash=sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93 \
+ --hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \
+ --hash=sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89 \
+ --hash=sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc \
+ --hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \
+ --hash=sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63 \
+ --hash=sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d \
+ --hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \
+ --hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \
+ --hash=sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0 \
+ --hash=sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505 \
+ --hash=sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161 \
+ --hash=sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af \
+ --hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \
+ --hash=sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318 \
+ --hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \
+ --hash=sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4 \
+ --hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \
+ --hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \
+ --hash=sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576 \
+ --hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \
+ --hash=sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1 \
+ --hash=sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8 \
+ --hash=sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1 \
+ --hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \
+ --hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \
+ --hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \
+ --hash=sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88 \
+ --hash=sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016 \
+ --hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \
+ --hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \
+ --hash=sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a \
+ --hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \
+ --hash=sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0 \
+ --hash=sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84 \
+ --hash=sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db \
+ --hash=sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1 \
+ --hash=sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7 \
+ --hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \
+ --hash=sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8 \
+ --hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \
+ --hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \
+ --hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \
+ --hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \
+ --hash=sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2 \
+ --hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \
+ --hash=sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d \
+ --hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \
+ --hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \
+ --hash=sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf \
+ --hash=sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6 \
+ --hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \
+ --hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \
+ --hash=sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa \
+ --hash=sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381 \
+ --hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \
+ --hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \
+ --hash=sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc \
+ --hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \
+ --hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \
+ --hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \
+ --hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \
+ --hash=sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e \
+ --hash=sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313 \
+ --hash=sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569 \
+ --hash=sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3 \
+ --hash=sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d \
+ --hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \
+ --hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \
+ --hash=sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3 \
+ --hash=sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9 \
+ --hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \
+ --hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \
+ --hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \
+ --hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \
+ --hash=sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50 \
+ --hash=sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf \
+ --hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \
+ --hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \
+ --hash=sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac \
+ --hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \
+ --hash=sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815 \
+ --hash=sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c \
+ --hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \
+ --hash=sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6 \
+ --hash=sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e \
+ --hash=sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4 \
+ --hash=sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84 \
+ --hash=sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69 \
+ --hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \
+ --hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \
+ --hash=sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0 \
+ --hash=sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897 \
+ --hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \
+ --hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \
+ --hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \
+ --hash=sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d \
+ --hash=sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074 \
+ --hash=sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3 \
+ --hash=sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224 \
+ --hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \
+ --hash=sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a \
+ --hash=sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d \
+ --hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \
+ --hash=sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f \
+ --hash=sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8 \
+ --hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \
+ --hash=sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966 \
+ --hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 \
+ --hash=sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3 \
+ --hash=sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e \
+ --hash=sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608
# via requests
-click==8.1.3
- # via black
-distlib==0.3.7
+distlib==0.4.0 \
+ --hash=sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16 \
+ --hash=sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d
# via virtualenv
-filelock==3.12.2
+filelock==3.20.1 \
+ --hash=sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a \
+ --hash=sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c
# via virtualenv
-idna==3.7
+idna==3.11 \
+ --hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
+ --hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
# via requests
-immutabledict==4.2.1
- # via -r ortools_requirements.in
-mypy==1.6.1
- # via -r ortools_requirements.in
-mypy-extensions==1.0.0
+immutabledict==4.2.2 \
+ --hash=sha256:97c31d098a2c850e93a958badeef765e4736ed7942ec73e439facd764a3a7217 \
+ --hash=sha256:cb6ed3090df593148f94cb407d218ca526fd2639694afdb553dc4f50ce6feeca
+ # via -r bazel/ortools_requirements.in
+mypy==1.6.1 \
+ --hash=sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7 \
+ --hash=sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e \
+ --hash=sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c \
+ --hash=sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169 \
+ --hash=sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208 \
+ --hash=sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0 \
+ --hash=sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1 \
+ --hash=sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1 \
+ --hash=sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7 \
+ --hash=sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45 \
+ --hash=sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143 \
+ --hash=sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5 \
+ --hash=sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f \
+ --hash=sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd \
+ --hash=sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245 \
+ --hash=sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f \
+ --hash=sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332 \
+ --hash=sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30 \
+ --hash=sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183 \
+ --hash=sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f \
+ --hash=sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85 \
+ --hash=sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46 \
+ --hash=sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71 \
+ --hash=sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660 \
+ --hash=sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb \
+ --hash=sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c \
+ --hash=sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a
+ # via -r bazel/ortools_requirements.in
+mypy-extensions==1.1.0 \
+ --hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \
+ --hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558
+ # via mypy
+mypy-protobuf==3.5.0 \
+ --hash=sha256:0d0548c6b9a6faf14ce1a9ce2831c403a5c1f2a9363e85b1e2c51d5d57aa8393 \
+ --hash=sha256:21f270da0a9792a9dac76b0df463c027e561664ab6973c59be4e4d064dfe67dc
+ # via -r bazel/ortools_requirements.in
+numpy==2.3.5 \
+ --hash=sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b \
+ --hash=sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae \
+ --hash=sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3 \
+ --hash=sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0 \
+ --hash=sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b \
+ --hash=sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa \
+ --hash=sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28 \
+ --hash=sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e \
+ --hash=sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017 \
+ --hash=sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41 \
+ --hash=sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e \
+ --hash=sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63 \
+ --hash=sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9 \
+ --hash=sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8 \
+ --hash=sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff \
+ --hash=sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7 \
+ --hash=sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139 \
+ --hash=sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4 \
+ --hash=sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748 \
+ --hash=sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952 \
+ --hash=sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd \
+ --hash=sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b \
+ --hash=sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce \
+ --hash=sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f \
+ --hash=sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5 \
+ --hash=sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42 \
+ --hash=sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7 \
+ --hash=sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248 \
+ --hash=sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e \
+ --hash=sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3 \
+ --hash=sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b \
+ --hash=sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e \
+ --hash=sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0 \
+ --hash=sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa \
+ --hash=sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a \
+ --hash=sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5 \
+ --hash=sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d \
+ --hash=sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4 \
+ --hash=sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c \
+ --hash=sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52 \
+ --hash=sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5 \
+ --hash=sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d \
+ --hash=sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1 \
+ --hash=sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c \
+ --hash=sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18 \
+ --hash=sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7 \
+ --hash=sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188 \
+ --hash=sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218 \
+ --hash=sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2 \
+ --hash=sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903 \
+ --hash=sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c \
+ --hash=sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c \
+ --hash=sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234 \
+ --hash=sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82 \
+ --hash=sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39 \
+ --hash=sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf \
+ --hash=sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20 \
+ --hash=sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946 \
+ --hash=sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0 \
+ --hash=sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9 \
+ --hash=sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff \
+ --hash=sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad \
+ --hash=sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227 \
+ --hash=sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10 \
+ --hash=sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e \
+ --hash=sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf \
+ --hash=sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769 \
+ --hash=sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310 \
+ --hash=sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425 \
+ --hash=sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013 \
+ --hash=sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c \
+ --hash=sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb \
+ --hash=sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d \
+ --hash=sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520
# via
- # black
- # mypy
-mypy-protobuf==3.5.0
- # via -r ortools_requirements.in
-numpy==2.2.0
- # via
- # -r ortools_requirements.in
+ # -r bazel/ortools_requirements.in
# pandas
# scipy
-packaging==23.1
- # via black
-pandas==2.2.3
- # via -r ortools_requirements.in
-pathspec==0.11.1
- # via black
-platformdirs==3.10.0
- # via
- # black
- # virtualenv
-protobuf==6.31.1
+pandas==2.3.3 \
+ --hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \
+ --hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \
+ --hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \
+ --hash=sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791 \
+ --hash=sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73 \
+ --hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \
+ --hash=sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4 \
+ --hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \
+ --hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \
+ --hash=sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084 \
+ --hash=sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c \
+ --hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \
+ --hash=sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35 \
+ --hash=sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250 \
+ --hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \
+ --hash=sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826 \
+ --hash=sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9 \
+ --hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \
+ --hash=sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1 \
+ --hash=sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523 \
+ --hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \
+ --hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \
+ --hash=sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53 \
+ --hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \
+ --hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \
+ --hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \
+ --hash=sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff \
+ --hash=sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45 \
+ --hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \
+ --hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \
+ --hash=sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b \
+ --hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \
+ --hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \
+ --hash=sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8 \
+ --hash=sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98 \
+ --hash=sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89 \
+ --hash=sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66 \
+ --hash=sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b \
+ --hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \
+ --hash=sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29 \
+ --hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \
+ --hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \
+ --hash=sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2 \
+ --hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \
+ --hash=sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa \
+ --hash=sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151 \
+ --hash=sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838 \
+ --hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \
+ --hash=sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a \
+ --hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \
+ --hash=sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908 \
+ --hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \
+ --hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \
+ --hash=sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c \
+ --hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee
+ # via -r bazel/ortools_requirements.in
+platformdirs==4.5.1 \
+ --hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \
+ --hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
+ # via virtualenv
+protobuf==6.32.0 \
+ --hash=sha256:15eba1b86f193a407607112ceb9ea0ba9569aed24f93333fe9a497cf2fda37d3 \
+ --hash=sha256:501fe6372fd1c8ea2a30b4d9be8f87955a64d6be9c88a973996cef5ef6f0abf1 \
+ --hash=sha256:75a2aab2bd1aeb1f5dc7c5f33bcb11d82ea8c055c9becbb41c26a8c43fd7092c \
+ --hash=sha256:7db8ed09024f115ac877a1427557b838705359f047b2ff2f2b2364892d19dacb \
+ --hash=sha256:84f9e3c1ff6fb0308dbacb0950d8aa90694b0d0ee68e75719cb044b7078fe741 \
+ --hash=sha256:a81439049127067fc49ec1d36e25c6ee1d1a2b7be930675f919258d03c04e7d2 \
+ --hash=sha256:a8bdbb2f009cfc22a36d031f22a625a38b615b5e19e558a7b756b3279723e68e \
+ --hash=sha256:ba377e5b67b908c8f3072a57b63e2c6a4cbd18aea4ed98d2584350dbf46f2783 \
+ --hash=sha256:d52691e5bee6c860fff9a1c86ad26a13afbeb4b168cd4445c922b7e2cf85aaf0
# via
- # -r ortools_requirements.in
+ # -r bazel/ortools_requirements.in
# mypy-protobuf
-python-dateutil==2.8.2
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via pandas
-pytz==2022.7.1
+pytz==2025.2 \
+ --hash=sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3 \
+ --hash=sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00
# via pandas
-requests==2.32.4
- # via -r ortools_requirements.in
-scipy==1.14.1
- # via -r ortools_requirements.in
-six==1.16.0
+requests==2.32.4 \
+ --hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \
+ --hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422
+ # via -r bazel/ortools_requirements.in
+scipy==1.16.3 \
+ --hash=sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2 \
+ --hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \
+ --hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \
+ --hash=sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203 \
+ --hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \
+ --hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \
+ --hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \
+ --hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \
+ --hash=sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe \
+ --hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \
+ --hash=sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb \
+ --hash=sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9 \
+ --hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \
+ --hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \
+ --hash=sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686 \
+ --hash=sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97 \
+ --hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \
+ --hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \
+ --hash=sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876 \
+ --hash=sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78 \
+ --hash=sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc \
+ --hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \
+ --hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \
+ --hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \
+ --hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \
+ --hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \
+ --hash=sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1 \
+ --hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \
+ --hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \
+ --hash=sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6 \
+ --hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \
+ --hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \
+ --hash=sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511 \
+ --hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \
+ --hash=sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184 \
+ --hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \
+ --hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \
+ --hash=sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2 \
+ --hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \
+ --hash=sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e \
+ --hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \
+ --hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \
+ --hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \
+ --hash=sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005 \
+ --hash=sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70 \
+ --hash=sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07 \
+ --hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \
+ --hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \
+ --hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \
+ --hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \
+ --hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \
+ --hash=sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733 \
+ --hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \
+ --hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \
+ --hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \
+ --hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \
+ --hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \
+ --hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \
+ --hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \
+ --hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \
+ --hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d
+ # via -r bazel/ortools_requirements.in
+six==1.17.0 \
+ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
+ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via python-dateutil
-svgwrite==1.4.3
- # via -r ortools_requirements.in
-types-protobuf==4.24.0.0
+svgwrite==1.4.3 \
+ --hash=sha256:bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d
+ # via -r bazel/ortools_requirements.in
+types-protobuf==6.32.1.20251105 \
+ --hash=sha256:641002611ff87dd9fedc38a39a29cacb9907ae5ce61489b53e99ca2074bef764 \
+ --hash=sha256:a15109d38f7cfefd2539ef86d3f93a6a41c7cad53924f8aa1a51eaddbb72a660
# via mypy-protobuf
-typing-extensions==4.13.1
+typing-extensions==4.15.0 \
+ --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
+ --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
# via
- # -r ortools_requirements.in
+ # -r bazel/ortools_requirements.in
# mypy
-tzdata==2023.3
+tzdata==2025.3 \
+ --hash=sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1 \
+ --hash=sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7
# via pandas
-urllib3==2.5.0
+urllib3==2.6.3 \
+ --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \
+ --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4
# via requests
-virtualenv==20.28.1
- # via -r ortools_requirements.in
+virtualenv==20.35.4 \
+ --hash=sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c \
+ --hash=sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b
+ # via -r bazel/ortools_requirements.in
diff --git a/bazel/swig_java.bzl b/bazel/swig_java.bzl
index 51864b052a4..d0cd4efddd2 100644
--- a/bazel/swig_java.bzl
+++ b/bazel/swig_java.bzl
@@ -14,7 +14,8 @@
"""Build definitions for SWIG Java."""
load("@bazel_skylib//lib:paths.bzl", "paths")
-load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
load("@rules_java//java:java_library.bzl", "java_library")
load("@rules_java//java/common:java_common.bzl", "java_common")
@@ -33,7 +34,9 @@ def _create_src_jar(ctx, java_runtime_info, input_dir, output_jar):
)
def _java_wrap_cc_impl(ctx):
- src = ctx.file.src
+ if len(ctx.files.srcs) != 1:
+ fail("There must be exactly one *.swig file", attr = "srcs")
+ swig_src = ctx.files.srcs[0]
outfile = ctx.outputs.outfile
outhdr = ctx.outputs.outhdr
@@ -51,7 +54,7 @@ def _java_wrap_cc_impl(ctx):
if target.label.workspace_root:
include_path_sets.append(depset([target.label.workspace_root]))
- java_files_dir = ctx.actions.declare_directory("java_files")
+ java_files_dir = ctx.actions.declare_directory("java_files_%s" % ctx.label.name)
swig_args = ctx.actions.args()
swig_args.add("-c++")
@@ -65,7 +68,7 @@ def _java_wrap_cc_impl(ctx):
swig_args.add("-module", ctx.attr.module)
for include_path in depset(transitive = include_path_sets).to_list():
swig_args.add("-I" + include_path)
- swig_args.add(src.path)
+ swig_args.add(swig_src.path)
generated_c_files = [outfile]
if ctx.attr.use_directors:
generated_c_files.append(outhdr)
@@ -74,7 +77,7 @@ def _java_wrap_cc_impl(ctx):
swig_lib = {"SWIG_LIB": paths.dirname(ctx.files._swig_lib[0].path)}
ctx.actions.run(
outputs = generated_c_files + [java_files_dir],
- inputs = depset([src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets),
+ inputs = depset([swig_src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets),
env = swig_lib,
executable = ctx.executable._swig,
arguments = [swig_args],
@@ -92,10 +95,13 @@ It's expected that the `swig` binary exists in the host's path.
""",
implementation = _java_wrap_cc_impl,
attrs = {
- "src": attr.label(
- doc = "Single swig source file.",
- allow_single_file = True,
- mandatory = True,
+ "srcs": attr.label_list(
+ allow_empty = False,
+ allow_files = [".swig", ".i"],
+ flags = ["DIRECT_COMPILE_TIME_INPUT", "ORDER_INDEPENDENT"],
+ doc = """
+A list of one swig source.
+ """,
),
"deps": attr.label_list(
doc = "C++ dependencies.",
@@ -141,9 +147,9 @@ It's expected that the `swig` binary exists in the host's path.
},
)
-def ortools_java_wrap_cc(
+def java_wrap_cc(
name,
- src,
+ srcs,
package,
deps = [],
java_deps = [],
@@ -159,7 +165,7 @@ def ortools_java_wrap_cc(
Args:
name: target name.
- src: single .i source file.
+ srcs: A list of one swig source.
package: package of generated Java files.
deps: C++ deps.
java_deps: Java deps.
@@ -183,7 +189,7 @@ def ortools_java_wrap_cc(
_java_wrap_cc(
name = wrapper_name,
- src = src,
+ srcs = srcs,
package = package,
outfile = outfile,
outhdr = outhdr if use_directors else None,
diff --git a/binder/requirements.txt b/binder/requirements.txt
deleted file mode 100644
index ca32801102c..00000000000
--- a/binder/requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-ortools
-matplotlib
-plotly
-svgwrite
diff --git a/cmake/FindSCIP.cmake b/cmake/FindSCIP.cmake
index 0e7e9bf2726..3bff1cb62ea 100644
--- a/cmake/FindSCIP.cmake
+++ b/cmake/FindSCIP.cmake
@@ -20,7 +20,7 @@ This module determines the SCIP library of the system.
IMPORTED Targets
^^^^^^^^^^^^^^^^
-This module defines :prop_tgt:`IMPORTED` target ``SCIP::SCIP``, if
+This module defines :prop_tgt:`IMPORTED` target ``SCIP::libscip``, if
SCIP has been found.
Result Variables
@@ -45,6 +45,10 @@ find_package(SCIP QUIET NO_MODULE)
# if we found the SCIP cmake package then we are done.
if(SCIP_FOUND)
find_package_handle_standard_args(SCIP CONFIG_MODE)
+ if(NOT TARGET SCIP::libscip)
+ message(WARNING "SCIP::libscip not provided")
+ add_library(SCIP::libscip ALIAS libscip)
+ endif()
return()
endif()
@@ -69,15 +73,15 @@ else()
set(SCIP_FOUND TRUE)
endif()
-if(SCIP_FOUND AND NOT TARGET SCIP::SCIP)
- add_library(SCIP::SCIP UNKNOWN IMPORTED)
+if(SCIP_FOUND AND NOT TARGET SCIP::libscip)
+ add_library(SCIP::libscip UNKNOWN IMPORTED)
- set_target_properties(SCIP::SCIP PROPERTIES
+ set_target_properties(SCIP::libscip PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SCIP_ROOT}/include")
if(APPLE)
set(SCIP_ARCH darwin.x86_64.gnu.opt)
- set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
+ set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
-force_load
${SCIP_ROOT}/lib/libscip.a
${SCIP_ROOT}/lib/libscipopt.a
@@ -86,14 +90,14 @@ if(SCIP_FOUND AND NOT TARGET SCIP::SCIP)
)
elseif(UNIX)
set(SCIP_ARCH linux.x86_64.gnu.opt)
- set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
+ set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
${SCIP_ROOT}/lib/libscip.a
${SCIP_ROOT}/lib/libscipopt.a
${SCIP_ROOT}/lib/libsoplex.a
${SCIP_ROOT}/lib/libsoplex.${SCIP_ARCH}.a
)
elseif(MSVC)
- set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
+ set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
${SCIP_ROOT}/lib/scip.lib
${SCIP_ROOT}/lib/soplex.lib
ignore:4006
diff --git a/cmake/Makefile b/cmake/Makefile
index f63de4d7622..4d0095c4013 100644
--- a/cmake/Makefile
+++ b/cmake/Makefile
@@ -148,17 +148,13 @@ help:
@echo -e "\t\t${BOLD}openbsd${RESET} (OpenBSD 7)"
@echo -e "\te.g. 'make freebsd_cpp'"
@echo
- @echo -e "\t${BOLD}glop_${RESET}: Build Glop using an Ubuntu:rolling docker image."
- @echo -e "\t${BOLD}save_glop_${RESET}: Save Glop using an Ubuntu:rolling docker image."
- @echo -e "\t${BOLD}sh_glop_${RESET}: Run a Glop container using an Ubuntu:rolling docker image (debug purpose)."
- @echo -e "\t${BOLD}clean_glop_${RESET}: Remove the Glop docker image (and the save archive if any) for a specific distro."
- @echo
@echo -e "\tGlobal targets."
@echo -e "\t${BOLD}clean${RESET}: Remove ALL caches and docker images."
@echo -e "\t${BOLD}distclean${RESET}: Remove everything."
@echo
@echo -e "\t${BOLD}NOCACHE=1${RESET}: use 'docker build --no-cache' when building container (default use cache)."
@echo -e "\t${BOLD}VERBOSE=1${RESET}: use 'docker build --progress=plain' when building container."
+ @echo -e "\t${BOLD}CMAKE_BUILD_PARALLEL_LEVEL=4${RESET}: number of concurrent processes to use when building."
@echo
@echo -e "branch: $(BRANCH)"
@echo -e "sha1: $(SHA1)"
@@ -190,6 +186,10 @@ ifdef VERBOSE
DOCKER_BUILD_CMD := ${DOCKER_BUILD_CMD} --progress=plain
DOCKER_BUILDX_CMD := ${DOCKER_BUILDX_CMD} --progress=plain
endif
+ifdef CMAKE_BUILD_PARALLEL_LEVEL
+DOCKER_BUILD_CMD := ${DOCKER_BUILD_CMD} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}
+DOCKER_BUILDX_CMD := ${DOCKER_BUILDX_CMD} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}
+endif
DOCKER_RUN_CMD := docker run --rm --init --net=host
# Currently supported distro
@@ -757,44 +757,11 @@ $(foreach vms,$(VAGRANT_VMS),$(eval $(call make-vagrant-target,$(vms))))
.PHONY: clean_vagrant
clean_vagrant: $(addprefix clean_, $(VAGRANT_VMS))
-##########
-## GLOP ##
-##########
-glop_targets = $(addprefix glop_, $(STAGES))
-.PHONY: $(glop_targets)
-$(glop_targets): glop_%: docker/glop/Dockerfile
- #@docker image rm -f ${IMAGE}:$@ 2>/dev/null
- ${DOCKER_BUILD_CMD} --target=$* --tag ${IMAGE}:$@ -f $< ..
-
-save_glop_targets = $(addprefix save_glop_, $(STAGES))
-.PHONY: $(save_glop_targets)
-$(save_glop_targets): save_glop_%: cache/glop/docker_%.tar
-cache/glop/docker_%.tar: glop_%
- @rm -f $@
- mkdir -p cache/$*
- docker save ${IMAGE}:$< -o $@
-
-sh_glop_targets = $(addprefix sh_glop_, $(STAGES))
-.PHONY: $(sh_glop_targets)
-$(sh_glop_targets): sh_glop_%: glop_%
- ${DOCKER_RUN_CMD} -it --name ${PROJECT}_${BUILD_SYSTEM}_$< ${IMAGE}:$<
-
-clean_glop_targets = $(addprefix clean_glop_, $(STAGES))
-.PHONY: $(clean_glop_targets)
-$(clean_glop_targets): clean_glop_%
- docker image rm -f ${IMAGE}:glop_$* 2>/dev/null
- rm -f cache/glop/docker_$*.tar
-
-## MERGE ##
-.PHONY: clean_glop
-clean_glop: $(addprefix clean_glop_, $(STAGES))
- rm -f cache/glop
-
###########
## CLEAN ##
###########
.PHONY: clean
-clean: clean_all clean_platforms clean_toolchains clean_web clean_vagrant clean_glop
+clean: clean_all clean_platforms clean_toolchains clean_web clean_vagrant
docker container prune -f
docker image prune -f
-rmdir cache
@@ -803,4 +770,4 @@ clean: clean_all clean_platforms clean_toolchains clean_web clean_vagrant clean_
distclean: clean
-docker container rm -f $$(docker container ls -aq)
-docker image rm -f $$(docker image ls -aq)
- -vagrant box remove -f generic/freebsd12
+ -vagrant box remove -f generic/freebsd14
diff --git a/cmake/README.md b/cmake/README.md
index 816f67d067d..9f8110b9498 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -51,17 +51,6 @@ Dockers:
[docker_svg]: ./../../../actions/workflows/amd64_docker_cmake.yml/badge.svg?branch=main
[docker_link]: ./../../../actions/workflows/amd64_docker_cmake.yml
-[![Build Status][aarch64_toolchain_status]][aarch64_toolchain_link]
-[![Build Status][mips_toolchain_status]][mips_toolchain_link]
-[![Build Status][powerpc_toolchain_status]][powerpc_toolchain_link]
-
-[aarch64_toolchain_status]: ./../../../actions/workflows/aarch64_toolchain.yml/badge.svg?branch=main
-[aarch64_toolchain_link]: ./../../../actions/workflows/aarch64_toolchain.yml
-[mips_toolchain_status]: ./../../../actions/workflows/mips_toolchain.yml/badge.svg?branch=main
-[mips_toolchain_link]: ./../../../actions/workflows/mips_toolchain.yml
-[powerpc_toolchain_status]: ./../../../actions/workflows/powerpc_toolchain.yml/badge.svg?branch=main
-[powerpc_toolchain_link]: ./../../../actions/workflows/powerpc_toolchain.yml
-
## Introduction