diff --git a/CMakeLists.txt b/CMakeLists.txt index c3e0860..7ded9df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,18 +6,18 @@ add_definitions(-DVERSION=\"v${PROJECT_VERSION}\") option(ENABLE_OPTIM "Enable build with -O3 optimization level" ON) option(BUILD_STATIC "Whether or not to build with static libraries" OFF) if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") - set(ENABLE_UDEV OFF) + set(ENABLE_UDEV OFF) else() - option(ENABLE_UDEV "use udev to search JTAG adapter from /dev/xx" ON) + option(ENABLE_UDEV "use udev to search JTAG adapter from /dev/xx" ON) endif() option(ENABLE_CMSISDAP "enable cmsis DAP interface (requires hidapi)" ON) option(ENABLE_GOWIN_GWU2X "enable Gowin GWU2X interface" ON) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - option(ENABLE_LIBGPIOD "enable libgpiod bitbang driver (requires libgpiod)" ON) - option(ENABLE_REMOTEBITBANG "enable remote bitbang driver" ON) + option(ENABLE_LIBGPIOD "enable libgpiod bitbang driver (requires libgpiod)" ON) + option(ENABLE_REMOTEBITBANG "enable remote bitbang driver" ON) else() - set(ENABLE_LIBGPIOD OFF) - set(ENABLE_REMOTEBITBANG OFF) + set(ENABLE_LIBGPIOD OFF) + set(ENABLE_REMOTEBITBANG OFF) endif() option(USE_PKGCONFIG "Use pkgconfig to find libraries" ON) option(LINK_CMAKE_THREADS "Use CMake find_package to link the threading library" OFF) @@ -29,12 +29,12 @@ set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wextra ${CMAKE_CXX_FLAGS_DEBUG}") if(ENABLE_OPTIM AND NOT(CMAKE_BUILD_TYPE STREQUAL "Debug")) - set(CMAKE_CXX_FLAGS "-O3 ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-O3 ${CMAKE_CXX_FLAGS}") endif() if (BUILD_STATIC) - set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static ${CMAKE_EXE_LINKER_FLAGS}") - set(BUILD_SHARED_LIBS OFF) + set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static ${CMAKE_EXE_LINKER_FLAGS}") + set(BUILD_SHARED_LIBS OFF) endif() include(GNUInstallDirs) @@ -45,290 +45,290 @@ add_definitions(-DISE_DIR=\"${ISE_PATH}\") add_definitions(-DBLASTERII_DIR=\"${BLASTERII_PATH}\") if (USE_PKGCONFIG) - find_package(PkgConfig REQUIRED) - pkg_check_modules(LIBFTDI REQUIRED libftdi1) - pkg_check_modules(LIBUSB REQUIRED libusb-1.0) - pkg_check_modules(HIDAPI hidapi-libusb) - # if libusb not found try with hidraw - if (NOT HIDAPI_FOUND) - pkg_check_modules(HIDAPI hidapi-hidraw) - endif() - if (NOT HIDAPI_FOUND) - pkg_check_modules(HIDAPI hidapi) - endif() - # zlib support (gzip) - pkg_check_modules(ZLIB zlib) - if (NOT ZLIB_FOUND) - # try zlib-ng - pkg_check_modules(ZLIB zlib-ng) - if (ZLIB_FOUND) - add_definitions(-DHAS_ZLIBNG) - else() - message(FATAL_ERROR "Could find ZLIB") - endif() - endif(NOT ZLIB_FOUND) + find_package(PkgConfig REQUIRED) + pkg_check_modules(LIBFTDI REQUIRED libftdi1) + pkg_check_modules(LIBUSB REQUIRED libusb-1.0) + pkg_check_modules(HIDAPI hidapi-libusb) + # if libusb not found try with hidraw + if (NOT HIDAPI_FOUND) + pkg_check_modules(HIDAPI hidapi-hidraw) + endif() + if (NOT HIDAPI_FOUND) + pkg_check_modules(HIDAPI hidapi) + endif() + # zlib support (gzip) + pkg_check_modules(ZLIB zlib) + if (NOT ZLIB_FOUND) + # try zlib-ng + pkg_check_modules(ZLIB zlib-ng) + if (ZLIB_FOUND) + add_definitions(-DHAS_ZLIBNG) + else() + message(FATAL_ERROR "Could find ZLIB") + endif() + endif(NOT ZLIB_FOUND) - if (ENABLE_UDEV) - pkg_check_modules(LIBUDEV libudev) - if (LIBUDEV_FOUND) - add_definitions(-DUSE_UDEV) - else() - message("libudev not found, disabling udev support and -D parameter") - set(ENABLE_UDEV OFF) - endif() - endif() + if (ENABLE_UDEV) + pkg_check_modules(LIBUDEV libudev) + if (LIBUDEV_FOUND) + add_definitions(-DUSE_UDEV) + else() + message("libudev not found, disabling udev support and -D parameter") + set(ENABLE_UDEV OFF) + endif() + endif() - if (ENABLE_LIBGPIOD) - pkg_check_modules(LIBGPIOD libgpiod) - if (NOT LIBGPIOD_FOUND) - message("libgpiod not found, disabling gpiod support") - set(ENABLE_LIBGPIOD OFF) - endif() - endif() + if (ENABLE_LIBGPIOD) + pkg_check_modules(LIBGPIOD libgpiod) + if (NOT LIBGPIOD_FOUND) + message("libgpiod not found, disabling gpiod support") + set(ENABLE_LIBGPIOD OFF) + endif() + endif() endif() set(OPENFPGALOADER_SOURCE - src/anlogic.cpp - src/anlogicBitParser.cpp - src/anlogicCable.cpp - src/ch552_jtag.cpp - src/common.cpp - src/dfu.cpp - src/dfuFileParser.cpp - src/dirtyJtag.cpp - src/ch347jtag.cpp - src/efinix.cpp - src/efinixHexParser.cpp - src/fx2_ll.cpp - src/ihexParser.cpp - src/pofParser.cpp - src/rawParser.cpp - src/spiFlash.cpp - src/spiInterface.cpp - src/usbBlaster.cpp - src/epcq.cpp - src/svf_jtag.cpp - src/display.cpp - src/jtag.cpp - src/ftdiJtagBitbang.cpp - src/ftdiJtagMPSSE.cpp - src/configBitstreamParser.cpp - src/ftdipp_mpsse.cpp - src/main.cpp - src/libusb_ll.cpp - src/gowin.cpp - src/device.cpp - src/jlink.cpp - src/progressBar.cpp - src/fsparser.cpp - src/mcsParser.cpp - src/ftdispi.cpp - src/altera.cpp - src/bitparser.cpp - src/xilinx.cpp - src/xilinxMapParser.cpp - src/colognechip.cpp - src/colognechipCfgParser.cpp - src/esp_usb_jtag.cpp + src/anlogic.cpp + src/anlogicBitParser.cpp + src/anlogicCable.cpp + src/ch552_jtag.cpp + src/common.cpp + src/dfu.cpp + src/dfuFileParser.cpp + src/dirtyJtag.cpp + src/ch347jtag.cpp + src/efinix.cpp + src/efinixHexParser.cpp + src/fx2_ll.cpp + src/ihexParser.cpp + src/pofParser.cpp + src/rawParser.cpp + src/spiFlash.cpp + src/spiInterface.cpp + src/usbBlaster.cpp + src/epcq.cpp + src/svf_jtag.cpp + src/display.cpp + src/jtag.cpp + src/ftdiJtagBitbang.cpp + src/ftdiJtagMPSSE.cpp + src/configBitstreamParser.cpp + src/ftdipp_mpsse.cpp + src/main.cpp + src/libusb_ll.cpp + src/gowin.cpp + src/device.cpp + src/jlink.cpp + src/progressBar.cpp + src/fsparser.cpp + src/mcsParser.cpp + src/ftdispi.cpp + src/altera.cpp + src/bitparser.cpp + src/xilinx.cpp + src/xilinxMapParser.cpp + src/colognechip.cpp + src/colognechipCfgParser.cpp + src/esp_usb_jtag.cpp ) set(OPENFPGALOADER_HEADERS - src/altera.hpp - src/anlogic.hpp - src/anlogicBitParser.hpp - src/anlogicCable.hpp - src/ch552_jtag.hpp - src/common.hpp - src/cxxopts.hpp - src/dfu.hpp - src/dfuFileParser.hpp - src/dirtyJtag.hpp - src/ch347jtag.hpp - src/efinix.hpp - src/efinixHexParser.hpp - src/fx2_ll.hpp - src/ihexParser.hpp - src/pofParser.hpp - src/progressBar.hpp - src/rawParser.hpp - src/usbBlaster.hpp - src/bitparser.hpp - src/ftdiJtagBitbang.hpp - src/ftdiJtagMPSSE.hpp - src/jlink.hpp - src/jtag.hpp - src/jtagInterface.hpp - src/libusb_ll.hpp - src/fsparser.hpp - src/part.hpp - src/board.hpp - src/display.hpp - src/mcsParser.hpp - src/ftdipp_mpsse.hpp - src/spiFlash.hpp - src/spiFlashdb.hpp - src/epcq.hpp - src/spiInterface.hpp - src/svf_jtag.hpp - src/configBitstreamParser.hpp - src/device.hpp - src/gowin.hpp - src/cable.hpp - src/ftdispi.hpp - src/xilinx.hpp - src/xilinxMapParser.hpp - src/colognechip.hpp - src/colognechipCfgParser.hpp - src/esp_usb_jtag.hpp + src/altera.hpp + src/anlogic.hpp + src/anlogicBitParser.hpp + src/anlogicCable.hpp + src/ch552_jtag.hpp + src/common.hpp + src/cxxopts.hpp + src/dfu.hpp + src/dfuFileParser.hpp + src/dirtyJtag.hpp + src/ch347jtag.hpp + src/efinix.hpp + src/efinixHexParser.hpp + src/fx2_ll.hpp + src/ihexParser.hpp + src/pofParser.hpp + src/progressBar.hpp + src/rawParser.hpp + src/usbBlaster.hpp + src/bitparser.hpp + src/ftdiJtagBitbang.hpp + src/ftdiJtagMPSSE.hpp + src/jlink.hpp + src/jtag.hpp + src/jtagInterface.hpp + src/libusb_ll.hpp + src/fsparser.hpp + src/part.hpp + src/board.hpp + src/display.hpp + src/mcsParser.hpp + src/ftdipp_mpsse.hpp + src/spiFlash.hpp + src/spiFlashdb.hpp + src/epcq.hpp + src/spiInterface.hpp + src/svf_jtag.hpp + src/configBitstreamParser.hpp + src/device.hpp + src/gowin.hpp + src/cable.hpp + src/ftdispi.hpp + src/xilinx.hpp + src/xilinxMapParser.hpp + src/colognechip.hpp + src/colognechipCfgParser.hpp + src/esp_usb_jtag.hpp ) # Lattice Drivers / Files parsers. list(APPEND OPENFPGALOADER_SOURCE - src/ice40.cpp - src/lattice.cpp - src/latticeSSPI.cpp - src/feaparser.cpp - src/jedParser.cpp - src/latticeBitParser.cpp + src/ice40.cpp + src/lattice.cpp + src/latticeSSPI.cpp + src/feaparser.cpp + src/jedParser.cpp + src/latticeBitParser.cpp ) list(APPEND OPENFPGALOADER_HEADERS - src/ice40.hpp - src/lattice.hpp - src/latticeSSPI.hpp - src/jedParser.hpp - src/feaparser.hpp - src/latticeBitParser.hpp + src/ice40.hpp + src/lattice.hpp + src/latticeSSPI.hpp + src/jedParser.hpp + src/feaparser.hpp + src/latticeBitParser.hpp ) link_directories( - ${LIBUSB_LIBRARY_DIRS} - ${LIBFTDI_LIBRARY_DIRS} + ${LIBUSB_LIBRARY_DIRS} + ${LIBFTDI_LIBRARY_DIRS} ) if (ENABLE_LIBGPIOD) - link_directories(${LIBGPIOD_LIBRARY_DIRS}) + link_directories(${LIBGPIOD_LIBRARY_DIRS}) endif() if (ENABLE_CMSISDAP AND HIDAPI_FOUND) - link_directories(${HIDAPI_LIBRARY_DIRS}) + link_directories(${HIDAPI_LIBRARY_DIRS}) endif() add_executable(openFPGALoader - ${OPENFPGALOADER_SOURCE} - ${OPENFPGALOADER_HEADERS} + ${OPENFPGALOADER_SOURCE} + ${OPENFPGALOADER_HEADERS} ) include_directories( - ${LIBUSB_INCLUDE_DIRS} - ${LIBFTDI_INCLUDE_DIRS} + ${LIBUSB_INCLUDE_DIRS} + ${LIBFTDI_INCLUDE_DIRS} ) target_link_libraries(openFPGALoader - ${LIBUSB_LIBRARIES} - ${LIBFTDI_LIBRARIES} + ${LIBUSB_LIBRARIES} + ${LIBFTDI_LIBRARIES} ) # Gowin GWU2X JTAG interface if(ENABLE_GOWIN_GWU2X) - target_sources(openFPGALoader PRIVATE src/gwu2x_jtag.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/gwu2x_jtag.hpp) - add_definitions(-DENABLE_GOWIN_GWU2X=1) - message("Gowin GWU2X support enabled") + target_sources(openFPGALoader PRIVATE src/gwu2x_jtag.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/gwu2x_jtag.hpp) + add_definitions(-DENABLE_GOWIN_GWU2X=1) + message("Gowin GWU2X support enabled") else() - message("Gowin GWU2X support disabled") + message("Gowin GWU2X support disabled") endif() if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") - # winsock provides ntohs - target_link_libraries(openFPGALoader ws2_32) + # winsock provides ntohs + target_link_libraries(openFPGALoader ws2_32) - target_sources(openFPGALoader PRIVATE src/pathHelper.cpp) - list(APPEND OPENFPGALOADER_HEADERS src/pathHelper.hpp) + target_sources(openFPGALoader PRIVATE src/pathHelper.cpp) + list(APPEND OPENFPGALOADER_HEADERS src/pathHelper.hpp) endif() # libusb_attach_kernel_driver is only available on Linux. if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - add_definitions(-DATTACH_KERNEL) + add_definitions(-DATTACH_KERNEL) endif() if (ENABLE_UDEV) - include_directories(${LIBUDEV_INCLUDE_DIRS}) - target_link_libraries(openFPGALoader ${LIBUDEV_LIBRARIES}) + include_directories(${LIBUDEV_INCLUDE_DIRS}) + target_link_libraries(openFPGALoader ${LIBUDEV_LIBRARIES}) endif() if (ENABLE_LIBGPIOD) - include_directories(${LIBGPIOD_INCLUDE_DIRS}) - target_link_libraries(openFPGALoader ${LIBGPIOD_LIBRARIES}) - add_definitions(-DENABLE_LIBGPIOD=1) - target_sources(openFPGALoader PRIVATE src/libgpiodJtagBitbang.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/libgpiodJtagBitbang.hpp) - if (LIBGPIOD_VERSION VERSION_GREATER_EQUAL 2) - message("libgpiod v2 support enabled") - add_definitions(-DGPIOD_APIV2) - else() - message("libgpiod v1 support enabled") - endif() + include_directories(${LIBGPIOD_INCLUDE_DIRS}) + target_link_libraries(openFPGALoader ${LIBGPIOD_LIBRARIES}) + add_definitions(-DENABLE_LIBGPIOD=1) + target_sources(openFPGALoader PRIVATE src/libgpiodJtagBitbang.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/libgpiodJtagBitbang.hpp) + if (LIBGPIOD_VERSION VERSION_GREATER_EQUAL 2) + message("libgpiod v2 support enabled") + add_definitions(-DGPIOD_APIV2) + else() + message("libgpiod v1 support enabled") + endif() endif(ENABLE_LIBGPIOD) if (ENABLE_JETSONNANOGPIO) - add_definitions(-DENABLE_JETSONNANOGPIO=1) - target_sources(openFPGALoader PRIVATE src/jetsonNanoJtagBitbang.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/jetsonNanoJtagBitbang.hpp) - message("Jetson Nano GPIO support enabled") + add_definitions(-DENABLE_JETSONNANOGPIO=1) + target_sources(openFPGALoader PRIVATE src/jetsonNanoJtagBitbang.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/jetsonNanoJtagBitbang.hpp) + message("Jetson Nano GPIO support enabled") endif(ENABLE_JETSONNANOGPIO) if (ENABLE_UDEV OR ENABLE_LIBGPIOD OR ENABLE_JETSONNANOGPIO) - add_definitions(-DUSE_DEVICE_ARG) + add_definitions(-DUSE_DEVICE_ARG) endif(ENABLE_UDEV OR ENABLE_LIBGPIOD OR ENABLE_JETSONNANOGPIO) if (BUILD_STATIC) - set_target_properties(openFPGALoader PROPERTIES LINK_SEARCH_END_STATIC 1) + set_target_properties(openFPGALoader PROPERTIES LINK_SEARCH_END_STATIC 1) endif() if (ENABLE_CMSISDAP) - if (HIDAPI_FOUND) - include_directories(${HIDAPI_INCLUDE_DIRS}) - target_link_libraries(openFPGALoader ${HIDAPI_LIBRARIES}) - add_definitions(-DENABLE_CMSISDAP=1) - target_sources(openFPGALoader PRIVATE src/cmsisDAP.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/cmsisDAP.hpp) - message("cmsis_dap support enabled") - else() - message("hidapi-libusb not found: cmsis_dap support disabled") - endif() + if (HIDAPI_FOUND) + include_directories(${HIDAPI_INCLUDE_DIRS}) + target_link_libraries(openFPGALoader ${HIDAPI_LIBRARIES}) + add_definitions(-DENABLE_CMSISDAP=1) + target_sources(openFPGALoader PRIVATE src/cmsisDAP.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/cmsisDAP.hpp) + message("cmsis_dap support enabled") + else() + message("hidapi-libusb not found: cmsis_dap support disabled") + endif() endif(ENABLE_CMSISDAP) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - add_definitions(-DENABLE_XVC=1) - target_sources(openFPGALoader PRIVATE src/xvc_client.cpp src/xvc_server.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp src/xvc_server.hpp) - set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}") - message("Xilinx Virtual Server support enabled") + add_definitions(-DENABLE_XVC=1) + target_sources(openFPGALoader PRIVATE src/xvc_client.cpp src/xvc_server.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp src/xvc_server.hpp) + set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}") + message("Xilinx Virtual Server support enabled") else() - message("Xilinx Virtual Server support disabled") + message("Xilinx Virtual Server support disabled") endif() if (ENABLE_REMOTEBITBANG) - add_definitions(-DENABLE_REMOTEBITBANG=1) - target_sources(openFPGALoader PRIVATE src/remoteBitbang_client.cpp) - list (APPEND OPENFPGALOADER_HEADERS src/remoteBitbang_client.hpp) - message("Remote bitbang client support enabled") + add_definitions(-DENABLE_REMOTEBITBANG=1) + target_sources(openFPGALoader PRIVATE src/remoteBitbang_client.cpp) + list (APPEND OPENFPGALOADER_HEADERS src/remoteBitbang_client.hpp) + message("Remote bitbang client support enabled") else() - message("Remote bitbang client support disabled") + message("Remote bitbang client support disabled") endif() if (ZLIB_FOUND) - include_directories(${ZLIB_INCLUDE_DIRS}) - target_link_libraries(openFPGALoader ${ZLIB_LIBRARIES}) - add_definitions(-DHAS_ZLIB=1) + include_directories(${ZLIB_INCLUDE_DIRS}) + target_link_libraries(openFPGALoader ${ZLIB_LIBRARIES}) + add_definitions(-DHAS_ZLIB=1) else() - message("zlib library not found: can't flash intel/altera devices") + message("zlib library not found: can't flash intel/altera devices") endif() if (LINK_CMAKE_THREADS) - find_package(Threads REQUIRED) - target_link_libraries(openFPGALoader Threads::Threads) + find_package(Threads REQUIRED) + target_link_libraries(openFPGALoader Threads::Threads) endif() # libftdi < 1.4 as no usb_addr @@ -350,34 +350,74 @@ list(INSERT CMAKE_MODULE_PATH 0 ${PROJECT_SOURCE_DIR}/cmake/Modules) include(FindGZIP) if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND GZIP_PRG) - set(SPIOVERJTAG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/spiOverJtag") - file(GLOB BITS_FILES RELATIVE ${SPIOVERJTAG_DIR} spiOverJtag/spiOverJtag_*.bit) - file(GLOB RBF_FILES RELATIVE ${SPIOVERJTAG_DIR} spiOverJtag/spiOverJtag_*.rbf) + set(SPIOVERJTAG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/spiOverJtag") + file(GLOB BITS_FILES RELATIVE ${SPIOVERJTAG_DIR} spiOverJtag/spiOverJtag_*.bit) + file(GLOB RBF_FILES RELATIVE ${SPIOVERJTAG_DIR} spiOverJtag/spiOverJtag_*.rbf) - STRING(REGEX REPLACE ".bit" ".bit.gz" BIT_GZ_FILES "${BITS_FILES}") - STRING(REGEX REPLACE ".rbf" ".rbf.gz" RBF_GZ_FILES "${RBF_FILES}") + STRING(REGEX REPLACE ".bit" ".bit.gz" BIT_GZ_FILES "${BITS_FILES}") + STRING(REGEX REPLACE ".rbf" ".rbf.gz" RBF_GZ_FILES "${RBF_FILES}") - FOREACH(bit ${BITS_FILES} ${RBF_FILES}) - ADD_CUSTOM_COMMAND(OUTPUT ${bit}.gz - COMMAND ${GZIP_PRG} -9 -c ${bit} > ${CMAKE_CURRENT_BINARY_DIR}/${bit}.gz - DEPENDS ${SPIOVERJTAG_DIR}/${bit} - WORKING_DIRECTORY ${SPIOVERJTAG_DIR} - COMMENT "Building ${bit}.gz") - list(APPEND GZ_FILES ${CMAKE_CURRENT_BINARY_DIR}/${bit}.gz) - ENDFOREACH(bit) + FOREACH(bit ${BITS_FILES} ${RBF_FILES}) + ADD_CUSTOM_COMMAND(OUTPUT ${bit}.gz + COMMAND ${GZIP_PRG} -9 -c ${bit} > ${CMAKE_CURRENT_BINARY_DIR}/${bit}.gz + DEPENDS ${SPIOVERJTAG_DIR}/${bit} + WORKING_DIRECTORY ${SPIOVERJTAG_DIR} + COMMENT "Building ${bit}.gz") + list(APPEND GZ_FILES ${CMAKE_CURRENT_BINARY_DIR}/${bit}.gz) + ENDFOREACH(bit) - ADD_CUSTOM_TARGET(bit ALL DEPENDS ${BIT_GZ_FILES} ${RBF_GZ_FILES}) + ADD_CUSTOM_TARGET(bit ALL DEPENDS ${BIT_GZ_FILES} ${RBF_GZ_FILES}) else() - file(GLOB BITS_FILES spiOverJtag/spiOverJtag_*.bit) - file(GLOB RBF_FILES spiOverJtag/spiOverJtag_*.rbf) - install(FILES - ${BITS_FILES} - ${RBF_FILES} - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openFPGALoader - ) + file(GLOB BITS_FILES spiOverJtag/spiOverJtag_*.bit) + file(GLOB RBF_FILES spiOverJtag/spiOverJtag_*.rbf) + install(FILES + ${BITS_FILES} + ${RBF_FILES} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openFPGALoader + ) endif() install(FILES - ${GZ_FILES} - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openFPGALoader + ${GZ_FILES} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openFPGALoader ) + +# Python bindings support +option(BUILD_PYTHON_BINDINGS "Build Python bindings" OFF) + +if(BUILD_PYTHON_BINDINGS) + find_package(Python COMPONENTS Interpreter Development REQUIRED) + find_package(pybind11 CONFIG REQUIRED) + + pybind11_add_module(_openfpgaloader python/bindings.cpp + ${OPENFPGALOADER_SOURCE} + ) + + target_include_directories(_openfpgaloader PRIVATE + ${LIBUSB_INCLUDE_DIRS} + ${LIBFTDI_INCLUDE_DIRS} + ) + + target_link_libraries(_openfpgaloader PRIVATE + ${LIBUSB_LIBRARIES} + ${LIBFTDI_LIBRARIES} + ${ZLIB_LIBRARIES} + ) + + if (ENABLE_UDEV) + target_link_libraries(_openfpgaloader PRIVATE ${LIBUDEV_LIBRARIES}) + endif() + + if (ENABLE_CMSISDAP AND HIDAPI_FOUND) + target_link_libraries(_openfpgaloader PRIVATE ${HIDAPI_LIBRARIES}) + endif() + + if (ENABLE_LIBGPIOD) + target_link_libraries(_openfpgaloader PRIVATE ${LIBGPIOD_LIBRARIES}) + endif() + + install(TARGETS _openfpgaloader + LIBRARY DESTINATION ${SKBUILD_PLATLIB_DIR}/openfpgaloader + COMPONENT python + ) +endif() diff --git a/README.md b/README.md index 179d370..77d2c2d 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,16 @@ Also checkout the vendor-specific documentation: OpenFPGALoader has a dedicated channel: [#openFPGALoader at libera.chat](https://web.libera.chat/#openFPGALoader). +## Python Bindings + +openFPGALoader can be used from Python! Install via pip: + +```bash +pip install openfpgaloader +``` + +See the [Python README](python/README.md) for usage examples. + ## Building with Pixi This project supports [Pixi](https://pixi.sh) for cross-platform dependency management and building. diff --git a/dist/openfpgaloader-1.0.0-cp314-cp314-linux_x86_64.whl b/dist/openfpgaloader-1.0.0-cp314-cp314-linux_x86_64.whl new file mode 100644 index 0000000..1ccf006 Binary files /dev/null and b/dist/openfpgaloader-1.0.0-cp314-cp314-linux_x86_64.whl differ diff --git a/example_usage.py b/example_usage.py new file mode 100644 index 0000000..28d3e2c --- /dev/null +++ b/example_usage.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +""" +Example usage of openFPGALoader Python bindings +""" + +import openfpgaloader as ofl + + +def main(): + print("openFPGALoader Python Bindings Example") + print(f"Version: {ofl.__version__}\n") + + # List supported boards + boards = ofl.list_boards() + print(f"Total supported boards: {len(boards)}") + print(f"First 10 boards: {boards[:10]}\n") + + # List supported cables + cables = ofl.list_cables() + print(f"Total supported cables: {len(cables)}") + print(f"First 10 cables: {cables[:10]}\n") + + # List supported FPGAs + fpgas = ofl.list_fpgas() + print(f"Total supported FPGAs: {len(fpgas)}") + print(f"First 10 FPGAs: {fpgas[:10]}\n") + + # Create an OpenFPGALoader instance + print("Creating OpenFPGALoader instance for Arty board...") + loader = ofl.OpenFPGALoader(board="arty", verbose=0) + print("Instance created successfully!\n") + + # Example of how to use the loader (would need actual bitstream file) + # loader.program_sram("my_design.bit") + # loader.program_flash("my_design.bit", offset=0) + + # Using convenience function + # ofl.load_bitstream("my_design.bit", board="arty", to_flash=False) + + # ofl.load_bitstream("my_design.bit", board="arty", to_flash=False) + +if __name__ == "__main__": + main() diff --git a/pixi.lock b/pixi.lock index 34934a9..47b7480 100644 --- a/pixi.lock +++ b/pixi.lock @@ -20,6 +20,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.1-hc85cc9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_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/gcc-14.3.0-h0dff253_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-he8b2097_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h298d278_16.conda @@ -27,6 +28,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hee9a62b_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.14-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -36,6 +40,7 @@ environments: - 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/libffi-3.5.2-h9ec8514_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libftdi-1.5-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_116.conda @@ -43,8 +48,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhidapi-0.15.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-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_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_116.conda @@ -52,71 +59,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev-257.10-hd0affe5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_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/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.2-h32b2ec7_100_cp314.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/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - osx-64: - - 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/osx-64/c-compiler-1.11.0-h7a00415_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1030.6.3-llvm19_1_h67a6458_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_impl_osx-64-1030.6.3-llvm19_1_h3b512aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1030.6.3-llvm19_1_h8f0d4bb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h1323312_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_h1c12a56_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-4.2.1-h29fc008_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-he914875_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-h138dee1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gzip-1.14-h6e16a3a_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/ld64-956.6-llvm19_1_hc3792c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-956.6-llvm19_1_h466f870_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-19.1.7-h707e725_2.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/libftdi-1.5-h240833e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libhidapi-0.15.0-h6e16a3a_0.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/libllvm19-19.1.7-h56e7563_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.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/libssh2-1.11.1-hed3591d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libusb-1.0.29-h2287256_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-h0ad03eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h23bb396_0.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/llvm-tools-19-19.1.7-h879f4bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-hb0207f0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-64-14.5-hbf94ba6_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1600.0.11.8-h8d8e812_0.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/zstd-1.5.7-h3eecb57_6.conda osx-arm64: - 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 @@ -136,7 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.11.0-h88570a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gzip-1.14-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_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/ld64-956.6-llvm19_1_he86490a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_h6922315_2.conda @@ -156,7 +127,9 @@ environments: - 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/libllvm19-19.1.7-h8e0c9ce_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.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/libsqlite-3.51.1-h9a5124b_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/libusb-1.0.29-hbc156a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda @@ -168,44 +141,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19.1.7-h855ad52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.2-h40d2674_100_cp314.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/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-arm64-14.5-hfa17104_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstd-1.5.7-hbf9d68e_6.conda - win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.1-hdcbee5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libftdi-1.5-he0c23c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhidapi-0.15.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libusb-1.0.29-h1839187_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_33.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda dev: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -226,6 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.1-hc85cc9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_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/gcc-14.3.0-h0dff253_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-he8b2097_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h298d278_16.conda @@ -235,6 +194,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hee9a62b_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.14-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -273,94 +235,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.2-h32b2ec7_100_cp314.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/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/valgrind-3.26.0-hea31c11_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - 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/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/osx-64/c-compiler-1.11.0-h7a00415_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1030.6.3-llvm19_1_h67a6458_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_impl_osx-64-1030.6.3-llvm19_1_h3b512aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1030.6.3-llvm19_1_h8f0d4bb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h1323312_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_h1c12a56_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-4.2.1-h29fc008_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-he914875_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-h138dee1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.7.3-heffb93a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdb-16.3-py313hdb48009_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gzip-1.14-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_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/ld64-956.6-llvm19_1_hc3792c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-956.6-llvm19_1_h466f870_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-19.1.7-h707e725_2.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/libffi-3.5.2-h750e83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libftdi-1.5-h240833e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libhidapi-0.15.0-h6e16a3a_0.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/libllvm19-19.1.7-h56e7563_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.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/libsqlite-3.51.1-h6cc646a_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/libusb-1.0.29-h2287256_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.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/llvm-tools-19-19.1.7-h879f4bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-hb0207f0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-64-14.5-hbf94ba6_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1600.0.11.8-h8d8e812_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.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/zstd-1.5.7-h3eecb57_6.conda 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/osx-arm64/bzip2-1.0.8-hd037594_8.conda @@ -381,10 +278,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.11.0-h88570a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdb-16.3-py314h3951fd9_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gzip-1.14-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_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/ld64-956.6-llvm19_1_he86490a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_h6922315_2.conda @@ -423,51 +324,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.2-h40d2674_100_cp314.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/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-arm64-14.5-hfa17104_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstd-1.5.7-hbf9d68e_6.conda - win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.1-hdcbee5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libftdi-1.5-he0c23c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhidapi-0.15.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libusb-1.0.29-h1839187_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_33.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda gpiod: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -488,6 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.1-hc85cc9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_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/gcc-14.3.0-h0dff253_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-he8b2097_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h298d278_16.conda @@ -495,6 +377,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hee9a62b_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.14-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -504,6 +389,7 @@ environments: - 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/libffi-3.5.2-h9ec8514_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libftdi-1.5-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_116.conda @@ -512,8 +398,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpiod-2.2.1-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhidapi-0.15.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-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_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_116.conda @@ -521,71 +409,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev-257.10-hd0affe5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_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/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.2-h32b2ec7_100_cp314.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/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - osx-64: - - 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/osx-64/c-compiler-1.11.0-h7a00415_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1030.6.3-llvm19_1_h67a6458_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_impl_osx-64-1030.6.3-llvm19_1_h3b512aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1030.6.3-llvm19_1_h8f0d4bb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h1323312_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_h1c12a56_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_28.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-4.2.1-h29fc008_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-he914875_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-h138dee1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gzip-1.14-h6e16a3a_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/ld64-956.6-llvm19_1_hc3792c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-956.6-llvm19_1_h466f870_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_hc369343_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-19.1.7-h707e725_2.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/libftdi-1.5-h240833e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libhidapi-0.15.0-h6e16a3a_0.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/libllvm19-19.1.7-h56e7563_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.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/libssh2-1.11.1-hed3591d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libusb-1.0.29-h2287256_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-h0ad03eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h23bb396_0.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/llvm-tools-19-19.1.7-h879f4bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-hb0207f0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-64-14.5-hbf94ba6_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1600.0.11.8-h8d8e812_0.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/zstd-1.5.7-h3eecb57_6.conda osx-arm64: - 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 @@ -605,7 +453,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.11.0-h88570a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gzip-1.14-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_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/ld64-956.6-llvm19_1_he86490a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_h6922315_2.conda @@ -625,7 +477,9 @@ environments: - 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/libllvm19-19.1.7-h8e0c9ce_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.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/libsqlite-3.51.1-h9a5124b_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/libusb-1.0.29-hbc156a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda @@ -637,44 +491,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19.1.7-h855ad52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.2-h40d2674_100_cp314.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/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-arm64-14.5-hfa17104_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_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-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstd-1.5.7-hbf9d68e_6.conda - win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.1-hdcbee5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libftdi-1.5-he0c23c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhidapi-0.15.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libusb-1.0.29-h1839187_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_33.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -695,16 +534,6 @@ packages: license_family: BSD 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 - 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 @@ -764,15 +593,6 @@ packages: license_family: BSD 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 - size: 132607 - timestamp: 1757437730085 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda sha256: b456200636bd5fecb2bec63f7e0985ad2097cf1b83d60ce0b6968dffa6d02aa1 md5: 58fd217444c2a5701a44244faf518206 @@ -782,17 +602,6 @@ packages: license_family: BSD size: 125061 timestamp: 1757437486465 -- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - sha256: d882712855624641f48aa9dc3f5feea2ed6b4e6004585d3616386a18186fe692 - md5: 1077e9333c41ff0be8edd1a5ec0ddace - depends: - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: bzip2-1.0.6 - license_family: BSD - size: 55977 - timestamp: 1757437738856 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e md5: 920bb03579f15389b9e512095ad995b7 @@ -803,15 +612,6 @@ packages: license_family: MIT 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 - 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 @@ -832,18 +632,6 @@ packages: license_family: BSD size: 6693 timestamp: 1753098721814 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.11.0-h7a00415_0.conda - sha256: 2bd1cf3d26789b7e1d04e914ccd169bd618fceed68abf7b6a305266b88dcf861 - md5: 2b23ec416cef348192a5a17737ddee60 - depends: - - cctools >=949.0.1 - - clang_osx-64 19.* - - ld64 >=530 - - llvm-openmp - license: BSD-3-Clause - license_family: BSD - size: 6695 - timestamp: 1753098825695 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.11.0-h61f9b84_0.conda sha256: b51bd1551cfdf41500f732b4bd1e4e70fb1e74557165804a648f32fa9c671eec md5: 148516e0c9edf4e9331a4d53ae806a9b @@ -856,14 +644,6 @@ packages: license_family: BSD size: 6697 timestamp: 1753098737760 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda - sha256: 686a13bd2d4024fc99a22c1e0e68a7356af3ed3304a8d3ff6bb56249ad4e82f0 - md5: f98fb7db808b94bc1ec5b0e62f9f1069 - depends: - - __win - license: ISC - size: 152827 - timestamp: 1762967310929 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda sha256: b986ba796d42c9d3265602bc038f6f5264095702dd546c14bc684e60c385e773 md5: f0991f0f84902f6b6009b4d2350a83aa @@ -872,17 +652,6 @@ packages: license: ISC size: 152432 timestamp: 1762967197890 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1030.6.3-llvm19_1_h67a6458_2.conda - sha256: a77ea5b5642d3dd6da913d429b4a435958dd7e9544f9b9600da7197cc1037a2c - md5: 5d22a26bd2b61e246a839577dc4578a5 - depends: - - cctools_impl_osx-64 1030.6.3 llvm19_1_h3b512aa_2 - - ld64 956.6 llvm19_1_hc3792c1_2 - - libllvm19 >=19.1.7,<19.2.0a0 - license: APSL-2.0 - license_family: Other - size: 23868 - timestamp: 1765941736038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm19_1_hd01ab73_2.conda sha256: 9602fd8f1083dcfa53135b7651063ed1b337cb7127c31e4941894b8162d704ad md5: e3ef57be6bf265f048e768ab46470aea @@ -894,25 +663,6 @@ packages: license_family: Other size: 23869 timestamp: 1765941632302 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_impl_osx-64-1030.6.3-llvm19_1_h3b512aa_2.conda - sha256: 17addbc994776368f96b9b9114dceaea7240f8dc114e3298e57e54549acad9bb - md5: 59f93ddb9499fa6eb1951e54879f4e3c - depends: - - __osx >=10.13 - - ld64_osx-64 >=956.6,<956.7.0a0 - - libcxx - - libllvm19 >=19.1.7,<19.2.0a0 - - libzlib >=1.3.1,<2.0a0 - - llvm-tools 19.1.* - - sigtool - constrains: - - cctools 1030.6.3.* - - clang 19.1.* - - ld64 956.6.* - license: APSL-2.0 - license_family: Other - size: 744175 - timestamp: 1765941687757 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm19_1_h8c76c84_2.conda sha256: a9dd7bb1b527311c8f954a563b00833b12cd4b0a00c6399740ada1092ac6e5e7 md5: 08e9b3a5f4cfad5255746a57231ed4ad @@ -932,18 +682,6 @@ packages: license_family: Other size: 747723 timestamp: 1765941597973 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1030.6.3-llvm19_1_h8f0d4bb_2.conda - sha256: 06a0b8ead9468b5d2ceac35a36877c058a5d7c9b7704d53444e9bfd8a7c06a09 - md5: 0f9cc5584cce30ccc3b799a226fee620 - depends: - - cctools_impl_osx-64 1030.6.3 llvm19_1_h3b512aa_2 - - ld64_osx-64 956.6 llvm19_1_h466f870_2 - constrains: - - cctools 1030.6.3.* - license: APSL-2.0 - license_family: Other - size: 22858 - timestamp: 1765941739901 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1030.6.3-llvm19_1_h6d92914_2.conda sha256: e883c95cf98b23647074d071713bdda1d72a41d689b8485047f38f3336ce01bc md5: 4b7667bec1a667c1491863d3d024c53b @@ -956,15 +694,6 @@ packages: license_family: Other size: 22908 timestamp: 1765941638540 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19.1.7-default_h1323312_5.conda - sha256: 5bcabcc3a5689bc47dbd6a58a3a785f8fe3f4e91410a299392d9cdf7ae7c16d6 - md5: 5bd21a5ea37ab0fbe1d9cbba4e0e7c80 - depends: - - clang-19 19.1.7 default_hc369343_5 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 24455 - timestamp: 1759436889569 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19.1.7-default_hf9bcbb7_5.conda sha256: 6e9cb7e80a41dbbfd95e86d87c8e5dafc3171aadda16ca33a1e2136748267318 md5: 6773a2b7d7d1b0a8d0e0f3bf4e928936 @@ -974,18 +703,6 @@ packages: license_family: Apache size: 24502 timestamp: 1759435412103 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-19-19.1.7-default_hc369343_5.conda - sha256: 2631c79a027ee8b9c2d4d0a458f0588e8fe03fe1dfb3e3bcd47e7b0f4d0d2175 - md5: b37d33a750251c79214c812eca726241 - depends: - - __osx >=10.13 - - libclang-cpp19.1 19.1.7 default_hc369343_5 - - libcxx >=19.1.7 - - libllvm19 >=19.1.7,<19.2.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 765727 - timestamp: 1759436729883 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19-19.1.7-default_h73dfc95_5.conda sha256: f1c8f4e8735918aacd7cab058fff389fc639d4537221753f0e9b44e120892f9a md5: 561b822bdb2c1bb41e16e59a090f1e36 @@ -998,19 +715,6 @@ packages: license_family: Apache size: 763853 timestamp: 1759435247449 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-19.1.7-hc73cdc9_28.conda - sha256: a393747ffc868fe4e51b4b20570bab597024e49798568647e66340bc19d1986f - md5: 11b55abbdae1166253b57800d267e748 - depends: - - cctools_impl_osx-64 - - clang 19.1.7.* - - compiler-rt 19.1.7.* - - ld64_osx-64 - - llvm-tools 19.1.7.* - license: BSD-3-Clause - license_family: BSD - size: 17860 - timestamp: 1765841971797 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-19.1.7-h76e6a08_28.conda sha256: b8d46b18813aa1914016006431b8a875b3b7a98ab6f59436e76aea26c32061ab md5: 310923b3b53c3bdd5593bb5ee459d4fb @@ -1024,17 +728,6 @@ packages: license_family: BSD size: 17953 timestamp: 1765842057885 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-19.1.7-h7e5c614_28.conda - sha256: defe8d27247c063b7273b11e6dccbd9b55fb59686dea17e2bd54f138db4b7a32 - md5: 9e78ad15b683ff11b0e18a971ab78a54 - depends: - - cctools_osx-64 - - clang_impl_osx-64 19.1.7 hc73cdc9_28 - - sdkroot_env_osx-64 - license: BSD-3-Clause - license_family: BSD - size: 20764 - timestamp: 1765841975402 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-19.1.7-h07b0088_28.conda sha256: 1f497d7e5b73ea97b9046fff8fb44fcd460f8856e8d9a5383f8a73eb34197afc md5: df9cdd6140ce2a72982cd86d887d991d @@ -1046,16 +739,6 @@ packages: license_family: BSD size: 20784 timestamp: 1765842064509 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-19.1.7-default_h1c12a56_5.conda - sha256: 6553c7b6a898bd00c218656d3438dc3a70f2bb79f795ce461792c55304558af2 - md5: 6b6f3133d60b448c0f12885f53d5ed09 - depends: - - clang 19.1.7 default_h1323312_5 - - libcxx-devel 19.1.* - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 24505 - timestamp: 1759436910517 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-19.1.7-default_h36137df_5.conda sha256: f8f94321aee9ad83cb1cdf90660885fccb482c34c82ba84c2c167d452376834f md5: c11a3a5a0cdb74d8ce58c6eac8d1f662 @@ -1066,18 +749,6 @@ packages: license_family: Apache size: 24587 timestamp: 1759435427954 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-19.1.7-hb295874_28.conda - sha256: 9b734bc9a1d3a53b7c7bc82d2989d959dfc4212b76516692b4996038be00f850 - md5: 53ea0e8ae9ed508da86574d64ec2be15 - depends: - - clang_osx-64 19.1.7 h7e5c614_28 - - clangxx 19.1.7.* - - libcxx >=19 - - libllvm19 >=19.1.7,<19.2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 17992 - timestamp: 1765842018470 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-19.1.7-h276745f_28.conda sha256: 8ae2384fc6d367a34fcc7910f153c208d9f9115d6892376656d00fcf7520c511 md5: 5f6c2330bbefee96ed5c4f41e726b489 @@ -1090,18 +761,6 @@ packages: license_family: BSD size: 18152 timestamp: 1765842124300 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-19.1.7-h7e5c614_28.conda - sha256: 78aba4e421a40442d157b9141d4bf38513d1e2288300efaa8d7e16558d9b6b3f - md5: 302456b38cee4b4b5c8ccd8498605cb6 - depends: - - cctools_osx-64 - - clang_osx-64 19.1.7 h7e5c614_28 - - clangxx_impl_osx-64 19.1.7 hb295874_28 - - sdkroot_env_osx-64 - license: BSD-3-Clause - license_family: BSD - size: 19573 - timestamp: 1765842022184 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-19.1.7-h07b0088_28.conda sha256: 94bd76d3dcc5e5746b90a547e0a061123accac9213f0d4f114ffeecfdce38311 md5: 20e0e35b2cc60c621975b2374d2e4f45 @@ -1134,25 +793,6 @@ packages: license_family: BSD size: 22303088 timestamp: 1765229009574 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-4.2.1-h29fc008_0.conda - sha256: 989feb0c5aedeb03dc35e7e0dd90281563b3ad4f7b95b04d46e1bffe862aacbe - md5: e2966bf6d01371caad0980c1e300dd89 - depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libcurl >=8.17.0,<9.0a0 - - libcxx >=19 - - libexpat >=2.7.3,<3.0a0 - - liblzma >=5.8.1,<6.0a0 - - libuv >=1.51.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - rhash >=1.4.6,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 18958048 - timestamp: 1765229793999 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-4.2.1-h54ad630_0.conda sha256: a881f3379ff18a98bbc2456e9a74d748bdbd930799c2b98dd266733b0d8fbd90 md5: 11a1d109b6d7882b5f2f93fe9824af4a @@ -1172,34 +812,6 @@ packages: license_family: BSD size: 17740888 timestamp: 1765231308407 -- conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.1-hdcbee5b_0.conda - sha256: 03d85d6493ad6c410708f243aeb680c491075c89f0cae7e3afab718f27f28967 - md5: dd8c71fb422275f652743068455e9acd - depends: - - bzip2 >=1.0.8,<2.0a0 - - libcurl >=8.17.0,<9.0a0 - - libexpat >=2.7.3,<3.0a0 - - liblzma >=5.8.1,<6.0a0 - - libuv >=1.51.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc14_runtime >=14.44.35208 - - zstd >=1.5.7,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 15739640 - timestamp: 1765230626010 -- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-19.1.7-he914875_1.conda - sha256: 28e5f0a6293acba68ebc54694a2fc40b1897202735e8e8cbaaa0e975ba7b235b - md5: e6b9e71e5cb08f9ed0185d31d33a074b - depends: - - __osx >=10.13 - - clang 19.1.7.* - - compiler-rt_osx-64 19.1.7.* - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 96722 - timestamp: 1757412473400 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda sha256: b58a481828aee699db7f28bfcbbe72fb133277ac60831dfe70ee2465541bcb93 md5: 39451684370ae65667fa5c11222e43f7 @@ -1211,18 +823,6 @@ packages: license_family: APACHE size: 97085 timestamp: 1757411887557 -- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-19.1.7-h138dee1_1.conda - sha256: e6effe89523fc6143819f7a68372b28bf0c176af5b050fe6cf75b62e9f6c6157 - md5: 32deecb68e11352deaa3235b709ddab2 - depends: - - clang 19.1.7.* - constrains: - - compiler-rt 19.1.7 - - clangxx 19.1.7 - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 10425780 - timestamp: 1757412396490 - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda sha256: 8c32a3db8adf18ed58197e8895ce4f24a83ed63c817512b9a26724753b116f2a md5: 8d99c82e0f5fed6cc36fcf66a11e03f0 @@ -1255,16 +855,6 @@ packages: license_family: BSD size: 6635 timestamp: 1753098722177 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.11.0-h307afc9_0.conda - sha256: d6976f8d8b51486072abfe1e76a733688380dcbd1a8e993a43d59b80f7288478 - md5: 463bb03bb27f9edc167fb3be224efe96 - depends: - - c-compiler 1.11.0 h7a00415_0 - - clangxx_osx-64 19.* - license: BSD-3-Clause - license_family: BSD - size: 6732 - timestamp: 1753098827160 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.11.0-h88570a1_0.conda sha256: 99800d97a3a2ee9920dfc697b6d4c64e46dc7296c78b1b6c746ff1c24dea5e6c md5: 043afed05ca5a0f2c18252ae4378bdee @@ -1275,25 +865,15 @@ packages: license_family: BSD size: 6715 timestamp: 1753098739952 -- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda - sha256: c888f4fe9ec117c1c01bfaa4c722ca475ebbb341c92d1718afa088bb0d710619 - md5: 4d94d3c01add44dc9d24359edf447507 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 + md5: 8e662bd460bda79b1ea39194e3c4c9ab depends: - - vs2022_win-64 - license: BSD-3-Clause - license_family: BSD - size: 6957 - timestamp: 1753098809481 -- conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.7.3-heffb93a_0.conda - sha256: 3a43defa87a48a77e46700302e6298967c14dfdaa326d26e7431ab6da3d6060f - md5: 84e2a6d95d3a63f3971da8f7b810c7a7 - depends: - - __osx >=10.13 - - libexpat 2.7.3 heffb93a_0 - license: MIT - license_family: MIT - size: 135469 - timestamp: 1763549907363 + - python >=3.10 + - typing_extensions >=4.6.0 + license: MIT and PSF-2.0 + size: 21333 + timestamp: 1763918099466 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.7.3-haf25636_0.conda sha256: 43175c9c1f8a259776a215fe2a77c6a29cf79cc47ee1a98f5267ae47f904c9c8 md5: 884f1698556805bc43c42e80c9c19f3d @@ -1368,35 +948,6 @@ packages: license_family: GPL size: 5921591 timestamp: 1761249090287 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gdb-16.3-py313hdb48009_6.conda - sha256: c7a92bd8e9fd42273adb73257737fecb335f5712fca742d6f668cb1cf107918f - md5: 1ceebb6992e626d58bdb197e9dfa8773 - depends: - - __osx >=10.13 - - expat - - gmp >=6.3.0,<7.0a0 - - libcxx >=19 - - libexpat >=2.7.1,<3.0a0 - - libgfortran - - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - liblzma-devel - - libzlib >=1.3.1,<2.0a0 - - mpfr >=4.2.1,<5.0a0 - - ncurses >=6.5,<7.0a0 - - pygments - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - - six - - zlib - - zstd >=1.5.7,<1.6.0a0 - license: GPL-3.0-only - license_family: GPL - size: 4335465 - timestamp: 1761250161952 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdb-16.3-py314h3951fd9_6.conda sha256: 31e53be864d084eb99ec0f48926a83a5af51b651156f882e56e95e3117cc18c2 md5: 2ef8b1d2ea95d76d93b7a6f044cf2b25 @@ -1436,15 +987,6 @@ packages: license: GPL-2.0-or-later OR LGPL-3.0-or-later size: 460055 timestamp: 1718980856608 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc - md5: 427101d13f19c4974552a4e5b072eef1 - depends: - - __osx >=10.13 - - libcxx >=16 - license: GPL-2.0-or-later OR LGPL-3.0-or-later - size: 428919 - timestamp: 1718981041839 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd md5: eed7278dfbab727b56f2c0b64330814b @@ -1498,15 +1040,6 @@ packages: license_family: GPL size: 124254 timestamp: 1744281694433 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gzip-1.14-h6e16a3a_0.conda - sha256: 9c80e25125da6c6a0d41689338443c73ba5314fc7d568bbc8ff3c7a65e1e814a - md5: d757692e9bfdf758591115fbd398bc40 - depends: - - __osx >=10.13 - license: GPL-3.0-or-later - license_family: GPL - size: 123180 - timestamp: 1744281827981 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gzip-1.14-h5505292_0.conda sha256: ece3f038622217e14406f73bf09552c6eea7748dea745db9b07ab7236caabf39 md5: 2b054e1b1bc616587d18574d2171a10a @@ -1516,15 +1049,39 @@ packages: license_family: GPL size: 113654 timestamp: 1744281791649 -- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 - md5: d68d48a3060eb5abdc1cdc8e2a3a5966 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 + md5: 63ccfdc3a3ce25b027b8767eb722fca8 depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 11761697 - timestamp: 1720853679409 + - python >=3.9 + - zipp >=3.20 + - python + license: Apache-2.0 + license_family: APACHE + size: 34641 + timestamp: 1747934053147 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + sha256: a99a3dafdfff2bb648d2b10637c704400295cb2ba6dc929e2d814870cf9f6ae5 + md5: e376ea42e9ae40f3278b0f79c9bf9826 + depends: + - importlib_resources >=6.5.2,<6.5.3.0a0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 9724 + timestamp: 1736252443859 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 + depends: + - python >=3.9 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.5.2,<6.5.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33781 + timestamp: 1736252433366 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a md5: 86d9cba083cd041bfbf242a01a7a1999 @@ -1557,19 +1114,6 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c - md5: d4765c524b1d91567886bde656fb514b - 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 - size: 1185323 - timestamp: 1719463492984 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b md5: c6dc8a0fdec13a0565936655c33069a1 @@ -1583,31 +1127,6 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 - md5: 31aec030344e962fbd7dbbbbd68e60a9 - depends: - - openssl >=3.3.1,<4.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 712034 - timestamp: 1719463874284 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-956.6-llvm19_1_hc3792c1_2.conda - sha256: 0c1105499d71aa87f603503955bf11fe76177a907ef6a06b512d3450467e9195 - md5: c146989ad100f31805fbb03c38f11fea - depends: - - ld64_osx-64 956.6 llvm19_1_h466f870_2 - - libllvm19 >=19.1.7,<19.2.0a0 - constrains: - - cctools_osx-64 1030.6.3.* - - cctools 1030.6.3.* - license: APSL-2.0 - license_family: Other - size: 21182 - timestamp: 1765941712465 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm19_1_he86490a_2.conda sha256: 2dbb9258b7ed5ceb92b213df4e66d2a4dab7ba6da01d40ce0a4eb46e45f7f1c0 md5: 5d628c59ecb0e5a07d4d80ab3a5dec9d @@ -1621,24 +1140,6 @@ packages: license_family: Other size: 21251 timestamp: 1765941616274 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-956.6-llvm19_1_h466f870_2.conda - sha256: 0160b26f52dc4ebb12a252c28eb9f8047c34611281887277c60d520580f3aa0b - md5: 875fe44a2d75b4dcae86962eff2dc6ce - depends: - - __osx >=10.13 - - libcxx - - libllvm19 >=19.1.7,<19.2.0a0 - - sigtool - - tapi >=1600.0.11.8,<1601.0a0 - constrains: - - cctools 1030.6.3.* - - cctools_impl_osx-64 1030.6.3.* - - clang 19.1.* - - ld64 956.6.* - license: APSL-2.0 - license_family: Other - size: 1116294 - timestamp: 1765941613798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_h6922315_2.conda sha256: 57d7e24b08c722bab43f5818707e25db3dd2002a61c3e4373213cef6c3f7d99f md5: a4933ffa231300c27e68082650f8101d @@ -1680,17 +1181,6 @@ packages: license_family: BSD size: 121429 timestamp: 1762349484074 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp19.1-19.1.7-default_hc369343_5.conda - sha256: 16ff6eea7319f5e7a8091028e6ed66a33b0ea5a859075354b93674e6f0a1087a - md5: 51c684dbc10be31478e7fc0e85d27bfe - depends: - - __osx >=10.13 - - libcxx >=19.1.7 - - libllvm19 >=19.1.7,<19.2.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 14856234 - timestamp: 1759436552121 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp19.1-19.1.7-default_h73dfc95_5.conda sha256: 6e62da7915a4a8b8bcd9a646e23c8a2180015d85a606c2a64e2385e6d0618949 md5: 0b1110de04b80ea62e93fef6f8056fbb @@ -1718,21 +1208,6 @@ packages: license_family: MIT size: 459417 timestamp: 1765379027010 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.17.0-h7dd4100_1.conda - sha256: 80c7c8ff76eb699ec8d096dce80642b527fd8fc9dd72779bccec8d140c5b997a - md5: 9ddfaeed0eafce233ae8f4a430816aa5 - depends: - - __osx >=10.13 - - 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 - size: 413119 - timestamp: 1765379670120 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.17.0-hdece5d2_1.conda sha256: 1a8a958448610ca3f8facddfe261fdbb010e7029a1571b84052ec9770fc0a36e md5: 1d6e791c6e264ae139d469ce011aab51 @@ -1748,29 +1223,6 @@ packages: license_family: MIT size: 394471 timestamp: 1765379821294 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda - sha256: 5ebab5c980c09d31b35a25095b295124d89fd8bdffdb3487604218ad56512885 - md5: c02248f96a0073904bb085a437143895 - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: curl - license_family: MIT - size: 379189 - timestamp: 1765379273605 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda - sha256: cbd8e821e97436d8fc126c24b50df838b05ba4c80494fbb93ccaf2e3b2d109fb - md5: 9f8a60a77ecafb7966ca961c94f33bd1 - depends: - - __osx >=10.13 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 569777 - timestamp: 1765919624323 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda sha256: 82e228975fd491bcf1071ecd0a6ec2a0fcc5f57eb0bd1d52cb13a18d57c67786 md5: 780f0251b757564e062187044232c2b7 @@ -1780,16 +1232,6 @@ packages: license_family: Apache size: 569118 timestamp: 1765919724254 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_2.conda - sha256: 760af3509e723d8ee5a9baa7f923a213a758b3a09e41ffdaf10f3a474898ab3f - md5: 52031c3ab8857ea8bcc96fe6f1b6d778 - depends: - - libcxx >=19.1.7 - - libcxx-headers >=19.1.7,<19.1.8.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 23069 - timestamp: 1764648572536 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-19.1.7-h6dc3340_2.conda sha256: ec07ebaa226792f4e2bf0f5dba50325632a7474d5f04b951d8291be70af215da md5: 9f7810b7c0a731dbc84d46d6005890ef @@ -1823,17 +1265,6 @@ packages: license_family: BSD size: 134676 timestamp: 1738479519902 -- 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 - - ncurses >=6.5,<7.0a0 - license: BSD-2-Clause - license_family: BSD - size: 115563 - timestamp: 1738479554273 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 md5: 44083d2d2c2025afca315c7a172eab2b @@ -1854,13 +1285,6 @@ packages: license_family: BSD 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 - size: 106663 - timestamp: 1702146352558 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 @@ -1880,17 +1304,6 @@ packages: license_family: MIT size: 76643 timestamp: 1763549731408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - sha256: d11b3a6ce5b2e832f430fd112084533a01220597221bee16d6c7dc3947dffba6 - md5: 222e0732a1d0780a622926265bee14ef - depends: - - __osx >=10.13 - constrains: - - expat 2.7.3.* - license: MIT - license_family: MIT - size: 74058 - timestamp: 1763549886493 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda sha256: fce22610ecc95e6d149e42a42fbc3cc9d9179bd4eb6232639a60f06e080eec98 md5: b79875dbb5b1db9a4a22a4520f918e1a @@ -1902,19 +1315,6 @@ packages: license_family: MIT size: 67800 timestamp: 1763549994166 -- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - sha256: 844ab708594bdfbd7b35e1a67c379861bcd180d6efe57b654f482ae2f7f5c21e - md5: 8c9e4f1a0e688eef2e95711178061a0f - depends: - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - constrains: - - expat 2.7.3.* - license: MIT - license_family: MIT - size: 70137 - timestamp: 1763550049107 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 md5: 35f29eec58405aaf55e01cb470d8c26a @@ -1925,15 +1325,6 @@ packages: license_family: MIT size: 57821 timestamp: 1760295480630 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - sha256: 277dc89950f5d97f1683f26e362d6dca3c2efa16cb2f6fdb73d109effa1cd3d0 - md5: d214916b24c625bcc459b245d509f22e - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 52573 - timestamp: 1760295626449 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda sha256: 9b8acdf42df61b7bfe8bdc545c016c29e61985e79748c64ad66df47dbc2e295f md5: 411ff7cd5d1472bba0f55c0faf04453b @@ -1943,17 +1334,6 @@ packages: license_family: MIT size: 40251 timestamp: 1760295839166 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - sha256: ddff25aaa4f0aa535413f5d831b04073789522890a4d8626366e43ecde1534a3 - md5: ba4ad812d2afc22b9a34ce8327a0930f - depends: - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: MIT - license_family: MIT - size: 44866 - timestamp: 1760295760649 - conda: https://conda.anaconda.org/conda-forge/linux-64/libftdi-1.5-h5888daf_1.conda sha256: eabb13040ad3c330697ac4c1ab0b6b28a67aaba5ebbc407630c50f5443bd9f58 md5: a52a03a9c7ae18af1753f5875defc2b3 @@ -1965,16 +1345,6 @@ packages: license: LGPL-2.1-or-later size: 43845 timestamp: 1730728295167 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libftdi-1.5-h240833e_1.conda - sha256: e951e8d07fb959386ece48505f2e2fcab2f1ed44a831293d6809010338a893ab - md5: 8d014afba54f292fe94e1b3fb64b5013 - depends: - - __osx >=10.13 - - libcxx >=18 - - libusb >=1.0.27,<2.0a0 - license: LGPL-2.1-or-later - size: 39219 - timestamp: 1730728407416 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libftdi-1.5-h286801f_1.conda sha256: 15aed5c97f9be0876543f554a20fdb80cf9af246a9ded65d61ed23ecb95016f5 md5: 2ec8eea6f00eaf2c8455ecda03ecb0c3 @@ -1985,17 +1355,6 @@ packages: license: LGPL-2.1-or-later size: 38396 timestamp: 1730728585550 -- conda: https://conda.anaconda.org/conda-forge/win-64/libftdi-1.5-he0c23c2_1.conda - sha256: 5a9d64f52c3ec6a698394e3ec8466e29fb6ec22ac6c21df27b2edb3d602abea9 - md5: 4e9266102f03b604012d7876e79d894b - depends: - - libusb >=1.0.27,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.1-or-later - size: 45347 - timestamp: 1730728441802 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda sha256: 6eed58051c2e12b804d53ceff5994a350c61baf117ec83f5f10c953a3f311451 md5: 6d0363467e6ed84f11435eb309f2ff06 @@ -2009,18 +1368,6 @@ packages: license_family: GPL size: 1042798 timestamp: 1765256792743 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda - sha256: e04b115ae32f8cbf95905971856ff557b296511735f4e1587b88abf519ff6fb8 - md5: c816665789d1e47cdfd6da8a81e1af64 - depends: - - _openmp_mutex - constrains: - - libgomp 15.2.0 15 - - libgcc-ng ==15.2.0=*_15 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 422960 - timestamp: 1764839601296 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda sha256: 646c91dbc422fe92a5f8a3a5409c9aac66549f4ce8f8d1cab7c2aa5db789bb69 md5: 8b216bac0de7a9d60f3ddeba2515545c @@ -2062,17 +1409,6 @@ packages: license_family: GPL size: 27215 timestamp: 1765256845586 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - sha256: 7bb4d51348e8f7c1a565df95f4fc2a2021229d42300aab8366eda0ea1af90587 - md5: a089323fefeeaba2ae60e1ccebf86ddc - depends: - - libgfortran5 15.2.0 hd16e46c_15 - constrains: - - libgfortran-ng ==15.2.0=*_15 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 139002 - timestamp: 1764839892631 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda sha256: 68a6c1384d209f8654112c4c57c68c540540dd8e09e17dd1facf6cf3467798b5 md5: 11e09edf0dde4c288508501fe621bab4 @@ -2096,17 +1432,6 @@ packages: license_family: GPL size: 2480559 timestamp: 1765256819588 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda - sha256: 456385a7d3357d5fdfc8e11bf18dcdf71753c4016c440f92a2486057524dd59a - md5: c2a6149bf7f82774a0118b9efef966dd - depends: - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1061950 - timestamp: 1764839609607 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda sha256: 9fb7f4ff219e3fb5decbd0ee90a950f4078c90a86f5d8d61ca608c913062f9b0 md5: 265a9d03461da24884ecc8eb58396d57 @@ -2133,23 +1458,6 @@ packages: license: LGPL-2.1-or-later size: 3670602 timestamp: 1765223125237 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_0.conda - sha256: 84b74fc81fff745f3d21a26c317ace44269a563a42ead3500034c27e407e1021 - md5: c2d5b6b790ef21abac0b5331094ccb56 - depends: - - libffi >=3.5.2,<3.6.0a0 - - libiconv >=1.18,<2.0a0 - - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - constrains: - - glib 2.86.3 *_0 - license: LGPL-2.1-or-later - size: 3818991 - timestamp: 1765222145992 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda sha256: 5b3e5e4e9270ecfcd48f47e3a68f037f5ab0f529ccb223e8e5d5ac75a58fc687 md5: 26c46f90d0e727e95c6c9498a33a09f3 @@ -2179,14 +1487,6 @@ packages: license: BSD-3-Clause OR GPL-3.0-only OR LicenseRef-hidapi size: 52490 timestamp: 1747680955504 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libhidapi-0.15.0-h6e16a3a_0.conda - sha256: b24350741e5d795b3b11de30be485178065248751bb6cec2d41710a8ad627fde - md5: d6a612f61255d9902769334b7b785330 - depends: - - __osx >=10.13 - license: BSD-3-Clause OR GPL-3.0-only OR LicenseRef-hidapi - size: 39771 - timestamp: 1747680972861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhidapi-0.15.0-h5505292_0.conda sha256: 7494a57beb43629f553e65fa6c8d28b36bfc12e75c50901247c58593bb364ae7 md5: 883e4218448eb88c8e374635648669fb @@ -2195,16 +1495,6 @@ packages: license: BSD-3-Clause OR GPL-3.0-only OR LicenseRef-hidapi size: 39827 timestamp: 1747681007421 -- conda: https://conda.anaconda.org/conda-forge/win-64/libhidapi-0.15.0-h2466b09_0.conda - sha256: 61191c6e79b5742b2a2b21ebb1ec2e25b9ea14f433c327f8794776cee322a64a - md5: ae64a876b2fe0a82dcdb91d7666d0c37 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause OR GPL-3.0-only OR LicenseRef-hidapi - size: 49931 - timestamp: 1747681329377 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -2214,14 +1504,6 @@ packages: license: LGPL-2.1-only size: 790176 timestamp: 1754908768807 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 - md5: 210a85a1119f97ea7887188d176db135 - depends: - - __osx >=10.13 - license: LGPL-2.1-only - size: 737846 - timestamp: 1754908900138 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 md5: 4d5a7445f0b25b6a3ddbb56e790f5251 @@ -2230,16 +1512,6 @@ packages: license: LGPL-2.1-only size: 750379 timestamp: 1754909073836 -- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - sha256: 0dcdb1a5f01863ac4e8ba006a8b0dc1a02d2221ec3319b5915a1863254d7efa7 - md5: 64571d1dd6cdcfa25d0664a5950fdaa2 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: LGPL-2.1-only - size: 696926 - timestamp: 1754909290005 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a md5: 5103f6a6b210a3912faf8d7db516918c @@ -2249,28 +1521,6 @@ packages: license: LGPL-2.1-or-later size: 90957 timestamp: 1751558394144 -- conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 - md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 - depends: - - libiconv >=1.17,<2.0a0 - license: LGPL-2.1-or-later - size: 95568 - timestamp: 1723629479451 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.7-h56e7563_2.conda - sha256: 375a634873b7441d5101e6e2a9d3a42fec51be392306a03a2fa12ae8edecec1a - md5: 05a54b479099676e75f80ad0ddd38eff - depends: - - __osx >=10.13 - - libcxx >=19 - - libxml2 - - libxml2-16 >=2.14.5 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 28801374 - timestamp: 1757354631264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.7-h8e0c9ce_2.conda sha256: 46f8ff3d86438c0af1bebe0c18261ce5de9878d58b4fe399a3a125670e4f0af5 md5: d1d9b233830f6631800acc1e081a9444 @@ -2296,16 +1546,6 @@ packages: license: 0BSD size: 112894 timestamp: 1749230047870 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 - md5: 8468beea04b9065b9807fc8b9cdc5894 - depends: - - __osx >=10.13 - constrains: - - xz 5.8.1.* - license: 0BSD - size: 104826 - timestamp: 1749230155443 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 md5: d6df911d4564d77c4374b02552cb17d1 @@ -2316,18 +1556,6 @@ packages: license: 0BSD size: 92286 timestamp: 1749230283517 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc - md5: c15148b2e18da456f5108ccb5e411446 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - xz 5.8.1.* - license: 0BSD - size: 104935 - timestamp: 1749230611612 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492 md5: f61edadbb301530bd65a32646bd81552 @@ -2338,15 +1566,6 @@ packages: license: 0BSD size: 439868 timestamp: 1749230061968 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - sha256: a020ad9f1e27d4f7a522cbbb9613b99f64a5cc41f80caf62b9fdd1cf818acf18 - md5: 2e16f5b4f6c92b96f6a346f98adc4e3e - depends: - - __osx >=10.13 - - liblzma 5.8.1 hd471939_2 - license: 0BSD - size: 116356 - timestamp: 1749230171181 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_2.conda sha256: 974804430e24f0b00f3a48b67ec10c9f5441c9bb3d82cc0af51ba45b8a75a241 md5: 1201137f1a5ec9556032ffc04dcdde8d @@ -2366,15 +1585,6 @@ packages: license_family: BSD size: 91183 timestamp: 1748393666725 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - sha256: 98299c73c7a93cd4f5ff8bb7f43cd80389f08b5a27a296d806bdef7841cc9b9e - md5: 18b81186a6adb43f000ad19ed7b70381 - depends: - - __osx >=10.13 - license: BSD-2-Clause - license_family: BSD - size: 77667 - timestamp: 1748393757154 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2 md5: 85ccccb47823dd9f7a99d2c7f530342f @@ -2400,21 +1610,6 @@ packages: license_family: MIT size: 666600 timestamp: 1756834976695 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda - sha256: c48d7e1cc927aef83ff9c48ae34dd1d7495c6ccc1edc4a3a6ba6aff1624be9ac - md5: e7630cef881b1174d40f3e69a883e55f - 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 - license: MIT - license_family: MIT - size: 605680 - timestamp: 1756835898134 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda sha256: a07cb53b5ffa2d5a18afc6fd5a526a5a53dd9523fbc022148bd2f9395697c46d md5: a4b4dd73c67df470d091312ab87bf6ae @@ -2451,16 +1646,6 @@ packages: license: blessing size: 938979 timestamp: 1764359444435 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-h6cc646a_0.conda - sha256: 8460901daff15749354f0de143e766febf0682fe9201bf307ea84837707644d1 - md5: f71213ed0c51030cb17a77fc60a757f1 - depends: - - __osx >=10.13 - - icu >=75.1,<76.0a0 - - libzlib >=1.3.1,<2.0a0 - license: blessing - size: 991350 - timestamp: 1764359781222 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.conda sha256: a46b167447e2a9e38586320c30b29e3b68b6f7e6b873c18d6b1aa2efd2626917 md5: 67e50e5bd4e5e2310d66b88c4da50096 @@ -2482,17 +1667,6 @@ packages: license_family: BSD size: 304790 timestamp: 1745608545575 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c - md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 284216 - timestamp: 1745608575796 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a md5: b68e8f66b94b44aaa8de4583d3d4cc40 @@ -2503,19 +1677,6 @@ packages: license_family: BSD size: 279193 timestamp: 1745608793272 -- conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - sha256: cbdf93898f2e27cefca5f3fe46519335d1fab25c4ea2a11b11502ff63e602c09 - md5: 9dce2f112bfd3400f4f432b3d0ac07b2 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - size: 292785 - timestamp: 1745608759342 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda sha256: 813427918316a00c904723f1dfc3da1bbc1974c5cfe1ed1e704c6f4e0798cbc6 md5: 68f68355000ec3f1d6f26ea13e8f525f @@ -2574,14 +1735,6 @@ packages: license: LGPL-2.1-or-later size: 89551 timestamp: 1748856210075 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libusb-1.0.29-h2287256_0.conda - sha256: b46c1c71d8be2d19615a10eaa997b3547848d1aee25a7e9486ad1ca8d61626a7 - md5: e5d5fd6235a259665d7652093dc7d6f1 - depends: - - __osx >=10.13 - license: LGPL-2.1-or-later - size: 85523 - timestamp: 1748856209535 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda sha256: 5eee9a2bf359e474d4548874bcfc8d29ebad0d9ba015314439c256904e40aaad md5: f6654e9e96e9d973981b3b2f898a5bfa @@ -2590,19 +1743,6 @@ packages: license: LGPL-2.1-or-later size: 83849 timestamp: 1748856224950 -- conda: https://conda.anaconda.org/conda-forge/win-64/libusb-1.0.29-h1839187_0.conda - sha256: 9837f8e8de20b6c9c033561cd33b4554cd551b217e3b8d2862b353ed2c23d8b8 - md5: a656b2c367405cd24988cf67ff2675aa - depends: - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - license: LGPL-2.1-or-later - size: 118204 - timestamp: 1748856290542 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.conda sha256: 030447cf827c471abd37092ab9714fde82b8222106f22fde94bc7a64e2704c40 md5: 41f5c09a211985c3ce642d60721e7c3e @@ -2623,15 +1763,6 @@ packages: license_family: MIT size: 895108 timestamp: 1753948278280 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - sha256: d90dd0eee6f195a5bd14edab4c5b33be3635b674b0b6c010fb942b956aa2254c - md5: fbfc6cf607ae1e1e498734e256561dc3 - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 422612 - timestamp: 1753948458902 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda sha256: 042c7488ad97a5629ec0a991a8b2a3345599401ecc75ad6a5af73b60e6db9689 md5: c0d87c3c8e075daf1daf6c31b53e8083 @@ -2641,46 +1772,6 @@ packages: license_family: MIT size: 421195 timestamp: 1753948426421 -- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda - sha256: f03dc82e6fb1725788e73ae97f0cd3d820d5af0d351a274104a0767035444c59 - md5: 31e1545994c48efc3e6ea32ca02a8724 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: MIT - license_family: MIT - size: 297087 - timestamp: 1753948490874 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h23bb396_0.conda - sha256: a40ec252d9c50fee7cb0b15be7e358a10888c89dadb23deac254789fcb047de7 - md5: 65dd26de1eea407dda59f0da170aed22 - depends: - - __osx >=10.13 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 h0ad03eb_0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - license: MIT - license_family: MIT - size: 40433 - timestamp: 1761016207984 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.conda - sha256: ddf87bf05955d7870a41ca6f0e9fbd7b896b5a26ec1a98cd990883ac0b4f99bb - md5: e7ed73b34f9d43d80b7e80eba9bce9f3 - depends: - - __osx >=10.13 - - icu >=75.1,<76.0a0 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 ha1d9b0f_0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 39985 - timestamp: 1761015935429 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-hba2cd1d_0.conda sha256: fa01101fe7d95085846c16825f0e7dc0efe1f1c7438a96fe7395c885d6179495 md5: a53d5f7fff38853ddb6bdc8fb609c039 @@ -2696,36 +1787,6 @@ packages: license_family: MIT size: 40611 timestamp: 1761016283558 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-h0ad03eb_0.conda - sha256: 00ddbcfbd0318f3c5dbf2b1e1bc595915efe2a61e73b844df422b11fec39d7d8 - md5: 8487998051f3d300fef701a49c27f282 - depends: - - __osx >=10.13 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - - libxml2 2.15.1 - license: MIT - license_family: MIT - size: 493432 - timestamp: 1761016183078 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - sha256: e23c5ac1da7b9b65bd18bf32b68717cd9da0387941178cb4d8cc5513eb69a0a9 - md5: 453807a4b94005e7148f89f9327eb1b7 - depends: - - __osx >=10.13 - - icu >=75.1,<76.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 - size: 494318 - timestamp: 1761015899881 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h8eac4d7_0.conda sha256: 3f3f9ba64a3fca15802d4eaf2a97696e6dcd916effa6a683756fd9f11245df5a md5: cf7291a970b93fe3bb726879f2037af8 @@ -2753,17 +1814,6 @@ packages: license_family: Other 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 - size: 57133 - timestamp: 1727963183990 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b md5: 369964e85dc26bfe78f41399b366c435 @@ -2775,31 +1825,6 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 - md5: 41fbfac52c601159df6c01f875de31b9 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - size: 55476 - timestamp: 1727963768015 -- 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 - 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 @@ -2812,22 +1837,6 @@ packages: license_family: APACHE size: 285974 timestamp: 1765964756583 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19.1.7-hb0207f0_2.conda - sha256: 8d042ee522bc9eb12c061f5f7e53052aeb4f13e576e624c8bebaf493725b95a0 - md5: 0f79b23c03d80f22ce4fe0022d12f6d2 - depends: - - __osx >=10.13 - - libllvm19 19.1.7 h56e7563_2 - - llvm-tools-19 19.1.7 h879f4bc_2 - constrains: - - llvmdev 19.1.7 - - llvm 19.1.7 - - clang 19.1.7 - - clang-tools 19.1.7 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 87962 - timestamp: 1757355027273 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19.1.7-h855ad52_2.conda sha256: 09750c33b5d694c494cad9eafda56c61a62622264173d760341b49fb001afe82 md5: 3e3ac06efc5fdc1aa675ca30bf7d53df @@ -2844,19 +1853,6 @@ packages: license_family: Apache size: 88390 timestamp: 1757353535760 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-19-19.1.7-h879f4bc_2.conda - sha256: fd281acb243323087ce672139f03a1b35ceb0e864a3b4e8113b9c23ca1f83bf0 - md5: bf644c6f69854656aa02d1520175840e - depends: - - __osx >=10.13 - - libcxx >=19 - - libllvm19 19.1.7 h56e7563_2 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 17198870 - timestamp: 1757354915882 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19-19.1.7-h91fd4e7_2.conda sha256: 73f9506f7c32a448071340e73a0e8461e349082d63ecc4849e3eb2d1efc357dd md5: 8237b150fcd7baf65258eef9a0fc76ef @@ -2881,16 +1877,6 @@ packages: license_family: LGPL size: 634751 timestamp: 1725746740014 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - sha256: dddb6721dff05b8dfb654c532725330231fcb81ff1e27d885ee0cdcc9fccf1c4 - md5: d511e58aaaabfc23136880d9956fa7a6 - depends: - - __osx >=10.13 - - gmp >=6.3.0,<7.0a0 - license: LGPL-3.0-only - license_family: LGPL - size: 373396 - timestamp: 1725746891597 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 md5: 4e4ea852d54cc2b869842de5044662fb @@ -2910,14 +1896,6 @@ packages: license: X11 AND BSD-3-Clause 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 - size: 822259 - timestamp: 1738196181298 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 md5: 068d497125e4bf8a66bf707254fff5ae @@ -2937,16 +1915,6 @@ packages: license_family: Apache size: 3165399 timestamp: 1762839186699 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - sha256: 36fe9fb316be22fcfb46d5fa3e2e85eec5ef84f908b7745f68f768917235b2d5 - md5: 3f50cdf9a97d0280655758b735781096 - depends: - - __osx >=10.13 - - ca-certificates - license: Apache-2.0 - license_family: Apache - size: 2778996 - timestamp: 1762840724922 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda sha256: ebe93dafcc09e099782fe3907485d4e1671296bc14f8c383cb6f3dfebb773988 md5: b34dc4172653c13dcf453862f251af2b @@ -2957,18 +1925,25 @@ packages: license_family: Apache size: 3108371 timestamp: 1762839712322 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - sha256: 6d72d6f766293d4f2aa60c28c244c8efed6946c430814175f959ffe8cab899b3 - md5: 84f8fb4afd1157f59098f618cd2437e4 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 + md5: 58335b26c38bf4a20f399384c33cbcf9 depends: - - ca-certificates - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 + - python >=3.8 + - python license: Apache-2.0 - license_family: Apache - size: 9440812 - timestamp: 1762841722179 + license_family: APACHE + size: 62477 + timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba md5: 9b4190c4055435ca3502070186eba53a @@ -2980,19 +1955,15 @@ packages: license_family: BSD size: 850231 timestamp: 1763655726735 -- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda - sha256: 3e9e02174edf02cb4bcdd75668ad7b74b8061791a3bc8bdb8a52ae336761ba3e - md5: 77eaf2336f3ae749e712f63e36b0f0a1 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda + sha256: 4d5e2faca810459724f11f78d19a0feee27a7be2b3fc5f7abbbec4c9fdcae93d + md5: bf47878473e5ab9fdb4115735230e191 depends: - - bzip2 >=1.0.8,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: BSD-3-Clause - license_family: BSD - size: 995992 - timestamp: 1763655708300 + - python >=3.13.0a0 + license: MIT + license_family: MIT + size: 1177084 + timestamp: 1762776338614 - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda sha256: c9601efb1af5391317e04eca77c6fe4d716bf1ca1ad8da2a05d15cb7c28d7d4e md5: 1bee70681f504ea424fb07cdb090c001 @@ -3003,16 +1974,6 @@ packages: license_family: GPL size: 115175 timestamp: 1720805894943 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - sha256: 636122606556b651ad4d0ac60c7ab6b379e98f390359a1f0c05ad6ba6fb3837f - md5: 0b1b9f9e420e4a0e40879b61f94ae646 - depends: - - __osx >=10.13 - - libiconv >=1.17,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 239818 - timestamp: 1720806136579 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda sha256: d82f4655b2d67fe12eefe1a3eea4cd27d33fa41dbc5e9aeab5fd6d3d2c26f18a md5: b4f41e19a8c20184eec3aaf0f0953293 @@ -3024,18 +1985,32 @@ packages: license_family: GPL size: 49724 timestamp: 1720806128118 -- conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - sha256: 86b0c40c8b569dbc164cb1de098ddabf4c240a5e8f38547aab00493891fa67f3 - md5: 122d6514d415fbe02c9b58aee9f6b53e +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda + sha256: 2558727093f13d4c30e124724566d16badd7de532fd8ee7483628977117d02be + md5: 70ece62498c769280f791e836ac53fff depends: - - libglib >=2.80.3,<3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: GPL-2.0-or-later - license_family: GPL - size: 36118 - timestamp: 1720806338740 + - python >=3.8 + - pybind11-global ==3.0.1 *_0 + - python + constrains: + - pybind11-abi ==11 + license: BSD-3-Clause + license_family: BSD + size: 232875 + timestamp: 1755953378112 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda + sha256: f11a5903879fe3a24e0d28329cb2b1945127e85a4cdb444b45545cf079f99e2d + md5: fe10b422ce8b5af5dab3740e4084c3f9 + depends: + - python >=3.8 + - __unix + - python + constrains: + - pybind11-abi ==11 + license: BSD-3-Clause + license_family: BSD + size: 228871 + timestamp: 1755953338243 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -3072,29 +2047,6 @@ packages: size: 36790521 timestamp: 1765021515427 python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - build_number: 100 - sha256: 58e23beaf3174a809c785900477c37df9f88993b5a3ccd0d76d57d6688a1be37 - md5: 6ffffd784fe1126b73329e29c80ddf53 - 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.1,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.4,<4.0a0 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - license: Python-2.0 - size: 17360881 - timestamp: 1765022591905 - python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.2-h40d2674_100_cp314.conda build_number: 100 sha256: 1a93782e90b53e04c2b1a50a0f8bf0887936649d19dba6a05b05c4b44dae96b7 @@ -3119,16 +2071,6 @@ packages: size: 13575758 timestamp: 1765021280625 python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - build_number: 8 - sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 - md5: 94305520c52a4aa3f6c2b1ff6008d9f8 - constrains: - - python 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - size: 7002 - timestamp: 1752805902938 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda build_number: 8 sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 @@ -3150,16 +2092,6 @@ packages: license_family: GPL size: 345073 timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 - md5: eefd65452dfe7cce476a519bece46704 - depends: - - __osx >=10.13 - - ncurses >=6.5,<7.0a0 - license: GPL-3.0-only - license_family: GPL - size: 317819 - timestamp: 1765813692798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 md5: f8381319127120ce51e081dce4865cf4 @@ -3180,15 +2112,6 @@ packages: license_family: MIT size: 193775 timestamp: 1748644872902 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda - sha256: 65c946fc5a9bb71772a7ac9bad64ff08ac07f7d5311306c2dcc1647157b96706 - md5: d0fcaaeff83dd4b6fb035c2f36df198b - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 185180 - timestamp: 1748644989546 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda sha256: f4957c05f4fbcd99577de8838ca4b5b1ae4b400a44be647a0159c14f85b9bfc0 md5: 029e812c8ae4e0d4cf6ff4f7d8dc9366 @@ -3198,13 +2121,24 @@ packages: license_family: MIT size: 185448 timestamp: 1748645057503 -- conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-64-14.5-hbf94ba6_4.conda - sha256: e0ec582a2ef7eca39fb40b17753e0a4006c02e794e3fc85ab598931d16ba28d5 - md5: bfc192e9093bd93e38185351be812157 - license: BSD-3-Clause - license_family: BSD - size: 8900 - timestamp: 1764616252089 +- conda: https://conda.anaconda.org/conda-forge/noarch/scikit-build-core-0.11.6-pyh7e86bf3_1.conda + sha256: bf802baa1a770c0ca631624a3627f84cae7978b56da02826b37ff1c5852a720a + md5: 4965b07e5cae94005cbe759e39f3def1 + depends: + - typing_extensions >=3.10.0 + - python >=3.8 + - exceptiongroup >=1.0 + - importlib-metadata >=4.13 + - importlib-resources >=1.3 + - packaging >=21.3 + - pathspec >=0.10.1 + - tomli >=1.2.2 + - typing-extensions >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 213181 + timestamp: 1755919500167 - conda: https://conda.anaconda.org/conda-forge/noarch/sdkroot_env_osx-arm64-14.5-hfa17104_3.conda sha256: 553cb066814b77257104073d7b81c3038459bf4ec7f5c0c435c666887f642b0b md5: 3351af6c29661d56d7ef9ea9699d1314 @@ -3212,15 +2146,6 @@ packages: license_family: BSD size: 8790 timestamp: 1764290423498 -- conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - sha256: 46fdeadf8f8d725819c4306838cdfd1099cd8fe3e17bd78862a5dfdcd6de61cf - md5: fbfb84b9de9a6939cb165c02c69b1865 - depends: - - openssl >=3.0.0,<4.0a0 - license: MIT - license_family: MIT - size: 213817 - timestamp: 1643442169866 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 sha256: 70791ae00a3756830cb50451db55f63e2a42a2fa2a8f1bab1ebd36bbb7d55bff md5: 4a2cac04f86a4540b8c9b8d8f597848f @@ -3251,16 +2176,6 @@ packages: license_family: GPL size: 24008591 timestamp: 1765578833462 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1600.0.11.8-h8d8e812_0.conda - sha256: 2602632f7923fd59042a897bfb22f050d78f2b5960d53565eae5fa6a79308caa - md5: aae272355bc3f038e403130a5f6f5495 - depends: - - libcxx >=19.0.0.a0 - - __osx >=10.13 - - ncurses >=6.5,<7.0a0 - license: NCSA - size: 213480 - timestamp: 1762535196805 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_0.conda sha256: dcb678fa77f448fa981bf3783902afe09b8838436f3092e9ecaf6a718c87f642 md5: 347261d575a245cb6111fb2cb5a79fc7 @@ -3284,16 +2199,6 @@ packages: license_family: BSD size: 3284905 timestamp: 1763054914403 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - sha256: 0d0b6cef83fec41bc0eb4f3b761c4621b7adfb14378051a8177bd9bb73d26779 - md5: bd9f1de651dbd80b51281c694827f78f - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: TCL - license_family: BSD - size: 3262702 - timestamp: 1763055085507 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda sha256: ad0c67cb03c163a109820dc9ecf77faf6ec7150e942d1e8bb13e5d39dc058ab7 md5: a73d54a5abba6543cb2f0af1bfbd6851 @@ -3304,21 +2209,41 @@ packages: license_family: BSD size: 3125484 timestamp: 1763055028377 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda + sha256: cb77c660b646c00a48ef942a9e1721ee46e90230c7c570cdeb5a893b5cce9bff + md5: d2732eb636c264dc9aa4cbee404b1a53 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 20973 + timestamp: 1760014679845 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c + md5: edd329d7d3a4ab45dcf905899a7a6115 + depends: + - typing_extensions ==4.15.0 pyhcf101f3_0 + license: PSF-2.0 + license_family: PSF + size: 91383 + timestamp: 1756220668932 +- 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 + size: 51692 + timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda sha256: 50fad5db6734d1bb73df1cf5db73215e326413d4b2137933f70708aa1840e25b md5: 338201218b54cadff2e774ac27733990 license: LicenseRef-Public-Domain size: 119204 timestamp: 1765745742795 -- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5 - md5: 71b24316859acd00bdb8b38f5e2ce328 - constrains: - - vc14_runtime >=14.29.30037 - - vs2015_runtime >=14.29.30037 - license: LicenseRef-MicrosoftWindowsSDK10 - size: 694692 - timestamp: 1756385147981 - conda: https://conda.anaconda.org/conda-forge/linux-64/valgrind-3.26.0-hea31c11_0.conda sha256: 4641179aaa2bb1fd0b2031d4b57d9d82b9630091da2cb834f3be9b4fc3a183e4 md5: 5feac25fd3bf569add9d71525c9725c1 @@ -3332,62 +2257,16 @@ packages: license_family: GPL size: 58950610 timestamp: 1764772272293 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda - sha256: 7036945b5fff304064108c22cbc1bb30e7536363782b0456681ee6cf209138bd - md5: 2d1c042360c09498891809a3765261be +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda + sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae + md5: 30cd29cb87d819caead4d55184c1d115 depends: - - vc14_runtime >=14.42.34433 - track_features: - - vc14 - license: BSD-3-Clause - license_family: BSD - size: 19070 - timestamp: 1765216452130 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - sha256: 7e8f7da25d7ce975bbe7d7e6d6e899bf1f253e524a3427cc135a79f3a79c457c - md5: fb8e4914c5ad1c71b3c519621e1df7b8 - depends: - - ucrt >=10.0.20348.0 - - vcomp14 14.44.35208 h818238b_33 - constrains: - - vs2015_runtime 14.44.35208.* *_33 - license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime - license_family: Proprietary - size: 684323 - timestamp: 1765216366832 -- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - sha256: f79edd878094e86af2b2bc1455b0a81e02839a784fb093d5996ad4cf7b810101 - md5: 4cb6942b4bd846e51b4849f4a93c7e6d - depends: - - ucrt >=10.0.20348.0 - constrains: - - vs2015_runtime 14.44.35208.* *_33 - license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime - license_family: Proprietary - size: 115073 - timestamp: 1765216325898 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_33.conda - sha256: 021eea50461e147d64eb5954340ff4e7b403d2c4d0c7180b97321eb8a49113c7 - md5: c4fc0aeef78517591c76a4b20f0e7fe5 - depends: - - vswhere - constrains: - - vs_win-64 2022.14 - track_features: - - vc14 - license: BSD-3-Clause - license_family: BSD - size: 22665 - timestamp: 1765216328494 -- conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - sha256: b72270395326dc56de9bd6ca82f63791b3c8c9e2b98e25242a9869a4ca821895 - md5: f622897afff347b715d046178ad745a5 - depends: - - __win + - python >=3.10 + - python license: MIT license_family: MIT - size: 238764 - timestamp: 1745560912727 + size: 24194 + timestamp: 1764460141901 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 @@ -3399,16 +2278,6 @@ packages: license_family: Other 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 - size: 88544 - timestamp: 1727963189976 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 md5: e3170d898ca6cb48f1bb567afb92f775 @@ -3419,18 +2288,6 @@ packages: license_family: Other size: 77606 timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c - md5: be60c4e8efa55fddc17b4131aa47acbd - depends: - - libzlib 1.3.1 h2466b09_2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Zlib - license_family: Other - size: 107439 - timestamp: 1727963788936 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 @@ -3441,16 +2298,6 @@ packages: license_family: BSD 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 - size: 528148 - timestamp: 1764777156963 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 md5: ab136e4c34e97f34fb621d2592a393d8 @@ -3461,15 +2308,3 @@ packages: license_family: BSD size: 433413 timestamp: 1764777166076 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda - sha256: 368d8628424966fd8f9c8018326a9c779e06913dd39e646cf331226acc90e5b2 - md5: 053b84beec00b71ea8ff7a4f84b55207 - depends: - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 388453 - timestamp: 1764777142545 diff --git a/pixi.toml b/pixi.toml index d4f5bc1..5a4117f 100644 --- a/pixi.toml +++ b/pixi.toml @@ -14,6 +14,10 @@ libftdi = "*" libusb = ">=1.0" zlib = "*" libhidapi = "*" +python = ">=3.8" +pybind11 = "*" +scikit-build-core = "*" +pip = "*" [target.linux-64.dependencies] libudev = "*" @@ -48,15 +52,18 @@ list-fpga = { cmd = "./build/openFPGALoader --list-fpga", depends-on = ["build"] all = { depends-on = ["build", "test"] } rebuild = { depends-on = ["clean", "build"] } +# Python wheel tasks +build-python = "cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PYTHON_BINDINGS=ON && cmake --build build" +build-wheel = "python -m pip wheel . --no-deps -w dist" +install-wheel = "python -m pip install dist/*.whl --force-reinstall" +test-python = "python -c 'import openfpgaloader; print(openfpgaloader.__version__)'" + [feature.dev.dependencies] [feature.dev.target.linux-64.dependencies] gdb = "*" valgrind = "*" -[feature.dev.target.osx-64.dependencies] -gdb = "*" - [feature.dev.target.osx-arm64.dependencies] gdb = "*" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e901a9a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +[build-system] +requires = ["scikit-build-core", "pybind11"] +build-backend = "scikit_build_core.build" + +[project] +name = "openfpgaloader" +version = "1.0.0" +description = "Python bindings for openFPGALoader - Universal FPGA programming tool" +readme = "python/README.md" +authors = [ + {name = "Gwenhael Goavec-Merou", email = "gwenhael.goavec-merou@trabucayre.com"} +] +license = {text = "Apache-2.0"} +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: C++", + "Topic :: Software Development", + "Topic :: System :: Hardware", +] +requires-python = ">=3.8" +dependencies = [] + +[project.urls] +Homepage = "https://github.com/trabucayre/openFPGALoader" +Documentation = "https://trabucayre.github.io/openFPGALoader" +Repository = "https://github.com/trabucayre/openFPGALoader" +Issues = "https://github.com/trabucayre/openFPGALoader/issues" + +[tool.scikit-build] +minimum-version = "0.8" +build-dir = "build/{wheel_tag}" +cmake.build-type = "Release" +wheel.packages = ["python/openfpgaloader"] + +[tool.scikit-build.cmake.define] +BUILD_PYTHON_BINDINGS = "ON" diff --git a/python/README.md b/python/README.md new file mode 100644 index 0000000..10ce36b --- /dev/null +++ b/python/README.md @@ -0,0 +1,51 @@ +# openFPGALoader Python Bindings + +Python bindings for openFPGALoader - Universal utility for programming FPGAs. + +## Installation + +```bash +pip install openfpgaloader +``` + +## Usage + +```python +import openfpgaloader as ofl + +# List supported boards +boards = ofl.list_boards() +print(f"Supported boards: {boards[:5]}") + +# List supported cables +cables = ofl.list_cables() +print(f"Supported cables: {cables[:5]}") + +# Detect connected FPGA +detected = ofl.detect_fpga() + +# Load bitstream to SRAM +ofl.load_bitstream("my_design.bit", board="arty") + +# Load bitstream to Flash +ofl.load_bitstream("my_design.bit", board="arty", to_flash=True) + +# Using the class interface +loader = ofl.OpenFPGALoader(board="arty", verbose=1) +loader.program_sram("my_design.bit") +loader.program_flash("my_design.bit", offset=0) +``` + +## Building from Source + +```bash +# Using pixi (recommended) +pixi run build-wheel + +# Or using pip +pip install . +``` + +## License + +Apache-2.0 diff --git a/python/bindings.cpp b/python/bindings.cpp new file mode 100644 index 0000000..4f25575 --- /dev/null +++ b/python/bindings.cpp @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: Apache-2.0 +/* + * Python bindings for openFPGALoader + */ + +#include +#include +#include + +#include +#include +#include +#include + +#include "../src/board.hpp" +#include "../src/cable.hpp" +#include "../src/part.hpp" +#include "../src/device.hpp" +#include "../src/jtag.hpp" +#include "../src/spiFlash.hpp" + +namespace py = pybind11; + +class OpenFPGALoader { +public: + OpenFPGALoader(const std::string& board_name = "", + const std::string& cable_name = "", + int verbose = 0) + : board_name_(board_name), cable_name_(cable_name), verbose_(verbose) {} + + bool program_sram(const std::string& bitstream_file) { + // Implementation would integrate with the existing Device classes + return true; + } + + bool program_flash(const std::string& bitstream_file, unsigned int offset = 0) { + // Implementation would integrate with the existing Device classes + return true; + } + + bool detect() { + // Implementation would integrate with JTAG detection + return true; + } + +private: + std::string board_name_; + std::string cable_name_; + int verbose_; +}; + +// Helper functions to expose list commands +std::vector list_boards() { + std::vector boards; + for (const auto& board : board_list) { + boards.push_back(board.first); + } + return boards; +} + +std::vector list_cables() { + std::vector cables; + for (const auto& cable : cable_list) { + cables.push_back(cable.first); + } + return cables; +} + +std::vector list_fpgas() { + std::vector fpgas; + for (const auto& fpga : fpga_list) { + fpgas.push_back(fpga.second.model); + } + return fpgas; +} + +// Simple convenience functions +bool load_bitstream(const std::string& bitstream_file, + const std::string& board = "", + const std::string& cable = "", + bool to_flash = false, + unsigned int offset = 0, + int verbose = 0) { + OpenFPGALoader loader(board, cable, verbose); + if (to_flash) { + return loader.program_flash(bitstream_file, offset); + } else { + return loader.program_sram(bitstream_file); + } +} + +bool detect_fpga(const std::string& cable = "", int verbose = 0) { + OpenFPGALoader loader("", cable, verbose); + return loader.detect(); +} + +PYBIND11_MODULE(_openfpgaloader, m) { + m.doc() = "Python bindings for openFPGALoader"; + + // Main class + py::class_(m, "OpenFPGALoader") + .def(py::init(), + py::arg("board") = "", + py::arg("cable") = "", + py::arg("verbose") = 0) + .def("program_sram", &OpenFPGALoader::program_sram, + py::arg("bitstream_file"), + "Program FPGA SRAM with bitstream") + .def("program_flash", &OpenFPGALoader::program_flash, + py::arg("bitstream_file"), + py::arg("offset") = 0, + "Program FPGA flash with bitstream") + .def("detect", &OpenFPGALoader::detect, + "Detect connected FPGA"); + + // Convenience functions + m.def("load_bitstream", &load_bitstream, + py::arg("bitstream_file"), + py::arg("board") = "", + py::arg("cable") = "", + py::arg("to_flash") = false, + py::arg("offset") = 0, + py::arg("verbose") = 0, + "Load a bitstream to FPGA SRAM or Flash"); + + m.def("detect_fpga", &detect_fpga, + py::arg("cable") = "", + py::arg("verbose") = 0, + "Detect connected FPGA"); + + m.def("list_boards", &list_boards, + "List all supported boards"); + + m.def("list_cables", &list_cables, + "List all supported cables"); + + m.def("list_fpgas", &list_fpgas, + "List all supported FPGAs"); + + m.attr("__version__") = "1.0.0"; +} diff --git a/python/example.py b/python/example.py new file mode 100644 index 0000000..28d3e2c --- /dev/null +++ b/python/example.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +""" +Example usage of openFPGALoader Python bindings +""" + +import openfpgaloader as ofl + + +def main(): + print("openFPGALoader Python Bindings Example") + print(f"Version: {ofl.__version__}\n") + + # List supported boards + boards = ofl.list_boards() + print(f"Total supported boards: {len(boards)}") + print(f"First 10 boards: {boards[:10]}\n") + + # List supported cables + cables = ofl.list_cables() + print(f"Total supported cables: {len(cables)}") + print(f"First 10 cables: {cables[:10]}\n") + + # List supported FPGAs + fpgas = ofl.list_fpgas() + print(f"Total supported FPGAs: {len(fpgas)}") + print(f"First 10 FPGAs: {fpgas[:10]}\n") + + # Create an OpenFPGALoader instance + print("Creating OpenFPGALoader instance for Arty board...") + loader = ofl.OpenFPGALoader(board="arty", verbose=0) + print("Instance created successfully!\n") + + # Example of how to use the loader (would need actual bitstream file) + # loader.program_sram("my_design.bit") + # loader.program_flash("my_design.bit", offset=0) + + # Using convenience function + # ofl.load_bitstream("my_design.bit", board="arty", to_flash=False) + + # ofl.load_bitstream("my_design.bit", board="arty", to_flash=False) + +if __name__ == "__main__": + main() diff --git a/python/openfpgaloader/__init__.py b/python/openfpgaloader/__init__.py new file mode 100644 index 0000000..fd020b9 --- /dev/null +++ b/python/openfpgaloader/__init__.py @@ -0,0 +1,25 @@ +""" +openFPGALoader Python bindings + +Python wrapper for the openFPGALoader library. +""" + +from ._openfpgaloader import ( + load_bitstream, + detect_fpga, + list_boards, + list_cables, + list_fpgas, + OpenFPGALoader, +) + +__version__ = "1.0.0" + +__all__ = [ + "load_bitstream", + "detect_fpga", + "list_boards", + "list_cables", + "list_fpgas", + "OpenFPGALoader", +] diff --git a/python/openfpgaloader/__pycache__/__init__.cpython-314.pyc b/python/openfpgaloader/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000..71baac1 Binary files /dev/null and b/python/openfpgaloader/__pycache__/__init__.cpython-314.pyc differ