diff --git a/pixi.lock b/pixi.lock
index ac88650032..4a3160174a 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -28,7 +28,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-h39aace5_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py312h90b7ffd_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda
@@ -49,16 +49,16 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.0-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda
@@ -118,7 +118,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fcl-0.7.0-h543440a_8.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_hf567e27_908.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda
@@ -135,12 +135,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.0-py312h8a5da7c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.11.0-h9bea470_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h49ef1fa_24.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.2-ha770c72_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_18.conda
@@ -192,7 +192,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda
@@ -202,11 +202,11 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.9.0-hb700be7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-25.3.4-hecca717_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.11.0-pyhecfbec7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-hf4617a5_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-he3c4edf_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
@@ -214,18 +214,18 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.0-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.2-hb700be7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
@@ -243,7 +243,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.0-default_h746c552_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
@@ -256,8 +256,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_118.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda
@@ -288,6 +288,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.0-hf7376ad_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.2-hc2fc477_0.conda
@@ -295,7 +296,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libode-0.16.6-he3147e3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda
@@ -326,7 +327,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-h0c1763c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-h0c1763c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_118.conda
@@ -365,12 +366,13 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-25.3.5-h8cca3c9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
@@ -392,7 +394,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/ompl-1.7.0-py312hd4042a8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.5-h40f6f1d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.6-h40f6f1d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.26.3-h8d634f6_0.conda
@@ -415,7 +417,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda
@@ -457,10 +459,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.15-h3c3fd16_6.conda
@@ -952,19 +954,19 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom_headers-1.1.2-h84d6215_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.0.0-hc0f0d8f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.0-cpu_hc82bd48_.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_6.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312h8da9809_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda
- conda: https://data.bit-bots.de/conda-misc/output/linux-64/webots-2022b-hb0f4dca_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.6-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.1-py312h4c3975b_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
@@ -973,7 +975,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
@@ -1002,8 +1004,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
@@ -1012,6 +1015,7 @@ environments:
build: hb0f4dca_0
- pypi: https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b2/fb/08b3f4bf05da99aba8ffea52a558758def16e8516bc75ca94ff73587e7d3/construct-2.10.70-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/bf/457ed5be028fb235f8f5ad40b5ddbf67023e0017090ea324d0fe6239a73c/dateparser-1.1.8-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz
@@ -1026,13 +1030,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/93/35/850277d1b17b206bd10874c8a9a3f52e059452fb49bb0d22cbb908f6038b/hypercorn-0.18.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/9a/ab96291470e305504aa4b7a2e0ec132e930da89eb3ca7a82fbe03167c131/jsonlines-1.2.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f3/5f/93b3e3607ccd693a768eafee60829cd14ea1810b75aa48e8b20e27b332c4/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/15/c2/3842d8e39006b5b03384418b55108a3f3931ac6fe9b998814be81267acec/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/46/11/8f92f01da9cc41247008856438aa052cc93f74e4ac12ff250eb96a44249a/mycroft_mimic3_tts-0.2.4.tar.gz
- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d6/5b/545e9267a1cc080c8a1be2746113a063e34bcdd0f5173fd665a5c13cb234/num2words-0.5.14-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/af/ad86cfbfd65d5a86204b3a30893e92c0cf3f1a56280efc5a12e69d81f52d/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/28/7c/fd253da53594ab8efbefdc85b3638620ab1a6aab6eb7028a513c853559ce/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/b2/f1/d5318874aed3b57bd00bf76e8f9698b73b578137d9d403314a4e649fbb63/onnxruntime_webgpu-1.25.0.dev20260212001-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/72/2a/05a47a6c291414f5a66901f8d1f6ba68e8ec9fccb341d56fa0b31479d41d/panphon-0.22.2-py2.py3-none-any.whl
@@ -1040,9 +1044,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/5e/5f/82c8074f7e84978129347c2c6ec8b6c59f3584ff1a20bc3c940a3e061790/priority-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/63/3f/da9732ccb24b71a7539470dcdfcd16c923692788f39553f37238f208ca55/python_crfsuite-0.9.12-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/84/14/9fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650/pyttsx3-2.99-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/e9/cc28f21f52913adf333f653b9e0a3bf9cb223f5083a26422968ba73edd8d/quart-0.20.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/ea/31/da390a5a10674481dea2909178973de81fa3a246c0eedcc0e1e4114f52f8/quart_cors-0.8.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/59/3c/ea5a4687adaba5e125b9bd6190153d0037325a0ba3757cc1537cc2c8dd90/regex-2026.2.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/9e/40/bb226f203caa22c1043c1ca79b36340156eca0f6a6742b46c3bb222a3a57/regex-2026.2.28-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/56/feb011ed1e8724c4c57083d71877eefe61f535f6dc94aa598033a03b54b7/swagger_ui_py-21.12.8-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl
@@ -1070,7 +1075,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py312h3d8e7d4_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda
@@ -1091,16 +1096,16 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h83712da_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.0-h7ac5ae9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda
@@ -1160,7 +1165,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fcl-0.7.0-h841ecf2_8.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_h1a35955_908.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda
@@ -1177,12 +1182,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.61.1-py312ha4530ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.62.0-py312ha4530ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/foonathan-memory-0.7.3-h5ad3122_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.11.0-h151373c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeglut-3.2.2-h5eeb66e_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-hfe23055_24.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.1-h8af1aa0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.2-h8af1aa0_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.7.0-py312hb10c72c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_18.conda
@@ -1202,7 +1207,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.86.4-hc66a092_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.86.4-hc87f4d4_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-hd1da3a6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-h124e036_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gnutls-3.8.11-hfe111f1_1.conda
@@ -1233,7 +1238,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda
@@ -1241,10 +1246,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.11.0-pyhecfbec7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.8-h27a9ab5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h27a9ab5_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
@@ -1253,17 +1258,17 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.9-py312h1683e8e_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_101.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-hfdc4d58_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.5-gpl_hbe7d12b_100.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.6-gpl_hbe7d12b_100.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda
@@ -1281,7 +1286,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-21.1.8-default_h94a09a5_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.0-default_h94a09a5_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h5cdc715_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.18.0-h7bfdcfb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda
@@ -1294,8 +1299,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.5.0-he9c94f4_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.1-h8af1aa0_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.1-hdae7a39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.2-h8af1aa0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.2-hdae7a39_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_118.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda
@@ -1325,8 +1330,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-h71be66a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-5_hb558247_openblas.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.8-hfd2ba90_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.0-hfd2ba90_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.2-h3543b8c_0.conda
@@ -1334,7 +1339,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-h86ecc28_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libode-0.16.6-py312h4eed292_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda
@@ -1363,7 +1368,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h30591a0_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.51.2-h022381a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h022381a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_118.conda
@@ -1400,13 +1405,13 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.8-py312h8025657_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.8-py312h9d0c5ba_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.0.5-h0ca1d6e_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.3.5-h455aa48_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py312h4f740d2_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda
@@ -1426,7 +1431,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ompl-1.7.0-py312hae32f5c_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.5-hd0c962a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.6-hd0c962a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h0564a2a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.26.3-h55827e0_0.conda
@@ -1449,7 +1454,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.3.0-py312h6e23c8a_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda
@@ -1491,10 +1496,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py312hd41f8a7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt-main-5.15.15-h2f19be9_6.conda
@@ -1941,9 +1946,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.2-had2c13b_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/setproctitle-1.3.7-py312hd41f8a7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-h8c88b8f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.0-py312hfcd9f9b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.2-py312hfcd9f9b_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda
@@ -1960,7 +1965,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2025.5-hfefdfc9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.1-hfefdfc9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.32.3-h283c62a_1.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.1.2-hfae3067_0.conda
@@ -1987,8 +1992,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom_headers-1.1.2-h17cf362_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.09-h8af1aa0_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hc7513a2_.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hb695247_.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda
@@ -1996,8 +2001,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.24.0-h4f8a99f_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.6-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.1-py312hcd1a082_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py312hcd1a082_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda
@@ -2006,7 +2011,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.46-he30d5cf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda
@@ -2035,7 +2040,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.22.0-py312ha4530ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.23.0-py312ha4530ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hefbcea8_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda
@@ -2046,6 +2051,7 @@ environments:
build: he8cfe8b_0
- pypi: https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b2/fb/08b3f4bf05da99aba8ffea52a558758def16e8516bc75ca94ff73587e7d3/construct-2.10.70-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/bf/457ed5be028fb235f8f5ad40b5ddbf67023e0017090ea324d0fe6239a73c/dateparser-1.1.8-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz
@@ -2060,22 +2066,23 @@ environments:
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/93/35/850277d1b17b206bd10874c8a9a3f52e059452fb49bb0d22cbb908f6038b/hypercorn-0.18.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/9a/ab96291470e305504aa4b7a2e0ec132e930da89eb3ca7a82fbe03167c131/jsonlines-1.2.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/fe/98/88ca0c98d37034a3237acaf461d210cbcfeb6687929e5ba0e354971fa3ed/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/a8/a2/1e0f0665a98968b0af7067cf2dad569e1bd8c1f13a97670b74b5ac5153d9/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/46/11/8f92f01da9cc41247008856438aa052cc93f74e4ac12ff250eb96a44249a/mycroft_mimic3_tts-0.2.4.tar.gz
- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d6/5b/545e9267a1cc080c8a1be2746113a063e34bcdd0f5173fd665a5c13cb234/num2words-0.5.14-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/01/8a/e2d4332ae18d6383376e75141cd914256bee12c3cc439f42260eb176ceb9/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/1c/dc/1f5489f7b21817d4ad352bf7a92a252bd5b438bcbaa7ad20ea50814edc79/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/d7/39/327802e0b6d693182403c144edacbc27eb82907b57062f23ef5a4c4a5ea7/pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/72/2a/05a47a6c291414f5a66901f8d1f6ba68e8ec9fccb341d56fa0b31479d41d/panphon-0.22.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/6f/0cf0746d02a356103b7c3a065dbc188d8b5092e58bb363d74aa668ee1ad1/phonemes2ids-1.2.2.tar.gz
- pypi: https://files.pythonhosted.org/packages/5e/5f/82c8074f7e84978129347c2c6ec8b6c59f3584ff1a20bc3c940a3e061790/priority-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/0c/9725b097738f4a6aac9ac4e5a5fc6494eca69f17663d3d6ba8d0ea3858d2/python_crfsuite-0.9.12-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/84/14/9fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650/pyttsx3-2.99-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/e9/cc28f21f52913adf333f653b9e0a3bf9cb223f5083a26422968ba73edd8d/quart-0.20.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/ea/31/da390a5a10674481dea2909178973de81fa3a246c0eedcc0e1e4114f52f8/quart_cors-0.8.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f3/d0/b7dd3883ed1cff8ee0c0c9462d828aaf12be63bf5dc55453cbf423523b13/regex-2026.2.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/dd/c9/8cc8d850b35ab5650ff6756a1cb85286e2000b66c97520b29c1587455344/regex-2026.2.28-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/56/feb011ed1e8724c4c57083d71877eefe61f535f6dc94aa598033a03b54b7/swagger_ui_py-21.12.8-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl
@@ -2099,18 +2106,18 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.53.0-pl5321h6d3cee1_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda
@@ -2130,14 +2137,14 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda
@@ -2145,21 +2152,22 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
- conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.2.9999-h4616a5c_4.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.2-ha02ee65_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda
@@ -2170,18 +2178,18 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.53.0-pl5321h5dcfaa0_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hb1525cb_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hcab7f73_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda
@@ -2201,14 +2209,14 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.51.2-h10b116e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_18.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.1-h79dcc73_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.1-h825857f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.2-h79dcc73_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.2-h825857f_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda
@@ -2216,21 +2224,22 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda
- conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.2.9999-h4616a5c_4.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.2-hd704e39_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.2-hd704e39_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.2-he30d5cf_0.conda
@@ -2265,7 +2274,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-h39aace5_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py312h90b7ffd_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda
@@ -2286,16 +2295,16 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.0-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda
@@ -2355,7 +2364,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fcl-0.7.0-h543440a_8.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_hf567e27_908.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda
@@ -2372,12 +2381,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.0-py312h8a5da7c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.11.0-h9bea470_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h49ef1fa_24.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.2-ha770c72_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_18.conda
@@ -2429,7 +2438,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda
@@ -2439,11 +2448,11 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.9.0-hb700be7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-25.3.4-hecca717_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.11.0-pyhecfbec7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-hf4617a5_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-he3c4edf_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
@@ -2451,18 +2460,18 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.0-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.2-hb700be7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
@@ -2480,7 +2489,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.0-default_h746c552_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
@@ -2493,8 +2502,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_118.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda
@@ -2525,6 +2534,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.0-hf7376ad_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.2-hc2fc477_0.conda
@@ -2532,7 +2542,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libode-0.16.6-he3147e3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda
@@ -2563,7 +2573,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-h0c1763c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-h0c1763c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_118.conda
@@ -2602,12 +2612,13 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-25.3.5-h8cca3c9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
@@ -2629,7 +2640,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/ompl-1.7.0-py312hd4042a8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.5-h40f6f1d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.6-h40f6f1d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.26.3-h8d634f6_0.conda
@@ -2652,7 +2663,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda
@@ -2694,10 +2705,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.15-h3c3fd16_6.conda
@@ -3189,19 +3200,19 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom_headers-1.1.2-h84d6215_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.0.0-hc0f0d8f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.0-cpu_hc82bd48_.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_6.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312h8da9809_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda
- conda: https://data.bit-bots.de/conda-misc/output/linux-64/webots-2022b-hb0f4dca_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.6-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.1-py312h4c3975b_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
@@ -3210,7 +3221,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
@@ -3239,8 +3250,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
@@ -3249,6 +3261,7 @@ environments:
build: hb0f4dca_0
- pypi: https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b2/fb/08b3f4bf05da99aba8ffea52a558758def16e8516bc75ca94ff73587e7d3/construct-2.10.70-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/bf/457ed5be028fb235f8f5ad40b5ddbf67023e0017090ea324d0fe6239a73c/dateparser-1.1.8-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz
@@ -3263,13 +3276,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/93/35/850277d1b17b206bd10874c8a9a3f52e059452fb49bb0d22cbb908f6038b/hypercorn-0.18.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/9a/ab96291470e305504aa4b7a2e0ec132e930da89eb3ca7a82fbe03167c131/jsonlines-1.2.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f3/5f/93b3e3607ccd693a768eafee60829cd14ea1810b75aa48e8b20e27b332c4/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/15/c2/3842d8e39006b5b03384418b55108a3f3931ac6fe9b998814be81267acec/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/46/11/8f92f01da9cc41247008856438aa052cc93f74e4ac12ff250eb96a44249a/mycroft_mimic3_tts-0.2.4.tar.gz
- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d6/5b/545e9267a1cc080c8a1be2746113a063e34bcdd0f5173fd665a5c13cb234/num2words-0.5.14-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/af/ad86cfbfd65d5a86204b3a30893e92c0cf3f1a56280efc5a12e69d81f52d/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/28/7c/fd253da53594ab8efbefdc85b3638620ab1a6aab6eb7028a513c853559ce/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/b2/f1/d5318874aed3b57bd00bf76e8f9698b73b578137d9d403314a4e649fbb63/onnxruntime_webgpu-1.25.0.dev20260212001-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/72/2a/05a47a6c291414f5a66901f8d1f6ba68e8ec9fccb341d56fa0b31479d41d/panphon-0.22.2-py2.py3-none-any.whl
@@ -3278,9 +3291,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/fc/b7/ba5551480e397c6e86805cc381dd6dc36b15411a806c00c35b661d8dd77e/pyamdgpuinfo-2.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/63/3f/da9732ccb24b71a7539470dcdfcd16c923692788f39553f37238f208ca55/python_crfsuite-0.9.12-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/84/14/9fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650/pyttsx3-2.99-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/e9/cc28f21f52913adf333f653b9e0a3bf9cb223f5083a26422968ba73edd8d/quart-0.20.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/ea/31/da390a5a10674481dea2909178973de81fa3a246c0eedcc0e1e4114f52f8/quart_cors-0.8.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/59/3c/ea5a4687adaba5e125b9bd6190153d0037325a0ba3757cc1537cc2c8dd90/regex-2026.2.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/9e/40/bb226f203caa22c1043c1ca79b36340156eca0f6a6742b46c3bb222a3a57/regex-2026.2.28-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/56/feb011ed1e8724c4c57083d71877eefe61f535f6dc94aa598033a03b54b7/swagger_ui_py-21.12.8-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl
@@ -3308,7 +3322,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py312h3d8e7d4_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda
@@ -3329,16 +3343,16 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h83712da_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.0-h7ac5ae9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda
@@ -3398,7 +3412,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fcl-0.7.0-h841ecf2_8.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_h1a35955_908.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda
@@ -3415,12 +3429,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.61.1-py312ha4530ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.62.0-py312ha4530ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/foonathan-memory-0.7.3-h5ad3122_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.11.0-h151373c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeglut-3.2.2-h5eeb66e_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-hfe23055_24.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.1-h8af1aa0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.2-h8af1aa0_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.7.0-py312hb10c72c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_18.conda
@@ -3440,7 +3454,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.86.4-hc66a092_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.86.4-hc87f4d4_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-hd1da3a6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-h124e036_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gnutls-3.8.11-hfe111f1_1.conda
@@ -3471,7 +3485,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda
@@ -3479,10 +3493,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.11.0-pyhecfbec7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.8-h27a9ab5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h27a9ab5_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
@@ -3491,17 +3505,17 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.9-py312h1683e8e_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_101.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-hfdc4d58_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.5-gpl_hbe7d12b_100.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.6-gpl_hbe7d12b_100.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda
@@ -3519,7 +3533,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_3.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-21.1.8-default_h94a09a5_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.0-default_h94a09a5_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h5cdc715_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.18.0-h7bfdcfb_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda
@@ -3532,8 +3546,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.5.0-he9c94f4_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.1-h8af1aa0_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.1-hdae7a39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.2-h8af1aa0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.2-hdae7a39_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_118.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda
@@ -3563,8 +3577,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-h71be66a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-5_hb558247_openblas.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.8-hfd2ba90_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.0-hfd2ba90_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.2-h3543b8c_0.conda
@@ -3572,7 +3586,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-h86ecc28_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libode-0.16.6-py312h4eed292_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda
@@ -3601,7 +3615,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h30591a0_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.51.2-h022381a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h022381a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_118.conda
@@ -3638,13 +3652,13 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.8-py312h8025657_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.8-py312h9d0c5ba_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.0.5-h0ca1d6e_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.3.5-h455aa48_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py312h4f740d2_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda
@@ -3664,7 +3678,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ompl-1.7.0-py312hae32f5c_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.5-hd0c962a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.6-hd0c962a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h0564a2a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.26.3-h55827e0_0.conda
@@ -3687,7 +3701,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.3.0-py312h6e23c8a_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda
@@ -3729,10 +3743,10 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.1-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py312hd41f8a7_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt-main-5.15.15-h2f19be9_6.conda
@@ -4179,9 +4193,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.2-had2c13b_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/setproctitle-1.3.7-py312hd41f8a7_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-h8c88b8f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.0-py312hfcd9f9b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.2-py312hfcd9f9b_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda
@@ -4198,7 +4212,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2025.5-hfefdfc9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.1-hfefdfc9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.32.3-h283c62a_1.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.1.2-hfae3067_0.conda
@@ -4225,8 +4239,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom_headers-1.1.2-h17cf362_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.09-h8af1aa0_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hc7513a2_.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hb695247_.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda
@@ -4234,8 +4248,8 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.24.0-h4f8a99f_1.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.6-pyhcf101f3_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.1-py312hcd1a082_0.conda
- - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py312hcd1a082_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda
@@ -4244,7 +4258,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.46-he30d5cf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda
@@ -4273,7 +4287,7 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.2-he30d5cf_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda
- - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.22.0-py312ha4530ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.23.0-py312ha4530ae_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hefbcea8_9.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda
@@ -4284,6 +4298,7 @@ environments:
build: he8cfe8b_0
- pypi: https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b2/fb/08b3f4bf05da99aba8ffea52a558758def16e8516bc75ca94ff73587e7d3/construct-2.10.70-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/bf/457ed5be028fb235f8f5ad40b5ddbf67023e0017090ea324d0fe6239a73c/dateparser-1.1.8-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz
@@ -4298,13 +4313,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/93/35/850277d1b17b206bd10874c8a9a3f52e059452fb49bb0d22cbb908f6038b/hypercorn-0.18.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/9a/ab96291470e305504aa4b7a2e0ec132e930da89eb3ca7a82fbe03167c131/jsonlines-1.2.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/fe/98/88ca0c98d37034a3237acaf461d210cbcfeb6687929e5ba0e354971fa3ed/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/a8/a2/1e0f0665a98968b0af7067cf2dad569e1bd8c1f13a97670b74b5ac5153d9/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/46/11/8f92f01da9cc41247008856438aa052cc93f74e4ac12ff250eb96a44249a/mycroft_mimic3_tts-0.2.4.tar.gz
- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d6/5b/545e9267a1cc080c8a1be2746113a063e34bcdd0f5173fd665a5c13cb234/num2words-0.5.14-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/01/8a/e2d4332ae18d6383376e75141cd914256bee12c3cc439f42260eb176ceb9/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/1c/dc/1f5489f7b21817d4ad352bf7a92a252bd5b438bcbaa7ad20ea50814edc79/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/d7/39/327802e0b6d693182403c144edacbc27eb82907b57062f23ef5a4c4a5ea7/pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/72/2a/05a47a6c291414f5a66901f8d1f6ba68e8ec9fccb341d56fa0b31479d41d/panphon-0.22.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/6f/0cf0746d02a356103b7c3a065dbc188d8b5092e58bb363d74aa668ee1ad1/phonemes2ids-1.2.2.tar.gz
@@ -4312,9 +4327,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/80/15/2ff925c0776c7a2aaab3d03b0e477d1a24b0637600b7e2e928cbcc25034f/pyamdgpuinfo-2.1.7.tar.gz
- pypi: https://files.pythonhosted.org/packages/7a/0c/9725b097738f4a6aac9ac4e5a5fc6494eca69f17663d3d6ba8d0ea3858d2/python_crfsuite-0.9.12-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/84/14/9fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650/pyttsx3-2.99-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/e9/cc28f21f52913adf333f653b9e0a3bf9cb223f5083a26422968ba73edd8d/quart-0.20.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/ea/31/da390a5a10674481dea2909178973de81fa3a246c0eedcc0e1e4114f52f8/quart_cors-0.8.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f3/d0/b7dd3883ed1cff8ee0c0c9462d828aaf12be63bf5dc55453cbf423523b13/regex-2026.2.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
+ - pypi: https://files.pythonhosted.org/packages/dd/c9/8cc8d850b35ab5650ff6756a1cb85286e2000b66c97520b29c1587455344/regex-2026.2.28-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/56/feb011ed1e8724c4c57083d71877eefe61f535f6dc94aa598033a03b54b7/swagger_ui_py-21.12.8-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl
@@ -4662,19 +4678,20 @@ packages:
- pkg:pypi/attrs?source=compressed-mapping
size: 64759
timestamp: 1764875182184
-- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda
- sha256: 7377bce9fcc03fecd3607843d20b50546c30a923a3517a322a2a784fa6e380eb
- md5: ea5be9abc2939c8431893b4e123a2065
+- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
+ sha256: a14a9ad02101aab25570543a59c5193043b73dc311a25650134ed9e6cb691770
+ md5: f1976ce927373500cc19d3c0b2c85177
depends:
- python >=3.10
- - pytz >=2015.7
- python
+ constrains:
+ - pytz >=2015.7
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/babel?source=hash-mapping
- size: 7684373
- timestamp: 1770326844118
+ - pkg:pypi/babel?source=compressed-mapping
+ size: 7684321
+ timestamp: 1772555330347
- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py312h90b7ffd_0.conda
sha256: d77a24be15e283d83214121428290dbe55632a6e458378205b39c550afa008cf
md5: 5b8c55fed2e576dde4b0b33693a4fdb1
@@ -5150,15 +5167,15 @@ packages:
purls: []
size: 6721
timestamp: 1753098688332
-- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
- sha256: b5974ec9b50e3c514a382335efa81ed02b05906849827a34061c496f4defa0b2
- md5: bddacf101bb4dd0e51811cb69c7790e2
+- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
+ sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc
+ md5: 4492fd26db29495f0ba23f146cd5638d
depends:
- __unix
license: ISC
purls: []
- size: 146519
- timestamp: 1767500828366
+ size: 147413
+ timestamp: 1772006283803
- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda
sha256: 3bd6a391ad60e471de76c0e9db34986c4b5058587fbf2efa5a7f54645e28c2c7
md5: 09262e66b19567aff4f592fb53b28760
@@ -5226,16 +5243,16 @@ packages:
- pkg:pypi/catkin-pkg?source=hash-mapping
size: 54106
timestamp: 1757558592553
-- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
- sha256: 110338066d194a715947808611b763857c15458f8b3b97197387356844af9450
- md5: eacc711330cd46939f66cd401ff9c44b
+- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
+ sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656
+ md5: 765c4d97e877cdbbb88ff33152b86125
depends:
- python >=3.10
license: ISC
purls:
- pkg:pypi/certifi?source=compressed-mapping
- size: 150969
- timestamp: 1767500900768
+ size: 151445
+ timestamp: 1772001170301
- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
sha256: 7dafe8173d5f94e46cf9cd597cc8ff476a8357fbbd4433a8b5697b2864845d9c
md5: 648ee28dcd4e07a1940a17da62eccd40
@@ -5278,17 +5295,17 @@ packages:
- pkg:pypi/cfgv?source=hash-mapping
size: 13589
timestamp: 1763607964133
-- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
- sha256: b32f8362e885f1b8417bac2b3da4db7323faa12d5db62b7fd6691c02d60d6f59
- md5: a22d1fd9bf98827e280a02875d9a007a
+- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda
+ sha256: 05ea76a016c77839b64f9f8ec581775f6c8a259044bd5b45a177e46ab4e7feac
+ md5: beb628209b2b354b98203066f90b3287
depends:
- python >=3.10
license: MIT
license_family: MIT
purls:
- - pkg:pypi/charset-normalizer?source=hash-mapping
- size: 50965
- timestamp: 1760437331772
+ - pkg:pypi/charset-normalizer?source=compressed-mapping
+ size: 53210
+ timestamp: 1772816516728
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_3.conda
sha256: 1b3deb505af39c18e6ed74c2f80a81e93ccfe856dba53cb1dc6abc4a43928186
md5: 60c5a8962694a08e5a6c053a34ecf133
@@ -5345,31 +5362,29 @@ packages:
purls: []
size: 72216
timestamp: 1770191668411
-- conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.0-h54a6638_0.conda
- sha256: 324097cd9dde3a4623b0275655ea34641481daa5c1274f9ab994e8a2e6aa26e6
- md5: ddf9fed4661bace13f33f08fe38a5f45
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
+ sha256: 1d635e8963e094d95d35148df4b46e495f93bb0750ad5069f4e0e6bbb47ac3bf
+ md5: 83dae3dfadcfec9b37a9fbff6f7f7378
depends:
- - libgcc >=14
- - __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
+ - __glibc >=2.17,<3.0.a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 98102
- timestamp: 1760975548381
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.0-h7ac5ae9_0.conda
- sha256: 534f236e95bb1d5db2c314ce1bac982ef8f4e14abab2ea2c7ee2a0043dbc929d
- md5: a19699b00ac5ffa580ff33e5d80232f2
+ size: 99051
+ timestamp: 1772207728613
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda
+ sha256: a52d45824f7358e7d4abee36abcf9ae298523e8548e98899b5a317dd7cb2a685
+ md5: 4728e6e898f6af8dc024db1f66a2a50f
depends:
- libgcc >=14
- libstdcxx >=14
- - libgcc >=14
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 97923
- timestamp: 1760975711699
+ size: 99015
+ timestamp: 1772207983869
- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda
sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715
md5: ea8a6c3256897cc31263de9f455e25d9
@@ -5867,6 +5882,18 @@ packages:
purls: []
size: 18484
timestamp: 1648912662150
+- pypi: https://files.pythonhosted.org/packages/b2/fb/08b3f4bf05da99aba8ffea52a558758def16e8516bc75ca94ff73587e7d3/construct-2.10.70-py3-none-any.whl
+ name: construct
+ version: 2.10.70
+ sha256: c80be81ef595a1a821ec69dc16099550ed22197615f4320b57cc9ce2a672cb30
+ requires_dist:
+ - arrow ; extra == 'extras'
+ - cloudpickle ; extra == 'extras'
+ - cryptography ; extra == 'extras'
+ - lz4 ; extra == 'extras'
+ - numpy ; extra == 'extras'
+ - ruamel-yaml ; extra == 'extras'
+ requires_python: '>=3.6'
- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda
sha256: 62447faf7e8eb691e407688c0b4b7c230de40d5ecf95bf301111b4d05c5be473
md5: 43c2bc96af3ae5ed9e8a10ded942aa50
@@ -6359,6 +6386,7 @@ packages:
- libgcc >=14
- __glibc >=2.17,<3.0.a0
license: MPL-2.0
+ license_family: MOZILLA
purls: []
size: 1173190
timestamp: 1771922274213
@@ -6369,6 +6397,7 @@ packages:
- libstdcxx >=14
- libgcc >=14
license: MPL-2.0
+ license_family: MOZILLA
purls: []
size: 1173140
timestamp: 1771922508919
@@ -6702,16 +6731,16 @@ packages:
purls: []
size: 12028458
timestamp: 1766459996434
-- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda
- sha256: 6d576ed3bd0e7c57b1144f0b2014de9ea3fab9786316bc3e748105d44e0140a0
- md5: 9dbb20eec24beb026291c20a35ce1ff9
+- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda
+ sha256: dddea9ec53d5e179de82c24569d41198f98db93314f0adae6b15195085d5567f
+ md5: f58064cec97b12a7136ebb8a6f8a129b
depends:
- python >=3.10
license: Unlicense
purls:
- pkg:pypi/filelock?source=compressed-mapping
- size: 24808
- timestamp: 1771468713029
+ size: 25845
+ timestamp: 1773314012590
- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda
sha256: a32e511ea71a9667666935fd9f497f00bcc6ed0099ef04b9416ac24606854d58
md5: 04a55140685296b25b79ad942264c0ef
@@ -6949,9 +6978,9 @@ packages:
purls: []
size: 4059
timestamp: 1762351264405
-- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py312h8a5da7c_0.conda
- sha256: c73cd238e0f6b2183c5168b64aa35a7eb66bb145192a9b26bb9041a4152844a3
- md5: 3bf8fb959dc598c67dac0430b4aff57a
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.0-py312h8a5da7c_0.conda
+ sha256: 777c80a1aa0889e6b637631c31f95d0b048848c5ba710f89ed7cedd3ad318227
+ md5: 526f7ffd63820e55d7992cc1cf931a36
depends:
- __glibc >=2.17,<3.0.a0
- brotli
@@ -6963,12 +6992,12 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/fonttools?source=hash-mapping
- size: 2932702
- timestamp: 1765632761555
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.61.1-py312ha4530ae_0.conda
- sha256: 2274586cc2863f249f0d843b343897f6448e4e0ccceb51a1af6673de2ebd1c02
- md5: 815d984410c54cf5186fbb6f2ff13628
+ - pkg:pypi/fonttools?source=compressed-mapping
+ size: 2935817
+ timestamp: 1773137546716
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.62.0-py312ha4530ae_0.conda
+ sha256: ca4e2e03dc6c2b34880a7b450fe9bd66d7b2b26b5ee62dc2aa605f8e974ff758
+ md5: d2038fcea211e3e59fa78fa03938edad
depends:
- brotli
- libgcc >=14
@@ -6980,9 +7009,9 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/fonttools?source=hash-mapping
- size: 2901753
- timestamp: 1765632735926
+ - pkg:pypi/fonttools?source=compressed-mapping
+ size: 2936215
+ timestamp: 1773137278297
- conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda
sha256: 28d9fce64ee8b5e94350feb0829e054811678f9638039f78ddff8a8615c1b693
md5: 2a3316f47d7827afde5381ecd43b5e85
@@ -7105,26 +7134,26 @@ packages:
purls: []
size: 485755
timestamp: 1763479143663
-- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda
- sha256: bf8e4dffe46f7d25dc06f31038cacb01672c47b9f45201f065b0f4d00ab0a83e
- md5: 4afc585cd97ba8a23809406cd8a9eda8
+- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.2-ha770c72_0.conda
+ sha256: 36857701b46828b6760c3c1652414ee504e7fc12740261ac6fcff3959b72bd7a
+ md5: eeec961fec28e747e1e1dc0446277452
depends:
- - libfreetype 2.14.1 ha770c72_0
- - libfreetype6 2.14.1 h73754d4_0
+ - libfreetype 2.14.2 ha770c72_0
+ - libfreetype6 2.14.2 h73754d4_0
license: GPL-2.0-only OR FTL
purls: []
- size: 173114
- timestamp: 1757945422243
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.1-h8af1aa0_0.conda
- sha256: 9f8de35e95ce301cecfe01bc9d539c7cc045146ffba55efe9733ff77ad1cfb21
- md5: 0c8f36ebd3678eed1685f0fc93fc2175
+ size: 174292
+ timestamp: 1772757205296
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.2-h8af1aa0_0.conda
+ sha256: ecbe6e811574fba5194b29ac3a2badea5eaa060bd9fe7f5bd48a70d16ef38e5a
+ md5: 9cb47d7bbb36646c44d7cf1cb8047887
depends:
- - libfreetype 2.14.1 h8af1aa0_0
- - libfreetype6 2.14.1 hdae7a39_0
+ - libfreetype 2.14.2 h8af1aa0_0
+ - libfreetype6 2.14.2 hdae7a39_0
license: GPL-2.0-only OR FTL
purls: []
- size: 173174
- timestamp: 1757945489158
+ size: 173437
+ timestamp: 1772756019067
- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d
md5: f9f81ea472684d75b9dd8d0b328cf655
@@ -7610,18 +7639,18 @@ packages:
purls: []
size: 1353008
timestamp: 1770195199411
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-hd1da3a6_0.conda
- sha256: bdabb15234026840760db07fc9f1b33dc4d3e1fde1cd2aab2b04e78b927a75c4
- md5: 3f327980b9e38ea34d7cf2831a2a4bcc
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.2.0-h124e036_1.conda
+ sha256: a1c0db6c226b9d80e74bdd49f604eece637489c8c71e6ae63ada8db9e2359944
+ md5: 3ead7f968b529f76f972621558ed2f68
depends:
- libgcc >=14
- libstdcxx >=14
- - spirv-tools >=2025,<2026.0a0
+ - spirv-tools >=2026,<2027.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 1349540
- timestamp: 1769369895399
+ size: 1348415
+ timestamp: 1770195275881
- conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-ha770c72_1.conda
sha256: 80ca13dc518962fcd86856586cb5fb612fe69914234eab322f9dee25f628090f
md5: 33e7a8280999b958df24a95f0cb86b1a
@@ -8587,28 +8616,28 @@ packages:
purls: []
size: 12282786
timestamp: 1720853454991
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hb1525cb_0.conda
- sha256: 09f7f9213eb68e7e4291cd476e72b37f3ded99ed957528567f32f5ba6b611043
- md5: 15b35dc33e185e7d2aac1cfcd6778627
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hcab7f73_0.conda
+ sha256: dcbaa3042084ac58685e3ef4547e4c4be9d37dc52b92ea18581288af95e48b52
+ md5: 998ee7d53e32f7ab57fc35707285527e
depends:
- libgcc >=14
- libstdcxx >=14
license: MIT
license_family: MIT
- size: 12852963
- timestamp: 1767975394622
-- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda
- sha256: 6a88cdde151469131df1948839ac2315ada99cf8d38aaacc9a7a5984e9cd8c19
- md5: 8bc5851c415865334882157127e75799
+ size: 12851689
+ timestamp: 1772208964788
+- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.17-pyhd8ed1ab_0.conda
+ sha256: 7cd5eccdb171a0adbf83a1ad8fc4e17822f4fc3f5518da9040de64e88bc07343
+ md5: 5b7ae2ec4e0750e094f804a6cf1b2a37
depends:
- python >=3.10
- ukkonen
license: MIT
license_family: MIT
purls:
- - pkg:pypi/identify?source=compressed-mapping
- size: 79302
- timestamp: 1768295306539
+ - pkg:pypi/identify?source=hash-mapping
+ size: 79520
+ timestamp: 1772402363021
- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda
sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0
md5: 53abe63df7e10a6ba605dc5f9f961d36
@@ -8731,29 +8760,28 @@ packages:
- pkg:pypi/invoke?source=hash-mapping
size: 132825
timestamp: 1760146119847
-- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda
- sha256: 12cb4db242ea1a2e5e60a51b20f16e9c8120a9eb5d013c641cbf827bf3bb78e1
- md5: 441ca4e203a62f7db2f29f190c02b9cf
+- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.11.0-pyhecfbec7_0.conda
+ sha256: 1f90e346baab7926bc52d7b60c0625087e96b4fab1bdb9a7fe83ac842312c930
+ md5: 326c46b8ec2a1b4964927c7ea55ebf49
depends:
- __unix
- - pexpect >4.3
- - decorator >=4.3.2
+ - decorator >=5.1.0
- ipython_pygments_lexers >=1.0.0
- - jedi >=0.18.1
- - matplotlib-inline >=0.1.5
+ - jedi >=0.18.2
+ - matplotlib-inline >=0.1.6
- prompt-toolkit >=3.0.41,<3.1.0
- - pygments >=2.11.0
- - python >=3.11
+ - pygments >=2.14.0
+ - python >=3.12
- stack_data >=0.6.0
- traitlets >=5.13.0
- - typing_extensions >=4.6
+ - pexpect >4.6
- python
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/ipython?source=compressed-mapping
- size: 647436
- timestamp: 1770040907512
+ size: 648197
+ timestamp: 1772790149194
- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104
md5: bd80ba060603cc228d9d81c257093119
@@ -8791,33 +8819,33 @@ packages:
purls: []
size: 461260
timestamp: 1747574434594
-- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda
- sha256: 0e919ec86d980901d8cbb665e91f5e9bddb5ff662178f25aed6d63f999fd9afc
- md5: a04073db11c2c86c555fb088acc8f8c1
+- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-he3c4edf_0.conda
+ sha256: cea4c90ca4971cbc29d5930301cabcc581a781fd26d0cc7ca0aa459cb33ff573
+ md5: 5455c1a77c2aa337f04d94ff0ef413c3
depends:
- __glibc >=2.17,<3.0.a0
- freeglut >=3.2.2,<4.0a0
- libgcc >=14
- libglu >=9.0.3,<10.0a0
- libglu >=9.0.3,<9.1.0a0
- - libjpeg-turbo >=3.1.0,<4.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
license: JasPer-2.0
purls: []
- size: 681643
- timestamp: 1754514437930
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.8-h27a9ab5_0.conda
- sha256: 9a35d2fa6f74df0952303e1ba951ed4928d36ba7149a07c3c896b5619be731c3
- md5: 310b168e7084345675ba0cd30b1dc1ce
+ size: 683370
+ timestamp: 1772794291374
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h27a9ab5_0.conda
+ sha256: 0bcf499e170a35df96a6dbcf98fcce28fdb369d652e915392cdc7448ea28643a
+ md5: 1591a2cca2a575ecd07f6058da35d722
depends:
- freeglut >=3.2.2,<4.0a0
- libgcc >=14
- libglu >=9.0.3,<10.0a0
- libglu >=9.0.3,<9.1.0a0
- - libjpeg-turbo >=3.1.0,<4.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
license: JasPer-2.0
purls: []
- size: 727096
- timestamp: 1754514489871
+ size: 718883
+ timestamp: 1772794311177
- conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda
sha256: f6d39c7a9acf6289e75444c032a7154bba5abb45b16feb4013e12250cd485cc2
md5: 96387643c6c475b099766f98c41242f0
@@ -8940,24 +8968,24 @@ packages:
purls: []
size: 129048
timestamp: 1754906002667
-- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda
- sha256: 170d76b7ac7197012bb048e1021482a7b2455f3592a5e8d97c96f285ebad064b
- md5: 3a3004fddd39e3bb1a631b08d7045156
+- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
+ sha256: eec7654c2d68f06590862c6e845cc70987b6d6559222b6f0e619dea4268f5dd5
+ md5: cd74a9525dc74bbbf93cf8aa2fa9eb5b
depends:
- python
- - __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
+ - __glibc >=2.17,<3.0.a0
- python_abi 3.12.* *_cp312
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/kiwisolver?source=hash-mapping
- size: 77682
- timestamp: 1762488738724
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.9-py312h1683e8e_2.conda
- sha256: 04187c7cf56abd3cebd504e717724b817fc0952b08f0099e1523542da1aa90b0
- md5: b1d3e3106c1d103d367298dcfa77837a
+ - pkg:pypi/kiwisolver?source=compressed-mapping
+ size: 77120
+ timestamp: 1773067050308
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda
+ sha256: 778a04854b5eb635216839f4ae7b3f312d306b6554b0296c745fd47d8859fe8c
+ md5: f72640fdd363b16da4c2972236c80035
depends:
- python
- libstdcxx >=14
@@ -8967,8 +8995,8 @@ packages:
license_family: BSD
purls:
- pkg:pypi/kiwisolver?source=hash-mapping
- size: 82688
- timestamp: 1762488927391
+ size: 82439
+ timestamp: 1773067307369
- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238
md5: 3f43953b7d3fb3aaa1d0d0723d91e368
@@ -9109,32 +9137,32 @@ packages:
purls: []
size: 875924
timestamp: 1770267209884
-- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda
- sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff
- md5: 9344155d33912347b37f0ae6c410a835
+- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1
+ md5: a752488c68f2e7c456bcbd8f16eec275
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
+ - libgcc >=14
+ - libstdcxx >=14
license: Apache-2.0
license_family: Apache
purls: []
- size: 264243
- timestamp: 1745264221534
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-hfdc4d58_1.conda
- sha256: f01df5bbf97783fac9b89be602b4d02f94353f5221acfd80c424ec1c9a8d276c
- md5: 60dceb7e876f4d74a9cbd42bbbc6b9cf
+ size: 261513
+ timestamp: 1773113328888
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda
+ sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36
+ md5: d13423b06447113a90b5b1366d4da171
depends:
- - libgcc >=13
- - libstdcxx >=13
+ - libgcc >=14
+ - libstdcxx >=14
license: Apache-2.0
license_family: Apache
purls: []
- size: 227184
- timestamp: 1745265544057
-- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.0-hb700be7_0.conda
- sha256: 863e1caf9d0086f93b66c43bf646481bb820fffdf037425c511cb0a54d18d1fc
- md5: a4724e93a90434575b889adb4dc57b49
+ size: 240444
+ timestamp: 1773114901155
+- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.2-hb700be7_0.conda
+ sha256: 5384380213daffbd7fe4d568b2cf2ab9f2476f7a5f228a3d70280e98333eaf0f
+ md5: 4323e07abff8366503b97a0f17924b76
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
@@ -9142,8 +9170,8 @@ packages:
license: MIT
license_family: MIT
purls: []
- size: 672752
- timestamp: 1770189828697
+ size: 858387
+ timestamp: 1772045965844
- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda
sha256: dcd1429a1782864c452057a6c5bc1860f2b637dc20a2b7e6eacd57395bbceff8
md5: 83b160d4da3e1e847bf044997621ed63
@@ -9218,45 +9246,45 @@ packages:
purls: []
size: 37745
timestamp: 1769221878827
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda
- sha256: ee2cf1499a5a5fd5f03c6203597fe14bf28c6ca2a8fffb761e41f3cf371e768e
- md5: 5fdaa8b856683a5598459dead3976578
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda
+ sha256: 69ea8da58658ad26cb64fb0bfccd8a3250339811f0b57c6b8a742e5e51bacf70
+ md5: 981d372c31a23e1aa9965d4e74d085d5
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- libgcc >=14
- - liblzma >=5.8.1,<6.0a0
+ - liblzma >=5.8.2,<6.0a0
- libxml2
- libxml2-16 >=2.14.6
- libzlib >=1.3.1,<2.0a0
- lz4-c >=1.10.0,<1.11.0a0
- lzo >=2.10,<3.0a0
- - openssl >=3.5.4,<4.0a0
+ - openssl >=3.5.5,<4.0a0
- zstd >=1.5.7,<1.6.0a0
license: BSD-2-Clause
license_family: BSD
purls: []
- size: 886102
- timestamp: 1767630453053
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.5-gpl_hbe7d12b_100.conda
- sha256: 23422c1eb7f5f05a1cd4acab5ed4d8ae4abf360eda52628ea3f05230bef917b3
- md5: a3926f266064d00a31cb00510ebb031d
+ size: 887139
+ timestamp: 1773243188979
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.6-gpl_hbe7d12b_100.conda
+ sha256: 635a78a04461e82150263ee9a1fbf6c965de0b811a10e87392a1e44be1115a39
+ md5: f2c45cbb67fd0f668a1a0c152b70dc5f
depends:
- bzip2 >=1.0.8,<2.0a0
- libgcc >=14
- - liblzma >=5.8.1,<6.0a0
+ - liblzma >=5.8.2,<6.0a0
- libxml2
- libxml2-16 >=2.14.6
- libzlib >=1.3.1,<2.0a0
- lz4-c >=1.10.0,<1.11.0a0
- lzo >=2.10,<3.0a0
- - openssl >=3.5.4,<4.0a0
+ - openssl >=3.5.5,<4.0a0
- zstd >=1.5.7,<1.6.0a0
license: BSD-2-Clause
license_family: BSD
purls: []
- size: 1002688
- timestamp: 1767630660506
+ size: 1000663
+ timestamp: 1773243230880
- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda
sha256: cb728a2a95557bb6a5184be2b8be83a6f2083000d0c7eff4ad5bbe5792133541
md5: 3b0d184bc9404516d418d4509e418bdc
@@ -9715,31 +9743,31 @@ packages:
purls: []
size: 20670213
timestamp: 1770191273636
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda
- sha256: 8215f7553e2640461c1d9564147db4d0b31169cc31bb65c9db9fd38ccd73146e
- md5: b4277f5a09d458a0306db3147bd0171c
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.0-default_h746c552_0.conda
+ sha256: 4a9dd814492a129f2ff40cd4ab0b942232c9e3c6dbc0d0aaf861f1f65e99cc7d
+ md5: 140459a7413d8f6884eb68205ce39a0d
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- - libllvm21 >=21.1.8,<21.2.0a0
+ - libllvm22 >=22.1.0,<22.2.0a0
- libstdcxx >=14
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
purls: []
- size: 12349894
- timestamp: 1770190719381
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-21.1.8-default_h94a09a5_3.conda
- sha256: 556af269db9fdddcd35dfecaf436b36adb6fe540d516a067d46252ea39fe882a
- md5: d294b96fc51b22e382e5220937c738f4
+ size: 12817500
+ timestamp: 1772101411287
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.0-default_h94a09a5_0.conda
+ sha256: 643c2fb49f91977348cd04589bf4fab3b3e1e096ee42f979255f2ff9749d31a6
+ md5: 4e1023aa62d0919a4014954d57bcb786
depends:
- libgcc >=14
- - libllvm21 >=21.1.8,<21.2.0a0
+ - libllvm22 >=22.1.0,<22.2.0a0
- libstdcxx >=14
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
purls: []
- size: 12117427
- timestamp: 1770191545586
+ size: 12619911
+ timestamp: 1772102257387
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda
sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55
md5: d4a250da4737ee127fb1fa6452a9002e
@@ -10057,51 +10085,51 @@ packages:
purls: []
size: 397272
timestamp: 1764526699497
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda
- sha256: 4641d37faeb97cf8a121efafd6afd040904d4bca8c46798122f417c31d5dfbec
- md5: f4084e4e6577797150f9b04a4560ceb0
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda
+ sha256: 2e1bfe1e856eb707d258f669ef6851af583ceaffab5e64821b503b0f7cd09e9e
+ md5: 26c746d14402a3b6c684d045b23b9437
depends:
- - libfreetype6 >=2.14.1
+ - libfreetype6 >=2.14.2
license: GPL-2.0-only OR FTL
purls: []
- size: 7664
- timestamp: 1757945417134
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.1-h8af1aa0_0.conda
- sha256: 342c07e4be3d09d04b531c889182a11a488e7e9ba4b75f642040e4681c1e9b98
- md5: 1e61fb236ccd3d6ccaf9e91cb2d7e12d
+ size: 8035
+ timestamp: 1772757210108
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.2-h8af1aa0_0.conda
+ sha256: 23cdb94528bb4328b6f7550906dee5080952354445d8bd96241fa7d059c4af95
+ md5: 93bce8dee6a0a4906331db294ec250fe
depends:
- - libfreetype6 >=2.14.1
+ - libfreetype6 >=2.14.2
license: GPL-2.0-only OR FTL
purls: []
- size: 7753
- timestamp: 1757945484817
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda
- sha256: 4a7af818a3179fafb6c91111752954e29d3a2a950259c14a2fc7ba40a8b03652
- md5: 8e7251989bca326a28f4a5ffbd74557a
+ size: 8108
+ timestamp: 1772756012710
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda
+ sha256: aba65b94bdbed52de17ec3d0c6f2ebac2ef77071ad22d6900d1614d0dd702a0c
+ md5: 8eaba3d1a4d7525c6814e861614457fd
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- - libpng >=1.6.50,<1.7.0a0
+ - libpng >=1.6.55,<1.7.0a0
- libzlib >=1.3.1,<2.0a0
constrains:
- - freetype >=2.14.1
+ - freetype >=2.14.2
license: GPL-2.0-only OR FTL
purls: []
- size: 386739
- timestamp: 1757945416744
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.1-hdae7a39_0.conda
- sha256: cedc83d9733363aca353872c3bfed2e188aa7caf57b57842ba0c6d2765652b7c
- md5: 9c2f56b6e011c6d8010ff43b796aab2f
+ size: 386316
+ timestamp: 1772757193822
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.2-hdae7a39_0.conda
+ sha256: a2e9efb033f7519bbc0a54558d7c9bb96252adc22c6e09df2daee7615265fbb1
+ md5: 69d1cdfdabb66464cbde17890e8be3b9
depends:
- libgcc >=14
- - libpng >=1.6.50,<1.7.0a0
+ - libpng >=1.6.55,<1.7.0a0
- libzlib >=1.3.1,<2.0a0
constrains:
- - freetype >=2.14.1
+ - freetype >=2.14.2
license: GPL-2.0-only OR FTL
purls: []
- size: 423210
- timestamp: 1757945484108
+ size: 423372
+ timestamp: 1772756012086
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda
sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5
md5: 0aa00f03f9e39fb9876085dee11a85d4
@@ -10815,21 +10843,6 @@ packages:
purls: []
size: 18397
timestamp: 1765818635115
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.8-hfd2ba90_1.conda
- sha256: 1a5eb7ebccdc23b0e606f9645cf5b436e01f161c80705bfb34d2793a36846b8f
- md5: 36f730da2c88718ea21242a7326292da
- depends:
- - libgcc >=14
- - libstdcxx >=14
- - libxml2
- - libxml2-16 >=2.14.5
- - libzlib >=1.3.1,<2.0a0
- - zstd >=1.5.7,<1.6.0a0
- license: Apache-2.0 WITH LLVM-exception
- license_family: Apache
- purls: []
- size: 42749733
- timestamp: 1757353785740
- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda
sha256: 91bb4f5be1601b40b4995911d785e29387970f0b3c80f33f7f9028f95335399f
md5: 1a2708a460884d6861425b7f9a7bef99
@@ -10861,6 +10874,37 @@ packages:
purls: []
size: 43148553
timestamp: 1765930975162
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.0-hf7376ad_0.conda
+ sha256: 2efe1d8060c6afeb2df037fc61c182fb84e10f49cdbd29ed672e112d4d4ce2d7
+ md5: 213f51bbcce2964ff2ec00d0fdd38541
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 44236214
+ timestamp: 1772009776202
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.0-hfd2ba90_0.conda
+ sha256: 7be3cdc0bf2747e9c590463a540060ab3ae961f44f0aa0b27acb86b37ba47ac4
+ md5: c109137a7e54fde795637863f62485a1
+ depends:
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 43128981
+ timestamp: 1771982780082
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda
sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb
md5: c7c83eecbb72d88b940c249af56c8b17
@@ -11050,25 +11094,25 @@ packages:
purls: []
size: 39449
timestamp: 1609781865660
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda
- sha256: eb130af5be94c7db5e3448c7f254f8e066e62d1b76cd1c6c7c33f3565a55a685
- md5: 20ab6b90150325f1af7ca96bffafde63
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda
+ sha256: 17d72848a6480f0b0708f2b2f64292b5fa0e0996ce56f26fc26e4aebb5a9ca81
+ md5: 672fad24c7fedff73c684c3e9e9848b3
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
license: LGPL-2.1-only
purls: []
- size: 44030
- timestamp: 1749573854077
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-h86ecc28_3.conda
- sha256: 752d7c5681a97f61220081c45983b779d579b40a8815ba9c5da239d4b0239732
- md5: 2d42cf3d018bd9f47ad064e87fc9dd20
+ size: 44408
+ timestamp: 1772779840609
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda
+ sha256: 05bfb59a13fb47176f923715580c9c3c80ee1088fb23c6344d215a834066e286
+ md5: 8a7f1c9ecae8c8b8b05d7b90b3f160bf
depends:
- - libgcc >=13
+ - libgcc >=14
license: LGPL-2.1-only
purls: []
- size: 47464
- timestamp: 1749575391929
+ size: 47706
+ timestamp: 1772781596087
- conda: https://conda.anaconda.org/conda-forge/linux-64/libode-0.16.6-he3147e3_0.conda
sha256: 9a81f24cbbf3d2e4ce3a6364be6a30b51d35e21af8162b84420b83c501017d8b
md5: 15ffb39dd5700bd3272e056356e2864f
@@ -11877,48 +11921,48 @@ packages:
purls: []
size: 177394
timestamp: 1716828514515
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-h0c1763c_0.conda
- sha256: c1ff4589b48d32ca0a2628970d869fa9f7b2c2d00269a3761edc7e9e4c1ab7b8
- md5: f7d30045eccb83f2bb8053041f42db3c
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-h0c1763c_0.conda
+ sha256: 1daeb5187efcdbe3bdf2dc66f1161e09cb8dfd01618015d2106feae13cf3390d
+ md5: a7bda2babcbb004443cb1c0be9a8c353
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: blessing
purls: []
- size: 939312
- timestamp: 1768147967568
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda
- sha256: 04596fcee262a870e4b7c9807224680ff48d4d0cc0dac076a602503d3dc6d217
- md5: da5be73701eecd0e8454423fd6ffcf30
+ size: 949843
+ timestamp: 1772818873928
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda
+ sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993
+ md5: fd893f6a3002a635b5e50ceb9dd2c0f4
depends:
- __glibc >=2.17,<3.0.a0
- icu >=78.2,<79.0a0
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: blessing
- size: 942808
- timestamp: 1768147973361
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.51.2-h022381a_0.conda
- sha256: 22d51ca175abb6792bb31a67c8d13d55de04a1140500fb82629f6fb77e1d28df
- md5: b864d0a93e2ab2ac21175984fdeb299e
+ size: 951405
+ timestamp: 1772818874251
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h022381a_0.conda
+ sha256: 69d3c370a6e21a362765988f9693efdfa7864498120a223b1f91101f4fb2628a
+ md5: 8e3ccd7bd0e0369fd743c5eec6ce849c
depends:
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: blessing
purls: []
- size: 938753
- timestamp: 1768147976144
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.51.2-h10b116e_0.conda
- sha256: 5f8230ccaf9ffaab369adc894ef530699e96111dac0a8ff9b735a871f8ba8f8b
- md5: 4e3ba0d5d192f99217b85f07a0761e64
+ size: 951337
+ timestamp: 1772818878412
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda
+ sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6
+ md5: 77891484f18eca74b8ad83694da9815e
depends:
- icu >=78.2,<79.0a0
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: blessing
- size: 944688
- timestamp: 1768147991301
+ size: 952296
+ timestamp: 1772818881550
- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661
md5: eecce068c7e4eddeb169591baac20ac4
@@ -12517,21 +12561,21 @@ packages:
purls: []
size: 45283
timestamp: 1761015644057
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda
- sha256: 047be059033c394bd32ae5de66ce389824352120b3a7c0eff980195f7ed80357
- md5: 417955234eccd8f252b86a265ccdab7f
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda
+ sha256: 275c324f87bda1a3b67d2f4fcc3555eeff9e228a37655aa001284a7ceb6b0392
+ md5: e49238a1609f9a4a844b09d9926f2c3d
depends:
- __glibc >=2.17,<3.0.a0
- - icu >=78.1,<79.0a0
+ - icu >=78.2,<79.0a0
- libgcc >=14
- libiconv >=1.18,<2.0a0
- - liblzma >=5.8.1,<6.0a0
- - libxml2-16 2.15.1 hca6bf5a_1
+ - liblzma >=5.8.2,<6.0a0
+ - libxml2-16 2.15.2 hca6bf5a_0
- libzlib >=1.3.1,<2.0a0
license: MIT
license_family: MIT
- size: 45402
- timestamp: 1766327161688
+ size: 45968
+ timestamp: 1772704614539
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.1-h788dabe_0.conda
sha256: db0a568e0853ee38b7a4db1cb4ee76e57fe7c32ccb1d5b75f6618a1041d3c6e4
md5: a0e7779b7625b88e37df9bd73f0638dc
@@ -12547,20 +12591,20 @@ packages:
purls: []
size: 47192
timestamp: 1761015739999
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.1-h825857f_1.conda
- sha256: 9fe997c3e5a8207161d093a5d73f586ae46dc319cb054220086395e150dd1469
- md5: eb4665cdf78fd02d4abc4edf8c15b7b9
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.2-h825857f_0.conda
+ sha256: 3e51e1952cb60c8107094b6b78473d91ff49d428ad4bef6806124b383e8fe29c
+ md5: 19de96909ee1198e2853acd8aba89f6c
depends:
- - icu >=78.1,<79.0a0
+ - icu >=78.2,<79.0a0
- libgcc >=14
- libiconv >=1.18,<2.0a0
- - liblzma >=5.8.1,<6.0a0
- - libxml2-16 2.15.1 h79dcc73_1
+ - liblzma >=5.8.2,<6.0a0
+ - libxml2-16 2.15.2 h79dcc73_0
- libzlib >=1.3.1,<2.0a0
license: MIT
license_family: MIT
- size: 47725
- timestamp: 1766327143205
+ size: 47837
+ timestamp: 1772704681112
- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda
sha256: 71436e72a286ef8b57d6f4287626ff91991eb03c7bdbe835280521791efd1434
md5: e7733bc6785ec009e47a224a71917e84
@@ -12578,37 +12622,22 @@ packages:
purls: []
size: 556302
timestamp: 1761015637262
-- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda
- sha256: 8331284bf9ae641b70cdc0e5866502dd80055fc3b9350979c74bb1d192e8e09e
- md5: 3fdd8d99683da9fe279c2f4cecd1e048
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda
+ sha256: 08d2b34b49bec9613784f868209bb7c3bb8840d6cf835ff692e036b09745188c
+ md5: f3bc152cb4f86babe30f3a4bf0dbef69
depends:
- __glibc >=2.17,<3.0.a0
- - icu >=78.1,<79.0a0
- - libgcc >=14
- - libiconv >=1.18,<2.0a0
- - liblzma >=5.8.1,<6.0a0
- - libzlib >=1.3.1,<2.0a0
- constrains:
- - libxml2 2.15.1
- license: MIT
- license_family: MIT
- size: 555747
- timestamp: 1766327145986
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.1-h79dcc73_1.conda
- sha256: c76951407554d69dd348151f91cc2dc164efbd679b4f4e77deb2f9aa6eba3c12
- md5: e42758e7b065c34fd1b0e5143752f970
- depends:
- - icu >=78.1,<79.0a0
+ - icu >=78.2,<79.0a0
- libgcc >=14
- libiconv >=1.18,<2.0a0
- - liblzma >=5.8.1,<6.0a0
+ - liblzma >=5.8.2,<6.0a0
- libzlib >=1.3.1,<2.0a0
constrains:
- - libxml2 2.15.1
+ - libxml2 2.15.2
license: MIT
license_family: MIT
- size: 599721
- timestamp: 1766327134458
+ size: 557492
+ timestamp: 1772704601644
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.1-h8591a01_0.conda
sha256: 7a13450bce2eeba8f8fb691868b79bf0891377b707493a527bd930d64d9b98af
md5: e7177c6fbbf815da7b215b4cc3e70208
@@ -12625,6 +12654,21 @@ packages:
purls: []
size: 597078
timestamp: 1761015734476
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.2-h79dcc73_0.conda
+ sha256: da6b2ebbcecc158200d90be39514e4e902971628029b35b7f6ad57270659c5d9
+ md5: e3ec9079759d35b875097d6a9a69e744
+ depends:
+ - icu >=78.2,<79.0a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ constrains:
+ - libxml2 2.15.2
+ license: MIT
+ license_family: MIT
+ size: 598438
+ timestamp: 1772704671710
- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda
sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5
md5: 87e6096ec6d542d1c1f8b33245fe8300
@@ -12868,23 +12912,27 @@ packages:
purls: []
size: 528318
timestamp: 1727801707353
-- pypi: https://files.pythonhosted.org/packages/f3/5f/93b3e3607ccd693a768eafee60829cd14ea1810b75aa48e8b20e27b332c4/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
+- pypi: https://files.pythonhosted.org/packages/15/c2/3842d8e39006b5b03384418b55108a3f3931ac6fe9b998814be81267acec/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
name: marisa-trie
- version: 1.3.1
- sha256: 99a00cab4cf9643a87977c87a5c8961aa44fff8d5dd46e00250135f686e7dedf
+ version: 1.4.0
+ sha256: 20bc1a6936ba13b6b69684df2e41592f39f700f478e62453bb07fcfbefe1aa30
requires_dist:
- hypothesis ; extra == 'test'
- pytest ; extra == 'test'
- readme-renderer ; extra == 'test'
+ - pytest-run-parallel ; python_full_version >= '3.13' and extra == 'test'
+ - hypothesis>=6.136.9 ; python_full_version >= '3.13' and extra == 'test'
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/fe/98/88ca0c98d37034a3237acaf461d210cbcfeb6687929e5ba0e354971fa3ed/marisa_trie-1.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
+- pypi: https://files.pythonhosted.org/packages/a8/a2/1e0f0665a98968b0af7067cf2dad569e1bd8c1f13a97670b74b5ac5153d9/marisa_trie-1.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
name: marisa-trie
- version: 1.3.1
- sha256: 9688c7b45f744366a4ef661e399f24636ebe440d315ab35d768676c59c613186
+ version: 1.4.0
+ sha256: fc11658ff7eb5888e7a2bd5c9a98f73a2e03dbf252f844032d7181627e59017b
requires_dist:
- hypothesis ; extra == 'test'
- pytest ; extra == 'test'
- readme-renderer ; extra == 'test'
+ - pytest-run-parallel ; python_full_version >= '3.13' and extra == 'test'
+ - hypothesis>=6.136.9 ; python_full_version >= '3.13' and extra == 'test'
requires_python: '>=3.9'
- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e
@@ -12898,9 +12946,9 @@ packages:
- pkg:pypi/markdown-it-py?source=hash-mapping
size: 64736
timestamp: 1754951288511
-- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda
- sha256: f77f9f1a4da45cbc8792d16b41b6f169f649651a68afdc10b2da9da12b9aa42b
- md5: f775a43412f7f3d7ed218113ad233869
+- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
+ sha256: 5f3aad1f3a685ed0b591faad335957dbdb1b73abfd6fc731a0d42718e0653b33
+ md5: 93a4752d42b12943a355b682ee43285b
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
@@ -12912,11 +12960,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/markupsafe?source=hash-mapping
- size: 25321
- timestamp: 1759055268795
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_0.conda
- sha256: f35cf61ae7fbb3ed0529f000b4bc9999ac0bed8803654ed2db889a394d9853c2
- md5: d4e5ac7000bdc398b3cfba57f01e7e63
+ size: 26057
+ timestamp: 1772445297924
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda
+ sha256: 5919bf53e9f74ee1c6ce35ce13a7cd92741d45385c2d0b3eae48b01c0f11f41a
+ md5: 1fecdd103b37427ba6041b9b03d657ea
depends:
- libgcc >=14
- python >=3.12,<3.13.0a0
@@ -12926,9 +12974,9 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/markupsafe?source=hash-mapping
- size: 25943
- timestamp: 1759056553164
+ - pkg:pypi/markupsafe?source=compressed-mapping
+ size: 26305
+ timestamp: 1772446326927
- pypi: https://files.pythonhosted.org/packages/be/2f/5108cb3ee4ba6501748c4908b908e55f42a5b66245b4cfe0c99326e1ef6e/marshmallow-3.26.2-py3-none-any.whl
name: marshmallow
version: 3.26.2
@@ -13069,29 +13117,49 @@ packages:
- pkg:pypi/mdurl?source=hash-mapping
size: 14465
timestamp: 1733255681319
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.0.5-h0ca1d6e_2.conda
- sha256: 9c8c2e9cbbc0035742626f598342e71b9f23e40d0e01ef49e36be4283b0c6b61
- md5: b30afa10c465f89601390bb243aab0ed
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-25.3.5-h8cca3c9_0.conda
+ sha256: 7c108069febb3224c7d36b35a5edc754a1811327c097eb12cef4fb23ccf2ef65
+ md5: a3f29f4ad0b41ba53ab492678d6ea092
depends:
- - libdrm >=2.4.125,<2.5.0a0
- - libexpat >=2.7.1,<3.0a0
+ - __glibc >=2.17,<3.0.a0
- libgcc >=14
- - libllvm20 >=20.1.8,<20.2.0a0
- libstdcxx >=14
- - libxcb >=1.17.0,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - spirv-tools >=2025,<2026.0a0
+ - libexpat >=2.7.3,<3.0a0
- xorg-libx11 >=1.8.12,<2.0a0
- - xorg-libxrandr >=1.5.4,<2.0a0
+ - libllvm21 >=21.1.8,<21.2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - spirv-tools >=2026,<2027.0a0
+ - xorg-libxrandr >=1.5.5,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
- xorg-libxshmfence >=1.3.3,<2.0a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 2887201
+ timestamp: 1770434574590
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-25.3.5-h455aa48_0.conda
+ sha256: d5afdcb15537ad1c24d622ddd6760b0a0341080b5c632088334a60c01763eeba
+ md5: ed2f43aa4b07b63d7a8b79b00a109c2b
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - xorg-libxrandr >=1.5.5,<2.0a0
- zstd >=1.5.7,<1.6.0a0
- track_features:
- - mesalib
+ - xorg-libxshmfence >=1.3.3,<2.0a0
+ - libexpat >=2.7.3,<3.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - spirv-tools >=2026,<2027.0a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - libllvm21 >=21.1.8,<21.2.0a0
+ - libxcb >=1.17.0,<2.0a0
license: MIT
license_family: MIT
purls: []
- size: 6100696
- timestamp: 1755729867981
+ size: 2825639
+ timestamp: 1770434558040
- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200
md5: c7f302fd11eeb0987a6a5e1f3aed6a21
@@ -13169,7 +13237,7 @@ packages:
license: Apache-2.0
license_family: APACHE
purls:
- - pkg:pypi/multidict?source=compressed-mapping
+ - pkg:pypi/multidict?source=hash-mapping
size: 100056
timestamp: 1771611023053
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda
@@ -13183,7 +13251,7 @@ packages:
license: Apache-2.0
license_family: APACHE
purls:
- - pkg:pypi/multidict?source=compressed-mapping
+ - pkg:pypi/multidict?source=hash-mapping
size: 102146
timestamp: 1771610849986
- conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
@@ -13613,10 +13681,10 @@ packages:
purls: []
size: 3051975
timestamp: 1761048310669
-- pypi: https://files.pythonhosted.org/packages/01/8a/e2d4332ae18d6383376e75141cd914256bee12c3cc439f42260eb176ceb9/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
+- pypi: https://files.pythonhosted.org/packages/1c/dc/1f5489f7b21817d4ad352bf7a92a252bd5b438bcbaa7ad20ea50814edc79/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
name: onnxruntime
- version: 1.24.2
- sha256: 76c44fc9a89dcefcd5a4ab5c6bbbb9ff1604325ab2d5d0bc9ff5a9cba7b37f4a
+ version: 1.24.3
+ sha256: 0a9847b870b6cb462652b547bc98c49e0efb67553410a082fde1918a38707452
requires_dist:
- flatbuffers
- numpy>=1.21.6
@@ -13624,10 +13692,10 @@ packages:
- protobuf
- sympy
requires_python: '>=3.10'
-- pypi: https://files.pythonhosted.org/packages/35/af/ad86cfbfd65d5a86204b3a30893e92c0cf3f1a56280efc5a12e69d81f52d/onnxruntime-1.24.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
+- pypi: https://files.pythonhosted.org/packages/28/7c/fd253da53594ab8efbefdc85b3638620ab1a6aab6eb7028a513c853559ce/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
name: onnxruntime
- version: 1.24.2
- sha256: 09aa6f8d766b4afc3cfba68dd10be39586b49f9462fbd1386c5d5644239461ca
+ version: 1.24.3
+ sha256: b354afce3333f2859c7e8706d84b6c552beac39233bcd3141ce7ab77b4cabb5d
requires_dist:
- flatbuffers
- numpy>=1.21.6
@@ -13684,37 +13752,37 @@ packages:
purls: []
size: 27887
timestamp: 1766496259667
-- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.5-h40f6f1d_0.conda
- sha256: b7810f5e93e6ae7e82fa7d4d7069cd17f4d79751d67788a44417f2a43cab2735
- md5: add0b275bf1abebb23924be0c54631eb
+- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.6-h40f6f1d_0.conda
+ sha256: c733f18e2896920eddbd26aba28fd16dae5b25f272ede436672ad0ceb60e8603
+ md5: 0a5f140bdbc5f7ab45568a0bc3431362
depends:
- libstdcxx >=14
- libgcc >=14
- __glibc >=2.17,<3.0.a0
- - imath >=3.2.2,<3.2.3.0a0
- - libdeflate >=1.25,<1.26.0a0
- - libzlib >=1.3.1,<2.0a0
- openjph >=0.26.3,<0.27.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - libdeflate >=1.25,<1.26.0a0
+ - imath >=3.2.2,<3.2.3.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 1217782
- timestamp: 1771861766485
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.5-hd0c962a_0.conda
- sha256: 7af76459df8f0560f5b6caf697c790c3fc7bf9af605784a161909ef53ec915e8
- md5: 24f9f24bbbd1659f3c7d5a68aadcaeb2
+ size: 1217961
+ timestamp: 1772443688420
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.6-hd0c962a_0.conda
+ sha256: 049c3884af3f770d60e348abf253cf5d41d174d9068ee583b590122aa9ff0d84
+ md5: 4e67c6e32982faacff191606815bb836
depends:
- libstdcxx >=14
- libgcc >=14
- imath >=3.2.2,<3.2.3.0a0
- openjph >=0.26.3,<0.27.0a0
- - libzlib >=1.3.1,<2.0a0
- libdeflate >=1.25,<1.26.0a0
+ - libzlib >=1.3.1,<2.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 1176180
- timestamp: 1771861734406
+ size: 1176095
+ timestamp: 1772443692126
- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747
md5: b28cf020fd2dead0ca6d113608683842
@@ -14175,7 +14243,7 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/parso?source=hash-mapping
+ - pkg:pypi/parso?source=compressed-mapping
size: 82287
timestamp: 1770676243987
- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda
@@ -14426,9 +14494,9 @@ packages:
purls: []
size: 54834
timestamp: 1720806008171
-- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda
- sha256: 7f263219cecf0ba6d74c751efa60c4676ce823157ca90aa43ebba5ac615ca0fa
- md5: 4fefefb892ce9cc1539405bec2f1a6cd
+- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda
+ sha256: 0289f0a38337ee201d984f8f31f11f6ef076cfbbfd0ab9181d12d9d1d099bf46
+ md5: 82c1787f2a65c0155ef9652466ee98d6
depends:
- python >=3.10
- python
@@ -14436,8 +14504,8 @@ packages:
license_family: MIT
purls:
- pkg:pypi/platformdirs?source=compressed-mapping
- size: 25643
- timestamp: 1771233827084
+ size: 25646
+ timestamp: 1773199142345
- conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda
sha256: 0adc0f2657a349d3dc27da112362dd293aecedb0ae99515c309597bf833a235c
md5: 99249c0d0b9b9663c59337873b16ac63
@@ -14817,7 +14885,7 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/pybind11-global?source=compressed-mapping
+ - pkg:pypi/pybind11-global?source=hash-mapping
size: 241244
timestamp: 1771365839659
- conda: https://conda.anaconda.org/conda-forge/linux-64/pybullet-3.25-py312hf49885f_5.conda
@@ -15031,7 +15099,7 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pyparsing?source=hash-mapping
+ - pkg:pypi/pyparsing?source=compressed-mapping
size: 110893
timestamp: 1769003998136
- conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.11-py312h82c0db2_2.conda
@@ -15368,6 +15436,20 @@ packages:
- pkg:pypi/python-dateutil?source=hash-mapping
size: 233310
timestamp: 1751104122689
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.1.3-pyhcf101f3_0.conda
+ sha256: 36429765f626c345710fbae14aeeda676c1745427667eb480bb855b7089affba
+ md5: 69fc0a99fc21b26b81026c72e00f83df
+ depends:
+ - python >=3.10
+ - filelock >=3.15.4
+ - platformdirs <5,>=4.3.6
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/python-discovery?source=compressed-mapping
+ size: 33996
+ timestamp: 1773161039118
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda
sha256: 41a3f2541952ee521c867ada76da02a43a919beeb46da8fee99284d161273a50
md5: e2cc29a3786c42455a70263a8bf6813e
@@ -15379,7 +15461,7 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/librt?source=compressed-mapping
+ - pkg:pypi/librt?source=hash-mapping
size: 77475
timestamp: 1771423012370
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py312hd41f8a7_0.conda
@@ -15450,17 +15532,10 @@ packages:
- pyobjc>=2.4 ; sys_platform == 'darwin'
- pypiwin32 ; sys_platform == 'win32'
- pywin32 ; sys_platform == 'win32'
-- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
- sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0
- md5: bc8e3267d44011051f2eb14d22fb0960
- depends:
- - python >=3.9
- license: MIT
- license_family: MIT
- purls:
- - pkg:pypi/pytz?source=hash-mapping
- size: 189015
- timestamp: 1742920947249
+- pypi: https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl
+ name: pytz
+ version: 2026.1.post1
+ sha256: f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a
- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
sha256: cb142bfd92f6e55749365ddc244294fa7b64db6d08c45b018ff1c658907bfcbf
md5: 15878599a87992e44c059731771591cb
@@ -15839,15 +15914,15 @@ packages:
md5: 1b712720f0094de41b1d0482f117f66d
size: 1075
timestamp: 1771970041027
-- pypi: https://files.pythonhosted.org/packages/59/3c/ea5a4687adaba5e125b9bd6190153d0037325a0ba3757cc1537cc2c8dd90/regex-2026.2.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+- pypi: https://files.pythonhosted.org/packages/9e/40/bb226f203caa22c1043c1ca79b36340156eca0f6a6742b46c3bb222a3a57/regex-2026.2.28-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
name: regex
- version: 2026.2.19
- sha256: 75472631eee7898e16a8a20998d15106cb31cfde21cdf96ab40b432a7082af06
+ version: 2026.2.28
+ sha256: d6b08a06976ff4fb0d83077022fde3eca06c55432bb997d8c0495b9a4e9872f4
requires_python: '>=3.10'
-- pypi: https://files.pythonhosted.org/packages/f3/d0/b7dd3883ed1cff8ee0c0c9462d828aaf12be63bf5dc55453cbf423523b13/regex-2026.2.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
+- pypi: https://files.pythonhosted.org/packages/dd/c9/8cc8d850b35ab5650ff6756a1cb85286e2000b66c97520b29c1587455344/regex-2026.2.28-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
name: regex
- version: 2026.2.19
- sha256: 03d706fbe7dfec503c8c3cb76f9352b3e3b53b623672aa49f18a251a6c71b8e6
+ version: 2026.2.28
+ sha256: e71dcecaa113eebcc96622c17692672c2d104b1d71ddf7adeda90da7ddeb26fc
requires_python: '>=3.10'
- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda
sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5
@@ -34485,15 +34560,15 @@ packages:
- pkg:pypi/setuptools?source=hash-mapping
size: 462324
timestamp: 1692383535614
-- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda
- sha256: fd7201e38e38bf7f25818d624ca8da97b8998957ca9ae3fb7fdc9c17e6b25fcd
- md5: 1d00d46c634177fc8ede8b99d6089239
+- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda
+ sha256: 82088a6e4daa33329a30bc26dc19a98c7c1d3f05c0f73ce9845d4eab4924e9e1
+ md5: 8e194e7b992f99a5015edbd4ebd38efd
depends:
- python >=3.10
license: MIT
license_family: MIT
- size: 637506
- timestamp: 1770634745653
+ size: 639697
+ timestamp: 1773074868565
- conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2025.5-h718be3e_1.conda
sha256: 0c2d6f24ee2b614ee1da4d7d99cc9944ea1ace65455a47d48d8c1f726317168a
md5: 8dc8dda113c4c568256bdd486b6e842e
@@ -34508,19 +34583,19 @@ packages:
purls: []
size: 113513
timestamp: 1770208767759
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-h8c88b8f_0.conda
- sha256: a8d6b35ecae1d9605e7944b6b5562b5d857355cc7be493b13fee550f7169fb40
- md5: 3a720e8647ebfff1322d81beb8a8be95
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda
+ sha256: bf3f47847832e33acbcb7a1aba948f3b574979ad2a91f2ebdc9fc685c09433db
+ md5: 8268bdcd82d8f9abcb7f0fd6a9568ba4
depends:
- glslang >=16,<17.0a0
- libgcc >=14
- libstdcxx >=14
- - spirv-tools >=2025,<2026.0a0
+ - spirv-tools >=2026,<2027.0a0
license: Apache-2.0
license_family: Apache
purls: []
- size: 115395
- timestamp: 1764287938541
+ size: 115498
+ timestamp: 1770208786806
- conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda
sha256: 19d1dab079746de0c38581d926e02306368b74d0683cd3e6b18ccabea54c7e07
md5: 00cdd2e3ec6d3be6bc2b7d46470a10a1
@@ -34551,9 +34626,9 @@ packages:
- pkg:pypi/sip?source=hash-mapping
size: 680892
timestamp: 1759437964748
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.0-py312hfcd9f9b_0.conda
- sha256: 075343fecb7377d266cf8de0c222c3990108adb794120aa4dff340f88f5801db
- md5: 5c35c3d8c5aeda2af6a3f28bd3d44057
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.2-py312hfcd9f9b_0.conda
+ sha256: c08306703fd62ed68c21f1d8a7e1e7026ddd3ba6d904aee1c6b2a416d667a038
+ md5: 56a35789823c7073cced902103f856c6
depends:
- libgcc >=14
- libstdcxx >=14
@@ -34567,8 +34642,8 @@ packages:
license_family: BSD
purls:
- pkg:pypi/sip?source=hash-mapping
- size: 724152
- timestamp: 1765032349484
+ size: 735337
+ timestamp: 1773072698070
- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d
md5: 3339e3b65d58accf4ca4fb8748ab16b3
@@ -34625,7 +34700,7 @@ packages:
license: Apache-2.0
license_family: Apache
purls:
- - pkg:pypi/sniffio?source=hash-mapping
+ - pkg:pypi/sniffio?source=compressed-mapping
size: 15698
timestamp: 1762941572482
- conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
@@ -34818,19 +34893,19 @@ packages:
purls: []
size: 2296977
timestamp: 1770089626195
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2025.5-hfefdfc9_0.conda
- sha256: 1405f03c947115f8dbec0f95dbbf6f9df0ea05680389bdb41733493da3b0f0b9
- md5: 57618236eb1718afeff0345e7ff25bda
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.1-hfefdfc9_0.conda
+ sha256: 841a7df4b73a13a148410e677b1bf07ed81bd181cc686278d64d65e033f4a06a
+ md5: ad8208c6618a543687d754dc57876091
depends:
- libgcc >=14
- libstdcxx >=14
constrains:
- - spirv-headers >=1.4.335.0,<1.4.335.1.0a0
+ - spirv-headers >=1.4.341.0,<1.4.341.1.0a0
license: Apache-2.0
license_family: APACHE
purls: []
- size: 2559644
- timestamp: 1769406140602
+ size: 2255599
+ timestamp: 1770089690097
- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.32.3-hcee41ef_1.tar.bz2
sha256: 92b004539613e6093bb5b126b0267031c039e01cf828fc404507adfec1670470
md5: eba59aaa700c4787661b55a8aa3541a7
@@ -35384,55 +35459,63 @@ packages:
purls: []
size: 14197
timestamp: 1767012435525
-- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.39.0-pyhcf101f3_0.conda
- sha256: de93eed364f14f08f78ff41994dfe22ff018521c4702e432630d10c0eb0eff6b
- md5: e73db224203e56b25e040446fa1584db
+- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda
+ sha256: b83246d145ba0e6814d2ed0b616293e56924e6c7d6649101f5a4f97f9e757ed1
+ md5: 704c22301912f7e37d0a92b2e7d5942d
depends:
- python >=3.10
- distlib >=0.3.7,<1
+ - filelock <4,>=3.24.2
+ - importlib-metadata >=6.6
- platformdirs >=3.9.1,<5
+ - python-discovery >=1
- typing_extensions >=4.13.2
- - importlib-metadata >=6.6
- - filelock >=3.24.2,<4
- python
license: MIT
+ license_family: MIT
purls:
- pkg:pypi/virtualenv?source=compressed-mapping
- size: 4657721
- timestamp: 1771967166128
-- conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.0.0-hc0f0d8f_1.conda
- sha256: 534164cb8b5e37671962c55b4323d22bcc5986f29a19aee9578730c4171b4ca0
- md5: 8c6efaa4095e9304c609bf7a5e0b3905
+ size: 4647775
+ timestamp: 1773133660203
+- conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.0-cpu_hc82bd48_.conda
+ build_number: 3
+ sha256: 5794f9182f199ec834c7e60e8d972a14e7732e93d7a81073e1f64af59df1c3a8
+ md5: a560c1c6ba2cd9b7b6994c26b0bc32f3
depends:
- - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
- _openmp_mutex >=4.5
+ - libstdcxx >=14
+ - __glibc >=2.17,<3.0.a0
- hdf5 >=1.14.6,<1.14.7.0a0
- - libgcc >=13
- - libstdcxx >=13
+ - mesalib >=25.3.5,<25.4.0a0
+ - glew >=2.3.0,<2.4.0a0
+ - zfp >=1.0.1,<2.0a0
+ track_features:
+ - viskores-p-0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16513879
- timestamp: 1745949674261
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hc7513a2_.conda
+ size: 25058145
+ timestamp: 1772772304007
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.0-cpu_hb695247_.conda
build_number: 3
- sha256: 8d498c85d0110fd61a45b606d0a7db9006dfa22a733e188471327df1e05a8948
- md5: 2a65455f2ecc00382f7027b4580640aa
+ sha256: 93517965be4e1798f8700a207ed41124ebab593e81cc383ba3ea7588a24933b4
+ md5: 75c3b414927044e57e705460be12b269
depends:
- - _openmp_mutex >=4.5
- libstdcxx >=14
- libgcc >=14
- - mesalib >=25.0.5,<25.1.0a0
- - hdf5 >=1.14.6,<1.14.7.0a0
+ - _openmp_mutex >=4.5
+ - mesalib >=25.3.5,<25.4.0a0
- glew >=2.3.0,<2.4.0a0
- zfp >=1.0.1,<2.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
track_features:
- viskores-p-0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 22928982
- timestamp: 1766777752684
+ size: 22928990
+ timestamp: 1772771310357
- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda
sha256: 30f056623ebb1c460e03e9ba597d4e7cb0edf177f08ad6f11bda4e7e7aa72fc4
md5: 39f83887a40f72e2ddba78e661519900
@@ -35471,9 +35554,9 @@ packages:
purls: []
size: 25478
timestamp: 1768718080474
-- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_6.conda
- sha256: f719d6395bc75f3e50913aad550f8c4a21392780321a805f9f0e194a6d994fec
- md5: 24f269a608a9032faf6a1bcaea8d9e21
+- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda
+ sha256: 41b5dc84636ba8b2ca9e1c7b58633a2e62e6530dcb86a7f12ecf02c5c563d163
+ md5: 2edca3790f2a372db44ff1aa159769fc
depends:
- python
- utfcpp
@@ -35483,49 +35566,49 @@ packages:
- numpy
- wslink
- matplotlib-base >=2.0.0
+ - __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
- - __glibc >=2.17,<3.0.a0
- - lz4-c >=1.10.0,<1.11.0a0
- - qt6-main >=6.10.1,<6.11.0a0
- - libsqlite >=3.51.1,<4.0a0
- - libglx >=1.7.0,<2.0a0
+ - gl2ps >=1.4.2,<1.4.3.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - jsoncpp >=1.9.6,<1.9.7.0a0
- fmt >=12.1.0,<12.2.0a0
- - xorg-libx11 >=1.8.12,<2.0a0
- - libfreetype >=2.14.1
- - libfreetype6 >=2.14.1
- libjpeg-turbo >=3.1.2,<4.0a0
- - hdf5 >=1.14.6,<1.14.7.0a0
- - proj >=9.7.1,<9.8.0a0
- libopengl >=1.7.0,<2.0a0
- - libnetcdf >=4.9.3,<4.9.4.0a0
- - libglu >=9.0.3,<9.1.0a0
- - libpng >=1.6.53,<1.7.0a0
- libogg >=1.3.5,<1.4.0a0
- - jsoncpp >=1.9.6,<1.9.7.0a0
- - libglvnd >=1.7.0,<2.0a0
+ - proj >=9.7.1,<9.8.0a0
+ - qt6-main >=6.10.1,<6.11.0a0
- python_abi 3.12.* *_cp312
- - tbb >=2022.3.0
- libxml2
- libxml2-16 >=2.14.6
+ - libexpat >=2.7.3,<3.0a0
- xorg-libxcursor >=1.2.3,<2.0a0
+ - libpng >=1.6.54,<1.7.0a0
+ - libnetcdf >=4.9.3,<4.9.4.0a0
+ - libtheora >=1.1.1,<1.2.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
- libzlib >=1.3.1,<2.0a0
+ - viskores >=1.1.0,<1.2.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libglvnd >=1.7.0,<2.0a0
- double-conversion >=3.4.0,<3.5.0a0
- - libtiff >=4.7.1,<4.8.0a0
- - gl2ps >=1.4.2,<1.4.3.0a0
- - libexpat >=2.7.3,<3.0a0
- - liblzma >=5.8.1,<6.0a0
- pugixml >=1.15,<1.16.0a0
- - libtheora >=1.1.1,<1.2.0a0
- - viskores >=1.0.0,<1.1.0a0
+ - libglx >=1.7.0,<2.0a0
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libglu >=9.0.3,<9.1.0a0
+ - libsqlite >=3.51.2,<4.0a0
+ - tbb >=2022.3.0
constrains:
- libboost-headers >=1.88.0,<1.89.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/vtk?source=hash-mapping
- size: 68885287
- timestamp: 1767724868097
+ size: 68877621
+ timestamp: 1768718074241
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda
sha256: 1a037be116a1f59b9be87eb044e34706ed892f31431fce4088d8f88f4bf6086e
md5: 28f2d99155e7efc5b9c4346095c9e1c6
@@ -35581,19 +35664,19 @@ packages:
- pkg:pypi/vtk?source=hash-mapping
size: 64690746
timestamp: 1768718080472
-- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312h8da9809_6.conda
- sha256: cd33522db5736b4c94b5006124028d9c5250f041ef175b7428d189f9a17c4936
- md5: ea7bf2efe8bc5325094d17ad14288f00
+- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda
+ sha256: eb3c073853a7483b62a945cd24694b66ec76df8568e6f6c8743acd487388056b
+ md5: 91396193530de78d6a3579f779dc472d
depends:
- - vtk-base ==9.5.2 py312h6fba518_6
+ - vtk-base ==9.5.2 py312h6fba518_7
- ffmpeg
- ffmpeg >=8.0.1,<9.0a0
- python_abi 3.12.* *_cp312
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 108372
- timestamp: 1767724868098
+ size: 108379
+ timestamp: 1768718074243
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda
sha256: b160385fe40160cdef7704daab3ea8946a4c15836ea77fcd1cedcd8afa8e87f5
md5: d2cf62a6a54db8d70f0683f3aefacc2a
@@ -35684,9 +35767,9 @@ packages:
- pkg:pypi/werkzeug?source=compressed-mapping
size: 257130
timestamp: 1771530143814
-- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.1-py312h4c3975b_0.conda
- sha256: 450743011cc1a3a557c3f7c0b65e0de8e3a5474261b05a2209273455f392fff1
- md5: 8d156d9c38ef7af6eded19dddb71b543
+- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ sha256: 5bf21e14a364018a36869a16d9f706fb662c6cb6da3066100ba6822a70f93d2d
+ md5: 7f2ef073d94036f8b16b6ee7d3562a88
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
@@ -35696,11 +35779,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/wrapt?source=hash-mapping
- size: 87294
- timestamp: 1770112026776
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.1-py312hcd1a082_0.conda
- sha256: b23c404060d8976054dbc3b56c77ef158d117d36578fd4b37064b5945c9527e7
- md5: bb45341c4cda3ca0f04d7b18508bfd8d
+ size: 87514
+ timestamp: 1772794814485
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py312hcd1a082_0.conda
+ sha256: 7771d343ecafe1cab14291a17f4331e9e5680bd72d4b51d5aa44d0674eb2a185
+ md5: fb36661901c6da45fd7296fca1cfc48a
depends:
- libgcc >=14
- python >=3.12,<3.13.0a0
@@ -35710,21 +35793,20 @@ packages:
license_family: BSD
purls:
- pkg:pypi/wrapt?source=hash-mapping
- size: 87879
- timestamp: 1770112070859
-- conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.0-pyhd8ed1ab_0.conda
- sha256: e9ac3caa3b17bed9bc301a67d3950f84fa37fb34002d2878c46cafb87978401d
- md5: 8fa415e696acd9af59ce0a4425fd1b38
+ size: 87781
+ timestamp: 1772794847949
+- conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ sha256: 0754558be231485ee835b0db11bace246ecd5465143a355029b039803ea716b0
+ md5: d34454e27bb9ec7025cefccfa92908ad
depends:
- aiohttp <4
- msgpack-python >=1,<2
- python >=3.10
license: BSD-3-Clause
- license_family: BSD
purls:
- - pkg:pypi/wslink?source=hash-mapping
- size: 35839
- timestamp: 1760984848678
+ - pkg:pypi/wslink?source=compressed-mapping
+ size: 36729
+ timestamp: 1773305846931
- pypi: https://files.pythonhosted.org/packages/a4/f5/10b68b7b1544245097b2a1b8238f66f2fc6dcaeb24ba5d917f52bd2eed4f/wsproto-1.3.2-py3-none-any.whl
name: wsproto
version: 1.3.2
@@ -35920,29 +36002,29 @@ packages:
name: xdgenvpy
version: 2.4.0
sha256: 4c4e427a753e8ecb0e336a7cd7eacd55f91a5fc8fd1fa42a957706fccf2b9949
-- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda
- sha256: aa03b49f402959751ccc6e21932d69db96a65a67343765672f7862332aa32834
- md5: 71ae752a748962161b4740eaff510258
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
+ sha256: 19c2bb14bec84b0e995b56b752369775c75f1589314b43733948bb5f471a6915
+ md5: b56e0c8432b56decafae7e78c5f29ba5
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
license: MIT
license_family: MIT
purls: []
- size: 396975
- timestamp: 1759543819846
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.46-he30d5cf_0.conda
- sha256: c440a757d210e84c7f315ac3b034266980a8b4c986600649d296b9198b5b4f5e
- md5: 9524f30d9dea7dd5d6ead43a8823b6c2
+ size: 399291
+ timestamp: 1772021302485
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda
+ sha256: ec7ff9dffbd41faa31a30fa0724699f05bca000d57c745a195ecdb56888a8605
+ md5: 4ac707a4279972357712af099cd1ae50
depends:
- libgcc >=14
- - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
license: MIT
license_family: MIT
purls: []
- size: 396706
- timestamp: 1759543850920
+ size: 399629
+ timestamp: 1772021320967
- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b
md5: fb901ff28063514abb6046c9ec2c4a45
@@ -36642,9 +36724,9 @@ packages:
purls: []
size: 213281
timestamp: 1745308220432
-- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda
- sha256: 6e3f2db09387fc982b5400b842745084825cd2d4621e8278e4af8fb0dc2b55d8
- md5: 6a3fd177315aaafd4366930d440e4430
+- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
+ sha256: 5d991a8f418675338528ea8097e55143ad833807a110c4251879040351e0d4af
+ md5: 4b403cb52e72211c489a884b29290c2c
depends:
- __glibc >=2.17,<3.0.a0
- idna >=2.0
@@ -36656,12 +36738,12 @@ packages:
license: Apache-2.0
license_family: Apache
purls:
- - pkg:pypi/yarl?source=hash-mapping
- size: 151549
- timestamp: 1761337128623
-- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.22.0-py312ha4530ae_0.conda
- sha256: 2b34672145b430d3057dba6f5bbf668c85246eef7e8437f25ee4247bf0781193
- md5: 582c9758a8b95fde421fec361e5ea600
+ - pkg:pypi/yarl?source=compressed-mapping
+ size: 147028
+ timestamp: 1772409590700
+- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.23.0-py312ha4530ae_0.conda
+ sha256: 2d4e2398ac23cec7107ee2243fc238d891bd6fb41e190ee23aff870397df0d60
+ md5: 5620b15c3e8916bca815c64f4336856e
depends:
- idna >=2.0
- libgcc >=14
@@ -36674,8 +36756,8 @@ packages:
license_family: Apache
purls:
- pkg:pypi/yarl?source=hash-mapping
- size: 149300
- timestamp: 1761337087437
+ size: 146602
+ timestamp: 1772409452021
- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda
sha256: 47cfe31255b91b4a6fa0e9dbaf26baa60ac97e033402dbc8b90ba5fee5ffe184
md5: 8035e5b54c08429354d5d64027041cad
@@ -36704,6 +36786,19 @@ packages:
purls: []
size: 350254
timestamp: 1757370867477
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
+ sha256: 5fabe6cccbafc1193038862b0b0d784df3dae84bc48f12cac268479935f9c8b7
+ md5: 6a0eb48e58684cca4d7acc8b7a0fd3c7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 277694
+ timestamp: 1766549572069
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda
sha256: 25200bf068eb299ff9e6cdeeef528298bc11a82a6b43a1360dead2bd7d8f7a0e
md5: 0809f7fc3fe01142d0d1920bbe3b63c3
diff --git a/pixi.toml b/pixi.toml
index ea30b045ec..1dbbdbd5ea 100644
--- a/pixi.toml
+++ b/pixi.toml
@@ -3,7 +3,7 @@ authors = ["Florian Vahl <7vahl@informatik.uni-hamburg.de>"]
channels = [
"https://data.bit-bots.de/conda/", # For self hosted ROS / robostack packages
"https://data.bit-bots.de/conda-misc/output/", # For self hosted misc (non-ROS, neural network weights, ...) packages
- "robostack-jazzy", # Robostack jazzy channel for ROS packages
+ "robostack-jazzy", # Robostack jazzy channel for ROS packages
"conda-forge" # General conda-forge channel
]
name = "bitbots_main"
@@ -208,11 +208,12 @@ webots = ">=2022b,<2023a"
# of pre-commit hooks running after commits from the git-subrepo cli
git-subrepo = ">=0.4.9,<0.5"
clang-format = ">=21.1.0,<22"
-cppcheck = ">=2.18.3,<3"
+cppcheck = ">=2.18.3,<2.20"
pre-commit = ">=4.4.0,<5"
[feature.ros.pypi-dependencies]
# These are are pypi dependencies needed for our ROS 2 packages
+construct = ">=2.10.56, <3"
syrupy = ">=5.0.0, <6"
exhale = ">=0.3.7, <0.4"
mycroft-mimic3-tts = ">=0.2.4, <0.3"
diff --git a/src/bitbots_behavior/bitbots_blackboard/bitbots_blackboard/capsules/game_status_capsule.py b/src/bitbots_behavior/bitbots_blackboard/bitbots_blackboard/capsules/game_status_capsule.py
index 0f52543a6b..1b43668f08 100644
--- a/src/bitbots_behavior/bitbots_blackboard/bitbots_blackboard/capsules/game_status_capsule.py
+++ b/src/bitbots_behavior/bitbots_blackboard/bitbots_blackboard/capsules/game_status_capsule.py
@@ -1,7 +1,8 @@
from typing import Optional
from bitbots_utils.utils import get_parameters_from_other_node
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
+from std_msgs.msg import Bool
from bitbots_blackboard.capsules import AbstractBlackboardCapsule
@@ -12,33 +13,44 @@ class GameStatusCapsule(AbstractBlackboardCapsule):
def __init__(self, node, blackboard=None):
super().__init__(node, blackboard)
self.team_id: int = get_parameters_from_other_node(self._node, "parameter_blackboard", ["team_id"])["team_id"]
+ self.own_id: int = get_parameters_from_other_node(self._node, "parameter_blackboard", ["bot_id"])["bot_id"]
self.gamestate = GameState()
self.last_update: float = 0.0
self.unpenalized_time: float = 0.0
self.last_goal_from_us_time = -86400.0
self.last_goal_time = -86400.0
self.free_kick_kickoff_team: Optional[bool] = None
+ self.game_controller_stop: bool = False
+ # publish stopped msg for hcm
+ self.stop_pub = node.create_publisher(Bool, "game_controller/stop_msg", 1)
- def get_gamestate(self) -> int:
- return self.gamestate.game_state
+ def get_game_state(self) -> int:
+ # Init, ready, set, playing, finished
+ return self.gamestate.main_state
- def get_secondary_state(self) -> int:
- return self.gamestate.secondary_state
+ def get_game_phase(self) -> int:
+ # Timeout, Normal, Extratime, Penaltyshoot
+ return self.gamestate.game_phase
- def get_secondary_state_mode(self) -> int:
- return self.gamestate.secondary_state_mode
+ def get_set_play(self) -> int:
+ # None, Direct Freekick, Indirect Freekick, Penalty, Throw in, Goalkick, Cornerkick,
+ return self.gamestate.set_play
def get_secondary_team(self) -> int:
- return self.gamestate.secondary_state_team
+ # Team ID, wer in set Play den Ball hat
+ return self.gamestate.kicking_team
def has_kickoff(self) -> bool:
- return self.gamestate.has_kick_off
+ # vegelcih mit eigener Teamnummer
+ return self.gamestate.kicking_team == self.team_id
+
+ def is_stopped(self) -> bool:
+ return self.gamestate.stopped
def has_penalty_kick(self) -> bool:
return (
- self.gamestate.secondary_state == GameState.STATE_PENALTYKICK
- or self.gamestate.secondary_state == GameState.STATE_PENALTYSHOOT
- ) and self.gamestate._secondary_state_team == self.team_id
+ self.gamestate.set_play == GameState.SET_PLAY_PENALTY_KICK and self.gamestate.kicking_team == self.team_id
+ )
def get_our_goals(self) -> int:
return self.gamestate.own_score
@@ -55,26 +67,17 @@ def get_seconds_since_any_goal(self) -> float:
def get_seconds_remaining(self) -> float:
# Time from the message minus time passed since receiving it
return max(
- self.gamestate.seconds_remaining - (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update), 0.0
+ self.gamestate.secs_remaining - (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update), 0.0
)
def get_secondary_seconds_remaining(self) -> float:
"""Seconds remaining for things like kickoff"""
# Time from the message minus time passed since receiving it
return max(
- self.gamestate.secondary_seconds_remaining
- - (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update),
+ self.gamestate.secondary_time - (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update),
0.0,
)
- def get_seconds_since_last_drop_ball(self) -> Optional[float]:
- """Returns the seconds since the last drop in"""
- if self.gamestate.drop_in_time == -1:
- return None
- else:
- # Time from the message plus seconds passed since receiving it
- return self.gamestate.drop_in_time + (self._node.get_clock().now().nanoseconds / 1e9 - self.last_update)
-
def get_seconds_since_unpenalized(self) -> float:
return self._node.get_clock().now().nanoseconds / 1e9 - self.unpenalized_time
@@ -87,9 +90,6 @@ def received_gamestate(self) -> bool:
def get_team_id(self) -> int:
return self.team_id
- def get_red_cards(self) -> int:
- return self.gamestate.team_mates_with_red_card
-
def gamestate_callback(self, gamestate_msg: GameState) -> None:
if self.gamestate.penalized and not gamestate_msg.penalized:
self.unpenalized_time = self._node.get_clock().now().nanoseconds / 1e9
@@ -101,21 +101,29 @@ def gamestate_callback(self, gamestate_msg: GameState) -> None:
if gamestate_msg.rival_score > self.gamestate.rival_score:
self.last_goal_time = self._node.get_clock().now().nanoseconds / 1e9
+ self.game_controller_stop = gamestate_msg.stopped
+
+ self.stop_pub.publish(Bool(data=self.game_controller_stop))
+
+ """Anstoß im Falle von Overtime jetzt erstmal nicht genauer geregelt
if (
- gamestate_msg.secondary_state_mode == 2
- and self.gamestate.secondary_state_mode != 2
- and gamestate_msg.game_state == GameState.GAMESTATE_PLAYING
+ gamestate_msg.main_state == GameState.STATE_SET
+ and self.gamestate.setPlay != 2
+ and gamestate_msg.state == GameState.STATE_PLAYING
):
# secondary action is now executed but we will not see this in the new messages.
# it will look like a normal kick off, but we need to remember that this is some sort of free kick
# we set the kickoff value accordingly, then we will not be allowed to move if it is a kick for the others
- self.free_kick_kickoff_team = gamestate_msg.secondary_state_team
+ self.free_kick_kickoff_team = gamestate_msg.kicking_team
- if gamestate_msg.secondary_state_mode != 2 and gamestate_msg.secondary_seconds_remaining == 0:
+ if gamestate_msg.set_play != 2 and gamestate_msg.secondary_time == 0:
+ self.free_kick_kickoff_team = gamestate_msg.kicking_team
+
+ if gamestate_msg.set_play != 2 and gamestate_msg.secondary_time == 0:
self.free_kick_kickoff_team = None
if self.free_kick_kickoff_team is not None:
gamestate_msg.has_kick_off = self.free_kick_kickoff_team == self.team_id
-
+ """
self.last_update = self._node.get_clock().now().nanoseconds / 1e9
self.gamestate = gamestate_msg
diff --git a/src/bitbots_behavior/bitbots_blackboard/package.xml b/src/bitbots_behavior/bitbots_blackboard/package.xml
index 4bbed0ca3d..b0258395f3 100644
--- a/src/bitbots_behavior/bitbots_blackboard/package.xml
+++ b/src/bitbots_behavior/bitbots_blackboard/package.xml
@@ -23,7 +23,7 @@
bitbots_docs
bitbots_tf_buffer
bitbots_utils
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
python3-numpy
rclpy
ros2_numpy
diff --git a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/game_state_decider.py b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/game_state_decider.py
index bef4e355dd..eff710ca7e 100644
--- a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/game_state_decider.py
+++ b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/game_state_decider.py
@@ -1,6 +1,6 @@
from bitbots_blackboard.body_blackboard import BodyBlackboard
from dynamic_stack_decider.abstract_decision_element import AbstractDecisionElement
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
class GameStateDecider(AbstractDecisionElement):
@@ -16,18 +16,28 @@ def perform(self, reevaluate=False):
:return:
"""
- game_state_number = self.blackboard.gamestate.get_gamestate()
+ game_state_number = self.blackboard.gamestate.get_game_state()
+ is_stopped = self.blackboard.gamestate.is_stopped()
# todo this is a temporary hack to make GUI work
- if game_state_number == GameState.GAMESTATE_INITIAL:
+ if is_stopped:
+ return "STOPPED"
+ elif game_state_number == GameState.STATE_INITIAL:
return "INITIAL"
- elif game_state_number == GameState.GAMESTATE_READY:
+ elif game_state_number == GameState.STATE_READY:
return "READY"
- elif game_state_number == GameState.GAMESTATE_SET:
+ elif game_state_number == GameState.STATE_SET:
return "SET"
- elif game_state_number == GameState.GAMESTATE_PLAYING:
+ elif game_state_number == GameState.STATE_PLAYING:
return "PLAYING"
- elif game_state_number == GameState.GAMESTATE_FINISHED:
+ elif game_state_number == GameState.STATE_FINISHED:
return "FINISHED"
+ elif game_state_number == GameState.STATE_STANDBY:
+ return "STANDBY"
+ else:
+ # This should never happen, but all cases required string response
+ # as we do not get any stack trace otherwise
+ self.blackboard.node.get_logger().error(f"Received unknown game state number: {game_state_number}")
+ return "UNKNOWN"
def get_reevaluate(self):
"""
diff --git a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/last_player.py b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/last_player.py
deleted file mode 100644
index 04e32b588f..0000000000
--- a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/last_player.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from bitbots_blackboard.body_blackboard import BodyBlackboard
-from dynamic_stack_decider.abstract_decision_element import AbstractDecisionElement
-
-
-class LastPlayer(AbstractDecisionElement):
- blackboard: BodyBlackboard
-
- def __init__(self, blackboard, dsd, parameters):
- super().__init__(blackboard, dsd, parameters)
-
- def perform(self, reevaluate=False):
- # Get nessesary data
- red_cards = self.blackboard.gamestate.get_red_cards()
- own_id = self.blackboard.misc.bot_id
-
- # Use generator comprehension to check if all red cards are true except our own
- if all(x for i, x in enumerate(red_cards) if i != own_id):
- return "YES"
- else:
- return "NO"
-
- def get_reevaluate(self):
- return True
diff --git a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/secondary_state_decider.py b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/secondary_state_decider.py
index 7ed7d761e9..62e170fe30 100644
--- a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/secondary_state_decider.py
+++ b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/decisions/secondary_state_decider.py
@@ -1,6 +1,6 @@
from bitbots_blackboard.body_blackboard import BodyBlackboard
from dynamic_stack_decider.abstract_decision_element import AbstractDecisionElement
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
class SecondaryStateDecider(AbstractDecisionElement):
@@ -15,28 +15,35 @@ def __init__(self, blackboard, dsd, parameters):
super().__init__(blackboard, dsd, parameters)
def perform(self, reevaluate=False):
- state_number = self.blackboard.gamestate.get_secondary_state()
+ set_play_number = self.blackboard.gamestate.get_set_play()
+ game_phase_number = self.blackboard.gamestate.get_game_phase()
+
# todo this is a temporary hack to make GUI work
- if state_number == GameState.STATE_NORMAL:
+ if game_phase_number == GameState.GAME_PHASE_NORMAL and set_play_number == GameState.SET_PLAY_NONE:
return "NORMAL"
- elif state_number == GameState.STATE_PENALTYSHOOT:
+ elif game_phase_number == GameState.GAME_PHASE_PENALTY_SHOOT_OUT and set_play_number == GameState.SET_PLAY_NONE:
return "PENALTYSHOOT"
- elif state_number == GameState.STATE_OVERTIME:
+ elif game_phase_number == GameState.GAME_PHASE_EXTRA_TIME and set_play_number == GameState.SET_PLAY_NONE:
return "OVERTIME"
- elif state_number == GameState.STATE_TIMEOUT:
+ elif game_phase_number == GameState.GAME_PHASE_TIMEOUT and set_play_number == GameState.SET_PLAY_NONE:
return "TIMEOUT"
- elif state_number == GameState.STATE_DIRECT_FREEKICK:
+ elif set_play_number == GameState.SET_PLAY_DIRECT_FREE_KICK:
return "DIRECT_FREEKICK"
- elif state_number == GameState.STATE_INDIRECT_FREEKICK:
+ elif set_play_number == GameState.SET_PLAY_INDIRECT_FREE_KICK:
return "INDIRECT_FREEKICK"
- elif state_number == GameState.STATE_PENALTYKICK:
+ elif set_play_number == GameState.SET_PLAY_PENALTY_KICK:
return "PENALTYKICK"
- elif state_number == GameState.STATE_CORNER_KICK:
+ elif set_play_number == GameState.SET_PLAY_CORNER_KICK:
return "CORNER_KICK"
- elif state_number == GameState.STATE_GOAL_KICK:
+ elif set_play_number == GameState.SET_PLAY_GOAL_KICK:
return "GOAL_KICK"
- elif state_number == GameState.STATE_THROW_IN:
+ elif set_play_number == GameState.SET_PLAY_THROW_IN:
return "THROW_IN"
+ else:
+ self.blackboard.node.get_logger().error(
+ f"Unknown secondary state with game phase {game_phase_number} and set play {set_play_number}"
+ )
+ return "UNKNOWN"
def get_reevaluate(self):
"""
@@ -57,9 +64,9 @@ def __init__(self, blackboard, dsd, parameters):
self.team_id = self.blackboard.gamestate.get_team_id()
def perform(self, reevaluate=False):
- state_number = self.blackboard.gamestate.get_secondary_state()
+ game_phase_number = self.blackboard.gamestate.get_game_phase()
# we have to handle penalty shoot differently because the message is strange
- if state_number == GameState.STATE_PENALTYSHOOT:
+ if game_phase_number == GameState.GAME_PHASE_PENALTY_SHOOT_OUT:
if self.blackboard.gamestate.has_kickoff():
return "OUR"
return "OTHER"
@@ -73,26 +80,3 @@ def get_reevaluate(self):
Secondary state Team can change during the game
"""
return True
-
-
-class SecondaryStateModeDecider(AbstractDecisionElement):
- """
- Decides which mode in the secondary state we are.
- """
-
- blackboard: BodyBlackboard
-
- def __init__(self, blackboard, dsd, parameters):
- super().__init__(blackboard, dsd, parameters)
-
- def perform(self, reevaluate=False):
- state_mode = self.blackboard.gamestate.get_secondary_state_mode()
- if state_mode == GameState.MODE_PREPARATION:
- return "PREPARATION"
- elif state_mode == GameState.MODE_PLACING:
- return "PLACING"
- elif state_mode == GameState.MODE_END:
- return "END"
-
- def get_reevaluate(self):
- return True
diff --git a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd
index 3b0287230b..bccdc8ebac 100644
--- a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd
+++ b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/behavior_dsd/main.dsd
@@ -82,13 +82,6 @@ $PassStarted
NO --> @LookAtFieldFeatures, @ChangeAction + action:positioning, @AvoidBallActive, @GoToPassAcceptPosition
NO --> @LookAtFieldFeatures, @ChangeAction + action:positioning, @AvoidBallActive, @GoToPassPreparePosition
-#GoalieRole
-$CurrentScore
- BEHIND --> $LastPlayer
- YES --> #StrikerRole
- NO --> #GoalieBehavior
- ELSE --> #GoalieBehavior
-
#PenaltyShootoutBehavior
$SecondaryStateTeamDecider
OUR --> @StandAndWaitRandom + min:10 + max:30, @KickBallDynamic + r:true + type:penalty, @Stand
@@ -110,35 +103,10 @@ $DoOnce
NO --> $SecondaryStateTeamDecider
OUR --> #SearchBall
OTHER --> @AvoidBallActive, @LookAtFieldFeatures, @WalkInPlace + duration:2, @GoToRelativePosition + x:1 + y:0 + t:0, @Stand
- YES --> $SecondaryStateDecider
- CORNER_KICK --> $SecondaryStateTeamDecider
- OUR --> $RankToBallNoGoalie
- FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToCornerKickPosition + mode:striker
- SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToCornerKickPosition + mode:supporter
- THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
- OTHER --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToCornerKickPosition + mode:others
- THROW_IN --> $SecondaryStateTeamDecider
- OUR --> $RankToBallNoGoalie
- FIRST --> $DoOnce
- NOT_DONE --> @ChangeAction + action:going_to_ball, @LookAtFieldFeatures, @AvoidBallActive, @GoToBall + target:gradient + distance:0.3 + blocking:false
- DONE --> $ReachedAndAlignedToPathPlanningGoalPosition + threshold:0.03 + latch:true
- NO --> @GoToBall + target:gradient + distance:0.3
- YES --> @LookForward, @ChangeAction + action:kicking, @Stand + duration:1.5 + r:false, @PlayAnimationDynup + direction:descend_no_arms, @PlayAnimationGrabBall + r:false, @PlayAnimationDynup + direction:rise_no_arms, @PlayAnimationThrow + r:false, @GetWalkready + r:false, @Stand
- SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToPassPreparePosition
- THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
- OTHER --> $RankToBallNoGoalie
- FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
- SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
- THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
- ELSE --> $SecondaryStateTeamDecider
- OUR --> $RankToBallNoGoalie
- FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToBall + target:gradient + distance:0.5
- SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToPassPreparePosition
- THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
- OTHER --> $RankToBallNoGoalie
- FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
- SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
- THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
+ YES --> $RankToBallNoGoalie
+ FIRST --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_first
+ SECOND --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition + mode:freekick_second
+ THIRD --> @ChangeAction + action:positioning, @LookAtFieldFeatures, @AvoidBallActive, @GoToDefensePosition
#Init
@Stand + duration:0.1 + r:false, @ChangeAction + action:waiting, @LookForward, @Stand
@@ -152,7 +120,7 @@ $BallSeen
NO_NORMAL --> #StandAndLook
NO_FREEKICK --> #Placing
YES --> $ConfigRole
- GOALIE --> #GoalieRole
+ GOALIE --> #GoalieBehavior
ELSE --> $CountActiveRobotsWithoutGoalie
ONE --> $RankToBallNoGoalie
FIRST --> #StrikerRole
@@ -177,7 +145,7 @@ $IsPenalized
DONE --> #PositioningReady
SET --> $SecondaryStateDecider
PENALTYSHOOT --> $SecondaryStateTeamDecider
- OUR --> @Stand + duration:0.1 + r:false, @DeactivateHCM + r:false, @LookForward + r:false, @PlayAnimationInitInSim + r:false, @GetWalkready + r:false, @Stand // we need to also see the goalie
+ OUR --> @Stand + duration:0.1 + r:false, @DeactivateHCM + r:false, @LookForward + r:false, @PlayAnimationInitInSim + r:false, @GetWalkready + r:false, @Stand
OTHER --> $BallSeen
YES --> @Stand + duration:0.1 + r:false, @DeactivateHCM + r:false, @LookForward + r:false, @PlayAnimationInitInSim + r:false, @GetWalkready + r:false, @TrackBall + r:false, @PlayAnimationGoalieArms + r:false, @Stand // goalie only needs to care about the ball
NO --> @Stand + duration:0.1 + r:false, @DeactivateHCM + r:false, @LookForward + r:false, @PlayAnimationInitInSim + r:false, @GetWalkready + r:false, @LookAtFieldFeatures + r:false, @PlayAnimationGoalieArms + r:false, @Stand
@@ -188,8 +156,10 @@ $IsPenalized
PLAYING --> $SecondaryStateDecider
PENALTYSHOOT --> #PenaltyShootoutBehavior
TIMEOUT --> #StandAndLook
- ELSE --> $SecondaryStateModeDecider
- ELSE --> #StandAndLook
- PLACING --> #Placing
+ ELSE --> $SecondaryStateTeamDecider
+ OUR --> #NormalBehavior
+ OTHER --> #Placing
NORMAL --> #NormalBehavior
OVERTIME --> #NormalBehavior
+ STANDBY --> #StandAndLook
+ STOPPED --> #DoNothing
diff --git a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/body_behavior.py b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/body_behavior.py
index c529e74a69..61eace4381 100644
--- a/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/body_behavior.py
+++ b/src/bitbots_behavior/bitbots_body_behavior/bitbots_body_behavior/body_behavior.py
@@ -4,7 +4,7 @@
from bitbots_blackboard.body_blackboard import BodyBlackboard
from bitbots_tf_buffer import Buffer
from dynamic_stack_decider.dsd import DSD
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from geometry_msgs.msg import PoseWithCovarianceStamped, Twist
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup
from rclpy.duration import Duration
diff --git a/src/bitbots_behavior/bitbots_body_behavior/package.xml b/src/bitbots_behavior/bitbots_body_behavior/package.xml
index c0256d7dc4..0a0594b84e 100644
--- a/src/bitbots_behavior/bitbots_body_behavior/package.xml
+++ b/src/bitbots_behavior/bitbots_body_behavior/package.xml
@@ -22,7 +22,7 @@
bitbots_tts
bitbots_utils
dynamic_stack_decider
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
geometry_msgs
python3-numpy
rclpy
diff --git a/src/bitbots_lowlevel/bitbots_buttons/CMakeLists.txt b/src/bitbots_lowlevel/bitbots_buttons/CMakeLists.txt
index 771c19b290..27ef961c7f 100644
--- a/src/bitbots_lowlevel/bitbots_buttons/CMakeLists.txt
+++ b/src/bitbots_lowlevel/bitbots_buttons/CMakeLists.txt
@@ -15,7 +15,7 @@ find_package(ament_cmake REQUIRED)
find_package(backward_ros REQUIRED)
find_package(bitbots_docs REQUIRED)
find_package(bitbots_msgs REQUIRED)
-find_package(game_controller_hl_interfaces REQUIRED)
+find_package(game_controller_hsl_interfaces REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package(std_srvs REQUIRED)
@@ -27,7 +27,7 @@ ament_target_dependencies(
ament_cmake
backward_ros
bitbots_msgs
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
rclcpp
std_msgs
std_srvs
diff --git a/src/bitbots_lowlevel/bitbots_buttons/package.xml b/src/bitbots_lowlevel/bitbots_buttons/package.xml
index 0deeed624b..ce87ddfb10 100644
--- a/src/bitbots_lowlevel/bitbots_buttons/package.xml
+++ b/src/bitbots_lowlevel/bitbots_buttons/package.xml
@@ -20,14 +20,14 @@
backward_ros
bitbots_docs
bitbots_msgs
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
rclcpp
std_msgs
std_srvs
test_msgs
-
+
python3
tested_robot
diff --git a/src/bitbots_lowlevel/bitbots_buttons/src/button_node.cpp b/src/bitbots_lowlevel/bitbots_buttons/src/button_node.cpp
index 6e2e2e18b7..28f83ca0aa 100644
--- a/src/bitbots_lowlevel/bitbots_buttons/src/button_node.cpp
+++ b/src/bitbots_lowlevel/bitbots_buttons/src/button_node.cpp
@@ -4,7 +4,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
@@ -53,12 +53,12 @@ class ButtonNode : public rclcpp::Node {
teaching_mode_client_ = this->create_client("teaching_mode");
buttons_sub_ = this->create_subscription(
"/buttons", 1, std::bind(&bitbots_buttons::ButtonNode::buttonCb, this, _1));
- gamestate_sub_ = this->create_subscription(
+ gamestate_sub_ = this->create_subscription(
"gamestate", 1, std::bind(&bitbots_buttons::ButtonNode::gamestateCb, this, _1));
}
// Sets the in_game_ variable to true, if a Gamestate message from the Gamecontroller arrives.
- void gamestateCb(const game_controller_hl_interfaces::msg::GameState::SharedPtr msg) { in_game_ = true; }
+ void gamestateCb(const game_controller_hsl_interfaces::msg::GameState::SharedPtr msg) { in_game_ = true; }
void buttonCb(const bitbots_msgs::msg::Buttons::SharedPtr msg) {
// button1 - red
@@ -197,7 +197,7 @@ class ButtonNode : public rclcpp::Node {
rclcpp::Client::SharedPtr foot_zero_client_;
rclcpp::Client::SharedPtr power_client_;
rclcpp::Subscription::SharedPtr buttons_sub_;
- rclcpp::Subscription::SharedPtr gamestate_sub_;
+ rclcpp::Subscription::SharedPtr gamestate_sub_;
};
} // namespace bitbots_buttons
diff --git a/src/bitbots_misc/bitbots_bringup/launch/highlevel.launch b/src/bitbots_misc/bitbots_bringup/launch/highlevel.launch
index fc277868b5..6543a3607f 100644
--- a/src/bitbots_misc/bitbots_bringup/launch/highlevel.launch
+++ b/src/bitbots_misc/bitbots_bringup/launch/highlevel.launch
@@ -16,7 +16,7 @@
-
+
diff --git a/src/bitbots_misc/bitbots_bringup/package.xml b/src/bitbots_misc/bitbots_bringup/package.xml
index 30fbedae9d..f3aec43bbb 100644
--- a/src/bitbots_misc/bitbots_bringup/package.xml
+++ b/src/bitbots_misc/bitbots_bringup/package.xml
@@ -33,7 +33,7 @@
bitbots_utils
bitbots_vision
foxglove_bridge
- game_controller_hl
+ game_controller_hsl
humanoid_base_footprint
soccer_ipm
system_monitor
diff --git a/src/bitbots_misc/bitbots_docs/docs/manual/testing/sim_test.rst b/src/bitbots_misc/bitbots_docs/docs/manual/testing/sim_test.rst
index 9d3b21b10e..38410e360a 100644
--- a/src/bitbots_misc/bitbots_docs/docs/manual/testing/sim_test.rst
+++ b/src/bitbots_misc/bitbots_docs/docs/manual/testing/sim_test.rst
@@ -37,4 +37,4 @@ Test the complete software stack in simulation
.. code-block:: bash
ros2 launch bitbots_bringup simulator_teamplayer.launch
- ros2 run game_controller_hl sim_gamestate.py
+ ros2 run game_controller_hsl sim_gamestate.py
diff --git a/src/bitbots_misc/bitbots_docs/docs/manual/tutorials/cl_simulation_testing_setup.rst b/src/bitbots_misc/bitbots_docs/docs/manual/tutorials/cl_simulation_testing_setup.rst
index 7b25661cea..dc617b760b 100644
--- a/src/bitbots_misc/bitbots_docs/docs/manual/tutorials/cl_simulation_testing_setup.rst
+++ b/src/bitbots_misc/bitbots_docs/docs/manual/tutorials/cl_simulation_testing_setup.rst
@@ -36,7 +36,7 @@ Instead of doing `pixi run ...` you can also activate the pixi environment for t
With ``game_controller:=false`` we ensure, that the game_controller_listener is not started as well, but instead
we will simulate the current gamestate by our own script (in another terminal):
-``pixi run ros2 run game_controller_hl sim_gamestate.py``
+``pixi run ros2 run game_controller_hsl sim_gamestate.py``
Which allows us to simulate the current gamestate and different phases of the game.
Now everything is ready for some simulation testing.
diff --git a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/fallen.py b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/fallen.py
index 0429ed5bfd..79652a3e5d 100644
--- a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/fallen.py
+++ b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/fallen.py
@@ -2,6 +2,7 @@
import numpy as np
from bitbots_utils.transforms import quat2fused
+from std_msgs.msg import Bool
from bitbots_hcm.hcm_dsd.decisions import AbstractHCMDecisionElement
@@ -23,6 +24,7 @@ def __init__(self, blackboard, dsd, parameters):
def perform(self, reevaluate=False):
# Check of the fallen detection is active
if not self.blackboard.is_stand_up_active:
+ self.publish_if_fallen(False)
return "NOT_FALLEN"
# Get angular velocity from the IMU
@@ -30,6 +32,7 @@ def perform(self, reevaluate=False):
# Check if the robot is rotating
if np.mean(np.abs(angular_velocity)) >= 0.2:
+ self.publish_if_fallen(False)
return "NOT_FALLEN"
# Convert quaternion to fused angles
@@ -37,18 +40,27 @@ def perform(self, reevaluate=False):
# Decides which side is facing downwards.
if fused_pitch > self.fallen_orientation_thresh:
+ self.publish_if_fallen(True)
return "FALLEN_FRONT"
if fused_pitch < -self.fallen_orientation_thresh:
+ self.publish_if_fallen(True)
return "FALLEN_BACK"
if fused_roll > self.fallen_orientation_thresh:
+ self.publish_if_fallen(True)
return "FALLEN_RIGHT"
if fused_roll < -self.fallen_orientation_thresh:
+ self.publish_if_fallen(True)
return "FALLEN_LEFT"
+ self.publish_if_fallen(False)
return "NOT_FALLEN"
+ def publish_if_fallen(self, is_fallen):
+ # publishes if robot is fallen
+ self.blackboard.is_fallen_publisher.publish(Bool(data=is_fallen))
+
def get_reevaluate(self):
return True
diff --git a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/stop.py b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/stop.py
index 1e5556e62f..b28ad4efdb 100644
--- a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/stop.py
+++ b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/decisions/stop.py
@@ -15,3 +15,19 @@ def perform(self, reevaluate=False):
def get_reevaluate(self):
return True
+
+
+class GameControllerStop(AbstractHCMDecisionElement):
+ """
+ Handles manual stops
+ """
+
+ def perform(self, reevaluate=False):
+ if self.blackboard.game_controller_stop:
+ # we do an action sequence to go into stop and to stay there
+ return "STOPPED"
+ else:
+ return "FREE"
+
+ def get_reevaluate(self):
+ return True
diff --git a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm.dsd b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm.dsd
index 2e0b29b049..c4e15f47f7 100644
--- a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm.dsd
+++ b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm.dsd
@@ -21,7 +21,7 @@ $StartHCM
TEACH --> @RobotStateRecord, @SetTorque + stiff:false, @Wait
HOLD --> @SetTorque + stiff:true, @Wait
FINISHED --> @SetTorque + stiff:true + r:false, @RobotStateControllable, @PlayAnimationDynup + direction:walkready + r:false
- OFF --> $Stop
+ OFF --> $Stop
STOPPED --> @RobotStatePenalty, @CancelGoals, @StopWalking, @PlayAnimationDynup + direction:walkready + r:false, @Wait
FREE -->$CheckIMU
IMU_NOT_STARTED --> @RobotStateStartup, @WaitForIMUStartup
@@ -32,10 +32,18 @@ $StartHCM
OKAY --> $PickedUp
PICKED_UP --> @RobotStatePickedUp, @PlayAnimationDynup + direction:walkready + r:false, @Wait
ON_GROUND --> $Fallen
- FALLEN_FRONT --> @RobotStateFallen, @CancelGoals, @StopWalking, @RobotStateGettingUp, @PlayAnimationStandupFront, @SetSquat + squat:true
- FALLEN_BACK --> @RobotStateFallen, @CancelGoals, @StopWalking, @RobotStateGettingUp, @SetFootZero, @PlayAnimationFallingBack, @PlayAnimationStandupBack, @SetSquat + squat:true
- FALLEN_RIGHT --> @RobotStateFallen, @CancelGoals, @StopWalking, @PlayAnimationTurningFrontRight
- FALLEN_LEFT --> @RobotStateFallen, @CancelGoals, @StopWalking, @PlayAnimationTurningFrontLeft
+ FALLEN_FRONT --> $GameControllerStop
+ STOPPED --> @RobotStateFallen, @CancelGoals, @StopWalking, @Wait
+ FREE --> @RobotStateFallen, @CancelGoals, @StopWalking, @RobotStateGettingUp, @PlayAnimationStandupFront, @SetSquat + squat:true
+ FALLEN_BACK --> $GameControllerStop
+ STOPPED --> @RobotStateFallen, @CancelGoals, @StopWalking, @Wait
+ FREE --> @RobotStateFallen, @CancelGoals, @StopWalking, @RobotStateGettingUp, @SetFootZero, @PlayAnimationFallingBack, @PlayAnimationStandupBack, @SetSquat + squat:true
+ FALLEN_RIGHT --> $GameControllerStop
+ STOPPED --> @RobotStateFallen, @CancelGoals, @StopWalking, @Wait
+ FREE --> @RobotStateFallen, @CancelGoals, @StopWalking, @PlayAnimationTurningFrontRight
+ FALLEN_LEFT --> $GameControllerStop
+ STOPPED --> @RobotStateFallen, @CancelGoals, @StopWalking, @Wait
+ FREE --> @RobotStateFallen, @CancelGoals, @StopWalking, @PlayAnimationTurningFrontLeft
NOT_FALLEN --> $Falling
FALLING_LEFT --> @RobotStateFalling, @CancelGoals, @StopWalking, @PlayAnimationFallingLeft, @Wait
FALLING_RIGHT --> @RobotStateFalling, @CancelGoals, @StopWalking, @PlayAnimationFallingRight, @Wait
diff --git a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm_blackboard.py b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm_blackboard.py
index 3ac8d4dae9..6db308509c 100644
--- a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm_blackboard.py
+++ b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/hcm_dsd/hcm_blackboard.py
@@ -8,6 +8,7 @@
from rclpy.task import Future
from rclpy.time import Time
from sensor_msgs.msg import Imu, JointState
+from std_msgs.msg import Bool
from std_msgs.msg import Empty as EmptyMsg
from std_srvs.srv import Empty as EmptySrv
from std_srvs.srv import SetBool
@@ -25,6 +26,7 @@ def __init__(self, node: Node):
# Basic state
self.current_state: T_RobotControlState = RobotControlState.STARTUP
self.stopped: bool = False
+ self.game_controller_stop: bool = False
# Save start time
self.start_time: Time = self.node.get_clock().now()
@@ -55,6 +57,7 @@ def __init__(self, node: Node):
self.cancel_path_planning_pub = self.node.create_publisher(EmptyMsg, "pathfinding/cancel", 1)
self.speak_publisher = self.node.create_publisher(Audio, "speak", 1)
self.torque_publisher = self.node.create_publisher(JointTorque, "set_torque_individual", 10)
+ self.is_fallen_publisher = self.node.create_publisher(Bool, "hsl_gamecontroller/is_fallen", 1)
# Latest imu data
self.accel = numpy.array([0, 0, 0])
diff --git a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/humanoid_control_module.py b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/humanoid_control_module.py
index 14a4a38d42..05663e0e4f 100755
--- a/src/bitbots_motion/bitbots_hcm/bitbots_hcm/humanoid_control_module.py
+++ b/src/bitbots_motion/bitbots_hcm/bitbots_hcm/humanoid_control_module.py
@@ -80,6 +80,7 @@ def __init__(self, use_sim_time, simulation_active, visualization_active):
self.node.create_subscription(Bool, "core/power_switch_status", self.power_cb, 1)
self.node.create_subscription(Bool, "hcm_deactivate", self.deactivate_cb, 1)
self.node.create_subscription(DiagnosticArray, "diagnostics_agg", self.diag_cb, 1)
+ self.node.create_subscription(Bool, "game_controller/stop_msg", self.stop_cb, 1)
# Create services
self.node.create_service(SetBool, "record_mode", self.set_record_mode_callback)
@@ -122,6 +123,9 @@ def deactivate_cb(self, msg: Bool):
"""Deactivates the HCM."""
self.hcm_deactivated = msg.data
+ def stop_cb(self, msg: Bool):
+ self.blackboard.game_controller_stop = msg.data
+
def set_manual_penalize_mode_callback(self, req: ManualPenalize.Request, resp: ManualPenalize.Response):
"""Callback for the manual penalize service."""
if req.penalize == ManualPenalize.Request.OFF:
diff --git a/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_dsd/decisions/game_state.py b/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_dsd/decisions/game_state.py
index e28adbd82e..ae2eba9840 100644
--- a/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_dsd/decisions/game_state.py
+++ b/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_dsd/decisions/game_state.py
@@ -1,4 +1,4 @@
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from bitbots_localization_handler.localization_dsd.decisions import AbstractLocalizationDecisionElement
@@ -32,18 +32,25 @@ def perform(self, reevaluate=False):
:param reevaluate:
:return:
"""
- game_state_number = self.blackboard.gamestate.get_gamestate()
-
- if game_state_number == GameState.GAMESTATE_INITIAL:
+ game_state_number = self.blackboard.gamestate.get_game_state()
+ # todo this is a temporary hack to make GUI work
+ if game_state_number == GameState.STATE_INITIAL:
return "INITIAL"
- elif game_state_number == GameState.GAMESTATE_READY:
+ elif game_state_number == GameState.STATE_READY:
return "READY"
- elif game_state_number == GameState.GAMESTATE_SET:
+ elif game_state_number == GameState.STATE_SET:
return "SET"
- elif game_state_number == GameState.GAMESTATE_PLAYING:
+ elif game_state_number == GameState.STATE_PLAYING:
return "PLAYING"
- elif game_state_number == GameState.GAMESTATE_FINISHED:
+ elif game_state_number == GameState.STATE_FINISHED:
return "FINISHED"
+ elif game_state_number == GameState.STATE_STANDBY:
+ return "STANDBY"
+ else:
+ # This should never happen, but all cases required string response
+ # as we do not get any stack trace otherwise
+ self.blackboard.node.get_logger().error(f"Received unknown game state number: {game_state_number}")
+ return "UNKNOWN"
def get_reevaluate(self):
"""
@@ -59,29 +66,35 @@ class SecondaryStateDecider(AbstractLocalizationDecisionElement):
"""
def perform(self, reevaluate=False):
- state_number = self.blackboard.gamestate.get_secondary_state()
+ set_play_number = self.blackboard.gamestate.get_set_play()
+ game_phase_number = self.blackboard.gamestate.get_game_phase()
# todo this is a temporary hack to make GUI work
- if state_number == GameState.STATE_NORMAL:
+ if game_phase_number == GameState.GAME_PHASE_NORMAL and set_play_number == GameState.SET_PLAY_NONE:
return "NORMAL"
- elif state_number == GameState.STATE_PENALTYSHOOT:
+ elif game_phase_number == GameState.GAME_PHASE_PENALTY_SHOOT_OUT and set_play_number == GameState.SET_PLAY_NONE:
return "PENALTYSHOOT"
- elif state_number == GameState.STATE_OVERTIME:
+ elif game_phase_number == GameState.GAME_PHASE_EXTRA_TIME and set_play_number == GameState.SET_PLAY_NONE:
return "OVERTIME"
- elif state_number == GameState.STATE_TIMEOUT:
+ elif game_phase_number == GameState.GAME_PHASE_TIMEOUT and set_play_number == GameState.SET_PLAY_NONE:
return "TIMEOUT"
- elif state_number == GameState.STATE_DIRECT_FREEKICK:
+ elif set_play_number == GameState.SET_PLAY_DIRECT_FREE_KICK:
return "DIRECT_FREEKICK"
- elif state_number == GameState.STATE_INDIRECT_FREEKICK:
+ elif set_play_number == GameState.SET_PLAY_INDIRECT_FREE_KICK:
return "INDIRECT_FREEKICK"
- elif state_number == GameState.STATE_PENALTYKICK:
+ elif set_play_number == GameState.SET_PLAY_PENALTY_KICK:
return "PENALTYKICK"
- elif state_number == GameState.STATE_CORNER_KICK:
+ elif set_play_number == GameState.SET_PLAY_CORNER_KICK:
return "CORNER_KICK"
- elif state_number == GameState.STATE_GOAL_KICK:
+ elif set_play_number == GameState.SET_PLAY_GOAL_KICK:
return "GOAL_KICK"
- elif state_number == GameState.STATE_THROW_IN:
+ elif set_play_number == GameState.SET_PLAY_THROW_IN:
return "THROW_IN"
+ else:
+ self.blackboard.node.get_logger().error(
+ f"Unknown secondary state with game phase {game_phase_number} and set play {set_play_number}"
+ )
+ return "UNKNOWN"
def get_reevaluate(self):
"""
@@ -100,9 +113,9 @@ def __init__(self, blackboard, dsd, parameters):
self.team_id = self.blackboard.gamestate.get_team_id()
def perform(self, reevaluate=False):
- state_number = self.blackboard.gamestate.get_secondary_state()
+ game_phase_number = self.blackboard.gamestate.get_game_phase()
# we have to handle penalty shoot differently because the message is strange
- if state_number == GameState.STATE_PENALTYSHOOT:
+ if game_phase_number == GameState.GAME_PHASE_PENALTY_SHOOT_OUT:
if self.blackboard.gamestate.has_kickoff():
return "OUR"
return "OTHER"
@@ -143,17 +156,17 @@ class InitialToReady(AbstractLocalizationDecisionElement):
def __init__(self, blackboard, dsd, parameters):
super().__init__(blackboard, dsd, parameters)
- self.previous_game_state_number = self.blackboard.gamestate.get_gamestate()
+ self.previous_game_state_number = self.blackboard.gamestate.get_game_state()
def perform(self, reevaluate=False):
previous_game_state_number = self.previous_game_state_number
- game_state_number = self.blackboard.gamestate.get_gamestate()
+ game_state_number = self.blackboard.gamestate.get_game_state()
self.previous_game_state_number = game_state_number
self.publish_debug_data("Previous game state", previous_game_state_number)
self.publish_debug_data("Current game state", game_state_number)
- if previous_game_state_number == GameState.GAMESTATE_INITIAL and game_state_number == GameState.GAMESTATE_READY:
+ if previous_game_state_number == GameState.STATE_INITIAL and game_state_number == GameState.STATE_READY:
return "YES"
else:
return "NO"
diff --git a/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_handler.py b/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_handler.py
index 3239dbde21..f479718296 100755
--- a/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_handler.py
+++ b/src/bitbots_navigation/bitbots_localization_handler/bitbots_localization_handler/localization_handler.py
@@ -3,7 +3,7 @@
import rclpy
from dynamic_stack_decider.dsd import DSD
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from geometry_msgs.msg import PoseWithCovarianceStamped
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup, ReentrantCallbackGroup
from rclpy.experimental.events_executor import EventsExecutor
diff --git a/src/bitbots_navigation/bitbots_localization_handler/package.xml b/src/bitbots_navigation/bitbots_localization_handler/package.xml
index ce1b07b2fe..32e098f39f 100644
--- a/src/bitbots_navigation/bitbots_localization_handler/package.xml
+++ b/src/bitbots_navigation/bitbots_localization_handler/package.xml
@@ -19,7 +19,7 @@
bitbots_msgs
bitbots_utils
dynamic_stack_decider
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
geometry_msgs
python3-numpy
rclpy
diff --git a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py
index 0ae4aba8ba..d52c6e7a11 100755
--- a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py
+++ b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py
@@ -6,12 +6,13 @@
from typing import Optional
import rclpy
+import transforms3d
from ament_index_python.packages import get_package_share_directory
from bitbots_tf_buffer import Buffer
from bitbots_utils.utils import get_parameter_dict, get_parameters_from_other_node
from builtin_interfaces.msg import Time as TimeMsg
-from game_controller_hl_interfaces.msg import GameState
-from geometry_msgs.msg import PoseWithCovarianceStamped, Twist, TwistWithCovarianceStamped
+from game_controller_hsl_interfaces.msg import GameState, PlayerStatusPose
+from geometry_msgs.msg import PoseWithCovarianceStamped, Quaternion, Twist, TwistWithCovarianceStamped
from numpy import double
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup
from rclpy.duration import Duration
@@ -104,6 +105,9 @@ def try_to_establish_connection(self):
def create_publishers(self):
self.team_data_publisher = self.node.create_publisher(TeamData, self.topics["team_data_topic"], qos_profile=1)
+ self.game_controller_player_pose_publisher = self.node.create_publisher(
+ PlayerStatusPose, "hsl_gamecontroller/pose_stamped", 1
+ )
def create_subscribers(self):
self.node.create_subscription(
@@ -176,6 +180,15 @@ def gamestate_cb(self, msg: GameState):
def pose_cb(self, msg: PoseWithCovarianceStamped):
self.pose = msg
+ player_pose_msg = PlayerStatusPose()
+ player_pose_msg.header = msg.header
+ player_pose_msg.pose = [
+ msg.pose.pose.position.x,
+ msg.pose.pose.position.y,
+ self.extract_orientation_yaw_angle(msg.pose.pose.orientation),
+ ]
+ self.game_controller_player_pose_publisher.publish(player_pose_msg)
+
def cmd_vel_cb(self, msg: Twist):
self.cmd_vel = msg
self.cmd_vel_time = self.get_current_time().to_msg()
@@ -293,6 +306,14 @@ def is_robot_allowed_to_send_message(self) -> bool:
def get_current_time(self) -> Time:
return self.node.get_clock().now()
+ def extract_orientation_yaw_angle(self, quaternion: Quaternion):
+ angles = self.convert_to_euler(quaternion)
+ theta = angles[2]
+ return theta
+
+ def convert_to_euler(self, quaternion: Quaternion):
+ return transforms3d.euler.quat2euler([quaternion.w, quaternion.x, quaternion.y, quaternion.z])
+
def main():
rclpy.init(args=None)
diff --git a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/converter/state_to_message_converter.py b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/converter/state_to_message_converter.py
index 41ea6a62ee..1d821e48a0 100644
--- a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/converter/state_to_message_converter.py
+++ b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/converter/state_to_message_converter.py
@@ -4,7 +4,7 @@
import numpy as np
import transforms3d
from builtin_interfaces.msg import Time
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from geometry_msgs.msg import PointStamped, PoseStamped, PoseWithCovarianceStamped, Quaternion, Twist
from jaxtyping import Float64
from soccer_vision_3d_msgs.msg import Robot, RobotArray
diff --git a/src/bitbots_team_communication/bitbots_team_communication/package.xml b/src/bitbots_team_communication/bitbots_team_communication/package.xml
index 12a0701b1d..8881b82667 100644
--- a/src/bitbots_team_communication/bitbots_team_communication/package.xml
+++ b/src/bitbots_team_communication/bitbots_team_communication/package.xml
@@ -23,7 +23,7 @@
bitbots_tf_buffer
bitbots_utils
builtin_interfaces
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
geometry_msgs
python3-protobuf
python3-transforms3d
diff --git a/src/bitbots_team_communication/bitbots_team_communication/scripts/test_team_comm.py b/src/bitbots_team_communication/bitbots_team_communication/scripts/test_team_comm.py
index d392b3309d..fc82a82618 100755
--- a/src/bitbots_team_communication/bitbots_team_communication/scripts/test_team_comm.py
+++ b/src/bitbots_team_communication/bitbots_team_communication/scripts/test_team_comm.py
@@ -5,7 +5,7 @@
import numpy
import rclpy
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from geometry_msgs.msg import Point, Pose, PoseWithCovariance, PoseWithCovarianceStamped, Quaternion, TransformStamped
from rclpy.qos import QoSDurabilityPolicy, QoSProfile
from soccer_vision_3d_msgs.msg import Robot, RobotArray
diff --git a/src/bitbots_team_communication/bitbots_team_communication/test/converter/test_state_to_message_converter.py b/src/bitbots_team_communication/bitbots_team_communication/test/converter/test_state_to_message_converter.py
index 16d8511f7a..2e995483e6 100644
--- a/src/bitbots_team_communication/bitbots_team_communication/test/converter/test_state_to_message_converter.py
+++ b/src/bitbots_team_communication/bitbots_team_communication/test/converter/test_state_to_message_converter.py
@@ -4,7 +4,7 @@
import numpy
import pytest
from builtin_interfaces.msg import Time
-from game_controller_hl_interfaces.msg import GameState
+from game_controller_hsl_interfaces.msg import GameState
from geometry_msgs.msg import (
Point,
PointStamped,
diff --git a/src/bitbots_vision/package.xml b/src/bitbots_vision/package.xml
index 6f5b75f5e0..ef99db0232 100644
--- a/src/bitbots_vision/package.xml
+++ b/src/bitbots_vision/package.xml
@@ -28,7 +28,7 @@
rosidl_default_generators
rosidl_default_runtime
bitbots_utils
- game_controller_hl_interfaces
+ game_controller_hsl_interfaces
geometry_msgs
image_transport
python3-numpy
diff --git a/src/bitbots_world_model/bitbots_ball_filter/bitbots_ball_filter/ball_filter.py b/src/bitbots_world_model/bitbots_ball_filter/bitbots_ball_filter/ball_filter.py
index fd3763146d..b9d3cabc6d 100755
--- a/src/bitbots_world_model/bitbots_ball_filter/bitbots_ball_filter/ball_filter.py
+++ b/src/bitbots_world_model/bitbots_ball_filter/bitbots_ball_filter/ball_filter.py
@@ -14,7 +14,7 @@
from ros2_numpy import msgify, numpify
from sensor_msgs.msg import CameraInfo
from soccer_vision_3d_msgs.msg import Ball, BallArray
-from std_msgs.msg import Header
+from std_msgs.msg import Float32, Header
from std_srvs.srv import Trigger
from tf2_geometry_msgs import PointStamped, PoseStamped
@@ -39,6 +39,7 @@ def __init__(self) -> None:
# Initialize parameters
self.update_params()
self.logger.info(f"Using frame '{self.config.filter.frame}' for ball filtering")
+ self.last_ball_time: Time = self.get_clock().now()
self.camera_info: Optional[CameraInfo] = None
@@ -49,6 +50,10 @@ def __init__(self) -> None:
self.ball_pose_publisher = self.create_publisher(
PoseWithCovarianceStamped, self.config.ros.ball_position_publish_topic, 1
)
+ self.game_controller_ball_position_publisher = self.create_publisher(
+ PointStamped, "hsl_gamecontroller/ball_position", 1
+ )
+ self.ball_age_publisher = self.create_publisher(Float32, "hsl_gamecontroller/ball_age", 1)
# Create callback group
self.callback_group = MutuallyExclusiveCallbackGroup()
@@ -141,6 +146,8 @@ def ball_callback(self, msg: BallArray) -> None:
# Store the ball measurement
self.ball_state_position = numpify(ball_measurement_map.point)
self.ball_state_covariance = covariance
+ # @TODO: actually give last ball time
+ self.last_ball_time = self.get_clock().now()
ball_measurement_updated = True
# Get our estimate in the base footprint frame for easier distance calculation
@@ -259,6 +266,21 @@ def filter_step(self) -> None:
pose_msg.pose.pose.orientation.w = 1.0
self.ball_pose_publisher.publish(pose_msg)
+ ball_position_msg = PointStamped()
+ ball_position_msg.point = msgify(Point, self.ball_state_position)
+ ball_position_msg.header = Header(
+ stamp=Time.to_msg(self.get_clock().now()),
+ frame_id=self.config.filter.frame,
+ )
+ self.game_controller_ball_position_publisher.publish(ball_position_msg)
+
+ # Build message for Ball age
+ ball_age_msg = Float32()
+ seconds_since_last_ball = (self.get_clock().now() - self.last_ball_time).nanoseconds / 1e9
+ ball_age_msg.data = seconds_since_last_ball
+
+ self.ball_age_publisher.publish(ball_age_msg)
+
def main(args=None) -> None:
rclpy.init(args=args)
diff --git a/src/lib/game_controller_hsl/.github/dependabot.yml b/src/lib/game_controller_hsl/.github/dependabot.yml
new file mode 100644
index 0000000000..e644b373e1
--- /dev/null
+++ b/src/lib/game_controller_hsl/.github/dependabot.yml
@@ -0,0 +1,11 @@
+# Set update schedule for GitHub Actions
+# (https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot)
+
+version: 2
+updates:
+
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ # Check for updates to GitHub Actions every week
+ interval: "weekly"
diff --git a/src/lib/game_controller_hsl/.github/workflows/build_and_test_humble.yaml b/src/lib/game_controller_hsl/.github/workflows/build_and_test_humble.yaml
new file mode 100644
index 0000000000..4d6c800432
--- /dev/null
+++ b/src/lib/game_controller_hsl/.github/workflows/build_and_test_humble.yaml
@@ -0,0 +1,34 @@
+# This is a basic workflow to help you get started with Actions
+
+name: Build and Test (humble)
+
+# Controls when the action will run.
+on:
+ # Triggers the workflow on push
+ push:
+ branches: [ rolling ]
+
+ # Triggers the workflow on pull requests
+ pull_request:
+ branches: [ rolling ]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "build"
+ build:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+ container:
+ image: ubuntu:jammy
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ - uses: ros-tooling/setup-ros@v0.7
+ with:
+ use-ros2-testing: true
+ - uses: ros-tooling/action-ros-ci@v0.4
+ with:
+ target-ros2-distro: humble
diff --git a/src/lib/game_controller_hsl/.github/workflows/build_and_test_jazzy.yaml b/src/lib/game_controller_hsl/.github/workflows/build_and_test_jazzy.yaml
new file mode 100644
index 0000000000..4252ce33c6
--- /dev/null
+++ b/src/lib/game_controller_hsl/.github/workflows/build_and_test_jazzy.yaml
@@ -0,0 +1,34 @@
+# This is a basic workflow to help you get started with Actions
+
+name: Build and Test (jazzy)
+
+# Controls when the action will run.
+on:
+ # Triggers the workflow on push
+ push:
+ branches: [ rolling ]
+
+ # Triggers the workflow on pull requests
+ pull_request:
+ branches: [ rolling ]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "build"
+ build:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+ container:
+ image: ubuntu:noble
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ - uses: ros-tooling/setup-ros@v0.7
+ with:
+ use-ros2-testing: true
+ - uses: ros-tooling/action-ros-ci@v0.4
+ with:
+ target-ros2-distro: jazzy
diff --git a/src/lib/game_controller_hsl/.github/workflows/build_and_test_rolling.yaml b/src/lib/game_controller_hsl/.github/workflows/build_and_test_rolling.yaml
new file mode 100644
index 0000000000..630ce076fc
--- /dev/null
+++ b/src/lib/game_controller_hsl/.github/workflows/build_and_test_rolling.yaml
@@ -0,0 +1,34 @@
+# This is a basic workflow to help you get started with Actions
+
+name: Build and Test (rolling)
+
+# Controls when the action will run.
+on:
+ # Triggers the workflow on push
+ push:
+ branches: [ rolling ]
+
+ # Triggers the workflow on pull requests
+ pull_request:
+ branches: [ rolling ]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "build"
+ build:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+ container:
+ image: ubuntu:noble
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ - uses: ros-tooling/setup-ros@v0.7
+ with:
+ use-ros2-testing: true
+ - uses: ros-tooling/action-ros-ci@v0.4
+ with:
+ target-ros2-distro: rolling
diff --git a/src/lib/game_controller_hsl/.gitignore b/src/lib/game_controller_hsl/.gitignore
new file mode 100644
index 0000000000..68a82f03c6
--- /dev/null
+++ b/src/lib/game_controller_hsl/.gitignore
@@ -0,0 +1,4 @@
+__pycache__
+*.pyc
+
+.vscode
diff --git a/src/lib/game_controller_hsl/.gitrepo b/src/lib/game_controller_hsl/.gitrepo
new file mode 100644
index 0000000000..991c15b706
--- /dev/null
+++ b/src/lib/game_controller_hsl/.gitrepo
@@ -0,0 +1,12 @@
+; DO NOT EDIT (unless you know what you are doing)
+;
+; This subdirectory is a git "subrepo", and this file is maintained by the
+; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme
+;
+[subrepo]
+ remote = git@github.com:bit-bots/game_controller_hsl.git
+ branch = rolling
+ commit = b92a2693616b8ca4849eca14363dda06e8e1f3d8
+ parent = 21a107e9266bd5711d75963818a3c364c50a180b
+ method = merge
+ cmdver = 0.4.9
diff --git a/src/lib/game_controller_hsl/CONTRIBUTING.md b/src/lib/game_controller_hsl/CONTRIBUTING.md
new file mode 100644
index 0000000000..6f63de9e5d
--- /dev/null
+++ b/src/lib/game_controller_hsl/CONTRIBUTING.md
@@ -0,0 +1,13 @@
+Any contribution that you make to this repository will
+be under the Apache 2 License, as dictated by that
+[license](http://www.apache.org/licenses/LICENSE-2.0.html):
+
+~~~
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+~~~
diff --git a/src/lib/game_controller_hsl/LICENSE b/src/lib/game_controller_hsl/LICENSE
new file mode 100644
index 0000000000..261eeb9e9f
--- /dev/null
+++ b/src/lib/game_controller_hsl/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
diff --git a/src/lib/game_controller_hsl/README.md b/src/lib/game_controller_hsl/README.md
new file mode 100644
index 0000000000..cdf18f8899
--- /dev/null
+++ b/src/lib/game_controller_hsl/README.md
@@ -0,0 +1,9 @@
+# Game Controller Client (RoboCup Humanoid League)
+
+[](../../actions/workflows/build_and_test_humble.yaml?query=branch:rolling)
+[](../../actions/workflows/build_and_test_jazzy.yaml?query=branch:rolling)
+[](../../actions/workflows/build_and_test_rolling.yaml?query=branch:rolling)
+
+This is the client for the humanoid league game controller. It communicates with the game controller via UDP and sends a game state message to ROS subscribers.
+
+## Still work in progress
\ No newline at end of file
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/config/game_controller_settings.yaml b/src/lib/game_controller_hsl/game_controller_hsl/config/game_controller_settings.yaml
new file mode 100644
index 0000000000..7f8c2c8734
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/config/game_controller_settings.yaml
@@ -0,0 +1,8 @@
+---
+# Game controller network settings
+
+game_controller_hsl:
+ ros__parameters:
+ listen_host: '0.0.0.0'
+ listen_port: 3838
+ answer_port: 3939
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/__init__.py b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/gamestate.py b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/gamestate.py
new file mode 100644
index 0000000000..c21d9ce57f
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/gamestate.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+
+from construct import Byte, Struct, Enum, Bytes, Const, Array, Int16ul, PaddedString, Flag, Int16sl, Float32l
+
+Short = Int16ul
+
+RobotInfoStruct = "robot_info" / Struct(
+ # define NONE 0
+ # define PENALTY_HL_KID_BALL_MANIPULATION 1
+ # define PENALTY_HL_KID_PHYSICAL_CONTACT 2
+ # define PENALTY_HL_KID_ILLEGAL_ATTACK 3
+ # define PENALTY_HL_KID_ILLEGAL_DEFENSE 4
+ # define PENALTY_HL_KID_REQUEST_FOR_PICKUP 5
+ # define PENALTY_HL_KID_REQUEST_FOR_SERVICE 6
+ # define PENALTY_HL_KID_REQUEST_FOR_PICKUP_2_SERVICE 7
+ # define MANUAL 15
+ "penalty" / Byte,
+ "secs_till_unpenalized" / Byte,
+ "warnings" / Byte,
+ "cautions" / Byte,
+ #"number_of_red_cards" / Byte,
+ #"goalkeeper" / Flag
+)
+
+TeamInfoStruct = "team" / Struct(
+ "team_number" / Byte,
+ "field_player_color" / Enum(Byte,
+ BLUE=0,
+ RED=1,
+ YELLOW=2,
+ BLACK=3,
+ WHITE=4,
+ GREEN=5,
+ ORANGE=6,
+ PURPLE=7,
+ BROWN=8,
+ GRAY=9
+ ),
+ "goalkeeper_color" / Enum(Byte,
+ BLUE=0,
+ RED=1,
+ YELLOW=2,
+ BLACK=3,
+ WHITE=4,
+ GREEN=5,
+ ORANGE=6,
+ PURPLE=7,
+ BROWN=8,
+ GRAY=9
+ ),
+ "goalkeeper" / Byte,
+ "score" / Byte,
+ "penalty_shot" / Byte, # penalty shot counter
+ "single_shots" / Short, # bits represent penalty shot success
+ "message_budget" / Short,
+ "players" / Array(20, RobotInfoStruct) #always eleven fine?
+)
+
+GAME_CONTROLLER_RESPONSE_VERSION = 19
+
+GameStateStruct = "gamedata" / Struct(
+ "header" / Const(b'RGme'),
+ "version" / Const(GAME_CONTROLLER_RESPONSE_VERSION, Byte),
+ "packet_number" / Byte,
+ "players_per_team" / Byte,
+ "competition_type" / Enum(Byte,
+ COMPETITION_TYPE_SMALL=0,
+ COMPETITION_TYPE_MIDDLE=2,
+ COMPETITION_TYPE_LARGE=1
+ ),
+ "stopped" / Flag,
+ "game_phase" / Enum(Byte,
+ GAME_PHASE_TIMEOUT=0,
+ GAME_PHASE_NORMAL=1,
+ GAME_PHASE_EXTRA_TIME =2,
+ GAME_PHASE_PENALTY_SHOOT_OUT=3
+ ),
+ "state" / Enum(Byte,
+ STATE_INITIAL=0,
+ # auf startposition gehen
+ STATE_READY=1,
+ # bereithalten
+ STATE_SET=2,
+ # spielen
+ STATE_PLAYING=3,
+ # spiel zu ende
+ STATE_FINISHED=4
+ ),
+ "set_play" / Enum(Byte,
+ SET_PLAY_NONE=0,
+ SET_PLAY_DIRECT_FREE_KICK=1,
+ SET_PLAY_INDIRECT_FREE_KICK=2,
+ SET_PLAY_PENALTY_KICK=3,
+ SET_PLAY_THROW_IN=4,
+ SET_PLAY_GOAL_KICK=5,
+ SET_PLAY_CORNER_KICK=6
+ ),
+ "first_half" / Flag,
+ "kicking_team" / Byte,
+ "secs_remaining" / Int16sl,
+ "secondary_time" / Int16sl,
+ "teams" / Array(2, "team" / TeamInfoStruct)
+)
+
+GAME_CONTROLLER_RESPONSE_VERSION = 4
+
+ResponseStruct = Struct(
+ "header" / Const(b"RGrt"),
+ "version" / Const(GAME_CONTROLLER_RESPONSE_VERSION, Byte),
+ "player_number" / Byte,
+ "team_number" / Byte,
+ "fallen" / Flag,
+ "pose" / Float32l[3],
+ "ball_age" / Float32l,
+ "ball" / Float32l[2]
+)
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/receiver.py b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/receiver.py
new file mode 100755
index 0000000000..86a419daba
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/receiver.py
@@ -0,0 +1,285 @@
+# Copyright (c) 2023 Hamburg Bit-Bots
+#
+# 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.
+
+import socket
+import rclpy
+
+from construct import ConstError
+from rclpy.node import Node
+from rclpy.time import Time
+from rclpy.duration import Duration
+from std_msgs.msg import Header
+from construct import Container
+from geometry_msgs.msg import PointStamped
+from std_msgs.msg import Float32, Bool
+from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus
+from game_controller_hsl.gamestate import GameStateStruct, ResponseStruct
+from game_controller_hsl.utils import get_parameters_from_other_node
+from game_controller_hsl_interfaces.msg import GameState, PlayerStatusPose
+
+
+class GameStateReceiver(Node):
+ """This class puts up a simple UDP Server which receives the
+ *addr* parameter to listen to the packages from the game_controller.
+
+ If it receives a package it will be interpreted with the construct data
+ structure and the :func:`on_new_gamestate` will be called with the content.
+
+ After this we send a package back to the GC"""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(
+ "game_controller",
+ *args,
+ **kwargs,
+ allow_undeclared_parameters=True,
+ automatically_declare_parameters_from_overrides=True,
+ )
+
+ # Check if we have the team and bot id parameters or if we should get them from the blackboard
+ if self.has_parameter("team_id") and self.has_parameter("bot_id"):
+ self.get_logger().info("Found team_id and bot_id parameter, using them")
+ # Get the parameters from our node
+ self.team_number = self.get_parameter("team_id").value
+ self.player_number = self.get_parameter("bot_id").value
+ else:
+ self.get_logger().info(
+ "No team_id and bot_id parameter set in game_controller, getting them from blackboard"
+ )
+ # Get the parameter names from the parameter server
+ param_blackboard_name: str = self.get_parameter("parameter_blackboard_name").value
+ team_id_param_name: str = self.get_parameter("team_id_param_name").value
+ bot_id_param_name: str = self.get_parameter("bot_id_param_name").value
+ # Get the parameters from the blackboard
+ params = get_parameters_from_other_node(
+ self, param_blackboard_name, [team_id_param_name, bot_id_param_name]
+ )
+ # Set the parameters
+ self.team_number = params[team_id_param_name]
+ self.player_number = params[bot_id_param_name]
+
+ self.is_fallen: bool = False
+ self.ball_age: float = 100 # Start with high value to show low confidence
+ self.ball_position_msg: PointStamped = PointStamped()
+ self.pose_msg: PlayerStatusPose = PlayerStatusPose()
+
+ # Create subscribers
+ self.create_subscription(PointStamped, "hsl_gamecontroller/ball_position", self.ball_position_cb, 1)
+ self.create_subscription(Float32, "hsl_gamecontroller/ball_age", self.ball_age_cb, 1)
+ self.create_subscription(Bool, "hsl_gamecontroller/is_fallen", self.is_fallen_cb, 1)
+ self.create_subscription(PlayerStatusPose, "hsl_gamecontroller/pose", self.pose_cb, 1)
+
+ self.get_logger().info(f"We are playing as player {self.player_number} in team {self.team_number}")
+
+ # The publisher for the game state
+ self.state_publisher = self.create_publisher(GameState, "gamestate", 1)
+
+ # The publisher for the diagnostics
+ self.diagnostic_pub = self.create_publisher(DiagnosticArray, "diagnostics", 1)
+
+ # The time in seconds after which we assume the game controller is lost
+ # and we tell the robot to move
+ self.game_controller_lost_time = 5
+
+ # The address listening on and the port for sending back the robots meta data
+ self.addr = (self.get_parameter("listen_host").value, self.get_parameter("listen_port").value)
+ self.answer_port = self.get_parameter("answer_port").value
+
+ # The time of the last package
+ self.last_package_time: Time = self.get_clock().now()
+
+ # Create the socket we want to use for the communications
+ self.socket = self._open_socket()
+
+ def ball_position_cb(self, msg: PointStamped):
+ self.ball_position_msg = msg
+
+ def ball_age_cb(self, msg: Float32):
+ self.ball_age = msg.data
+
+ def is_fallen_cb(self, msg: Bool):
+ self.is_fallen = msg.data
+
+ def pose_cb(self, msg: PlayerStatusPose):
+ self.pose_msg = msg
+
+ def _open_socket(self) -> socket.socket:
+ """Creates the socket"""
+ new_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
+ new_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ new_socket.bind(self.addr)
+ new_socket.settimeout(2)
+ return new_socket
+
+ def receive_forever(self):
+ """Waits in a loop for new packages"""
+ while rclpy.ok():
+ # Try to receive a package
+ self.receive_and_answer_once()
+ # Check if we didn't receive a package for a long time for publishing diagnostics
+ received_message_lately = self.get_time_since_last_package() < Duration(
+ seconds=self.game_controller_lost_time
+ )
+ self.publish_diagnostics(received_message_lately)
+
+ def receive_and_answer_once(self):
+ """Receives a package, interprets it and sends an answer."""
+ try:
+ # Receive the package
+ data, peer = self.socket.recvfrom(GameStateStruct.sizeof())
+
+ # Parse the package based on the GameStateStruct
+ # This throws a ConstError if it doesn't work
+ parsed_state = GameStateStruct.parse(data)
+
+ # Assign the new package after it parsed successful to the state
+ self.last_package_time = self.get_clock().now()
+
+ # Build the game state message and publish it
+ self.state_publisher.publish(self.build_game_state_msg(parsed_state))
+
+ # Answer the GameController
+ self.answer_to_gamecontroller(peer)
+
+ except AssertionError as ae:
+ self.get_logger().error(str(ae))
+ except socket.timeout:
+ self.get_logger().info("No GameController message received (socket timeout)", throttle_duration_sec=5)
+ except ConstError:
+ self.get_logger().warn("Parse Error: Probably using an old protocol!")
+ except IOError as e:
+ self.get_logger().warn(f"Error while sending keep-alive: {str(e)}")
+
+ def publish_diagnostics(self, received_message_lately: bool):
+ """
+ This publishes a Diagnostics Array.
+ """
+ # initialize DiagnsticArray message
+ diag_array = DiagnosticArray()
+
+ # configure DiagnosticStatus message
+ diag = DiagnosticStatus(name="Game Controller", hardware_id="Game Controller")
+ if not received_message_lately:
+ self.get_logger().info("No GameController message received", throttle_duration_sec=5)
+ diag.message = (
+ "Lost connection to game controller for "
+ + str(int(self.get_time_since_last_package().nanoseconds / 1e9))
+ + " sec"
+ )
+ diag.level = DiagnosticStatus.WARN
+ else:
+ diag.message = "Connected"
+ diag.level = DiagnosticStatus.OK
+
+ diag_array.status.append(diag)
+
+ # add timestamp to header and publish DiagnosticArray
+ diag_array.header.stamp = self.get_clock().now().to_msg()
+ self.diagnostic_pub.publish(diag_array)
+
+ def answer_to_gamecontroller(self, peer):
+ """Sends a life sign to the game controller"""
+ # Build the answer package
+ data = ResponseStruct.build(
+ dict(
+ player_number=self.player_number,
+ team_number=self.team_number,
+ fallen=self.is_fallen,
+ pose=self.pose_msg.pose,
+ ball_age=self.ball_age,
+ ball=[self.ball_position_msg.point.x, self.ball_position_msg.point.y],
+ )
+ )
+ # Send the package
+ self.get_logger().debug(f"Sending answer to {peer[0]}:{self.answer_port}")
+ try:
+ self.socket.sendto(data, (peer[0], self.answer_port))
+ except Exception as e:
+ self.get_logger().error(f"Network Error: {str(e)}")
+
+ def build_game_state_msg(self, state) -> GameState:
+ """Builds a GameState message from the game state"""
+
+ # Get the team objects sorted into own and rival team
+ own_team = GameStateReceiver.select_team_by(lambda team: team.team_number == self.team_number, state.teams)
+ rival_team = GameStateReceiver.select_team_by(lambda team: team.team_number != self.team_number, state.teams)
+
+ # Add some assertions to make sure everything is fine
+ assert not (own_team is None or rival_team is None), (
+ f"Team {self.team_number} not playing, only {state.teams[0].team_number} and {state.teams[1].team_number}"
+ )
+
+ assert self.player_number <= len(own_team.players), f"Robot {self.player_number} not playing"
+
+ this_robot = own_team.players[self.player_number - 1]
+
+ return GameState(
+ header=Header(stamp=self.get_clock().now().to_msg()),
+ players_per_team=state.players_per_team,
+ competition_type=state.competition_type.intvalue,
+ game_phase=state.game_phase.intvalue,
+ main_state=state.state.intvalue,
+ set_play=state.set_play.intvalue,
+ kicking_team=state.kicking_team,
+ first_half=state.first_half,
+ stopped=state.stopped,
+ own_score=own_team.score,
+ rival_score=rival_team.score,
+ secs_remaining=state.secs_remaining,
+ secondary_time=state.secondary_time,
+ penalized=this_robot.penalty != 0,
+ seconds_till_unpenalized=this_robot.secs_till_unpenalized,
+ warings=this_robot.warnings,
+ cautions=this_robot.cautions,
+ own_player_color=own_team.field_player_color.intvalue,
+ own_goalie_color=own_team.goalkeeper_color.intvalue,
+ rival_player_color=rival_team.field_player_color.intvalue,
+ rival_goalie_color=rival_team.goalkeeper_color.intvalue,
+ # --- Gibt es nicht mehr? ---
+ # drop_in_team = state.drop_in_team,
+ # drop_in_time = state.drop_in_time,
+ penalty_shot=own_team.penalty_shot,
+ single_shots=own_team.single_shots,
+ # --- Gibt es nicht mehr? Waren die ähnlich wie Message Budget? ---
+ # coach_message = own_team.coach_message,
+ message_budget=own_team.message_budget,
+ team_mates_with_penalty=[player.penalty != 0 for player in own_team.players],
+ # --- Gibt es nicht mehr? Selber bemerken ob man rot hat? ---
+ # team_mates_with_red_card = [player.number_of_red_cards != 0 for player in own_team.players],
+ )
+
+ def get_time_since_last_package(self) -> Duration:
+ """Returns the time in seconds since the last package was received"""
+ return self.get_clock().now() - self.last_package_time
+
+ @staticmethod
+ def select_team_by(predicate: callable, teams: list[Container]) -> Container:
+ """Selects the team based on the predicate"""
+ selected = [team for team in teams if predicate(team)]
+ return next(iter(selected), None)
+
+
+def main(args=None):
+ rclpy.init(args=args)
+ receiver = GameStateReceiver()
+
+ try:
+ receiver.receive_forever()
+ except KeyboardInterrupt:
+ receiver.destroy_node()
+ rclpy.shutdown()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/utils.py b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/utils.py
new file mode 100644
index 0000000000..58a24d5711
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/game_controller_hsl/utils.py
@@ -0,0 +1,32 @@
+from typing import Any
+
+import rclpy
+from rclpy.node import Node
+from rcl_interfaces.srv import GetParameters
+from rclpy.parameter import parameter_value_to_python
+
+
+def get_parameters_from_other_node(own_node: Node,
+ other_node_name: str,
+ parameter_names: list[str],
+ service_timeout_sec: float = 20.0) -> dict[str, Any]:
+ """
+ Used to receive parameters from other running nodes.
+ Returns a dict with requested parameter name as dict key and parameter value as dict value.
+
+ From bitbots_utils (https://github.com/bit-bots/bitbots_misc)
+ """
+ client = own_node.create_client(GetParameters, f'{other_node_name}/get_parameters')
+ ready = client.wait_for_service(timeout_sec=service_timeout_sec)
+ if not ready:
+ raise RuntimeError(f'Wait for {other_node_name} parameter service timed out')
+ request = GetParameters.Request()
+ request.names = parameter_names
+ future = client.call_async(request)
+ rclpy.spin_until_future_complete(own_node, future)
+ response = future.result()
+
+ results = {} # Received parameter
+ for i, param in enumerate(parameter_names):
+ results[param] = parameter_value_to_python(response.values[i])
+ return results
\ No newline at end of file
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/launch/game_controller.launch b/src/lib/game_controller_hsl/game_controller_hsl/launch/game_controller.launch
new file mode 100644
index 0000000000..1e4cedbc64
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/launch/game_controller.launch
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/package.xml b/src/lib/game_controller_hsl/game_controller_hsl/package.xml
new file mode 100644
index 0000000000..e86607bf88
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/package.xml
@@ -0,0 +1,31 @@
+
+
+
+ game_controller_hsl
+ 1.1.0
+
+ The game_controller_hsl packages receives packets from the GameController and
+ republishes them as GameState ROS messages. It sends response packets
+ back to the GameController.
+
+
+ Timon Engelke
+ Hamburg Bit-Bots
+
+ Apache License 2.0
+
+ Timon Engelke
+
+ rosidl_default_generators
+ rosidl_default_runtime
+
+ diagnostic_msgs
+ game_controller_hsl_interfaces
+ python3-construct
+ rclpy
+ std_msgs
+
+
+ ament_python
+
+
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/resource/game_controller_hsl b/src/lib/game_controller_hsl/game_controller_hsl/resource/game_controller_hsl
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/scripts/sim_gamestate.py b/src/lib/game_controller_hsl/game_controller_hsl/scripts/sim_gamestate.py
new file mode 100755
index 0000000000..96e6daa377
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/scripts/sim_gamestate.py
@@ -0,0 +1,186 @@
+#!/usr/bin/env python3
+
+# This script was based on the teleop_twist_keyboard package
+# original code can be found at https://github.com/ros-teleop/teleop_twist_keyboard
+# The script provides a simple mechanism to test robot behavior in different game states,
+# when no game controller is running
+
+import sys
+import select
+import termios
+import tty
+
+import rclpy
+from rclpy.node import Node
+from rclpy.qos import QoSProfile, DurabilityPolicy
+
+from game_controller_hsl_interfaces.msg import GameState
+from game_controller_hsl.utils import get_parameters_from_other_node
+
+
+class SimGamestate(Node):
+ msg = """Setting the GameState by entering a number:
+
+0: STATE_INITIAL = 0
+1: STATE_READY = 1
+2: STATE_SET = 2
+3: STATE_PLAYING =3
+4: STATE_FINISHED = 4
+
+5: COMPETITION_TYPE_SMALL = 0
+6: COMPETITION_TYPE_MIDDLE = 1
+7: COMPETITION_TYPE_LARGE = 3
+
+Set the game phase by entering:
+a: GAME_PHASE_TIMEOUT = 0
+b: GAME_PHASE_NORMAL = 1
+c: GAME_PHASE_EXTRA_TIME = 2
+d: GAME_PHASE_PENALTY_SHOOT_OUT = 3
+
+Set play states by entering:
+e: SET_PLAY_NONE = 0
+f: SET_PLAY_DIRECT_FREE_KICK = 1
+g: SET_PLAY_INDIRECT_FREE_KICK = 2
+h: SET_PLAY_PENALTY_KICK = 3
+i: SET_PLAY_THROW_IN = 4
+j: SET_PLAY_GOAL_KICK = 5
+k: SET_PLAY_CORNER_KICK = 6
+
+p: toggle penalized
+t: toggle kicking team
+s: toggle stopped state
++: increase own score by 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CTRL-C to quit
+"""
+
+ def __init__(self):
+ super().__init__("sim_gamestate")
+ self.logger = self.get_logger()
+
+ # Try fetching team id from parameter blackboard or ask user for input
+ try:
+ self.team_id = get_parameters_from_other_node(self, "parameter_blackboard", ["team_id"])["team_id"]
+ except KeyError:
+ self.logger.error("No team id found in parameter blackboard")
+ self.team_id = int(input("Please enter team id: "))
+
+ self.has_kick_off = True
+
+ self.settings = termios.tcgetattr(sys.stdin)
+
+ self.publisher = self.create_publisher(
+ GameState,
+ "gamestate",
+ QoSProfile(durability=DurabilityPolicy.TRANSIENT_LOCAL, depth=1),
+ )
+
+ def loop(self):
+ game_state_msg = GameState()
+ game_state_msg.header.stamp = self.get_clock().now().to_msg()
+
+ # Init kicking team to our teamID
+ game_state_msg.kicking_team = self.team_id
+
+ try:
+ print(self.msg)
+ while True:
+ key = self.get_key()
+ if key == "\x03":
+ break
+ elif key in ["0", "1", "2", "3", "4"]:
+ int_key = int(key)
+ game_state_msg.main_state = int_key
+ elif key in ["5", "6", "7"]:
+ int_key = int(key)
+ game_state_msg.competition_type = int_key - 5
+ elif key == "p": # penalize / unpenalize
+ game_state_msg.penalized = not game_state_msg.penalized
+ elif key in [chr(ord("a") + x) for x in range(4)]:
+ game_state_msg.game_phase = ord(key) - ord("a")
+ elif key in [chr(ord("e") + x) for x in range(7)]:
+ game_state_msg.set_play = ord(key) - ord("e")
+ elif key == "t":
+ if game_state_msg.kicking_team == self.team_id:
+ game_state_msg.kicking_team = self.team_id + 1
+ else:
+ game_state_msg.kicking_team = self.team_id
+ elif key == "s":
+ game_state_msg.stopped = not game_state_msg.stopped
+ elif key == "+":
+ game_state_msg.own_score += 1
+
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ sys.stdout.write("\x1b[A")
+ self.publisher.publish(game_state_msg)
+ print(
+ f"""
+
+Competition Type: {game_state_msg.competition_type}
+Game Phase: {game_state_msg.game_phase}
+Set Play: {game_state_msg.set_play}
+Main State: {game_state_msg.main_state}
+
+Kicking Team: {game_state_msg.kicking_team}
+
+Penalized: {game_state_msg.penalized}
+Stopped: {game_state_msg.stopped}
+
+Goals(Own : Rival): {game_state_msg.own_score} : {game_state_msg.rival_score}
+
+CTRL-C to quit
+"""
+ )
+
+ except Exception as e:
+ print(e)
+
+ finally:
+ print()
+
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.settings)
+
+ def get_key(self):
+ tty.setraw(sys.stdin.fileno())
+ select.select([sys.stdin], [], [], 0)
+ return_key = sys.stdin.read(1)
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.settings)
+ return return_key
+
+
+if __name__ == "__main__":
+ rclpy.init(args=None)
+ node = SimGamestate()
+ node.loop()
+ node.destroy_node()
+ rclpy.shutdown()
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/setup.cfg b/src/lib/game_controller_hsl/game_controller_hsl/setup.cfg
new file mode 100644
index 0000000000..2fbfb2ad13
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/setup.cfg
@@ -0,0 +1,4 @@
+[develop]
+script_dir=$base/lib/game_controller_hsl
+[install]
+install_scripts=$base/lib/game_controller_hsl
diff --git a/src/lib/game_controller_hsl/game_controller_hsl/setup.py b/src/lib/game_controller_hsl/game_controller_hsl/setup.py
new file mode 100644
index 0000000000..80ee92fd3a
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl/setup.py
@@ -0,0 +1,34 @@
+import glob
+
+from setuptools import find_packages, setup
+
+package_name = 'game_controller_hsl'
+
+setup(
+ name=package_name,
+ packages=find_packages(exclude=['test']),
+ data_files=[
+ ('share/ament_index/resource_index/packages',
+ ['resource/' + package_name]),
+ ('share/' + package_name, ['package.xml']),
+ ('share/' + package_name + "/config",
+ glob.glob('config/*.yaml')),
+ ('share/' + package_name + '/launch',
+ glob.glob('launch/*.launch')),
+ ],
+ install_requires=[
+ 'launch',
+ 'setuptools',
+ 'construct',
+ ],
+ scripts=['scripts/sim_gamestate.py'],
+ zip_safe=True,
+ keywords=['ROS'],
+ license='MIT',
+ tests_require=['pytest'],
+ entry_points={
+ 'console_scripts': [
+ 'game_controller = game_controller_hsl.receiver:main',
+ ],
+ }
+)
diff --git a/src/lib/game_controller_hsl/game_controller_hsl_interfaces/.gitignore b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/.gitignore
new file mode 100644
index 0000000000..1716c0f2fa
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/.gitignore
@@ -0,0 +1,12 @@
+# auto-generated documentation
+**/docs/_build
+**/docs/_out
+**/docs/cppapi
+**/docs/pyapi
+
+.idea/*
+*.pyc
+.pyenv2/*
+.pyenv3/*
+.vscode/*
+
diff --git a/src/lib/game_controller_hsl/game_controller_hsl_interfaces/CMakeLists.txt b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/CMakeLists.txt
new file mode 100644
index 0000000000..0f527ede72
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.5)
+project(game_controller_hsl_interfaces)
+
+find_package(ament_cmake REQUIRED)
+find_package(ament_lint_auto REQUIRED)
+find_package(rosidl_default_generators REQUIRED)
+find_package(std_msgs REQUIRED)
+find_package(geometry_msgs REQUIRED)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+rosidl_generate_interfaces(${PROJECT_NAME}
+ "msg/GameState.msg"
+ "msg/PlayerStatusPose.msg"
+ DEPENDENCIES
+ std_msgs
+ geometry_msgs
+)
+
+ament_package()
diff --git a/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/GameState.msg b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/GameState.msg
new file mode 100644
index 0000000000..a98eb004b0
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/GameState.msg
@@ -0,0 +1,73 @@
+# This message provides all information from the game controller
+# for additional information see documentation of the game controller
+# https://github.com/bhuman/GameController
+
+
+std_msgs/Header header
+
+uint8 players_per_team
+
+uint8 COMPETITION_TYPE_SMALL = 0
+uint8 COMPETITION_TYPE_MIDDLE = 1
+uint8 COMPETITION_TYPE_LARGE = 2
+uint8 competition_type
+
+uint8 GAME_PHASE_NORMAL = 0
+uint8 GAME_PHASE_PENALTY_SHOOT_OUT = 1
+uint8 GAME_PHASE_EXTRA_TIME = 2
+uint8 GAME_PHASE_TIMEOUT = 3
+uint8 game_phase
+
+uint8 STATE_INITIAL = 0
+uint8 STATE_READY = 1
+uint8 STATE_SET = 2
+uint8 STATE_PLAYING = 3
+uint8 STATE_FINISHED = 4
+uint8 main_state
+
+uint8 SET_PLAY_NONE = 0
+uint8 SET_PLAY_DIRECT_FREE_KICK = 1
+uint8 SET_PLAY_INDIRECT_FREE_KICK = 2
+uint8 SET_PLAY_PENALTY_KICK = 3
+uint8 SET_PLAY_THROW_IN = 4
+uint8 SET_PLAY_GOAL_KICK = 5
+uint8 SET_PLAY_CORNER_KICK = 6
+uint8 set_play
+
+uint8 kicking_team
+bool first_half
+bool stopped
+uint8 own_score
+uint8 rival_score
+
+# Seconds remaining for the game half
+int16 secs_remaining
+# Seconds remaining for things like kickoff
+int16 secondary_time
+bool penalized
+uint16 seconds_till_unpenalized
+uint8 warnings
+uint8 cautions
+
+uint8 TEAM_BLUE = 0
+uint8 TEAM_RED = 1
+uint8 TEAM_YELLOW = 2
+uint8 TEAM_BLACK = 3
+uint8 TEAM_WHITE = 4
+uint8 TEAM_GREEN = 5
+uint8 TEAM_ORANGE = 6
+uint8 TEAM_PURPLE = 7
+uint8 TEAM_BROWN = 8
+uint8 TEAM_GRAY = 9
+uint8 own_player_color
+uint8 own_goalie_color
+uint8 rival_player_color
+uint8 rival_goalie_color
+
+# The number of the current penalty shot during penalty shootout
+uint8 penalty_shot
+# a binary pattern indicating the successful penalty shots (1 for successful, 0 for unsuccessful)
+uint16 single_shots
+
+uint8 message_budget
+bool[] team_mates_with_penalty
diff --git a/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/PlayerStatusPose.msg b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/PlayerStatusPose.msg
new file mode 100644
index 0000000000..f2f6f218ad
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/msg/PlayerStatusPose.msg
@@ -0,0 +1,22 @@
+# This Pose message is based on the following field coordinate system:
+#
+# y
+# ^ ______________________
+# | M | | | O
+# | Y |_ -x, y | x, y _| P
+# | G | | | | | P
+# 0 + O | | ( ) | | G
+# | A |_| | |_| O
+# | L | -x,-y | x,-y | A
+# | |__________|__________| L
+# |
+# +------------------+--------------> x
+# 0
+#
+# 0,0 is the center of the filed and we expect (x, y, theta) with theta
+# being the euler angle in radians, 0 along the +x axis,
+# increasing counter clockwise
+
+std_msgs/Header header
+
+float32[3] pose
diff --git a/src/lib/game_controller_hsl/game_controller_hsl_interfaces/package.xml b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/package.xml
new file mode 100644
index 0000000000..07ee19e59b
--- /dev/null
+++ b/src/lib/game_controller_hsl/game_controller_hsl_interfaces/package.xml
@@ -0,0 +1,28 @@
+
+
+
+ game_controller_hsl_interfaces
+ 0.0.1
+ RoboCup Humanoid League Game Controller Messages
+
+ Florian Vahl
+ Hamburg Bit-Bots
+
+ Apache License 2.0
+
+ Marc Bestmann
+
+ ament_cmake
+ rosidl_default_generators
+
+ std_msgs
+ ament_lint_auto
+
+ rosidl_default_generators
+ rosidl_default_runtime
+ rosidl_interface_packages
+
+
+ ament_cmake
+
+