diff --git a/Makefile b/Makefile index 551eba8bc7..3f1938363e 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ OPEN_PR="true" # Force the installation of a Concrete Python version, which is very useful with nightly versions # /!\ WARNING /!\: This version should NEVER be a wildcard as it might create some # issues when trying to run it in the future. -CONCRETE_PYTHON_VERSION="concrete-python==2024.4.19" +CONCRETE_PYTHON_VERSION="concrete-python==2.6.2.dev20240529" # Force the installation of Concrete Python's latest version, release-candidates included # CONCRETE_PYTHON_VERSION="$$(poetry run python \ @@ -54,7 +54,7 @@ setup_env: echo "Finished installing poetry lock." echo "Installing $(CONCRETE_PYTHON_VERSION)" && \ - poetry run python -m pip install -U --pre "$(CONCRETE_PYTHON_VERSION)" + poetry run python -m pip install -U --pre --extra-index-url https://pypi.zama.ai "$(CONCRETE_PYTHON_VERSION)" "$(MAKE)" fix_omp_issues_for_intel_mac poetry run python -c "import skorch" || true # Details above diff --git a/deps_licenses/licenses_linux_user.txt b/deps_licenses/licenses_linux_user.txt index a28fffbdbc..3c618ed995 100644 --- a/deps_licenses/licenses_linux_user.txt +++ b/deps_licenses/licenses_linux_user.txt @@ -4,7 +4,7 @@ brevitas, 0.8.0, UNKNOWN certifi, 2023.7.22, Mozilla Public License 2.0 (MPL 2.0) charset-normalizer, 3.3.2, MIT License coloredlogs, 15.0.1, MIT License -concrete-python, 2024.4.19, BSD-3-Clause +concrete-python, 2.6.2.dev20240529, BSD-3-Clause dependencies, 2.0.1, BSD License dill, 0.3.8, BSD License filelock, 3.13.4, The Unlicense (Unlicense) @@ -24,18 +24,18 @@ nvidia-cublas-cu11, 11.10.3.66, Other/Proprietary License nvidia-cuda-nvrtc-cu11, 11.7.99, Other/Proprietary License nvidia-cuda-runtime-cu11, 11.7.99, Other/Proprietary License nvidia-cudnn-cu11, 8.5.0.96, Other/Proprietary License -onnx, 1.16.1, Apache License v2.0 +onnx, 1.15.0, Apache License v2.0 onnxconverter-common, 1.13.0, MIT License onnxmltools, 1.11.0, Apache Software License onnxoptimizer, 0.3.13, Apache License v2.0 -onnxruntime, 1.18.0, MIT License +onnxruntime, 1.17.3, MIT License packaging, 24.0, Apache Software License; BSD License pandas, 2.0.3, BSD License protobuf, 3.20.3, BSD-3-Clause psutil, 5.9.8, BSD License python-dateutil, 2.9.0.post0, Apache Software License; BSD License pytz, 2024.1, MIT License -requests, 2.32.2, Apache Software License +requests, 2.32.1, Apache Software License scikit-learn, 1.1.3, BSD License scipy, 1.10.1, BSD License six, 1.16.0, MIT License @@ -46,7 +46,7 @@ sympy, 1.12, BSD License tabulate, 0.8.10, MIT License threadpoolctl, 3.4.0, BSD License torch, 1.13.1, BSD License -tqdm, 4.66.4, MIT License; Mozilla Public License 2.0 (MPL 2.0) +tqdm, 4.66.2, MIT License; Mozilla Public License 2.0 (MPL 2.0) typing_extensions, 4.5.0, Python Software Foundation License tzdata, 2024.1, Apache Software License urllib3, 2.2.1, MIT License diff --git a/deps_licenses/licenses_linux_user.txt.md5 b/deps_licenses/licenses_linux_user.txt.md5 index 5d870452b0..2150f30368 100644 --- a/deps_licenses/licenses_linux_user.txt.md5 +++ b/deps_licenses/licenses_linux_user.txt.md5 @@ -1 +1 @@ -4de769f5cd2b8cd3e1382d7f6b9b81db +615b685ceca77e80263dd7eacb57dcd6 diff --git a/deps_licenses/licenses_mac_intel_user.txt b/deps_licenses/licenses_mac_intel_user.txt index acbd887ec6..949e4671ea 100644 --- a/deps_licenses/licenses_mac_intel_user.txt +++ b/deps_licenses/licenses_mac_intel_user.txt @@ -4,7 +4,7 @@ brevitas, 0.8.0, UNKNOWN certifi, 2023.7.22, Mozilla Public License 2.0 (MPL 2.0) charset-normalizer, 3.3.2, MIT License coloredlogs, 15.0.1, MIT License -concrete-python, 2024.4.19, BSD-3-Clause +concrete-python, 2.6.2.dev20240529, BSD-3-Clause dependencies, 2.0.1, BSD License dill, 0.3.8, BSD License filelock, 3.13.4, The Unlicense (Unlicense) @@ -20,18 +20,18 @@ jsonpickle, 3.0.4, BSD License mpmath, 1.3.0, BSD License networkx, 3.1, BSD License numpy, 1.23.5, BSD License -onnx, 1.16.1, Apache License v2.0 +onnx, 1.15.0, Apache License v2.0 onnxconverter-common, 1.13.0, MIT License onnxmltools, 1.11.0, Apache Software License onnxoptimizer, 0.3.13, Apache License v2.0 -onnxruntime, 1.18.0, MIT License +onnxruntime, 1.17.3, MIT License packaging, 24.0, Apache Software License; BSD License pandas, 2.0.3, BSD License protobuf, 3.20.3, BSD-3-Clause psutil, 5.9.8, BSD License python-dateutil, 2.9.0.post0, Apache Software License; BSD License pytz, 2024.1, MIT License -requests, 2.32.2, Apache Software License +requests, 2.32.1, Apache Software License scikit-learn, 1.1.3, BSD License scipy, 1.10.1, BSD License six, 1.16.0, MIT License @@ -42,7 +42,7 @@ sympy, 1.12, BSD License tabulate, 0.8.10, MIT License threadpoolctl, 3.4.0, BSD License torch, 1.13.1, BSD License -tqdm, 4.66.4, MIT License; Mozilla Public License 2.0 (MPL 2.0) +tqdm, 4.66.2, MIT License; Mozilla Public License 2.0 (MPL 2.0) typing_extensions, 4.5.0, Python Software Foundation License tzdata, 2024.1, Apache Software License urllib3, 2.2.1, MIT License diff --git a/deps_licenses/licenses_mac_intel_user.txt.md5 b/deps_licenses/licenses_mac_intel_user.txt.md5 index 5d870452b0..2150f30368 100644 --- a/deps_licenses/licenses_mac_intel_user.txt.md5 +++ b/deps_licenses/licenses_mac_intel_user.txt.md5 @@ -1 +1 @@ -4de769f5cd2b8cd3e1382d7f6b9b81db +615b685ceca77e80263dd7eacb57dcd6 diff --git a/deps_licenses/licenses_mac_silicon_user.txt b/deps_licenses/licenses_mac_silicon_user.txt index acbd887ec6..4d7b960c7a 100644 --- a/deps_licenses/licenses_mac_silicon_user.txt +++ b/deps_licenses/licenses_mac_silicon_user.txt @@ -4,7 +4,7 @@ brevitas, 0.8.0, UNKNOWN certifi, 2023.7.22, Mozilla Public License 2.0 (MPL 2.0) charset-normalizer, 3.3.2, MIT License coloredlogs, 15.0.1, MIT License -concrete-python, 2024.4.19, BSD-3-Clause +concrete-python, 2.6.2.dev20240529, BSD-3-Clause dependencies, 2.0.1, BSD License dill, 0.3.8, BSD License filelock, 3.13.4, The Unlicense (Unlicense) @@ -31,7 +31,7 @@ protobuf, 3.20.3, BSD-3-Clause psutil, 5.9.8, BSD License python-dateutil, 2.9.0.post0, Apache Software License; BSD License pytz, 2024.1, MIT License -requests, 2.32.2, Apache Software License +requests, 2.32.1, Apache Software License scikit-learn, 1.1.3, BSD License scipy, 1.10.1, BSD License six, 1.16.0, MIT License @@ -42,9 +42,10 @@ sympy, 1.12, BSD License tabulate, 0.8.10, MIT License threadpoolctl, 3.4.0, BSD License torch, 1.13.1, BSD License -tqdm, 4.66.4, MIT License; Mozilla Public License 2.0 (MPL 2.0) +tqdm, 4.66.2, MIT License; Mozilla Public License 2.0 (MPL 2.0) typing_extensions, 4.5.0, Python Software Foundation License tzdata, 2024.1, Apache Software License urllib3, 2.2.1, MIT License xgboost, 1.6.2, Apache Software License z3-solver, 4.13.0.0, MIT License +zipp, 3.18.1, MIT License diff --git a/deps_licenses/licenses_mac_silicon_user.txt.md5 b/deps_licenses/licenses_mac_silicon_user.txt.md5 index 5d870452b0..ee308c90d8 100644 --- a/deps_licenses/licenses_mac_silicon_user.txt.md5 +++ b/deps_licenses/licenses_mac_silicon_user.txt.md5 @@ -1 +1 @@ -4de769f5cd2b8cd3e1382d7f6b9b81db +5e424e2fdfb0fe158f7f91eccd528367 diff --git a/poetry.lock b/poetry.lock index c429f5de55..9860c0a665 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "absl-py" @@ -799,23 +799,23 @@ test = ["pytest"] [[package]] name = "concrete-python" -version = "2.6.0rc1" +version = "2.6.2.dev20240529" description = "A state-of-the-art homomorphic encryption framework" optional = false python-versions = ">=3.8" files = [ - {file = "concrete_python-2.6.0rc1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3cc220d6f74d79704a0f77e394f3587d62fd00feb5aeb70edb6db7c55e4535a8"}, - {file = "concrete_python-2.6.0rc1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:33567f24e4e1b2e127d3f1519d8f3c1dec25f3a770926f8466c11eed07f238a3"}, - {file = "concrete_python-2.6.0rc1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:8dfb7d3fde6109fc5933cb49ed1287eefb558a7e7a2a6f9ebe3afad95153f2f7"}, - {file = "concrete_python-2.6.0rc1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc7be5056d4688d487cc9c73fb050609a254505af7c2d8daf881586666b3d4d1"}, - {file = "concrete_python-2.6.0rc1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:8c5314208719ceb6b5b15894c1e045517803bdbfa769b8cdfcd5089738bb26ee"}, - {file = "concrete_python-2.6.0rc1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:50d8a2718378c16ee5fc66fa3ad843e715a6f05be49e5c8c7eb01dda3df643a2"}, - {file = "concrete_python-2.6.0rc1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69fa7ef4e02655d07d71d88782636a79d7253967841ce10d8b500d56dd220963"}, - {file = "concrete_python-2.6.0rc1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1fa04bd97bac7c71101c3a6f9dfdc7bc9dab232773b811e7c148ed44a61a307c"}, - {file = "concrete_python-2.6.0rc1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:98505a7b4e34698590783a49b28a8b23c2b4433b90ed95c478c2d2fa68250698"}, - {file = "concrete_python-2.6.0rc1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:76ca78df116f4dcf1cb2d584fdaf51621ed548f9cbb6608ed04878d6c66f748b"}, - {file = "concrete_python-2.6.0rc1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8a1404c66d02760494142cc7780665b28147cfcd41a24bd8a71133b20f4b0597"}, - {file = "concrete_python-2.6.0rc1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:9fe0fb1f031fb2432720b5bc588d55077c26bbce36b3e9bb59ba27bd2e21833c"}, + {file = "concrete_python-2.6.2.dev20240529-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30acd7190a6ea61db33316f32a35ae62d62f7a2bb500c0a18c3f74350749a467"}, + {file = "concrete_python-2.6.2.dev20240529-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:a83342eb80cdd94b1e9a8d0ec6f356812d17bccfeaae465880eb6532e8a6a5a3"}, + {file = "concrete_python-2.6.2.dev20240529-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:98789d63b33acc2137e474d2175d0ed7fe5202a3f249d01afd56d50c70ab9a71"}, + {file = "concrete_python-2.6.2.dev20240529-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f3e95ee88abad82de7235a181c901295f59834d6855a9316a12b0f19dd31a285"}, + {file = "concrete_python-2.6.2.dev20240529-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:7ed25ceb0e8b3726e77d5b7c2feadda6ca013b44c000a6cd8071ff709eda839f"}, + {file = "concrete_python-2.6.2.dev20240529-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:822536f80417d818b9f0454a785e4454139cc16dc063cb67855f8452d181004d"}, + {file = "concrete_python-2.6.2.dev20240529-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91372abb39ced27e7ddcb2a05332221d04d77f775f774a76c3177d3cfb8287ea"}, + {file = "concrete_python-2.6.2.dev20240529-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1f9f97cd8f407792eb4cd595d2295c38f0de3848feb2794bf980487fc7549c82"}, + {file = "concrete_python-2.6.2.dev20240529-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:3a45f1078ef07f5f4e6ee24ec103e5b118b261a4a0a2d969298dfae8889642c8"}, + {file = "concrete_python-2.6.2.dev20240529-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f84bda6bbe452dcf40fc34f8587ee0872cde57b2c2cfc734906577be3b6db1de"}, + {file = "concrete_python-2.6.2.dev20240529-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:a228db190ad8d0aa7a53d81ef969f71442d8d90f11dba2137d998deece42a978"}, + {file = "concrete_python-2.6.2.dev20240529-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:14ee4622ed8ff0abd4491f1f76bad4009f5251e6214499bb466f0647e128def5"}, ] [package.dependencies] @@ -828,9 +828,14 @@ torch = ">=1.13" z3-solver = ">=4.12" [package.extras] -dev = ["auditwheel (==5.3.0)", "black (==23.1.0)", "delocate (==0.10.4)", "isort (==5.12.0)", "matplotlib (>=3.7)", "mypy (==1.1.1)", "pillow (>=10.2)", "pybind11 (==2.10.4)", "pydocstyle (==6.3.0)", "pygraphviz (>=1.11)", "pylint (==2.17.1)", "pytest (==7.2.2)", "pytest-cov (==4.0.0)", "pytest-randomly (==3.15.0)", "pytest-xdist (==3.2.1)", "ruff (==0.0.259)", "wheel (==0.40.0)"] +dev = ["auditwheel (==5.3.0)", "black (==24.4.0)", "delocate (==0.10.4)", "isort (==5.12.0)", "matplotlib (>=3.7)", "mypy (==1.1.1)", "pillow (>=10.2)", "pybind11 (==2.10.4)", "pydocstyle (==6.3.0)", "pygraphviz (>=1.11)", "pylint (==2.17.1)", "pytest (==7.2.2)", "pytest-cov (==4.0.0)", "pytest-randomly (==3.15.0)", "pytest-xdist (==3.2.1)", "ruff (==0.0.259)", "wheel (==0.40.0)"] full = ["matplotlib (>=3.7)", "pillow (>=10.2)", "pygraphviz (>=1.11)"] +[package.source] +type = "legacy" +url = "https://pypi.zama.ai" +reference = "zama-pypi" + [[package]] name = "contourpy" version = "1.1.1" @@ -2151,13 +2156,13 @@ trio = ["async_generator", "trio"] [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.3" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -5293,13 +5298,13 @@ files = [ [[package]] name = "requests" -version = "2.32.2" +version = "2.32.1" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, - {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, + {file = "requests-2.32.1-py3-none-any.whl", hash = "sha256:21ac9465cdf8c1650fe1ecde8a71669a93d4e6f147550483a2967d08396a56a5"}, + {file = "requests-2.32.1.tar.gz", hash = "sha256:eb97e87e64c79e64e5b8ac75cee9dd1f97f49e289b083ee6be96268930725685"}, ] [package.dependencies] @@ -6752,13 +6757,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.4" +version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, - {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -6906,13 +6911,13 @@ files = [ [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240521" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240521.tar.gz", hash = "sha256:c5c4a0ae95aad51f1bf6dae9eed04a78f7f2575d4b171da37b622e08b93eb5d3"}, + {file = "types_requests-2.32.0.20240521-py3-none-any.whl", hash = "sha256:ab728ba43ffb073db31f21202ecb97db8753ded4a9dc49cb480d8a5350c5c421"}, ] [package.dependencies] @@ -7026,13 +7031,13 @@ test = ["websockets"] [[package]] name = "werkzeug" -version = "3.0.3" +version = "3.0.2" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-3.0.3-py3-none-any.whl", hash = "sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8"}, - {file = "werkzeug-3.0.3.tar.gz", hash = "sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18"}, + {file = "werkzeug-3.0.2-py3-none-any.whl", hash = "sha256:3aac3f5da756f93030740bc235d3e09449efcf65f2f55e3602e1d851b8f48795"}, + {file = "werkzeug-3.0.2.tar.gz", hash = "sha256:e39b645a6ac92822588e7b39a692e7828724ceae0b0d702ef96701f90e70128d"}, ] [package.dependencies] @@ -7311,4 +7316,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.11" -content-hash = "3d05056e4cb5807a804e95b78adc3de507ad81939f051f6f1fce0ef0d841f620" +content-hash = "27aa374896a1acea3d7d2f90c51a413c54c08fbbc02bd5f40e8522fe75577156" diff --git a/pyproject.toml b/pyproject.toml index d02ad5745e..5ba1d60387 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,8 @@ readme = "README.md" # Investigate if it is better to fix specific versions or use lower and upper bounds # FIXME: https://github.com/zama-ai/concrete-ml-internal/issues/2665 python = ">=3.8.1,<3.11" -concrete-python = "2.6.0-rc1" +concrete-python = {version="==2.6.2.dev20240529", source = "zama-pypi"} +# concrete-python = ">=2.6.2.dev20240523,<3.0" setuptools = "65.6.3" skops = {version = "0.5.0"} xgboost = "1.6.2" @@ -54,6 +55,12 @@ numpy = "1.23.5" protobuf = "3.20.3" pandas = "2.0.3" +# Needed to have the latest Concrete Python versions +[[tool.poetry.source]] +name = "zama-pypi" +url = "https://pypi.zama.ai/" +priority = "explicit" + [tool.poetry.dev-dependencies] isort = "^5.10.1" black = "^24.3.0" @@ -78,6 +85,8 @@ mdformat = "^0.7.14" mdformat_myst = "^0.1.4" mdformat-toc = "^0.3.0" pip-audit = "^2.1.0" +types-requests = "^2.32.0" +requests="^2.32.1" jupyter = "^1.0.0" py-progress-tracker = "0.6.0" nbqa = "^1.3.1" @@ -88,7 +97,6 @@ jinja2 = "^3.1.2" LinkChecker = "^10.1.0" kaggle = "^1.5.12" tf2onnx = "^1.10.1" -types-requests = "^2.28.0" transformers = "^4.38.0" pdoc3 = "^0.10.0" lazydocs = "^0.4.0" diff --git a/script/make_utils/licenses.sh b/script/make_utils/licenses.sh index fe298e114e..4f1f9731ca 100755 --- a/script/make_utils/licenses.sh +++ b/script/make_utils/licenses.sh @@ -131,7 +131,7 @@ then fi poetry install --only main - python -m pip install -U --pre "${CP_VERSION}" + python -m pip install -U --pre --extra-index-url https://pypi.zama.ai "${CP_VERSION}" python -m pip install pip-licenses # In --format=csv such that the column length (and so, the diff) do not change with longer