diff --git a/pixi.lock b/pixi.lock index 64d2eac..d1f9332 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,4 +1,8 @@ -version: 6 +version: 7 +platforms: +- name: linux-64 +- name: osx-64 +- name: osx-arm64 environments: default: channels: @@ -7,933 +11,800 @@ environments: - https://pypi.org/simple packages: linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.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/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - 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/ast-serialize-0.5.0-py310hd8a072f_1.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/linux-64/cffi-2.0.0-py314h4a8dc5f_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/cgsi-gsoap-1.3.12-h32d023c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/davix-0.8.10-he574acc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dcap-2.47.14-h481617c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.3-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dcap-2.47.14-hbd4789f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gct-6.2.1705709074-h6bbaf85_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gfal2-2.23.5-h3ec3711_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gsoap-2.8.123-h8dc497d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.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/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.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.21.3-h659f571_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/libblas-3.11.0-5_h4a7cf45_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py314h3a4f467_7.conda - - 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/libcurl-8.18.0-h4e3cde8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.90.0-py314h3a4f467_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-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/libgcc-15.2.0-he0feb66_17.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_17.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_17.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_17.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_17.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - - 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/liblapack-3.11.0-8_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_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-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.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/libnghttp2-1.68.1-h877daf1_0.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/libopenblas-0.3.30-pthreads_h94d23a6_4.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/libopenblas-0.3.33-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-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_17.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_17.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.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/libuuid-2.42.1-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-devel-2.15.1-he237659_1.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/libxml2-16-2.15.3-hca6bf5a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.3-h49c6c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/m2crypto-0.45.1-py314haf11619_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py314h5bd0f2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py314h2b28147_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.1.0-py314h518bba1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - 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.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py314h0f05182_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_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/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_100_cp314.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-gfal2-1.13.1-py314h1571e64_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.7.8-py314h0f05182_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.5-habeac84_100_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-gfal2-1.13.1-py314h29c34cb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.11.0-py314h0f05182_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.0-h40fa522_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scitokens-cpp-1.3.0-h096d96b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.2-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py314h1bee95f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.16-h6a952e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scitokens-cpp-1.4.0-h096d96b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/srm-ifce-1.24.6-h3b26d37_2.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/tomli-2.4.0-pyhcf101f3_0.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-py314h9891dd4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/voms-2.1.0rc3-h25bd2b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xrootd-5.9.1-py314h75aeccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/voms-2.1.3-hd035966_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xrootd-5.9.2-py314h422236f_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/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - pypi: https://files.pythonhosted.org/packages/cd/22/4d16dca3bd1d6475a53063eb72150269cea1a0a201b55288b3402f61f119/aiobotocore-3.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_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/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.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/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - pypi: . + - pypi: git+https://gitlab.cern.ch/jlisalab/LHCbDIRAC.git?rev=modules-to-cwl-migration#ab38648ea4722414faff85666a0abf2200d9f99d + - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/3e50840a88dce2f0ef15cee9bdd1977bf86e40dac05f180ffe55fa6beaa9/diracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5e/0a/3966f239e1d9da93cb755dc0213835ce4e9ed93645192878d0a055ecdc31/boto3-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/51/aac7e419521d5519e13087a7198623655648c939822bd7f4bdc9ccbe07f9/botocore-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/df/2dd32cce20cbcf6f2ec456b58d44368161ad28320729f64e5e1d5d7bd0ae/cachetools-7.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/db/2b/1239938a2629c29363e07724d7bd4c87a8b566947ecee2afb5f5ac34e1bb/cwl_upgrader-1.2.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/63/4b/ccab2a5ca9e0b6553810b85c06387e60fc9443cec3c987e3a062705bd225/cwl_utils-0.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/15/a3/7c8f704b8dc07dfe0a5d01c2edbfd88317aa8e5e3fa7c743eb7a085ae767/wrapt-2.2.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/0f/f6121b90b86b9093c066889274d26a1de3f29969d45c2ed1ecbe2033cb78/cramjam-2.11.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1a/03/49650a5b9c188f3a7401f73155254816dd2b3037a6ce2dcf27cc10f10162/rucio_clients-40.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/60/ff126095a42de830b585982371a2689db27353ee6ef5ed7e96124e8cb632/awkward-2.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/1c/ab905d19a1349e847e37e02933316d17adfd1dd70b64d366885ab0bd959d/xattr-1.3.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/09/2bd1ed7f8689b20e51727952cac8329d50c694dc32b2eba06ba5bc742b37/xxhash-3.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/24/25/2201973529af2c954de0bb725323c3aaed6d7f0ceee8f550dec9185df013/typer-0.26.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/99/b8d3c04d811bc65539684402d10f14c7f64d7fde07650266ff9cf644c231/lhcbdiracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/b4/11f8a31d8b67cca3371e046db49baa7c0594d71eb40ac8121e2fc0888db0/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/b4/a9c880c251c321a6bcf21554678dedee04877cec12c0c4e6e739b4998c0e/lhcbdiracx_client-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/99/85a0cd9601506cda69c34761f0365f68922a92cef19b1f10639a2afcad82/awkward_cpp-53-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/cd/6e32a8bc8dea793c7015c11cceace07cb7a2d41839c694a8c3bba3cc28f1/dirac-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/ce/ed422816fb30ffa3bc11597b30d5deca06b4a1388707a04215da73c65b53/levenshtein-0.27.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2b/76/7f1bfd6afff4c5e38e36a3c6d68eb5f4b7311ea80baf693db78d95b603c4/propcache-0.5.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/31/26/ef168b184a25701f9995e8fb7e503fafd7a99c1c77cda1bc1a26ea2ed486/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/32/4b/b99e37f88336009971405cbb7630610322ed6fbfa31e1d7ab3fbf3049a2d/invoke-2.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/f8497ef8b873a8bb2a750ee2a6c5f0fc22258e1acb6245fd237042a6c279/fabric-3.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/34/98a2f52245f4d47be93b580dae5f9861ef58977d73a79eb47c58f1ad1f3a/xmltodict-1.0.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/56/99a7cf6ca8533695874cf804369221d03bf5e869a7e0b38acbf4dbe8deeb/cwlformat-2022.2.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/ee/a7aba2b112c5ae879d5cfb231c75189a7fd2a5e84b6af7e07dd71fb2bb35/cwltool-3.1.20260108082145-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/c0/63d2ab6ef062e05e795fb49ebcd8a907c1d4f78d9f01c577266b12bd0da2/dirac-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/d2/500c9ae651fd3821ca70814aa40cb5ab9bab9b479387ccd8dcb4df745d44/diraccommon-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ab/7e/5f02b757bb825e5cdc65f6f7a12c209963bec877d61497393bea8f41f9ce/diracx_api-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/28/87e78ff0d6041f40431d88b8aa3b645be7476a420d8dcbf7197f5b394c5c/diracx_cli-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/61/0c78d9778bffd844863d3173a5fefb506d7131ceebecee523a9e27024aa1/diracx_client-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/c9/459da97eb93fad89738951972671d44be197610242b8da88a0384791ea7e/diracx_core-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/d0/f301f83ac8dbe53442c5a43f6a39016f94f754d7a9815a875b65e218a307/pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/3d/ef4dcfffd22d27a61805d8ed9f7fb888495bc6aa88648fa07c1eaa5586b6/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/47/85/d06247fc88ba278227397da5604287e4762f130347dc968f6d205eb15ee6/sh-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/19/0380af745f151a1648657bbcef0fb49ac28bf09083d94498163ffd9b32dc/dominate-2.9.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/58/3b/1cdec6772bdbaf7b25dab360c59f03cadf05492dd724c6540af905389b07/pandas-3.0.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5b/db/325c6d7312d2200251c52323878281045aaffcb5586612296484e4280eaa/azure_core-1.41.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/e8/2e6301567e6debaad6abae0e217428471651ce877537b7095b6a8e7d8cd2/fts3-3.14.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/8f/cb844e6a5079bfecacce9c96ed0db9a15294568079bfa8a89b0eb2643c85/signurlarity-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/10/b37ac718c5903758fa9058a5182026a4f3b65443196b82c7840389ea0dbd/lbplatformutils-4.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/03/d426348a5f13514182c1d1afab2285ec25a94bacc8d2f8d2cc627496754a/uproot-5.7.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/6e/f49568ec5e39dbea953d4ace39aebe7d732a3fefa4e2c0f10c5f966d52d5/lhcbdiracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/3e/c0b690253f0b82d86e99949af13533363acfb5432ecb5d53dd5b3bce9c34/orjson-3.11.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/56/28406aa770148a0ce2862ed93676da2aaead45f9d4259fc3bb8dd850928e/diraccommon-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/5b/eadf6d45de38d30ab603f49393b6cd2cbe7e233af8cf90197e32782b68a9/paramiko-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/dd/904873250a6554fbae40cddbf9198e3cc37a2f1319d5e1a5ce82fe269c17/s3transfer-0.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/5f/85535dfb3cfd6442d66d1df1694062c5d6df02f895329e7e120b2a3d2b8b/aiobotocore-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/18/938441025db6769a3464596b2410af3afde0b21eb2f204c6f766f68af4bd/aiohttp-3.14.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/aa/c1/dd70be50613b74e9b6cc980f94d1ee6fe1cc297369915cae84c5077f28d6/fsspec_xrootd-0.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/80/38/9d42d60dffb04b45f03dbab9430898352dba277758640751dc5cc316c521/greenlet-3.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a1/01/9674cc6d478406ae61d910cb16ca8b5699a8a9e6a2019987ebe5a5957d1d/joserfc-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/7d/58320dd3c2c814e473afa91fd50e423dab22654fd891b946818243d1508b/diracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/af/1c3540dbdccb85fca0b0bbc58cdaf514d0a830d7e0302b2059a6c627b172/python_gitlab-8.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/00/fa62404c3e347f946faa13aa21085205f9cc06ad17671e37f81a51662ae8/joserfc-1.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/a0/3e6a0b1c1ea6bec76f71473727ef27abf3cd40e9709b3ebcbfbcfaae6f79/boto3-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/4b/afc1fef8a43bafb139f57f73bbd70df82807af5934321e8112ae50668827/botocore-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/11/716dcc28a28743a3778b455a443d591837ad7c58908e234fe31307fb61a9/lhcbdiracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/53/d81269aaafccea0d33396c03035de997b743f11e648e6e27a0df99c72980/yarl-1.24.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/85/9535df0b78ba51f478c9ce7eb6d1f85535cc31fe356773b48fd9d3e563ca/rapidfuzz-3.14.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c9/b8/c73592eb90ca2b1d8144e366091214d386695c86d737c97443210db03fb2/diracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/23/49cf8ea1d129637941f06fb78f5f66077bf362762c5f6c01712c4cd0e87f/hyperscan-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d6/61/08f60ae8fa82bc57b17b80f1b3e2bb98dccdb2a46a756cad83fb2d09b144/diracx_client-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/16/4a/b4d7feb029d4e75d4882d8d1d9029938c31a2e73074f87ffcff0f4a8ba9e/lbplatformutils-4.5.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/20/35d2baebacf357b562bd081936b66cd845775442973cb033a377fd639a84/rdflib-7.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/80/97b6f357ac458d9ad9872cc3183ca09ef7439ac89e030ea43053ba1294b6/rich_argparse-1.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a1/5c/8b56b08db91e569d0a4fbfa3e492ed2026081bdd7e892f63ba1c88a2f548/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5c/48/ccd6c49477674389d55b5b5520e47d1290f4c29686c36f5674f4a7aced00/rucio_clients-39.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/89/d4/24a137517140fc8cc07f7423695b9296c993d6b6cbf2a7867d8f859de77f/schema_salad-8.9.20251102115403-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/70/98/d82f14ac7ffedbd38dfa2383f142b26d18d23ca6cf35a40f4af60df666bd/sh-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/ac/19f9941c74add59d17694930ec8105d5eddeee4ce56dd8632b765ca16d6c/stevedore-5.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/05/45/1256fb597bb83b58a01ddb600c59fe6fdf0e5afe333f0456ed75c0f8d7bd/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/db/56/073989deb4b5d7d6e7ea424476a4ae4bda02140f2dbeaafb14ba4864dd60/wrapt-2.1.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/1c/1c/ab905d19a1349e847e37e02933316d17adfd1dd70b64d366885ab0bd959d/xattr-1.3.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f5/e7/d8c5a7752fef68205296201f8ec2bf718f5c805a7a7e9880576c67600658/yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl osx-64: - - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_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/osx-64/cffi-2.0.0-py314h8ca4d5a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h610c526_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/davix-0.8.10-h35d429b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/dcap-2.47.14-hf4fbb18_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_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/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.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/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ast-serialize-0.5.0-py310hb9b2626_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py314h8ca4d5a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/davix-0.8.10-h35d429b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/dcap-2.47.14-hd9250f1_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gct-6.2.1705709074-h8d8e280_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gfal2-2.23.5-h6ef8084_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gsoap-2.8.123-h21ae599_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gtest-1.17.0-h9275861_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_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/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.88.0-h5950822_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-python-1.88.0-py314hee2ba4e_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-8_he492b99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.90.0-h5950822_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-python-1.90.0-py314hee2ba4e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-8_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.20.0-h8f0b9e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.7-h19cb2f5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.1-hf28f236_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-8_h859234e_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libltdl-2.4.3a-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.33-openmp_h9e49c7b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.2-h8f8c405_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtool-2.5.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuuid-2.41.3-h3fe7000_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuuid-2.42.1-h58504dd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcrypt-4.4.36-h10d778d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-he456531_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h24ca049_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h24ca049_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.3-h953d39d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.3-h953d39d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.7-h0d3cbff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/m2crypto-0.45.1-py314h90001a5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py314h6482030_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py314hfc4c462_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.10-hd8a590d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-2.1.0-py314h00bde9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.6-py314h7b24d9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.13-h2f5043c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py314hd330473_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.15-h46091d4_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/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.14.3-h4f44bb5_100_cp314.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-gfal2-1.13.1-py314hd08135f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.7.8-py314hd330473_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.14.5-h7c6738f_100_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-gfal2-1.13.1-py314h171e02c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.11.0-py314h0b69929_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py314h10d0514_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py314ha7b6dee_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.0-h5930b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scitokens-cpp-1.3.0-hcb75e18_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.2-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-2026.5.1-py314h1d56075_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.16-h1ddadc8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scitokens-cpp-1.4.0-h1c2ca81_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/srm-ifce-1.24.6-h73c9bdb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.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/osx-64/ukkonen-1.1.0-py314h473ef84_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xrootd-5.9.1-py314hb36820e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xrootd-5.9.2-py314h58906bc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda - - pypi: https://files.pythonhosted.org/packages/cd/22/4d16dca3bd1d6475a53063eb72150269cea1a0a201b55288b3402f61f119/aiobotocore-3.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: . + - pypi: git+https://gitlab.cern.ch/jlisalab/LHCbDIRAC.git?rev=modules-to-cwl-migration#ab38648ea4722414faff85666a0abf2200d9f99d + - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/3e50840a88dce2f0ef15cee9bdd1977bf86e40dac05f180ffe55fa6beaa9/diracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/a3/11d7f34ebbf3231bc907a3e6d5ee051b14d034c1bc7b65a97d5cc00516df/wrapt-2.2.1-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0e/3b/86b1caa4dee10a99f4bf9521e623359341c5e50d05158fa10c275b2bd079/xxhash-3.7.0-cp314-cp314-macosx_10_15_x86_64.whl - pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5e/0a/3966f239e1d9da93cb755dc0213835ce4e9ed93645192878d0a055ecdc31/boto3-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/51/aac7e419521d5519e13087a7198623655648c939822bd7f4bdc9ccbe07f9/botocore-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/df/2dd32cce20cbcf6f2ec456b58d44368161ad28320729f64e5e1d5d7bd0ae/cachetools-7.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/db/2b/1239938a2629c29363e07724d7bd4c87a8b566947ecee2afb5f5ac34e1bb/cwl_upgrader-1.2.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/63/4b/ccab2a5ca9e0b6553810b85c06387e60fc9443cec3c987e3a062705bd225/cwl_utils-0.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/03/49650a5b9c188f3a7401f73155254816dd2b3037a6ce2dcf27cc10f10162/rucio_clients-40.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/60/ff126095a42de830b585982371a2689db27353ee6ef5ed7e96124e8cb632/awkward-2.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/ed/9c45c468fd6c31df3fe0622394b1853c00b86545d1e297f3fb9fba1232ce/hyperscan-0.8.2-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/24/25/2201973529af2c954de0bb725323c3aaed6d7f0ceee8f550dec9185df013/typer-0.26.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/99/b8d3c04d811bc65539684402d10f14c7f64d7fde07650266ff9cf644c231/lhcbdiracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/b4/a9c880c251c321a6bcf21554678dedee04877cec12c0c4e6e739b4998c0e/lhcbdiracx_client-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/cd/6e32a8bc8dea793c7015c11cceace07cb7a2d41839c694a8c3bba3cc28f1/dirac-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/4b/b99e37f88336009971405cbb7630610322ed6fbfa31e1d7ab3fbf3049a2d/invoke-2.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/f8497ef8b873a8bb2a750ee2a6c5f0fc22258e1acb6245fd237042a6c279/fabric-3.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/34/98a2f52245f4d47be93b580dae5f9861ef58977d73a79eb47c58f1ad1f3a/xmltodict-1.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3a/98/ab4b5ed1b1b5cd973c8a3eb994c3a6aefb6ce6d399e21bb5f0316c33815c/yarl-1.24.2-cp314-cp314-macosx_10_15_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3b/56/99a7cf6ca8533695874cf804369221d03bf5e869a7e0b38acbf4dbe8deeb/cwlformat-2022.2.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/ee/a7aba2b112c5ae879d5cfb231c75189a7fd2a5e84b6af7e07dd71fb2bb35/cwltool-3.1.20260108082145-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/c0/63d2ab6ef062e05e795fb49ebcd8a907c1d4f78d9f01c577266b12bd0da2/dirac-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/d2/500c9ae651fd3821ca70814aa40cb5ab9bab9b479387ccd8dcb4df745d44/diraccommon-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ab/7e/5f02b757bb825e5cdc65f6f7a12c209963bec877d61497393bea8f41f9ce/diracx_api-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/28/87e78ff0d6041f40431d88b8aa3b645be7476a420d8dcbf7197f5b394c5c/diracx_cli-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/61/0c78d9778bffd844863d3173a5fefb506d7131ceebecee523a9e27024aa1/diracx_client-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/c9/459da97eb93fad89738951972671d44be197610242b8da88a0384791ea7e/diracx_core-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/85/d06247fc88ba278227397da5604287e4762f130347dc968f6d205eb15ee6/sh-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/19/0380af745f151a1648657bbcef0fb49ac28bf09083d94498163ffd9b32dc/dominate-2.9.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5b/db/325c6d7312d2200251c52323878281045aaffcb5586612296484e4280eaa/azure_core-1.41.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/e8/2e6301567e6debaad6abae0e217428471651ce877537b7095b6a8e7d8cd2/fts3-3.14.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/fb/011c7c717213182caf78084a9bea51c8590b0afda98001f69d9f853a495b/greenlet-3.3.1-cp314-cp314-macosx_11_0_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/8f/cb844e6a5079bfecacce9c96ed0db9a15294568079bfa8a89b0eb2643c85/signurlarity-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/10/b37ac718c5903758fa9058a5182026a4f3b65443196b82c7840389ea0dbd/lbplatformutils-4.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/03/d426348a5f13514182c1d1afab2285ec25a94bacc8d2f8d2cc627496754a/uproot-5.7.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/50/1b44d393baa94c0c6511b7305fc46c0b83433e4cf90bd7d553e115035b3e/awkward_cpp-53-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/74/6e/f49568ec5e39dbea953d4ace39aebe7d732a3fefa4e2c0f10c5f966d52d5/lhcbdiracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a1/01/9674cc6d478406ae61d910cb16ca8b5699a8a9e6a2019987ebe5a5957d1d/joserfc-1.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/41/aa3ffb3355e62e1bf91f6599b3092e866bc88487a07c524004943c7676df/rapidfuzz-3.14.5-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/81/56/28406aa770148a0ce2862ed93676da2aaead45f9d4259fc3bb8dd850928e/diraccommon-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/5b/eadf6d45de38d30ab603f49393b6cd2cbe7e233af8cf90197e32782b68a9/paramiko-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/dd/904873250a6554fbae40cddbf9198e3cc37a2f1319d5e1a5ce82fe269c17/s3transfer-0.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/54/effdcc3c0ff7a08037889200e148ebe94c16c4f653be078c7b3675955df1/pandas-3.0.3-cp314-cp314-macosx_10_15_x86_64.whl - pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/16/4a/b4d7feb029d4e75d4882d8d1d9029938c31a2e73074f87ffcff0f4a8ba9e/lbplatformutils-4.5.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl + - pypi: https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8e/eb/5da01e356015aee6ecfa1187ced87aef51364e306f5e695dd52719bf0e78/orjson-3.11.9-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/5f/85535dfb3cfd6442d66d1df1694062c5d6df02f895329e7e120b2a3d2b8b/aiobotocore-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/93/cf/5630b5e4be7d2e6bee8efe83865c925221103cf0221303b104ce134b01e2/lxml-6.1.1-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/0a/03192e78071cfb86e6d8ceae0e5dcec4bacf0fd734755263aabd01532e50/xattr-1.3.0-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/c1/dd70be50613b74e9b6cc980f94d1ee6fe1cc297369915cae84c5077f28d6/fsspec_xrootd-0.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/7d/58320dd3c2c814e473afa91fd50e423dab22654fd891b946818243d1508b/diracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/af/1c3540dbdccb85fca0b0bbc58cdaf514d0a830d7e0302b2059a6c627b172/python_gitlab-8.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/00/fa62404c3e347f946faa13aa21085205f9cc06ad17671e37f81a51662ae8/joserfc-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/a0/3e6a0b1c1ea6bec76f71473727ef27abf3cd40e9709b3ebcbfbcfaae6f79/boto3-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b5/06/c5a52f419b5d8972f8d46a7577476090d8e3263ff589ce40b5ca4968d5be/propcache-0.5.2-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/7b/4845bbf88e94586ec47a432da4e9107e3fc3ce37eb412b1398630a37f7dd/pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl + - pypi: https://files.pythonhosted.org/packages/bf/4b/afc1fef8a43bafb139f57f73bbd70df82807af5934321e8112ae50668827/botocore-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/11/716dcc28a28743a3778b455a443d591837ad7c58908e234fe31307fb61a9/lhcbdiracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b8/c73592eb90ca2b1d8144e366091214d386695c86d737c97443210db03fb2/diracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/66/f42f5c984d99e49c6cff5f26f590750f2e2f7ef1fcfb99966ab5be1b632e/aiohttp-3.14.1-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/20/35d2baebacf357b562bd081936b66cd845775442973cb033a377fd639a84/rdflib-7.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/80/97b6f357ac458d9ad9872cc3183ca09ef7439ac89e030ea43053ba1294b6/rich_argparse-1.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3e/bd/ab8459c8bb759c14a146990bf07f632c1cbec0910d4853feeee4be2ab8bb/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5c/48/ccd6c49477674389d55b5b5520e47d1290f4c29686c36f5674f4a7aced00/rucio_clients-39.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/62/86/3915cb5a603e1b1d798e1ee1ce2a0a390a0f85d35da97e4b6d1c6a45421b/schema_salad-8.9.20251102115403-cp314-cp314-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/70/98/d82f14ac7ffedbd38dfa2383f142b26d18d23ca6cf35a40f4af60df666bd/sh-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d6/61/08f60ae8fa82bc57b17b80f1b3e2bb98dccdb2a46a756cad83fb2d09b144/diracx_client-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/de/07/a1051cdbbe6d723df16d756b97f09da7c1adb69e29695c58f0392bc12515/cramjam-2.11.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/e1/2f705da403f865a5fa3449b155738dc9c53021698fd6926253a9af03180b/levenshtein-0.27.3-cp314-cp314-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f5/ac/19f9941c74add59d17694930ec8105d5eddeee4ce56dd8632b765ca16d6c/stevedore-5.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/95/a0/1c2396e272f91efe6b16a6a8bce7ad53856c8f9ae4f34ceaa711d63ec9e1/wrapt-2.1.1-cp314-cp314-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/9d/0a/03192e78071cfb86e6d8ceae0e5dcec4bacf0fd734755263aabd01532e50/xattr-1.3.0-cp314-cp314-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e4/04/3532d990fdbab02e5ede063676b5c4260e7f3abea2151099c2aa745acc4c/yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_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/osx-arm64/cffi-2.0.0-py314h44086f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-ha1cbb27_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/davix-0.8.10-h0b7473d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dcap-2.47.14-h33e0366_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_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/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.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/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ast-serialize-0.5.0-py310h3b8a9b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py314h44086f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/davix-0.8.10-h0b7473d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dcap-2.47.14-hca25ef3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gct-6.2.1705709074-h07e554c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfal2-2.23.5-h46ca294_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gsoap-2.8.123-hfb11b17_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtest-1.17.0-ha393de7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_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/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.88.0-h0419b56_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-python-1.88.0-py314hce24fef_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-8_h51639a9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-python-1.90.0-py314hce24fef_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-8_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.7-h55c6f16_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_17.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-8_hd9741b5_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libltdl-2.4.3a-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.33-openmp_he657e61_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtool-2.5.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuuid-2.41.3-h0053d0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuuid-2.42.1-h7b1c3a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcrypt-4.4.36-h93a5062_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h5ef1a60_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h8d039ee_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.3-h5654f7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.7-hc7d1edf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/m2crypto-0.45.1-py314hdb6fb3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py314hbdd0d06_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py314hae46ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hbe55e7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-2.1.0-py314h2fbedac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.6-py314hb79c6fa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py314ha14b1ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_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/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.3-h4c637c5_100_cp314.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-gfal2-1.13.1-py314h5c1db39_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.7.8-py314ha14b1ff_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.5-h4c637c5_100_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-gfal2-1.13.1-py314hbaa542d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.11.0-py314ha14b1ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py314h6e9b3f0_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py314haad56a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.0-h279115b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scitokens-cpp-1.3.0-h608d757_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.2-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-2026.5.1-py314he1d1ac0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.16-h80928e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scitokens-cpp-1.4.0-h608d757_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/srm-ifce-1.24.6-he0fb9dd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.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/osx-arm64/ukkonen-1.1.0-py314h6cfcd04_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xrootd-5.9.1-py314h6e96a01_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xrootd-5.9.2-py314h7009e7c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda - - pypi: https://files.pythonhosted.org/packages/cd/22/4d16dca3bd1d6475a53063eb72150269cea1a0a201b55288b3402f61f119/aiobotocore-3.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: . + - pypi: git+https://gitlab.cern.ch/jlisalab/LHCbDIRAC.git?rev=modules-to-cwl-migration#ab38648ea4722414faff85666a0abf2200d9f99d + - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/3e50840a88dce2f0ef15cee9bdd1977bf86e40dac05f180ffe55fa6beaa9/diracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5e/0a/3966f239e1d9da93cb755dc0213835ce4e9ed93645192878d0a055ecdc31/boto3-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/51/aac7e419521d5519e13087a7198623655648c939822bd7f4bdc9ccbe07f9/botocore-1.42.42-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/df/2dd32cce20cbcf6f2ec456b58d44368161ad28320729f64e5e1d5d7bd0ae/cachetools-7.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/db/2b/1239938a2629c29363e07724d7bd4c87a8b566947ecee2afb5f5ac34e1bb/cwl_upgrader-1.2.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/63/4b/ccab2a5ca9e0b6553810b85c06387e60fc9443cec3c987e3a062705bd225/cwl_utils-0.40-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/3c/b74cfd984cef560b900fb1a727af20352d89e1f06bf2e1114dd3f00f5f5a/wrapt-2.2.1-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/03/49650a5b9c188f3a7401f73155254816dd2b3037a6ce2dcf27cc10f10162/rucio_clients-40.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/60/ff126095a42de830b585982371a2689db27353ee6ef5ed7e96124e8cb632/awkward-2.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/25/2201973529af2c954de0bb725323c3aaed6d7f0ceee8f550dec9185df013/typer-0.26.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/99/b8d3c04d811bc65539684402d10f14c7f64d7fde07650266ff9cf644c231/lhcbdiracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/b4/a9c880c251c321a6bcf21554678dedee04877cec12c0c4e6e739b4998c0e/lhcbdiracx_client-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/cd/6e32a8bc8dea793c7015c11cceace07cb7a2d41839c694a8c3bba3cc28f1/dirac-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/e1/c2141f1840a41e07ad2db6f724945f8f8ff3065463899a22939152dd6e09/rapidfuzz-3.14.5-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/32/4b/b99e37f88336009971405cbb7630610322ed6fbfa31e1d7ab3fbf3049a2d/invoke-2.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/f8497ef8b873a8bb2a750ee2a6c5f0fc22258e1acb6245fd237042a6c279/fabric-3.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/34/98a2f52245f4d47be93b580dae5f9861ef58977d73a79eb47c58f1ad1f3a/xmltodict-1.0.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/56/99a7cf6ca8533695874cf804369221d03bf5e869a7e0b38acbf4dbe8deeb/cwlformat-2022.2.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/ee/a7aba2b112c5ae879d5cfb231c75189a7fd2a5e84b6af7e07dd71fb2bb35/cwltool-3.1.20260108082145-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/c0/63d2ab6ef062e05e795fb49ebcd8a907c1d4f78d9f01c577266b12bd0da2/dirac-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/d2/500c9ae651fd3821ca70814aa40cb5ab9bab9b479387ccd8dcb4df745d44/diraccommon-9.0.18-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ab/7e/5f02b757bb825e5cdc65f6f7a12c209963bec877d61497393bea8f41f9ce/diracx_api-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/28/87e78ff0d6041f40431d88b8aa3b645be7476a420d8dcbf7197f5b394c5c/diracx_cli-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/61/0c78d9778bffd844863d3173a5fefb506d7131ceebecee523a9e27024aa1/diracx_client-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/c9/459da97eb93fad89738951972671d44be197610242b8da88a0384791ea7e/diracx_core-0.0.8-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/36/9ab4f0b5c3d10df3aceaecf7e395cabe7fb7c7c004b2dc3f3cff0ef70fc3/xattr-1.3.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/85/d06247fc88ba278227397da5604287e4762f130347dc968f6d205eb15ee6/sh-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/19/0380af745f151a1648657bbcef0fb49ac28bf09083d94498163ffd9b32dc/dominate-2.9.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5b/db/325c6d7312d2200251c52323878281045aaffcb5586612296484e4280eaa/azure_core-1.41.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/e8/2e6301567e6debaad6abae0e217428471651ce877537b7095b6a8e7d8cd2/fts3-3.14.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/69/8f/cb844e6a5079bfecacce9c96ed0db9a15294568079bfa8a89b0eb2643c85/signurlarity-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/10/b37ac718c5903758fa9058a5182026a4f3b65443196b82c7840389ea0dbd/lbplatformutils-4.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/03/d426348a5f13514182c1d1afab2285ec25a94bacc8d2f8d2cc627496754a/uproot-5.7.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/6e/f49568ec5e39dbea953d4ace39aebe7d732a3fefa4e2c0f10c5f966d52d5/lhcbdiracx_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/2c/bb6ef359e007fe7b6b3195b68a94f4dd3ecd1885ee337ee8fbd4df55996f/levenshtein-0.27.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/56/28406aa770148a0ce2862ed93676da2aaead45f9d4259fc3bb8dd850928e/diraccommon-9.1.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/5b/eadf6d45de38d30ab603f49393b6cd2cbe7e233af8cf90197e32782b68a9/paramiko-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/85/dd/904873250a6554fbae40cddbf9198e3cc37a2f1319d5e1a5ce82fe269c17/s3transfer-0.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/eb/5da01e356015aee6ecfa1187ced87aef51364e306f5e695dd52719bf0e78/orjson-3.11.9-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/5f/85535dfb3cfd6442d66d1df1694062c5d6df02f895329e7e120b2a3d2b8b/aiobotocore-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/c1/dd70be50613b74e9b6cc980f94d1ee6fe1cc297369915cae84c5077f28d6/fsspec_xrootd-0.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a1/01/9674cc6d478406ae61d910cb16ca8b5699a8a9e6a2019987ebe5a5957d1d/joserfc-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/7d/58320dd3c2c814e473afa91fd50e423dab22654fd891b946818243d1508b/diracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/af/1c3540dbdccb85fca0b0bbc58cdaf514d0a830d7e0302b2059a6c627b172/python_gitlab-8.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/00/fa62404c3e347f946faa13aa21085205f9cc06ad17671e37f81a51662ae8/joserfc-1.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/a0/3e6a0b1c1ea6bec76f71473727ef27abf3cd40e9709b3ebcbfbcfaae6f79/boto3-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/b1/5297bb6a7df4782f7605bffc43b31f5044070935fbbcaa6c705a07e6ac65/yarl-1.24.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/7b/4845bbf88e94586ec47a432da4e9107e3fc3ce37eb412b1398630a37f7dd/pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl + - pypi: https://files.pythonhosted.org/packages/bf/4b/afc1fef8a43bafb139f57f73bbd70df82807af5934321e8112ae50668827/botocore-1.43.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/11/716dcc28a28743a3778b455a443d591837ad7c58908e234fe31307fb61a9/lhcbdiracx_api-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c3/94/9b8923055f9be73c930955fd111756ca5d5616eedd64611d23c74e204300/awkward_cpp-53-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b8/c73592eb90ca2b1d8144e366091214d386695c86d737c97443210db03fb2/diracx_core-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d6/61/08f60ae8fa82bc57b17b80f1b3e2bb98dccdb2a46a756cad83fb2d09b144/diracx_client-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/16/4a/b4d7feb029d4e75d4882d8d1d9029938c31a2e73074f87ffcff0f4a8ba9e/lbplatformutils-4.5.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/20/35d2baebacf357b562bd081936b66cd845775442973cb033a377fd639a84/rdflib-7.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/80/97b6f357ac458d9ad9872cc3183ca09ef7439ac89e030ea43053ba1294b6/rich_argparse-1.7.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/69/f2/c4cec0a30f1955510fde498aac451d2e52b24afdbcb00204d3a951b772c3/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/5c/48/ccd6c49477674389d55b5b5520e47d1290f4c29686c36f5674f4a7aced00/rucio_clients-39.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/71/3f/212e32937253312e102e152c954a5495df0379255719ce28e0288194748d/schema_salad-8.9.20251102115403-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/70/98/d82f14ac7ffedbd38dfa2383f142b26d18d23ca6cf35a40f4af60df666bd/sh-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d8/da/a8bb48a4fee86b5dad8a358559b70b010cd7effaa70ca5bb4e6e82e13703/hyperscan-0.8.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/de/07/a1051cdbbe6d723df16d756b97f09da7c1adb69e29695c58f0392bc12515/cramjam-2.11.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/df/32/10ac51b4be7cdecd7e93d069251c86dfbf70b7adbd7c67b48ccea6c49e1c/sqlalchemy-2.0.50-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/a7/248e1aebe0c7810b0271e021a0f2a5eb6e78a051885b3c9df49f42a5802d/aiohttp-3.14.1-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/38/98ea14ad1517e1461292a65906951458d520689782bfbae111050145bdba/xxhash-3.7.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/f5/ac/19f9941c74add59d17694930ec8105d5eddeee4ce56dd8632b765ca16d6c/stevedore-5.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e9/f8/5ecdfc73383ec496de038ed1614de9e740a82db9ad67e6e4514ebc0708a3/sqlalchemy-2.0.46-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/9a/d2faba7e61072a7507b5722db63562fdb22f5a24e237d460d18755627f15/wrapt-2.1.1-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/3d/36/9ab4f0b5c3d10df3aceaecf7e395cabe7fb7c7c004b2dc3f3cff0ef70fc3/xattr-1.3.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/11/63/ff458113c5c2dac9a9719ac68ee7c947cb621432bcf28c9972b1c0e83938/yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 - md5: d7c89558ba9fa0495403155b64376d81 - license: None - purls: [] - size: 2562 - timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d - depends: - - _libgcc_mutex 0.1 conda_forge +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 - libgomp >=7.5.0 constrains: - - openmp_impl 9999 + - openmp_impl <0.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 23621 - timestamp: 1650670423406 -- conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda - build_number: 7 - sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 - md5: eaac87c21aff3ed21ad9656697bb8326 - depends: - - llvm-openmp >=9.0.1 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 8328 - timestamp: 1764092562779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda - build_number: 7 - sha256: 7acaa2e0782cad032bdaf756b536874346ac1375745fb250e9bdd6a48a7ab3cd - md5: a44032f282e7d2acdeb1c240308052dd - depends: - - llvm-openmp >=9.0.1 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 8325 - timestamp: 1764092507920 -- pypi: https://files.pythonhosted.org/packages/cd/22/4d16dca3bd1d6475a53063eb72150269cea1a0a201b55288b3402f61f119/aiobotocore-3.1.2-py3-none-any.whl - name: aiobotocore - version: 3.1.2 - sha256: 1141cec16c47cc3e466d89fcccc5c57291a3751a15488fe7fbaea8550f94f468 - requires_dist: - - aiohttp>=3.12.0,<4.0.0 - - aioitertools>=0.5.1,<1.0.0 - - botocore>=1.41.0,<1.42.43 - - python-dateutil>=2.1,<3.0.0 - - jmespath>=0.7.1,<2.0.0 - - multidict>=6.0.0,<7.0.0 - - typing-extensions>=4.14.0,<5.0.0 ; python_full_version < '3.11' - - wrapt>=1.10.10,<3.0.0 - - httpx>=0.25.1,<0.29 ; extra == 'httpx' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl - name: aiohappyeyeballs - version: 2.6.1 - sha256: f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: aiohttp - version: 3.13.3 - sha256: bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1 - requires_dist: - - aiohappyeyeballs>=2.5.0 - - aiosignal>=1.4.0 - - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' - - attrs>=17.3.0 - - frozenlist>=1.1.1 - - multidict>=4.5,<7.0 - - propcache>=0.2.0 - - yarl>=1.17.0,<2.0 - - aiodns>=3.3.0 ; extra == 'speedups' - - brotli>=1.2 ; platform_python_implementation == 'CPython' and extra == 'speedups' - - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' - - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and extra == 'speedups' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl - name: aiohttp - version: 3.13.3 - sha256: c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f - requires_dist: - - aiohappyeyeballs>=2.5.0 - - aiosignal>=1.4.0 - - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' - - attrs>=17.3.0 - - frozenlist>=1.1.1 - - multidict>=4.5,<7.0 - - propcache>=0.2.0 - - yarl>=1.17.0,<2.0 - - aiodns>=3.3.0 ; extra == 'speedups' - - brotli>=1.2 ; platform_python_implementation == 'CPython' and extra == 'speedups' - - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' - - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and extra == 'speedups' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl - name: aiohttp - version: 3.13.3 - sha256: 6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415 - requires_dist: - - aiohappyeyeballs>=2.5.0 - - aiosignal>=1.4.0 - - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' - - attrs>=17.3.0 - - frozenlist>=1.1.1 - - multidict>=4.5,<7.0 - - propcache>=0.2.0 - - yarl>=1.17.0,<2.0 - - aiodns>=3.3.0 ; extra == 'speedups' - - brotli>=1.2 ; platform_python_implementation == 'CPython' and extra == 'speedups' - - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' - - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and extra == 'speedups' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl - name: aioitertools - version: 0.13.0 - sha256: 0be0292b856f08dfac90e31f4739432f4cb6d7520ab9eb73e143f4f2fa5259be - requires_dist: - - typing-extensions>=4.0 ; python_full_version < '3.10' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl - name: aiosignal - version: 1.4.0 - sha256: 053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e - requires_dist: - - frozenlist>=1.1.0 - - typing-extensions>=4.2 ; python_full_version < '3.13' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - name: annotated-types - version: 0.7.0 - sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 - requires_dist: - - typing-extensions>=4.0.0 ; python_full_version < '3.9' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl - name: anyio - version: 4.12.1 - sha256: d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c - requires_dist: - - exceptiongroup>=1.0.2 ; python_full_version < '3.11' - - idna>=2.8 - - typing-extensions>=4.5 ; python_full_version < '3.13' - - trio>=0.32.0 ; python_full_version >= '3.10' and extra == 'trio' - - trio>=0.31.0 ; python_full_version < '3.10' and extra == 'trio' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - name: argcomplete - version: 3.6.3 - sha256: f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce - requires_dist: - - coverage ; extra == 'test' - - mypy ; extra == 'test' - - pexpect ; extra == 'test' - - ruff ; extra == 'test' - - wheel ; extra == 'test' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl - name: arrow - version: 1.4.0 - sha256: 749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 - requires_dist: - - python-dateutil>=2.7.0 - - backports-zoneinfo==0.2.1 ; python_full_version < '3.9' - - tzdata ; python_full_version >= '3.9' - - doc8 ; extra == 'doc' - - sphinx>=7.0.0 ; extra == 'doc' - - sphinx-autobuild ; extra == 'doc' - - sphinx-autodoc-typehints ; extra == 'doc' - - sphinx-rtd-theme>=1.3.0 ; extra == 'doc' - - dateparser==1.* ; extra == 'test' - - pre-commit ; extra == 'test' - - pytest ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-mock ; extra == 'test' - - pytz==2025.2 ; extra == 'test' - - simplejson==3.* ; extra == 'test' - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - sha256: c13d5e42d187b1d0255f591b7ce91201d4ed8a5370f0d986707a802c20c9d32f - md5: 537296d57ea995666c68c821b00e360b + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.5.0-py310hd8a072f_1.conda + noarch: python + sha256: cf1cf3d0fa59fe0ab6bc3af722d820c1a85a9233c786f614f377c651fec6a7f9 + md5: 6adea4814147f458d6278d053850b0ac depends: - python >=3.10 - - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __glibc >=2.17 license: MIT license_family: MIT purls: - - pkg:pypi/attrs?source=compressed-mapping - size: 64759 - timestamp: 1764875182184 -- pypi: https://files.pythonhosted.org/packages/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl - name: authlib - version: 1.6.6 - sha256: 7d9e9bc535c13974313a87f53e8430eb6ea3d1cf6ae4f6efcd793f2e949143fd - requires_dist: - - cryptography - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl - name: azure-core - version: 1.38.0 - sha256: ab0c9b2cd71fecb1842d52c965c95285d3cfb38902f6766e4a471f1cd8905335 - requires_dist: - - requests>=2.21.0 - - typing-extensions>=4.6.0 - - aiohttp>=3.0 ; extra == 'aio' - - opentelemetry-api~=1.26 ; extra == 'tracing' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - sha256: 2ade43752e8494f110a2cfb9e4d5b1ea29e3dcb037fba63395442d00371e8bf9 - md5: 0fd7e45c862b3305226a992f9f7b204a - depends: - - python >=3.11 - - python - constrains: - - python >=3.11 - license: PSF-2.0 - license_family: PSF - purls: [] - size: 10186 - timestamp: 1753456386827 -- pypi: https://files.pythonhosted.org/packages/5e/0a/3966f239e1d9da93cb755dc0213835ce4e9ed93645192878d0a055ecdc31/boto3-1.42.42-py3-none-any.whl - name: boto3 - version: 1.42.42 - sha256: 8c78169ef47dc29863ebb11ba99134b1b418d3dfdd836419830f22552f8afe43 - requires_dist: - - botocore>=1.42.42,<1.43.0 - - jmespath>=0.7.1,<2.0.0 - - s3transfer>=0.16.0,<0.17.0 - - botocore[crt]>=1.21.0,<2.0a0 ; extra == 'crt' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e6/51/aac7e419521d5519e13087a7198623655648c939822bd7f4bdc9ccbe07f9/botocore-1.42.42-py3-none-any.whl - name: botocore - version: 1.42.42 - sha256: 1c9df5fc31e9073a9aa956271c4007d72f5d342cafca5f4154ea099bc6f83085 - requires_dist: - - jmespath>=0.7.1,<2.0.0 - - python-dateutil>=2.1,<3.0.0 - - urllib3>=1.25.4,<1.27 ; python_full_version < '3.10' - - urllib3>=1.25.4,!=2.2.0,<3 ; python_full_version >= '3.10' - - awscrt==0.29.2 ; extra == 'crt' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5 - md5: 51a19bba1b8ebfb60df25cde030b7ebc + - pkg:pypi/ast-serialize?source=compressed-mapping + size: 1125371 + timestamp: 1780396651124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 260341 - timestamp: 1757437258798 -- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - sha256: 8f50b58efb29c710f3cecf2027a8d7325ba769ab10c746eff75cea3ac050b10c - md5: 97c4b3bd8a90722104798175a1bdddbf - depends: - - __osx >=10.13 - license: bzip2-1.0.6 - license_family: BSD - purls: [] - size: 132607 - timestamp: 1757437730085 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - sha256: b456200636bd5fecb2bec63f7e0985ad2097cf1b83d60ce0b6968dffa6d02aa1 - md5: 58fd217444c2a5701a44244faf518206 - depends: - - __osx >=11.0 - license: bzip2-1.0.6 - license_family: BSD - purls: [] - size: 125061 - timestamp: 1757437486465 + size: 260182 + timestamp: 1771350215188 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e md5: 920bb03579f15389b9e512095ad995b7 @@ -945,71 +816,9 @@ packages: purls: [] size: 207882 timestamp: 1765214722852 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda - sha256: 2f5bc0292d595399df0d168355b4e9820affc8036792d6984bd751fdda2bcaea - md5: fc9a153c57c9f070bebaa7eef30a8f17 - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: [] - size: 186122 - timestamp: 1765215100384 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - sha256: 2995f2aed4e53725e5efbc28199b46bf311c3cab2648fc4f10c2227d6d5fa196 - md5: bcb3cba70cf1eec964a03b4ba7775f01 - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 180327 - timestamp: 1765215064054 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - sha256: b5974ec9b50e3c514a382335efa81ed02b05906849827a34061c496f4defa0b2 - md5: bddacf101bb4dd0e51811cb69c7790e2 - depends: - - __unix - license: ISC - purls: [] - size: 146519 - timestamp: 1767500828366 -- pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl - name: cachecontrol - version: 0.14.4 - sha256: b7ac014ff72ee199b5f8af1de29d60239954f223e948196fa3d84adaffc71d2b - requires_dist: - - requests>=2.16.0 - - msgpack>=0.5.2,<2.0.0 - - cachecontrol[filecache,redis] ; extra == 'dev' - - cherrypy ; extra == 'dev' - - cheroot>=11.1.2 ; extra == 'dev' - - codespell ; extra == 'dev' - - furo ; extra == 'dev' - - mypy ; extra == 'dev' - - pytest ; extra == 'dev' - - pytest-cov ; extra == 'dev' - - ruff ; extra == 'dev' - - sphinx ; extra == 'dev' - - sphinx-copybutton ; extra == 'dev' - - types-redis ; extra == 'dev' - - types-requests ; extra == 'dev' - - filelock>=3.8.0 ; extra == 'filecache' - - redis>=2.10.5 ; extra == 'redis' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/28/df/2dd32cce20cbcf6f2ec456b58d44368161ad28320729f64e5e1d5d7bd0ae/cachetools-7.0.0-py3-none-any.whl - name: cachetools - version: 7.0.0 - sha256: d52fef60e6e964a1969cfb61ccf6242a801b432790fe520d78720d757c81cbd2 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl - name: certifi - version: 2026.1.4 - sha256: 9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c - requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py314h4a8dc5f_1.conda - sha256: c6339858a0aaf5d939e00d345c98b99e4558f285942b27232ac098ad17ac7f8e - md5: cf45f4278afd6f4e6d03eda0f435d527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py314h4a8dc5f_1.conda + sha256: c6339858a0aaf5d939e00d345c98b99e4558f285942b27232ac098ad17ac7f8e + md5: cf45f4278afd6f4e6d03eda0f435d527 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.5.2,<3.6.0a0 @@ -1023,48 +832,6 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 300271 timestamp: 1761203085220 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py314h8ca4d5a_1.conda - sha256: e2c58cc2451cc96db2a3c8ec34e18889878db1e95cc3e32c85e737e02a7916fb - md5: 71c2caaa13f50fe0ebad0f961aee8073 - depends: - - __osx >=10.13 - - libffi >=3.5.2,<3.6.0a0 - - pycparser - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 293633 - timestamp: 1761203106369 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py314h44086f9_1.conda - sha256: 5b5ee5de01eb4e4fd2576add5ec9edfc654fbaf9293e7b7ad2f893a67780aa98 - md5: 10dd19e4c797b8f8bdb1ec1fbb6821d7 - depends: - - __osx >=11.0 - - libffi >=3.5.2,<3.6.0a0 - - pycparser - - python >=3.14,<3.15.0a0 - - python >=3.14,<3.15.0a0 *_cp314 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 292983 - timestamp: 1761203354051 -- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - sha256: aa589352e61bb221351a79e5946d56916e3c595783994884accdb3b97fe9d449 - md5: 381bd45fb7aa032691f3063aff47e3a1 - depends: - - python >=3.10 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cfgv?source=hash-mapping - size: 13589 - timestamp: 1763607964133 - conda: https://conda.anaconda.org/conda-forge/linux-64/cgsi-gsoap-1.3.12-h32d023c_0.conda sha256: 65fc6650c5d7ca754b0a4ea344df089bbf19ca0b76c89dcdb9ede7a6065f8673 md5: f86a805cdeb4c3b89ad8b538f635cdeb @@ -1081,203 +848,22 @@ packages: purls: [] size: 46998 timestamp: 1738622766217 -- pypi: https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl - name: charset-normalizer - version: 3.4.4 - sha256: da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: charset-normalizer - version: 3.4.4 - sha256: ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl - name: click - version: 8.3.1 - sha256: 981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 - requires_dist: - - colorama ; sys_platform == 'win32' - requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/colorama?source=hash-mapping - size: 27011 - timestamp: 1733218222191 -- pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - name: coloredlogs - version: 15.0.1 - sha256: 612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 - requires_dist: - - humanfriendly>=9.1 - - capturer>=2.4 ; extra == 'cron' - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' -- pypi: https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl - name: cryptography - version: 46.0.4 - sha256: 0a9ad24359fee86f131836a9ac3bffc9329e956624a2d379b613f8f8abaf5255 - requires_dist: - - cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy' - - cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' - - typing-extensions>=4.13.2 ; python_full_version < '3.11' - - bcrypt>=3.1.5 ; extra == 'ssh' - - nox[uv]>=2024.4.15 ; extra == 'nox' - - cryptography-vectors==46.0.4 ; extra == 'test' - - pytest>=7.4.0 ; extra == 'test' - - pytest-benchmark>=4.0 ; extra == 'test' - - pytest-cov>=2.10.1 ; extra == 'test' - - pytest-xdist>=3.5.0 ; extra == 'test' - - pretend>=0.7 ; extra == 'test' - - certifi>=2024 ; extra == 'test' - - pytest-randomly ; extra == 'test-randomorder' - - sphinx>=5.3.0 ; extra == 'docs' - - sphinx-rtd-theme>=3.0.0 ; extra == 'docs' - - sphinx-inline-tabs ; extra == 'docs' - - pyenchant>=3 ; extra == 'docstest' - - readme-renderer>=30.0 ; extra == 'docstest' - - sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' - - build>=1.0.0 ; extra == 'sdist' - - ruff>=0.11.11 ; extra == 'pep8test' - - mypy>=1.14 ; extra == 'pep8test' - - check-sdist ; extra == 'pep8test' - - click>=8.0.1 ; extra == 'pep8test' - requires_python: '>=3.8,!=3.9.0,!=3.9.1' -- pypi: https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl - name: cryptography - version: 46.0.4 - sha256: 281526e865ed4166009e235afadf3a4c4cba6056f99336a99efba65336fd5485 - requires_dist: - - cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy' - - cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' - - typing-extensions>=4.13.2 ; python_full_version < '3.11' - - bcrypt>=3.1.5 ; extra == 'ssh' - - nox[uv]>=2024.4.15 ; extra == 'nox' - - cryptography-vectors==46.0.4 ; extra == 'test' - - pytest>=7.4.0 ; extra == 'test' - - pytest-benchmark>=4.0 ; extra == 'test' - - pytest-cov>=2.10.1 ; extra == 'test' - - pytest-xdist>=3.5.0 ; extra == 'test' - - pretend>=0.7 ; extra == 'test' - - certifi>=2024 ; extra == 'test' - - pytest-randomly ; extra == 'test-randomorder' - - sphinx>=5.3.0 ; extra == 'docs' - - sphinx-rtd-theme>=3.0.0 ; extra == 'docs' - - sphinx-inline-tabs ; extra == 'docs' - - pyenchant>=3 ; extra == 'docstest' - - readme-renderer>=30.0 ; extra == 'docstest' - - sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' - - build>=1.0.0 ; extra == 'sdist' - - ruff>=0.11.11 ; extra == 'pep8test' - - mypy>=1.14 ; extra == 'pep8test' - - check-sdist ; extra == 'pep8test' - - click>=8.0.1 ; extra == 'pep8test' - requires_python: '>=3.8,!=3.9.0,!=3.9.1' -- pypi: https://files.pythonhosted.org/packages/db/2b/1239938a2629c29363e07724d7bd4c87a8b566947ecee2afb5f5ac34e1bb/cwl_upgrader-1.2.14-py3-none-any.whl - name: cwl-upgrader - version: 1.2.14 - sha256: 7c4ed6dfe082d56a58bf4e7451303213b5ee7b4e3621237dbbaad8d13018afbe - requires_dist: - - ruamel-yaml>=0.16.0,<0.19 - - schema-salad - - pytest<10 ; extra == 'testing' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/63/4b/ccab2a5ca9e0b6553810b85c06387e60fc9443cec3c987e3a062705bd225/cwl_utils-0.40-py3-none-any.whl - name: cwl-utils - version: '0.40' - sha256: f6688cd3b78b826af2aa5518b31d8d7ba784914d0a7a5784266c615093e1e94b - requires_dist: - - cwl-upgrader>=1.2.3 - - packaging - - rdflib - - requests - - schema-salad>=8.8.20250205075315,<9 - - ruamel-yaml>=0.17.6,<0.19 - - typing-extensions ; python_full_version < '3.10' - - cwlformat ; extra == 'pretty' - - pytest<9 ; extra == 'testing' - - pytest-mock ; extra == 'testing' - requires_python: '>=3.9,<3.15' -- pypi: https://files.pythonhosted.org/packages/3b/56/99a7cf6ca8533695874cf804369221d03bf5e869a7e0b38acbf4dbe8deeb/cwlformat-2022.2.18-py3-none-any.whl - name: cwlformat - version: 2022.2.18 - sha256: d3e2dca192ce10e703ed4eb0bae26539db08d8ddd7c6a6fe9d1406c3f1b53cda - requires_dist: - - ruamel-yaml>=0.16.12 - - importlib-resources ; python_full_version < '3.7' - requires_python: '>=3.6.0' -- pypi: https://files.pythonhosted.org/packages/65/ee/a7aba2b112c5ae879d5cfb231c75189a7fd2a5e84b6af7e07dd71fb2bb35/cwltool-3.1.20260108082145-py3-none-any.whl - name: cwltool - version: 3.1.20260108082145 - sha256: ddc895c809cccf04b731476d2e35ca0126f498be079b349457a5c56471155556 - requires_dist: - - requests>=2.6.1 - - ruamel-yaml>=0.16,<0.20 - - rdflib>=4.2.2,<7.6.0 - - schema-salad>=8.9,<9 - - prov==1.5.1 - - mypy-extensions - - psutil>=5.6.6 - - coloredlogs - - pydot>=1.4.1 - - argcomplete>=1.12.0 - - pyparsing!=3.0.2 - - cwl-utils>=0.32 - - spython>=0.3.0 - - rich-argparse - - typing-extensions>=4.1.0 - - galaxy-tool-util>=22.1.2,!=23.0.1,!=23.0.2,!=23.0.3,!=23.0.4,!=23.0.5,<25.2 ; extra == 'deps' - - galaxy-util<25.2 ; extra == 'deps' - - pillow ; extra == 'deps' - requires_python: '>=3.10,<3.15' -- conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda - sha256: ee09ad7610c12c7008262d713416d0b58bf365bc38584dce48950025850bdf3f - md5: cae723309a49399d2949362f4ab5c9e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda + sha256: 7684da83306bb69686c0506fb09aa7074e1a55ade50c3a879e4e5df6eebb1009 + md5: af491aae930edc096b58466c51c4126c depends: - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 - libgcc >=13 - libntlm >=1.8,<2.0a0 - libstdcxx >=13 - libxcrypt >=4.4.36 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause-Attribution - license_family: BSD - purls: [] - size: 209774 - timestamp: 1750239039316 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h610c526_0.conda - sha256: beee5d279d48d67ba39f1b8f64bc050238d3d465fb9a53098eba2a85e9286949 - md5: 314cd5e4aefc50fec5ffd80621cfb4f8 - depends: - - __osx >=10.13 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - libntlm >=1.8,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause-Attribution - license_family: BSD - purls: [] - size: 197689 - timestamp: 1750239254864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-ha1cbb27_0.conda - sha256: 7de03254fa5421e7ec2347c830a59530fb5356022ee0dc26ec1cef0be1de0911 - md5: 2867ea6551e97e53a81787fd967162b1 - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - libntlm >=1.8,<2.0a0 - - openssl >=3.5.0,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause-Attribution license_family: BSD purls: [] - size: 193732 - timestamp: 1750239236574 + size: 210103 + timestamp: 1771943128249 - conda: https://conda.anaconda.org/conda-forge/linux-64/davix-0.8.10-he574acc_1.conda sha256: 485e77acdeb00bc63d05f5ee1f24321a41d747d1918d2cf780820af64794cba6 md5: 1c3944b5210bdc83ab9306bfb5317c4f @@ -1298,2340 +884,2092 @@ packages: purls: [] size: 1172159 timestamp: 1764194717843 -- conda: https://conda.anaconda.org/conda-forge/osx-64/davix-0.8.10-h35d429b_1.conda - sha256: e76f71e61622aedcb8b8e936cf0a595eb44123b3ac355c28e46c48622f6943f5 - md5: 558377132bfd2fe14f6dbd28d644b25c - depends: - - openssl - - libcurl - - libxml2-devel - - libcxx >=19 - - __osx >=10.13 - - gsoap >=2.8.123,<2.8.124.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - gtest >=1.17.0,<1.17.1.0a0 - license: LGPL-2.1-only - purls: [] - size: 990237 - timestamp: 1764194905133 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/davix-0.8.10-h0b7473d_1.conda - sha256: de0e457af62183ef91e7b92d172da9887d1bd21f1f85122656c47d79199c49ec - md5: 59f9ecae2150f2e7feaeb72349923965 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dcap-2.47.14-hbd4789f_3.conda + sha256: b9ffb5dbc47b7b53deaaa9636ea4cfec6785b8773bfce57d8b344584f53c9d31 + md5: 9a0563da01ceb50aff85878c65b1c810 depends: - - openssl - - libcurl - - libxml2-devel - - libcxx >=19 - - __osx >=11.0 - - gtest >=1.17.0,<1.17.1.0a0 - - openssl >=3.5.4,<4.0a0 - - libxml2 - - libxml2-16 >=2.14.6 + - __glibc >=2.17,<3.0.a0 + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - license: LGPL-2.1-only + - openssl >=3.5.5,<4.0a0 + license: LGPL-2.0-only + license_family: GPL purls: [] - size: 926053 - timestamp: 1764194930352 -- pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl - name: db12 - version: 1.0.4 - sha256: 2dbb96e77e43870e02f3dfe32bb9a4e0ad0a6e68db65bc2d5ac96b136469e2d3 - requires_python: '>=2.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/dcap-2.47.14-h481617c_2.conda - sha256: 596bcda16b281e5cf92e5f69a21dec01209a9cab7e65e4c30f3b7bbc4dcfe85a - md5: 8472f17f6be124fcf2cd03550629788d + size: 199154 + timestamp: 1771355358064 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gct-6.2.1705709074-h6bbaf85_0.conda + sha256: d0dc86c605be9f7de04a3d47524acb4bc8cbf0fd8f77ad2e444913788cb1d360 + md5: 17103926aa1221d9d7520ca55ff09ef9 depends: - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - krb5 >=1.21.2,<1.22.0a0 + - libedit >=3.1.20191231,<3.2.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + - libtool >=2.4.7,<3.0a0 - libzlib >=1.2.13,<2.0.0a0 - openssl >=3.2.1,<4.0a0 - license: LGPL-2.0-only - license_family: GPL + - perl + license: Apache-2.0 + license_family: Apache purls: [] - size: 201103 - timestamp: 1709906343755 -- conda: https://conda.anaconda.org/conda-forge/osx-64/dcap-2.47.14-hf4fbb18_2.conda - sha256: a27f5509216f8e329bfa3f17f90ba75ec5042d1804056c556eb369d2b32bb4e1 - md5: ea46df07255b836c340deaab872e4049 + size: 3399111 + timestamp: 1709823867374 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfal2-2.23.5-h3ec3711_0.conda + sha256: f7b7b766a6ed222bd0657db4f9d66e3b1420e8638b7a8aef58bbf26e3e213450 + md5: 31e0c86aff2be99388ab9913e13dac4b depends: + - json-c >=0.18,<0.19.0a0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - gtest >=1.17.0,<1.17.1.0a0 + - srm-ifce >=1.24.6,<2.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - libzlib >=1.3.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - pugixml >=1.15,<1.16.0a0 + - davix >=0.8.10,<0.9.0a0 - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - krb5 >=1.21.2,<1.22.0a0 - - libcxx >=16 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 - license: LGPL-2.0-only - license_family: GPL + - libuuid >=2.41.3,<3.0a0 + - xrootd >=5.8.4,<6.0a0 + - openldap >=2.6.10,<2.7.0a0 + - libglib >=2.86.3,<3.0a0 + - dcap >=2.47.14,<2.48.0a0 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 162986 - timestamp: 1709906839770 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dcap-2.47.14-h33e0366_2.conda - sha256: fd0c392617be15682341deaa473637a73361964ce3154539833e69390d4cccfc - md5: 5d4e4cda1dcbe3c2503e2440be7c1954 + size: 501235 + timestamp: 1769072269303 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gsoap-2.8.123-h8dc497d_0.tar.bz2 + sha256: c6a16f2b36a6a653d399cc542214b3601c54097dd5f6c4b96a0f3302d3d6480d + md5: e539f696d01d28dc42313a2ce66c0627 depends: - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - krb5 >=1.21.2,<1.22.0a0 - - libcxx >=16 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 - license: LGPL-2.0-only + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.12,<2.0.0a0 + - openssl >=3.0.5,<4.0a0 + license: GPL-2.0-only license_family: GPL purls: [] - size: 171436 - timestamp: 1709906737580 -- pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl - name: decorator - version: 5.2.1 - sha256: d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/75/c0/63d2ab6ef062e05e795fb49ebcd8a907c1d4f78d9f01c577266b12bd0da2/dirac-9.0.18-py3-none-any.whl - name: dirac - version: 9.0.18 - sha256: 8e32e7486eb49ad88278b2cb3d56a4ec684715de639f6c09c8a4e05b837e268a - requires_dist: - - boto3>=1.35 - - botocore>=1.35 - - cachetools - - certifi - - cwltool - - diraccfg - - diraccommon==9.0.18 - - diracx-client>=0.0.1 - - diracx-core>=0.0.1 - - diracx-cli>=0.0.1 - - db12 - - fts3 - - gfal2-python - - importlib-metadata>=4.4 - - importlib-resources - - m2crypto>=0.36 - - packaging - - pexpect - - prompt-toolkit>=3 - - psutil - - pyasn1 - - pyasn1-modules - - pydantic>=2.4 - - pyparsing - - python-dateutil - - pytz - - requests - - rucio-clients>=34.4.2 - - sqlalchemy - - typing-extensions>=4.3.0 - - authlib>=1.0.0a2 - - pyjwt - - dominate - - zstandard - - xattr - - cmreshandler ; extra == 'server' - - opensearch-py ; extra == 'server' - - gitpython ; extra == 'server' - - ldap3 ; extra == 'server' - - apache-libcloud ; extra == 'server' - - matplotlib ; extra == 'server' - - mysqlclient ; extra == 'server' - - numpy ; extra == 'server' - - pillow ; extra == 'server' - - python-json-logger ; extra == 'server' - - pyyaml ; extra == 'server' - - stomp-py ; extra == 'server' - - suds ; extra == 'server' - - tornado~=5.1.1 ; extra == 'server' - - tornado-m2crypto ; extra == 'server' - - importlib-resources ; extra == 'server' - - hypothesis ; extra == 'testing' - - mock ; extra == 'testing' - - parameterized ; extra == 'testing' - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pytest-mock ; extra == 'testing' - - pytest-rerunfailures ; extra == 'testing' - - pycodestyle ; extra == 'testing' - requires_python: '>=3.11' -- pypi: ./ - name: dirac-cwl - version: 1.2.1.dev14+g6f8f6ff96.d20260303 - sha256: 0b624b7b1adb33bc3b4cb29dbf85bb2db495122acda95aaa775f0aedef77767f - requires_dist: - - cwl-utils - - cwlformat - - cwltool - - dirac>=9.0.0 - - diracx-core>=0.0.8 - - diracx-api>=0.0.8 - - diracx-client>=0.0.8 - - diracx-cli>=0.0.8 - - lbprodrun - - pydantic - - pyyaml - - typer - - referencing>=0.30 - - rich - - ruamel-yaml - - pytest>=6 ; extra == 'testing' - - pytest-mock ; extra == 'testing' - - mypy ; extra == 'testing' - requires_python: '>=3.11' - editable: true -- pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl - name: diraccfg - version: 1.0.1 - sha256: 5103e25208fd41c623a72ddd5775416633f97b376531c86fb4e79282871db218 - requires_dist: - - pytest>=4.6 ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pylint>=1.6.5 ; extra == 'testing' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/06/d2/500c9ae651fd3821ca70814aa40cb5ab9bab9b479387ccd8dcb4df745d44/diraccommon-9.0.18-py3-none-any.whl - name: diraccommon - version: 9.0.18 - sha256: e32f417cb4805c8c73b940921f6f4d06d2926ac834c02e3a99d5db2ac5c2fe14 - requires_dist: - - diraccfg - - pydantic>=2.0.0 - - typing-extensions>=4.0.0 - - pytest-cov>=4.0.0 ; extra == 'testing' - - pytest>=7.0.0 ; extra == 'testing' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/ab/7e/5f02b757bb825e5cdc65f6f7a12c209963bec877d61497393bea8f41f9ce/diracx_api-0.0.8-py3-none-any.whl - name: diracx-api - version: 0.0.8 - sha256: 73343b5cebadf17ab511a3dfb47492f1fc2b8aca0d3fe1b3c4808d5595e9ce7d - requires_dist: - - diracx-client - - diracx-core - - httpx - - zstandard - - diracx-testing ; extra == 'testing' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/b0/28/87e78ff0d6041f40431d88b8aa3b645be7476a420d8dcbf7197f5b394c5c/diracx_cli-0.0.8-py3-none-any.whl - name: diracx-cli - version: 0.0.8 - sha256: 3c38d3913e99922a0d9d8692a6d154bbdf98c63bb4411609bf5a65881b157e10 - requires_dist: - - diraccfg - - diracx-api - - diracx-client - - diracx-core - - gitpython - - pydantic>=2.10 - - pyyaml - - rich - - typer>=0.15.4 - - diracx-testing ; extra == 'testing' - - types-pyyaml ; extra == 'types' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/f2/61/0c78d9778bffd844863d3173a5fefb506d7131ceebecee523a9e27024aa1/diracx_client-0.0.8-py3-none-any.whl - name: diracx-client - version: 0.0.8 - sha256: 9c8406add1f14c103ac91440fa41bb93e400d98bcad60f32e987ff6b233fa18b - requires_dist: - - azure-core - - diracx-core - - httpx - - isodate - - pyjwt - - diracx-testing ; extra == 'testing' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/b2/c9/459da97eb93fad89738951972671d44be197610242b8da88a0384791ea7e/diracx_core-0.0.8-py3-none-any.whl - name: diracx-core - version: 0.0.8 - sha256: caed9a107a1ee93a4c5a44e1e2ca753acefbacdb44a46e22907d7ef839e3bdf8 - requires_dist: - - aiobotocore>=2.15 - - botocore>=1.35 - - cachetools - - diraccommon>=9.0.0 - - email-validator - - gitpython - - joserfc>=1.1.0 - - pydantic-settings - - pydantic>=2.10 - - pyyaml - - sh - - diracx-testing ; extra == 'testing' - - moto[server] ; extra == 'testing' - - botocore-stubs ; extra == 'types' - - types-aiobotocore-s3 ; extra == 'types' - - types-aiobotocore[essential] ; extra == 'types' - - types-cachetools ; extra == 'types' - - types-pyyaml ; extra == 'types' - requires_python: '>=3.11' -- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - sha256: 6d977f0b2fc24fee21a9554389ab83070db341af6d6f09285360b2e09ef8b26e - md5: 003b8ba0a94e2f1e117d0bd46aebc901 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/distlib?source=hash-mapping - size: 275642 - timestamp: 1752823081585 -- pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl - name: dnspython - version: 2.8.0 - sha256: 01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af - requires_dist: - - black>=25.1.0 ; extra == 'dev' - - coverage>=7.0 ; extra == 'dev' - - flake8>=7 ; extra == 'dev' - - hypercorn>=0.17.0 ; extra == 'dev' - - mypy>=1.17 ; extra == 'dev' - - pylint>=3 ; extra == 'dev' - - pytest-cov>=6.2.0 ; extra == 'dev' - - pytest>=8.4 ; extra == 'dev' - - quart-trio>=0.12.0 ; extra == 'dev' - - sphinx-rtd-theme>=3.0.0 ; extra == 'dev' - - sphinx>=8.2.0 ; extra == 'dev' - - twine>=6.1.0 ; extra == 'dev' - - wheel>=0.45.0 ; extra == 'dev' - - cryptography>=45 ; extra == 'dnssec' - - h2>=4.2.0 ; extra == 'doh' - - httpcore>=1.0.0 ; extra == 'doh' - - httpx>=0.28.0 ; extra == 'doh' - - aioquic>=1.2.0 ; extra == 'doq' - - idna>=3.10 ; extra == 'idna' - - trio>=0.30 ; extra == 'trio' - - wmi>=1.5.1 ; sys_platform == 'win32' and extra == 'wmi' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl - name: dogpile-cache - version: 1.5.0 - sha256: dc7b47d37844db15e8fdc0243c1b58857a2ddc52a5118237a97127bac200e18d - requires_dist: - - decorator>=4.0.0 - - stevedore>=3.0.0 - - typing-extensions>=4.0.1 ; python_full_version < '3.11' - - pifpaf>=3.3.0 ; extra == 'pifpaf' - - pymemcache ; extra == 'pymemcache' - - python-memcached ; extra == 'memcached' - - python-binary-memcached ; extra == 'bmemcached' - - pylibmc ; extra == 'pylibmc' - - redis ; extra == 'redis' - - valkey ; extra == 'valkey' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/58/19/0380af745f151a1648657bbcef0fb49ac28bf09083d94498163ffd9b32dc/dominate-2.9.1-py2.py3-none-any.whl - name: dominate - version: 2.9.1 - sha256: cb7b6b79d33b15ae0a6e87856b984879927c7c2ebb29522df4c75b28ffd9b989 - requires_python: '>=3.4' -- pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl - name: email-validator - version: 2.3.0 - sha256: 80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4 - requires_dist: - - dnspython>=2.0.0 - - idna>=2.0.0 - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 - md5: 8e662bd460bda79b1ea39194e3c4c9ab - depends: - - python >=3.10 - - typing_extensions >=4.6.0 - license: MIT and PSF-2.0 - purls: - - pkg:pypi/exceptiongroup?source=hash-mapping - size: 21333 - timestamp: 1763918099466 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.3-hecca717_0.conda - sha256: c5d573e6831fb41177fb5ae0f1ee09caed55a868ec9887bc80ccc22c3e57b9b4 - md5: c81f6fa1865526f5ab1e6b669b3ee877 + size: 1911621 + timestamp: 1662007838768 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda + sha256: 1f738280f245863c5ac78bcc04bb57266357acda45661c4aa25823030c6fb5db + md5: 55e29b72a71339bc651f9975492db71f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - gmock 1.17.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 416610 + timestamp: 1748320117187 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a + md5: c80d8a3b84358cb967fa81e7075fbc8a depends: - __glibc >=2.17,<3.0.a0 - - libexpat 2.7.3 hecca717_0 - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] - size: 143991 - timestamp: 1763549744569 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda - sha256: 8b90dc21f00167a7e58abb5141a140bdb31a7c5734fe1361b5f98f4a4183fd32 - md5: 2cfaaccf085c133a477f0a7a8657afe9 + size: 12723451 + timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda + sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da + md5: 38f5dbc9ac808e31c00650f7be1db93f depends: - - python >=3.10 - license: Unlicense - purls: - - pkg:pypi/filelock?source=hash-mapping - size: 18661 - timestamp: 1768022315929 -- pypi: https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl - name: frozenlist - version: 1.8.0 - sha256: 119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl - name: frozenlist - version: 1.8.0 - sha256: 4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - name: frozenlist - version: 1.8.0 - sha256: cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/5f/e8/2e6301567e6debaad6abae0e217428471651ce877537b7095b6a8e7d8cd2/fts3-3.14.2-py3-none-any.whl - name: fts3 - version: 3.14.2 - sha256: 28528f3656f156dd7cddb02ce82bb88cbaa8ab635d899aa2b97aa838d080bfd4 - requires_dist: - - m2crypto - - requests - - setuptools>=39 - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/gct-6.2.1705709074-h6bbaf85_0.conda - sha256: d0dc86c605be9f7de04a3d47524acb4bc8cbf0fd8f77ad2e444913788cb1d360 - md5: 17103926aa1221d9d7520ca55ff09ef9 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 82709 + timestamp: 1726487116178 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 depends: - - libedit >=3.1.20191231,<3.2.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libtool >=2.4.7,<3.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 - - perl - license: Apache-2.0 - license_family: Apache + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later purls: [] - size: 3399111 - timestamp: 1709823867374 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gct-6.2.1705709074-h8d8e280_0.conda - sha256: 02abd54ab941346e41aa65bc32bb51750c24bb559660bc6b5c8710294a489349 - md5: fb76224d23bd06f2dc83791fa56eea23 + size: 134088 + timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libtool >=2.4.7,<3.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 - - perl - license: Apache-2.0 - license_family: Apache + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT purls: [] - size: 3229688 - timestamp: 1709825282762 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gct-6.2.1705709074-h07e554c_0.conda - sha256: eaadb01056b490a777e9dfa7fc6f176f41cbb4ae07e434513de680fc561c64f3 - md5: 4703e9e9400e3824297171fd972ce97a + size: 1386730 + timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c + md5: 18335a698559cdbcd86150a48bf54ba6 depends: - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libtool >=2.4.7,<3.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.1,<4.0a0 - - perl - license: Apache-2.0 - license_family: Apache + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL purls: [] - size: 3410291 - timestamp: 1709824989090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfal2-2.23.5-h3ec3711_0.conda - sha256: f7b7b766a6ed222bd0657db4f9d66e3b1420e8638b7a8aef58bbf26e3e213450 - md5: 31e0c86aff2be99388ab9913e13dac4b + size: 728002 + timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda + build_number: 8 + sha256: b2da6bfd72a1c9cb143ccf64bf5b28790cb4eb58bd1cb978f6537b2322f7d48b + md5: 00fc660ab1b2f5ca07e92b4900d10c79 + depends: + - libopenblas >=0.3.33,<0.3.34.0a0 + - libopenblas >=0.3.33,<1.0a0 + constrains: + - blas 2.308 openblas + - mkl <2027 + - libcblas 3.11.0 8*_openblas + - liblapack 3.11.0 8*_openblas + - liblapacke 3.11.0 8*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18804 + timestamp: 1779859100675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda + sha256: fef9f2977ac341fd0fd7802bccffff0f220e4896f6fef29040428071d0aa863b + md5: 4dfa9b413062a24e09938fb6f91af821 depends: - - json-c >=0.18,<0.19.0a0 - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - icu >=78.1,<79.0a0 + - libgcc >=14 + - liblzma >=5.8.1,<6.0a0 - libstdcxx >=14 - - gtest >=1.17.0,<1.17.1.0a0 - - srm-ifce >=1.24.6,<2.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - libzlib >=1.3.1,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - pugixml >=1.15,<1.16.0a0 - - davix >=0.8.10,<0.9.0a0 - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - libuuid >=2.41.3,<3.0a0 - - xrootd >=5.8.4,<6.0a0 - - openldap >=2.6.10,<2.7.0a0 - - libglib >=2.86.3,<3.0a0 - - dcap >=2.47.14,<2.48.0a0 - license: Apache-2.0 - license_family: APACHE + - zstd >=1.5.7,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 purls: [] - size: 501235 - timestamp: 1769072269303 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gfal2-2.23.5-h6ef8084_0.conda - sha256: 82333798f4c4980de18baeed6fca6ffadb46cb149fd492f1d0f6c7c471bfebb7 - md5: 982b40947d8ed9d1e7e56cfc00a0cce3 + size: 3229874 + timestamp: 1766347309472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.90.0-py314h3a4f467_1.conda + sha256: 6e95db8afd7e7988bc6f6ff695660f8dabfd6e8ed5465b3dd0f5f5a4784c77a8 + md5: 4bae81975901f3939de17434076c3f6e depends: - - json-c >=0.18,<0.19.0a0 - - libcxx >=19 - - __osx >=10.13 - - libssh2 >=1.11.1,<2.0a0 - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - libglib >=2.86.3,<3.0a0 - - davix >=0.8.10,<0.9.0a0 - - srm-ifce >=1.24.6,<2.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - dcap >=2.47.14,<2.48.0a0 - - gtest >=1.17.0,<1.17.1.0a0 - - openldap >=2.6.10,<2.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - pugixml >=1.15,<1.16.0a0 - - libuuid >=2.41.3,<3.0a0 - - xrootd >=5.8.4,<6.0a0 - license: Apache-2.0 - license_family: APACHE + - __glibc >=2.17,<3.0.a0 + - libboost 1.90.0 hd24cca6_1 + - libgcc >=14 + - libstdcxx >=14 + - numpy >=1.23,<3 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - boost <0.0a0 + - py-boost <0.0a0 + license: BSL-1.0 purls: [] - size: 814499 - timestamp: 1769072316410 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfal2-2.23.5-h46ca294_0.conda - sha256: 86f943d3531e3636a458c25f9bc11ace03bea4a745f90867cb3d9607f932bd0f - md5: f6fbc5578b64a47c78cc2e7b5b58ffe5 + size: 130755 + timestamp: 1766348102329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda + build_number: 8 + sha256: 1a2bc77bb26520255904a3d9b1f40e6bf0bf9d8d3405c7709dd162282820915a + md5: 33a413f1095f8325e5c30fde3b0d2445 depends: - - json-c >=0.18,<0.19.0a0 - - libcxx >=19 - - __osx >=11.0 - - srm-ifce >=1.24.6,<2.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - davix >=0.8.10,<0.9.0a0 - - dcap >=2.47.14,<2.48.0a0 - - openldap >=2.6.10,<2.7.0a0 - - libglib >=2.86.3,<3.0a0 - - xrootd >=5.8.4,<6.0a0 - - libuuid >=2.41.3,<3.0a0 - - gtest >=1.17.0,<1.17.1.0a0 + - libblas 3.11.0 8_h4a7cf45_openblas + constrains: + - blas 2.308 openblas + - liblapacke 3.11.0 8*_openblas + - liblapack 3.11.0 8*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18778 + timestamp: 1779859107964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda + sha256: 75963a5dd913311f59a35dbd307592f4fa754c4808aff9c33edb430c415e38eb + md5: c3cc2864f82a944bc90a7beb4d3b0e88 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.68.1,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - libzlib >=1.3.1,<2.0a0 - - pugixml >=1.15,<1.16.0a0 - license: Apache-2.0 - license_family: APACHE + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT purls: [] - size: 756388 - timestamp: 1769072357132 -- pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl - name: gitdb - version: 4.0.12 - sha256: 67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf - requires_dist: - - smmap>=3.0.1,<6 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl - name: gitlint-core - version: 0.19.1 - sha256: f41effd1dcbc06ffbfc56b6888cce72241796f517b46bd9fd4ab1b145056988c - requires_dist: - - arrow>=1 - - click>=8 - - importlib-metadata>=1.0 ; python_full_version < '3.8' - - sh>=1.13.0 ; sys_platform != 'win32' - - arrow==1.2.3 ; extra == 'trusted-deps' - - click==8.1.3 ; extra == 'trusted-deps' - - sh==1.14.3 ; sys_platform != 'win32' and extra == 'trusted-deps' - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl - name: gitpython - version: 3.1.46 - sha256: 79812ed143d9d25b6d176a10bb511de0f9c67b1fa641d82097b0ab90398a2058 - requires_dist: - - gitdb>=4.0.1,<5 - - typing-extensions>=3.10.0.2 ; python_full_version < '3.10' - - coverage[toml] ; extra == 'test' - - ddt>=1.1.1,!=1.4.3 ; extra == 'test' - - mock ; python_full_version < '3.8' and extra == 'test' - - mypy==1.18.2 ; python_full_version >= '3.9' and extra == 'test' - - pre-commit ; extra == 'test' - - pytest>=7.3.1 ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-instafail ; extra == 'test' - - pytest-mock ; extra == 'test' - - pytest-sugar ; extra == 'test' - - typing-extensions ; python_full_version < '3.11' and extra == 'test' - - sphinx>=7.1.2,<7.2 ; extra == 'doc' - - sphinx-rtd-theme ; extra == 'doc' - - sphinx-autodoc-typehints ; extra == 'doc' - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/80/38/9d42d60dffb04b45f03dbab9430898352dba277758640751dc5cc316c521/greenlet-3.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - name: greenlet - version: 3.3.1 - sha256: 34a729e2e4e4ffe9ae2408d5ecaf12f944853f40ad724929b7585bca808a9d6f - requires_dist: - - sphinx ; extra == 'docs' - - furo ; extra == 'docs' - - objgraph ; extra == 'test' - - psutil ; extra == 'test' - - setuptools ; extra == 'test' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/ae/fb/011c7c717213182caf78084a9bea51c8590b0afda98001f69d9f853a495b/greenlet-3.3.1-cp314-cp314-macosx_11_0_universal2.whl - name: greenlet - version: 3.3.1 - sha256: bd59acd8529b372775cd0fcbc5f420ae20681c5b045ce25bd453ed8455ab99b5 - requires_dist: - - sphinx ; extra == 'docs' - - furo ; extra == 'docs' - - objgraph ; extra == 'test' - - psutil ; extra == 'test' - - setuptools ; extra == 'test' - requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/gsoap-2.8.123-h8dc497d_0.tar.bz2 - sha256: c6a16f2b36a6a653d399cc542214b3601c54097dd5f6c4b96a0f3302d3d6480d - md5: e539f696d01d28dc42313a2ce66c0627 + size: 468706 + timestamp: 1777461492876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 depends: - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.12,<2.0.0a0 - - openssl >=3.0.5,<4.0a0 - license: GPL-2.0-only + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda + sha256: 363018b25fdb5534c79783d912bd4b685a3547f4fc5996357ad548899b0ee8e7 + md5: 93764a5ca80616e9c10106cdaec92f74 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.8.1.* + license: MIT + license_family: MIT + purls: [] + size: 77294 + timestamp: 1779278686680 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 + md5: 57736f29cc2b0ec0b6c2952d3f101b6a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_19 + - libgomp 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1911621 - timestamp: 1662007838768 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gsoap-2.8.123-h21ae599_0.tar.bz2 - sha256: 6ddba7cd259edbe80e153dcc6f239f1391ff9277af62b0cf935e1060d74dcedd - md5: b5c0854d2a52f20ea68fa9c29a68b786 + size: 1041084 + timestamp: 1778269013026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 + md5: 331ee9b72b9dff570d56b1302c5ab37d depends: - - libcxx >=14.0.4 - - libzlib >=1.2.12,<2.0.0a0 - - openssl >=3.0.5,<4.0a0 - license: GPL-2.0-only + - libgcc 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1844166 - timestamp: 1662007947987 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gsoap-2.8.123-hfb11b17_0.tar.bz2 - sha256: c0cb7fc084ecf7a522044010d755ee697b878e82a8f579db29bf36c473ae18ba - md5: e01fe9aa10adaca07d0b9bcd073fab52 + size: 27694 + timestamp: 1778269016987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda + sha256: 561a42758ef25b9ce308c4e2cf56daee4f06138385a17e29a492cd928e00be6f + md5: 42bf7eca1a951735fa06c0e3c0d5c8e6 depends: - - libcxx >=14.0.4 - - libzlib >=1.2.12,<2.0.0a0 - - openssl >=3.0.5,<4.0a0 - license: GPL-2.0-only + - libgfortran5 15.2.0 h68bc16d_19 + constrains: + - libgfortran-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1907483 - timestamp: 1662008204245 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda - sha256: 1f738280f245863c5ac78bcc04bb57266357acda45661c4aa25823030c6fb5db - md5: 55e29b72a71339bc651f9975492db71f + size: 27655 + timestamp: 1778269042954 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda + sha256: 057978bb69fea29ed715a9b98adf71015c31baecc4aeb2bfc20d4fd5d83579d4 + md5: 85072b0ad177c966294f129b7c04a2d5 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=15.2.0 constrains: - - gmock 1.17.0 - license: BSD-3-Clause - license_family: BSD + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 416610 - timestamp: 1748320117187 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gtest-1.17.0-h9275861_1.conda - sha256: 95410f5b305170b65a8dca803981f9972051aaad3d7a5af608b94b2c2a56f88a - md5: 00ff8e205f86bf121c07c95f65205713 + size: 2483673 + timestamp: 1778269025089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda + sha256: 33eb5d5310a5c2c0a4707a0afa644801c2e08c8f70c45e1f62f354116dfe0970 + md5: 17d484ab9c8179c6a6e5b7dbb5065afc depends: - - __osx >=10.13 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libffi >=3.5.2,<3.6.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libzlib >=1.3.2,<2.0a0 + - libiconv >=1.18,<2.0a0 constrains: - - gmock 1.17.0 + - glib >2.66 + license: LGPL-2.1-or-later + purls: [] + size: 4754097 + timestamp: 1778508800134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b + md5: faac990cb7aedc7f3a2224f2c9b0c26c + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 603817 + timestamp: 1778268942614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + purls: [] + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda + build_number: 8 + sha256: 168e327d737059553e15cc6ec36d76b9bbb3931c2a7721555fd68b4c9348b247 + md5: 809be8ba8712c77bc7d44c2d99390dc4 + depends: + - libblas 3.11.0 8_h4a7cf45_openblas + constrains: + - blas 2.308 openblas + - libcblas 3.11.0 8*_openblas + - liblapacke 3.11.0 8*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 391059 - timestamp: 1748320150242 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtest-1.17.0-ha393de7_1.conda - sha256: 441fb779db5f14eff8997ddde88c90c30ab64ea8bd4c219b76724e4d3d736c76 - md5: f277a9eb8063fe7c4e33d91b8296fb0c + size: 18790 + timestamp: 1779859115086 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda + sha256: 7620c6425d4491e17083106ca49624448fc16186c30a93cf2b58f862bba416d1 + md5: 8e5de39cab514fa908fcaa7ba37a8738 depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 38472 + timestamp: 1740593829307 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d + md5: b88d90cad08e6bc8ad540cb310a761fb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 constrains: - - gmock 1.17.0 - license: BSD-3-Clause + - xz 5.8.3.* + license: 0BSD + purls: [] + size: 113478 + timestamp: 1775825492909 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause license_family: BSD purls: [] - size: 378391 - timestamp: 1748320218212 -- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl - name: h11 - version: 0.16.0 - sha256: 63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl - name: httpcore - version: 1.0.9 - sha256: 2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 - requires_dist: - - certifi - - h11>=0.16 - - anyio>=4.0,<5.0 ; extra == 'asyncio' - - h2>=3,<5 ; extra == 'http2' - - socksio==1.* ; extra == 'socks' - - trio>=0.22.0,<1.0 ; extra == 'trio' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl - name: httpx - version: 0.28.1 - sha256: d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad - requires_dist: - - anyio - - certifi - - httpcore==1.* - - idna - - brotli ; platform_python_implementation == 'CPython' and extra == 'brotli' - - brotlicffi ; platform_python_implementation != 'CPython' and extra == 'brotli' - - click==8.* ; extra == 'cli' - - pygments==2.* ; extra == 'cli' - - rich>=10,<14 ; extra == 'cli' - - h2>=3,<5 ; extra == 'http2' - - socksio==1.* ; extra == 'socks' - - zstandard>=0.18.0 ; extra == 'zstd' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl - name: humanfriendly - version: '10.0' - sha256: 1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 - requires_dist: - - monotonic ; python_full_version == '2.7.*' - - pyreadline ; python_full_version < '3.8' and sys_platform == 'win32' - - pyreadline3 ; python_full_version >= '3.8' and sys_platform == 'win32' - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda - sha256: 142a722072fa96cf16ff98eaaf641f54ab84744af81754c292cb81e0881c0329 - md5: 186a18e3ba246eccfc7cff00cd19a870 + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f + md5: 2a45e7f8af083626f009645a6481f12d depends: - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 - libgcc >=14 - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT purls: [] - size: 12728445 - timestamp: 1767969922681 -- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_0.conda - sha256: f3066beae7fe3002f09c8a412cdf1819f49a2c9a485f720ec11664330cf9f1fe - md5: 30334add4de016489b731c6662511684 + size: 663344 + timestamp: 1773854035739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda + sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 + md5: 7c7927b404672409d9917d49bff5f2d6 depends: - - __osx >=10.13 - license: MIT - license_family: MIT + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later purls: [] - size: 12263724 - timestamp: 1767970604977 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda - sha256: d4cefbca587429d1192509edc52c88de52bc96c2447771ddc1f8bee928aed5ef - md5: 1e93aca311da0210e660d2247812fa02 + size: 33418 + timestamp: 1734670021371 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda + sha256: 3d9aa85648e5e18a6d66db98b8c4317cc426721ad7a220aa86330d1ccedc8903 + md5: 2d3278b721e40468295ca755c3b84070 depends: - - __osx >=11.0 - license: MIT - license_family: MIT + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.33,<0.3.34.0a0 + license: BSD-3-Clause + license_family: BSD purls: [] - size: 12358010 - timestamp: 1767970350308 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - sha256: 6a88cdde151469131df1948839ac2315ada99cf8d38aaacc9a7a5984e9cd8c19 - md5: 8bc5851c415865334882157127e75799 + size: 5931919 + timestamp: 1776993658641 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda + sha256: 1ab603b6ec93933e76027e1f23b21b22b858ba1b56f1e1695ef6fe5e80cb7358 + md5: 062b0ac602fb0adf250e3dfa86f221c4 depends: - - python >=3.10 - - ukkonen - license: MIT - license_family: MIT - purls: - - pkg:pypi/identify?source=compressed-mapping - size: 79302 - timestamp: 1768295306539 -- pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl - name: idna - version: '3.11' - sha256: 771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea - requires_dist: - - ruff>=0.6.2 ; extra == 'all' - - mypy>=1.11.2 ; extra == 'all' - - pytest>=8.3.2 ; extra == 'all' - - flake8>=7.1.1 ; extra == 'all' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl - name: importlib-metadata - version: 8.7.1 - sha256: 5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151 - requires_dist: - - zipp>=3.20 - - pytest>=6,!=8.1.* ; extra == 'test' - - packaging ; extra == 'test' - - pyfakefs ; extra == 'test' - - flufl-flake8 ; extra == 'test' - - pytest-perf>=0.9.2 ; extra == 'test' - - jaraco-test>=5.4 ; extra == 'test' - - sphinx>=3.5 ; extra == 'doc' - - jaraco-packaging>=9.3 ; extra == 'doc' - - rst-linker>=1.9 ; extra == 'doc' - - furo ; extra == 'doc' - - sphinx-lint ; extra == 'doc' - - jaraco-tidelift>=1.4 ; extra == 'doc' - - ipython ; extra == 'perf' - - pytest-checkdocs>=2.4 ; extra == 'check' - - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' - - pytest-cov ; extra == 'cover' - - pytest-enabler>=3.4 ; extra == 'enabler' - - pytest-mypy>=1.0.1 ; extra == 'type' - - mypy<1.19 ; platform_python_implementation == 'PyPy' and extra == 'type' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl - name: importlib-resources - version: 6.5.2 - sha256: 789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec - requires_dist: - - zipp>=3.1.0 ; python_full_version < '3.10' - - pytest>=6,!=8.1.* ; extra == 'test' - - zipp>=3.17 ; extra == 'test' - - jaraco-test>=5.4 ; extra == 'test' - - sphinx>=3.5 ; extra == 'doc' - - jaraco-packaging>=9.3 ; extra == 'doc' - - rst-linker>=1.9 ; extra == 'doc' - - furo ; extra == 'doc' - - sphinx-lint ; extra == 'doc' - - jaraco-tidelift>=1.4 ; extra == 'doc' - - pytest-checkdocs>=2.4 ; extra == 'check' - - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' - - pytest-cov ; extra == 'cover' - - pytest-enabler>=2.2 ; extra == 'enabler' - - pytest-mypy ; extra == 'type' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 - md5: 9614359868482abba1bd15ce465e3c42 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + purls: [] + size: 957849 + timestamp: 1780574429573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 + md5: eecce068c7e4eddeb169591baac20ac4 depends: - - python >=3.10 - license: MIT - license_family: MIT - purls: - - pkg:pypi/iniconfig?source=compressed-mapping - size: 13387 - timestamp: 1760831448842 -- pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl - name: isodate - version: 0.7.2 - sha256: 28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - name: jmespath - version: 1.1.0 - sha256: a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a1/01/9674cc6d478406ae61d910cb16ca8b5699a8a9e6a2019987ebe5a5957d1d/joserfc-1.6.1-py3-none-any.whl - name: joserfc - version: 1.6.1 - sha256: 74d158c9d56be54c710cdcb2a0741372254b682ad2101a0f72e5bd0e925695f0 - requires_dist: - - cryptography>=45.0.1 - - pycryptodome ; extra == 'drafts' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da - md5: 38f5dbc9ac808e31c00650f7be1db93f + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304790 + timestamp: 1745608545575 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc + md5: 5794b3bdc38177caf969dabd3af08549 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_19 + constrains: + - libstdcxx-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 5852044 + timestamp: 1778269036376 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + sha256: 0672b6b6e1791c92e8eccad58081a99d614fcf82bca5841f9dfa3c3e658f83b9 + md5: e5ce228e579726c07255dbf90dc62101 + depends: + - libstdcxx 15.2.0 h934c35e_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 27776 + timestamp: 1778269074600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda + sha256: c8245c70ba5b075e0cd61f430afbda00b60931603ed4ea31ce89e7fe930e4e3d + md5: 90697d80c181414aa3472199e136a04e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libltdl 2.4.3a h5888daf_0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 415044 + timestamp: 1740593851157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda + sha256: 3f0edf1280e2f6684a986f821eaa3e123d2694a00b31b96ca0d4a4c12c129231 + md5: 7d0a66598195ef00b6efc55aefc7453b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 40163 + timestamp: 1779118517630 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda + sha256: 3d44f737c5ae52d5af32682cc1530df433f401f8e58a7533926536244127572a + md5: e79d2c2f24b027aa8d5ab1b1ba3061e7 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 license: MIT license_family: MIT purls: [] - size: 82709 - timestamp: 1726487116178 -- conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda - sha256: b58f8002318d6b880a98e1b0aa943789b3b0f49334a3bdb9c19b463a0b799cad - md5: 2c5a3c42de607dda0cfa0edd541fd279 + size: 559775 + timestamp: 1776376739004 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda + sha256: 3bc5551720c58591f6ea1146f7d1539c734ed1c40e7b9f5cb8cb7e900c509aba + md5: 995d8c8bad2a3cc8db14675a153dec2b depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 hca6bf5a_0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 71514 - timestamp: 1726487153769 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda - sha256: 73179a1cd0b45c09d4f631cb359d9e755e6e573c5d908df42006728e0bf8297c - md5: 94f14ef6157687c30feb44e1abecd577 + size: 46810 + timestamp: 1776376751152 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.3-h49c6c72_0.conda + sha256: adada9c781ea51faea3e3adcd6883dc294ff2fa044c7f4e199430a11862dfa40 + md5: be70cb50dd0ecc1531c58034d38f72e0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2 2.15.3 h49c6c72_0 + - libxml2-16 2.15.3 hca6bf5a_0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 73715 - timestamp: 1726487214495 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 - md5: ada41c863af263cc4c5fcbaff7c3e4dc + size: 80529 + timestamp: 1776376762779 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 + md5: d87ff7921124eccd67248aa483c23fec depends: - - attrs >=22.2.0 - - jsonschema-specifications >=2023.3.6 - - python >=3.10 - - referencing >=0.28.4 - - rpds-py >=0.25.0 + - __glibc >=2.17,<3.0.a0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + purls: [] + size: 63629 + timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/m2crypto-0.45.1-py314haf11619_2.conda + sha256: f923b3fcc7875c24e21d6de6841fdacc150ca87146aa2a0ebcf39c0c9e7572fd + md5: edaeb576dc4f23f2063787f62da70fef + depends: + - openssl - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.2,<4.0a0 + - python_abi 3.14.* *_cp314 license: MIT license_family: MIT purls: - - pkg:pypi/jsonschema?source=compressed-mapping - size: 82356 - timestamp: 1767839954256 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda - sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 - md5: 439cd0f567d697b20a8f45cb70a1005a + - pkg:pypi/m2crypto?source=hash-mapping + size: 413718 + timestamp: 1757689047646 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.1.0-py314h518bba1_0.conda + sha256: 9fcf9e7343c30fdeab75e8440caa2814798eeff22a6dc5f7a556df8372e1b0ca + md5: 5625fce7423d7579e60f9cbcc5738d2b depends: - - python >=3.10 - - referencing >=0.31.0 + - ast-serialize >=0.3.0,<1.0.0 + - mypy_extensions >=1.0.0 + - pathspec >=1.0.0 - python + - python-librt >=0.11.0 + - typing_extensions >=4.6.0 + - psutil >=4.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 license: MIT license_family: MIT purls: - - pkg:pypi/jsonschema-specifications?source=hash-mapping - size: 19236 - timestamp: 1757335715225 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 - md5: b38117a3c920364aff79f870c984b4a3 + - pkg:pypi/mypy?source=compressed-mapping + size: 22860519 + timestamp: 1780315602311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 + md5: fc21868a1a5aacc937e7a18747acb8a5 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: LGPL-2.1-or-later + - libgcc >=14 + license: X11 AND BSD-3-Clause purls: [] - size: 134088 - timestamp: 1754905959823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + size: 918956 + timestamp: 1777422145199 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda + sha256: bc61ae892973751a6b0e6ecea57ed6d7053224bddcb007165d6ceb1d7344ad47 + md5: f49b5f950379e0b97c35ca97682f7c6a depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - license: MIT - license_family: MIT + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - liblapack >=3.9.0,<4.0a0 + - python_abi 3.14.* *_cp314 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8928909 + timestamp: 1779169198391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda + sha256: 21c4f6c7f41dc9bec2ea2f9c80440d9a4d45a6f2ac13243e658f10dcf1044146 + md5: 680608784722880fbfe1745067570b00 + depends: + - __glibc >=2.17,<3.0.a0 + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.6,<4.0a0 + license: OLDAP-2.8 + license_family: BSD purls: [] - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c - md5: d4765c524b1d91567886bde656fb514b + size: 786149 + timestamp: 1775741359582 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b + md5: 79dd2074b5cd5c5c6b2930514a11e22d depends: - - __osx >=10.13 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - license: MIT - license_family: MIT + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache purls: [] - size: 1185323 - timestamp: 1719463492984 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 + size: 3159683 + timestamp: 1781069855778 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff + md5: 7a3bff861a6583f1889021facefc08b1 depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1222481 + timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda + build_number: 7 + sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 + md5: f2cfec9406850991f4e3d960cc9e3321 + depends: + - libgcc-ng >=12 + - libxcrypt >=4.4.36 + license: GPL-1.0-or-later OR Artistic-1.0-Perl + purls: [] + size: 13344463 + timestamp: 1703310653947 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py314h0f05182_0.conda + sha256: f15574ed6c8c8ed8c15a0c5a00102b1efe8b867c0bd286b498cd98d95bd69ae5 + md5: 4f225a966cfee267a79c5cb6382bd121 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 231303 + timestamp: 1769678156552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 + md5: b11a4c6bf6f6f44e5e143f759ffa2087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: MIT license_family: MIT purls: [] - size: 1155530 - timestamp: 1719463474401 -- pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl - name: lb-telemetry - version: 0.5.0 - sha256: 45c2ef5a5bdb98446f0a57b71742ef76b0a3add44e58ab059761ccc5d6fd1bbf - requires_dist: - - lbplatformutils - - logzero - - requests - - mypy ; extra == 'dev' - - mypy-extensions ; extra == 'dev' - - pre-commit ; extra == 'dev' - - pytest ; extra == 'dev' - - pytest-cov ; extra == 'dev' - - ruff ; extra == 'dev' - - types-requests ; extra == 'dev' -- pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl - name: lbcondawrappers - version: 0.5.2 - sha256: 4200c89661017bc28b910aa040092970c357f4130375d84ec14a258adf8318e0 - requires_dist: - - lb-telemetry>=0.5.0 - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl - name: lbenv - version: 2.4.0 - sha256: 5fb13304ea4d2c9f9b9a4f0710d3931ec9cd45f173581afa17a330d2635bed7e - requires_dist: - - lbplatformutils>=4.2.3 - - xenv<1.0.0 - - importlib-resources - - importlib-metadata - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - coverage ; extra == 'testing' - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/16/4a/b4d7feb029d4e75d4882d8d1d9029938c31a2e73074f87ffcff0f4a8ba9e/lbplatformutils-4.5.1-py3-none-any.whl - name: lbplatformutils - version: 4.5.1 - sha256: f61f8192bf93da16d50a3e039e9998d75aed8ffc486c226ab838bdaeb1b98679 - requires_python: '>=3.7,<4.0' -- pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl - name: lbprodrun - version: 1.12.4 - sha256: a2a408f00f31d124dd3c262db7d3aaa4cd022ec9c649b91b792c6be64b7b4c21 - requires_dist: - - click>=8.0 - - lbenv - - pydantic>=1.10 - - typer>=0.4.1 - - packaging - - pyyaml>=6.0 - - lbcondawrappers - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - zstandard ; extra == 'testing' - - mypy ; extra == 'mypy' - - types-pyyaml ; extra == 'mypy' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda - sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 - md5: 12bd9a3f089ee6c9266a37dab82afabd - depends: - - __glibc >=2.17,<3.0.a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - binutils_impl_linux-64 2.45.1 - license: GPL-3.0-only - purls: [] - size: 725507 - timestamp: 1770267139900 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda - build_number: 5 - sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c - md5: c160954f7418d7b6e87eaf05a8913fa9 - depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 - constrains: - - mkl <2026 - - liblapack 3.11.0 5*_openblas - - libcblas 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 18213 - timestamp: 1765818813880 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda - build_number: 5 - sha256: 4754de83feafa6c0b41385f8dab1b13f13476232e16f524564a340871a9fc3bc - md5: 36d2e68a156692cbae776b75d6ca6eae - depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 - constrains: - - liblapack 3.11.0 5*_openblas - - blas 2.305 openblas - - libcblas 3.11.0 5*_openblas - - mkl <2026 - - liblapacke 3.11.0 5*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 18476 - timestamp: 1765819054657 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda - build_number: 5 - sha256: 620a6278f194dcabc7962277da6835b1e968e46ad0c8e757736255f5ddbfca8d - md5: bcc025e2bbaf8a92982d20863fe1fb69 - depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 - constrains: - - libcblas 3.11.0 5*_openblas - - liblapack 3.11.0 5*_openblas - - liblapacke 3.11.0 5*_openblas - - blas 2.305 openblas - - mkl <2026 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 18546 - timestamp: 1765819094137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - sha256: dd489228e1916c7720c925248d0ba12803d1dc8b9898be0c51f4ab37bab6ffa5 - md5: d70e4dc6a847d437387d45462fe60cf9 + size: 118488 + timestamp: 1736601364156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.5-habeac84_100_cp314.conda + build_number: 100 + sha256: 55eed9bf2a3f6e90311276f0834737fe7c2d9ec3e5e2e557507858df4c7521e6 + md5: da92e59ff92f2d5ede4f612af20f583f depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - icu >=78.1,<79.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.8.0,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - - liblzma >=5.8.1,<6.0a0 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.53.1,<4.0a0 + - libuuid >=2.42.1,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata - zstd >=1.5.7,<1.6.0a0 - constrains: - - boost-cpp <0.0a0 - license: BSL-1.0 + license: Python-2.0 purls: [] - size: 3072984 - timestamp: 1766347479317 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.88.0-h5950822_7.conda - sha256: 4cf91837a0af26996a43538213abe14adf54e07ac9fc8cb3880185f6e086c5df - md5: de6f7fa28d94fa380024444324b15d5f + size: 36745188 + timestamp: 1779236923603 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-gfal2-1.13.1-py314h29c34cb_3.conda + sha256: d9a771d6c26d8f9cb16a931f462b5ea9d299437be5771488bce2010359b55c0e + md5: 85195e077bed05d77c30e5e97c9478a3 depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - icu >=78.1,<79.0a0 - - libcxx >=19 - - liblzma >=5.8.1,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - boost-cpp <0.0a0 - license: BSL-1.0 - purls: [] - size: 2091448 - timestamp: 1766348915727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.88.0-h0419b56_7.conda - sha256: d3872915a43512b0404e131d965e6e8c1e2546b13ccfd2463ef72fbfe1456afc - md5: 34e8ce0732bb254bd17f0b9ecea788c2 + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libboost-python >=1.90.0,<1.91.0a0 + - python_abi 3.14.* *_cp314 + - gfal2 >=2.23.5,<2.24.0a0 + - libglib >=2.88.1,<3.0a0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/gfal2-python?source=hash-mapping + size: 201476 + timestamp: 1780391797641 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.11.0-py314h0f05182_0.conda + sha256: 4529fdc71dcaa13ad25c4708751029c56f507f7d26f1748f20875cea85a158fa + md5: 1c6a332e01cd8f81f350434fbf7bcaad depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - icu >=78.1,<79.0a0 - - libcxx >=19 - - liblzma >=5.8.1,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - boost-cpp <0.0a0 - license: BSL-1.0 - purls: [] - size: 1992135 - timestamp: 1766348005115 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py314h3a4f467_7.conda - sha256: a701f2a6afa984b52cfffe51abb5aaf8e6e534082f71e36078f0f4cf54d2e7fe - md5: ed299171ab3525d8f4ed400083105743 + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/librt?source=hash-mapping + size: 156252 + timestamp: 1778511622812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda + sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d + md5: 2035f68f96be30dc60a5dfd7452c7941 depends: - __glibc >=2.17,<3.0.a0 - - libboost 1.88.0 hd24cca6_7 - libgcc >=14 - - libstdcxx >=14 - - numpy >=1.23,<3 - python >=3.14,<3.15.0a0 - python_abi 3.14.* *_cp314 - constrains: - - py-boost <0.0a0 - - boost <0.0a0 - license: BSL-1.0 - purls: [] - size: 132709 - timestamp: 1766347940966 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-python-1.88.0-py314hee2ba4e_7.conda - sha256: ee37fd8e0293a50de5b2121aa7ca84fa199a4489bde2061df676c5cb4870da5c - md5: e387fe913fb05251520fa4d35e3a6f25 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 202391 + timestamp: 1770223462836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec depends: - - __osx >=10.13 - - libboost 1.88.0 h5950822_7 - - libcxx >=19 - - numpy >=1.23,<3 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - constrains: - - boost <0.0a0 - - py-boost <0.0a0 - license: BSL-1.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL purls: [] - size: 108601 - timestamp: 1766349368723 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-python-1.88.0-py314hce24fef_7.conda - sha256: 3f6be1bbb56c17e4b362b8b7b80568733e76108f289cb11ca4f14289ed173366 - md5: 545c065df173b77ab97eb6ad190b985e + size: 345073 + timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py314h1bee95f_0.conda + sha256: 79d753848377c415578f42285f5f87be711503b887c99e8890fd51d3fae1d6a5 + md5: fb5b4fc759b225d4f32730cc8380ec8e depends: - - __osx >=11.0 - - libboost 1.88.0 h0419b56_7 - - libcxx >=19 - - numpy >=1.23,<3 - - python >=3.14,<3.15.0a0 - - python >=3.14,<3.15.0a0 *_cp314 + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - python_abi 3.14.* *_cp314 constrains: - - py-boost <0.0a0 - - boost <0.0a0 - license: BSL-1.0 - purls: [] - size: 107891 - timestamp: 1766348725978 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda - build_number: 5 - sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 - md5: 6636a2b6f1a87572df2970d3ebc87cc0 + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 309696 + timestamp: 1779976994059 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.16-h6a952e8_0.conda + noarch: python + sha256: 8b0f50a439826eedfcd2741985aa55d8af7d281a4cebde7a8c2ceda6bbeb1bc4 + md5: 8d5840b229d9e957ac2af3c3b4e0eadc depends: - - libblas 3.11.0 5_h4a7cf45_openblas + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 constrains: - - liblapacke 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapack 3.11.0 5*_openblas - license: BSD-3-Clause - license_family: BSD + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=compressed-mapping + size: 9192459 + timestamp: 1780611849620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scitokens-cpp-1.4.0-h096d96b_0.conda + sha256: 48b6a8088232220d69949916a64c3e8b5fe0f763a47d8a530246cf233181545a + md5: d0b9190c5937652677d4822d8f9abba9 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libsqlite >=3.51.2,<4.0a0 + - libstdcxx >=14 + - libuuid >=2.41.3,<3.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 18194 - timestamp: 1765818837135 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda - build_number: 5 - sha256: 8077c29ea720bd152be6e6859a3765228cde51301fe62a3b3f505b377c2cb48c - md5: b31d771cbccff686e01a687708a7ca41 + size: 2278960 + timestamp: 1771576161131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/srm-ifce-1.24.6-h3b26d37_2.conda + sha256: 994e04767e2fa540c43ffb96397835154a7fcc5b7bd9281d0923615f2f208352 + md5: a84d7ea541bfada40c748035211a9ce9 depends: - - libblas 3.11.0 5_he492b99_openblas - constrains: - - liblapack 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - license: BSD-3-Clause - license_family: BSD + - cgsi-gsoap >=1.3.11,<1.4.0a0 + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - libgcc-ng >=12 + - libglib >=2.78.4,<3.0a0 + - libstdcxx-ng >=12 + - openssl >=3.2.1,<4.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 18484 - timestamp: 1765819073006 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda - build_number: 5 - sha256: 38809c361bbd165ecf83f7f05fae9b791e1baa11e4447367f38ae1327f402fc0 - md5: efd8bd15ca56e9d01748a3beab8404eb + size: 215070 + timestamp: 1709962013437 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab depends: - - libblas 3.11.0 5_h51639a9_openblas + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 constrains: - - liblapacke 3.11.0 5*_openblas - - liblapack 3.11.0 5*_openblas - - blas 2.305 openblas - license: BSD-3-Clause + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL license_family: BSD purls: [] - size: 18548 - timestamp: 1765819108956 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda - sha256: 5454709d9fb6e9c3dd6423bc284fa7835a7823bfa8323f6e8786cdd555101fab - md5: 0a5563efed19ca4461cf927419b6eb73 + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py314h9891dd4_0.conda + sha256: c84034056dc938c853e4f61e72e5bd37e2ec91927a661fb9762f678cbea52d43 + md5: 5d3c008e54c7f49592fca9c32896a76f depends: - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 + - cffi - libgcc >=14 - - libnghttp2 >=1.67.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: curl + - libstdcxx >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: MIT license_family: MIT - purls: [] - size: 462942 - timestamp: 1767821743793 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - sha256: 1a0af3b7929af3c5893ebf50161978f54ae0256abb9532d4efba2735a0688325 - md5: de1910529f64ba4a9ac9005e0be78601 + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 15004 + timestamp: 1769438727085 +- conda: https://conda.anaconda.org/conda-forge/linux-64/voms-2.1.3-hd035966_0.conda + sha256: dff2c9ccd221a213a58780def6945249cb9711e1a778d760e2292de310469436 + md5: 87c478b4f1fc7045d696a48d5c9cd227 depends: - - __osx >=10.13 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.67.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 + - __glibc >=2.17,<3.0.a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: curl - license_family: MIT - purls: [] - size: 419089 - timestamp: 1767822218800 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - sha256: 11c78b3e89bc332933386f0a11ac60d9200afb7a811b9e3bec98aef8d4a6389b - md5: 36190179a799f3aee3c2d20a8a2b970d - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.67.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: curl - license_family: MIT - purls: [] - size: 402681 - timestamp: 1767822693908 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda - sha256: 2619d471c50c466320e2aea906a4363e34efe181e61346e4453bc68264c5185f - md5: 1ac756454e65fb3fd7bc7de599526e43 - depends: - - __osx >=10.13 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - purls: [] - size: 571912 - timestamp: 1770237202404 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda - sha256: 5fbeb2fc2673f0455af6079abf93faaf27f11a92574ad51565fa1ecac9a4e2aa - md5: 4cb5878bdb9ebfa65b7cdff5445087c5 - depends: - - __osx >=11.0 - license: Apache-2.0 WITH LLVM-exception + - openssl >=3.5.5,<4.0a0 + constrains: + - voms-clients ==9999999 + license: Apache-2.0 license_family: Apache purls: [] - size: 570068 - timestamp: 1770238262922 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b + size: 487001 + timestamp: 1773748242673 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xrootd-5.9.2-py314h422236f_0.conda + sha256: 199e708fa11fbf163bd242060b80f18fab5b18ed4fda135d4217bc61bc7afb0e + md5: 8417cfb96ccc95ca6513f5afca51b68a depends: + - openssl + - python + - readline + - libxml2-devel + - krb5 + - zlib - ncurses + - libgcc >=14 + - libstdcxx >=14 - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libuuid >=2.41.3,<3.0a0 + - openssl >=3.5.5,<4.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - python_abi 3.14.* *_cp314 + - libcurl >=8.19.0,<9.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libzlib >=1.3.2,<2.0a0 + - scitokens-cpp >=1.4.0,<2.0a0 + - libxcrypt >=4.4.36 - ncurses >=6.5,<7.0a0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 - md5: 1f4ed31220402fcddc083b4bff406868 + - readline >=8.3,<9.0a0 + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/xrootd?source=hash-mapping + size: 4204583 + timestamp: 1774639079059 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad + md5: a77f85f77be52ff59391544bfe73390a depends: - - ncurses - - __osx >=10.13 - - ncurses >=6.5,<7.0a0 - license: BSD-2-Clause - license_family: BSD + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT purls: [] - size: 115563 - timestamp: 1738479554273 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b + size: 85189 + timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 + md5: c2a01a08fc991620a74b32420e97868a depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - license: BSD-2-Clause - license_family: BSD + - __glibc >=2.17,<3.0.a0 + - libzlib 1.3.2 h25fd6f3_2 + license: Zlib + license_family: Other purls: [] - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 + size: 95931 + timestamp: 1774072620848 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 - md5: 899db79329439820b7e8f8de41bca902 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 106663 - timestamp: 1702146352558 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - license: BSD-2-Clause + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause license_family: BSD purls: [] - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - sha256: 1e1b08f6211629cbc2efe7a5bca5953f8f6b3cae0eeb04ca4dacee1bd4e2db2f - md5: 8b09ae86839581147ef2e5c5e229d164 + size: 601375 + timestamp: 1764777111296 +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 + md5: aaa2a381ccc56eac91d63b6c1240312f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - expat 2.7.3.* + - cpython + - python-gil license: MIT license_family: MIT purls: [] - size: 76643 - timestamp: 1763549731408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - sha256: d11b3a6ce5b2e832f430fd112084533a01220597221bee16d6c7dc3947dffba6 - md5: 222e0732a1d0780a622926265bee14ef + size: 8191 + timestamp: 1744137672556 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab + md5: c6b0543676ecb1fb2d7643941fe375f2 depends: - - __osx >=10.13 - constrains: - - expat 2.7.3.* + - python >=3.10 + - python license: MIT license_family: MIT - purls: [] - size: 74058 - timestamp: 1763549886493 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - sha256: fce22610ecc95e6d149e42a42fbc3cc9d9179bd4eb6232639a60f06e080eec98 - md5: b79875dbb5b1db9a4a22a4520f918e1a + purls: + - pkg:pypi/attrs?source=hash-mapping + size: 64927 + timestamp: 1773935801332 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + sha256: 2ade43752e8494f110a2cfb9e4d5b1ea29e3dcb037fba63395442d00371e8bf9 + md5: 0fd7e45c862b3305226a992f9f7b204a depends: - - __osx >=11.0 + - python >=3.11 + - python constrains: - - expat 2.7.3.* - license: MIT - license_family: MIT + - python >=3.11 + license: PSF-2.0 + license_family: PSF purls: [] - size: 67800 - timestamp: 1763549994166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 - md5: a360c33a5abe61c07959e449fa1453eb + size: 10186 + timestamp: 1753456386827 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda + sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b + md5: 489b8e97e666c93f68fdb35c3c9b957f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT + - __unix + license: ISC purls: [] - size: 58592 - timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 - md5: 66a0dc7464927d0853b590b6f53ba3ea + size: 129868 + timestamp: 1779289852439 +- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + sha256: aa589352e61bb221351a79e5946d56916e3c595783994884accdb3b97fe9d449 + md5: 381bd45fb7aa032691f3063aff47e3a1 depends: - - __osx >=10.13 + - python >=3.10 license: MIT license_family: MIT - purls: [] - size: 53583 - timestamp: 1769456300951 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7 - md5: 43c04d9cb46ef176bb2a4c77e324d599 + purls: + - pkg:pypi/cfgv?source=hash-mapping + size: 13589 + timestamp: 1763607964133 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 40979 - timestamp: 1769456747661 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_17.conda - sha256: 43860222cf3abf04ded0cf24541a105aa388e0e1d4d6ca46258e186d4e87ae3e - md5: 3c281169ea25b987311400d7a7e28445 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda + noarch: generic + sha256: 777882d2685f368417f31bbe1b28f73687fc6c8f6a5768bda20ffeefa6b07f5b + md5: a749029ce5d0632a913db19d17f944ab depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==15.2.0=*_17 - - libgomp 15.2.0 he0feb66_17 - license: GPL-3.0-only WITH GCC-exception-3.1 + - python >=3.14,<3.15.0a0 + - python_abi * *_cp314 + license: Python-2.0 purls: [] - size: 1040478 - timestamp: 1770252533873 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_17.conda - sha256: c987bcc8fc9c9a689672a0c72942536c1b2ba83bd679971cc927d9f66668855b - md5: 500bac4a846e5001cbf05572df6c3654 + size: 50212 + timestamp: 1779236682725 +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda + sha256: 7fb146a2e483e1b8d8be777bc7d03e5fa4974e4225a0774d4a9a4a5e3ea44c01 + md5: 141ec0ac00f1c946cb058d4e710f269a depends: - - _openmp_mutex - constrains: - - libgomp 15.2.0 17 - - libgcc-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 423903 - timestamp: 1770252717776 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_17.conda - sha256: 07ba27f2ef1ce444ce5c99d0f9590772fc5b58ba73c993477bfad74b17dfaa79 - md5: 65c07cee234440ae4d5d340fc4b2e69a + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/distlib?source=hash-mapping + size: 303675 + timestamp: 1780988738861 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 + md5: 8e662bd460bda79b1ea39194e3c4c9ab depends: - - _openmp_mutex - constrains: - - libgomp 15.2.0 17 - - libgcc-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 402928 - timestamp: 1770254186829 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_17.conda - sha256: bdfe50501e4a2d904a5eae65a7ae26e2b7a29b473ab084ad55d96080b966502e - md5: 1478bfa85224a65ab096d69ffd2af1e5 + - python >=3.10 + - typing_extensions >=4.6.0 + license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup?source=hash-mapping + size: 21333 + timestamp: 1763918099466 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda + sha256: ab7c43874d451c36a11b1516a3fbdf23803c05fcb01063a3877549dfb3e34ec4 + md5: 917880ebad7632e8a52eada085b98ce9 depends: - - libgcc 15.2.0 he0feb66_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 27541 - timestamp: 1770252546553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_17.conda - sha256: 1604c083dd65bc91e68b6cfe32c8610395088cb96af1acaf71f0dcaf83ac58f7 - md5: a6c682ac611cb1fa4d73478f9e6efb06 + - python >=3.10 + license: Unlicense + purls: + - pkg:pypi/filelock?source=compressed-mapping + size: 34899 + timestamp: 1780521975987 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + sha256: 381cedccf0866babfc135d65ee40b778bd20e927d2a5ec810f750c5860a7c5b8 + md5: 84a3233b709a289a4ddd7a2fd27dd988 depends: - - libgfortran5 15.2.0 h68bc16d_17 - constrains: - - libgfortran-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 27515 - timestamp: 1770252591906 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_17.conda - sha256: c2b319a051e10501b76115a427ab76aa7c0a23b157b50726bcb572373ffb94c0 - md5: 218faf079bac8521ccf3f8542feeb51d + - python >=3.10 + - ukkonen + license: MIT + license_family: MIT + purls: + - pkg:pypi/identify?source=hash-mapping + size: 79757 + timestamp: 1776455344188 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda + sha256: 43e2a5497cad1598ff88a3e69f69bc88b7b8f141fa63c60eab5db296317318b8 + md5: ffc17e785d64e12fc311af9184221839 depends: - - libgfortran5 15.2.0 hd16e46c_17 - constrains: - - libgfortran-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 139677 - timestamp: 1770252942112 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_17.conda - sha256: 7b96f428cb932df8d7c1aa4e433ed29b779dd9571934afdf4f9093a85155a142 - md5: 45ba22eb5381fb602a45233d89ba27ae + - python >=3.10 + - zipp >=3.20 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 34766 + timestamp: 1779714582554 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 + md5: 9614359868482abba1bd15ce465e3c42 depends: - - libgfortran5 15.2.0 hdae7583_17 - constrains: - - libgfortran-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 139757 - timestamp: 1770254394473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_17.conda - sha256: b1c77b85da9a3e204de986f59e262268805c6a35dffdf3953f1b98407db2aef3 - md5: 202fdf8cad9eea704c2b0d823d1732bf + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/iniconfig?source=hash-mapping + size: 13387 + timestamp: 1760831448842 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 + md5: ada41c863af263cc4c5fcbaff7c3e4dc depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 2480824 - timestamp: 1770252563579 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_17.conda - sha256: 464b13f5383bb0e38fecbf6bf5b2feadc12f5f57d7d0fd2d49ac051b10e453d3 - md5: bb0c5b043c41c27f4f73a103c6ad0c7f - depends: - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 1063057 - timestamp: 1770252727755 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_17.conda - sha256: 9c41ff08f61c953cee13fc3df3c6245741e5a71e453b2c094a6d55b0eeda3669 - md5: c6329d871fb3207e9657c384128f5488 - depends: - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 599374 - timestamp: 1770254196706 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda - sha256: 82d6c2ee9f548c84220fb30fb1b231c64a53561d6e485447394f0a0eeeffe0e6 - md5: 034bea55a4feef51c98e8449938e9cee - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - constrains: - - glib 2.86.3 *_0 - license: LGPL-2.1-or-later - purls: [] - size: 3946542 - timestamp: 1765221858705 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda - sha256: d205ecdd0873dd92f7b55ac9b266b2eb09236ff5f3b26751579e435bbaed499c - md5: 584ce14b08050d3f1a25ab429b9360bc + - attrs >=22.2.0 + - jsonschema-specifications >=2023.3.6 + - python >=3.10 + - referencing >=0.28.4 + - rpds-py >=0.25.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema?source=hash-mapping + size: 82356 + timestamp: 1767839954256 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 + md5: 439cd0f567d697b20a8f45cb70a1005a depends: - - __osx >=10.13 - - libffi >=3.5.2,<3.6.0a0 - - libiconv >=1.18,<2.0a0 - - libintl >=0.25.1,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - constrains: - - glib 2.86.3 *_0 - license: LGPL-2.1-or-later - purls: [] - size: 3708599 - timestamp: 1765222438844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda - sha256: 801c1835aa35a4f6e45e2192ad668bd7238d95c90ef8f02c52ce859c20117285 - md5: 057c7247514048ebdaf89373b263ebee + - python >=3.10 + - referencing >=0.31.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema-specifications?source=hash-mapping + size: 19236 + timestamp: 1757335715225 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 + md5: e9c622e0d00fa24a6292279af3ab6d06 depends: - - __osx >=11.0 - - libffi >=3.5.2,<3.6.0a0 - - libiconv >=1.18,<2.0a0 - - libintl >=0.25.1,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - constrains: - - glib 2.86.3 *_0 - license: LGPL-2.1-or-later - purls: [] - size: 3670602 - timestamp: 1765223125237 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_17.conda - sha256: b961b5dd9761907a7179678b58a69bb4fc16b940eb477f635aea3aec0a3f17a6 - md5: 51b78c6a757575c0d12f4401ffc67029 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 11766 + timestamp: 1745776666688 +- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + sha256: 4fa40e3e13fc6ea0a93f67dfc76c96190afd7ea4ffc1bac2612d954b42cdc3ee + md5: eb52d14a901e23c39e9e7b4a1a5c015f depends: - - __glibc >=2.17,<3.0.a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - purls: [] - size: 603334 - timestamp: 1770252441199 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f - md5: 915f5995e94f60e9a4826e0b0920ee88 + - python >=3.10 + - setuptools + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nodeenv?source=hash-mapping + size: 40866 + timestamp: 1766261270149 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + sha256: 3906abfb6511a3bb309e39b9b1b7bc38f50a723971de2395489fd1f379255890 + md5: 4c06a92e74452cfa53623a81592e8934 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: LGPL-2.1-only - purls: [] - size: 790176 - timestamp: 1754908768807 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 - md5: 210a85a1119f97ea7887188d176db135 + - python >=3.8 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 91574 + timestamp: 1777103621679 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda + sha256: 6eaee417d33f298db79bc7185ab1208604c0e6cf51dade34cd513c6f9db9c6f3 + md5: 11adc78451c998c0fd162584abfa3559 depends: - - __osx >=10.13 - license: LGPL-2.1-only - purls: [] - size: 737846 - timestamp: 1754908900138 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 - md5: 4d5a7445f0b25b6a3ddbb56e790f5251 + - python >=3.10 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 56559 + timestamp: 1777271601895 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + sha256: 9e5e1fd3506ccfc4d444fc4d2d39b0ed097d5d0e3bd3d4bdf6bcc81aaf66860d + md5: 2c5ef45db85d34799771629bd5860fd7 depends: - - __osx >=11.0 - license: LGPL-2.1-only - purls: [] - size: 750379 - timestamp: 1754909073836 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - sha256: 8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe122 - md5: a8e54eefc65645193c46e8b180f62d22 + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=compressed-mapping + size: 26308 + timestamp: 1779972894916 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e + md5: d7585b6550ad04c8c5e21097ada2888e depends: - - __osx >=10.13 - - libiconv >=1.18,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 96909 - timestamp: 1753343977382 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a - md5: 5103f6a6b210a3912faf8d7db516918c + - python >=3.9 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/pluggy?source=hash-mapping + size: 25877 + timestamp: 1764896838868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + sha256: 716960bf0a9eb334458a26b3bdcb17b8d0786062138a4f48c7f335c8418c5d0b + md5: 7859736b4f8ebe6c8481bf48d91c9a1e depends: - - __osx >=11.0 - - libiconv >=1.18,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 90957 - timestamp: 1751558394144 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda - build_number: 5 - sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 - md5: b38076eb5c8e40d0106beda6f95d7609 + - cfgv >=2.0.0 + - identify >=1.0.0 + - nodeenv >=0.11.1 + - python >=3.10 + - pyyaml >=5.1 + - virtualenv >=20.10.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pre-commit?source=hash-mapping + size: 201606 + timestamp: 1776858157327 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + sha256: e27e0473fc6723311a0bd48b89b616fa1b996a2f7a2b555338cbbcfb9c640568 + md5: 9c5491066224083c41b6d5635ed7107b depends: - - libblas 3.11.0 5_h4a7cf45_openblas - constrains: - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - - libcblas 3.11.0 5*_openblas + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD - purls: [] - size: 18200 - timestamp: 1765818857876 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda - build_number: 5 - sha256: 2c915fe2b3d806d4b82776c882ba66ba3e095e9e2c41cc5c3375bffec6bddfdc - md5: eb5b1c25d4ac30813a6ca950a58710d6 + purls: + - pkg:pypi/pycparser?source=compressed-mapping + size: 55886 + timestamp: 1779293633166 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda + sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 + md5: 16c18772b340887160c79a6acc022db0 depends: - - libblas 3.11.0 5_he492b99_openblas - constrains: - - libcblas 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - license: BSD-3-Clause + - python >=3.10 + license: BSD-2-Clause license_family: BSD - purls: [] - size: 18491 - timestamp: 1765819090240 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda - build_number: 5 - sha256: 735a6e6f7d7da6f718b6690b7c0a8ae4815afb89138aa5793abe78128e951dbb - md5: ca9d752201b7fa1225bca036ee300f2b + purls: + - pkg:pypi/pygments?source=hash-mapping + size: 893031 + timestamp: 1774796815820 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda + sha256: 960f59442173eee0731906a9077bd5ccf60f4b4226f05a22d1728ab9a21a879c + md5: 6a991452eadf2771952f39d43615bb3e depends: - - libblas 3.11.0 5_h51639a9_openblas + - colorama >=0.4 + - pygments >=2.7.2 + - python >=3.10 + - iniconfig >=1.0.1 + - packaging >=22 + - pluggy >=1.5,<2 + - tomli >=1 + - exceptiongroup >=1 + - python constrains: - - libcblas 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 18551 - timestamp: 1765819121855 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda - sha256: 7620c6425d4491e17083106ca49624448fc16186c30a93cf2b58f862bba416d1 - md5: 8e5de39cab514fa908fcaa7ba37a8738 + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 299984 + timestamp: 1775644472530 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.4.0-pyhcf101f3_0.conda + sha256: 1eddccab8f91f718f890a2aabfc25e68c37a6171fb120e4ec4df7a5a96a877e9 + md5: 787319c0ace4c39b7e883a86332db6a4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 38472 - timestamp: 1740593829307 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libltdl-2.4.3a-h240833e_0.conda - sha256: 7fef7479b1d39fdee1764c3228ef5688a309c723e4ca33907c24ec309180a216 - md5: 4e6e81b4795bccb19fa94fef42d88f1b + - pytest >=8.4,<10 + - python >=3.10 + - typing_extensions >=4.12 + - backports.asyncio.runner >=1.1,<2 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pytest-asyncio?source=hash-mapping + size: 43101 + timestamp: 1779802443053 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda + sha256: 2936717381a2740c7bef3d96827c042a3bba3ba1496c59892989296591e3dabb + md5: 0511afbe860b1a653125d77c719ece53 depends: - - __osx >=10.13 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 36971 - timestamp: 1740593983760 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libltdl-2.4.3a-h286801f_0.conda - sha256: 69cdd97f0a31b2b1e8a8bd8ebc03c6042d2ba589721d2eead3d7815d801cafdd - md5: db358e8493bd213b5650b9f9e1d0d355 + - pytest >=6.2.5 + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-mock?source=hash-mapping + size: 22968 + timestamp: 1758101248317 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda + sha256: dd709df1ef4e44ea9b6dd48b6e53c062efcc12850b3116b2884cfbef1aa4bd92 + md5: fb1e5c138e2d933e59b3fa0462acc5e6 depends: - - __osx >=11.0 - license: LGPL-2.0-or-later - license_family: LGPL + - 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: 34924 + timestamp: 1779967197357 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda + sha256: 41dd7da285d71d519257fa7dacb1cae060d5ebfaa5f92cba5994899d2978e943 + md5: 41954747ba952ec4b01e16c2c9e8d8ff + depends: + - cpython 3.14.5.* + - python_abi * *_cp314 + license: Python-2.0 purls: [] - size: 37328 - timestamp: 1740594040504 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb - md5: c7c83eecbb72d88b940c249af56c8b17 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + size: 50212 + timestamp: 1779236703009 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 constrains: - - xz 5.8.2.* - license: 0BSD + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD purls: [] - size: 113207 - timestamp: 1768752626120 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda - sha256: 7ab3c98abd3b5d5ec72faa8d9f5d4b50dcee4970ed05339bc381861199dabb41 - md5: 688a0c3d57fa118b9c97bf7e471ab46c + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 + md5: 870293df500ca7e18bedefa5838a22ab depends: - - __osx >=10.13 - constrains: - - xz 5.8.2.* - license: 0BSD - purls: [] - size: 105482 - timestamp: 1768753411348 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda - sha256: 7bfc7ffb2d6a9629357a70d4eadeadb6f88fa26ebc28f606b1c1e5e5ed99dc7e - md5: 009f0d956d7bfb00de86901d16e486c7 + - attrs >=22.2.0 + - python >=3.10 + - rpds-py >=0.7.0 + - typing_extensions >=4.4.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/referencing?source=hash-mapping + size: 51788 + timestamp: 1760379115194 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + sha256: 82088a6e4daa33329a30bc26dc19a98c7c1d3f05c0f73ce9845d4eab4924e9e1 + md5: 8e194e7b992f99a5015edbd4ebd38efd depends: - - __osx >=11.0 - constrains: - - xz 5.8.2.* - license: 0BSD - purls: [] - size: 92242 - timestamp: 1768752982486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 - md5: 2c21e66f50753a083cbe6b80f38268fa + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=hash-mapping + size: 639697 + timestamp: 1773074868565 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + sha256: 91cafdb64268e43e0e10d30bd1bef5af392e69f00edd34dfaf909f69ab2da6bd + md5: b5325cf06a000c5b14970462ff5e4d58 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: BSD-2-Clause - license_family: BSD + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/tomli?source=hash-mapping + size: 21561 + timestamp: 1774492402955 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 + md5: 0caa1af407ecff61170c9437a808404d + depends: + - python >=3.10 + - python + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 51692 + timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain purls: [] - size: 92400 - timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda - sha256: 1096c740109386607938ab9f09a7e9bca06d86770a284777586d6c378b8fb3fd - md5: ec88ba8a245855935b871a7324373105 + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda + sha256: 83d10be1b436fef778e7982f24a1f117b7aa34817135ec8b0ad63ee4455943eb + md5: 52434c636a05a06806d0978128d98c19 depends: - - __osx >=10.13 - license: BSD-2-Clause + - 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.4 + - typing_extensions >=4.13.2 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/virtualenv?source=hash-mapping + size: 5151645 + timestamp: 1780253977667 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + sha256: 210bd31c22bb88f5e2a167df24c95bb5f152b2ada7502f9b8c49d1f5366db423 + md5: ba3dcdc8584155c97c648ae9c044b7a3 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=compressed-mapping + size: 24190 + timestamp: 1779159948016 +- conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + build_number: 7 + sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 + md5: eaac87c21aff3ed21ad9656697bb8326 + depends: + - llvm-openmp >=9.0.1 + license: BSD-3-Clause license_family: BSD purls: [] - size: 79899 - timestamp: 1769482558610 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda - sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 - md5: 57c4be259f5e0b99a5983799a228ae55 + size: 8328 + timestamp: 1764092562779 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ast-serialize-0.5.0-py310hb9b2626_1.conda + noarch: python + sha256: 9d38da0aa9f1034eecf97151a26686f8a6261cbfe27eb486e80e0d86e0169d33 + md5: 839c5895cae30ab26a5d561955b9db25 depends: + - python >=3.10 - __osx >=11.0 - license: BSD-2-Clause + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ast-serialize?source=compressed-mapping + size: 1122556 + timestamp: 1780396847113 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + sha256: 9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42 + md5: 4173ac3b19ec0a4f400b4f782910368b + depends: + - __osx >=10.13 + license: bzip2-1.0.6 license_family: BSD purls: [] - size: 73690 - timestamp: 1769482560514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 - md5: b499ce4b026493a13774bcf0f4c33849 + size: 133427 + timestamp: 1771350680709 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + sha256: 2f5bc0292d595399df0d168355b4e9820affc8036792d6984bd751fdda2bcaea + md5: fc9a153c57c9f070bebaa7eef30a8f17 depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.5,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 + - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 666600 - timestamp: 1756834976695 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda - sha256: c48d7e1cc927aef83ff9c48ae34dd1d7495c6ccc1edc4a3a6ba6aff1624be9ac - md5: e7630cef881b1174d40f3e69a883e55f + size: 186122 + timestamp: 1765215100384 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py314h8ca4d5a_1.conda + sha256: e2c58cc2451cc96db2a3c8ec34e18889878db1e95cc3e32c85e737e02a7916fb + md5: 71c2caaa13f50fe0ebad0f961aee8073 depends: - __osx >=10.13 - - c-ares >=1.34.5,<2.0a0 - - libcxx >=19 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 + - libffi >=3.5.2,<3.6.0a0 + - pycparser + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 license: MIT license_family: MIT - purls: [] - size: 605680 - timestamp: 1756835898134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda - sha256: a07cb53b5ffa2d5a18afc6fd5a526a5a53dd9523fbc022148bd2f9395697c46d - md5: a4b4dd73c67df470d091312ab87bf6ae + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 293633 + timestamp: 1761203106369 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda + sha256: 4eb204b177a95eff980eeb58dcaa317564d22eb9f07b6dca440e3c57cfb15aea + md5: 7cca8a57fc2450bf088a257faf30c815 depends: - __osx >=11.0 - - c-ares >=1.34.5,<2.0a0 + - krb5 >=1.22.2,<1.23.0a0 - libcxx >=19 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 - license: MIT - license_family: MIT + - libntlm >=1.8,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause-Attribution + license_family: BSD purls: [] - size: 575454 - timestamp: 1756835746393 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 - md5: 7c7927b404672409d9917d49bff5f2d6 + size: 198777 + timestamp: 1771943943021 +- conda: https://conda.anaconda.org/conda-forge/osx-64/davix-0.8.10-h35d429b_1.conda + sha256: e76f71e61622aedcb8b8e936cf0a595eb44123b3ac355c28e46c48622f6943f5 + md5: 558377132bfd2fe14f6dbd28d644b25c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: LGPL-2.1-or-later + - openssl + - libcurl + - libxml2-devel + - libcxx >=19 + - __osx >=10.13 + - gsoap >=2.8.123,<2.8.124.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.4,<4.0a0 + - gtest >=1.17.0,<1.17.1.0a0 + license: LGPL-2.1-only purls: [] - size: 33418 - timestamp: 1734670021371 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda - sha256: 2ab918f7cc00852d70088e0b9e49fda4ef95229126cf3c52a8297686938385f2 - md5: 23d706dbe90b54059ad86ff826677f39 + size: 990237 + timestamp: 1764194905133 +- conda: https://conda.anaconda.org/conda-forge/osx-64/dcap-2.47.14-hd9250f1_3.conda + sha256: 3aa0c8a80a3490797372ee0ed6ccc36dcfd06ba4c090503671782b797bb50b83 + md5: f17e33fff32f747b47c0f55829d4378a depends: - __osx >=10.13 - license: LGPL-2.1-or-later + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: LGPL-2.0-only + license_family: GPL purls: [] - size: 33742 - timestamp: 1734670081910 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda - sha256: ea8c680924d957e12270dca549620327d5e986f23c4bd5f45627167ca6ef7a3b - md5: c90c1d3bd778f5ec0d4bb4ef36cbd5b6 + size: 164912 + timestamp: 1771355631232 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gct-6.2.1705709074-h8d8e280_0.conda + sha256: 02abd54ab941346e41aa65bc32bb51750c24bb559660bc6b5c8710294a489349 + md5: fb76224d23bd06f2dc83791fa56eea23 depends: - __osx >=11.0 - license: LGPL-2.1-or-later + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libtool >=2.4.7,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - perl + license: Apache-2.0 + license_family: Apache purls: [] - size: 31099 - timestamp: 1734670168822 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda - sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 - md5: be43915efc66345cccb3c310b6ed0374 + size: 3229688 + timestamp: 1709825282762 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfal2-2.23.5-h6ef8084_0.conda + sha256: 82333798f4c4980de18baeed6fca6ffadb46cb149fd492f1d0f6c7c471bfebb7 + md5: 982b40947d8ed9d1e7e56cfc00a0cce3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - constrains: - - openblas >=0.3.30,<0.3.31.0a0 - license: BSD-3-Clause - license_family: BSD + - json-c >=0.18,<0.19.0a0 + - libcxx >=19 + - __osx >=10.13 + - libssh2 >=1.11.1,<2.0a0 + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - libglib >=2.86.3,<3.0a0 + - davix >=0.8.10,<0.9.0a0 + - srm-ifce >=1.24.6,<2.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - dcap >=2.47.14,<2.48.0a0 + - gtest >=1.17.0,<1.17.1.0a0 + - openldap >=2.6.10,<2.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pugixml >=1.15,<1.16.0a0 + - libuuid >=2.41.3,<3.0a0 + - xrootd >=5.8.4,<6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 814499 + timestamp: 1769072316410 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gsoap-2.8.123-h21ae599_0.tar.bz2 + sha256: 6ddba7cd259edbe80e153dcc6f239f1391ff9277af62b0cf935e1060d74dcedd + md5: b5c0854d2a52f20ea68fa9c29a68b786 + depends: + - libcxx >=14.0.4 + - libzlib >=1.2.12,<2.0.0a0 + - openssl >=3.0.5,<4.0a0 + license: GPL-2.0-only + license_family: GPL purls: [] - size: 5927939 - timestamp: 1763114673331 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda - sha256: ba642353f7f41ab2d2eb6410fbe522238f0f4483bcd07df30b3222b4454ee7cd - md5: 9241a65e6e9605e4581a2a8005d7f789 + size: 1844166 + timestamp: 1662007947987 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtest-1.17.0-h9275861_1.conda + sha256: 95410f5b305170b65a8dca803981f9972051aaad3d7a5af608b94b2c2a56f88a + md5: 00ff8e205f86bf121c07c95f65205713 depends: - __osx >=10.13 - - libgfortran - - libgfortran5 >=14.3.0 - - llvm-openmp >=19.1.7 + - libcxx >=18 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - gmock 1.17.0 license: BSD-3-Clause license_family: BSD purls: [] - size: 6268795 - timestamp: 1763117623665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda - sha256: ebbbc089b70bcde87c4121a083c724330f02a690fb9d7c6cd18c30f1b12504fa - md5: a6f6d3a31bb29e48d37ce65de54e2df0 + size: 391059 + timestamp: 1748320150242 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda + sha256: 1294117122d55246bb83ad5b589e2a031aacdf2d0b1f99fd338aa4394f881735 + md5: 627eca44e62e2b665eeec57a984a7f00 depends: - __osx >=11.0 - - libgfortran - - libgfortran5 >=14.3.0 - - llvm-openmp >=19.1.7 + license: MIT + license_family: MIT + purls: [] + size: 12273764 + timestamp: 1773822733780 +- conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda + sha256: b58f8002318d6b880a98e1b0aa943789b3b0f49334a3bdb9c19b463a0b799cad + md5: 2c5a3c42de607dda0cfa0edd541fd279 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 71514 + timestamp: 1726487153769 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + sha256: df009385e8262c234c0dae9016540b86dad3d299f0d9366d08e327e8e7731634 + md5: e66e2c52d2fdddcf314ad750fb4ebb4a + depends: + - __osx >=10.13 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1193620 + timestamp: 1769770267475 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-8_he492b99_openblas.conda + build_number: 8 + sha256: 55cf9f92a2d07c33f8a32c44ff1528ea48fd69677cc003a4532d09b71cb8a316 + md5: 7da1e8ab7c4498db9457c191d82930a3 + depends: + - libopenblas >=0.3.33,<0.3.34.0a0 + - libopenblas >=0.3.33,<1.0a0 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - mkl <2027 + - blas 2.308 openblas + - liblapacke 3.11.0 8*_openblas + - libcblas 3.11.0 8*_openblas + - liblapack 3.11.0 8*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 4284132 - timestamp: 1768547079205 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda - sha256: 04596fcee262a870e4b7c9807224680ff48d4d0cc0dac076a602503d3dc6d217 - md5: da5be73701eecd0e8454423fd6ffcf30 + size: 19048 + timestamp: 1779860008916 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.90.0-h5950822_1.conda + sha256: 024acac2ca0106e47901544bee1b893a6f3be867610df0b62d4771daadb9dca6 + md5: 9cc11836b85562a34f5af56557eac600 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 - icu >=78.2,<79.0a0 - - libgcc >=14 + - libcxx >=19 + - liblzma >=5.8.2,<6.0a0 - libzlib >=1.3.1,<2.0a0 - license: blessing + - zstd >=1.5.7,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 purls: [] - size: 942808 - timestamp: 1768147973361 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda - sha256: 710a7ea27744199023c92e66ad005de7f8db9cf83f10d5a943d786f0dac53b7c - md5: d910105ce2b14dfb2b32e92ec7653420 + size: 2264821 + timestamp: 1770080982056 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-python-1.90.0-py314hee2ba4e_1.conda + sha256: 1f17f8850278bcb185a670024e07af3ebfa6f906c7e4a85359c5f75c061847eb + md5: 0a8eed54094fd68c3c51ce97080b4833 depends: - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: blessing + - libboost 1.90.0 h5950822_1 + - libcxx >=19 + - numpy >=1.23,<3 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - boost <0.0a0 + - py-boost <0.0a0 + license: BSL-1.0 + purls: [] + size: 107480 + timestamp: 1770081385667 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-8_h9b27e0a_openblas.conda + build_number: 8 + sha256: 50eb650a17a34ea45fe2b31e60a98632d1f8c203308014dcef93043d54612482 + md5: 4f116127b172bbba835c1e0491efd86f + depends: + - libblas 3.11.0 8_he492b99_openblas + constrains: + - liblapacke 3.11.0 8*_openblas + - blas 2.308 openblas + - liblapack 3.11.0 8*_openblas + license: BSD-3-Clause + license_family: BSD purls: [] - size: 987506 - timestamp: 1768148247615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda - sha256: 6e9b9f269732cbc4698c7984aa5b9682c168e2a8d1e0406e1ff10091ca046167 - md5: 4b0bf313c53c3e89692f020fb55d5f2c + size: 19049 + timestamp: 1779860025163 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.20.0-h8f0b9e4_0.conda + sha256: 5d3d8a82ca43347e96f1d79048921f3a7c25e32514bc7feb53ed2a040dcca54d + md5: 4a0085ccf90dc514f0fc0909a874045e depends: - __osx >=11.0 - - icu >=78.2,<79.0a0 - - libzlib >=1.3.1,<2.0a0 - license: blessing + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT purls: [] - size: 909777 - timestamp: 1768148320535 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 - md5: eecce068c7e4eddeb169591baac20ac4 + size: 419676 + timestamp: 1777462238769 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.7-h19cb2f5_0.conda + sha256: c03c298355dea54b729ed6c5f1e6dbd0e2426906039eba8aa2ba1254d005b7d8 + md5: 423373b842c3861da6cfa8c8915798ce depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause - license_family: BSD + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache purls: [] - size: 304790 - timestamp: 1745608545575 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c - md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 + size: 564939 + timestamp: 1780442565078 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 depends: + - ncurses - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause license_family: BSD purls: [] - size: 284216 - timestamp: 1745608575796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a - md5: b68e8f66b94b44aaa8de4583d3d4cc40 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause + size: 115563 + timestamp: 1738479554273 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause license_family: BSD purls: [] - size: 279193 - timestamp: 1745608793272 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_17.conda - sha256: 50c48cd3716a2e58e8e2e02edc78fef2d08fffe1e3b1ed40eb5f87e7e2d07889 - md5: 24c2fe35fa45cd71214beba6f337c071 + size: 106663 + timestamp: 1702146352558 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_0.conda + sha256: 460afe7ba0882e6d2fcc0ad1568dce27025110ec09c2b9ce9e3b49d61e52ce6b + md5: f95dc08366f2a452005062b5bcceac51 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc 15.2.0 he0feb66_17 + - __osx >=11.0 constrains: - - libstdcxx-ng ==15.2.0=*_17 - license: GPL-3.0-only WITH GCC-exception-3.1 + - expat 2.8.1.* + license: MIT + license_family: MIT + purls: [] + size: 75654 + timestamp: 1779279058576 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 + md5: 66a0dc7464927d0853b590b6f53ba3ea + depends: + - __osx >=10.13 + license: MIT + license_family: MIT purls: [] - size: 5852406 - timestamp: 1770252584235 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_17.conda - sha256: ca3fb322dab3373946b1064da686ec076f5b1b9caf0a2823dad00d0b0f704928 - md5: ea12f5a6bf12c88c06750d9803e1a570 + size: 53583 + timestamp: 1769456300951 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_19.conda + sha256: 17a5dcd818f89173db51d7d1acd77615cb77db7b4c2b5f571d4dafe559430ab5 + md5: 4bf33d5ca73f4b89d3495285a42414a4 depends: - - libstdcxx 15.2.0 h934c35e_17 + - _openmp_mutex + constrains: + - libgomp 15.2.0 19 + - libgcc-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 27573 - timestamp: 1770252638797 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda - sha256: c8245c70ba5b075e0cd61f430afbda00b60931603ed4ea31ce89e7fe930e4e3d - md5: 90697d80c181414aa3472199e136a04e + size: 424164 + timestamp: 1778271183296 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_19.conda + sha256: 519045363b87b870be779d38f0bfd325d4b787acdaa0a2136a92c1081eff5112 + md5: d362f41203d0a1d2d4940446f95374c9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libltdl 2.4.3a h5888daf_0 - license: GPL-2.0-or-later + - libgfortran5 15.2.0 hd16e46c_19 + constrains: + - libgfortran-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 415044 - timestamp: 1740593851157 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtool-2.5.4-h240833e_0.conda - sha256: 82afff0db640a8063db9d77a9c6d185bb5ffb8af0dd75cc15e6d5a4d9a64132c - md5: 99cc5d8f880c8662e28c004a5cda6046 + size: 139925 + timestamp: 1778271458366 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_19.conda + sha256: c7f5f6e80357d6d5bc69588c16144205b0c79cf32cd090ccb5afef9d557632af + md5: 1cddb3f7e54f5871297afc0fafa61c2c depends: - - __osx >=10.13 - - libltdl 2.4.3a h240833e_0 - license: GPL-2.0-or-later + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 414982 - timestamp: 1740594046036 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtool-2.5.4-h286801f_0.conda - sha256: e23da9c94975f3b0251b4e81ff70e0631702e103278038157cc4dfe4c2f3d851 - md5: bdd3ba2e9c5d24fa4341521df822f0c7 + size: 1063687 + timestamp: 1778271196574 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.1-hf28f236_2.conda + sha256: 9e10d37f49b4efef3426ac323dd8cec88a48df57d49e335d5aef8eac08ea9226 + md5: 6cf119d472892f945d81187e790cc131 depends: - __osx >=11.0 - - libltdl 2.4.3a h286801f_0 - license: GPL-2.0-or-later - license_family: GPL + - pcre2 >=10.47,<10.48.0a0 + - libintl >=0.25.1,<1.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - glib >2.66 + license: LGPL-2.1-or-later purls: [] - size: 414678 - timestamp: 1740594107488 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee - md5: db409b7c1720428638e7c0d509d3e1b5 + size: 4519643 + timestamp: 1778508940832 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 + md5: 210a85a1119f97ea7887188d176db135 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: BSD-3-Clause - license_family: BSD + - __osx >=10.13 + license: LGPL-2.1-only purls: [] - size: 40311 - timestamp: 1766271528534 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libuuid-2.41.3-h3fe7000_0.conda - sha256: 2f464c8c24fe8e6a96c7856c5fcc2a9e43689d24e98ddbeb2f9ef6b55d4289fa - md5: 781317c18cbc0d1a08e37ccbd674b8e2 + size: 737846 + timestamp: 1754908900138 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda + sha256: 8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe122 + md5: a8e54eefc65645193c46e8b180f62d22 depends: - __osx >=10.13 - license: BSD-3-Clause - license_family: BSD + - libiconv >=1.18,<2.0a0 + license: LGPL-2.1-or-later purls: [] - size: 35548 - timestamp: 1766271548035 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuuid-2.41.3-h0053d0f_0.conda - sha256: 28b4a4ef050413e7793dfb935e675a9f57423e20ea98f4c0b165d1386b05f93b - md5: 5e4c76ba638d70a2e1ba9ed34dc4dced + size: 96909 + timestamp: 1753343977382 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-8_h859234e_openblas.conda + build_number: 8 + sha256: 56a68fce5a63d4583a42c212324d62ac292376b8bf05986a551bd640e7fa137d + md5: e11ee849bd2a573a0f6e53b1b67ebf37 depends: - - __osx >=11.0 + - libblas 3.11.0 8_he492b99_openblas + constrains: + - liblapacke 3.11.0 8*_openblas + - libcblas 3.11.0 8*_openblas + - blas 2.308 openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 36727 - timestamp: 1766271567403 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc + size: 19030 + timestamp: 1779860046842 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libltdl-2.4.3a-h240833e_0.conda + sha256: 7fef7479b1d39fdee1764c3228ef5688a309c723e4ca33907c24ec309180a216 + md5: 4e6e81b4795bccb19fa94fef42d88f1b depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later + - __osx >=10.13 + license: LGPL-2.0-or-later + license_family: LGPL purls: [] - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxcrypt-4.4.36-h10d778d_1.conda - sha256: 7f438b1491326da20433b486efdbdfac3fe7b105676f44bcd4fb9a306a773b5c - md5: c4497a698d8b932569aff7e1c15765de - license: LGPL-2.1-or-later + size: 36971 + timestamp: 1740593983760 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + sha256: d9e2006051529aec5578c6efeb13bb6a7200a014b2d5a77a579e83a8049d5f3c + md5: becdfbfe7049fa248e52aa37a9df09e2 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD purls: [] - size: 97816 - timestamp: 1702724522480 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcrypt-4.4.36-h93a5062_1.conda - sha256: 4c7884834f261a4b7d7d8bc9cfb9940f0a4bc5582a21624f386973bb254c7560 - md5: 7d2e687b217d4de0fa7064b4de3e0be8 - license: LGPL-2.1-or-later + size: 105724 + timestamp: 1775826029494 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + sha256: 1096c740109386607938ab9f09a7e9bca06d86770a284777586d6c378b8fb3fd + md5: ec88ba8a245855935b871a7324373105 + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD purls: [] - size: 99413 - timestamp: 1702724499136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda - sha256: 047be059033c394bd32ae5de66ce389824352120b3a7c0eff980195f7ed80357 - md5: 417955234eccd8f252b86a265ccdab7f + size: 79899 + timestamp: 1769482558610 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + sha256: 899551e16aac9dfb85bfc2fd98b655f4d1b7fea45720ec04ccb93d95b4d24798 + md5: dba4c95e2fe24adcae4b77ebf33559ae 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 - - libxml2-16 2.15.1 hca6bf5a_1 + - __osx >=11.0 + - c-ares >=1.34.6,<2.0a0 + - libcxx >=19 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT purls: [] - size: 45402 - timestamp: 1766327161688 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h24ca049_1.conda - sha256: 24ecb3a3eed2b17cec150714210067cafc522dec111750cbc44f5921df1ffec3 - md5: c58fc83257ad06634b9c935099ef2680 + size: 606749 + timestamp: 1773854765508 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda + sha256: 2ab918f7cc00852d70088e0b9e49fda4ef95229126cf3c52a8297686938385f2 + md5: 23d706dbe90b54059ad86ff826677f39 depends: - __osx >=10.13 - - icu >=78.1,<79.0a0 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 he456531_1 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT + license: LGPL-2.1-or-later purls: [] - size: 40016 - timestamp: 1766327339623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda - sha256: 59f96fa27cce6a9a27414c5bb301eedda1a1b85cd0d8f5d68f77e46b86e7c95f - md5: fd804ee851e20faca4fecc7df0901d07 + size: 33742 + timestamp: 1734670081910 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.33-openmp_h9e49c7b_0.conda + sha256: 2c2ffe7c3ab7becd47ad308946873d2bdc219625af32a53d10efbaa54b595d31 + md5: 30666a6f0afe1471e999eca7ae5c8179 depends: - __osx >=11.0 - - icu >=78.1,<79.0a0 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 h5ef1a60_1 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.33,<0.3.34.0a0 + license: BSD-3-Clause + license_family: BSD purls: [] - size: 40607 - timestamp: 1766327501392 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda - sha256: 8331284bf9ae641b70cdc0e5866502dd80055fc3b9350979c74bb1d192e8e09e - md5: 3fdd8d99683da9fe279c2f4cecd1e048 + size: 6287889 + timestamp: 1776996499823 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.2-h8f8c405_0.conda + sha256: 4d4f3135d390d192ab9cdf3711d87e3be6bb7f3959c52a96e2f333b30960d6fb + md5: 4c019bd25570899d0f9755de01b89021 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 + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + license: blessing purls: [] - size: 555747 - timestamp: 1766327145986 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-he456531_1.conda - sha256: eff0894cd82f2e055ea761773eb80bfaacdd13fbdd427a80fe0c5b00bf777762 - md5: 6cd21078a491bdf3fdb7482e1680ef63 + size: 1010419 + timestamp: 1780575011758 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c + md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 depends: - __osx >=10.13 - - icu >=78.1,<79.0a0 - - 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 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 284216 + timestamp: 1745608575796 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtool-2.5.4-h240833e_0.conda + sha256: 82afff0db640a8063db9d77a9c6d185bb5ffb8af0dd75cc15e6d5a4d9a64132c + md5: 99cc5d8f880c8662e28c004a5cda6046 + depends: + - __osx >=10.13 + - libltdl 2.4.3a h240833e_0 + license: GPL-2.0-or-later + license_family: GPL purls: [] - size: 494450 - timestamp: 1766327317287 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h5ef1a60_1.conda - sha256: 2d5ab15113b0ba21f4656d387d26ab59e4fbaf3027f5e58a2a4fe370821eb106 - md5: 7eed1026708e26ee512f43a04d9d0027 + size: 414982 + timestamp: 1740594046036 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuuid-2.42.1-h58504dd_0.conda + sha256: d5bcbdd1512dbcd40edae43e198516e6cd5a665461265cefa987785bc5837d67 + md5: 27013d87489b3f28ddfa7a76023ecca5 depends: - __osx >=11.0 - - icu >=78.1,<79.0a0 - - 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 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35821 + timestamp: 1779118743325 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxcrypt-4.4.36-h10d778d_1.conda + sha256: 7f438b1491326da20433b486efdbdfac3fe7b105676f44bcd4fb9a306a773b5c + md5: c4497a698d8b932569aff7e1c15765de + license: LGPL-2.1-or-later purls: [] - size: 464886 - timestamp: 1766327479416 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-he237659_1.conda - sha256: 6621eb70375ff867c7c6606c216139e47eade8dfad78bcf7bdd0a62dc87d629f - md5: 644b2a3a92ba0bb8e2aa671dd831e793 + size: 97816 + timestamp: 1702724522480 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda + sha256: 437f003e299d77403db42d17e532d686236f357ac5c3d6bf466558c697902597 + md5: c74ae93cd7876e3a9c4b5569d5e29e34 depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.1,<79.0a0 - - libgcc >=14 + - __osx >=11.0 + - icu >=78.3,<79.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2 2.15.1 he237659_1 - - libxml2-16 2.15.1 hca6bf5a_1 - - libzlib >=1.3.1,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 license: MIT license_family: MIT purls: [] - size: 79680 - timestamp: 1766327176426 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h24ca049_1.conda - sha256: 5db52eae7357f89c16d08ab21ec89b35a7361e1d7be277716505e9764fe37eb8 - md5: cc1c67f0676478f972e26c5649ea68ac + size: 496338 + timestamp: 1776377250079 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.3-h953d39d_0.conda + sha256: 24248928e63b5de45012c8ad3fd6b350ae1fe2fc355613bb89ee5f0a35835bea + md5: 33f30d4878d1f047da82a669c33b307d depends: - - __osx >=10.13 - - icu >=78.1,<79.0a0 + - __osx >=11.0 + - icu >=78.3,<79.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2 2.15.1 h24ca049_1 - - libxml2-16 2.15.1 he456531_1 - - libzlib >=1.3.1,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h7a90416_0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 79886 - timestamp: 1766327359472 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h8d039ee_1.conda - sha256: a51ac5f66270b5f21b6669d705531208ab599a8744c7e60c1638229e22c8267d - md5: 8975a4d0277920627000f0126c3c2b48 + size: 40836 + timestamp: 1776377277986 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.3-h953d39d_0.conda + sha256: 05ed86d6395a8c7aeabc5d5505e2189ebca33e14073895a3f3d1b4db37c67333 + md5: 875a51e12cc99a98d70aa48055f40ba4 depends: - __osx >=11.0 - - icu >=78.1,<79.0a0 + - icu >=78.3,<79.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2 2.15.1 h8d039ee_1 - - libxml2-16 2.15.1 h5ef1a60_1 - - libzlib >=1.3.1,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2 2.15.3 h953d39d_0 + - libxml2-16 2.15.3 h7a90416_0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 79725 - timestamp: 1766327519923 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - purls: [] - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 - md5: 003a54a4e32b02f7355b50a837e699da - depends: - - __osx >=10.13 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - purls: [] - size: 57133 - timestamp: 1727963183990 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 + size: 80113 + timestamp: 1776377299206 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 + md5: 30439ff30578e504ee5e0b390afc8c65 depends: - __osx >=11.0 constrains: - - zlib 1.3.1 *_2 + - zlib 1.3.2 *_2 license: Zlib license_family: Other purls: [] - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda - sha256: 2a41885f44cbc1546ff26369924b981efa37a29d20dc5445b64539ba240739e6 - md5: e2d811e9f464dd67398b4ce1f9c7c872 - depends: - - __osx >=10.13 - constrains: - - openmp 21.1.8|21.1.8.* - - intel-openmp <0.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - purls: [] - size: 311405 - timestamp: 1765965194247 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda - sha256: 56bcd20a0a44ddd143b6ce605700fdf876bcf5c509adc50bf27e76673407a070 - md5: 206ad2df1b5550526e386087bef543c7 + size: 59000 + timestamp: 1774073052242 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.7-h0d3cbff_0.conda + sha256: c8eeb6bca45680db8974b78e0524b2ab3c285a9916a0b3356329d1f949b1311b + md5: 301c1db2d75ac8a91f46d21652e08dd6 depends: - __osx >=11.0 constrains: - - openmp 21.1.8|21.1.8.* + - openmp 22.1.7|22.1.7.* - intel-openmp <0.0a0 license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 285974 - timestamp: 1765964756583 -- pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl - name: logzero - version: 1.7.0 - sha256: 23eb1f717a2736f9ab91ca0d43160fd2c996ad49ae6bad34652d47aba908769d - requires_dist: - - colorama ; sys_platform == 'win32' -- pypi: https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl - name: lxml - version: 6.0.2 - sha256: b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe - requires_dist: - - cssselect>=0.7 ; extra == 'cssselect' - - html5lib ; extra == 'html5' - - beautifulsoup4 ; extra == 'htmlsoup' - - lxml-html-clean ; extra == 'html-clean' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - name: lxml - version: 6.0.2 - sha256: 98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d - requires_dist: - - cssselect>=0.7 ; extra == 'cssselect' - - html5lib ; extra == 'html5' - - beautifulsoup4 ; extra == 'htmlsoup' - - lxml-html-clean ; extra == 'html-clean' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl - name: lxml - version: 6.0.2 - sha256: 4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d - requires_dist: - - cssselect>=0.7 ; extra == 'cssselect' - - html5lib ; extra == 'html5' - - beautifulsoup4 ; extra == 'htmlsoup' - - lxml-html-clean ; extra == 'html-clean' - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/linux-64/m2crypto-0.45.1-py314haf11619_2.conda - sha256: f923b3fcc7875c24e21d6de6841fdacc150ca87146aa2a0ebcf39c0c9e7572fd - md5: edaeb576dc4f23f2063787f62da70fef - depends: - - openssl - - python - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.2,<4.0a0 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/m2crypto?source=hash-mapping - size: 413718 - timestamp: 1757689047646 + size: 310879 + timestamp: 1780456054580 - conda: https://conda.anaconda.org/conda-forge/osx-64/m2crypto-0.45.1-py314h90001a5_2.conda sha256: 9a574e31526783c5a8b60146623f5169eb15c213aa1ceefb86e1516ea7fd23c1 md5: d2b9b83d3c3681c4478de1ab9a951506 @@ -3647,2105 +2985,3640 @@ packages: - pkg:pypi/m2crypto?source=hash-mapping size: 396129 timestamp: 1757689123635 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/m2crypto-0.45.1-py314hdb6fb3f_2.conda - sha256: d5eaf9498468368f651c6bc72bec90c1441b2dd91f17112c1d0a32082abab8fb - md5: 8cae6040ec4477c78304682f18f950f5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-2.1.0-py314h00bde9c_0.conda + sha256: 66ff8b7a255d77d1184d905a12bff30eb2eee6bbba2002d063d78d4601664414 + md5: 94b2ffbf837668051cead37c5e261a4c depends: - - openssl + - ast-serialize >=0.3.0,<1.0.0 + - mypy_extensions >=1.0.0 + - pathspec >=1.0.0 - python + - python-librt >=0.11.0 + - typing_extensions >=4.6.0 + - psutil >=4.0 - __osx >=11.0 - - python 3.14.* *_cp314 - - openssl >=3.5.2,<4.0a0 - python_abi 3.14.* *_cp314 license: MIT license_family: MIT purls: - - pkg:pypi/m2crypto?source=hash-mapping - size: 395003 - timestamp: 1757689131892 -- pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl - name: markdown-it-py - version: 4.0.0 - sha256: 87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 - requires_dist: - - mdurl~=0.1 - - psutil ; extra == 'benchmarking' - - pytest ; extra == 'benchmarking' - - pytest-benchmark ; extra == 'benchmarking' - - commonmark~=0.9 ; extra == 'compare' - - markdown~=3.4 ; extra == 'compare' - - mistletoe~=1.0 ; extra == 'compare' - - mistune~=3.0 ; extra == 'compare' - - panflute~=2.3 ; extra == 'compare' - - markdown-it-pyrs ; extra == 'compare' - - linkify-it-py>=1,<3 ; extra == 'linkify' - - mdit-py-plugins>=0.5.0 ; extra == 'plugins' - - gprof2dot ; extra == 'profiling' - - mdit-py-plugins>=0.5.0 ; extra == 'rtd' - - myst-parser ; extra == 'rtd' - - pyyaml ; extra == 'rtd' - - sphinx ; extra == 'rtd' - - sphinx-copybutton ; extra == 'rtd' - - sphinx-design ; extra == 'rtd' - - sphinx-book-theme~=1.0 ; extra == 'rtd' - - jupyter-sphinx ; extra == 'rtd' - - ipykernel ; extra == 'rtd' - - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pytest-regressions ; extra == 'testing' - - requests ; extra == 'testing' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - name: mdurl - version: 0.1.2 - sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl - name: mistune - version: 3.1.4 - sha256: 93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d - requires_dist: - - typing-extensions ; python_full_version < '3.11' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl - name: msgpack - version: 1.1.2 - sha256: 6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl - name: msgpack - version: 1.1.2 - sha256: e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: msgpack - version: 1.1.2 - sha256: 180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl - name: multidict - version: 6.7.1 - sha256: a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2 - requires_dist: - - typing-extensions>=4.1.0 ; python_full_version < '3.11' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl - name: multidict - version: 6.7.1 - sha256: 0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1 - requires_dist: - - typing-extensions>=4.1.0 ; python_full_version < '3.11' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: multidict - version: 6.7.1 - sha256: 7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709 - requires_dist: - - typing-extensions>=4.1.0 ; python_full_version < '3.11' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py314h5bd0f2a_0.conda - sha256: 4e607095b92cac2ec6dbb8de348d8e006408291c9c2805926f01e4a30e94edbb - md5: 0490f2b08d179719201fdb9514d67157 + - pkg:pypi/mypy?source=compressed-mapping + size: 14767202 + timestamp: 1780315780679 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + sha256: f5f7e006ff4271305ab4cc08eedd855c67a571793c3d18aff73f645f088a8cae + md5: 31b8740cf1b2588d4e61c81191004061 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 - - psutil >=4.0 - - python >=3.14,<3.15.0a0 - - python-librt >=0.6.2 - - python_abi 3.14.* *_cp314 - - typing_extensions >=4.6.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 18632958 - timestamp: 1765795548407 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py314h6482030_0.conda - sha256: b36d3a5728413d18dedfecdfd0248647b21f3e725547c03ef245bc1c08da98f8 - md5: 62c7130c7f42ab43c9d1d64bbc7c2f3e + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + size: 831711 + timestamp: 1777423052277 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.6-py314h7b24d9b_0.conda + sha256: 8127ecc9ffbb291830cd6849a8e4f8d9027b130672d277c9444b1d36949f0a38 + md5: e04ed878a4f06bb20201dabf7a25f9ee depends: - - __osx >=10.13 - - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 - - psutil >=4.0 - - python >=3.14,<3.15.0a0 - - python-librt >=0.6.2 + - python + - libcxx >=19 + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 - python_abi 3.14.* *_cp314 - - typing_extensions >=4.6.0 - license: MIT - license_family: MIT + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD purls: - - pkg:pypi/mypy?source=hash-mapping - size: 12043718 - timestamp: 1765796036801 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py314hbdd0d06_0.conda - sha256: c5c9a691dc00ce9a726426f971fbe21d0501ec8c6228513b945210898f26c761 - md5: 584f58048dc4af70f6c647b40a7049a6 + - pkg:pypi/numpy?source=hash-mapping + size: 8155498 + timestamp: 1779169315894 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.13-h2f5043c_0.conda + sha256: 9b1b7fb7b6d3c98fd9b42313f575b93dba0fd299add27cbb7b1a3f26bbc62c85 + md5: 59df11dee9461bb55a0d7bcf4f3b7b7b depends: - __osx >=11.0 - - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 - - psutil >=4.0 - - python >=3.14,<3.15.0a0 - - python >=3.14,<3.15.0a0 *_cp314 - - python-librt >=0.6.2 - - python_abi 3.14.* *_cp314 - - typing_extensions >=4.6.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 11320681 - timestamp: 1765795843941 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 - md5: e9c622e0d00fa24a6292279af3ab6d06 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy-extensions?source=hash-mapping - size: 11766 - timestamp: 1745776666688 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: X11 AND BSD-3-Clause - purls: [] - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - sha256: ea4a5d27ded18443749aefa49dc79f6356da8506d508b5296f60b8d51e0c4bd9 - md5: ced34dd9929f491ca6dab6a2927aff25 - depends: - - __osx >=10.13 - license: X11 AND BSD-3-Clause + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - openssl >=3.5.6,<4.0a0 + license: OLDAP-2.8 + license_family: BSD purls: [] - size: 822259 - timestamp: 1738196181298 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae + size: 777355 + timestamp: 1775742025810 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda + sha256: 819d4368d6b5b298fa40d4bc836c1250842489002cacf3fb918a13ee2033b7c6 + md5: 46be42ab403712fd349d007d763bf767 depends: - __osx >=11.0 - license: X11 AND BSD-3-Clause + - ca-certificates + license: Apache-2.0 + license_family: Apache purls: [] - size: 797030 - timestamp: 1738196177597 -- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl - name: networkx - version: 3.6.1 - sha256: d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762 - requires_dist: - - asv ; extra == 'benchmarking' - - virtualenv ; extra == 'benchmarking' - - numpy>=1.25 ; extra == 'default' - - scipy>=1.11.2 ; extra == 'default' - - matplotlib>=3.8 ; extra == 'default' - - pandas>=2.0 ; extra == 'default' - - pre-commit>=4.1 ; extra == 'developer' - - mypy>=1.15 ; extra == 'developer' - - sphinx>=8.0 ; extra == 'doc' - - pydata-sphinx-theme>=0.16 ; extra == 'doc' - - sphinx-gallery>=0.18 ; extra == 'doc' - - numpydoc>=1.8.0 ; extra == 'doc' - - pillow>=10 ; extra == 'doc' - - texext>=0.6.7 ; extra == 'doc' - - myst-nb>=1.1 ; extra == 'doc' - - intersphinx-registry ; extra == 'doc' - - osmnx>=2.0.0 ; extra == 'example' - - momepy>=0.7.2 ; extra == 'example' - - contextily>=1.6 ; extra == 'example' - - seaborn>=0.13 ; extra == 'example' - - cairocffi>=1.7 ; extra == 'example' - - igraph>=0.11 ; extra == 'example' - - scikit-learn>=1.5 ; extra == 'example' - - iplotx>=0.9.0 ; extra == 'example' - - lxml>=4.6 ; extra == 'extra' - - pygraphviz>=1.14 ; extra == 'extra' - - pydot>=3.0.1 ; extra == 'extra' - - sympy>=1.10 ; extra == 'extra' - - build>=0.10 ; extra == 'release' - - twine>=4.0 ; extra == 'release' - - wheel>=0.40 ; extra == 'release' - - changelist==0.5 ; extra == 'release' - - pytest>=7.2 ; extra == 'test' - - pytest-cov>=4.0 ; extra == 'test' - - pytest-xdist>=3.0 ; extra == 'test' - - pytest-mpl ; extra == 'test-extras' - - pytest-randomly ; extra == 'test-extras' - requires_python: '>=3.11,!=3.14.1' -- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - sha256: 4fa40e3e13fc6ea0a93f67dfc76c96190afd7ea4ffc1bac2612d954b42cdc3ee - md5: eb52d14a901e23c39e9e7b4a1a5c015f + size: 2775300 + timestamp: 1781071391999 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda + sha256: 8d64a9d36073346542e5ea042ef8207a45a0069a2e65ce3323ee3146db78134c + md5: 08f970fb2b75f5be27678e077ebedd46 depends: - - python >=3.10 - - setuptools + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/nodeenv?source=hash-mapping - size: 40866 - timestamp: 1766261270149 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py314h2b28147_1.conda - sha256: 1d8377c8001c15ed12c2713b723213474b435706ab9d34ede69795d64af9e94d - md5: 4ea6b620fdf24a1a0bc4f1c7134dfafb + purls: [] + size: 1106584 + timestamp: 1763655837207 +- conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda + build_number: 7 + sha256: 8ebd35e2940055a93135b9fd11bef3662cecef72d6ee651f68d64a2f349863c7 + md5: dc442e0885c3a6b65e61c61558161a9e + license: GPL-1.0-or-later OR Artistic-1.0-Perl + purls: [] + size: 12334471 + timestamp: 1703311001432 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py314hd330473_0.conda + sha256: 3194ce0d94c810cb1809da851261be34e1cae72ca345445b29e61766b38ee6cc + md5: d465805e603072c341554159939be5b8 depends: - python - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libcblas >=3.9.0,<4.0a0 + - __osx >=10.13 - python_abi 3.14.* *_cp314 - - libblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - constrains: - - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 8926994 - timestamp: 1770098474394 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py314hfc4c462_1.conda - sha256: 13adde755c5daa6ae7d7dafcf64d0ba9d8b6aa249601eb163121953bccf6f030 - md5: 891bda68803fbbcf08d37f94981b650a + - pkg:pypi/psutil?source=hash-mapping + size: 242816 + timestamp: 1769678225798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.15-h46091d4_0.conda + sha256: d22fd205d2db21c835e233c30e91e348735e18418c35327b0406d2d917e39a90 + md5: 7a1ad34efe728093c36a76afeaf30586 depends: - - python - __osx >=10.13 + - libcxx >=18 + license: MIT + license_family: MIT + purls: [] + size: 97559 + timestamp: 1736601483485 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.14.5-h7c6738f_100_cp314.conda + build_number: 100 + sha256: f99fd77c51d52319f02b7732971b35921a987ac49ca9b60f9c2e280b0dcdd409 + md5: 915728f929ae3610f084aecdf62f5272 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.8.0,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.53.1,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + purls: [] + size: 14450441 + timestamp: 1779239702259 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-gfal2-1.13.1-py314h171e02c_3.conda + sha256: 967eb8a196ccb21c802f65fc7846bb46f2e95acca9090a44fa3430bc15c7fe1d + md5: 3b3c9b59771e168a5bf0894c60b611f4 + depends: + - python - libcxx >=19 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 + - __osx >=11.0 + - libglib >=2.88.1,<3.0a0 + - libboost-python >=1.90.0,<1.91.0a0 - python_abi 3.14.* *_cp314 - - libblas >=3.9.0,<4.0a0 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD + - gfal2 >=2.23.5,<2.24.0a0 + license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8150788 - timestamp: 1770098404066 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py314hae46ccb_1.conda - sha256: 43b5ed0ead36e5133ee8462916d23284f0bce0e5f266fa4bd31a020a6cc22f14 - md5: 0f0ddf0575b98d91cda9e3ca9eaeb9a2 + - pkg:pypi/gfal2-python?source=hash-mapping + size: 190576 + timestamp: 1780391984760 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.11.0-py314h0b69929_0.conda + sha256: 30c0075e2fc9e497a6890c4e89ca1dfb8ecb69d8c275adf2ebaddbd775625157 + md5: 780beb8582ad71036a41cd3407910bc8 depends: - python - __osx >=11.0 - - python 3.14.* *_cp314 - - libcxx >=19 - - libblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - python_abi 3.14.* *_cp314 - - libcblas >=3.9.0,<4.0a0 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD + license: MIT + license_family: MIT purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6992958 - timestamp: 1770098398327 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda - sha256: cb0b07db15e303e6f0a19646807715d28f1264c6350309a559702f4f34f37892 - md5: 2e5bf4f1da39c0b32778561c3c4e5878 + - pkg:pypi/librt?source=hash-mapping + size: 129137 + timestamp: 1778511932441 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py314h10d0514_1.conda + sha256: aef010899d642b24de6ccda3bc49ef008f8fddf7bad15ebce9bdebeae19a4599 + md5: ebd224b733573c50d2bfbeacb5449417 depends: - - __glibc >=2.17,<3.0.a0 - - cyrus-sasl >=2.1.27,<3.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.5.0,<4.0a0 - license: OLDAP-2.8 - license_family: BSD - purls: [] - size: 780253 - timestamp: 1748010165522 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.10-hd8a590d_0.conda - sha256: 70b8c1ffc06629c3ef824d337ab75df28c50a05293a4c544b03ff41d82c37c73 - md5: 60bd9b6c1e5208ff2f4a39ab3eabdee8 + - __osx >=10.13 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 191947 + timestamp: 1770226344240 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 + md5: eefd65452dfe7cce476a519bece46704 depends: - __osx >=10.13 - - cyrus-sasl >=2.1.27,<3.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - openssl >=3.5.0,<4.0a0 - license: OLDAP-2.8 - license_family: BSD + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL purls: [] - size: 777643 - timestamp: 1748010635431 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hbe55e7a_0.conda - sha256: 08d859836b81296c16f74336c3a9a455b23d57ce1d7c2b0b3e1b7a07f984c677 - md5: 6fd5d73c63b5d37d9196efb4f044af76 + size: 317819 + timestamp: 1765813692798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-2026.5.1-py314h1d56075_0.conda + sha256: 573986e20c6c6c6257bd3440a5752946b669990ad6941593555a3525e8b145be + md5: 33f48e40d93c6e74f47b5a1f316c8cad depends: + - python - __osx >=11.0 - - cyrus-sasl >=2.1.27,<3.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - openssl >=3.5.0,<4.0a0 - license: OLDAP-2.8 - license_family: BSD - purls: [] - size: 843597 - timestamp: 1748010484231 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c - md5: f61eb8cd60ff9057122a3d338b99c00f - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=14 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 3164551 - timestamp: 1769555830639 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - sha256: e02e5639b0e4d6d4fcf0f3b082642844fb5a37316f5b0a1126c6271347462e90 - md5: 30bb8d08b99b9a7600d39efb3559fff0 + - python_abi 3.14.* *_cp314 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 309450 + timestamp: 1779977258054 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.16-h1ddadc8_0.conda + noarch: python + sha256: 694b662dd988bda4168b54fe7313b9cc0378215d796e38d7f3e3b22a211e2e27 + md5: da82dbe7191b3de371645a43579bd427 depends: + - python + - __osx >=11.0 + constrains: - __osx >=10.13 - - ca-certificates - license: Apache-2.0 - license_family: Apache - purls: [] - size: 2777136 - timestamp: 1769557662405 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda - sha256: 361f5c5e60052abc12bdd1b50d7a1a43e6a6653aab99a2263bf2288d709dcf67 - md5: f4f6ad63f98f64191c3e77c5f5f29d76 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=compressed-mapping + size: 9247784 + timestamp: 1780612065116 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scitokens-cpp-1.4.0-h1c2ca81_0.conda + sha256: 8cc1d5c4a21e28f06e8d452a3db1f729836cdde7cc84209fac24063bf234f2a1 + md5: 431ea6026f7d94436135184130347ee6 depends: - __osx >=11.0 - - ca-certificates + - libcurl >=8.18.0,<9.0a0 + - libcxx >=19 + - libsqlite >=3.51.2,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: Apache-2.0 - license_family: Apache + license_family: APACHE purls: [] - size: 3104268 - timestamp: 1769556384749 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 - md5: b76541e68fea4d511b1ac46a28dcd2c6 + size: 188453 + timestamp: 1771576368104 +- conda: https://conda.anaconda.org/conda-forge/osx-64/srm-ifce-1.24.6-h73c9bdb_2.conda + sha256: 2004682e917722b471d9b9817ee3f14aa47b3832d4087f4f7f8b9965ecdae22a + md5: aea203ab9df6dc991bc26552617ccc66 depends: - - python >=3.8 - - python + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - libcxx >=16 + - libglib >=2.78.4,<3.0a0 + - openssl >=3.2.1,<4.0a0 license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/packaging?source=compressed-mapping - size: 72010 - timestamp: 1769093650580 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - sha256: 29ea20d0faf20374fcd61c25f6d32fb8e9a2c786a7f1473a0c3ead359470fbe1 - md5: 2908273ac396d2cd210a8127f5f1c0d6 - depends: - - python >=3.10 - license: MPL-2.0 - license_family: MOZILLA - purls: - - pkg:pypi/pathspec?source=compressed-mapping - size: 53739 - timestamp: 1769677743677 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff - md5: 7a3bff861a6583f1889021facefc08b1 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 1222481 - timestamp: 1763655398280 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda - sha256: 8d64a9d36073346542e5ea042ef8207a45a0069a2e65ce3323ee3146db78134c - md5: 08f970fb2b75f5be27678e077ebedd46 + license_family: Apache + purls: [] + size: 175433 + timestamp: 1709962268470 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda + sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b + md5: 6e6efb7463f8cef69dbcb4c2205bf60e depends: - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 1106584 - timestamp: 1763655837207 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda - sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba - md5: 9b4190c4055435ca3502070186eba53a - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause + license: TCL license_family: BSD purls: [] - size: 850231 - timestamp: 1763655726735 -- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - build_number: 7 - sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 - md5: f2cfec9406850991f4e3d960cc9e3321 - depends: - - libgcc-ng >=12 - - libxcrypt >=4.4.36 - license: GPL-1.0-or-later OR Artistic-1.0-Perl - purls: [] - size: 13344463 - timestamp: 1703310653947 -- conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - build_number: 7 - sha256: 8ebd35e2940055a93135b9fd11bef3662cecef72d6ee651f68d64a2f349863c7 - md5: dc442e0885c3a6b65e61c61558161a9e - license: GPL-1.0-or-later OR Artistic-1.0-Perl - purls: [] - size: 12334471 - timestamp: 1703311001432 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda - build_number: 7 - sha256: b0c55040d2994fd6bf2f83786561d92f72306d982d6ea12889acad24a9bf43b8 - md5: ba3cbe93f99e896765422cc5f7c3a79e - license: GPL-1.0-or-later OR Artistic-1.0-Perl - purls: [] - size: 14439531 - timestamp: 1703311335652 -- pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - name: pexpect - version: 4.9.0 - sha256: 7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 - requires_dist: - - ptyprocess>=0.5 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - sha256: 04c64fb78c520e5c396b6e07bc9082735a5cc28175dbe23138201d0a9441800b - md5: 1bd2e65c8c7ef24f4639ae6e850dacc2 + size: 3282953 + timestamp: 1769460532442 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py314h473ef84_0.conda + sha256: a77214fabb930c5332dece5407973c0c1c711298bf687976a0b6a9207b758e12 + md5: 08a26dd1ba8fc9681d6b5256b2895f8e depends: - - python >=3.10 - - python + - __osx >=10.13 + - cffi + - libcxx >=19 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 license: MIT license_family: MIT purls: - - pkg:pypi/platformdirs?source=hash-mapping - size: 23922 - timestamp: 1764950726246 -- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e - md5: d7585b6550ad04c8c5e21097ada2888e + - pkg:pypi/ukkonen?source=hash-mapping + size: 14286 + timestamp: 1769439103231 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xrootd-5.9.2-py314h58906bc_0.conda + sha256: 0a5d016212cdf2b872b8a195d80def1f55c9da1ca973bbcf3133cbc367300d8e + md5: e3f4f201fd2f8c199da85b5ea5b1257c depends: - - python >=3.9 + - openssl - python - license: MIT - license_family: MIT + - readline + - libxml2-devel + - krb5 + - zlib + - ncurses + - libcxx >=19 + - __osx >=11.0 + - libxml2 + - libxml2-16 >=2.14.6 + - openssl >=3.5.5,<4.0a0 + - scitokens-cpp >=1.4.0,<2.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - python_abi 3.14.* *_cp314 + - ncurses >=6.5,<7.0a0 + - libzlib >=1.3.2,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libxcrypt >=4.4.36 + - readline >=8.3,<9.0a0 + license: LGPL-3.0-or-later + license_family: LGPL purls: - - pkg:pypi/pluggy?source=compressed-mapping - size: 25877 - timestamp: 1764896838868 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - sha256: 5b81b7516d4baf43d0c185896b245fa7384b25dc5615e7baa504b7fa4e07b706 - md5: 7f3ac694319c7eaf81a0325d6405e974 + - pkg:pypi/xrootd?source=hash-mapping + size: 3542098 + timestamp: 1774639137630 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + sha256: a335161bfa57b64e6794c3c354e7d49449b28b8d8a7c4ed02bf04c3f009953f9 + md5: a645bb90997d3fc2aea0adf6517059bd depends: - - cfgv >=2.0.0 - - identify >=1.0.0 - - nodeenv >=0.11.1 - - python >=3.10 - - pyyaml >=5.1 - - virtualenv >=20.10.0 + - __osx >=10.13 license: MIT license_family: MIT - purls: - - pkg:pypi/pre-commit?source=hash-mapping - size: 200827 - timestamp: 1765937577534 -- pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - name: prompt-toolkit - version: 3.0.52 - sha256: 9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 - requires_dist: - - wcwidth - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl - name: propcache - version: 0.4.1 - sha256: c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: propcache - version: 0.4.1 - sha256: 8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl - name: propcache - version: 0.4.1 - sha256: 9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - name: prov - version: 1.5.1 - sha256: 5c930cbbd05424aa3066d336dc31d314dd9fa0280caeab064288e592ed716bea - requires_dist: - - lxml - - networkx - - python-dateutil - - rdflib>=4.2.1 - - six>=1.9.0 - - pydot>=1.2.0 ; extra == 'dot' -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py314h0f05182_0.conda - sha256: f15574ed6c8c8ed8c15a0c5a00102b1efe8b867c0bd286b498cd98d95bd69ae5 - md5: 4f225a966cfee267a79c5cb6382bd121 + purls: [] + size: 79419 + timestamp: 1753484072608 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda + sha256: 5dd728cebca2e96fa48d41661f1a35ed0ee3cb722669eee4e2d854c6745655eb + md5: 6276aa61ffc361cbf130d78cfb88a237 depends: - - python - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - python_abi 3.14.* *_cp314 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=compressed-mapping - size: 231303 - timestamp: 1769678156552 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py314hd330473_0.conda - sha256: 3194ce0d94c810cb1809da851261be34e1cae72ca345445b29e61766b38ee6cc - md5: d465805e603072c341554159939be5b8 + - __osx >=11.0 + - libzlib 1.3.2 hbb4bfdb_2 + license: Zlib + license_family: Other + purls: [] + size: 92411 + timestamp: 1774073075482 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f + md5: 727109b184d680772e3122f40136d5ca depends: - - python - __osx >=10.13 - - python_abi 3.14.* *_cp314 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 242816 - timestamp: 1769678225798 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py314ha14b1ff_0.conda - sha256: e0f31c053eb11803d63860c213b2b1b57db36734f5f84a3833606f7c91fedff9 - md5: fc4c7ab223873eee32080d51600ce7e7 + purls: [] + size: 528148 + timestamp: 1764777156963 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + build_number: 7 + sha256: 7acaa2e0782cad032bdaf756b536874346ac1375745fb250e9bdd6a48a7ab3cd + md5: a44032f282e7d2acdeb1c240308052dd depends: - - python - - __osx >=11.0 - - python 3.14.* *_cp314 - - python_abi 3.14.* *_cp314 + - llvm-openmp >=9.0.1 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 245502 - timestamp: 1769678303655 -- pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - name: ptyprocess - version: 0.7.0 - sha256: 4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 - md5: b11a4c6bf6f6f44e5e143f759ffa2087 + purls: [] + size: 8325 + timestamp: 1764092507920 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ast-serialize-0.5.0-py310h3b8a9b8_1.conda + noarch: python + sha256: 6c6e47ef2a85e7ade5c94d2388f43bd8197129e6b6305f9e8a49380b7dfbc427 + md5: 480f5277fd3ed13ea6ea8b5d74563815 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - python >=3.10 + - __osx >=11.0 + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __osx >=11.0 license: MIT license_family: MIT + purls: + - pkg:pypi/ast-serialize?source=compressed-mapping + size: 1086020 + timestamp: 1780396657560 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df + md5: 620b85a3f45526a8bc4d23fd78fc22f0 + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD purls: [] - size: 118488 - timestamp: 1736601364156 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.15-h46091d4_0.conda - sha256: d22fd205d2db21c835e233c30e91e348735e18418c35327b0406d2d917e39a90 - md5: 7a1ad34efe728093c36a76afeaf30586 + size: 124834 + timestamp: 1771350416561 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + sha256: 2995f2aed4e53725e5efbc28199b46bf311c3cab2648fc4f10c2227d6d5fa196 + md5: bcb3cba70cf1eec964a03b4ba7775f01 depends: - - __osx >=10.13 - - libcxx >=18 + - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 97559 - timestamp: 1736601483485 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda - sha256: 5ad8d036040b095f85d23c70624d3e5e1e4c00bc5cea97831542f2dcae294ec9 - md5: b9a4004e46de7aeb005304a13b35cb94 + size: 180327 + timestamp: 1765215064054 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py314h44086f9_1.conda + sha256: 5b5ee5de01eb4e4fd2576add5ec9edfc654fbaf9293e7b7ad2f893a67780aa98 + md5: 10dd19e4c797b8f8bdb1ec1fbb6821d7 depends: - __osx >=11.0 - - libcxx >=18 + - libffi >=3.5.2,<3.6.0a0 + - pycparser + - python >=3.14,<3.15.0a0 + - python >=3.14,<3.15.0a0 *_cp314 + - python_abi 3.14.* *_cp314 license: MIT license_family: MIT - purls: [] - size: 91283 - timestamp: 1736601509593 -- pypi: https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl - name: pyasn1 - version: 0.6.2 - sha256: 1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - name: pyasn1-modules - version: 0.4.2 - sha256: 29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a - requires_dist: - - pyasn1>=0.6.1,<0.7.0 - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pycparser?source=hash-mapping - size: 110100 - timestamp: 1733195786147 -- pypi: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - name: pydantic - version: 2.12.5 - sha256: e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d - requires_dist: - - annotated-types>=0.6.0 - - pydantic-core==2.41.5 - - typing-extensions>=4.14.1 - - typing-inspection>=0.4.2 - - email-validator>=2.0.0 ; extra == 'email' - - tzdata ; python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: pydantic-core - version: 2.41.5 - sha256: 22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375 - requires_dist: - - typing-extensions>=4.14.1 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl - name: pydantic-core - version: 2.41.5 - sha256: 1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14 - requires_dist: - - typing-extensions>=4.14.1 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl - name: pydantic-core - version: 2.41.5 - sha256: 3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a - requires_dist: - - typing-extensions>=4.14.1 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl - name: pydantic-settings - version: 2.12.0 - sha256: fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809 - requires_dist: - - pydantic>=2.7.0 - - python-dotenv>=0.21.0 - - typing-inspection>=0.4.0 - - boto3-stubs[secretsmanager] ; extra == 'aws-secrets-manager' - - boto3>=1.35.0 ; extra == 'aws-secrets-manager' - - azure-identity>=1.16.0 ; extra == 'azure-key-vault' - - azure-keyvault-secrets>=4.8.0 ; extra == 'azure-key-vault' - - google-cloud-secret-manager>=2.23.1 ; extra == 'gcp-secret-manager' - - tomli>=2.0.1 ; extra == 'toml' - - pyyaml>=6.0.1 ; extra == 'yaml' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - name: pydot - version: 4.0.1 - sha256: 869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6 - requires_dist: - - pyparsing>=3.1.0 - - ruff ; extra == 'lint' - - mypy ; extra == 'types' - - pydot[lint] ; extra == 'dev' - - pydot[types] ; extra == 'dev' - - chardet ; extra == 'dev' - - parameterized ; extra == 'dev' - - pydot[dev] ; extra == 'tests' - - tox ; extra == 'tests' - - pytest ; extra == 'tests' - - pytest-cov ; extra == 'tests' - - pytest-xdist[psutil] ; extra == 'tests' - - zest-releaser[recommended] ; extra == 'release' - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a - md5: 6b6ece66ebcae2d5f326c77ef2c5a066 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD purls: - - pkg:pypi/pygments?source=hash-mapping - size: 889287 - timestamp: 1750615908735 -- pypi: https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl - name: pyjwt - version: 2.11.0 - sha256: 94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469 - requires_dist: - - cryptography>=3.4.0 ; extra == 'crypto' - - coverage[toml]==7.10.7 ; extra == 'dev' - - cryptography>=3.4.0 ; extra == 'dev' - - pre-commit ; extra == 'dev' - - pytest>=8.4.2,<9.0.0 ; extra == 'dev' - - sphinx ; extra == 'dev' - - sphinx-rtd-theme ; extra == 'dev' - - zope-interface ; extra == 'dev' - - sphinx ; extra == 'docs' - - sphinx-rtd-theme ; extra == 'docs' - - zope-interface ; extra == 'docs' - - coverage[toml]==7.10.7 ; extra == 'tests' - - pytest>=8.4.2,<9.0.0 ; extra == 'tests' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - name: pyparsing - version: 3.3.2 - sha256: 850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d - requires_dist: - - railroad-diagrams ; extra == 'diagrams' - - jinja2 ; extra == 'diagrams' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 - md5: 2b694bad8a50dc2f712f5368de866480 - depends: - - pygments >=2.7.2 - - python >=3.10 - - iniconfig >=1.0.1 - - packaging >=22 - - pluggy >=1.5,<2 - - tomli >=1 - - colorama >=0.4 - - exceptiongroup >=1 - - python - constrains: - - pytest-faulthandler >=2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest?source=hash-mapping - size: 299581 - timestamp: 1765062031645 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - sha256: e782cf0555e4d54102423ad3421c8122f97a7a7c2d55c677a91e32d7c3e2b059 - md5: 80eccce75e6728e9e728370984bdc6fd - depends: - - pytest >=8.2,<10 - - python >=3.10 - - typing_extensions >=4.12 - - backports.asyncio.runner >=1.1,<2 - - python - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/pytest-asyncio?source=hash-mapping - size: 39223 - timestamp: 1762797319837 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda - sha256: 2936717381a2740c7bef3d96827c042a3bba3ba1496c59892989296591e3dabb - md5: 0511afbe860b1a653125d77c719ece53 - depends: - - pytest >=6.2.5 - - python >=3.10 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-mock?source=hash-mapping - size: 22968 - timestamp: 1758101248317 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_100_cp314.conda - build_number: 100 - sha256: ff087b19d158644d3b0708eca10a5e40d692cdc8e95f53715f4490c6959f3768 - md5: b40594d5da041824087eebe12228af42 + - pkg:pypi/cffi?source=hash-mapping + size: 292983 + timestamp: 1761203354051 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda + sha256: 2bb1a8cfc2534b05718c21ffacd806c5c3d5289c9e8be12270d9fc5606c859bf + md5: 784c64a42b083798c5acd2373df5b825 depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.3,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - libntlm >=1.8,<2.0a0 - openssl >=3.5.5,<4.0a0 - - python_abi 3.14.* *_cp314 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - zstd >=1.5.7,<1.6.0a0 - license: Python-2.0 + license: BSD-3-Clause-Attribution + license_family: BSD purls: [] - size: 36529771 - timestamp: 1770271970971 - python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.14.3-h4f44bb5_100_cp314.conda - build_number: 100 - sha256: cad6d156c5b27510f5c1bc74905534311456350357485a01e4a7c90a2554b998 - md5: b35e4ee0c1832ba9f8669f88983d44c5 + size: 194397 + timestamp: 1771943557428 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/davix-0.8.10-h0b7473d_1.conda + sha256: de0e457af62183ef91e7b92d172da9887d1bd21f1f85122656c47d79199c49ec + md5: 59f9ecae2150f2e7feaeb72349923965 depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.3,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - liblzma >=5.8.2,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.2,<4.0a0 + - openssl + - libcurl + - libxml2-devel + - libcxx >=19 + - __osx >=11.0 + - gtest >=1.17.0,<1.17.1.0a0 + - openssl >=3.5.4,<4.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 - - python_abi 3.14.* *_cp314 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - zstd >=1.5.7,<1.6.0a0 - license: Python-2.0 + - gsoap >=2.8.123,<2.8.124.0a0 + license: LGPL-2.1-only purls: [] - size: 14395564 - timestamp: 1770272199897 - python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.3-h4c637c5_100_cp314.conda - build_number: 100 - sha256: 05f63767b548e9dd1d4d3b5978721703b376ce451c7dfaba8ba3ca020e11bc76 - md5: 97852749b58606ffe363c2cc491cfce1 + size: 926053 + timestamp: 1764194930352 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dcap-2.47.14-hca25ef3_3.conda + sha256: 09534f8c31828fcb353ee0c8407ec3849596211e43942417a4afa0fc296120ed + md5: 6c70e25e4cae3331f48046a77986ccbc depends: - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.3,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - liblzma >=5.8.2,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.2,<4.0a0 + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - openssl >=3.5.5,<4.0a0 - - python_abi 3.14.* *_cp314 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - zstd >=1.5.7,<1.6.0a0 - license: Python-2.0 + license: LGPL-2.0-only + license_family: GPL purls: [] - size: 13553519 - timestamp: 1770271668429 - python_site_packages_path: lib/python3.14/site-packages -- pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - name: python-dateutil - version: 2.9.0.post0 - sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 - requires_dist: - - six>=1.5 - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl - name: python-dotenv - version: 1.2.1 - sha256: b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61 - requires_dist: - - click>=5.0 ; extra == 'cli' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-gfal2-1.13.1-py314h1571e64_2.conda - sha256: a549f56ae1e753ffba31b69f42889a9e45112f572a538c2d2c21d114da7aca39 - md5: 5f47942674eda34dbd006be72b036e6b + size: 172535 + timestamp: 1771355684034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gct-6.2.1705709074-h07e554c_0.conda + sha256: eaadb01056b490a777e9dfa7fc6f176f41cbb4ae07e434513de680fc561c64f3 + md5: 4703e9e9400e3824297171fd972ce97a depends: - - python - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libboost-python >=1.88.0,<1.89.0a0 - - libglib >=2.86.3,<3.0a0 - - gfal2 >=2.23.5,<2.24.0a0 - - python_abi 3.14.* *_cp314 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libtool >=2.4.7,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - perl license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/gfal2-python?source=hash-mapping - size: 201775 - timestamp: 1769083114809 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-gfal2-1.13.1-py314hd08135f_2.conda - sha256: d803ed5f41c9442955fc8ee1ba5333ae318d2e8b0284a83f4f32c483fb9386f0 - md5: b1350b323ee5397d92ddfe2842d63025 + license_family: Apache + purls: [] + size: 3410291 + timestamp: 1709824989090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfal2-2.23.5-h46ca294_0.conda + sha256: 86f943d3531e3636a458c25f9bc11ace03bea4a745f90867cb3d9607f932bd0f + md5: f6fbc5578b64a47c78cc2e7b5b58ffe5 depends: - - python - - __osx >=10.13 + - json-c >=0.18,<0.19.0a0 - libcxx >=19 - - python_abi 3.14.* *_cp314 - - libboost-python >=1.88.0,<1.89.0a0 - - gfal2 >=2.23.5,<2.24.0a0 + - __osx >=11.0 + - srm-ifce >=1.24.6,<2.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - davix >=0.8.10,<0.9.0a0 + - dcap >=2.47.14,<2.48.0a0 + - openldap >=2.6.10,<2.7.0a0 - libglib >=2.86.3,<3.0a0 + - xrootd >=5.8.4,<6.0a0 + - libuuid >=2.41.3,<3.0a0 + - gtest >=1.17.0,<1.17.1.0a0 + - libssh2 >=1.11.1,<2.0a0 + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - libzlib >=1.3.1,<2.0a0 + - pugixml >=1.15,<1.16.0a0 license: Apache-2.0 license_family: APACHE - purls: - - pkg:pypi/gfal2-python?source=hash-mapping - size: 191311 - timestamp: 1769083258369 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-gfal2-1.13.1-py314h5c1db39_2.conda - sha256: a94056439b953daed560227e6128a3fcf55fdb8f18f9b36793a29c1b64c16391 - md5: 7e203553047ba0626fdbb8e86e6a89d2 - depends: - - python - - libcxx >=19 + purls: [] + size: 756388 + timestamp: 1769072357132 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gsoap-2.8.123-hfb11b17_0.tar.bz2 + sha256: c0cb7fc084ecf7a522044010d755ee697b878e82a8f579db29bf36c473ae18ba + md5: e01fe9aa10adaca07d0b9bcd073fab52 + depends: + - libcxx >=14.0.4 + - libzlib >=1.2.12,<2.0.0a0 + - openssl >=3.0.5,<4.0a0 + license: GPL-2.0-only + license_family: GPL + purls: [] + size: 1907483 + timestamp: 1662008204245 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtest-1.17.0-ha393de7_1.conda + sha256: 441fb779db5f14eff8997ddde88c90c30ab64ea8bd4c219b76724e4d3d736c76 + md5: f277a9eb8063fe7c4e33d91b8296fb0c + depends: - __osx >=11.0 - - python 3.14.* *_cp314 - - gfal2 >=2.23.5,<2.24.0a0 - - python_abi 3.14.* *_cp314 - - libboost-python >=1.88.0,<1.89.0a0 - - libglib >=2.86.3,<3.0a0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/gfal2-python?source=hash-mapping - size: 185917 - timestamp: 1769083275804 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.7.8-py314h0f05182_0.conda - sha256: 7c4615367e1d8bee1e98abcfccd742fb0c382a150f21cb592a66af69063eae43 - md5: 1cdbb8798d700d90f33998d41baed1ec + - libcxx >=18 + constrains: + - gmock 1.17.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 378391 + timestamp: 1748320218212 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda + sha256: 3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5 + md5: f1182c91c0de31a7abd40cedf6a5ebef depends: - - python - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python_abi 3.14.* *_cp314 + - __osx >=11.0 license: MIT license_family: MIT - purls: - - pkg:pypi/librt?source=hash-mapping - size: 64072 - timestamp: 1768406896488 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.7.8-py314hd330473_0.conda - sha256: 9cbd3910f22d3c44a1635cc2646df218eedb4b97dc232db6f24ea4f93d271755 - md5: 2d35a795767f06747bba198e529c31c7 + purls: [] + size: 12361647 + timestamp: 1773822915649 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda + sha256: 73179a1cd0b45c09d4f631cb359d9e755e6e573c5d908df42006728e0bf8297c + md5: 94f14ef6157687c30feb44e1abecd577 depends: - - python - - __osx >=10.13 - - python_abi 3.14.* *_cp314 + - __osx >=11.0 license: MIT license_family: MIT - purls: - - pkg:pypi/librt?source=hash-mapping - size: 57536 - timestamp: 1768406920191 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.7.8-py314ha14b1ff_0.conda - sha256: 3af72999955913d5f1f1eec62ff5080ff14e44435f527e273e310a5e3e7682d9 - md5: 89c4e1720ff541a874b45fe06b4e1e1e + purls: [] + size: 73715 + timestamp: 1726487214495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda + sha256: c0a0bf028fe7f3defcdcaa464e536cf1b202d07451e18ad83fdd169d15bef6ed + md5: e446e1822f4da8e5080a9de93474184d depends: - - python - __osx >=11.0 - - python 3.14.* *_cp314 - - python_abi 3.14.* *_cp314 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - purls: - - pkg:pypi/librt?source=hash-mapping - size: 65713 - timestamp: 1768407001203 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + purls: [] + size: 1160828 + timestamp: 1769770119811 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-8_h51639a9_openblas.conda build_number: 8 - sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 - md5: 0539938c55b6b1a59b560e843ad864a4 + sha256: 8f5ec18ead0619a9cf0f38b49796c22f6fc0f44850c0df2baea0f5277db16e75 + md5: dbfe729181a32741ae63ecb41eefbac6 + depends: + - libopenblas >=0.3.33,<0.3.34.0a0 + - libopenblas >=0.3.33,<1.0a0 constrains: - - python 3.14.* *_cp314 + - blas 2.308 openblas + - liblapack 3.11.0 8*_openblas + - liblapacke 3.11.0 8*_openblas + - libcblas 3.11.0 8*_openblas + - mkl <2027 license: BSD-3-Clause license_family: BSD purls: [] - size: 6989 - timestamp: 1752805904792 -- pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl - name: pytz - version: '2025.2' - sha256: 5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda - sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d - md5: 2035f68f96be30dc60a5dfd7452c7941 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=compressed-mapping - size: 202391 - timestamp: 1770223462836 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py314h10d0514_1.conda - sha256: aef010899d642b24de6ccda3bc49ef008f8fddf7bad15ebce9bdebeae19a4599 - md5: ebd224b733573c50d2bfbeacb5449417 + size: 18949 + timestamp: 1779859141315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda + sha256: 6f1450cdde346f12cdfa4f6862cc9aa288a8967a7017cf4ccdbbeb403604e148 + md5: c0cc232de93ca04196d6b4e46037d1f3 depends: - - __osx >=10.13 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 191947 - timestamp: 1770226344240 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py314h6e9b3f0_1.conda - sha256: 95f385f9606e30137cf0b5295f63855fd22223a4cf024d306cf9098ea1c4a252 - md5: dcf51e564317816cb8d546891019b3ab + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - icu >=78.1,<79.0a0 + - libcxx >=19 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - boost-cpp <0.0a0 + license: BSL-1.0 + purls: [] + size: 2154080 + timestamp: 1766347492076 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-python-1.90.0-py314hce24fef_1.conda + sha256: cd314d4b4a608bbfc8c7a8120482c54581b94e981a97865a4dd1a32976b39471 + md5: 000d43afb146699013cb14b0af071a60 depends: - __osx >=11.0 + - libboost 1.90.0 h0419b56_1 + - libcxx >=19 + - numpy >=1.23,<3 - python >=3.14,<3.15.0a0 - python >=3.14,<3.15.0a0 *_cp314 - python_abi 3.14.* *_cp314 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=compressed-mapping - size: 189475 - timestamp: 1770223788648 -- pypi: https://files.pythonhosted.org/packages/b9/20/35d2baebacf357b562bd081936b66cd845775442973cb033a377fd639a84/rdflib-7.5.0-py3-none-any.whl - name: rdflib - version: 7.5.0 - sha256: b011dfc40d0fc8a44252e906dcd8fc806a7859bc231be190c37e9568a31ac572 - requires_dist: - - berkeleydb>=18.1.0,<19.0.0 ; extra == 'berkeleydb' - - html5rdf>=1.2,<2 ; extra == 'html' - - httpx>=0.28.1,<0.29.0 ; extra == 'rdf4j' - - isodate>=0.7.2,<1.0.0 ; python_full_version < '3.11' - - lxml>=4.3,<6.0 ; extra == 'lxml' - - networkx>=2,<4 ; extra == 'networkx' - - orjson>=3.9.14,<4 ; extra == 'orjson' - - pyparsing>=2.1.0,<4 - requires_python: '>=3.8.1' -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 - md5: d7d95fc8287ea7bf33e0e7116d2b95ec + constrains: + - py-boost <0.0a0 + - boost <0.0a0 + license: BSL-1.0 + purls: [] + size: 106135 + timestamp: 1766348141583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-8_hb0561ab_openblas.conda + build_number: 8 + sha256: f93efcd44bc24f97c2478c7474d3baa6801a057974f330e1d06bedc33e4c778f + md5: 03a2ef3491da9e5b4d18c03e9f4b3109 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - ncurses >=6.5,<7.0a0 - license: GPL-3.0-only - license_family: GPL + - libblas 3.11.0 8_h51639a9_openblas + constrains: + - blas 2.308 openblas + - liblapack 3.11.0 8*_openblas + - liblapacke 3.11.0 8*_openblas + license: BSD-3-Clause + license_family: BSD purls: [] - size: 345073 - timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 - md5: eefd65452dfe7cce476a519bece46704 + size: 18911 + timestamp: 1779859147634 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda + sha256: 38c0bc634b61e542776e97cfd15d5d41edd304d4e47c333004d2d622439b2381 + md5: 2f57b7d0c6adda88957586b7afd78438 depends: - - __osx >=10.13 - - ncurses >=6.5,<7.0a0 - license: GPL-3.0-only - license_family: GPL + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT purls: [] - size: 317819 - timestamp: 1765813692798 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 - md5: f8381319127120ce51e081dce4865cf4 + size: 400568 + timestamp: 1777462251987 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.7-h55c6f16_0.conda + sha256: cceb668dc1b71f054b1036dd83eca2e02c0c3a4b2ba3ad28c74a982d819597a3 + md5: 0325fbe13eb6dd39234eb305ac1b3cb8 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 568252 + timestamp: 1780441702930 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: + - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 - license: GPL-3.0-only - license_family: GPL + license: BSD-2-Clause + license_family: BSD purls: [] - size: 313930 - timestamp: 1765813902568 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 - md5: 870293df500ca7e18bedefa5838a22ab + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_0.conda + sha256: 3133fb6bfa871288b92c8b8752696686a841bf4ffe035aa3038033c9e15b738e + md5: ef22e9ab1dc7c2f334252f565f90b3b8 depends: - - attrs >=22.2.0 - - python >=3.10 - - rpds-py >=0.7.0 - - typing_extensions >=4.4.0 - - python + - __osx >=11.0 + constrains: + - expat 2.8.1.* license: MIT license_family: MIT - purls: - - pkg:pypi/referencing?source=hash-mapping - size: 51788 - timestamp: 1760379115194 -- pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl - name: requests - version: 2.32.5 - sha256: 2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6 - requires_dist: - - charset-normalizer>=2,<4 - - idna>=2.5,<4 - - urllib3>=1.21.1,<3 - - certifi>=2017.4.17 - - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' - - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl - name: rich - version: 14.3.2 - sha256: 08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69 - requires_dist: - - ipywidgets>=7.5.1,<9 ; extra == 'jupyter' - - markdown-it-py>=2.2.0 - - pygments>=2.13.0,<3.0.0 - requires_python: '>=3.8.0' -- pypi: https://files.pythonhosted.org/packages/04/80/97b6f357ac458d9ad9872cc3183ca09ef7439ac89e030ea43053ba1294b6/rich_argparse-1.7.2-py3-none-any.whl - name: rich-argparse - version: 1.7.2 - sha256: 0559b1f47a19bbeb82bf15f95a057f99bcbbc98385532f57937f9fc57acc501a - requires_dist: - - rich>=11.0.0 - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda - sha256: e53b0cbf3b324eaa03ca1fe1a688fdf4ab42cea9c25270b0a7307d8aaaa4f446 - md5: c1c368b5437b0d1a68f372ccf01cb133 + purls: [] + size: 69110 + timestamp: 1779278728511 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7 + md5: 43c04d9cb46ef176bb2a4c77e324d599 depends: - - python - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - python_abi 3.14.* *_cp314 - constrains: - - __glibc >=2.17 + - __osx >=11.0 license: MIT license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 376121 - timestamp: 1764543122774 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py314ha7b6dee_0.conda - sha256: 368a758ba6f4fb3c6c9a0d25c090807553af5b3dc937a2180ff047fe8ebf6820 - md5: 816cb6c142c86de627fe7ffa1affddb2 + purls: [] + size: 40979 + timestamp: 1769456747661 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda + sha256: 06644fa4d34d57c9e48f4d84b1256f9e5f654fdb37f43acc8a58a396952d42b7 + md5: 644058123986582db33aebd4ae2ca184 depends: - - python - - __osx >=10.13 - - python_abi 3.14.* *_cp314 + - _openmp_mutex constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 362381 - timestamp: 1764543188314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py314haad56a0_0.conda - sha256: e161dd97403b8b8a083d047369a5cf854557dba1204d29e2f0250f5ac4403925 - md5: 76a4f88d1b7748c477abf3c341edc64c + - libgcc-ng ==15.2.0=*_19 + - libgomp 15.2.0 19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 404080 + timestamp: 1778273064154 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda + sha256: d4837b3b9b30af3132d260225e91ab9dde83be04c59513f500cc81050fb37486 + md5: 1ea03f87cdb1078fbc0e2b2deb63752c depends: - - python - - __osx >=11.0 - - python 3.14.* *_cp314 - - python_abi 3.14.* *_cp314 + - libgfortran5 15.2.0 hdae7583_19 constrains: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 350976 - timestamp: 1764543169524 -- pypi: https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl - name: ruamel-yaml - version: 0.18.17 - sha256: 9c8ba9eb3e793efdf924b60d521820869d5bf0cb9c6f1b82d82de8295e290b9d - requires_dist: - - ruamel-yaml-clib>=0.2.15 ; python_full_version < '3.15' and platform_python_implementation == 'CPython' - - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' - - ryd ; extra == 'docs' - - mercurial>5.7 ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/3e/bd/ab8459c8bb759c14a146990bf07f632c1cbec0910d4853feeee4be2ab8bb/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl - name: ruamel-yaml-clib - version: 0.2.15 - sha256: 753faf20b3a5906faf1fc50e4ddb8c074cb9b251e00b14c18b28492f933ac8ef - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/69/f2/c4cec0a30f1955510fde498aac451d2e52b24afdbcb00204d3a951b772c3/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl - name: ruamel-yaml-clib - version: 0.2.15 - sha256: 480894aee0b29752560a9de46c0e5f84a82602f2bc5c6cde8db9a345319acfdf - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a1/5c/8b56b08db91e569d0a4fbfa3e492ed2026081bdd7e892f63ba1c88a2f548/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: ruamel-yaml-clib - version: 0.2.15 - sha256: 2812ff359ec1f30129b62372e5f22a52936fac13d5d21e70373dbca5d64bb97c - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/5c/48/ccd6c49477674389d55b5b5520e47d1290f4c29686c36f5674f4a7aced00/rucio_clients-39.2.0-py3-none-any.whl - name: rucio-clients - version: 39.2.0 - sha256: 97406fa7f927b24b59499bb507a43cc9f24ca8283e45315d59dd5ad4fcfbc5a2 - requires_dist: - - click - - requests - - urllib3 - - dogpile-cache - - packaging - - tabulate - - jsonschema - - rich - - typing-extensions - - paramiko ; extra == 'ssh' - - kerberos ; extra == 'kerberos' - - pykerberos ; extra == 'kerberos' - - requests-kerberos ; extra == 'kerberos' - - python-swiftclient ; extra == 'swift' - - argcomplete ; extra == 'argcomplete' - - paramiko ; extra == 'sftp' - - python-magic ; extra == 'dumper' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.0-h40fa522_0.conda - noarch: python - sha256: fc456645570586c798d2da12fe723b38ea0d0901373fd9959cab914cbb19518b - md5: fe90be2abf12b301dde984719a02ca0b + - libgfortran-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 139675 + timestamp: 1778273280875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda + sha256: d0a68b7a121d115b80c169e24d1265dcc25a3fe58d107df1bbc430797e226d88 + md5: ba36d8c606a6a53fe0b8c12d47267b3d depends: - - python - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15.2.0 constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ruff?source=compressed-mapping - size: 9103793 - timestamp: 1770153712370 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.0-h5930b28_0.conda - noarch: python - sha256: de9f76a00b86053d340cb0cc43f119c9d917f870e71b0320e4fd6d7e00c74657 - md5: a48352b21637abd3e40822c4e6eb5c56 + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 599691 + timestamp: 1778273075448 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda + sha256: 3b32a7a710132d509f2ea38b2f0384414c863533e0fc7ac71b6a0763e4c67424 + md5: 62d6f3b832d7d79ae0c0aa1bb3c325fa depends: - - python - - __osx >=10.13 + - __osx >=11.0 + - libintl >=0.25.1,<1.0a0 + - libffi >=3.5.2,<3.6.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ruff?source=compressed-mapping - size: 9136186 - timestamp: 1770153825397 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.0-h279115b_0.conda - noarch: python - sha256: d0d55cd450f7e66b98aec49bd76e7476badeed78563988003766d4dd5c4850fa - md5: 67e036614accdbee477daac1ba2441b9 + - glib >2.66 + license: LGPL-2.1-or-later + purls: [] + size: 4439458 + timestamp: 1778508895255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 + md5: 4d5a7445f0b25b6a3ddbb56e790f5251 + depends: + - __osx >=11.0 + license: LGPL-2.1-only + purls: [] + size: 750379 + timestamp: 1754909073836 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a + md5: 5103f6a6b210a3912faf8d7db516918c depends: - - python - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 90957 + timestamp: 1751558394144 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-8_hd9741b5_openblas.conda + build_number: 8 + sha256: 8a076fe82142a00fe85f5a5a5351e286e8064f0100fe13608d19182cd0018c25 + md5: 85adeb3d469d082dbd9c8c39e36dec57 + depends: + - libblas 3.11.0 8_h51639a9_openblas constrains: + - libcblas 3.11.0 8*_openblas + - blas 2.308 openblas + - liblapacke 3.11.0 8*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18925 + timestamp: 1779859153970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libltdl-2.4.3a-h286801f_0.conda + sha256: 69cdd97f0a31b2b1e8a8bd8ebc03c6042d2ba589721d2eead3d7815d801cafdd + md5: db358e8493bd213b5650b9f9e1d0d355 + depends: - __osx >=11.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ruff?source=compressed-mapping - size: 8383076 - timestamp: 1770153856208 -- pypi: https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl - name: s3transfer - version: 0.16.0 - sha256: 18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe - requires_dist: - - botocore>=1.37.4,<2.0a0 - - botocore[crt]>=1.37.4,<2.0a0 ; extra == 'crt' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/62/86/3915cb5a603e1b1d798e1ee1ce2a0a390a0f85d35da97e4b6d1c6a45421b/schema_salad-8.9.20251102115403-cp314-cp314-macosx_10_15_x86_64.whl - name: schema-salad - version: 8.9.20251102115403 - sha256: 8d12fe61d68cbce0de95e5206dcd24d18bdb77a41830ab4c7b5794326ed23d90 - requires_dist: - - requests>=1.0 - - ruamel-yaml>=0.17.6,<0.19 - - rdflib>=4.2.2,<8.0.0 - - mistune>=3,<3.2 - - cachecontrol[filecache]>=0.13.1,<0.15 - - mypy-extensions - - sphinx>=2.2 ; extra == 'docs' - - sphinx-rtd-theme>=1 ; extra == 'docs' - - pytest<9 ; extra == 'docs' - - sphinx-autoapi ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' - - sphinxcontrib-autoprogram ; extra == 'docs' - - black ; extra == 'pycodegen' - requires_python: '>=3.9,<3.15' -- pypi: https://files.pythonhosted.org/packages/71/3f/212e32937253312e102e152c954a5495df0379255719ce28e0288194748d/schema_salad-8.9.20251102115403-cp314-cp314-macosx_11_0_arm64.whl - name: schema-salad - version: 8.9.20251102115403 - sha256: 38c5faa34f7f70641ea4984f65aab062cc78c8f4528e3f2c092fa81503fc937d - requires_dist: - - requests>=1.0 - - ruamel-yaml>=0.17.6,<0.19 - - rdflib>=4.2.2,<8.0.0 - - mistune>=3,<3.2 - - cachecontrol[filecache]>=0.13.1,<0.15 - - mypy-extensions - - sphinx>=2.2 ; extra == 'docs' - - sphinx-rtd-theme>=1 ; extra == 'docs' - - pytest<9 ; extra == 'docs' - - sphinx-autoapi ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' - - sphinxcontrib-autoprogram ; extra == 'docs' - - black ; extra == 'pycodegen' - requires_python: '>=3.9,<3.15' -- pypi: https://files.pythonhosted.org/packages/89/d4/24a137517140fc8cc07f7423695b9296c993d6b6cbf2a7867d8f859de77f/schema_salad-8.9.20251102115403-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: schema-salad - version: 8.9.20251102115403 - sha256: d7f9dcdafe3ca64f28a1ee219434bc1297801c9435b7431817e435e782f1c1db - requires_dist: - - requests>=1.0 - - ruamel-yaml>=0.17.6,<0.19 - - rdflib>=4.2.2,<8.0.0 - - mistune>=3,<3.2 - - cachecontrol[filecache]>=0.13.1,<0.15 - - mypy-extensions - - sphinx>=2.2 ; extra == 'docs' - - sphinx-rtd-theme>=1 ; extra == 'docs' - - pytest<9 ; extra == 'docs' - - sphinx-autoapi ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' - - sphinxcontrib-autoprogram ; extra == 'docs' - - black ; extra == 'pycodegen' - requires_python: '>=3.9,<3.15' -- conda: https://conda.anaconda.org/conda-forge/linux-64/scitokens-cpp-1.3.0-h096d96b_0.conda - sha256: 11ad442837d2bd3c856c8a7ed08754ca430e6779999d898d1fa313fcd670458c - md5: 946024dbdba971eeda33da76ae586694 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 37328 + timestamp: 1740594040504 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda + sha256: 34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e + md5: b1fd823b5ae54fbec272cea0811bd8a9 depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.18.0,<9.0a0 - - libgcc >=14 - - libsqlite >=3.51.2,<4.0a0 - - libstdcxx >=14 - - libuuid >=2.41.3,<3.0a0 - - openssl >=3.5.5,<4.0a0 - license: Apache-2.0 - license_family: APACHE + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD purls: [] - size: 2227714 - timestamp: 1769697062631 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scitokens-cpp-1.3.0-hcb75e18_0.conda - sha256: d44f4ba1470d3e13c8f36c0086d5cbca97f3dbc05a0ed384be31ec56e79de3f0 - md5: 086d476a1c59a3984ef460bfb292425d + size: 92472 + timestamp: 1775825802659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 + md5: 57c4be259f5e0b99a5983799a228ae55 depends: - - __osx >=10.13 - - libcurl >=8.18.0,<9.0a0 - - libcxx >=19 - - libsqlite >=3.51.2,<4.0a0 - - openssl >=3.5.5,<4.0a0 - license: Apache-2.0 - license_family: APACHE + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD purls: [] - size: 184130 - timestamp: 1769697263474 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scitokens-cpp-1.3.0-h608d757_0.conda - sha256: 647dd5a8ead4e8268c546cb91a34289a4aaede39b9d47ab50fe9facdd91880dd - md5: c63e2462ec4f3ef4a2af2dcbf63a3842 + size: 73690 + timestamp: 1769482560514 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda + sha256: 2bc7bc3978066f2c274ebcbf711850cc9ab92e023e433b9631958a098d11e10a + md5: 6ea18834adbc3b33df9bd9fb45eaf95b depends: - __osx >=11.0 - - libcurl >=8.18.0,<9.0a0 + - c-ares >=1.34.6,<2.0a0 - libcxx >=19 - - libsqlite >=3.51.2,<4.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.5,<4.0a0 - license: Apache-2.0 - license_family: APACHE + license: MIT + license_family: MIT purls: [] - size: 178975 - timestamp: 1769697339391 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.2-pyh332efcf_0.conda - sha256: f5fcb7854d2b7639a5b1aca41dd0f2d5a69a60bbc313e7f192e2dc385ca52f86 - md5: 7b446fcbb6779ee479debb4fd7453e6c + size: 576526 + timestamp: 1773854624224 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda + sha256: ea8c680924d957e12270dca549620327d5e986f23c4bd5f45627167ca6ef7a3b + md5: c90c1d3bd778f5ec0d4bb4ef36cbd5b6 depends: - - python >=3.10 + - __osx >=11.0 + license: LGPL-2.1-or-later + purls: [] + size: 31099 + timestamp: 1734670168822 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.33-openmp_he657e61_0.conda + sha256: 9dd455b2d172aeedfa2058d324b5b5822b0bc1b7c1f32cd183d7078540d2f6eb + md5: 909e41855c29f0d52ae630198cd57135 + depends: + - __osx >=11.0 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.33,<0.3.34.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4304965 + timestamp: 1776995497368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_0.conda + sha256: 862463917e8ef5ac3ebdaf8f19914634b457609cc27ba678b7197124cefeb1f7 + md5: 1ebde5c677f00765233a17e278571177 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + purls: [] + size: 927724 + timestamp: 1780575223548 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda + sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a + md5: b68e8f66b94b44aaa8de4583d3d4cc40 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279193 + timestamp: 1745608793272 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtool-2.5.4-h286801f_0.conda + sha256: e23da9c94975f3b0251b4e81ff70e0631702e103278038157cc4dfe4c2f3d851 + md5: bdd3ba2e9c5d24fa4341521df822f0c7 + depends: + - __osx >=11.0 + - libltdl 2.4.3a h286801f_0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 414678 + timestamp: 1740594107488 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuuid-2.42.1-h7b1c3a4_0.conda + sha256: 8a3cddf512182065da2988cf2041df2f491f99fcf1908229d79ea2008c200045 + md5: fa126c27077f950b4fbc6e3c5db9e802 + depends: + - __osx >=11.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 37441 + timestamp: 1779118748726 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcrypt-4.4.36-h93a5062_1.conda + sha256: 4c7884834f261a4b7d7d8bc9cfb9940f0a4bc5582a21624f386973bb254c7560 + md5: 7d2e687b217d4de0fa7064b4de3e0be8 + license: LGPL-2.1-or-later + purls: [] + size: 99413 + timestamp: 1702724499136 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + sha256: ff75b84cdb9e8d123db2fa694a8ac2c2059516b6cbc98ac21fb68e235d0fd354 + md5: 19edaa53885fc8205614b03da2482282 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 license: MIT license_family: MIT - purls: - - pkg:pypi/setuptools?source=compressed-mapping - size: 678888 - timestamp: 1769601206751 -- pypi: https://files.pythonhosted.org/packages/70/98/d82f14ac7ffedbd38dfa2383f142b26d18d23ca6cf35a40f4af60df666bd/sh-2.2.2-py3-none-any.whl - name: sh - version: 2.2.2 - sha256: e0b15b4ae8ffcd399bc8ffddcbd770a43c7a70a24b16773fbb34c001ad5d52af - requires_python: '>=3.8.1,<4.0' -- pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl - name: shellingham - version: 1.5.4 - sha256: 7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - name: six - version: 1.17.0 - sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl - name: smmap - version: 5.0.2 - sha256: b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl - name: spython - version: 0.3.14 - sha256: 72968583e498bc2a51f9acd0ed6bc0d7d1f7ccd491feaba5e2f7d944bc51da3a -- pypi: https://files.pythonhosted.org/packages/05/45/1256fb597bb83b58a01ddb600c59fe6fdf0e5afe333f0456ed75c0f8d7bd/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: sqlalchemy - version: 2.0.46 - sha256: 9bcdce05f056622a632f1d44bb47dbdb677f58cad393612280406ce37530eb6d - requires_dist: - - importlib-metadata ; python_full_version < '3.8' - - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' - - typing-extensions>=4.6.0 - - greenlet>=1 ; extra == 'asyncio' - - mypy>=0.910 ; extra == 'mypy' - - pyodbc ; extra == 'mssql' - - pymssql ; extra == 'mssql-pymssql' - - pyodbc ; extra == 'mssql-pyodbc' - - mysqlclient>=1.4.0 ; extra == 'mysql' - - mysql-connector-python ; extra == 'mysql-connector' - - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' - - cx-oracle>=8 ; extra == 'oracle' - - oracledb>=1.0.1 ; extra == 'oracle-oracledb' - - psycopg2>=2.7 ; extra == 'postgresql' - - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' - - greenlet>=1 ; extra == 'postgresql-asyncpg' - - asyncpg ; extra == 'postgresql-asyncpg' - - psycopg2-binary ; extra == 'postgresql-psycopg2binary' - - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' - - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' - - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' - - pymysql ; extra == 'pymysql' - - greenlet>=1 ; extra == 'aiomysql' - - aiomysql>=0.2.0 ; extra == 'aiomysql' - - greenlet>=1 ; extra == 'aioodbc' - - aioodbc ; extra == 'aioodbc' - - greenlet>=1 ; extra == 'asyncmy' - - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' - - greenlet>=1 ; extra == 'aiosqlite' - - aiosqlite ; extra == 'aiosqlite' - - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' - - sqlcipher3-binary ; extra == 'sqlcipher' - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/e9/f8/5ecdfc73383ec496de038ed1614de9e740a82db9ad67e6e4514ebc0708a3/sqlalchemy-2.0.46-cp314-cp314-macosx_11_0_arm64.whl - name: sqlalchemy - version: 2.0.46 - sha256: 56bdd261bfd0895452006d5316cbf35739c53b9bb71a170a331fa0ea560b2ada - requires_dist: - - importlib-metadata ; python_full_version < '3.8' - - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' - - typing-extensions>=4.6.0 - - greenlet>=1 ; extra == 'asyncio' - - mypy>=0.910 ; extra == 'mypy' - - pyodbc ; extra == 'mssql' - - pymssql ; extra == 'mssql-pymssql' - - pyodbc ; extra == 'mssql-pyodbc' - - mysqlclient>=1.4.0 ; extra == 'mysql' - - mysql-connector-python ; extra == 'mysql-connector' - - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' - - cx-oracle>=8 ; extra == 'oracle' - - oracledb>=1.0.1 ; extra == 'oracle-oracledb' - - psycopg2>=2.7 ; extra == 'postgresql' - - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' - - greenlet>=1 ; extra == 'postgresql-asyncpg' - - asyncpg ; extra == 'postgresql-asyncpg' - - psycopg2-binary ; extra == 'postgresql-psycopg2binary' - - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' - - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' - - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' - - pymysql ; extra == 'pymysql' - - greenlet>=1 ; extra == 'aiomysql' - - aiomysql>=0.2.0 ; extra == 'aiomysql' - - greenlet>=1 ; extra == 'aioodbc' - - aioodbc ; extra == 'aioodbc' - - greenlet>=1 ; extra == 'asyncmy' - - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' - - greenlet>=1 ; extra == 'aiosqlite' - - aiosqlite ; extra == 'aiosqlite' - - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' - - sqlcipher3-binary ; extra == 'sqlcipher' - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl - name: sqlalchemy - version: 2.0.46 - sha256: f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e - requires_dist: - - importlib-metadata ; python_full_version < '3.8' - - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' - - typing-extensions>=4.6.0 - - greenlet>=1 ; extra == 'asyncio' - - mypy>=0.910 ; extra == 'mypy' - - pyodbc ; extra == 'mssql' - - pymssql ; extra == 'mssql-pymssql' - - pyodbc ; extra == 'mssql-pyodbc' - - mysqlclient>=1.4.0 ; extra == 'mysql' - - mysql-connector-python ; extra == 'mysql-connector' - - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' - - cx-oracle>=8 ; extra == 'oracle' - - oracledb>=1.0.1 ; extra == 'oracle-oracledb' - - psycopg2>=2.7 ; extra == 'postgresql' - - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' - - greenlet>=1 ; extra == 'postgresql-asyncpg' - - asyncpg ; extra == 'postgresql-asyncpg' - - psycopg2-binary ; extra == 'postgresql-psycopg2binary' - - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' - - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' - - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' - - pymysql ; extra == 'pymysql' - - greenlet>=1 ; extra == 'aiomysql' - - aiomysql>=0.2.0 ; extra == 'aiomysql' - - greenlet>=1 ; extra == 'aioodbc' - - aioodbc ; extra == 'aioodbc' - - greenlet>=1 ; extra == 'asyncmy' - - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' - - greenlet>=1 ; extra == 'aiosqlite' - - aiosqlite ; extra == 'aiosqlite' - - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' - - sqlcipher3-binary ; extra == 'sqlcipher' - requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/srm-ifce-1.24.6-h3b26d37_2.conda - sha256: 994e04767e2fa540c43ffb96397835154a7fcc5b7bd9281d0923615f2f208352 - md5: a84d7ea541bfada40c748035211a9ce9 + purls: [] + size: 466360 + timestamp: 1776377102261 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda + sha256: 2fe1d8de0854342ae9cabe408b476935f82f5636e153b3b497456264dc8ff3a1 + md5: 8e037d73747d6fe34e12d7bcac10cf21 depends: - - cgsi-gsoap >=1.3.11,<1.4.0a0 - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - libgcc-ng >=12 - - libglib >=2.78.4,<3.0a0 - - libstdcxx-ng >=12 - - openssl >=3.2.1,<4.0a0 - license: Apache-2.0 - license_family: Apache + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h5ef1a60_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT purls: [] - size: 215070 - timestamp: 1709962013437 -- conda: https://conda.anaconda.org/conda-forge/osx-64/srm-ifce-1.24.6-h73c9bdb_2.conda - sha256: 2004682e917722b471d9b9817ee3f14aa47b3832d4087f4f7f8b9965ecdae22a - md5: aea203ab9df6dc991bc26552617ccc66 + size: 41102 + timestamp: 1776377119495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.3-h5654f7c_0.conda + sha256: 541980a15bf0acb7794754f1cde9cfeb74ca27c139d065c1c6541c73b4e07105 + md5: 469f4af737803bf7deda25d41c557593 depends: - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - libcxx >=16 - - libglib >=2.78.4,<3.0a0 - - openssl >=3.2.1,<4.0a0 - license: Apache-2.0 - license_family: Apache + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2 2.15.3 h5654f7c_0 + - libxml2-16 2.15.3 h5ef1a60_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT purls: [] - size: 175433 - timestamp: 1709962268470 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/srm-ifce-1.24.6-he0fb9dd_2.conda - sha256: 8a0bcdaa875490a30a7928c720c622bef66b903e0036b0e89ff1df46d30449bf - md5: 08116d760c59cc3b713406ded76db1ac + size: 80217 + timestamp: 1776377134719 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 + md5: bc5a5721b6439f2f62a84f2548136082 depends: - - gct >=6.2.1705709074,<6.2.1705709075.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - libcxx >=16 - - libglib >=2.78.4,<3.0a0 - - openssl >=3.2.1,<4.0a0 + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + purls: [] + size: 47759 + timestamp: 1774072956767 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.7-hc7d1edf_0.conda + sha256: 6bf27376f11198c01a88a1c8234470f45bce0aa7502b7e7988ef03ef5db3a890 + md5: 7c6a5897a8bc5b6d509a4ee9dec7fcc8 + depends: + - __osx >=11.0 + constrains: + - openmp 22.1.7|22.1.7.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 285162 + timestamp: 1780455637760 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/m2crypto-0.45.1-py314hdb6fb3f_2.conda + sha256: d5eaf9498468368f651c6bc72bec90c1441b2dd91f17112c1d0a32082abab8fb + md5: 8cae6040ec4477c78304682f18f950f5 + depends: + - openssl + - python + - __osx >=11.0 + - python 3.14.* *_cp314 + - openssl >=3.5.2,<4.0a0 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/m2crypto?source=hash-mapping + size: 395003 + timestamp: 1757689131892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-2.1.0-py314h2fbedac_0.conda + sha256: d205dc89fa338ca312ed54864ca377e9a52e4273509370c3678503115c95eb05 + md5: 54f38ddefd5fbd675bc9ff69d7a31fd7 + depends: + - ast-serialize >=0.3.0,<1.0.0 + - mypy_extensions >=1.0.0 + - pathspec >=1.0.0 + - python + - python-librt >=0.11.0 + - typing_extensions >=4.6.0 + - psutil >=4.0 + - __osx >=11.0 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 13520137 + timestamp: 1780315680928 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + sha256: 4ea6c620b87bd1d42bb2ccc2c87cd2483fa2d7f9e905b14c223f11ff3f4c455d + md5: 343d10ed5b44030a2f67193905aea159 + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + size: 805509 + timestamp: 1777423252320 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.6-py314hb79c6fa_0.conda + sha256: 538064b78042cd2751664f00c6255ecce81b38e9fa6dd9c1863327e6c759ed4a + md5: e64e47cb372d92e3425816a2918f4605 + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - libblas >=3.9.0,<4.0a0 + - python_abi 3.14.* *_cp314 + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6995531 + timestamp: 1779169217034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda + sha256: 4a7b691a5b2241ee10f59a9e51f68be4cf1e4294829cebb40d198139a561e780 + md5: 7940b03e5c1e85b0c8b8a74f3011783f + depends: + - __osx >=11.0 + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - openssl >=3.5.6,<4.0a0 + license: OLDAP-2.8 + license_family: BSD + purls: [] + size: 844724 + timestamp: 1775742074928 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda + sha256: b3e3ca895c336d4eb91c5d2f244a312bdb59a0de8cfa0cc4c179225ab2f6bbfb + md5: 8187a86242741725bfa74785fe812979 + depends: + - __osx >=11.0 + - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 181605 - timestamp: 1709962334959 -- pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl - name: stevedore - version: 5.6.0 - sha256: 4a36dccefd7aeea0c70135526cecb7766c4c84c473b1af68db23d541b6dc1820 + size: 3102584 + timestamp: 1781069820667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba + md5: 9b4190c4055435ca3502070186eba53a + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 850231 + timestamp: 1763655726735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda + build_number: 7 + sha256: b0c55040d2994fd6bf2f83786561d92f72306d982d6ea12889acad24a9bf43b8 + md5: ba3cbe93f99e896765422cc5f7c3a79e + license: GPL-1.0-or-later OR Artistic-1.0-Perl + purls: [] + size: 14439531 + timestamp: 1703311335652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py314ha14b1ff_0.conda + sha256: e0f31c053eb11803d63860c213b2b1b57db36734f5f84a3833606f7c91fedff9 + md5: fc4c7ab223873eee32080d51600ce7e7 + depends: + - python + - __osx >=11.0 + - python 3.14.* *_cp314 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 245502 + timestamp: 1769678303655 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda + sha256: 5ad8d036040b095f85d23c70624d3e5e1e4c00bc5cea97831542f2dcae294ec9 + md5: b9a4004e46de7aeb005304a13b35cb94 + depends: + - __osx >=11.0 + - libcxx >=18 + license: MIT + license_family: MIT + purls: [] + size: 91283 + timestamp: 1736601509593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.5-h4c637c5_100_cp314.conda + build_number: 100 + sha256: 06dec0e2f50e2f7e6a8808fcb4aff23729a3f23bcb1fca4fcbc3a341d9e38a83 + md5: f7331c9deaf21c79e5675e72b21d570b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.8.0,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.53.1,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + purls: [] + size: 13560854 + timestamp: 1779238292621 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-gfal2-1.13.1-py314hbaa542d_3.conda + sha256: cbe719c11b0f066343ef5868e18720cfb1235fc4a1f9800b92d6199a05042fe0 + md5: 350bc85615929de2badf0ce7c65c38a3 + depends: + - python + - __osx >=11.0 + - python 3.14.* *_cp314 + - libcxx >=19 + - libglib >=2.88.1,<3.0a0 + - gfal2 >=2.23.5,<2.24.0a0 + - libboost-python >=1.90.0,<1.91.0a0 + - python_abi 3.14.* *_cp314 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/gfal2-python?source=hash-mapping + size: 185223 + timestamp: 1780392064782 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.11.0-py314ha14b1ff_0.conda + sha256: 483c34d3224b1d8209206d5eba7b0f36f33a891908eec46d12a7a621d0a39001 + md5: 68be11fb4ea06efd0e13db21921afe56 + depends: + - python + - __osx >=11.0 + - python 3.14.* *_cp314 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/librt?source=hash-mapping + size: 129714 + timestamp: 1778511905677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py314h6e9b3f0_1.conda + sha256: 95f385f9606e30137cf0b5295f63855fd22223a4cf024d306cf9098ea1c4a252 + md5: dcf51e564317816cb8d546891019b3ab + depends: + - __osx >=11.0 + - python >=3.14,<3.15.0a0 + - python >=3.14,<3.15.0a0 *_cp314 + - python_abi 3.14.* *_cp314 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 189475 + timestamp: 1770223788648 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 + md5: f8381319127120ce51e081dce4865cf4 + depends: + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 313930 + timestamp: 1765813902568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-2026.5.1-py314he1d1ac0_0.conda + sha256: 764b78892f8ba2a7d5cb24c2911bd5718753ba5b130bf4e0d9a0bb0001c139b1 + md5: 58fe40c3bba570ac2cbfac4f4ea983b7 + depends: + - python + - __osx >=11.0 + - python_abi 3.14.* *_cp314 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 292087 + timestamp: 1779977082395 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.16-h80928e0_0.conda + noarch: python + sha256: 6ce34bec1817caf6aa22c7ce28c4aeadd5fe02ea00d74425c498f4ec35276a1c + md5: 316cae3a5f921c633f8a6e1eb48604d8 + depends: + - python + - __osx >=11.0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruff?source=compressed-mapping + size: 8426033 + timestamp: 1780612122132 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scitokens-cpp-1.4.0-h608d757_0.conda + sha256: 87fd75f8f087763bf83d081aac23d4a481ba47cb14c8d6ea4a922643f47cb666 + md5: 2c4e402af68d87892ebede3ba1f30ab9 + depends: + - __osx >=11.0 + - libcurl >=8.18.0,<9.0a0 + - libcxx >=19 + - libsqlite >=3.51.2,<4.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 181487 + timestamp: 1771576981524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/srm-ifce-1.24.6-he0fb9dd_2.conda + sha256: 8a0bcdaa875490a30a7928c720c622bef66b903e0036b0e89ff1df46d30449bf + md5: 08116d760c59cc3b713406ded76db1ac + depends: + - gct >=6.2.1705709074,<6.2.1705709075.0a0 + - gsoap >=2.8.123,<2.8.124.0a0 + - libcxx >=16 + - libglib >=2.78.4,<3.0a0 + - openssl >=3.2.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 181605 + timestamp: 1709962334959 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 + md5: a9d86bc62f39b94c4661716624eb21b0 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3127137 + timestamp: 1769460817696 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py314h6cfcd04_0.conda + sha256: 033dbf9859fe58fb85350cf6395be6b1346792e1766d2d5acab538a6eb3659fb + md5: e229f444fbdb28d8c4f40e247154d993 + depends: + - __osx >=11.0 + - cffi + - libcxx >=19 + - python >=3.14,<3.15.0a0 + - python >=3.14,<3.15.0a0 *_cp314 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 14884 + timestamp: 1769439056290 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xrootd-5.9.2-py314h7009e7c_0.conda + sha256: 8dad86bf83b2ad934ef61bdb96e675f8f93af58f529a2c47010de8c0b152cd82 + md5: 5fa6053ede60eb1c6d0926e2e423d02a + depends: + - openssl + - python + - readline + - libxml2-devel + - krb5 + - zlib + - ncurses + - libcxx >=19 + - python 3.14.* *_cp314 + - __osx >=11.0 + - libxcrypt >=4.4.36 + - krb5 >=1.22.2,<1.23.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - python_abi 3.14.* *_cp314 + - libzlib >=1.3.2,<2.0a0 + - readline >=8.3,<9.0a0 + - libcurl >=8.19.0,<9.0a0 + - openssl >=3.5.5,<4.0a0 + - ncurses >=6.5,<7.0a0 + - scitokens-cpp >=1.4.0,<2.0a0 + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/xrootd?source=hash-mapping + size: 3350018 + timestamp: 1774639191052 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda + sha256: b03433b13d89f5567e828ea9f1a7d5c5d697bf374c28a4168d71e9464f5dafac + md5: 78a0fe9e9c50d2c381e8ee47e3ea437d + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 83386 + timestamp: 1753484079473 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda + sha256: 8dd2ac25f0ba714263aac5832d46985648f4bfb9b305b5021d702079badc08d2 + md5: f1c0bce276210bed45a04949cfe8dc20 + depends: + - __osx >=11.0 + - libzlib 1.3.2 h8088a28_2 + license: Zlib + license_family: Other + purls: [] + size: 81123 + timestamp: 1774072974535 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 + md5: ab136e4c34e97f34fb621d2592a393d8 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 433413 + timestamp: 1764777166076 +- pypi: . + name: dirac-cwl + requires_dist: + - cwl-utils + - cwlformat + - cwltool + - dirac>=9.0.0 + - diracx-core>=0.0.8 + - diracx-api>=0.0.8 + - diracx-client>=0.0.8 + - diracx-cli>=0.0.8 + - lbprodrun + - lhcbdirac @ git+https://****@gitlab.cern.ch/jlisalab/LHCbDIRAC.git@modules-to-cwl-migration + - pydantic + - pyyaml + - typer + - referencing>=0.30 + - rich + - ruamel-yaml + - pytest>=6 ; extra == 'testing' + - pytest-mock ; extra == 'testing' + - mypy ; extra == 'testing' + requires_python: '>=3.11' +- pypi: git+https://gitlab.cern.ch/jlisalab/LHCbDIRAC.git?rev=modules-to-cwl-migration#ab38648ea4722414faff85666a0abf2200d9f99d + name: lhcbdirac + version: 0.1.dev20472+gab38648ea + requires_dist: + - dirac~=9.1 + - lbplatformutils>=4.6.1 + - lbenv>=2.3.0 + - lbprodrun + - lbcondawrappers + - requests + - pydantic>=2 + - uproot[xrootd]>=5.3 + - pyyaml + - xmltodict + - hyperscan + - levenshtein + - zstandard + - rich + - httpx + - beautifulsoup4 + - python-gitlab + - pandas + - numpy + - lhcbdiracx-client + - lhcbdiracx-core + - lhcbdiracx-cli + - signurlarity + - oracledb ; extra == 'server' + - dirac[server]~=9.1.0 ; extra == 'server' + - psutil ; extra == 'server' + - stomp-py ; extra == 'server' + - suds ; extra == 'server' + - mock ; extra == 'testing' + - pytest-mock ; extra == 'testing' + - pillow ; extra == 'testing' + - pytest ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/02/64/c86924898062e8217ed914a29458cfde9e4a9b80e4d4cbcca141983ba339/lbprodrun-1.12.4-py3-none-any.whl + name: lbprodrun + version: 1.12.4 + sha256: a2a408f00f31d124dd3c262db7d3aaa4cd022ec9c649b91b792c6be64b7b4c21 + requires_dist: + - click>=8.0 + - lbenv + - pydantic>=1.10 + - typer>=0.4.1 + - packaging + - pyyaml>=6.0 + - lbcondawrappers + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - zstandard ; extra == 'testing' + - mypy ; extra == 'mypy' + - types-pyyaml ; extra == 'mypy' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + name: h11 + version: 0.16.0 + sha256: 63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/04/f0/3e50840a88dce2f0ef15cee9bdd1977bf86e40dac05f180ffe55fa6beaa9/diracx_cli-0.1.0-py3-none-any.whl + name: diracx-cli + version: 0.1.0 + sha256: 3af0eec791b18d35eb3f898bd7ff47548ed14589f7c9185a418d18557b81e7cc + requires_dist: + - diraccfg + - diracx-api + - diracx-client + - diracx-core + - gitpython + - pydantic>=2.10 + - pyyaml + - rich + - typer>=0.15.4 + - diracx-testing ; extra == 'testing' + - types-pyyaml ; extra == 'types' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl + name: decorator + version: 5.3.1 + sha256: f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/0a/a3/11d7f34ebbf3231bc907a3e6d5ee051b14d034c1bc7b65a97d5cc00516df/wrapt-2.2.1-cp314-cp314-macosx_10_15_x86_64.whl + name: wrapt + version: 2.2.1 + sha256: 6f56a647e4eaf5f0ca40330fb070f566bdf9f7b0db89a1af20d71c28dcd7a0ab + requires_dist: + - pytest ; extra == 'dev' + - setuptools ; extra == 'dev' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + name: rich-argparse + version: 1.8.0 + sha256: d2a3ce7854654e2253c578763ab0a32f05016f23a55fadba7b9a91b6c0e92142 + requires_dist: + - rich>=11.0.0 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl + name: python-dotenv + version: 1.2.2 + sha256: 1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a + requires_dist: + - click>=5.0 ; extra == 'cli' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/0e/3b/86b1caa4dee10a99f4bf9521e623359341c5e50d05158fa10c275b2bd079/xxhash-3.7.0-cp314-cp314-macosx_10_15_x86_64.whl + name: xxhash + version: 3.7.0 + sha256: ab9dd2c83c4bbd63e422181a76f13502d049d3ddcac9a1bdc29196263d692bb8 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl + name: aioitertools + version: 0.13.0 + sha256: 0be0292b856f08dfac90e31f4739432f4cb6d7520ab9eb73e143f4f2fa5259be + requires_dist: + - typing-extensions>=4.0 ; python_full_version < '3.10' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + name: pyparsing + version: 3.3.2 + sha256: 850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d + requires_dist: + - railroad-diagrams ; extra == 'diagrams' + - jinja2 ; extra == 'diagrams' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + name: rdflib + version: 7.6.0 + sha256: 30c0a3ebf4c0e09215f066be7246794b6492e054e782d7ac2a34c9f70a15e0dd + requires_dist: + - berkeleydb>=18.1.0,<19.0.0 ; extra == 'berkeleydb' + - html5rdf>=1.2,<2 ; extra == 'html' + - httpx>=0.28.1,<0.29.0 ; extra == 'graphdb' or extra == 'rdf4j' + - isodate>=0.7.2,<1.0.0 ; python_full_version < '3.11' + - lxml>=4.3,<6.0 ; extra == 'lxml' + - networkx>=2,<4 ; extra == 'networkx' + - orjson>=3.9.14,<4 ; extra == 'orjson' + - pyparsing>=2.1.0,<4 + requires_python: '>=3.8.1' +- pypi: https://files.pythonhosted.org/packages/13/3c/b74cfd984cef560b900fb1a727af20352d89e1f06bf2e1114dd3f00f5f5a/wrapt-2.2.1-cp314-cp314-macosx_11_0_arm64.whl + name: wrapt + version: 2.2.1 + sha256: 64b7deeda4b70408e382328d8bbe52a256fe9bc63ae3db86d804608367e5422c + requires_dist: + - pytest ; extra == 'dev' + - setuptools ; extra == 'dev' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl + name: lxml + version: 6.1.1 + sha256: 19b7ab10b210b0b3ad7985d9ac4eb66ab09a90b20fe6e2f7ba55d01a234345d0 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + name: jmespath + version: 1.1.0 + sha256: a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/15/a3/7c8f704b8dc07dfe0a5d01c2edbfd88317aa8e5e3fa7c743eb7a085ae767/wrapt-2.2.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + name: wrapt + version: 2.2.1 + sha256: b9cf53ba90717db2e292401de290776c498d4bbfb0d4a559ca2895db8b9dcb5c + requires_dist: + - pytest ; extra == 'dev' + - setuptools ; extra == 'dev' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl + name: isodate + version: 0.7.2 + sha256: 28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/19/0f/f6121b90b86b9093c066889274d26a1de3f29969d45c2ed1ecbe2033cb78/cramjam-2.11.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: cramjam + version: 2.11.0 + sha256: 17eb39b1696179fb471eea2de958fa21f40a2cd8bf6b40d428312d5541e19dc4 + requires_dist: + - black==22.3.0 ; extra == 'dev' + - numpy ; extra == 'dev' + - pytest>=5.30 ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pytest-benchmark ; extra == 'dev' + - hypothesis==6.60.0 ; extra == 'dev' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/1a/03/49650a5b9c188f3a7401f73155254816dd2b3037a6ce2dcf27cc10f10162/rucio_clients-40.3.0-py3-none-any.whl + name: rucio-clients + version: 40.3.0 + sha256: 58d81265d57df5f1a2b7d5d12e2ec73d81180f96569da77480f6626160219b57 + requires_dist: + - click + - requests + - urllib3 + - dogpile-cache + - packaging + - tabulate + - jsonschema + - rich + - typing-extensions + - paramiko ; extra == 'ssh' + - kerberos ; extra == 'kerberos' + - pykerberos ; extra == 'kerberos' + - requests-kerberos ; extra == 'kerberos' + - python-swiftclient ; extra == 'swift' + - argcomplete ; extra == 'argcomplete' + - paramiko ; extra == 'sftp' + - python-magic ; extra == 'dumper' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1b/60/ff126095a42de830b585982371a2689db27353ee6ef5ed7e96124e8cb632/awkward-2.9.1-py3-none-any.whl + name: awkward + version: 2.9.1 + sha256: a9bbf1f8f47599e3b9878f7f8d46ec57655e8ef032ac20bc6c1023571d4ac2b2 + requires_dist: + - awkward-cpp==53 + - fsspec>=2022.11.0 + - importlib-metadata>=4.13.0 ; python_full_version < '3.12' + - numpy>=1.21.3 + - packaging + - typing-extensions>=4.1.0 ; python_full_version < '3.11' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl + name: msgpack + version: 1.1.2 + sha256: 6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl + name: cryptography + version: 48.0.1 + sha256: 3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1 + requires_dist: + - cffi>=2.0.0 ; platform_python_implementation != 'PyPy' + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + - bcrypt>=3.1.5 ; extra == 'ssh' + requires_python: '>=3.9,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/1c/1c/ab905d19a1349e847e37e02933316d17adfd1dd70b64d366885ab0bd959d/xattr-1.3.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl + name: xattr + version: 1.3.0 + sha256: c6992eb5da32c0a1375a9eeacfab15c66eebc8bd34be63ebd1eae80cc2f8bf03 + requires_dist: + - cffi>=1.16.0 + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + name: idna + version: '3.18' + sha256: 7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 + requires_dist: + - ruff>=0.6.2 ; extra == 'all' + - mypy>=1.11.2 ; extra == 'all' + - pytest>=8.3.2 ; extra == 'all' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl + name: annotated-doc + version: 0.0.4 + sha256: 571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl + name: gitpython + version: 3.1.50 + sha256: d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9 + requires_dist: + - gitdb>=4.0.1,<5 + - typing-extensions>=3.10.0.2 ; python_full_version < '3.10' + - coverage[toml] ; extra == 'test' + - ddt>=1.1.1,!=1.4.3 ; extra == 'test' + - mock ; python_full_version < '3.8' and extra == 'test' + - mypy==1.18.2 ; python_full_version >= '3.9' and extra == 'test' + - pre-commit ; extra == 'test' + - pytest>=7.3.1 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-instafail ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytest-sugar ; extra == 'test' + - typing-extensions ; python_full_version < '3.11' and extra == 'test' + - sphinx>=7.4.7,<8 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx-autodoc-typehints ; extra == 'doc' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl + name: msgpack + version: 1.1.2 + sha256: e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + name: ptyprocess + version: 0.7.0 + sha256: 4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 +- pypi: https://files.pythonhosted.org/packages/22/ed/9c45c468fd6c31df3fe0622394b1853c00b86545d1e297f3fb9fba1232ce/hyperscan-0.8.2-cp314-cp314-macosx_10_15_x86_64.whl + name: hyperscan + version: 0.8.2 + sha256: 2c579c1ebccc384d904de4a20e7a105df6041dd82adb54cb9acd5bb19b9b07dc + requires_python: '>=3.9,<4.0' +- pypi: https://files.pythonhosted.org/packages/23/09/2bd1ed7f8689b20e51727952cac8329d50c694dc32b2eba06ba5bc742b37/xxhash-3.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: xxhash + version: 3.7.0 + sha256: 24cc22070880cc57b830a65cde4e65fa884c6d9b28ae4803b5ee05911e7bafba + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/24/25/2201973529af2c954de0bb725323c3aaed6d7f0ceee8f550dec9185df013/typer-0.26.7-py3-none-any.whl + name: typer + version: 0.26.7 + sha256: 5c87cfbc5d34491c5346ebf49c23e18d56ccb863268d3a8d592b26087c2f5e58 + requires_dist: + - shellingham>=1.3.0 + - rich>=13.8.0 + - annotated-doc>=0.0.2 + - colorama ; sys_platform == 'win32' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/24/99/b8d3c04d811bc65539684402d10f14c7f64d7fde07650266ff9cf644c231/lhcbdiracx_core-0.1.0-py3-none-any.whl + name: lhcbdiracx-core + version: 0.1.0 + sha256: c59ab4acebcbc8b539a75ec30b266525f61f9d62679e978cf3a7ad37ad5a46c6 + requires_dist: + - diracx-core==0.1.0 + - lhcbdiracx-testing ; extra == 'testing' + - diracx-testing ; extra == 'testing' + - diracx-core[types]==0.1.0 ; extra == 'testing' + - diracx-core[testing]==0.1.0 ; extra == 'types' + - types-cachetools ; extra == 'types' + - types-pyyaml ; extra == 'types' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/24/b4/11f8a31d8b67cca3371e046db49baa7c0594d71eb40ac8121e2fc0888db0/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_x86_64.whl + name: bcrypt + version: 5.0.0 + sha256: f8429e1c410b4073944f03bd778a9e066e7fad723564a52ff91841d278dfc822 + requires_dist: + - pytest>=3.2.1,!=3.3.0 ; extra == 'tests' + - mypy ; extra == 'typecheck' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/25/b4/a9c880c251c321a6bcf21554678dedee04877cec12c0c4e6e739b4998c0e/lhcbdiracx_client-0.1.0-py3-none-any.whl + name: lhcbdiracx-client + version: 0.1.0 + sha256: a18ffb24248ccba4a206d7c34a7be47fe59f0fdc237977164f9396baabf9f4aa + requires_dist: + - lhcbdiracx-core + - diracx-client==0.1.0 + - types-requests ; extra == 'types' + - diracx-api[types]==0.1.0 ; extra == 'types' + - diracx-client[testing]==0.1.0 ; extra == 'testing' + - diracx-testing==0.1.0 ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/26/99/85a0cd9601506cda69c34761f0365f68922a92cef19b1f10639a2afcad82/awkward_cpp-53-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: awkward-cpp + version: '53' + sha256: ea82ac9f966ceea9e72c6ed7bd5a2b27fec0c519ccf4244e9b2c6a605eb74e27 + requires_dist: + - numpy>=1.21.3 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/27/cd/6e32a8bc8dea793c7015c11cceace07cb7a2d41839c694a8c3bba3cc28f1/dirac-9.1.11-py3-none-any.whl + name: dirac + version: 9.1.11 + sha256: f469b4cca7486a9b7466d5f90663f9815b936f31a44f4a02d243b0d8f426b94d + requires_dist: + - boto3>=1.35 + - botocore>=1.35 + - cachetools + - certifi + - cwltool + - diraccfg + - diraccommon==9.1.11 + - diracx-client>=0.0.1 + - diracx-core>=0.0.1 + - diracx-cli>=0.0.1 + - db12 + - fabric + - fts3 + - gfal2-python + - importlib-metadata>=4.4 + - importlib-resources + - invoke + - m2crypto>=0.36 + - packaging + - paramiko + - pexpect + - prompt-toolkit>=3 + - psutil + - pyasn1 + - pyasn1-modules + - pydantic>=2.4 + - pyparsing + - python-dateutil + - pytz + - requests + - rucio-clients>=34.4.2 + - sqlalchemy + - typing-extensions>=4.3.0 + - authlib>=1.0.0a2 + - pyjwt + - dominate + - zstandard + - xattr + - cmreshandler ; extra == 'server' + - opensearch-py ; extra == 'server' + - gitpython ; extra == 'server' + - ldap3 ; extra == 'server' + - apache-libcloud ; extra == 'server' + - matplotlib ; extra == 'server' + - mysqlclient ; extra == 'server' + - numpy ; extra == 'server' + - pillow ; extra == 'server' + - python-json-logger ; extra == 'server' + - pyyaml ; extra == 'server' + - stomp-py ; extra == 'server' + - suds ; extra == 'server' + - tornado~=5.1.1 ; extra == 'server' + - tornado-m2crypto ; extra == 'server' + - importlib-resources ; extra == 'server' + - hypothesis ; extra == 'testing' + - mock ; extra == 'testing' + - parameterized ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-mock ; extra == 'testing' + - pytest-rerunfailures ; extra == 'testing' + - pycodestyle ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/29/ce/ed422816fb30ffa3bc11597b30d5deca06b4a1388707a04215da73c65b53/levenshtein-0.27.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: levenshtein + version: 0.27.3 + sha256: ce3bbbe92172a08b599d79956182c6b7ab6ec8d4adbe7237417a363b968ad87b + requires_dist: + - rapidfuzz>=3.9.0,<4.0.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + name: httpx + version: 0.28.1 + sha256: d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad + requires_dist: + - anyio + - certifi + - httpcore==1.* + - idna + - brotli ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi ; platform_python_implementation != 'CPython' and extra == 'brotli' + - click==8.* ; extra == 'cli' + - pygments==2.* ; extra == 'cli' + - rich>=10,<14 ; extra == 'cli' + - h2>=3,<5 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + name: mistune + version: 3.2.1 + sha256: 78cdb0ba5e938053ccf63651b352508d2efa9411dc8810bfb05f2dc5140c0048 + requires_dist: + - typing-extensions ; python_full_version < '3.11' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/2b/76/7f1bfd6afff4c5e38e36a3c6d68eb5f4b7311ea80baf693db78d95b603c4/propcache-0.5.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: propcache + version: 0.5.2 + sha256: e00820e192c8dbebcafb383ebbf99030895f09905e7a0eb2e0340a0bcc2bc825 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/2d/e1/c2141f1840a41e07ad2db6f724945f8f8ff3065463899a22939152dd6e09/rapidfuzz-3.14.5-cp314-cp314-macosx_11_0_arm64.whl + name: rapidfuzz + version: 3.14.5 + sha256: 0298d357e2bc59d572da4db0bc631009b6f8f6c9bc8c11e99a12b833f16b6575 + requires_dist: + - numpy ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: msgpack + version: 1.1.2 + sha256: 180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/31/26/ef168b184a25701f9995e8fb7e503fafd7a99c1c77cda1bc1a26ea2ed486/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: sqlalchemy + version: 2.0.50 + sha256: 6c206aec519a2e7bd08abbfb33436e325fd22c632d9c21a9047e376ce241646e + requires_dist: + - importlib-metadata ; python_full_version < '3.8' + - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' + - typing-extensions>=4.6.0 + - greenlet>=1 ; extra == 'asyncio' + - mypy>=0.910 ; extra == 'mypy' + - pyodbc ; extra == 'mssql' + - pymssql ; extra == 'mssql-pymssql' + - pyodbc ; extra == 'mssql-pyodbc' + - mysqlclient>=1.4.0 ; extra == 'mysql' + - mysql-connector-python ; extra == 'mysql-connector' + - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' + - cx-oracle>=8 ; extra == 'oracle' + - oracledb>=1.0.1 ; extra == 'oracle-oracledb' + - psycopg2>=2.7 ; extra == 'postgresql' + - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' + - greenlet>=1 ; extra == 'postgresql-asyncpg' + - asyncpg ; extra == 'postgresql-asyncpg' + - psycopg2-binary ; extra == 'postgresql-psycopg2binary' + - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' + - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' + - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' + - pymysql ; extra == 'pymysql' + - greenlet>=1 ; extra == 'aiomysql' + - aiomysql>=0.2.0 ; extra == 'aiomysql' + - greenlet>=1 ; extra == 'aioodbc' + - aioodbc ; extra == 'aioodbc' + - greenlet>=1 ; extra == 'asyncmy' + - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' + - greenlet>=1 ; extra == 'aiosqlite' + - aiosqlite ; extra == 'aiosqlite' + - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' + - sqlcipher3-binary ; extra == 'sqlcipher' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: zstandard + version: 0.25.0 + sha256: e09bb6252b6476d8d56100e8147b803befa9a12cea144bbe629dd508800d1ad0 + requires_dist: + - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/32/4b/b99e37f88336009971405cbb7630610322ed6fbfa31e1d7ab3fbf3049a2d/invoke-2.2.1-py3-none-any.whl + name: invoke + version: 2.2.1 + sha256: 2413bc441b376e5cd3f55bb5d364f973ad8bdd7bf87e53c79de3c11bf3feecc8 + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/37/f9/f8497ef8b873a8bb2a750ee2a6c5f0fc22258e1acb6245fd237042a6c279/fabric-3.2.3-py3-none-any.whl + name: fabric + version: 3.2.3 + sha256: ce61917f4f398018337ce279b357650a3a74baecf3fdd53a5839013944af965e + requires_dist: + - invoke>=2.0,<3.0 + - paramiko>=2.4 + - decorator>=5 + - deprecated>=1.2 + - pytest>=7 ; extra == 'pytest' +- pypi: https://files.pythonhosted.org/packages/38/34/98a2f52245f4d47be93b580dae5f9861ef58977d73a79eb47c58f1ad1f3a/xmltodict-1.0.4-py3-none-any.whl + name: xmltodict + version: 1.0.4 + sha256: a4a00d300b0e1c59fc2bfccb53d7b2e88c32f200df138a0dd2229f842497026a + requires_dist: + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3a/98/ab4b5ed1b1b5cd973c8a3eb994c3a6aefb6ce6d399e21bb5f0316c33815c/yarl-1.24.2-cp314-cp314-macosx_10_15_x86_64.whl + name: yarl + version: 1.24.2 + sha256: a4f4d6cd615823bfc7fb7e9b5987c3f41666371d870d51058f77e2680fbe9630 + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/3b/56/99a7cf6ca8533695874cf804369221d03bf5e869a7e0b38acbf4dbe8deeb/cwlformat-2022.2.18-py3-none-any.whl + name: cwlformat + version: 2022.2.18 + sha256: d3e2dca192ce10e703ed4eb0bae26539db08d8ddd7c6a6fe9d1406c3f1b53cda + requires_dist: + - ruamel-yaml>=0.16.12 + - importlib-resources ; python_full_version < '3.7' + requires_python: '>=3.6.0' +- pypi: https://files.pythonhosted.org/packages/3d/36/9ab4f0b5c3d10df3aceaecf7e395cabe7fb7c7c004b2dc3f3cff0ef70fc3/xattr-1.3.0-cp314-cp314-macosx_11_0_arm64.whl + name: xattr + version: 1.3.0 + sha256: 88557c0769f64b1d014aada916c9630cfefa38b0be6c247eae20740d2d8f7b47 + requires_dist: + - cffi>=1.16.0 + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl + name: zstandard + version: 0.25.0 + sha256: e29f0cf06974c899b2c188ef7f783607dbef36da4c242eb6c82dcd8b512855e3 + requires_dist: + - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + name: schema-salad + version: 8.9.20260417192335 + sha256: dd7f5b1aa4d6f3ab61e7fd83d942af22d83afecc5f24f48b2027810efe6bd76f + requires_dist: + - requests>=1.0 + - ruamel-yaml>=0.17.6,<0.20 + - rdflib>=4.2.2,<8.0.0 + - mistune>=3,<3.3 + - cachecontrol[filecache]>=0.13.1,<0.15 + - mypy-extensions + - rich-argparse + - sphinx>=2.2 ; extra == 'docs' + - sphinx-rtd-theme>=1 ; extra == 'docs' + - pytest<10 ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinxcontrib-autoprogram ; extra == 'docs' + - black ; extra == 'pycodegen' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/3e/d0/f301f83ac8dbe53442c5a43f6a39016f94f754d7a9815a875b65e218a307/pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + name: pynacl + version: 1.6.2 + sha256: 8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c + requires_dist: + - cffi>=1.4.1 ; python_full_version < '3.9' and platform_python_implementation != 'PyPy' + - cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' + - pytest>=7.4.0 ; extra == 'tests' + - pytest-cov>=2.10.1 ; extra == 'tests' + - pytest-xdist>=3.5.0 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' + - sphinx<7 ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + name: requests-toolbelt + version: 1.0.0 + sha256: cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06 + requires_dist: + - requests>=2.0.1,<3.0.0 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/42/3d/ef4dcfffd22d27a61805d8ed9f7fb888495bc6aa88648fa07c1eaa5586b6/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + name: lxml + version: 6.1.1 + sha256: 9395002973c827b3ed67db77e6ec09f092919a587022174554096a269378fb13 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: charset-normalizer + version: 3.4.7 + sha256: bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/47/85/d06247fc88ba278227397da5604287e4762f130347dc968f6d205eb15ee6/sh-2.3.0-py3-none-any.whl + name: sh + version: 2.3.0 + sha256: 9b9c51f988fa91ba09e2a78edc48810d0b5a34c8cf383408e4e8c4352169f26e + requires_python: '>=3.8.1,<4.0' +- pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl + name: pyasn1-modules + version: 0.4.2 + sha256: 29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a + requires_dist: + - pyasn1>=0.6.1,<0.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/58/19/0380af745f151a1648657bbcef0fb49ac28bf09083d94498163ffd9b32dc/dominate-2.9.1-py2.py3-none-any.whl + name: dominate + version: 2.9.1 + sha256: cb7b6b79d33b15ae0a6e87856b984879927c7c2ebb29522df4c75b28ffd9b989 + requires_python: '>=3.4' +- pypi: https://files.pythonhosted.org/packages/58/3b/1cdec6772bdbaf7b25dab360c59f03cadf05492dd724c6540af905389b07/pandas-3.0.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: pandas + version: 3.0.3 + sha256: 9d71c63ae4ebdbf70209742096f1fc46a83a0613c99d4b23766cced9ff8cd62a + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl + name: certifi + version: 2026.5.20 + sha256: 3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/5a/36/17015b7bae2783f7bbde50a8bafdeb702802c080322204f1bfcae25b9e02/DB12-1.0.4-py3-none-any.whl + name: db12 + version: 1.0.4 + sha256: 2dbb96e77e43870e02f3dfe32bb9a4e0ad0a6e68db65bc2d5ac96b136469e2d3 + requires_python: '>=2.7' +- pypi: https://files.pythonhosted.org/packages/5b/db/325c6d7312d2200251c52323878281045aaffcb5586612296484e4280eaa/azure_core-1.41.0-py3-none-any.whl + name: azure-core + version: 1.41.0 + sha256: 522b4011e8180b1a3dcd2024396a4e7fe9ac37fb8597db47163d230b5efe892d + requires_dist: + - requests>=2.21.0 + - typing-extensions>=4.6.0 + - aiohttp>=3.0 ; extra == 'aio' + - opentelemetry-api~=1.26 ; extra == 'tracing' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5d/a0/7d793dce3fa811fe047d6ae2431c672364b462850c6235ae306c0efd025f/pyasn1-0.6.3-py3-none-any.whl + name: pyasn1 + version: 0.6.3 + sha256: a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl + name: bcrypt + version: 5.0.0 + sha256: 0c418ca99fd47e9c59a301744d63328f17798b5947b0f791e9af3c1c499c2d0a + requires_dist: + - pytest>=3.2.1,!=3.3.0 ; extra == 'tests' + - mypy ; extra == 'typecheck' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl + name: soupsieve + version: 2.8.4 + sha256: e7e6b0769c8f51ed59acab6e994b00621096cfb1c640a7509295987388fbaf65 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5f/e8/2e6301567e6debaad6abae0e217428471651ce877537b7095b6a8e7d8cd2/fts3-3.14.2-py3-none-any.whl + name: fts3 + version: 3.14.2 + sha256: 28528f3656f156dd7cddb02ce82bb88cbaa8ab635d899aa2b97aa838d080bfd4 + requires_dist: + - m2crypto + - requests + - setuptools>=39 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + name: aiohappyeyeballs + version: 2.6.2 + sha256: 4708045e2d7a6c6bdf8aafa8ed39649eaf926a4543b54560659129e3365953c4 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl + name: propcache + version: 0.5.2 + sha256: 97797ebb098e670a2f92dd66f32897e30d7615b14e7f59711de23e30a9072539 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + name: pandas + version: 3.0.3 + sha256: bab900348131a7db1f69a7309ef141fd5680f1487094193bcbbb61791573bf8f + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/69/8f/cb844e6a5079bfecacce9c96ed0db9a15294568079bfa8a89b0eb2643c85/signurlarity-0.3.0-py3-none-any.whl + name: signurlarity + version: 0.3.0 + sha256: 40babb4d09cc69e50a3b72cc47c9bb5b10fc2651473bbfd2fb5822e41c1cdd15 + requires_dist: + - cryptography>=41.0.0 + - httpx>=0.24.0 + - orjson + - aiobotocore>=2.15 ; extra == 'testing' + - botocore>=1.35 ; extra == 'testing' + - httpx ; extra == 'testing' + - moto[server] ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-asyncio ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + - pytest-xdist ; extra == 'testing' + - rich ; extra == 'testing' + - ty ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/6d/10/b37ac718c5903758fa9058a5182026a4f3b65443196b82c7840389ea0dbd/lbplatformutils-4.6.1-py3-none-any.whl + name: lbplatformutils + version: 4.6.1 + sha256: 92e6dd273e77873ba6cbd302c8b29fde71e5dbb7706f05856e362fb44fd9eee8 + requires_python: '>=3.7,<4.0' +- pypi: https://files.pythonhosted.org/packages/74/03/d426348a5f13514182c1d1afab2285ec25a94bacc8d2f8d2cc627496754a/uproot-5.7.4-py3-none-any.whl + name: uproot + version: 5.7.4 + sha256: 497b7db1592f62edf05404884ec235f6cb804a50382a62c8df5f885d138c3695 + requires_dist: + - awkward>=2.8.2 + - cramjam>=2.5.0 + - fsspec!=2026.2.0 + - numpy + - packaging + - typing-extensions>=4.1.0 ; python_full_version < '3.11' + - xxhash + - kvikio-cu12 ; extra == 'gds-cu12' + - nvidia-nvcomp-cu12 ; extra == 'gds-cu12' + - kvikio-cu13 ; extra == 'gds-cu13' + - nvidia-nvcomp-cu13 ; extra == 'gds-cu13' + - aiohttp ; extra == 'http' + - s3fs ; extra == 's3' + - fsspec-xrootd>=0.5.0 ; extra == 'xrootd' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/74/50/1b44d393baa94c0c6511b7305fc46c0b83433e4cf90bd7d553e115035b3e/awkward_cpp-53-cp314-cp314-macosx_10_15_x86_64.whl + name: awkward-cpp + version: '53' + sha256: f2196c68ecc1e5ab24cc16fc03344752f7df87fd925a56382093b32e6f3ba61b + requires_dist: + - numpy>=1.21.3 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/74/6e/f49568ec5e39dbea953d4ace39aebe7d732a3fefa4e2c0f10c5f966d52d5/lhcbdiracx_cli-0.1.0-py3-none-any.whl + name: lhcbdiracx-cli + version: 0.1.0 + sha256: 88caf36148898db72f4232f1ea461b6aa35b7fb220de60b2bb8f019875ed6f8a + requires_dist: + - lhcbdiracx-core + - lhcbdiracx-client + - lhcbdiracx-api + - diracx-cli==0.1.0 + - diracx-cli[types]==0.1.0 ; extra == 'types' + - diracx-cli[testing]==0.1.0 ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl + name: argcomplete + version: 3.6.3 + sha256: f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce + requires_dist: + - coverage ; extra == 'test' + - mypy ; extra == 'test' + - pexpect ; extra == 'test' + - ruff ; extra == 'test' + - wheel ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/76/2c/bb6ef359e007fe7b6b3195b68a94f4dd3ecd1885ee337ee8fbd4df55996f/levenshtein-0.27.3-cp314-cp314-macosx_11_0_arm64.whl + name: levenshtein + version: 0.27.3 + sha256: 8e5037c4a6f97a238e24aad6f98a1e984348b7931b1b04b6bd02bd4f8238150d + requires_dist: + - rapidfuzz>=3.9.0,<4.0.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/76/3e/c0b690253f0b82d86e99949af13533363acfb5432ecb5d53dd5b3bce9c34/orjson-3.11.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.11.9 + sha256: aaea64f3f467d22e70eeed68bdccb3bc4f83f650446c4a03c59f2cba28a108db + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: greenlet + version: 3.5.1 + sha256: 2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c + requires_dist: + - sphinx ; extra == 'docs' + - furo ; extra == 'docs' + - objgraph ; extra == 'test' + - psutil ; extra == 'test' + - setuptools ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + name: annotated-types + version: 0.7.0 + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_full_version < '3.9' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl + name: pydot + version: 4.0.1 + sha256: 869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6 + requires_dist: + - pyparsing>=3.1.0 + - ruff ; extra == 'lint' + - mypy ; extra == 'types' + - pydot[lint] ; extra == 'dev' + - pydot[types] ; extra == 'dev' + - chardet ; extra == 'dev' + - parameterized ; extra == 'dev' + - pydot[dev] ; extra == 'tests' + - tox ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-xdist[psutil] ; extra == 'tests' + - zest-releaser[recommended] ; extra == 'release' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + name: httpcore + version: 1.0.9 + sha256: 2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 + requires_dist: + - certifi + - h11>=0.16 + - anyio>=4.0,<5.0 ; extra == 'asyncio' + - h2>=3,<5 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - trio>=0.22.0,<1.0 ; extra == 'trio' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + name: urllib3 + version: 2.7.0 + sha256: 9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 + requires_dist: + - brotli>=1.2.0 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=1.2.0.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2>=4,<5 ; extra == 'h2' + - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' + - backports-zstd>=1.0.0 ; python_full_version < '3.14' and extra == 'zstd' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/81/41/aa3ffb3355e62e1bf91f6599b3092e866bc88487a07c524004943c7676df/rapidfuzz-3.14.5-cp314-cp314-macosx_10_15_x86_64.whl + name: rapidfuzz + version: 3.14.5 + sha256: 1a31cc6d7d03e7318a0974c038959c59e19c752b81115f2e9138b3331cd64d45 + requires_dist: + - numpy ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/81/56/28406aa770148a0ce2862ed93676da2aaead45f9d4259fc3bb8dd850928e/diraccommon-9.1.11-py3-none-any.whl + name: diraccommon + version: 9.1.11 + sha256: 9648bc24c817c528d01cf4810d56982078e90081c6f3ee2f146d40e1ab6a97ac + requires_dist: + - diraccfg + - pydantic>=2.0.0 + - typing-extensions>=4.0.0 + - pytest-cov>=4.0.0 ; extra == 'testing' + - pytest>=7.0.0 ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + name: rich + version: 15.0.0 + sha256: 33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb + requires_dist: + - ipywidgets>=7.5.1,<9 ; extra == 'jupyter' + - markdown-it-py>=2.2.0 + - pygments>=2.13.0,<3.0.0 + requires_python: '>=3.9.0' +- pypi: https://files.pythonhosted.org/packages/82/5b/eadf6d45de38d30ab603f49393b6cd2cbe7e233af8cf90197e32782b68a9/paramiko-5.0.0-py3-none-any.whl + name: paramiko + version: 5.0.0 + sha256: b7044611c30140d9a75261653210e2002977b71a0497ff3ba0d98d7edbf62f7c + requires_dist: + - bcrypt>=3.2 + - cryptography>=3.3 + - invoke>=2.0 + - pynacl>=1.5 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + name: prompt-toolkit + version: 3.0.52 + sha256: 9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 + requires_dist: + - wcwidth + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl + name: deprecated + version: 1.3.1 + sha256: 597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f + requires_dist: + - wrapt>=1.10,<3 + - inspect2 ; python_full_version < '3' + - tox ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - bump2version<1 ; extra == 'dev' + - setuptools ; python_full_version >= '3.12' and extra == 'dev' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/85/dd/904873250a6554fbae40cddbf9198e3cc37a2f1319d5e1a5ce82fe269c17/s3transfer-0.17.1-py3-none-any.whl + name: s3transfer + version: 0.17.1 + sha256: 5b9827d1044159bbb01b86ef8902760ea39281927f5de31de75e1d657177bf4c + requires_dist: + - botocore>=1.37.4,<2.0a0 + - botocore[crt]>=1.37.4,<2.0a0 ; extra == 'crt' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/86/54/effdcc3c0ff7a08037889200e148ebe94c16c4f653be078c7b3675955df1/pandas-3.0.3-cp314-cp314-macosx_10_15_x86_64.whl + name: pandas + version: 3.0.3 + sha256: 3650109c0f22879df8bd6179ab9ee3d7f1d1d4e7e0094a3f0032d9f51e2e64ac + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/87/a4/afc9dddc6b14fb3d52a900cd9b4c77770128edc4b07e576034bbd0ffd290/LbCondaWrappers-0.5.2-py3-none-any.whl + name: lbcondawrappers + version: 0.5.2 + sha256: 4200c89661017bc28b910aa040092970c357f4130375d84ec14a258adf8318e0 + requires_dist: + - lb-telemetry>=0.5.0 + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + name: beautifulsoup4 + version: 4.15.0 + sha256: d6f88de62e1d4e38ecb1077eb9724cd0eff29d2a08ca16a401e9b9e93f117cf9 + requires_dist: + - soupsieve>=1.6.1 + - typing-extensions>=4.0.0 + - cchardet ; extra == 'cchardet' + - chardet ; extra == 'chardet' + - charset-normalizer ; extra == 'charset-normalizer' + - html5lib ; extra == 'html5lib' + - lxml ; extra == 'lxml' + requires_python: '>=3.7.0' +- pypi: https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pydantic-core + version: 2.46.4 + sha256: 7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl + name: greenlet + version: 3.5.1 + sha256: d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07 + requires_dist: + - sphinx ; extra == 'docs' + - furo ; extra == 'docs' + - objgraph ; extra == 'test' + - psutil ; extra == 'test' + - setuptools ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl + name: importlib-resources + version: 7.1.0 + sha256: 1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1 + requires_dist: + - zipp>=3.1.0 ; python_full_version < '3.10' + - pytest>=6,!=8.1.* ; extra == 'test' + - zipp>=3.17 ; extra == 'test' + - jaraco-test>=5.4 ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.14 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=3.4 ; extra == 'enabler' + - pytest-mypy>=1.0.1 ; platform_python_implementation != 'PyPy' and extra == 'type' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl + name: cachetools + version: 7.1.4 + sha256: 323dc4127934744db5b54eb4924482d7edafbf9554e820d1531c2e08c0e4ef54 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl + name: zstandard + version: 0.25.0 + sha256: 05df5136bc5a011f33cd25bc9f506e7426c0c9b3f9954f056831ce68f3b6689f + requires_dist: + - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl + name: pydantic-core + version: 2.46.4 + sha256: 428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + name: cwl-utils + version: '0.42' + sha256: 3ded53f626268d1113895f59e91a6ce2d8a1568823b4db506b4814ae2e4904c4 + requires_dist: + - cwl-upgrader>=1.2.3 + - packaging + - rdflib + - requests + - ruamel-yaml>=0.17.6,<0.20 + - schema-salad>=8.8.20250205075315,<9 + - typing-extensions>=4.10.0 + - cwlformat ; extra == 'pretty' + - cwlformat ; extra == 'testing' + - cwltool ; extra == 'testing' + - jsonschema>=4.21.1 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-mock>=1.10.0 ; extra == 'testing' + - pytest-xdist[psutil] ; extra == 'testing' + - pytest<10 ; extra == 'testing' + - udocker ; extra == 'testing' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl + name: frozenlist + version: 1.8.0 + sha256: 119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8e/eb/5da01e356015aee6ecfa1187ced87aef51364e306f5e695dd52719bf0e78/orjson-3.11.9-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.11.9 + sha256: b6ef1979adc4bc243523f1a2ba91418030a8e29b0a99cbe7e0e2d6807d4dce6e + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + name: prov + version: 1.5.1 + sha256: 5c930cbbd05424aa3066d336dc31d314dd9fa0280caeab064288e592ed716bea + requires_dist: + - lxml + - networkx + - python-dateutil + - rdflib>=4.2.1 + - six>=1.9.0 + - pydot>=1.2.0 ; extra == 'dot' +- pypi: https://files.pythonhosted.org/packages/90/5f/85535dfb3cfd6442d66d1df1694062c5d6df02f895329e7e120b2a3d2b8b/aiobotocore-3.7.0-py3-none-any.whl + name: aiobotocore + version: 3.7.0 + sha256: 680bde7c64679a821a9312641b759d9497f790ba8b2e88c6959e6273ee765b8e + requires_dist: + - aiohttp>=3.12.0,<4.0.0 + - aioitertools>=0.5.1,<1.0.0 + - botocore>=1.42.90,<1.43.1 + - python-dateutil>=2.1,<3.0.0 + - jmespath>=0.7.1,<2.0.0 + - multidict>=6.0.0,<7.0.0 + - typing-extensions>=4.14.0,<5.0.0 ; python_full_version < '3.11' + - wrapt>=1.10.10,<3.0.0 + - httpx>=0.25.1,<0.29 ; extra == 'httpx' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/93/cf/5630b5e4be7d2e6bee8efe83865c925221103cf0221303b104ce134b01e2/lxml-6.1.1-cp314-cp314-macosx_10_15_x86_64.whl + name: lxml + version: 6.1.1 + sha256: c08e5c694306507275f2290073350c4f32e383db15213b2c69e7ff39c1193840 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + name: charset-normalizer + version: 3.4.7 + sha256: c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + name: tabulate + version: 0.10.0 + sha256: f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3 + requires_dist: + - wcwidth ; extra == 'widechars' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/9d/0a/03192e78071cfb86e6d8ceae0e5dcec4bacf0fd734755263aabd01532e50/xattr-1.3.0-cp314-cp314-macosx_10_15_x86_64.whl + name: xattr + version: 1.3.0 + sha256: 95f1e14a4d9ca160b4b78c527bf2bac6addbeb0fd9882c405fc0b5e3073a8752 + requires_dist: + - cffi>=1.16.0 + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + name: pexpect + version: 4.9.0 + sha256: 7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 + requires_dist: + - ptyprocess>=0.5 +- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + name: networkx + version: 3.6.1 + sha256: d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762 + requires_dist: + - asv ; extra == 'benchmarking' + - virtualenv ; extra == 'benchmarking' + - numpy>=1.25 ; extra == 'default' + - scipy>=1.11.2 ; extra == 'default' + - matplotlib>=3.8 ; extra == 'default' + - pandas>=2.0 ; extra == 'default' + - pre-commit>=4.1 ; extra == 'developer' + - mypy>=1.15 ; extra == 'developer' + - sphinx>=8.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.16 ; extra == 'doc' + - sphinx-gallery>=0.18 ; extra == 'doc' + - numpydoc>=1.8.0 ; extra == 'doc' + - pillow>=10 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - osmnx>=2.0.0 ; extra == 'example' + - momepy>=0.7.2 ; extra == 'example' + - contextily>=1.6 ; extra == 'example' + - seaborn>=0.13 ; extra == 'example' + - cairocffi>=1.7 ; extra == 'example' + - igraph>=0.11 ; extra == 'example' + - scikit-learn>=1.5 ; extra == 'example' + - iplotx>=0.9.0 ; extra == 'example' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.14 ; extra == 'extra' + - pydot>=3.0.1 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - build>=0.10 ; extra == 'release' + - twine>=4.0 ; extra == 'release' + - wheel>=0.40 ; extra == 'release' + - changelist==0.5 ; extra == 'release' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + - pytest-xdist>=3.0 ; extra == 'test' + - pytest-mpl ; extra == 'test-extras' + - pytest-randomly ; extra == 'test-extras' + requires_python: '>=3.11,!=3.14.1' +- pypi: https://files.pythonhosted.org/packages/9f/90/279f55fff9481f9e0424c3c97b24dc10004ec8d8f98ddf5afd07a7b79194/diraccfg-1.0.1-py2.py3-none-any.whl + name: diraccfg + version: 1.0.1 + sha256: 5103e25208fd41c623a72ddd5775416633f97b376531c86fb4e79282871db218 + requires_dist: + - pytest>=4.6 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pylint>=1.6.5 ; extra == 'testing' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a0/18/938441025db6769a3464596b2410af3afde0b21eb2f204c6f766f68af4bd/aiohttp-3.14.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: aiohttp + version: 3.14.1 + sha256: 634e385930fb6d2d479cf3aa66515955863b77a5e3c2b5894ca259a25b308602 + requires_dist: + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl + name: gitdb + version: 4.0.12 + sha256: 67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf + requires_dist: + - smmap>=3.0.1,<6 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + name: requests + version: 2.34.2 + sha256: 2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 + requires_dist: + - charset-normalizer>=2,<4 + - idna>=2.5,<4 + - urllib3>=1.26,<3 + - certifi>=2023.5.7 + - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' + - chardet>=3.0.2,<8 ; extra == 'use-chardet-on-py3' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl + name: frozenlist + version: 1.8.0 + sha256: 4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl + name: pyjwt + version: 2.13.0 + sha256: 66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728 + requires_dist: + - typing-extensions>=4.0 ; python_full_version < '3.11' + - cryptography>=3.4.0 ; extra == 'crypto' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + name: coloredlogs + version: 15.0.1 + sha256: 612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 + requires_dist: + - humanfriendly>=9.1 + - capturer>=2.4 ; extra == 'cron' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + name: frozenlist + version: 1.8.0 + sha256: cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/aa/c1/dd70be50613b74e9b6cc980f94d1ee6fe1cc297369915cae84c5077f28d6/fsspec_xrootd-0.5.4-py3-none-any.whl + name: fsspec-xrootd + version: 0.5.4 + sha256: ec80027786dd675923c5b5da555685a35fffcb8aa16fce9096646b124c93c5ba + requires_dist: + - fsspec + - pytest>=6 ; extra == 'dev' + - sphinx>=4.0 ; extra == 'docs' + - myst-parser>=0.13 ; extra == 'docs' + - sphinx-book-theme>=0.1.0 ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - pytest>=6 ; extra == 'test' + - pytest-rerunfailures ; extra == 'test' + - pytest-timeout ; extra == 'test' + - xrootd>=6.0.0 ; extra == 'xrootd' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + name: cwl-upgrader + version: 1.2.15 + sha256: 42ae4546a433a7439f56282942e3a9369d08d9a2ad31d86cddb1bb298e28640d + requires_dist: + - ruamel-yaml>=0.16.0,<0.20 + - schema-salad + - pytest<10 ; extra == 'testing' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl + name: pydantic-core + version: 2.46.4 + sha256: 23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462 + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl + name: pydantic-settings + version: 2.14.1 + sha256: 6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de + requires_dist: + - pydantic>=2.7.0 + - python-dotenv>=0.21.0 + - typing-inspection>=0.4.0 + - boto3>=1.35.0 ; extra == 'aws-secrets-manager' + - types-boto3[secretsmanager] ; extra == 'aws-secrets-manager' + - azure-identity>=1.16.0 ; extra == 'azure-key-vault' + - azure-keyvault-secrets>=4.8.0 ; extra == 'azure-key-vault' + - google-cloud-secret-manager>=2.23.1 ; extra == 'gcp-secret-manager' + - tomli>=2.0.1 ; extra == 'toml' + - pyyaml>=6.0.1 ; extra == 'yaml' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b0/57/dea471da24ceac6de8c3dc5d37e4ddde57a5c340d6bac90010898734de34/gitlint_core-0.19.1-py3-none-any.whl + name: gitlint-core + version: 0.19.1 + sha256: f41effd1dcbc06ffbfc56b6888cce72241796f517b46bd9fd4ab1b145056988c + requires_dist: + - arrow>=1 + - click>=8 + - importlib-metadata>=1.0 ; python_full_version < '3.8' + - sh>=1.13.0 ; sys_platform != 'win32' + - arrow==1.2.3 ; extra == 'trusted-deps' + - click==8.1.3 ; extra == 'trusted-deps' + - sh==1.14.3 ; sys_platform != 'win32' and extra == 'trusted-deps' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/b0/7d/58320dd3c2c814e473afa91fd50e423dab22654fd891b946818243d1508b/diracx_api-0.1.0-py3-none-any.whl + name: diracx-api + version: 0.1.0 + sha256: df290aea3a85b9e460a81411fc9992537314d89d4e787246110dde3a12e70ed9 + requires_dist: + - diracx-client + - diracx-core + - httpx + - zstandard + - diracx-testing ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/b1/af/1c3540dbdccb85fca0b0bbc58cdaf514d0a830d7e0302b2059a6c627b172/python_gitlab-8.4.0-py3-none-any.whl + name: python-gitlab + version: 8.4.0 + sha256: 102c747d9c107820e215cc5913627388001592a9a3ba1b43fc341a40f6943e72 + requires_dist: + - requests>=2.32.0 + - requests-toolbelt>=1.0.0 + - argcomplete>=1.10.0,<3 ; extra == 'autocompletion' + - pyyaml>=6.0.1 ; extra == 'yaml' + - gql[httpx]>=3.5.0,<5 ; extra == 'graphql' + requires_python: '>=3.10.0' +- pypi: https://files.pythonhosted.org/packages/b3/00/fa62404c3e347f946faa13aa21085205f9cc06ad17671e37f81a51662ae8/joserfc-1.7.1-py3-none-any.whl + name: joserfc + version: 1.7.1 + sha256: b3e3d655612e2e1ef67b2600f2f420e12e537b020208fab1761fad647319c164 + requires_dist: + - cryptography>=45.0.1 + - pycryptodome ; extra == 'drafts' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + name: mdurl + version: 0.1.2 + sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/b3/68/aa714515d65090fcbcc9a1f3debd5a644b14aad11e59238f42f00bd4b298/logzero-1.7.0-py2.py3-none-any.whl + name: logzero + version: 1.7.0 + sha256: 23eb1f717a2736f9ab91ca0d43160fd2c996ad49ae6bad34652d47aba908769d + requires_dist: + - colorama ; sys_platform == 'win32' +- pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + name: markdown-it-py + version: 4.2.0 + sha256: 9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a + requires_dist: + - mdurl~=0.1 + - psutil ; extra == 'benchmarking' + - pytest ; extra == 'benchmarking' + - pytest-benchmark ; extra == 'benchmarking' + - commonmark~=0.9 ; extra == 'compare' + - markdown~=3.4 ; extra == 'compare' + - mistletoe~=1.0 ; extra == 'compare' + - mistune~=3.0 ; extra == 'compare' + - panflute~=2.3 ; extra == 'compare' + - markdown-it-pyrs ; extra == 'compare' + - linkify-it-py>=1,<3 ; extra == 'linkify' + - mdit-py-plugins>=0.5.0 ; extra == 'plugins' + - gprof2dot ; extra == 'profiling' + - mdit-py-plugins>=0.5.0 ; extra == 'rtd' + - myst-parser ; extra == 'rtd' + - pyyaml ; extra == 'rtd' + - sphinx ; extra == 'rtd' + - sphinx-copybutton ; extra == 'rtd' + - sphinx-design ; extra == 'rtd' + - sphinx-book-theme~=1.0 ; extra == 'rtd' + - jupyter-sphinx ; extra == 'rtd' + - ipykernel ; extra == 'rtd' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + - pytest-timeout ; extra == 'testing' + - requests ; extra == 'testing' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b3/a0/3e6a0b1c1ea6bec76f71473727ef27abf3cd40e9709b3ebcbfbcfaae6f79/boto3-1.43.0-py3-none-any.whl + name: boto3 + version: 1.43.0 + sha256: 8ebe03754a4b73a5cb6ec2f14cca03ac33bd4760d0adea53da4724845130258b + requires_dist: + - botocore>=1.43.0,<1.44.0 + - jmespath>=0.7.1,<2.0.0 + - s3transfer>=0.17.0,<0.18.0 + - botocore[crt]>=1.21.0,<2.0a0 ; extra == 'crt' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b5/06/c5a52f419b5d8972f8d46a7577476090d8e3263ff589ce40b5ca4968d5be/propcache-0.5.2-cp314-cp314-macosx_10_15_x86_64.whl + name: propcache + version: 0.5.2 + sha256: fc88b26f08d634f7bc819a7852e5214f5802641ab8d9fd5326892292eee1993e requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl - name: tabulate - version: 0.9.0 - sha256: 024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f - requires_dist: - - wcwidth ; extra == 'widechars' - requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac - md5: cffd3bdd58090148f4cfcd831f4b26ab - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - constrains: - - xorg-libx11 >=1.8.12,<2.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3301196 - timestamp: 1769460227866 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b - md5: 6e6efb7463f8cef69dbcb4c2205bf60e - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3282953 - timestamp: 1769460532442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 - md5: a9d86bc62f39b94c4661716624eb21b0 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3127137 - timestamp: 1769460817696 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - sha256: 62940c563de45790ba0f076b9f2085a842a65662268b02dd136a8e9b1eaf47a8 - md5: 72e780e9aa2d0a3295f59b1874e3768b - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/tomli?source=compressed-mapping - size: 21453 - timestamp: 1768146676791 -- pypi: https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl - name: typer - version: 0.21.1 - sha256: 7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01 +- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + name: six + version: 1.17.0 + sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl + name: ruamel-yaml + version: 0.19.1 + sha256: 27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93 requires_dist: - - click>=8.0.0 - - typing-extensions>=3.7.4.3 - - shellingham>=1.3.0 - - rich>=10.11.0 + - ruamel-yaml-clib ; platform_python_implementation == 'CPython' and extra == 'oldlibyaml' + - ruamel-yaml-clibz>=0.3.7 ; platform_python_implementation == 'CPython' and extra == 'libyaml' + - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' + - ryd ; extra == 'docs' + - mercurial>5.7 ; extra == 'docs' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - name: typing-inspection - version: 0.4.2 - sha256: 4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 +- pypi: https://files.pythonhosted.org/packages/ba/24/c65fe1aef4e0681cb17ca136eb0f3e20a47d3941a306bc9d636938029ca5/lb_telemetry-0.5.0-py3-none-any.whl + name: lb-telemetry + version: 0.5.0 + sha256: 45c2ef5a5bdb98446f0a57b71742ef76b0a3add44e58ab059761ccc5d6fd1bbf requires_dist: - - typing-extensions>=4.12.0 - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 - md5: 0caa1af407ecff61170c9437a808404d - depends: - - python >=3.10 - - python - license: PSF-2.0 - license_family: PSF - purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 51692 - timestamp: 1756220668932 -- pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl - name: tzdata - version: '2025.3' - sha256: 06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1 - requires_python: '>=2' -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c - md5: ad659d0a2b3e47e38d829aa8cad2d610 - license: LicenseRef-Public-Domain - purls: [] - size: 119135 - timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py314h9891dd4_0.conda - sha256: c84034056dc938c853e4f61e72e5bd37e2ec91927a661fb9762f678cbea52d43 - md5: 5d3c008e54c7f49592fca9c32896a76f - depends: - - __glibc >=2.17,<3.0.a0 - - cffi - - libgcc >=14 - - libstdcxx >=14 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 15004 - timestamp: 1769438727085 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py314h473ef84_0.conda - sha256: a77214fabb930c5332dece5407973c0c1c711298bf687976a0b6a9207b758e12 - md5: 08a26dd1ba8fc9681d6b5256b2895f8e - depends: - - __osx >=10.13 - - cffi - - libcxx >=19 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 14286 - timestamp: 1769439103231 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py314h6cfcd04_0.conda - sha256: 033dbf9859fe58fb85350cf6395be6b1346792e1766d2d5acab538a6eb3659fb - md5: e229f444fbdb28d8c4f40e247154d993 - depends: - - __osx >=11.0 - - cffi - - libcxx >=19 - - python >=3.14,<3.15.0a0 - - python >=3.14,<3.15.0a0 *_cp314 - - python_abi 3.14.* *_cp314 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 14884 - timestamp: 1769439056290 -- pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl - name: urllib3 - version: 2.6.3 - sha256: bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4 + - lbplatformutils + - logzero + - requests + - mypy ; extra == 'dev' + - mypy-extensions ; extra == 'dev' + - pre-commit ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - ruff ; extra == 'dev' + - types-requests ; extra == 'dev' +- pypi: https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl + name: dnspython + version: 2.8.0 + sha256: 01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af requires_dist: - - brotli>=1.2.0 ; platform_python_implementation == 'CPython' and extra == 'brotli' - - brotlicffi>=1.2.0.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' - - h2>=4,<5 ; extra == 'h2' - - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' - - backports-zstd>=1.0.0 ; python_full_version < '3.14' and extra == 'zstd' - requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - sha256: fa0a21fdcd0a8e6cf64cc8cd349ed6ceb373f09854fd3c4365f0bc4586dccf9a - md5: 6b0259cea8ffa6b66b35bae0ca01c447 - depends: - - distlib >=0.3.7,<1 - - filelock >=3.20.1,<4 - - platformdirs >=3.9.1,<5 - - python >=3.10 - - typing_extensions >=4.13.2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/virtualenv?source=hash-mapping - size: 4404318 - timestamp: 1768069793682 -- conda: https://conda.anaconda.org/conda-forge/linux-64/voms-2.1.0rc3-h25bd2b9_0.conda - sha256: e468adc4ee9de5abbf421d8b4e9463e258840e6e59ded58afe016f28d5aa931c - md5: 5e6a396c2fb7f88c0a87d6fa360e40c7 - depends: - - expat >=2.5.0,<3.0a0 - - gsoap >=2.8.123,<2.8.124.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.0.8,<4.0a0 - constrains: - - voms-clients ==9999999 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 461879 - timestamp: 1676298873445 -- pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl + - black>=25.1.0 ; extra == 'dev' + - coverage>=7.0 ; extra == 'dev' + - flake8>=7 ; extra == 'dev' + - hypercorn>=0.17.0 ; extra == 'dev' + - mypy>=1.17 ; extra == 'dev' + - pylint>=3 ; extra == 'dev' + - pytest-cov>=6.2.0 ; extra == 'dev' + - pytest>=8.4 ; extra == 'dev' + - quart-trio>=0.12.0 ; extra == 'dev' + - sphinx-rtd-theme>=3.0.0 ; extra == 'dev' + - sphinx>=8.2.0 ; extra == 'dev' + - twine>=6.1.0 ; extra == 'dev' + - wheel>=0.45.0 ; extra == 'dev' + - cryptography>=45 ; extra == 'dnssec' + - h2>=4.2.0 ; extra == 'doh' + - httpcore>=1.0.0 ; extra == 'doh' + - httpx>=0.28.0 ; extra == 'doh' + - aioquic>=1.2.0 ; extra == 'doq' + - idna>=3.10 ; extra == 'idna' + - trio>=0.30 ; extra == 'trio' + - wmi>=1.5.1 ; sys_platform == 'win32' and extra == 'wmi' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ba/b1/5297bb6a7df4782f7605bffc43b31f5044070935fbbcaa6c705a07e6ac65/yarl-1.24.2-cp314-cp314-macosx_11_0_arm64.whl + name: yarl + version: 1.24.2 + sha256: 0c3063e5c0a8e8e62fae6c2596fa01da1561e4cd1da6fec5789f5cf99a8aefd8 + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl name: wcwidth - version: 0.5.3 - sha256: d584eff31cd4753e1e5ff6c12e1edfdb324c995713f75d26c29807bb84bf649e + version: 0.8.1 + sha256: f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/95/a0/1c2396e272f91efe6b16a6a8bce7ad53856c8f9ae4f34ceaa711d63ec9e1/wrapt-2.1.1-cp314-cp314-macosx_10_15_x86_64.whl - name: wrapt - version: 2.1.1 - sha256: 9aa1765054245bb01a37f615503290d4e207e3fd59226e78341afb587e9c1236 +- pypi: https://files.pythonhosted.org/packages/be/7b/4845bbf88e94586ec47a432da4e9107e3fc3ce37eb412b1398630a37f7dd/pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl + name: pynacl + version: 1.6.2 + sha256: c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465 + requires_dist: + - cffi>=1.4.1 ; python_full_version < '3.9' and platform_python_implementation != 'PyPy' + - cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' + - pytest>=7.4.0 ; extra == 'tests' + - pytest-cov>=2.10.1 ; extra == 'tests' + - pytest-xdist>=3.5.0 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' + - sphinx<7 ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/bf/4b/afc1fef8a43bafb139f57f73bbd70df82807af5934321e8112ae50668827/botocore-1.43.0-py3-none-any.whl + name: botocore + version: 1.43.0 + sha256: cc5b15eaec3c6eac05d8012cb5ef17ebe891beb88a16ca13c374bfaece1241e6 + requires_dist: + - jmespath>=0.7.1,<2.0.0 + - python-dateutil>=2.1,<3.0.0 + - urllib3>=1.25.4,!=2.2.0,<3 + - awscrt==0.32.2 ; extra == 'crt' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c1/11/716dcc28a28743a3778b455a443d591837ad7c58908e234fe31307fb61a9/lhcbdiracx_api-0.1.0-py3-none-any.whl + name: lhcbdiracx-api + version: 0.1.0 + sha256: 838b439801695386bca499820a4d46e3c4c625293bb0b906c57165a765cadc05 + requires_dist: + - lhcbdiracx-core + - lhcbdiracx-client + - diracx-api==0.1.0 + - diracx-api[types]==0.1.0 ; extra == 'types' + - diracx-api[testing]==0.1.0 ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl + name: smmap + version: 5.0.3 + sha256: c106e05d5a61449cf6ba9a1e650227ecfb141590d2a98412103ff35d89fc7b2f + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/c2/53/d81269aaafccea0d33396c03035de997b743f11e648e6e27a0df99c72980/yarl-1.24.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: yarl + version: 1.24.2 + sha256: e51b2cf5ec89a8b8470177641ed62a3ba22d74e1e898e06ad53aa77972487208 + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c3/94/9b8923055f9be73c930955fd111756ca5d5616eedd64611d23c74e204300/awkward_cpp-53-cp314-cp314-macosx_11_0_arm64.whl + name: awkward-cpp + version: '53' + sha256: bf5b5d22b19904af6399163ce4df9cae9bce12d3d2d9a62a0c17c7d740134b6e + requires_dist: + - numpy>=1.21.3 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + name: click + version: 8.4.1 + sha256: 482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2 + requires_dist: + - colorama ; sys_platform == 'win32' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c8/85/9535df0b78ba51f478c9ce7eb6d1f85535cc31fe356773b48fd9d3e563ca/rapidfuzz-3.14.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: rapidfuzz + version: 3.14.5 + sha256: 4900143d82071bdda533b00300c40b14b963ff826b3642cc463b6dd0f036585e + requires_dist: + - numpy ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c9/b8/c73592eb90ca2b1d8144e366091214d386695c86d737c97443210db03fb2/diracx_core-0.1.0-py3-none-any.whl + name: diracx-core + version: 0.1.0 + sha256: 0770d64ea411dd15e940470813f7f5ea9a4d0b324de374136d760f13e477fa79 + requires_dist: + - aiobotocore>=2.15 + - botocore>=1.35 + - cachetools + - diraccommon>=9.0.18 + - email-validator + - gitpython + - joserfc>=1.5.0 + - pydantic-settings + - pydantic>=2.10 + - pyyaml + - sh + - diracx-testing ; extra == 'testing' + - moto[server] ; extra == 'testing' + - botocore-stubs ; extra == 'types' + - types-aiobotocore-s3 ; extra == 'types' + - types-aiobotocore[essential] ; extra == 'types' + - types-cachetools ; extra == 'types' + - types-pyyaml ; extra == 'types' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl + name: xenv + version: 0.0.6 + sha256: b0407192f7b3e489375231dbb17439d928ca381d0f58057a5e078375f2125cea requires_dist: - - pytest ; extra == 'dev' - - setuptools ; extra == 'dev' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b0/9a/d2faba7e61072a7507b5722db63562fdb22f5a24e237d460d18755627f15/wrapt-2.1.1-cp314-cp314-macosx_11_0_arm64.whl - name: wrapt - version: 2.1.1 - sha256: feff14b63a6d86c1eee33a57f77573649f2550935981625be7ff3cb7342efe05 + - coverage ; extra == 'testing' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + name: tzdata + version: '2026.2' + sha256: bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7 + requires_python: '>=2' +- pypi: https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl + name: sqlalchemy + version: 2.0.50 + sha256: 92064363517a3ff8212b5a93b8c62876579d8dfd1ca5b561335f30152d884fa9 requires_dist: - - pytest ; extra == 'dev' - - setuptools ; extra == 'dev' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/db/56/073989deb4b5d7d6e7ea424476a4ae4bda02140f2dbeaafb14ba4864dd60/wrapt-2.1.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - name: wrapt - version: 2.1.1 - sha256: 81fc5f22d5fcfdbabde96bb3f5379b9f4476d05c6d524d7259dc5dfb501d3281 + - importlib-metadata ; python_full_version < '3.8' + - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' + - typing-extensions>=4.6.0 + - greenlet>=1 ; extra == 'asyncio' + - mypy>=0.910 ; extra == 'mypy' + - pyodbc ; extra == 'mssql' + - pymssql ; extra == 'mssql-pymssql' + - pyodbc ; extra == 'mssql-pyodbc' + - mysqlclient>=1.4.0 ; extra == 'mysql' + - mysql-connector-python ; extra == 'mysql-connector' + - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' + - cx-oracle>=8 ; extra == 'oracle' + - oracledb>=1.0.1 ; extra == 'oracle-oracledb' + - psycopg2>=2.7 ; extra == 'postgresql' + - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' + - greenlet>=1 ; extra == 'postgresql-asyncpg' + - asyncpg ; extra == 'postgresql-asyncpg' + - psycopg2-binary ; extra == 'postgresql-psycopg2binary' + - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' + - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' + - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' + - pymysql ; extra == 'pymysql' + - greenlet>=1 ; extra == 'aiomysql' + - aiomysql>=0.2.0 ; extra == 'aiomysql' + - greenlet>=1 ; extra == 'aioodbc' + - aioodbc ; extra == 'aioodbc' + - greenlet>=1 ; extra == 'asyncmy' + - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' + - greenlet>=1 ; extra == 'aiosqlite' + - aiosqlite ; extra == 'aiosqlite' + - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' + - sqlcipher3-binary ; extra == 'sqlcipher' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/d0/23/49cf8ea1d129637941f06fb78f5f66077bf362762c5f6c01712c4cd0e87f/hyperscan-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: hyperscan + version: 0.8.2 + sha256: 0c0af5d882bd6afb61e2b9a13c0d39fcbcee49c62f392096d6303bd34452813f + requires_python: '>=3.9,<4.0' +- pypi: https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl + name: cryptography + version: 48.0.1 + sha256: 3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6 requires_dist: - - pytest ; extra == 'dev' - - setuptools ; extra == 'dev' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/1c/1c/ab905d19a1349e847e37e02933316d17adfd1dd70b64d366885ab0bd959d/xattr-1.3.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl - name: xattr - version: 1.3.0 - sha256: c6992eb5da32c0a1375a9eeacfab15c66eebc8bd34be63ebd1eae80cc2f8bf03 + - cffi>=2.0.0 ; platform_python_implementation != 'PyPy' + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + - bcrypt>=3.1.5 ; extra == 'ssh' + requires_python: '>=3.9,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/d3/66/f42f5c984d99e49c6cff5f26f590750f2e2f7ef1fcfb99966ab5be1b632e/aiohttp-3.14.1-cp314-cp314-macosx_10_15_x86_64.whl + name: aiohttp + version: 3.14.1 + sha256: d03f281ed22579314ba00821ce20115a7c0ac430660b4cc05704a3f818b3e004 requires_dist: - - cffi>=1.16.0 - - pytest ; extra == 'test' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/3d/36/9ab4f0b5c3d10df3aceaecf7e395cabe7fb7c7c004b2dc3f3cff0ef70fc3/xattr-1.3.0-cp314-cp314-macosx_11_0_arm64.whl - name: xattr - version: 1.3.0 - sha256: 88557c0769f64b1d014aada916c9630cfefa38b0be6c247eae20740d2d8f7b47 + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + name: cwltool + version: 3.2.20260413085819 + sha256: 2ed9b586b2d9cda0870a3c2b9cba958943ef3fde53805f935cb20888dc8b87a3 requires_dist: - - cffi>=1.16.0 - - pytest ; extra == 'test' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/9d/0a/03192e78071cfb86e6d8ceae0e5dcec4bacf0fd734755263aabd01532e50/xattr-1.3.0-cp314-cp314-macosx_10_15_x86_64.whl - name: xattr - version: 1.3.0 - sha256: 95f1e14a4d9ca160b4b78c527bf2bac6addbeb0fd9882c405fc0b5e3073a8752 + - requests>=2.6.1 + - ruamel-yaml>=0.16,<0.20 + - rdflib>=4.2.2,<7.7.0 + - schema-salad>=8.9,<9 + - prov==1.5.1 + - mypy-extensions + - psutil>=5.6.6 + - coloredlogs + - pydot>=1.4.1 + - argcomplete>=1.12.0 + - pyparsing!=3.0.2 + - cwl-utils>=0.41 + - spython>=0.3.0 + - rich-argparse + - pygments>=2.20.0 + - typing-extensions>=4.1.0 + - galaxy-tool-util>=22.1.2,!=23.0.1,!=23.0.2,!=23.0.3,!=23.0.4,!=23.0.5,<26.1 ; extra == 'deps' + - galaxy-util<26.1 ; extra == 'deps' + - pillow ; extra == 'deps' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl + name: fsspec + version: 2026.4.0 + sha256: 11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2 requires_dist: - - cffi>=1.16.0 + - adlfs ; extra == 'abfs' + - adlfs ; extra == 'adl' + - pyarrow>=1 ; extra == 'arrow' + - dask ; extra == 'dask' + - distributed ; extra == 'dask' + - pre-commit ; extra == 'dev' + - ruff>=0.5 ; extra == 'dev' + - numpydoc ; extra == 'doc' + - sphinx ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - yarl ; extra == 'doc' + - dropbox ; extra == 'dropbox' + - dropboxdrivefs ; extra == 'dropbox' + - requests ; extra == 'dropbox' + - adlfs ; extra == 'full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'full' + - dask ; extra == 'full' + - distributed ; extra == 'full' + - dropbox ; extra == 'full' + - dropboxdrivefs ; extra == 'full' + - fusepy ; extra == 'full' + - gcsfs>2024.2.0 ; extra == 'full' + - libarchive-c ; extra == 'full' + - ocifs ; extra == 'full' + - panel ; extra == 'full' + - paramiko ; extra == 'full' + - pyarrow>=1 ; extra == 'full' + - pygit2 ; extra == 'full' + - requests ; extra == 'full' + - s3fs>2024.2.0 ; extra == 'full' + - smbprotocol ; extra == 'full' + - tqdm ; extra == 'full' + - fusepy ; extra == 'fuse' + - gcsfs>2024.2.0 ; extra == 'gcs' + - pygit2 ; extra == 'git' + - requests ; extra == 'github' + - gcsfs ; extra == 'gs' + - panel ; extra == 'gui' + - pyarrow>=1 ; extra == 'hdfs' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'http' + - libarchive-c ; extra == 'libarchive' + - ocifs ; extra == 'oci' + - s3fs>2024.2.0 ; extra == 's3' + - paramiko ; extra == 'sftp' + - smbprotocol ; extra == 'smb' + - paramiko ; extra == 'ssh' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test' + - numpy ; extra == 'test' - pytest ; extra == 'test' + - pytest-asyncio!=0.22.0 ; extra == 'test' + - pytest-benchmark ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytest-recording ; extra == 'test' + - pytest-rerunfailures ; extra == 'test' + - requests ; extra == 'test' + - aiobotocore>=2.5.4,<3.0.0 ; extra == 'test-downstream' + - dask[dataframe,test] ; extra == 'test-downstream' + - moto[server]>4,<5 ; extra == 'test-downstream' + - pytest-timeout ; extra == 'test-downstream' + - xarray ; extra == 'test-downstream' + - adlfs ; extra == 'test-full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test-full' + - backports-zstd ; python_full_version < '3.14' and extra == 'test-full' + - cloudpickle ; extra == 'test-full' + - dask ; extra == 'test-full' + - distributed ; extra == 'test-full' + - dropbox ; extra == 'test-full' + - dropboxdrivefs ; extra == 'test-full' + - fastparquet ; extra == 'test-full' + - fusepy ; extra == 'test-full' + - gcsfs ; extra == 'test-full' + - jinja2 ; extra == 'test-full' + - kerchunk ; extra == 'test-full' + - libarchive-c ; extra == 'test-full' + - lz4 ; extra == 'test-full' + - notebook ; extra == 'test-full' + - numpy ; extra == 'test-full' + - ocifs ; extra == 'test-full' + - pandas<3.0.0 ; extra == 'test-full' + - panel ; extra == 'test-full' + - paramiko ; extra == 'test-full' + - pyarrow ; extra == 'test-full' + - pyarrow>=1 ; extra == 'test-full' + - pyftpdlib ; extra == 'test-full' + - pygit2 ; extra == 'test-full' + - pytest ; extra == 'test-full' + - pytest-asyncio!=0.22.0 ; extra == 'test-full' + - pytest-benchmark ; extra == 'test-full' + - pytest-cov ; extra == 'test-full' + - pytest-mock ; extra == 'test-full' + - pytest-recording ; extra == 'test-full' + - pytest-rerunfailures ; extra == 'test-full' + - python-snappy ; extra == 'test-full' + - requests ; extra == 'test-full' + - smbprotocol ; extra == 'test-full' + - tqdm ; extra == 'test-full' + - urllib3 ; extra == 'test-full' + - zarr ; extra == 'test-full' + - zstandard ; python_full_version < '3.14' and extra == 'test-full' + - tqdm ; extra == 'tqdm' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl + name: multidict + version: 6.7.1 + sha256: a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2 + requires_dist: + - typing-extensions>=4.1.0 ; python_full_version < '3.11' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ca/6d/b1a49f9712a910acdcb8dc5765e57d60c2be9fe9b001a21b6a98a1d85adb/xenv-0.0.6-py3-none-any.whl - name: xenv - version: 0.0.6 - sha256: b0407192f7b3e489375231dbb17439d928ca381d0f58057a5e078375f2125cea +- pypi: https://files.pythonhosted.org/packages/d6/61/08f60ae8fa82bc57b17b80f1b3e2bb98dccdb2a46a756cad83fb2d09b144/diracx_client-0.1.0-py3-none-any.whl + name: diracx-client + version: 0.1.0 + sha256: a98e6d5f0422246839583f231767fccce47f3c97f11313b3ab8e40304757edc6 + requires_dist: + - azure-core + - diracx-core + - httpx + - isodate + - pyjwt + - diracx-testing ; extra == 'testing' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/d7/4c/f3b97c7d6008b3a895bbadb2deb44ad3446ae5fe204c72cd540dc222e57d/lbenv-2.4.0-py3-none-any.whl + name: lbenv + version: 2.4.0 + sha256: 5fb13304ea4d2c9f9b9a4f0710d3931ec9cd45f173581afa17a330d2635bed7e requires_dist: + - lbplatformutils>=4.2.3 + - xenv<1.0.0 + - importlib-resources + - importlib-metadata + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' - coverage ; extra == 'testing' requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/xrootd-5.9.1-py314h75aeccf_0.conda - sha256: 2351cace7322d68dd834c276f4cb19bc35a68d90642dd7083b4924bb26a66228 - md5: d9b7e0eeecec187f4344983ba341c2d7 - depends: - - openssl - - python - - readline - - libxml2-devel - - krb5 - - zlib - - ncurses - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - libcurl >=8.18.0,<9.0a0 - - scitokens-cpp >=1.2.0,<2.0a0 - - libxcrypt >=4.4.36 - - libuuid >=2.41.3,<3.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.4,<4.0a0 - - python_abi 3.14.* *_cp314 - - readline >=8.3,<9.0a0 - - libzlib >=1.3.1,<2.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - krb5 >=1.21.3,<1.22.0a0 - license: LGPL-3.0-or-later - license_family: LGPL - purls: - - pkg:pypi/xrootd?source=hash-mapping - size: 4201796 - timestamp: 1769447927303 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xrootd-5.9.1-py314hb36820e_0.conda - sha256: 85669c3b2ba7186b7f1b5c6440c09b16ab1d52424ece1d1eb145afb9237b3011 - md5: a6cf55d7323840b381a89b36f0947e96 - depends: - - openssl - - python - - readline - - libxml2-devel - - krb5 - - zlib - - ncurses - - libcxx >=19 - - __osx >=10.13 - - libcurl >=8.18.0,<9.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - readline >=8.3,<9.0a0 - - python_abi 3.14.* *_cp314 - - libzlib >=1.3.1,<2.0a0 - - libxcrypt >=4.4.36 - - krb5 >=1.21.3,<1.22.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.4,<4.0a0 - - scitokens-cpp >=1.2.0,<2.0a0 - license: LGPL-3.0-or-later - license_family: LGPL - purls: - - pkg:pypi/xrootd?source=hash-mapping - size: 3529962 - timestamp: 1769447937537 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xrootd-5.9.1-py314h6e96a01_0.conda - sha256: 2c3a4a6ed0e8c9163eef9967b6ff3ca72145e08d90349052ebf48c9e89a5dbd7 - md5: e7a71484b64ce6e45fd9d85645641f4a - depends: - - openssl - - python - - readline - - libxml2-devel - - krb5 - - zlib - - ncurses - - libcxx >=19 - - __osx >=11.0 - - python 3.14.* *_cp314 - - libxml2 - - libxml2-16 >=2.14.6 - - openssl >=3.5.4,<4.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - scitokens-cpp >=1.2.0,<2.0a0 - - python_abi 3.14.* *_cp314 - - readline >=8.3,<9.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libcurl >=8.18.0,<9.0a0 - - ncurses >=6.5,<7.0a0 - license: LGPL-3.0-or-later - license_family: LGPL - purls: - - pkg:pypi/xrootd?source=hash-mapping - size: 3347452 - timestamp: 1769448002819 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad - md5: a77f85f77be52ff59391544bfe73390a - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - license: MIT - license_family: MIT - purls: [] - size: 85189 - timestamp: 1753484064210 -- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - sha256: a335161bfa57b64e6794c3c354e7d49449b28b8d8a7c4ed02bf04c3f009953f9 - md5: a645bb90997d3fc2aea0adf6517059bd - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: [] - size: 79419 - timestamp: 1753484072608 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - sha256: b03433b13d89f5567e828ea9f1a7d5c5d697bf374c28a4168d71e9464f5dafac - md5: 78a0fe9e9c50d2c381e8ee47e3ea437d - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 83386 - timestamp: 1753484079473 -- pypi: https://files.pythonhosted.org/packages/11/63/ff458113c5c2dac9a9719ac68ee7c947cb621432bcf28c9972b1c0e83938/yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl - name: yarl - version: 1.22.0 - sha256: 594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b +- pypi: https://files.pythonhosted.org/packages/d8/da/a8bb48a4fee86b5dad8a358559b70b010cd7effaa70ca5bb4e6e82e13703/hyperscan-0.8.2-cp314-cp314-macosx_11_0_arm64.whl + name: hyperscan + version: 0.8.2 + sha256: 4e9f8d1ae2c9596385d906e062b9e0081ae843e3975fd4a656e5fcf6bbc48c13 + requires_python: '>=3.9,<4.0' +- pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl + name: anyio + version: 4.13.0 + sha256: 08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708 + requires_dist: + - exceptiongroup>=1.0.2 ; python_full_version < '3.11' + - idna>=2.8 + - typing-extensions>=4.5 ; python_full_version < '3.13' + - trio>=0.32.0 ; extra == 'trio' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/dc/80/12235e5b75bb2c586733280854f131b86051e0bbdfb55349ff70d0f72cf9/dogpile_cache-1.5.0-py3-none-any.whl + name: dogpile-cache + version: 1.5.0 + sha256: dc7b47d37844db15e8fdc0243c1b58857a2ddc52a5118237a97127bac200e18d + requires_dist: + - decorator>=4.0.0 + - stevedore>=3.0.0 + - typing-extensions>=4.0.1 ; python_full_version < '3.11' + - pifpaf>=3.3.0 ; extra == 'pifpaf' + - pymemcache ; extra == 'pymemcache' + - python-memcached ; extra == 'memcached' + - python-binary-memcached ; extra == 'bmemcached' + - pylibmc ; extra == 'pylibmc' + - redis ; extra == 'redis' + - valkey ; extra == 'valkey' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl + name: typing-inspection + version: 0.4.2 + sha256: 4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 requires_dist: - - idna>=2.0 - - multidict>=4.0 - - propcache>=0.2.1 + - typing-extensions>=4.12.0 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e4/04/3532d990fdbab02e5ede063676b5c4260e7f3abea2151099c2aa745acc4c/yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl - name: yarl - version: 1.22.0 - sha256: 0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683 +- pypi: https://files.pythonhosted.org/packages/de/07/a1051cdbbe6d723df16d756b97f09da7c1adb69e29695c58f0392bc12515/cramjam-2.11.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + name: cramjam + version: 2.11.0 + sha256: 7ba5e38c9fbd06f086f4a5a64a1a5b7b417cd3f8fc07a20e5c03651f72f36100 requires_dist: - - idna>=2.0 - - multidict>=4.0 - - propcache>=0.2.1 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f5/e7/d8c5a7752fef68205296201f8ec2bf718f5c805a7a7e9880576c67600658/yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: yarl - version: 1.22.0 - sha256: bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784 + - black==22.3.0 ; extra == 'dev' + - numpy ; extra == 'dev' + - pytest>=5.30 ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pytest-benchmark ; extra == 'dev' + - hypothesis==6.60.0 ; extra == 'dev' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl + name: email-validator + version: 2.3.0 + sha256: 80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4 requires_dist: - - idna>=2.0 - - multidict>=4.0 - - propcache>=0.2.1 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl - name: zipp - version: 3.23.0 - sha256: 071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e + - dnspython>=2.0.0 + - idna>=2.0.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/df/32/10ac51b4be7cdecd7e93d069251c86dfbf70b7adbd7c67b48ccea6c49e1c/sqlalchemy-2.0.50-cp314-cp314-macosx_11_0_arm64.whl + name: sqlalchemy + version: 2.0.50 + sha256: c966932507a4d7d0a37314927dbfcd89720e3f37d2a1e3352e7ae7939fa8e8a0 requires_dist: - - pytest>=6,!=8.1.* ; extra == 'test' - - jaraco-itertools ; extra == 'test' - - jaraco-functools ; extra == 'test' - - more-itertools ; extra == 'test' - - big-o ; extra == 'test' - - pytest-ignore-flaky ; extra == 'test' - - jaraco-test ; extra == 'test' - - sphinx>=3.5 ; extra == 'doc' - - jaraco-packaging>=9.3 ; extra == 'doc' - - rst-linker>=1.9 ; extra == 'doc' - - furo ; extra == 'doc' - - sphinx-lint ; extra == 'doc' - - jaraco-tidelift>=1.4 ; extra == 'doc' - - pytest-checkdocs>=2.4 ; extra == 'check' - - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' - - pytest-cov ; extra == 'cover' - - pytest-enabler>=2.2 ; extra == 'enabler' - - pytest-mypy ; extra == 'type' + - importlib-metadata ; python_full_version < '3.8' + - greenlet>=1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' + - typing-extensions>=4.6.0 + - greenlet>=1 ; extra == 'asyncio' + - mypy>=0.910 ; extra == 'mypy' + - pyodbc ; extra == 'mssql' + - pymssql ; extra == 'mssql-pymssql' + - pyodbc ; extra == 'mssql-pyodbc' + - mysqlclient>=1.4.0 ; extra == 'mysql' + - mysql-connector-python ; extra == 'mysql-connector' + - mariadb>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10 ; extra == 'mariadb-connector' + - cx-oracle>=8 ; extra == 'oracle' + - oracledb>=1.0.1 ; extra == 'oracle-oracledb' + - psycopg2>=2.7 ; extra == 'postgresql' + - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' + - greenlet>=1 ; extra == 'postgresql-asyncpg' + - asyncpg ; extra == 'postgresql-asyncpg' + - psycopg2-binary ; extra == 'postgresql-psycopg2binary' + - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' + - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' + - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' + - pymysql ; extra == 'pymysql' + - greenlet>=1 ; extra == 'aiomysql' + - aiomysql>=0.2.0 ; extra == 'aiomysql' + - greenlet>=1 ; extra == 'aioodbc' + - aioodbc ; extra == 'aioodbc' + - greenlet>=1 ; extra == 'asyncmy' + - asyncmy>=0.2.3,!=0.2.4,!=0.2.6 ; extra == 'asyncmy' + - greenlet>=1 ; extra == 'aiosqlite' + - aiosqlite ; extra == 'aiosqlite' + - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' + - sqlcipher3-binary ; extra == 'sqlcipher' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl + name: shellingham + version: 1.5.4 + sha256: 7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/e9/a7/248e1aebe0c7810b0271e021a0f2a5eb6e78a051885b3c9df49f42a5802d/aiohttp-3.14.1-cp314-cp314-macosx_11_0_arm64.whl + name: aiohttp + version: 3.14.1 + sha256: 07eabb979d236335fed927e137a928c9adfb7df3b9ec7aa31726f133a62be983 + requires_dist: + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + name: python-dateutil + version: 2.9.0.post0 + sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + requires_dist: + - six>=1.5 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl + name: pytz + version: '2026.2' + sha256: 04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126 +- pypi: https://files.pythonhosted.org/packages/ed/38/98ea14ad1517e1461292a65906951458d520689782bfbae111050145bdba/xxhash-3.7.0-cp314-cp314-macosx_11_0_arm64.whl + name: xxhash + version: 3.7.0 + sha256: 3afec3a336a2286601a437cb07562ab0227685e6fbb9ec17e8c18457ff348ecf + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl + name: arrow + version: 1.4.0 + sha256: 749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 + requires_dist: + - python-dateutil>=2.7.0 + - backports-zoneinfo==0.2.1 ; python_full_version < '3.9' + - tzdata ; python_full_version >= '3.9' + - doc8 ; extra == 'doc' + - sphinx>=7.0.0 ; extra == 'doc' + - sphinx-autobuild ; extra == 'doc' + - sphinx-autodoc-typehints ; extra == 'doc' + - sphinx-rtd-theme>=1.3.0 ; extra == 'doc' + - dateparser==1.* ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytz==2025.2 ; extra == 'test' + - simplejson==3.* ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + name: cachecontrol + version: 0.14.4 + sha256: b7ac014ff72ee199b5f8af1de29d60239954f223e948196fa3d84adaffc71d2b + requires_dist: + - requests>=2.16.0 + - msgpack>=0.5.2,<2.0.0 + - cachecontrol[filecache,redis] ; extra == 'dev' + - cherrypy ; extra == 'dev' + - cheroot>=11.1.2 ; extra == 'dev' + - codespell ; extra == 'dev' + - furo ; extra == 'dev' + - mypy ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-copybutton ; extra == 'dev' + - types-redis ; extra == 'dev' + - types-requests ; extra == 'dev' + - filelock>=3.8.0 ; extra == 'filecache' + - redis>=2.10.5 ; extra == 'redis' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + name: humanfriendly + version: '10.0' + sha256: 1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 + requires_dist: + - monotonic ; python_full_version == '2.7.*' + - pyreadline ; python_full_version < '3.8' and sys_platform == 'win32' + - pyreadline3 ; python_full_version >= '3.8' and sys_platform == 'win32' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl + name: multidict + version: 6.7.1 + sha256: 0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1 + requires_dist: + - typing-extensions>=4.1.0 ; python_full_version < '3.11' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - license: Zlib - license_family: Other - purls: [] - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 - md5: c989e0295dcbdc08106fe5d9e935f0b9 - depends: - - __osx >=10.13 - - libzlib 1.3.1 hd23fc13_2 - license: Zlib - license_family: Other - purls: [] - size: 88544 - timestamp: 1727963189976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - license: Zlib - license_family: Other - purls: [] - size: 77606 - timestamp: 1727963209370 -- pypi: https://files.pythonhosted.org/packages/31/dc/cc50210e11e465c975462439a492516a73300ab8caa8f5e0902544fd748b/zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: zstandard - version: 0.25.0 - sha256: e09bb6252b6476d8d56100e8147b803befa9a12cea144bbe629dd508800d1ad0 +- pypi: https://files.pythonhosted.org/packages/f3/e1/2f705da403f865a5fa3449b155738dc9c53021698fd6926253a9af03180b/levenshtein-0.27.3-cp314-cp314-macosx_10_15_x86_64.whl + name: levenshtein + version: 0.27.3 + sha256: a6728bfae9a86002f0223576675fc7e2a6e7735da47185a1d13d1eaaa73dd4be requires_dist: - - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' - - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - rapidfuzz>=3.9.0,<4.0.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f5/ac/19f9941c74add59d17694930ec8105d5eddeee4ce56dd8632b765ca16d6c/stevedore-5.8.0-py3-none-any.whl + name: stevedore + version: 5.8.0 + sha256: 88eede9e66ca80e34085b9174e2327da2c61ac91f24f70e41c3ad76e4bb4872b + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl + name: spython + version: 0.3.14 + sha256: 72968583e498bc2a51f9acd0ed6bc0d7d1f7ccd491feaba5e2f7d944bc51da3a +- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + name: aiosignal + version: 1.4.0 + sha256: 053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e + requires_dist: + - frozenlist>=1.1.0 + - typing-extensions>=4.2 ; python_full_version < '3.13' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/3d/5c/f8923b595b55fe49e30612987ad8bf053aef555c14f05bb659dd5dbe3e8a/zstandard-0.25.0-cp314-cp314-macosx_10_13_x86_64.whl - name: zstandard - version: 0.25.0 - sha256: e29f0cf06974c899b2c188ef7f783607dbef36da4c242eb6c82dcd8b512855e3 +- pypi: https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl + name: authlib + version: 1.7.2 + sha256: 3e1faedc9d87e7d56a164eca3ccb6ace0d61b94abe83e92242f8dc8bba9b4a9f requires_dist: - - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' - - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - cryptography + - joserfc>=1.6.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl + name: pydantic + version: 2.13.4 + sha256: 45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba + requires_dist: + - annotated-types>=0.6.0 + - pydantic-core==2.46.4 + - typing-extensions>=4.14.1 + - typing-inspection>=0.4.2 + - email-validator>=2.0.0 ; extra == 'email' + - tzdata ; python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/8d/09/d0a2a14fc3439c5f874042dca72a79c70a532090b7ba0003be73fee37ae2/zstandard-0.25.0-cp314-cp314-macosx_11_0_arm64.whl - name: zstandard - version: 0.25.0 - sha256: 05df5136bc5a011f33cd25bc9f506e7426c0c9b3f9954f056831ce68f3b6689f +- pypi: https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: multidict + version: 6.7.1 + sha256: 7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709 requires_dist: - - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' - - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' + - typing-extensions>=4.1.0 ; python_full_version < '3.11' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 - md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 - depends: - - __glibc >=2.17,<3.0.a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 601375 - timestamp: 1764777111296 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda - sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f - md5: 727109b184d680772e3122f40136d5ca - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 528148 - timestamp: 1764777156963 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda - sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 - md5: ab136e4c34e97f34fb621d2592a393d8 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 433413 - timestamp: 1764777166076 diff --git a/pyproject.toml b/pyproject.toml index 2837f9f..dbc0eb4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ dependencies = [ "diracx-client>=0.0.8", "diracx-cli>=0.0.8", "lbprodrun", + "LHCbDIRAC @ git+https://git@gitlab.cern.ch/jlisalab/LHCbDIRAC.git@modules-to-cwl-migration", # Temporary fork dependency "pydantic", "pyyaml", "typer", @@ -78,7 +79,7 @@ allow_redefinition = true enable_error_code = ["import", "attr-defined"] [[tool.mypy.overrides]] -module = ["requests", "yaml"] +module = ["requests", "yaml", "DIRAC.*", "LHCbDIRAC.*", "DIRACCommon.*"] ignore_missing_imports = true [tool.pytest.ini_options] diff --git a/src/dirac_cwl/commands/__init__.py b/src/dirac_cwl/commands/__init__.py index 01e8b17..8c722f6 100644 --- a/src/dirac_cwl/commands/__init__.py +++ b/src/dirac_cwl/commands/__init__.py @@ -1,5 +1,20 @@ """Command classes for workflow pre/post-processing operations.""" +from .analyze_xml_summary import AnalyseXmlSummary from .core import PostProcessCommand, PreProcessCommand +from .create_failover_request import CreateFailoverRequest +from .register_accounting_report import RegisterAccountingReport +from .report_bookkeeping import ReportBookkeeping +from .upload_log_file import UploadLogFile +from .upload_output_data import UploadOutputData -__all__ = ["PreProcessCommand", "PostProcessCommand"] +__all__ = [ + "AnalyseXmlSummary", + "PreProcessCommand", + "PostProcessCommand", + "UploadLogFile", + "ReportBookkeeping", + "CreateFailoverRequest", + "UploadOutputData", + "RegisterAccountingReport", +] diff --git a/src/dirac_cwl/commands/analyze_xml_summary.py b/src/dirac_cwl/commands/analyze_xml_summary.py new file mode 100644 index 0000000..b0a5b93 --- /dev/null +++ b/src/dirac_cwl/commands/analyze_xml_summary.py @@ -0,0 +1,58 @@ +"""LHCb command for checking the XMLSummary output to ensure that the execution was done correctly.""" + +import logging +import os + +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from LHCbDIRAC.Workflow.Modules.AnalyseXMLSummary import _areInputsOK, _isXMLSummaryOK + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .core import PostProcessCommand +from .workflow_commons import Step, StepStatus, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class AnalyseXmlSummary(PostProcessCommand): + """Performs a series of checks on the XMLSummary output to make sure the execution was done correctly.""" + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs): + """Execute the command. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object + :param kwargs: Additional keyword arguments. + """ + for step in workflow_commons.steps: + self._execute_for_step(job_path, workflow_commons, step, **kwargs) + + def _execute_for_step( + self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, step_commons: Step, **kwargs + ): + """Execute the command for a specific step.""" + job_ok = _isXMLSummaryOK(step_commons.xf_o) + + if job_ok: + job_ok = _areInputsOK( + step_commons.xf_o, + step_commons.inputs, + step_commons.number_of_events, + workflow_commons.production_id, + self.file_report, + ) + if not job_ok: + self.job_report.setApplicationStatus("XMLSummary reports error") + raise WorkflowProcessingException("XMLSummary reports error") + + if workflow_commons.step_status == StepStatus.Failed: + logger.info("Workflow already failed") + return + + self.job_report.setApplicationStatus(f"{step_commons.application_name} Step OK") + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.file_report: + self.file_report = FileReport() diff --git a/src/dirac_cwl/commands/core.py b/src/dirac_cwl/commands/core.py index cc2ede3..e608d62 100644 --- a/src/dirac_cwl/commands/core.py +++ b/src/dirac_cwl/commands/core.py @@ -1,7 +1,22 @@ """Core base classes for workflow processing commands.""" +import logging +import os from abc import ABC, abstractmethod -from pathlib import Path + +from DIRAC.AccountingSystem.Client.DataStoreClient import DataStoreClient +from DIRAC.DataManagementSystem.Client.DataManager import DataManager +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from DIRAC.WorkloadManagementSystem.Client.JobReport import JobReport +from LHCbDIRAC.BookkeepingSystem.Client.BookkeepingClient import BookkeepingClient + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .workflow_commons import WorkflowCommons + +logger = logging.getLogger(__name__) class CommandBase(ABC): @@ -12,8 +27,58 @@ class CommandBase(ABC): :class:`dirac_cwl.commands.base.PostProcessCommand` """ + request: Request = None + failover_transfer: FailoverTransfer = None + job_report: JobReport = None + file_report: FileReport = None + data_manager: DataManager = None + bk_client: BookkeepingClient = None + dsc: DataStoreClient = None + + def execute(self, job_path: os.PathLike[str], **kwargs) -> None: + """Execute the command in the given job path. + + :param job_path: Path to the job working directory. + :param kwargs: Additional keyword arguments. + """ + failed = False + workflow_commons = None + + try: + workflow_commons = WorkflowCommons.load(job_path) + + logger.info("WorkflowCommons:\n%s", workflow_commons) + + self._resolve_clients(workflow_commons) + self._execute(job_path, workflow_commons, **kwargs) + + except WorkflowProcessingException: + failed = True + raise + + except Exception as e: + logger.exception("Exception in %s", self.__class__.__name__, exc_info=e) + + failed = True + if self.job_report: + self.job_report.setApplicationStatus(repr(e)) + + raise WorkflowProcessingException(e) from e + + finally: + if workflow_commons: + workflow_commons.save(job_path, request=self.request, dsc=self.dsc, failed=failed) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + """Initialize the required clients. + + JobReport is always needed, so when overriding, this needs to be called via super(). + """ + if not self.job_report: + self.job_report = JobReport(workflow_commons.job_id) + @abstractmethod - def execute(self, job_path: Path, **kwargs) -> None: + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs) -> None: """Execute the command in the given job path. :param job_path: Path to the job working directory. diff --git a/src/dirac_cwl/commands/create_failover_request.py b/src/dirac_cwl/commands/create_failover_request.py new file mode 100644 index 0000000..7f96f49 --- /dev/null +++ b/src/dirac_cwl/commands/create_failover_request.py @@ -0,0 +1,127 @@ +"""LHCb command for committing the status of the files in the file report. + +The status will be "Processed" if everything ended properly or "Unused" if it did not. +""" + +import json +import logging +import os +from pathlib import Path + +from DIRAC.AccountingSystem.Client.DataStoreClient import DataStoreClient +from DIRAC.Core.Utilities.ReturnValues import SErrorException, returnValueOrRaise +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.RequestManagementSystem.private.RequestValidator import RequestValidator +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from LHCbDIRAC.Workflow.Modules.FailoverRequest import _prepareRequest + +from .core import PostProcessCommand +from .workflow_commons import StepStatus, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class CreateFailoverRequest(PostProcessCommand): + """Commits the status of the files in the file report. + + The status will be "Processed" if everything ended properly or "Unused" if it did not. + """ + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs): + """Execute the command. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object. + :param kwargs: Additional keyword arguments. + """ + if not self.request: + self.request = Request(workflow_commons.request_dict) + + _prepareRequest(self.request, workflow_commons.job_id) + + files_in_file_report = self.file_report.getFiles() + + for lfn in workflow_commons.inputs: + if lfn not in files_in_file_report: + status = "Processed" if workflow_commons.step_status == StepStatus.Done else "Unused" + if status == "Unused": + logger.info("Set status of %s to 'Unused' due to workflow failure", lfn) + else: + logger.debug("No status populated for %s, setting to 'Processed'", lfn) + + self.file_report.setFileStatus(int(workflow_commons.production_id), lfn, status) + + try: + value = returnValueOrRaise(self.file_report.commit()) + if value: + logger.info("Status of files have been properly updated in the TransformationDB") + else: + logger.warning("No file status update reported. There are no input files?") + except SErrorException as e: + logger.error("Something went wrong trying fileReport.commit() %s", e) + + if self.file_report.getFiles(): + logger.error("On first attempt, failed to report file status to TransformationDB") + try: + value = returnValueOrRaise(self.file_report.generateForwardDISET()) + if not value: + logger.info("On second attempt, files correctly reported to TransformationDB") + elif workflow_commons.step_status == StepStatus.Done: + logger.info("Adding a SetFileStatus operation to the request") + self.request.addOperation(value) + else: + logger.info("The job should fail: do not set requests, as the DRA will take care") + except SErrorException as e: + logger.warning("Could not generate Operation for file report: %s", e) + + if workflow_commons.step_status == StepStatus.Done: + self.job_report.setApplicationStatus("Job Finished Successfully", True) + + self.generate_failover_file(job_path, workflow_commons) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.file_report: + self.file_report = FileReport() + + if not self.dsc: + self.dsc = DataStoreClient() + + def generate_failover_file(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons): + """Create a request.json file.""" + try: + diset_op = returnValueOrRaise(self.job_report.generateForwardDISET()) + if diset_op: + logger.info("Populating request with job report information") + self.request.addOperation(diset_op) + except SErrorException as e: + logger.warning("Could not generate Operation for job report", exc_info=e) + + if len(self.request): + # Try to optimize the request + try: + returnValueOrRaise(self.request.optimize()) + except SErrorException as e: + logger.error("Could not optimize", exc_info=e) + logger.error("Not failing the job because of that, keep going") + except Exception: + pass + + # Validate self.request + returnValueOrRaise(RequestValidator().validate(self.request)) + + # Get the self.request as a Json + request_json_content = returnValueOrRaise(self.request.toJSON()) + + # Write it + fname = Path(job_path).joinpath( + f"{workflow_commons.production_id}_{workflow_commons.prod_job_id}_request.json" + ) + with open(fname, "w", encoding="utf-8") as f: + json.dump(request_json_content, f) + + if workflow_commons.accounting_registers: + for register in workflow_commons.accounting_registers: + self.dsc.addRegister(register) + self.dsc.commit() diff --git a/src/dirac_cwl/commands/download_config.py b/src/dirac_cwl/commands/download_config.py index 4fa1497..5fe3c03 100644 --- a/src/dirac_cwl/commands/download_config.py +++ b/src/dirac_cwl/commands/download_config.py @@ -4,11 +4,13 @@ from dirac_cwl.commands import PreProcessCommand +from .workflow_commons import WorkflowCommons + class DownloadConfig(PreProcessCommand): """Example command that creates a file with named 'content.cfg'.""" - def execute(self, job_path, **kwargs): + def _execute(self, job_path: os.PathLike, workflow_commons: WorkflowCommons, **kwargs): """Execute the configuration download. :param job_path: Path to the job working directory. diff --git a/src/dirac_cwl/commands/group_outputs.py b/src/dirac_cwl/commands/group_outputs.py index d58e84a..f8fa990 100644 --- a/src/dirac_cwl/commands/group_outputs.py +++ b/src/dirac_cwl/commands/group_outputs.py @@ -5,11 +5,13 @@ from dirac_cwl.commands import PostProcessCommand +from .workflow_commons import WorkflowCommons + class GroupOutputs(PostProcessCommand): """Example command that merges all of the outputs in a singular file.""" - def execute(self, job_path, **kwargs): + def _execute(self, job_path: os.PathLike, workflow_commons: WorkflowCommons, **kwargs): """Execute the output file grouping. :param job_path: Path to the job working directory. diff --git a/src/dirac_cwl/commands/register_accounting_report.py b/src/dirac_cwl/commands/register_accounting_report.py new file mode 100644 index 0000000..28a239a --- /dev/null +++ b/src/dirac_cwl/commands/register_accounting_report.py @@ -0,0 +1,101 @@ +"""LHCb command for preparing and sending accounting information to the DIRAC Accounting system. + +Formerly known as StepAccounting. +""" + +import datetime +import logging +import os +from typing import Any, Dict + +from DIRAC import gConfig +from DIRAC.AccountingSystem.Client.DataStoreClient import DataStoreClient +from DIRAC.Core.Utilities.ReturnValues import SErrorException, returnValueOrRaise +from DIRAC.Workflow.Utilities.Utils import getStepCPUTimes +from LHCbDIRAC.AccountingSystem.Client.Types.JobStep import JobStep + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .core import PostProcessCommand +from .workflow_commons import Step, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class RegisterAccountingReport(PostProcessCommand): + """Prepares and sends accounting information to the DIRAC Accounting system.""" + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs): + """Execute the command. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object + :param kwargs: Additional keyword arguments. + """ + for step in workflow_commons.steps: + self._execute_for_step(job_path, workflow_commons, step, **kwargs) + + def _execute_for_step( + self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, step_commons: Step, **kwargs + ): + cpu_times: Dict[str, Any] = {} + if step_commons.start_time: + cpu_times["StartTime"] = step_commons.start_time + if step_commons.start_stats: + cpu_times["StartStats"] = step_commons.start_stats + + if not step_commons.application_name: + logger.info("Not an application step: it will not be accounted") + return + + exec_time, cpu_time = getStepCPUTimes(cpu_times) + + cpu_power = gConfig.getValue("/LocalSite/CPUNormalizationFactor", 1.0) + norm_cpu = cpu_time * cpu_power + + job_step = JobStep() + + xf_o = step_commons.xf_o + + if not xf_o: + logger.error("XML Summary object could not be found (not produced?), skipping the report") + return + + now = datetime.datetime.now(datetime.UTC) + job_step.setStartTime(now) + job_step.setEndTime(now) + + data_dict = { + "JobGroup": str(workflow_commons.production_id), + "RunNumber": workflow_commons.run_number, + "EventType": step_commons.event_type, + "ProcessingType": step_commons.proc_pass, # this is the processing pass of the step + "ProcessingStep": step_commons.bk_id, # the step ID + "Site": workflow_commons.site_name, + "FinalStepState": workflow_commons.step_status, + "CPUTime": cpu_time, + "NormCPUTime": norm_cpu, + "ExecTime": exec_time * workflow_commons.number_of_processors, + "InputData": sum(xf_o.inputFileStats.values()), + "OutputData": sum(xf_o.outputFileStats.values()), + "InputEvents": xf_o.inputEventsTotal, + "OutputEvents": xf_o.outputEventsTotal, + } + + job_step.setValuesFromDict(data_dict) + + try: + returnValueOrRaise(job_step.checkValues()) + except SErrorException as e: + logger.error("Values for StepAccounting are wrong: Here are the given data: %s", data_dict, exc_info=e) + raise WorkflowProcessingException( + f"Values for StepAccounting are wrong. Here are the given data: {data_dict}" + ) from e + + self.dsc.addRegister(job_step) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.dsc: + self.dsc = DataStoreClient() diff --git a/src/dirac_cwl/commands/report_bookkeeping.py b/src/dirac_cwl/commands/report_bookkeeping.py new file mode 100644 index 0000000..9708efe --- /dev/null +++ b/src/dirac_cwl/commands/report_bookkeeping.py @@ -0,0 +1,171 @@ +"""LHCb command for bookkeeping report file generation based on the XMLSummary and the XML catalog.""" + +import copy +import logging +import os +from pathlib import Path +from typing import Any, Dict + +from DIRAC.Core.Utilities.ReturnValues import SErrorException, returnValueOrRaise +from DIRAC.Workflow.Utilities.Utils import getStepCPUTimes +from LHCbDIRAC.BookkeepingSystem.Client.BookkeepingClient import BookkeepingClient +from LHCbDIRAC.Core.Utilities.ProductionData import constructProductionLFNs +from LHCbDIRAC.Workflow.Modules.BookkeepingReport import ( + _generate_xml_object, + _generateInputFiles, + _generateOutputFiles, + _prepare_job_info, + _process_time, +) +from LHCbDIRAC.Workflow.Modules.ModulesUtilities import getNumberOfProcessorsToUse + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .core import PostProcessCommand +from .workflow_commons import Step, StepStatus, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class ReportBookkeeping(PostProcessCommand): + """Generates a bookkeeping report file based on the XMLSummary and the pool XML catalog.""" + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs): + """Execute the command. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object + :param kwargs: Additional keyword arguments. + """ + for step in workflow_commons.steps: + if workflow_commons.step_status == StepStatus.Failed: + return + + self._execute_for_step(job_path, workflow_commons, step, **kwargs) + + def _execute_for_step( + self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, step_commons: Step, **kwargs + ): + # Setup variables + cpu_times: Dict[str, Any] = {} + if step_commons.start_time: + cpu_times["StartTime"] = step_commons.start_time + if step_commons.start_stats: + cpu_times["StartStats"] = step_commons.start_stats + + exectime, cputime = getStepCPUTimes(cpu_times) + + number_of_processors = workflow_commons.number_of_processors + + if (step_commons.multicore and workflow_commons.multicore) or ( + workflow_commons.job_type.lower() == "user" and workflow_commons.max_number_of_processors + ): + number_of_processors = getNumberOfProcessorsToUse( + workflow_commons.job_id, + workflow_commons.max_number_of_processors, + ) + + all_outputs = copy.deepcopy(step_commons.outputs) + all_outputs.extend(step_commons.outputs) + + parameters = { + "PRODUCTION_ID": workflow_commons.production_id, + "JOB_ID": workflow_commons.prod_job_id, + "configVersion": workflow_commons.config_version, + "outputList": all_outputs, + "configName": workflow_commons.config_name, + "outputDataFileMask": workflow_commons.output_data_file_mask, + } + + if workflow_commons.bookkeeping_lfns and workflow_commons.production_output_data: + bk_lfns = workflow_commons.bookkeeping_lfns + + if not isinstance(bk_lfns, list): + bk_lfns = [i.strip() for i in bk_lfns.split(";")] + + else: + logger.info("BookkeepingLFNs parameters not found, creating on the fly") + try: + production_lfns_dict = returnValueOrRaise(constructProductionLFNs(parameters, self.bk_client)) + except SErrorException as e: + logger.error("Could not create production LFNs", exc_info=e) + raise WorkflowProcessingException(f"Could not create production LFNs: {e}") from e + + bk_lfns = production_lfns_dict["BookkeepingLFNs"] + + ldate, ltime, ldatestart, ltimestart = _process_time(step_commons.start_time) + + # Obtain XMLSummary + if not step_commons.xf_o: + step_commons.xf_o = _generate_xml_object( + step_commons.cleaned_application_name, + workflow_commons.production_id, + workflow_commons.prod_job_id, + step_commons.number, + step_commons.id, + path=job_path, + ) + + info_dict = { + "exectime": exectime, + "cputime": cputime, + "numberOfProcessors": number_of_processors, + "production_id": workflow_commons.production_id, + "jobID": workflow_commons.job_id, + "siteName": workflow_commons.site_name, + "jobType": workflow_commons.job_type, + "applicationName": step_commons.application_name, + "applicationVersion": step_commons.application_version, + "numberOfEvents": step_commons.number_of_events, + } + + # Generate job_info object + job_info = _prepare_job_info( + info_dict, + ldatestart, + ltimestart, + ldate, + ltime, + step_commons.xf_o, + step_commons.inputs, + step_commons.id, + step_commons.bk_id, + self.bk_client, + workflow_commons.config_name, + workflow_commons.config_version, + ) + + # Add input files to job_info + _generateInputFiles(job_info, bk_lfns, step_commons.inputs) + + # Add output files to job_info + _generateOutputFiles( + job_info, + bk_lfns, + step_commons.event_type, + step_commons.application_name, + step_commons.xf_o, + step_commons.outputs, + step_commons.inputs, + step_commons.size, + step_commons.md5, + step_commons.guid, + ) + + # Generate SimulationConditions + if step_commons.application_name == "Gauss": + job_info.simulation_condition = workflow_commons.sim_description + + # Convert job_info object to XML + doc = job_info.to_xml() + + # Write to file + bfilename = Path(job_path).joinpath(f"bookkeeping_{step_commons.id}.xml") + with open(bfilename, "wb") as bfile: + bfile.write(doc) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.bk_client: + self.bk_client = BookkeepingClient() diff --git a/src/dirac_cwl/commands/upload_log_file.py b/src/dirac_cwl/commands/upload_log_file.py new file mode 100644 index 0000000..5b4f2a9 --- /dev/null +++ b/src/dirac_cwl/commands/upload_log_file.py @@ -0,0 +1,183 @@ +"""Post-processing command for uploading logging information to a Storage Element.""" + +import logging +import os +import shlex +from pathlib import Path + +from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations +from DIRAC.Core.Utilities.ReturnValues import SErrorException, returnSingleResult, returnValueOrRaise +from DIRAC.Core.Utilities.Subprocess import systemCall +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.Resources.Storage.StorageElement import StorageElement +from LHCbDIRAC.BookkeepingSystem.Client.BookkeepingClient import BookkeepingClient +from LHCbDIRAC.Core.Utilities.ProductionData import getLogPath +from LHCbDIRAC.Workflow.Modules.FailoverRequest import _prepareRequest +from LHCbDIRAC.Workflow.Modules.UploadLogFile import ( + _createLogUploadRequest, + _determineRelevantFiles, + _get_log_url, + _populateLogDirectory, + _setLogFilePermissions, + _uploadLogToFailoverSE, + _zip_files, +) + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .core import PostProcessCommand +from .workflow_commons import StepStatus, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class UploadLogFile(PostProcessCommand): + """Post-processing command for log file uploading.""" + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs): + """Execute the log uploading process. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object. + :param kwargs: Additional keyword arguments. + """ + if workflow_commons.step_status == StepStatus.Failed: + return + + if not self.request: + self.request = Request(workflow_commons.request_dict) + if not self.failover_transfer: + self.failover_transfer = FailoverTransfer(self.request) + + log_lfn_path = workflow_commons.log_target_path + if not log_lfn_path: + parameters = { + "PRODUCTION_ID": workflow_commons.production_id, + "JOB_ID": workflow_commons.job_id, + "configName": workflow_commons.config_name, + "configVersion": workflow_commons.config_version, + } + try: + log_dict = returnValueOrRaise(getLogPath(parameters, self.bk_client)) + except SErrorException as e: + raise WorkflowProcessingException("Could not create LogFilePath") from e + log_lfn_path = log_dict["LogTargetPath"][0] + + if not isinstance(log_lfn_path, str): + log_lfn_path = log_lfn_path[0] + + workflow_commons.log_lfn_path = log_lfn_path + + ops = Operations() + log_se = ops.getValue("LogStorage/LogSE", "LogSE") + log_extensions = ops.getValue("LogFiles/Extensions", []) + + _prepareRequest(self.request, workflow_commons.job_id) + + try: + file_list = returnValueOrRaise(systemCall(0, shlex.split(f"ls -al {str(job_path)}"))) + if file_list: + logger.info("The contents of the working directory...") + logger.info(str(file_list[1])) + else: + logger.error("Failed to list the log directory\n%s", str(file_list[2])) + except SErrorException as e: + logger.error("Failed to list the log directory\n%s", e) + + workflow_commons.log_dir = os.path.realpath( + Path(job_path).joinpath("job", "log", workflow_commons.production_id, workflow_commons.production_id) + ) + logger.info("Selected log files will be temporarily stored in %s", workflow_commons.log_dir) + + ########################################## + # First determine the files which should be saved + logger.info("Determining the files to be saved in the logs.") + + try: + selected_files = returnValueOrRaise(_determineRelevantFiles(log_extensions, path=job_path)) + except SErrorException as e: + logger.error("Completely failed to select relevant log files.", exc_info=e) + return # Does not fail + + logger.info("The following files were selected to be saved\n%s", selected_files) + + ######################################### + # Create a temporary directory containing these files + logger.info("Determining the files to be saved in the logs.") + + try: + returnValueOrRaise(_populateLogDirectory(selected_files, workflow_commons.log_dir)) + except SErrorException as e: + logger.error("Completely failed to populate temporary log file directory.", stack_info=e) + self.job_report.setApplicationStatus("Failed To Populate Log Dir") + return # Does not fail + + logger.debug("%s populated with log files.", workflow_commons.log_dir) + + ######################################### + # Make sure all the files in the log directory have the correct permissions + try: + returnValueOrRaise(_setLogFilePermissions(workflow_commons.log_dir)) + except SErrorException as e: + logger.error("Could not set permissions of log files to 0755 with message:\n%s", e) + + # zip all files + try: + zip_file_name = returnValueOrRaise(_zip_files(workflow_commons.prod_job_id, selected_files, path=job_path)) + except SErrorException as e: + logger.error("Failed to create zip of log files %s", e) + self.job_report.setApplicationStatus("Failed to create zip of log files") + return # Does not fail + + logger.info("Transferring zipped log files to the %s", log_se) + + # logFilePath is something like /lhcb/MC/2016/LOG/00095376/0000/ + # the zipFileName should have the same name, e.g. 00000381.zip + zip_path = Path(job_path).joinpath(workflow_commons.log_file_path, zip_file_name) + log_https_url = _get_log_url(log_se, zip_path) + + logger.info("putFile %s to %s", zip_file_name, log_se) + + try: + returnValueOrRaise(returnSingleResult(StorageElement(log_se).putFile({zip_path: zip_file_name}))) + logger.info("Successfully upload log file to %s", log_se) + logger.info("Logs for this job may be retrieved from %s", log_https_url) + + except SErrorException as e: + logger.error("Failed to upload log files with message %s", e) + logger.error("Now uploading to failover SE") + + try: + upload_result_dict = returnValueOrRaise( + _uploadLogToFailoverSE( + self.failover_transfer, zip_file_name, log_lfn_path, workflow_commons.site_name, path=job_path + ) + ) + + uploaded_se = upload_result_dict["uploadedSE"] + + logger.info("Uploading logs to failover SE '%s'", uploaded_se) + logger.info("Setting log upload request for %s at %s", log_lfn_path, log_se) + + _createLogUploadRequest(self.failover_transfer.request, log_se, log_lfn_path, uploaded_se) + + logger.debug("Successfully created failover request") + + except SErrorException as e: + logger.error( + "Failed to upload logs to all failover destinations (the job will not fail for this reason" + ) + self.job_report.setApplicationStatus("Failed To Upload Logs") + + # While it's the zip file that is uploaded, we set in job parameters its directory, + # as the .zip is deflated automatically + self.job_report.setJobParameter( + "Log URL", f"Log file directory" + ) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.bk_client: + self.bk_client = BookkeepingClient() diff --git a/src/dirac_cwl/commands/upload_output_data.py b/src/dirac_cwl/commands/upload_output_data.py new file mode 100644 index 0000000..fe8c52f --- /dev/null +++ b/src/dirac_cwl/commands/upload_output_data.py @@ -0,0 +1,220 @@ +"""LHCb command for registering the outputs generated to the corresponding SE or the FailoverSE in case of failure.""" + +import logging +import os +import random +import time +from pathlib import Path + +from DIRAC.Core.Utilities.ReturnValues import SErrorException, returnValueOrRaise +from DIRAC.DataManagementSystem.Client.DataManager import DataManager +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from LHCbDIRAC.BookkeepingSystem.Client.BookkeepingClient import BookkeepingClient +from LHCbDIRAC.Core.Utilities.ProductionData import constructProductionLFNs +from LHCbDIRAC.Core.Utilities.ResolveSE import getDestinationSEList +from LHCbDIRAC.DataManagementSystem.Client.ConsistencyChecks import getFileDescendents +from LHCbDIRAC.Workflow.Modules.UploadOutputData import ( + _createMetaDict, + _getBKFiles, + _getCleanRequest, + _getFileMetada, + _registerLFNs, + _resolveSEs, + _sendBKReport, +) + +from dirac_cwl.core.exceptions import WorkflowProcessingException + +from .core import PostProcessCommand +from .workflow_commons import StepStatus, WorkflowCommons + +logger = logging.getLogger(__name__) + + +class UploadOutputData(PostProcessCommand): + """Registers every output generated to the corresponding SE and Catalog or to the FailoverSE in case of failure.""" + + def _execute(self, job_path: os.PathLike[str], workflow_commons: WorkflowCommons, **kwargs) -> None: + """Execute the command. + + :param job_path: Path to the job working directory. + :param workflow_commons: WorkflowCommons object. + :param kwargs: Additional keyword arguments. + """ + if workflow_commons.step_status == StepStatus.Failed: + return + + if not self.request: + self.request = Request(workflow_commons.request_dict) + if not self.failover_transfer: + self.failover_transfer = FailoverTransfer(self.request) + + failover_se_list = getDestinationSEList("Tier1-Failover", workflow_commons.site_name, outputmode="Any") + random.shuffle(failover_se_list) + + if not workflow_commons.prod_output_lfns: + parameters = { + "PRODUCTION_ID": workflow_commons.production_id, + "JOB_ID": workflow_commons.job_id, + "configVersion": workflow_commons.config_version, + "outputList": workflow_commons.outputs, + "configName": workflow_commons.config_name, + "outputDataFileMask": workflow_commons.output_data_file_mask, + } + try: + prod_lfn_dict = returnValueOrRaise(constructProductionLFNs(parameters, self.bk_client)) + except SErrorException as e: + raise WorkflowProcessingException("Unable to construct production LFNs") from e + + workflow_commons.prod_output_lfns = prod_lfn_dict["ProductionOutputData"] + + file_metadata = _getFileMetada( + workflow_commons.outputs, + workflow_commons.prod_output_lfns, + workflow_commons.output_data_file_mask, + workflow_commons.output_data_step, + workflow_commons.output_SEs, + path=job_path, + ) + + if not file_metadata: + logger.info("No output data files were determined to be uploaded for this workflow") + return # Does not fail + + final = _resolveSEs( + file_metadata, + None, + workflow_commons.site_name, + workflow_commons.output_mode, + workflow_commons.run_number, + ) + logger.info("The following files will be uploaded: %s", ", ".join(final)) + + for file_name, metadata in final.items(): + logger.info("--------%s--------", file_name) + for name, val in metadata.items(): + logger.info("%s = %s", name, val) + + if workflow_commons.inputs: + lfns_with_descendents = workflow_commons.file_descendents + + if not lfns_with_descendents: + lfns_with_descendents = getFileDescendents( + workflow_commons.production_id, + workflow_commons.inputs, + dm=self.data_manager, + bkClient=self.bk_client, + ) + + if not lfns_with_descendents: + logger.info("No descendants found, outputs can be uploaded") + else: + logger.error("Found descendants!!! Outputs won't be uploaded") + logger.info("Files with descendants: %s", " % ".join(lfns_with_descendents)) + logger.info( + "The files above will be set as 'Processed', other lfns in input will be later reset as Unused" + ) + + self.file_report.setFileStatus(int(workflow_commons.production_id), lfns_with_descendents, "Processed") + raise WorkflowProcessingException("Input Data Already Processed") + + bk_files = _getBKFiles(path=job_path) + logger.info("The following BK records will be sent\n%s", ", ".join(bk_files)) + + for bk_file in bk_files: + with open(bk_file) as fd: + bk_xml = fd.read() + + logger.info("Sending BK record:\n%s", bk_xml) + try: + returnValueOrRaise(_sendBKReport(self.bk_client, self.request, bk_xml)) + logger.info("Bookkeeping report sent for %s", bk_file) + except SErrorException as e: + logger.error("Could not send Bookkeeping XML file to server:\n%s", e) + logger.info("Preparing DISET request for %s", bk_file) + + logger.info("Creating DISABLE_WATCHDOG_CPU_WALLCLOCK_CHECK in order to disable the Watchdog") + with open(Path(job_path).joinpath("DISABLE_WATCHDOG_CPU_WALLCLOCK_CHECK"), "w") as f: + f.write(f"{time.asctime()}") + + perform_bk_registration = [] + + failover = {} + for file_name, metadata in final.items(): + target_se = metadata["resolvedSE"] + + logger.info( + "Attempting to store file to SE %s to the following SE(s):\n%s", file_name, ", ".join(target_se) + ) + + file_meta_dict = _createMetaDict(metadata) + + try: + returnValueOrRaise( + self.failover_transfer.transferAndRegisterFile( + fileName=file_name, + localPath=metadata["localpath"], + lfn=metadata["filedict"]["LFN"], + destinationSEList=target_se, + fileMetaDict=file_meta_dict, + masterCatalogOnly=True, + ) + ) + perform_bk_registration.append(metadata) + logger.info("File uploaded, will be registered in BK if all files uploaded for job %s", file_name) + + except SErrorException: + logger.error("Could not transfer and register %s with metadata:\n %s", file_name, metadata) + failover[file_name] = metadata + + clean_up = False + for file_name, metadata in failover.items(): + logger.info("Setting default catalog for %s failover transfer registration to master catalog", file_name) + + random.shuffle(failover_se_list) + target_se = metadata["resolvedSE"][0] + metadata["resolvedSE"] = failover_se_list + + file_meta_dict = _createMetaDict(metadata) + try: + returnValueOrRaise( + self.failover_transfer.transferAndRegisterFileFailover( + fileName=file_name, + localPath=metadata["localpath"], + lfn=metadata["filedict"]["LFN"], + targetSE=target_se, + failoverSEList=metadata["resolvedSE"], + fileMetaDict=file_meta_dict, + masterCatalogOnly=True, + ) + ) + except SErrorException: + logger.error("Could not transfer and register %s in failover with metadata:\n %s", file_name, metadata) + clean_up = True + break + + self.request = self.failover_transfer.request + if clean_up: + self.request = _getCleanRequest(self.request, final) + raise WorkflowProcessingException("Failed to upload output data") + + if final: + report = ", ".join(final) + self.job_report.setJobParameter("UploadedOutputData", report) + + if perform_bk_registration: + returnValueOrRaise(_registerLFNs(self.request, perform_bk_registration)) + + def _resolve_clients(self, workflow_commons: WorkflowCommons): + super()._resolve_clients(workflow_commons) + + if not self.bk_client: + self.bk_client = BookkeepingClient() + + if not self.file_report: + self.file_report = FileReport() + + if not self.data_manager: + self.data_manager = DataManager() diff --git a/src/dirac_cwl/commands/workflow_commons.py b/src/dirac_cwl/commands/workflow_commons.py new file mode 100644 index 0000000..c49122a --- /dev/null +++ b/src/dirac_cwl/commands/workflow_commons.py @@ -0,0 +1,208 @@ +"""Workflow common values shared between steps.""" + +from __future__ import annotations + +import json +import logging +import os +import shutil +from enum import Enum +from pathlib import Path +from typing import Any, Optional + +from DIRAC import siteName +from DIRAC.AccountingSystem.Client.DataStoreClient import DataStoreClient +from DIRAC.RequestManagementSystem.Client.Request import Request +from LHCbDIRAC.Core.Utilities.XMLSummaries import XMLSummary +from pydantic import BaseModel, ConfigDict, Field, PrivateAttr + +logger = logging.getLogger(__name__) + + +class StepStatus(str, Enum): + """Workflow status.""" + + Done = "Done" + Failed = "Failed" + + +class Step(BaseModel): + """Execution step information.""" + + id: str + name: str + number: int + + executable: str = "gaudirun.py" + + application_name: Optional[str] = "Unknown" + cleaned_application_name: str = "" + application_version: str = "Unknown" + application_log: str = "" + application_type: str = "" + + event_type: str = "" + number_of_events: int = 0 + event_timeout: Optional[int] = None + + extra_packages: Optional[str] = "" + proc_pass: str = "" + bk_id: str = "" + multicore: bool = False + mc_tck: str = "" + system_config: str = "" + + dddb_tag: str = "" + conddb_tag: str = "" + dq_tag: str = "" + + inputs: list[str] = [] + outputs: list[dict[str, Any]] = [] + + input_data_type: str = "" + + options_file: str = "" + options_line: str = "" + extra_options_line: str = "" + options_format: str = "" + + size: dict = {} + md5: dict = {} + guid: dict = {} + + start_time: Optional[float] = None + start_stats: Optional[tuple] = None + + # To be built if certain conditions are met + # > If (wf_c.production_id && wf_c.job_id && self.name && self.inputs) + output_file_prefix: str = "" + xml_summary_path: str = "" + histo_name: str = "Hist.root" + + # Private Attributes + _xf_o: Optional[XMLSummary] = PrivateAttr(default=None) + + def __init__(self, **data): + """StepCommons constructor.""" + super().__init__(**data) + + if self.application_name: + self.cleaned_application_name = self.application_name.replace("/", "") + + if self.xml_summary_path: + self._xf_o = XMLSummary(self.xml_summary_path) + + @property + def xf_o(self) -> XMLSummary: + """Xml Summary getter.""" + return self._xf_o + + @xf_o.setter + def xf_o(self, value: XMLSummary) -> None: + """Xml Summary getter.""" + self._xf_o = value + + +class WorkflowCommons(BaseModel): + """Workflow information for command processing.""" + + # Mandatory Values + job_id: int + job_type: str + production_id: str + prod_job_id: str + + inputs: list[str] = [] + outputs: list[dict[str, Any]] = [] + + config_version: str + config_name: str + + steps: list[Step] = [] + + # Optional values + production_output_data: list[str] = [] + output_data_file_mask: str = "" + output_data_type: str = "" + output_SEs: dict[str, list[str]] = {} # output -> SE list + output_mode: str = "" + output_data_step: str = "" + + log_target_path: str = "" + log_file_path: str = "" + log_lfn_path: str = "" + log_dir: str = "" + + number_of_processors: int = 1 + max_number_of_processors: Optional[int] = None + + run_number: str = "Unknown" + sim_description: str = "NoSimConditions" + + bookkeeping_lfns: list[str] = [] + prod_output_lfns: list[str] = [] + + file_descendents: list[str] = [] + file_report_files_dict: dict = {} + accounting_registers: list = [] + xml_summary_paths: dict[str, str] = {} + request_dict: dict = {} + + site_name: str = Field(default_factory=siteName) + multicore: bool = False + + step_status: StepStatus = StepStatus.Done + + model_config = ConfigDict(validate_assignment=True, extra="forbid") + + def __init__(self, **data): + """WorkflowCommons constructor.""" + super().__init__(**data) + + def save( + self, + job_path: os.PathLike[str], + request: Optional[Request] = None, + dsc: Optional[DataStoreClient] = None, + failed: bool = False, + ) -> None: + """Update the workflow_commons file to accomodate for the new values.""" + logger.info("Saving workflow commons json file") + wf_path = Path(job_path).joinpath("workflow_commons.json") + wf_backup = Path(job_path).joinpath("workflow_commons.json.back") + + if os.path.exists(wf_path): + shutil.move(wf_path, wf_backup) + + if failed: + self.step_status = StepStatus.Failed + + if request: + self.request_dict = json.loads(request.toJSON()["Value"]) + if dsc: + self.accounting_registers.extend(dsc._DataStoreClient__registersList) + + try: + wf_dict = self.model_dump(mode="json") + with open(wf_path, "w", encoding="utf-8") as f: + json.dump(wf_dict, f) + except Exception as e: + logger.exception("Failed to save the workflows commons in a file", exc_info=e) + raise + finally: + if not wf_path.exists(): + wf_backup.copy(wf_path) # type: ignore[attr-defined] + wf_backup.unlink(missing_ok=True) + + @classmethod + def load(cls, job_path: os.PathLike[str]) -> WorkflowCommons: + """Return a WorkflowCommons containing the values of a workflow_commons.json file. + + :raises: ValidationError + """ + wf_path = Path(job_path).joinpath("workflow_commons.json") + + with open(wf_path, "r", encoding="utf-8") as f: + wf_dict = json.load(f) + + return cls(**wf_dict) diff --git a/test/conftest.py b/test/conftest.py index 272b99c..8d5e54f 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,5 +1,8 @@ """Common pytest fixture used by test modules.""" +import shutil +from pathlib import Path + import pytest from cwl_utils.parser.cwl_v1_2 import CommandLineTool @@ -49,3 +52,72 @@ def sample_command_line_tool(): def sample_job(sample_command_line_tool): """Create a sample JobModel.""" return JobModel(task=sample_command_line_tool) + + +@pytest.fixture +def job_path(): + """Job Path Fixture.""" + path = Path(".").joinpath("examplepath") + + if path.exists(): + raise Exception("NON EMPTY DIRECTORY !!!") + + path.mkdir() + + yield path + + shutil.rmtree(path) + + +@pytest.fixture +def wf_commons(): + """Workflow commons dictionary fixture.""" + return { + "job_id": 0, + "job_type": "merge", + "production_id": "123", + "prod_job_id": "00000456", + "inputs": [], + "outputs": [], + "config_name": "aConfigName", + "config_version": "aConfigVersion", + "steps": [ + { + "id": "1", + "name": "", + "number": 1, + "executable": "", + "event_type": "123456789", + "number_of_events": 100, + "application_name": "someApp", + "application_version": "v1r0", + "inputs": [], + } + ], + } + + +@pytest.fixture +def xml_summary_file(job_path, wf_commons): + """XMLSummaryFile file path fixture.""" + path = Path(job_path).joinpath( + f"summary{wf_commons['steps'][0]['application_name']}_{wf_commons['production_id']}_{wf_commons['prod_job_id']}_{wf_commons['steps'][0]['id']}.xml" + ) + yield str(path) + path.unlink(missing_ok=True) + + +@pytest.fixture +def request_file(job_path, wf_commons): + """RequstDict file path fixture.""" + path = Path(job_path).joinpath(f"{wf_commons['production_id']}_{wf_commons['prod_job_id']}_request.json") + yield str(path) + path.unlink(missing_ok=True) + + +@pytest.fixture +def bookkeeping_file(job_path, wf_commons): + """Bookkeeping report file fixture.""" + path = Path(job_path).joinpath(f"bookkeeping_{wf_commons['steps'][0]['id']}.xml") + yield str(path) + Path(path).unlink(missing_ok=True) diff --git a/test/test_command_anazlyse_xml_summary.py b/test/test_command_anazlyse_xml_summary.py new file mode 100644 index 0000000..e101ad7 --- /dev/null +++ b/test/test_command_anazlyse_xml_summary.py @@ -0,0 +1,503 @@ +"""Test for the AnalyseXmlSummary command class.""" + +from pathlib import Path +from textwrap import dedent + +import pytest +from DIRAC.WorkloadManagementSystem.Client.JobReport import JobReport +from DIRACCommon.Core.Utilities.ReturnValues import S_OK +from LHCbDIRAC.Core.Utilities.XMLSummaries import XMLSummary +from pytest_mock import MockerFixture + +from dirac_cwl.commands import AnalyseXmlSummary +from dirac_cwl.commands.workflow_commons import StepStatus, WorkflowCommons +from dirac_cwl.core.exceptions import WorkflowProcessingException + + +class TestAnalyseXmlSummary: + """Collection of tests for the AnalyseXmlSummary command.""" + + @pytest.fixture + def axlf(self, mocker: MockerFixture, wf_commons, job_path): + """Fixture for AnalyseXmlSummary module.""" + command = AnalyseXmlSummary() + + command.job_report = JobReport(wf_commons["job_id"]) + + mocker.patch.object(command.job_report, "setApplicationStatus", return_value=S_OK()) + + yield command + + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + + # Test scenarios + def test_analyseXMLSummary_basic_success(self, axlf, job_path, wf_commons, xml_summary_file): + """Test basic success scenario.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_previousError_success(self, axlf, job_path, wf_commons, xml_summary_file): + """Test success scenario with previous error: stepStatus = S_ERROR().""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["step_status"] = StepStatus.Failed + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_not_called() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badInput_success(self, axlf, job_path, wf_commons, xml_summary_file): + """Test success scenario with part and fail input not part of the input data list.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_partInput_success(self, axlf, job_path, wf_commons, xml_summary_file): + """Test success scenario with part input part of the input data list.""" + # Input is 'part' and is part of the input data list but the number of events is not -1 + + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["inputs"] = ["00012478_00000532_1.sim"] + wf_commons["steps"][0]["number_of_events"] = 1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_notSuccess_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with success=False.""" + xml_content = dedent(""" + + False + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "False" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badStep_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with step != finalize.""" + xml_content = dedent(""" + + True + execute + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "execute" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badOutput_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with output status != full.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert not xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badInput_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with input status = mult.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badInput2_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with an unknown input status (weoweo).""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {} + + def test_analyseXMLSummary_badInput3_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with input status = fail.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["inputs"] = ["00012478_00000532_1.sim"] + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {"00012478_00000532_1.sim": "Problematic"} + + def test_analyseXMLSummary_badInput4_fail(self, axlf, job_path, wf_commons, xml_summary_file): + """Test failure scenario with input status = part.""" + # Input is 'part' and is part of the input data list but the number of events is -1 (by default) + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["inputs"] = ["00012478_00000532_1.sim"] + wf_commons["steps"][0]["number_of_events"] = -1 + + assert xf_o.success == "True" + assert xf_o.step == "finalize" + assert xf_o._outputsOK() + assert not xf_o.inputFileStats["mult"] + assert not xf_o.inputFileStats["other"] + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + axlf.execute(job_path) + + axlf.job_report.setApplicationStatus.assert_called_once() + assert axlf.file_report.statusDict == {"00012478_00000532_1.sim": "Problematic"} diff --git a/test/test_command_bookkeeping_report.py b/test/test_command_bookkeeping_report.py new file mode 100644 index 0000000..9bea505 --- /dev/null +++ b/test/test_command_bookkeeping_report.py @@ -0,0 +1,441 @@ +"""Test for the ReportBookkeeping command class.""" + +import time +import xml.etree.ElementTree as ET +from pathlib import Path +from textwrap import dedent + +import LHCbDIRAC +import pytest +from DIRAC import siteName +from LHCbDIRAC.Core.Utilities.XMLSummaries import XMLSummary +from pytest_mock import MockerFixture + +from dirac_cwl.commands import ReportBookkeeping +from dirac_cwl.commands.workflow_commons import StepStatus, WorkflowCommons + + +def get_typed_parameter_value(name, root): + """Find the value of a specific TypedParameter by its name.""" + for child in root: + if child.tag == "TypedParameter" and child.attrib["Name"] == name: + return child.attrib["Value"] + return None + + +def get_output_file_details(output_file): + """Extract details from an OutputFile element.""" + details = { + "Name": output_file.attrib["Name"], + "TypeName": output_file.attrib["TypeName"], + "Parameters": {}, + "Replicas": [], + } + + for elem in output_file: + if elem.tag == "Parameter": + details["Parameters"][elem.attrib["Name"]] = elem.attrib["Value"] + elif elem.tag == "Replica": + details["Replicas"].append({"Name": elem.attrib["Name"], "Location": elem.attrib["Location"]}) + + return details + + +class TestReportBookkeeping: + """Collection of tests for the ReportBookkeeping command.""" + + number_of_processors = 1 + + @pytest.fixture + def report_bk(self, mocker: MockerFixture, job_path): + """ReportBookkeeping mocked command. + + Cleans created files after execution. + """ + mock_get_n_procs = mocker.patch("dirac_cwl.commands.report_bookkeeping.getNumberOfProcessorsToUse") + mock_get_n_procs.return_value = self.number_of_processors + + yield ReportBookkeeping() + + Path(job_path).joinpath("00209455_00001537_1").unlink(missing_ok=True) + Path(job_path).joinpath("00209455_00001537_1.sim").unlink(missing_ok=True) + Path(job_path).joinpath("application.log").unlink(missing_ok=True) + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + + def test_report_bk_prod_mcsimulation_success( + self, report_bk, job_path, wf_commons, bookkeeping_file, xml_summary_file + ): + """Test successful execution of ReportBookkeeping module.""" + wf_commons["steps"][0]["application_name"] = "Gauss" + wf_commons["job_type"] = "MCSimulation" + + wf_commons["bookkeeping_lfns"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1.sim", + ] + wf_commons["production_output_data"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1.sim", + ] + + wf_commons["steps"][0]["start_time"] = time.time() - 1000 + + # Input data should be None as we use Gauss (MCSimulation) + wf_commons["steps"][0]["outputs"] = [ + {"outputDataName": "00209455_00001537_1.sim", "outputDataType": "sim"}, + ] + Path(wf_commons["steps"][0]["outputs"][0]["outputDataName"]).touch() + + # Mock the XMLSummary object + xml_content = dedent("""\ + + + True + finalize + + 2129228.0 + + + + + 1 + + + + 1 + 77 + 2644 + 6262 + 8391 + 963 + 18139 + 45169 + 52237 + 79 + + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + + WorkflowCommons(**wf_commons).save(job_path) + + report_bk.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + assert Path(bookkeeping_file).exists(), "XML report file not created." + + # Validate the XML file + tree = ET.parse(bookkeeping_file) + root = tree.getroot() + + # Extract fields from the XML and perform further operations + assert root.tag == "Job", "Root tag should be Job." + assert root.attrib["ConfigName"] == updated_wf_commons.config_name + assert root.attrib["ConfigVersion"] == updated_wf_commons.config_version + assert root.attrib["Date"] + assert root.attrib["Time"] + + assert get_typed_parameter_value("ProgramName", root) == updated_wf_commons.steps[0].application_name + assert get_typed_parameter_value("ProgramVersion", root) == updated_wf_commons.steps[0].application_version + assert get_typed_parameter_value("DiracVersion", root) == LHCbDIRAC.__version__ + assert get_typed_parameter_value("Name", root) == updated_wf_commons.steps[0].id + assert float(get_typed_parameter_value("ExecTime", root)) > 1000 + assert get_typed_parameter_value("CPUTIME", root) == "0" + + assert get_typed_parameter_value("FirstEventNumber", root) == "1" + assert get_typed_parameter_value("StatisticsRequested", root) == str( + updated_wf_commons.steps[0].number_of_events + ) + assert get_typed_parameter_value("NumberOfEvents", root) == str(xf_o.outputEventsTotal) + + assert get_typed_parameter_value("Production", root) == updated_wf_commons.production_id + assert get_typed_parameter_value("DiracJobId", root) == str(updated_wf_commons.job_id) + assert get_typed_parameter_value("Location", root) == siteName() + assert get_typed_parameter_value("JobStart", root) + assert get_typed_parameter_value("JobEnd", root) + assert get_typed_parameter_value("JobType", root) == updated_wf_commons.job_type + + assert get_typed_parameter_value("WorkerNode", root) + assert get_typed_parameter_value("WNMEMORY", root) + assert get_typed_parameter_value("WNCPUPOWER", root) + assert get_typed_parameter_value("WNMODEL", root) + assert get_typed_parameter_value("WNCACHE", root) + assert get_typed_parameter_value("WNCPUHS06", root) + assert get_typed_parameter_value("NumberOfProcessors", root) == str(self.number_of_processors) + + # Input should be empty + input_file = root.find("InputFile") + assert input_file is None, "InputFile element should not be present." + + # Output should not be empty + output_files = root.findall("OutputFile") + assert output_files, "No OutputFile elements found." + + first_output_details = get_output_file_details(output_files[0]) + assert first_output_details["Name"] == updated_wf_commons.production_output_data[0] + assert first_output_details["TypeName"] == "SIM" + assert first_output_details["Parameters"]["FileSize"] == "0" + assert "CreationDate" in first_output_details["Parameters"] + assert "MD5Sum" in first_output_details["Parameters"] + assert "Guid" in first_output_details["Parameters"] + + assert len(output_files) == 1 + + def test_report_bk_prod_mcsimulation_noinputoutput_success( + self, report_bk, job_path, wf_commons, bookkeeping_file, xml_summary_file + ): + """Test successful execution of ReportBookkeeping module. + + * No input files because wf_commons["stepInputData is empty + * No output files because wf_commons["stepOutputData is empty + * No pool xml catalog + * Simulation conditions because the application used is Gauss + """ + # Mock the ReportBookkeeping module + wf_commons["steps"][0]["application_name"] = "Gauss" + wf_commons["job_type"] = "MCSimulation" + + # This was obtained from a previous module (likely GaudiApplication) + wf_commons["bookkeeping_lfns"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1", + ] + wf_commons["production_output_data"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1", + ] + + wf_commons["steps"][0]["start_time"] = time.time() - 1000 + + # Mock the XMLSummary object + xml_content = dedent("""\ + + + True + finalize + + 2129228.0 + + + + + 1 + + + + 1 + 77 + 2644 + 6262 + 8391 + 963 + 18139 + 45169 + 52237 + 79 + + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + + WorkflowCommons(**wf_commons).save(job_path) + + report_bk.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check if the XML report file is created + assert Path(bookkeeping_file).exists(), "XML report file not created." + + # Validate the XML file + tree = ET.parse(bookkeeping_file) + root = tree.getroot() + + # Extract fields from the XML and perform further operations + assert root.tag == "Job", "Root tag should be Job." + assert root.attrib["ConfigName"] == updated_wf_commons.config_name + assert root.attrib["ConfigVersion"] == updated_wf_commons.config_version + assert root.attrib["Date"] + assert root.attrib["Time"] + + assert get_typed_parameter_value("ProgramName", root) == updated_wf_commons.steps[0].application_name + assert get_typed_parameter_value("ProgramVersion", root) == updated_wf_commons.steps[0].application_version + assert get_typed_parameter_value("DiracVersion", root) == LHCbDIRAC.__version__ + assert get_typed_parameter_value("Name", root) == updated_wf_commons.steps[0].id + assert float(get_typed_parameter_value("ExecTime", root)) > 1000 + assert get_typed_parameter_value("CPUTIME", root) == "0" + + assert get_typed_parameter_value("FirstEventNumber", root) == "1" + assert get_typed_parameter_value("StatisticsRequested", root) == str( + updated_wf_commons.steps[0].number_of_events + ) + assert get_typed_parameter_value("NumberOfEvents", root) == str(xf_o.outputEventsTotal) + + assert get_typed_parameter_value("Production", root) == updated_wf_commons.production_id + assert get_typed_parameter_value("DiracJobId", root) == str(updated_wf_commons.job_id) + assert get_typed_parameter_value("Location", root) == siteName() + assert get_typed_parameter_value("JobStart", root) + assert get_typed_parameter_value("JobEnd", root) + assert get_typed_parameter_value("JobType", root) == updated_wf_commons.job_type + + assert get_typed_parameter_value("WorkerNode", root) + assert get_typed_parameter_value("WNMEMORY", root) + assert get_typed_parameter_value("WNCPUPOWER", root) + assert get_typed_parameter_value("WNMODEL", root) + assert get_typed_parameter_value("WNCACHE", root) + assert get_typed_parameter_value("WNCPUHS06", root) + assert get_typed_parameter_value("NumberOfProcessors", root) == str(self.number_of_processors) + + # Input should be empty + input_file = root.find("InputFile") + assert input_file is None, "InputFile element should not be present." + + # Output should be empty + output_file = root.find("OutputFile") + assert output_file is None, "OutputFile element should not be present." + + def test_report_bk_prod_mcreconstruction_success( + self, report_bk, job_path, wf_commons, bookkeeping_file, xml_summary_file + ): + """Test successful execution of ReportBookkeeping module.""" + wf_commons["steps"][0]["application_name"] = "Boole" + wf_commons["job_type"] = "MCReconstruction" + + wf_commons["bookkeeping_lfns"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1", + ] + wf_commons["log_file_path"] = "/lhcb/LHCb/Collision16/LOG/00209455/0000/" + wf_commons["production_output_data"] = [ + "/lhcb/LHCb/Collision16/SIM/00209455/0000/00209455_00001537_1", + ] + + wf_commons["steps"][0]["start_time"] = time.time() - 1000 + + wf_commons["steps"][0]["inputs"] = ["/lhcb/MC/2018/SIM/00212581/0000/00212581_00001446_1.sim"] + wf_commons["steps"][0]["outputs"] = [ + {"outputDataName": "00209455_00001537_1", "outputDataType": "digi"}, + ] + wf_commons["steps"][0]["application_log"] = "application.log" + Path(wf_commons["steps"][0]["application_log"]).touch() + Path(wf_commons["steps"][0]["outputs"][0]["outputDataName"]).touch() + + # Mock the XMLSummary object + xml_content = dedent("""\ + + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + xf_o = XMLSummary(xml_summary_file) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + + WorkflowCommons(**wf_commons).save(job_path) + + report_bk.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check if the XML report file is created + assert Path(bookkeeping_file).exists(), "XML report file not created." + + # Validate the XML file + tree = ET.parse(bookkeeping_file) + root = tree.getroot() + + # Extract fields from the XML and perform further operations + assert root.tag == "Job", "Root tag should be Job." + assert root.attrib["ConfigName"] == updated_wf_commons.config_name + assert root.attrib["ConfigVersion"] == updated_wf_commons.config_version + assert root.attrib["Date"] + assert root.attrib["Time"] + + assert get_typed_parameter_value("ProgramName", root) == updated_wf_commons.steps[0].application_name + assert get_typed_parameter_value("ProgramVersion", root) == updated_wf_commons.steps[0].application_version + assert get_typed_parameter_value("DiracVersion", root) == LHCbDIRAC.__version__ + assert get_typed_parameter_value("Name", root) == updated_wf_commons.steps[0].id + assert float(get_typed_parameter_value("ExecTime", root)) > 1000 + assert get_typed_parameter_value("CPUTIME", root) == "0" + + assert get_typed_parameter_value("FirstEventNumber", root) == "1" + assert get_typed_parameter_value("StatisticsRequested", root) == str( + updated_wf_commons.steps[0].number_of_events + ) + assert get_typed_parameter_value("NumberOfEvents", root) == str(xf_o.inputEventsTotal) + + assert get_typed_parameter_value("Production", root) == updated_wf_commons.production_id + assert get_typed_parameter_value("DiracJobId", root) == str(updated_wf_commons.job_id) + assert get_typed_parameter_value("Location", root) == siteName() + assert get_typed_parameter_value("JobStart", root) + assert get_typed_parameter_value("JobEnd", root) + assert get_typed_parameter_value("JobType", root) == updated_wf_commons.job_type + + assert get_typed_parameter_value("WorkerNode", root) + assert get_typed_parameter_value("WNMEMORY", root) + assert get_typed_parameter_value("WNCPUPOWER", root) + assert get_typed_parameter_value("WNMODEL", root) + assert get_typed_parameter_value("WNCACHE", root) + assert get_typed_parameter_value("WNCPUHS06", root) + assert get_typed_parameter_value("NumberOfProcessors", root) == str(self.number_of_processors) + + # Input should not be empty + input_file = root.find("InputFile") + assert input_file is not None, "InputFile element should be present." + + # Output should not be empty + output_files = root.findall("OutputFile") + assert output_files, "No OutputFile elements found." + + first_output_details = get_output_file_details(output_files[0]) + assert first_output_details["Name"] == updated_wf_commons.production_output_data[0] + assert first_output_details["TypeName"] == "DIGI" + assert first_output_details["Parameters"]["FileSize"] == "0" + assert "CreationDate" in first_output_details["Parameters"] + assert "MD5Sum" in first_output_details["Parameters"] + assert "Guid" in first_output_details["Parameters"] + + assert len(output_files) == 1 + + # Because we are using Gauss, sim conditions should be present too + simulation_condition = root.find("SimulationCondition") + assert simulation_condition is None, "SimulationCondition element should not be present." + + def test_report_bk_previousError_success(self, report_bk, job_path, wf_commons, bookkeeping_file): + """Test previous command failure.""" + wf_commons["steps"][0]["application_name"] = "Gauss" + wf_commons["steps"][0]["application_version"] = wf_commons["config_version"] + wf_commons["job_type"] = "MCSimulation" + wf_commons["step_status"] = StepStatus.Failed + + WorkflowCommons(**wf_commons).save(job_path) + + report_bk.execute(job_path) + + assert not Path(bookkeeping_file).exists() diff --git a/test/test_command_failover_request.py b/test/test_command_failover_request.py new file mode 100644 index 0000000..aeac671 --- /dev/null +++ b/test/test_command_failover_request.py @@ -0,0 +1,251 @@ +"""Test for the FailoverRequest command class.""" + +import json +from pathlib import Path + +import pytest +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from DIRAC.WorkloadManagementSystem.Client.JobReport import JobReport +from DIRACCommon.Core.Utilities.ReturnValues import S_ERROR, S_OK +from pytest_mock import MockerFixture + +from dirac_cwl.commands import CreateFailoverRequest +from dirac_cwl.commands.workflow_commons import WorkflowCommons + + +class TestCreateFailoverRequest: + """Collection of tests for the FailoverRequest command.""" + + @pytest.fixture + def failover_request(self, mocker: MockerFixture, wf_commons, job_path): + """FailoverRequest mocked command. + + Cleans created files after execution. + """ + mocker.patch( + "DIRAC.RequestManagementSystem.private.RequestValidator.RequestValidator.validate", return_value=S_OK() + ) + + command = CreateFailoverRequest() + command.request = Request() + command.file_report = FileReport() + command.failover_transfer = FailoverTransfer(command.request) + command.job_report = JobReport(wf_commons["job_id"]) + + mocker.patch.object(command.file_report, "setFileStatus") + mocker.patch.object(command.job_report, "setApplicationStatus") + + yield command + + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + + def test_failover_request_success( + self, mocker: MockerFixture, failover_request, job_path, wf_commons, request_file + ): + """Test successful execution of FailoverRequest module.""" + problematic_files = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000287_1.ew.dst", + ] + + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.getFiles", side_effect=[problematic_files, []] + ) + mocker.patch("DIRAC.TransformationSystem.Client.FileReport.FileReport.commit", return_value=S_OK("Anything")) + + wf_commons["inputs"] = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + "/lhcb/data/2011/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + ] + problematic_files + + WorkflowCommons(**wf_commons).save(job_path) + + failover_request.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the FileReport calls: the problematic file should not appear + # The input files should be set to "Processed" + assert failover_request.file_report.setFileStatus.call_count == 2 + args = failover_request.file_report.setFileStatus.call_args_list + assert args[0][0][0] == int(updated_wf_commons.production_id) + assert args[0][0][1] == updated_wf_commons.inputs[0] + assert args[0][0][2] == "Processed" + + assert args[1][0][0] == int(updated_wf_commons.production_id) + assert args[1][0][1] == updated_wf_commons.inputs[1] + assert args[1][0][2] == "Processed" + + # Make sure the appliction is successfully finished + assert failover_request.job_report.setApplicationStatus.call_count == 1 + assert failover_request.job_report.setApplicationStatus.call_args[0][0] == "Job Finished Successfully" + + # Make sure the forward DISET is not generated + operations = json.loads(failover_request.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + # Make sure the request json does not exists + assert not Path(request_file).exists() + + def test_failover_request_commitFailure1( + self, mocker: MockerFixture, failover_request, job_path, wf_commons, request_file + ): + """Test execution of FailoverRequest module when the fileReport.commit() fails. + + In this context, the second call to commit() will work, so the request should not be generated. + """ + problematic_files = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000287_1.ew.dst", + ] + # Both calla to getFiles() will return the problematic files because the commit did not work + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.getFiles", + side_effect=[problematic_files, problematic_files], + ) + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.commit", side_effect=[S_ERROR("Error"), S_OK(None)] + ) + + wf_commons["inputs"] = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + "/lhcb/data/2011/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + ] + problematic_files + + WorkflowCommons(**wf_commons).save(job_path) + + failover_request.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the FileReport calls: the problematic file should not appear + # The input files should be set to "Processed" + assert failover_request.file_report.setFileStatus.call_count == 2 + args = failover_request.file_report.setFileStatus.call_args_list + assert args[0][0][0] == int(updated_wf_commons.production_id) + assert args[0][0][1] == updated_wf_commons.inputs[0] + assert args[0][0][2] == "Processed" + + assert args[1][0][0] == int(updated_wf_commons.production_id) + assert args[1][0][1] == updated_wf_commons.inputs[1] + assert args[1][0][2] == "Processed" + + # Make sure the appliction is successfully finished + assert failover_request.job_report.setApplicationStatus.call_count == 1 + assert failover_request.job_report.setApplicationStatus.call_args[0][0] == "Job Finished Successfully" + + # Make sure the forward DISET is generated + operations = json.loads(failover_request.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + # Make sure the request json does not exists + assert not Path(request_file).exists() + + def test_failover_request_commitFailure2( + self, mocker: MockerFixture, failover_request, job_path, wf_commons, request_file + ): + """Test execution of FailoverRequest module when the fileReport.commit() fails. + + In this context, the second call to commit() will fail, so the request should be generated. + """ + problematic_files = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000287_1.ew.dst", + ] + # Both calla to getFiles() will return the problematic files because the commit did not work + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.getFiles", + side_effect=[problematic_files, problematic_files], + ) + + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.commit", + side_effect=[S_ERROR("Error"), S_ERROR("Error")], + ) + + wf_commons["inputs"] = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + "/lhcb/data/2011/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + ] + problematic_files + + WorkflowCommons(**wf_commons).save(job_path) + + failover_request.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the FileReport calls: the problematic file should not appear + # The input files should be set to "Processed" + assert failover_request.file_report.setFileStatus.call_count == 2 + args = failover_request.file_report.setFileStatus.call_args_list + assert args[0][0][0] == int(updated_wf_commons.production_id) + assert args[0][0][1] == updated_wf_commons.inputs[0] + assert args[0][0][2] == "Processed" + + assert args[1][0][0] == int(updated_wf_commons.production_id) + assert args[1][0][1] == updated_wf_commons.inputs[1] + assert args[1][0][2] == "Processed" + + # Make sure the appliction is successfully finished + assert failover_request.job_report.setApplicationStatus.call_count == 1 + assert failover_request.job_report.setApplicationStatus.call_args[0][0] == "Job Finished Successfully" + + # Make sure the forward DISET is generated + operations = json.loads(failover_request.request.toJSON()["Value"])["Operations"] + + assert len(operations) == 1 + assert operations[0]["Type"] == "SetFileStatus" + + # Make sure the request json does not exists + assert Path(request_file).exists() + + def test_failover_request_previousError_fail( + self, mocker: MockerFixture, failover_request, job_path, wf_commons, request_file + ): + """Test FailoverRequest with an intentional failure.""" + problematic_files = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000287_1.ew.dst", + ] + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.getFiles", + side_effect=[problematic_files, problematic_files], + ) + mocker.patch( + "DIRAC.TransformationSystem.Client.FileReport.FileReport.commit", + side_effect=[S_ERROR("Error"), S_OK("Error")], + ) + + wf_commons["inputs"] = [ + "/lhcb/data/2010/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + "/lhcb/data/2011/EW.DST/00008380/0000/00008380_00000281_1.ew.dst", + ] + problematic_files + + # Intentional error + wf_commons["step_status"] = "Failed" + + WorkflowCommons(**wf_commons).save(job_path) + + failover_request.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the FileReport calls: the problematic file should not appear + # The input files should be set to "Unused" + assert failover_request.file_report.setFileStatus.call_count == 2 + args = failover_request.file_report.setFileStatus.call_args_list + assert args[0][0][0] == int(updated_wf_commons.production_id) + assert args[0][0][1] == updated_wf_commons.inputs[0] + assert args[0][0][2] == "Unused" + + assert args[1][0][0] == int(updated_wf_commons.production_id) + assert args[1][0][1] == updated_wf_commons.inputs[1] + assert args[1][0][2] == "Unused" + + # Make sure the appliction is not reported as a success + assert failover_request.job_report.setApplicationStatus.call_count == 0 + + # Make sure the forward DISET is not generated + operations = json.loads(failover_request.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + # Make sure the request json does not exists + assert not Path(request_file).exists() diff --git a/test/test_command_upload_log_file.py b/test/test_command_upload_log_file.py new file mode 100644 index 0000000..a808c3e --- /dev/null +++ b/test/test_command_upload_log_file.py @@ -0,0 +1,377 @@ +"""Test for the UploadLogFile command class.""" + +import json +import shutil +import zipfile +from pathlib import Path + +import pytest +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRACCommon.Core.Utilities.ReturnValues import S_ERROR, S_OK +from pytest_mock import MockerFixture + +from dirac_cwl.commands import UploadLogFile +from dirac_cwl.commands.workflow_commons import WorkflowCommons + + +class TestUploadLogFile: + """Collection of tests for the UploadLogFile command.""" + + @pytest.fixture + def uplogfile(self, mocker: MockerFixture, wf_commons, job_path): + """Fixture for UploadLogFile module.""" + command = UploadLogFile() + command.request = Request() + command.failover_transfer = FailoverTransfer(command.request) + + mocker.patch.object(command, "job_report") + mocker.patch.object(command.job_report, "setJobParameter") + mocker.patch.object(command.job_report, "setApplicationStatus") + mocker.patch.object(command.failover_transfer, "transferAndRegisterFile", return_value=S_OK()) + + yield command + + Path(job_path).joinpath(f"{wf_commons['prod_job_id']}.zip").unlink(missing_ok=True) + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + + shutil.rmtree(Path("unzipped"), ignore_errors=True) + + @pytest.fixture + def prodconf_json(self, job_path): + """prodconf.json file fixture.""" + file = Path(job_path).joinpath("prodConf_example.json") + + with open(file, "w") as f: + f.write('{"foo": "bar"}') + + yield file.name + + file.unlink(missing_ok=True) + + @pytest.fixture + def prodconf_py(self, job_path): + """prodconf.py file fixture.""" + file = Path(job_path).joinpath("prodConf_example.py") + + with open(file, "w") as f: + f.write('foo = "bar"') + + yield file.name + + file.unlink(missing_ok=True) + + # Test Scenarios + def test_uploadLogFile_success( + self, mocker: MockerFixture, uplogfile, job_path, wf_commons, prodconf_json, prodconf_py + ): + """Test successful execution of UploadLogFile module.""" + log_url = "notImportant" + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_OK({"Failed": [], "Successful": {log_url: log_url}}), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + assert log_dir.joinpath(prodconf_json).exists() + assert log_dir.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert log_dir.joinpath(prodconf_py).exists() + assert log_dir.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + for file in log_dir.iterdir(): + assert file.stat().st_mode & 0o777 == 0o755 + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert zipFile.exists() + + zipfile.ZipFile(zipFile, "r").extractall("unzipped") + unzipped = Path("unzipped").joinpath(updated_wf_commons.prod_job_id, job_path) + assert unzipped.joinpath(prodconf_json).exists() + assert unzipped.joinpath(prodconf_py).exists() + assert unzipped.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert unzipped.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 2 + + # Make sure that the request was not created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 0 + + # Make sure the application status was not changed + assert uplogfile.job_report.setApplicationStatus.call_count == 0 + + # Check the job_report.setParameter arguments + assert uplogfile.job_report.setJobParameter.call_count == 1 + assert uplogfile.job_report.setJobParameter.call_args_list + params = uplogfile.job_report.setJobParameter.call_args_list[0][0] + assert params[0] == "Log URL" + assert params[1] == f'Log file directory' + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) + + def test_uploadLogFile_noOutputFile(self, mocker: MockerFixture, uplogfile, job_path, wf_commons): + """Test execution of UploadLogFile module when there is no output files. + + * populateLogDirectory should return an error, because there is no "successful" files in log_dir. + """ + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_OK({"Failed": [], "Successful": {"notImportant": "notImportant"}}), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + # Make sure log_dir is an empty directory + assert not list(log_dir.iterdir()) + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert not zipFile.exists() + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 0 + + # Make sure that the request was not created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 0 + + # Make sure the application status was changed + assert uplogfile.job_report.setApplicationStatus.call_count == 1 + assert uplogfile.job_report.setJobParameter.call_count == 0 + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) + + def test_uploadLogFile_zipException( + self, mocker: MockerFixture, uplogfile, job_path, wf_commons, prodconf_json, prodconf_py + ): + """Test execution of UploadLogFile module when an exception is raised when zipping files.""" + mocker.patch("LHCbDIRAC.Workflow.Modules.UploadLogFile.zipFiles", side_effect=OSError) + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_OK({"Failed": [], "Successful": {"notImportant": "notImportant"}}), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + assert log_dir.joinpath(prodconf_json).exists() + assert log_dir.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert log_dir.joinpath(prodconf_py).exists() + assert log_dir.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + for file in log_dir.iterdir(): + assert file.stat().st_mode & 0o777 == 0o755 + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert not zipFile.exists() + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 0 + + # Make sure that the request was not created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 0 + + # Make sure the application status was changed + assert uplogfile.job_report.setApplicationStatus.call_count == 1 + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) + + def test_uploadLogFile_zipError( + self, mocker: MockerFixture, uplogfile, job_path, wf_commons, prodconf_json, prodconf_py + ): + """Test execution of UploadLogFile module when an error is occurring when zipping files.""" + mocker.patch("LHCbDIRAC.Workflow.Modules.UploadLogFile.zipFiles", return_value=S_ERROR("Error")) + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_OK({"Failed": [], "Successful": {"notImportant": "notImportant"}}), + ) + + # Execute the module + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + assert log_dir.joinpath(prodconf_json).exists() + assert log_dir.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert log_dir.joinpath(prodconf_py).exists() + assert log_dir.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + for file in log_dir.iterdir(): + assert file.stat().st_mode & 0o777 == 0o755 + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert not zipFile.exists() + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 0 + + # Make sure that the request was not created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 0 + + # Make sure the application status was changed + assert uplogfile.job_report.setApplicationStatus.call_count == 1 + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) + + def test_uploadLogFile_SEError( + self, mocker: MockerFixture, uplogfile, job_path, wf_commons, prodconf_json, prodconf_py + ): + """Test execution of UploadLogFile module when an error is occurring when calling StorageElement.""" + mocker.patch("LHCbDIRAC.Workflow.Modules.UploadLogFile.getDestinationSEList", return_value=["SE1", "SE2"]) + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_ERROR("Error"), + ) + mocker.patch.object( + uplogfile.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "SE1"}), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + assert log_dir.joinpath(prodconf_json).exists() + assert log_dir.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert log_dir.joinpath(prodconf_py).exists() + assert log_dir.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + for file in log_dir.iterdir(): + assert file.stat().st_mode & 0o777 == 0o755 + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert zipFile.exists() + + zipfile.ZipFile(zipFile, "r").extractall("unzipped") + unzipped = Path("unzipped").joinpath(updated_wf_commons.prod_job_id, job_path) + assert unzipped.joinpath(prodconf_json).exists() + assert unzipped.joinpath(prodconf_py).exists() + assert unzipped.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert unzipped.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 2 + + # Make sure that the request was created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 1 + + operations = json.loads(uplogfile.request.toJSON()["Value"])["Operations"] + + assert len(operations) == 2 + assert operations[0]["Type"] == "LogUpload" + assert len(operations[0]["Files"]) == 1 + assert operations[0]["Files"][0]["LFN"] == updated_wf_commons.log_lfn_path + + assert operations[1]["Type"] == "RemoveFile" + assert len(operations[1]["Files"]) == 1 + assert operations[1]["Files"][0]["LFN"] == updated_wf_commons.log_lfn_path + + # Make sure the application status was not changed + assert uplogfile.job_report.setApplicationStatus.call_count == 0 + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) + + def test_uploadLogFile_transferError( + self, mocker: MockerFixture, uplogfile, job_path, wf_commons, prodconf_json, prodconf_py + ): + """Test execution of UploadLogFile module when calling StorageElement and FailoverTransfer fail.""" + mocker.patch("LHCbDIRAC.Workflow.Modules.UploadLogFile.getDestinationSEList", return_value=["SE1", "SE2"]) + mock_se_method = mocker.patch( + "DIRAC.Resources.Storage.StorageElement.StorageElementItem._StorageElementItem__executeMethod", + return_value=S_ERROR("Error"), + ) + mocker.patch.object( + uplogfile.failover_transfer, + "transferAndRegisterFile", + return_value=S_ERROR("Error"), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + uplogfile.execute(job_path) + + updated_wf_commons = WorkflowCommons.load(job_path) + + # Check the log directory + assert updated_wf_commons.log_dir != "" + log_dir = Path(updated_wf_commons.log_dir) + assert log_dir.exists() + assert log_dir.is_dir() + assert log_dir.joinpath(prodconf_json).exists() + assert log_dir.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert log_dir.joinpath(prodconf_py).exists() + assert log_dir.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + for file in log_dir.iterdir(): + assert file.stat().st_mode & 0o777 == 0o755 + + # Check the generated zip file + zipFile = Path(job_path).joinpath(f"{updated_wf_commons.prod_job_id}.zip") + assert zipFile.exists() + + zipfile.ZipFile(zipFile, "r").extractall("unzipped") + unzipped = Path("unzipped").joinpath(updated_wf_commons.prod_job_id, job_path) + assert unzipped.joinpath(prodconf_json).exists() + assert unzipped.joinpath(prodconf_py).exists() + assert unzipped.joinpath(prodconf_json).read_text() == '{"foo": "bar"}' + assert unzipped.joinpath(prodconf_py).read_text() == 'foo = "bar"' + + # Make sure that StorageElement was called twice (getURL, putFile) + assert mock_se_method.call_count == 2 + + # Make sure that the request was not created + assert uplogfile.failover_transfer.transferAndRegisterFile.call_count == 1 + + operations = json.loads(uplogfile.request.toJSON()["Value"])["Operations"] + + assert len(operations) == 0 + + # Make sure the application status was changed + assert uplogfile.job_report.setApplicationStatus.call_count == 1 + + shutil.rmtree(updated_wf_commons.log_dir, ignore_errors=True) diff --git a/test/test_command_upload_output_data.py b/test/test_command_upload_output_data.py new file mode 100644 index 0000000..bd10c70 --- /dev/null +++ b/test/test_command_upload_output_data.py @@ -0,0 +1,614 @@ +"""Test for the UploadOutputDataFile command class.""" + +import json +from pathlib import Path + +import pytest +from DIRAC.DataManagementSystem.Client.FailoverTransfer import FailoverTransfer +from DIRAC.RequestManagementSystem.Client.File import File +from DIRAC.RequestManagementSystem.Client.Operation import Operation +from DIRAC.RequestManagementSystem.Client.Request import Request +from DIRAC.TransformationSystem.Client.FileReport import FileReport +from DIRAC.WorkloadManagementSystem.Client.JobReport import JobReport +from DIRACCommon.Core.Utilities.ReturnValues import S_ERROR, S_OK +from LHCbDIRAC.BookkeepingSystem.Client.BookkeepingClient import BookkeepingClient +from pytest_mock import MockerFixture + +from dirac_cwl.commands import UploadOutputData +from dirac_cwl.commands.workflow_commons import StepStatus, WorkflowCommons +from dirac_cwl.core.exceptions import WorkflowProcessingException + + +class TestUploadOutputDataFile: + """Collection of tests for the UploadOutputData command.""" + + OUTPUT_DATA_STEP = "1" + + @pytest.fixture + def sim_file(self, wf_commons, job_path): + """Sim result file fixture.""" + path = Path(job_path).joinpath( + f"{wf_commons['production_id']}_{wf_commons['prod_job_id']}_{self.OUTPUT_DATA_STEP}.sim" + ) + + with open(path, "w") as f: + f.write("Bookkeeping file content") + + yield str(path.name) + + path.unlink(missing_ok=True) + + @pytest.fixture + def bk_file(self, wf_commons, job_path): + """Bookkeeping file fixture.""" + path = Path(job_path).joinpath(f"bookkeeping_{wf_commons['production_id']}_{wf_commons['prod_job_id']}.xml") + + with open(path, "w") as f: + f.write("Sim file content") + + yield str(path) + + path.unlink(missing_ok=True) + + @pytest.fixture + def upload_output(self, mocker: MockerFixture, wf_commons, job_path): + """Fixture for UploadOutputData module.""" + mocker.patch("dirac_cwl.commands.upload_output_data.getDestinationSEList", return_value=["CERN", "CNAF"]) + mocker.patch("LHCbDIRAC.Workflow.Modules.UploadOutputData.getDestinationSEList", return_value=["CERN", "CNAF"]) + + # Mock FileCatalog + mocker.patch("DIRAC.Resources.Catalog.FileCatalog.FileCatalog.__init__", return_value=None) + mocker.patch("DIRAC.Resources.Catalog.FileCatalog.FileCatalog.__getattr__", return_value=lambda x: S_OK({})) + + if "ProductionOutputData" in wf_commons: + wf_commons.pop("ProductionOutputData") + + command = UploadOutputData() + command.request = Request() + command.failover_transfer = FailoverTransfer(command.request) + command.bk_client = BookkeepingClient() + command.file_report = FileReport() + command.job_report = JobReport(wf_commons["job_id"]) + + mocker.patch.object(command.bk_client, "sendXMLBookkeepingReport", return_value=S_OK()) + mocker.patch.object(command.file_report, "setFileStatus") + mocker.patch.object(command.job_report, "setJobParameter") + + yield command + + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + Path(job_path).joinpath("DISABLE_WATCHDOG_CPU_WALLCLOCK_CHECK").unlink(missing_ok=True) + + # Test Scenarios + def test_uploadOutputData_success( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test successful execution of UploadOutputData module. + + * The output should be uploaded and registered in the bookkeeping system. + * The bookkeeping report should be sent and the job parameter updated. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the forward DISET is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + def test_uploadOutputData_failedBKRegistration( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when the BK registation fails. + + * The output should be uploaded but not registered in the bookkeeping system now. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + # BK registration failure + mocker.patch( + "DIRAC.Resources.Catalog.FileCatalog.FileCatalog.__getattr__", + return_value=lambda x: S_OK( + { + "Failed": { + f"/lhcb/{wf_commons['config_name']}/{wf_commons['config_version']}/" + f"SIM/00000{wf_commons['production_id']}/0000/{sim_file}": "error" + } + } + ), + ) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the request is generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 1 + + assert operations[0]["Type"] == "RegisterFile" + assert operations[0]["Catalog"] == "BookkeepingDB" + assert sim_file in operations[0]["Files"][0]["LFN"] + + def test_uploadOutputData_postponeBKRegistration( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when there is already a RegisterFile operation on the output. + + * The output should be uploaded but not registered in the bookkeeping system now. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + # Mock a previous failover request: the BK registration should be postponed and added to the request + file1 = File() + file1.LFN = ( + f"/lhcb/{wf_commons['config_name']}/{wf_commons['config_version']}" + f"/SIM/00000{wf_commons['production_id']}/0000/{sim_file}" + ) + o1 = Operation() + o1.Type = "RegisterFile" + o1.addFile(file1) + upload_output.request.addOperation(o1) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + # Execute module + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the request is generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 2 + + assert operations[0]["Type"] == "RegisterFile" + assert operations[0]["Catalog"] is None + assert sim_file in operations[0]["Files"][0]["LFN"] + + assert operations[1]["Type"] == "RegisterFile" + assert operations[1]["Catalog"] == "BookkeepingDB" + assert sim_file in operations[1]["Files"][0]["LFN"] + + def test_uploadOutputData_errorBKRegistration( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when an error occurs during the BK registation. + + * The output should be uploaded but not registered in the bookkeeping system at all. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + # BK registration failure + mocker.patch( + "DIRAC.Resources.Catalog.FileCatalog.FileCatalog.__getattr__", + return_value=lambda x: S_ERROR("Error registering file"), + ) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + # BK registration failure + mocker.patch( + "DIRAC.Resources.Catalog.FileCatalog.FileCatalog.__getattr__", + return_value=lambda x: S_ERROR("Error registering file"), + ) + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException, match="Could Not Perform BK Registration"): + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the request is generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + def test_uploadOutputData_failUpload1( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when there is a 1st failure to upload outputs. + + * The output should be uploaded correctly with the second method. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_ERROR("Error uploading file"), + ) + + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFileFailover", + return_value=S_OK(), + ) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the request is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + def test_uploadOutputData_failUpload2( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when there is a 2 failures to upload outputs. + + * A request should be generated to upload outputs later. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_ERROR("Error uploading file"), + ) + + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFileFailover", + return_value=S_ERROR("Error uploading file"), + ) + + # Mock a previous failover request: + # Add the end of the execution, o1 should be removed + file1 = File() + file1.LFN = ( + f"/lhcb/{wf_commons['config_name']}/{wf_commons['config_version']}" + f"/SIM/00000{wf_commons['production_id']}/0000/{sim_file}" + ) + file2 = File() + file2.LFN = "/another/file.txt" + + o1 = Operation() + o1.Type = "RegisterFile" + o1.addFile(file1) + o2 = Operation() + o2.Type = "RegisterFile" + o2.addFile(file2) + + upload_output.request.addOperation(o1) + upload_output.request.addOperation(o2) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + # Execute module + with pytest.raises(WorkflowProcessingException, match="Failed to upload output data"): + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.job_report.setJobParameter.call_count == 0 + + # Make sure the request is generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 2 + + assert operations[0]["Type"] == "RegisterFile" + assert operations[0]["TargetSE"] is None + assert operations[0]["SourceSE"] is None + assert sim_file not in operations[0]["Files"][0]["LFN"] + + assert operations[1]["Type"] == "RemoveFile" + assert operations[1]["TargetSE"] is None + assert operations[1]["SourceSE"] is None + assert sim_file in operations[1]["Files"][0]["LFN"] + + def test_uploadOutputData_BKReportError( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when the BK report cannot be sent. + + * The output should be uploaded and registered in the bookkeeping system. + * The bookkeeping report should be added to a failover request. + """ + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFileFailover", + return_value=S_ERROR("Error uploading file"), + ) + + mocker.patch.object( + upload_output.bk_client, + "sendXMLBookkeepingReport", + return_value={"OK": False, "rpcStub": "Error", "Message": "Error sending BK report"}, + ) + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 1 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 1 + assert upload_output.failover_transfer.transferAndRegisterFile.call_args[1]["fileName"] == str(sim_file) + + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 1 + assert upload_output.job_report.setJobParameter.call_args[0][0] == "UploadedOutputData" + assert upload_output.job_report.setJobParameter.call_args[0][1] == str(sim_file) + + # Make sure the request is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 1 + + assert operations[0]["Type"] == "ForwardDISET" + + def test_uploadOutputData_withDescendents( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file, bk_file + ): + """Test execution of UploadOutputData module when there is already file descendants. + + It means that the input data has already been processed. + * The output should not be uploaded and registered in the bookkeeping system. + * The bookkeeping report should not be sent. + """ + mocker.patch( + "dirac_cwl.commands.upload_output_data.getFileDescendents", return_value=S_OK(["/path/to/other/file.txt"]) + ) + + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + mocker.patch.object(upload_output.bk_client, "sendXMLBookkeepingReport") + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["inputs"] = ["AnyInputFile1"] + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + WorkflowCommons(**wf_commons).save(job_path) + + with pytest.raises(WorkflowProcessingException): + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.assert_called_once + assert upload_output.file_report.setFileStatus.call_args[0][0] == int(wf_commons["production_id"]) + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 0 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 0 + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 0 + + # Make sure the request is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + def test_uploadOutputData_noOutput(self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file): + """Test UploadOutputData with no output data.""" + mocker.patch.object( + upload_output.failover_transfer, + "transferAndRegisterFile", + return_value=S_OK({"uploadedSE": "CERN", "lfn": sim_file}), + ) + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + mocker.patch.object(upload_output.bk_client, "sendXMLBookkeepingReport") + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + # Remove the output + Path(job_path).joinpath(sim_file).unlink(missing_ok=True) + + WorkflowCommons(**wf_commons).save(job_path) + + # Execute module + with pytest.raises(WorkflowProcessingException, match="Output data not found"): + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 0 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 0 + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 0 + + # Make sure the request is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 + + def test_uploadOutputData_previousError_fail( + self, mocker: MockerFixture, upload_output, job_path, wf_commons, sim_file + ): + """Test UploadOutputData with an intentional failure.""" + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFile") + + mocker.patch.object(upload_output.failover_transfer, "transferAndRegisterFileFailover") + + mocker.patch.object(upload_output.bk_client, "sendXMLBookkeepingReport") + + wf_commons["outputs"] = [ + {"outputDataName": sim_file, "outputDataType": "sim", "outputBKType": "SIM", "stepName": "Gauss_1"} + ] + wf_commons["output_SEs"] = { + "SIM": ["Tier1-Buffer"], + } + wf_commons["output_data_step"] = self.OUTPUT_DATA_STEP + + wf_commons["step_status"] = StepStatus.Failed + + Path(sim_file).unlink(missing_ok=True) + + WorkflowCommons(**wf_commons).save(job_path) + + upload_output.execute(job_path) + + assert upload_output.file_report.setFileStatus.call_count == 0 + assert upload_output.bk_client.sendXMLBookkeepingReport.call_count == 0 + + assert upload_output.failover_transfer.transferAndRegisterFile.call_count == 0 + assert upload_output.failover_transfer.transferAndRegisterFileFailover.call_count == 0 + + assert upload_output.job_report.setJobParameter.call_count == 0 + + # Make sure the request is not generated + operations = json.loads(upload_output.request.toJSON()["Value"])["Operations"] + assert len(operations) == 0 diff --git a/test/test_command_workflow_accounting.py b/test/test_command_workflow_accounting.py new file mode 100644 index 0000000..8f4157e --- /dev/null +++ b/test/test_command_workflow_accounting.py @@ -0,0 +1,185 @@ +"""Test for the RegisterAccountingReport command class.""" + +from pathlib import Path +from textwrap import dedent + +import pytest +from DIRAC.AccountingSystem.Client.DataStoreClient import DataStoreClient +from pytest_mock import MockerFixture + +from dirac_cwl.commands import RegisterAccountingReport +from dirac_cwl.commands.workflow_commons import StepStatus, WorkflowCommons + + +class TestRegisterAccountingReport: + """Collection of tests for the RegisterAccountingReport command.""" + + @pytest.fixture + def accounting(self, mocker: MockerFixture, job_path): + """Fixture for RegisterAccountingReport module.""" + command = RegisterAccountingReport() + + command.dsc = DataStoreClient() + mocker.patch.object(command.dsc, "addRegister") + + yield command + + Path(job_path).joinpath("workflow_commons.json").unlink(missing_ok=True) + + # Test Scenarios + def test_accounting_success(self, mocker: MockerFixture, job_path, accounting, wf_commons, xml_summary_file): + """Test successful execution of RegisterAccountingReport module.""" + wf_commons["steps"][0]["application_name"] = "Gauss" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["bk_id"] = "12345" + wf_commons["steps"][0]["proc_pass"] = "Sim09m" + wf_commons["steps"][0]["event_type"] = "23103003" + + WorkflowCommons(**wf_commons).save(job_path) + + accounting.execute(job_path) + + WorkflowCommons.load(job_path) + + # Make sure the dsc was called + assert accounting.dsc.addRegister.assert_called_once + + def test_accounting_noApplicationName_fail( + self, mocker: MockerFixture, job_path, accounting, wf_commons, xml_summary_file + ): + """Test RegisterAccountingReport when there is no application name in step commons.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + + wf_commons["steps"][0]["application_name"] = None + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + + WorkflowCommons(**wf_commons).save(job_path) + + accounting.execute(job_path) + + WorkflowCommons.load(job_path) + + # Make sure the dsc was not called + assert accounting.dsc.addRegister.assert_not_called + + def test_accounting_incompleteData_success( + self, mocker: MockerFixture, job_path, accounting, wf_commons, xml_summary_file + ): + """Test successful execution of RegisterAccountingReport module.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["application_name"] = "Gauss" + + WorkflowCommons(**wf_commons).save(job_path) + + accounting.execute(job_path) + + WorkflowCommons.load(job_path) + + # Make sure the dsc was not called + assert accounting.dsc.addRegister.assert_not_called + + def test_accounting_previousError_fail( + self, mocker: MockerFixture, job_path, accounting, wf_commons, xml_summary_file + ): + """Test RegisterAccountingReport with an intentional failure.""" + xml_content = dedent(""" + + True + finalize + + 866104.0 + + + 200 + + + 200 + + + """) + + with open(xml_summary_file, "w", encoding="utf-8") as f: + f.write(xml_content) + + wf_commons["steps"][0]["xml_summary_path"] = xml_summary_file + wf_commons["steps"][0]["application_name"] = "Gauss" + wf_commons["steps"][0]["bk_id"] = "12345" + wf_commons["steps"][0]["proc_pass"] = "Sim09m" + wf_commons["steps"][0]["event_type"] = "23103003" + wf_commons["step_status"] = StepStatus.Failed + + WorkflowCommons(**wf_commons).save(job_path) + + accounting.execute(job_path) + + WorkflowCommons.load(job_path) + + # Make sure the dsc was called + assert accounting.dsc.addRegister.assert_called_once diff --git a/test/test_job_wrapper.py b/test/test_job_wrapper.py index 848728d..5cb3719 100644 --- a/test/test_job_wrapper.py +++ b/test/test_job_wrapper.py @@ -53,15 +53,15 @@ async def test_execute(self, job_type_testing, sample_job, mocker, monkeypatch): # Initialization class PreProcessCmd(PreProcessCommand): - def execute(job_path, **kwargs): + def _execute(job_path, **kwargs): return class PostProcessCmd(PostProcessCommand): - def execute(job_path, **kwargs): + def _execute(job_path, **kwargs): return class DualProcessCmd(PreProcessCommand, PostProcessCommand): - def execute(job_path, **kwargs): + def _execute(job_path, **kwargs): return plugin = job_type_testing() @@ -114,7 +114,7 @@ async def test_command_exception(self, job_type_testing, sample_job, mocker, mon # Initialization and set the execute function to raise an exception class Command(PreProcessCommand, PostProcessCommand): - def execute(job_path, **kwargs): + def _execute(job_path, **kwargs): raise NotImplementedError() plugin = job_type_testing()