diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 31a91f6..16fc313 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -8,7 +8,7 @@ on: - main jobs: - buildmamba: + buildpixi: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.gitignore b/.gitignore index 0ccb00a..11bd654 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.tmp subprojects/* !subprojects/*.wrap +*.capnp.* # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 52c0dd9..39b612c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,3 +26,10 @@ repos: language: system types_or: [c++, c] args: ["--filter=-whitespace/comments,-runtime/references,-whitespace/indent,-runtime/int,-build/c++11"] + - id: meson-format + name: meson format + entry: meson + language: system + types: [meson] + files: meson\.build$ + args: ["format", "-i"] diff --git a/CppCore/meson.build b/CppCore/meson.build index 5d19e90..febaf14 100644 --- a/CppCore/meson.build +++ b/CppCore/meson.build @@ -16,6 +16,11 @@ potlib = library( install: true, ) +# ------------------------ Server +if get_option('with_rpc') + subdir('rgpot/rpc') +endif + # ------------------------ Examples if get_option('with_examples') diff --git a/CppCore/rgpot/CuH2/meson.build b/CppCore/rgpot/CuH2/meson.build index 01260dc..0542772 100644 --- a/CppCore/rgpot/CuH2/meson.build +++ b/CppCore/rgpot/CuH2/meson.build @@ -1,7 +1,9 @@ -cuh2 = library('cuh2', - 'CuH2Pot.cc', - 'cuh2Utils.cc', - dependencies: _deps, - cpp_args: _args, - include_directories: _incdirs, - install : true) +cuh2 = library( + 'cuh2', + 'CuH2Pot.cc', + 'cuh2Utils.cc', + dependencies: _deps, + cpp_args: _args, + include_directories: _incdirs, + install: true, +) diff --git a/CppCore/rgpot/LennardJones/meson.build b/CppCore/rgpot/LennardJones/meson.build index 4faa050..ddc2206 100644 --- a/CppCore/rgpot/LennardJones/meson.build +++ b/CppCore/rgpot/LennardJones/meson.build @@ -1,6 +1,8 @@ -lennard_jones = library('lennard_jones', - 'LJPot.cc', - dependencies: _deps, - cpp_args: _args, - include_directories: ['../../'], - install : true) +lennard_jones = library( + 'lennard_jones', + 'LJPot.cc', + dependencies: _deps, + cpp_args: _args, + include_directories: ['../../'], + install: true, +) diff --git a/CppCore/rgpot/rpc/Potentials.capnp b/CppCore/rgpot/rpc/Potentials.capnp new file mode 100644 index 0000000..8cc3472 --- /dev/null +++ b/CppCore/rgpot/rpc/Potentials.capnp @@ -0,0 +1,21 @@ +@0xbd1f89fa17369103; + +# Design kanged from eOn v4 C-style structs +# TODO(rg): Should be more object oriented + +struct ForceInput { + natm @0 :Int32; # TODO(rg): Do we really need this.. + pos @1 :List(Float64); + atmnrs @2 :List(Int32); + box @3 :List(Float64); +} + +struct PotentialResult { + energy @0: Float64; + forces @1: List(Float64); +} + +interface Potential { + calculate @0 (fip :ForceInput) + -> (result :PotentialResult); +} diff --git a/CppCore/rgpot/rpc/meson.build b/CppCore/rgpot/rpc/meson.build new file mode 100644 index 0000000..1f6334b --- /dev/null +++ b/CppCore/rgpot/rpc/meson.build @@ -0,0 +1,42 @@ +# Find dependencies and tools +capnp_rpc_dep = dependency('capnp-rpc') +capnpc = find_program('capnpc') + +output_dir = meson.current_source_dir() / 'gen' + +gen_rpc = custom_target( + 'gen_rpc', + input: 'Potentials.capnp', + output: ['Potentials.capnp.c++', 'Potentials.capnp.h'], + command: [ + 'sh', + '-c', + 'mkdir -p @0@ && @1@ -o c++:@0@ --src-prefix=@2@ @3@'.format( + output_dir, + capnpc.path(), + meson.current_source_dir(), + '@INPUT@', + ), + ], +) + +gen_inc = include_directories('gen') +_incdirs += gen_inc + +ptlrpc = library( + 'ptlrpc', + gen_rpc, + dependencies: _deps + capnp_rpc_dep, + cpp_args: _args, + include_directories: _incdirs, + install: true, +) +server = executable( + 'potserv', + ['server.cpp', gen_rpc], + link_with: [ptlrpc, _linkto], + dependencies: _deps + capnp_rpc_dep, + cpp_args: _args, + include_directories: _incdirs, + install: true, +) diff --git a/CppCore/rgpot/rpc/pyclient.py b/CppCore/rgpot/rpc/pyclient.py new file mode 100644 index 0000000..ca5e291 --- /dev/null +++ b/CppCore/rgpot/rpc/pyclient.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 + +import argparse +import asyncio + +import capnp +import Potentials_capnp + + +def parse_args(): + parser = argparse.ArgumentParser( + usage="Connects to the Calculator server at the given address and does some RPCs" + ) + parser.add_argument("host", help="HOST:PORT") + + return parser.parse_args() + + +async def main(connection): + client = capnp.TwoPartyClient(connection) + calculator = client.bootstrap().cast_as(Potentials_capnp.Potential) + + print("Connection made ", end="") + + # Create the atomic positions, atom types, and box matrix + positions = [ + 0.63940268750835, + 0.90484742551374, + 6.97516498544584, # Cu + 3.19652040936288, + 0.90417430354811, + 6.97547796369474, # Cu + 8.98363230369760, + 9.94703496017833, + 7.83556854923689, # H + 7.64080177576300, + 9.94703114803832, + 7.83556986121272, # H + ] + + atom_types = [29, 29, 1, 1] # Atomic types for Cu and H + + box_matrix = [15.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 30.0] + + # Create the ForceInput message + force_input = Potentials_capnp.ForceInput.new_message() + force_input.natm = len(atom_types) # Number of atoms + + # Set positions + pos_list = force_input.init("pos", len(positions)) + for idx, pos in enumerate(positions): + pos_list[idx] = pos + + # Set atom types + atom_list = force_input.init("atmnrs", len(atom_types)) + for idx, atom in enumerate(atom_types): + atom_list[idx] = atom + + # Set the box matrix + box_list = force_input.init("box", len(box_matrix)) + for idx, val in enumerate(box_matrix): + box_list[idx] = val + + # Call the CuH2Pot.calculate method with ForceInput + response = calculator.calculate(force_input) + + # Await and print the result + result = await response + result_dict = result.to_dict() + print("Energy:", result_dict["result"]["energy"]) + print("Forces:", result_dict["result"]["forces"]) + + +async def cmd_main(host): + host, port = host.split(":") + await main(await capnp.AsyncIoStream.create_connection(host=host, port=port)) + + +if __name__ == "__main__": + asyncio.run(capnp.run(cmd_main(parse_args().host))) diff --git a/CppCore/rgpot/rpc/server.cpp b/CppCore/rgpot/rpc/server.cpp new file mode 100644 index 0000000..4936390 --- /dev/null +++ b/CppCore/rgpot/rpc/server.cpp @@ -0,0 +1,93 @@ +// MIT License +// Copyright 2023--present Rohit Goswami +#include +#include + +#include "rgpot/CuH2/CuH2Pot.hpp" +#include "rgpot/LennardJones/LJPot.hpp" +#include "rgpot/types/AtomMatrix.hpp" +#include "rgpot/types/adapters/capnp/capnp_adapter.hpp" + +class GenericPotImpl final : public Potential::Server { +private: + std::unique_ptr m_potential; + +public: + // The constructor takes ownership of a potential object + GenericPotImpl(std::unique_ptr pot) + : m_potential(std::move(pot)) {} + + kj::Promise calculate(CalculateContext context) override { + // --- Use the adapter to convert FROM Cap'n Proto --- + auto fip = context.getParams().getFip(); + const auto numAtoms = fip.getNatm(); + + rgpot::types::AtomMatrix nativePositions = + rgpot::types::adapt::capnp::convertPositionsFromCapnp(fip.getPos(), + numAtoms); + std::vector nativeAtomTypes = + rgpot::types::adapt::capnp::convertAtomNumbersFromCapnp( + fip.getAtmnrs()); + std::array, 3> nativeBoxMatrix = + rgpot::types::adapt::capnp::convertBoxMatrixFromCapnp(fip.getBox()); + + // --- Call the potential via the polymorphic interface --- + // This is the key change: no hardcoded type! + auto [energy, forces] = + (*m_potential)(nativePositions, nativeAtomTypes, nativeBoxMatrix); + + // --- Use the adapter to populate TO Cap'n Proto --- + auto result = context.getResults(); + auto pres = result.initResult(); + pres.setEnergy(energy); + + auto forcesList = pres.initForces(numAtoms * 3); + rgpot::types::adapt::capnp::populateForcesToCapnp(forcesList, forces); + + return kj::READY_NOW; + } +}; + +// Main server setup now acts as a factory +int main(int argc, char *argv[]) { + if (argc < 3) { + std::cerr << "Usage: " << argv[0] << " " << std::endl; + std::cerr << " Available PotentialTypes: CuH2" + << std::endl; // Add more as you implement them + return 1; + } + + int port = 12345; + try { + port = std::stoi(argv[1]); + } catch (const std::exception &e) { + std::cerr << "Invalid port argument '" << argv[1] + << "'. Using default 12345." << std::endl; + } + + std::string pot_type = argv[2]; + std::unique_ptr potential_to_use; + + if (pot_type == "CuH2") { + std::cout << "Loading CuH2 potential..." << std::endl; + potential_to_use = std::make_unique(); + } else if (pot_type == "LJ") { + std::cout << "Loading LJ potential..." << std::endl; + potential_to_use = std::make_unique(); + } else { + std::cerr << "Error: Unknown potential type '" << pot_type << "'" + << std::endl; + return 1; + } + + capnp::EzRpcServer server( + kj::heap(std::move(potential_to_use)), "localhost", port); + + // Keep the server running indefinitely + auto &waitScope = server.getWaitScope(); + std::cout << "Server running on port " << port << " with " << pot_type + << " potential." << std::endl; + kj::NEVER_DONE.wait(waitScope); + + return 0; +} diff --git a/CppCore/rgpot/types/adapters/capnp/capnp_adapter.hpp b/CppCore/rgpot/types/adapters/capnp/capnp_adapter.hpp new file mode 100644 index 0000000..0636537 --- /dev/null +++ b/CppCore/rgpot/types/adapters/capnp/capnp_adapter.hpp @@ -0,0 +1,91 @@ +#pragma once +// MIT License +// Copyright 2023--present Rohit Goswami + +#include + +#include +#include +#include "rgpot/rpc/gen/Potentials.capnp.h" +#include "rgpot/types/AtomMatrix.hpp" + +namespace rgpot { +namespace types { +namespace adapt { +namespace capnp { + +// --- Functions to convert from Cap'n Proto Readers to Native Types --- + +// Converts a Cap'n Proto List representing positions to an AtomMatrix. +inline AtomMatrix +convertPositionsFromCapnp(const ::capnp::List::Reader &capnpPos, + size_t numAtoms) { + AtomMatrix nativePositions(numAtoms, 3); + for (size_t i = 0; i < numAtoms * 3; ++i) { + nativePositions.data()[i] = capnpPos[i]; + } + return nativePositions; +} + +inline std::vector +convertAtomNumbersFromCapnp(const ::capnp::List::Reader &capnpAtmnrs) { + std::vector nativeAtomTypes(capnpAtmnrs.size()); + for (size_t i = 0; i < capnpAtmnrs.size(); ++i) { + nativeAtomTypes[i] = capnpAtmnrs[i]; + } + return nativeAtomTypes; +} + +inline std::array, 3> +convertBoxMatrixFromCapnp(const ::capnp::List::Reader &capnpBox) { + std::array, 3> nativeBoxMatrix; + for (size_t i = 0; i < 3; ++i) { + // Correctly read the flattened 3x3 matrix row by row. + nativeBoxMatrix[i] = {capnpBox[i * 3], capnpBox[i * 3 + 1], + capnpBox[i * 3 + 2]}; + } + return nativeBoxMatrix; +} + +// --- Functions to convert from Native Types to Cap'n Proto Builders --- + +// Populates a Cap'n Proto List builder with data from an AtomMatrix. +inline void populatePositionsToCapnp(::capnp::List::Builder &capnpPos, + const AtomMatrix &positions) { + for (int i = 0; i < positions.rows() * positions.cols(); ++i) { + capnpPos.set(i, positions.data()[i]); + } +} + +// Populates a Cap'n Proto List builder with forces from an AtomMatrix. +inline void populateForcesToCapnp(::capnp::List::Builder &capnpForces, + const AtomMatrix &forces) { + for (int i = 0; i < forces.rows() * forces.cols(); ++i) { + capnpForces.set(i, forces.data()[i]); + } +} + +// Populates a Cap'n Proto List builder with data from a +// std::vector. +inline void populateAtomNumbersToCapnp(::capnp::List::Builder &capnpAtmnrs, + const std::vector &atomNumbers) { + for (size_t i = 0; i < atomNumbers.size(); ++i) { + capnpAtmnrs.set(i, atomNumbers[i]); + } +} + +// Populates a Cap'n Proto List builder with data from a 3x3 matrix. +inline void populateBoxMatrixToCapnp( + ::capnp::List::Builder &capnpBox, + const std::array, 3> &boxMatrix) { + for (size_t i = 0; i < 3; ++i) { + for (size_t j = 0; j < 3; ++j) { + capnpBox.set(i * 3 + j, boxMatrix[i][j]); + } + } +} + +} // namespace capnp +} // namespace adapt +} // namespace types +} // namespace rgpot diff --git a/Readme.org b/Readme.org index bc179d8..652856f 100644 --- a/Readme.org +++ b/Readme.org @@ -1,8 +1,8 @@ * About This is a set of standard potentials in C++ or Fortran. The goal is to provide minimal, binding friendly interfaces for ease of usage from Python or even R. -The core library is header-only, though adapt functions are provided for interfacing -to ~Eigen~ and ~xtensor~. +The core library is header-only, though adapter functions are provided for +interfacing to ~Eigen~ and ~xtensor~. This was originally designed for interfacing easily to potentials implemented [[http://theory.cm.utexas.edu/eon/][in eOn]], but has grown to be more flexible. diff --git a/meson.build b/meson.build index 9c283e9..0d27b7d 100644 --- a/meson.build +++ b/meson.build @@ -2,7 +2,7 @@ project( 'pot', 'cpp', version: '0.1.0', - default_options: ['warning_level=2', 'cpp_std=c++17'], + default_options: ['warning_level=2', 'cpp_std=c++20'], ) # IMPORTANT!! warning_level=3 passes -fimplicit-none # Many of the older Fortran codes need implicit typing @@ -36,7 +36,7 @@ _deps += m_dep _deps += [declare_dependency(link_args: '-lstdc++')] if get_option('with_examples') -# Eigen + # Eigen if not get_option('with_eigen') eigen_dep = dependency('eigen3') if not eigen_dep.found() @@ -52,7 +52,7 @@ if get_option('with_examples') fmt_dep = dependency('fmt', required: true) _deps += fmt_dep if not get_option('with_xtensor') -# These are added if not done later + # These are added if not done later _deps += dependency('xtensor') _deps += dependency('xtensor-blas') _args += ['-DWITH_XTENSOR=TRUE'] diff --git a/meson_options.txt b/meson_options.txt index 94d4299..c457309 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -5,4 +5,5 @@ option('with_bench', type : 'boolean', value : false) option('with_examples', type : 'boolean', value : false) option('with_xtensor', type : 'boolean', value : false) option('with_eigen', type : 'boolean', value : false) +option('with_rpc', type : 'boolean', value : false) option('pure_lib', type : 'boolean', value : true) diff --git a/pixi.lock b/pixi.lock index a445892..360d5d7 100644 --- a/pixi.lock +++ b/pixi.lock @@ -8,6 +8,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_1.conda @@ -15,6 +16,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.1-heb4867d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.8.0-h2b85faf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/capnproto-1.0.2-h766bdaa_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/catch2-3.7.1-h84d6215_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-19-19.1.0-default_hb5137d0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-19.1.0-default_hb5137d0_0.conda @@ -25,7 +27,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.15.0-py312h85ebf7f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpplint-1.6.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.8.0-h1a2810e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-11.0.2-h434a139_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.8.0-h36df796_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda @@ -38,6 +43,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_17.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -71,40 +78,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.28-pthreads_hbcdf1e8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pipx-1.7.1-pyhd8ed1ab_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/pkgconfig-1.5.5-pyhd8ed1ab_4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycapnp-2.0.0-py312hd0dd6af_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.4-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.14.1-hed91bc2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h4a8ded7_17.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-10.0.0-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xtensor-0.25.0-h00ab1b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xtl-0.7.7-h00ab1b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.1-h44e7173_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.8.0-hb714fc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/capnproto-1.0.2-heb0326a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/catch2-3.7.1-h37c8870_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-h5b2de21_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-h98e843e_1.conda @@ -126,7 +150,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/cppcheck-2.15.0-py312hf406c1f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpplint-1.6.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.8.0-h6a1c779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fmt-11.0.2-h3c5361c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.8.0-h33d1f46_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda @@ -134,7 +161,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.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/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_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-951.9-h0a3eb4e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h38c89e5_1.conda @@ -162,6 +191,7 @@ environments: - 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-19.1.0-h56322cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-17.0.6-hbedff68_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda @@ -170,11 +200,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openblas-0.3.28-openmp_hba01982_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre-8.45-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pipx-1.7.1-pyhd8ed1ab_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/pkgconfig-1.5.5-pyhd8ed1ab_4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pycapnp-2.0.0-py312he537db1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda @@ -182,13 +220,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.4-h0dc2134_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.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.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/spdlog-1.14.1-h325aa07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tinyxml2-10.0.0-h73e2aa4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xtensor-0.25.0-h7728843_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xtl-0.7.7-h7728843_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 @@ -196,10 +240,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.1-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.8.0-h2664225_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/capnproto-1.0.2-hcee422a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/catch2-3.7.1-h7b3277c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hf67d63f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h4208deb_1.conda @@ -221,7 +267,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cppcheck-2.15.0-py312h78b5aaf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpplint-1.6.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.8.0-he8d86c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-11.0.2-h420ef59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.8.0-hc3477c4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda @@ -229,7 +278,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.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/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-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-951.9-h39a299f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hc81425b_1.conda @@ -259,6 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.0-hba312e6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-17.0.6-h5090b49_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda @@ -267,12 +319,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openblas-0.3.28-openmp_h1f0b1b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre-8.45-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pipx-1.7.1-pyhd8ed1ab_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/pkgconfig-1.5.5-pyhd8ed1ab_4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pycapnp-2.0.0-py312h9aaef94_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -280,13 +340,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.4-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.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.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/spdlog-1.14.1-h6d8af72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1300.6.5-h03f4b80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tinyxml2-10.0.0-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xtensor-0.25.0-h2ffa867_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xtl-0.7.7-h2ffa867_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 @@ -294,9 +360,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.8.0-hcfcfb64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/capnproto-1.0.2-hb5d7e06_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/catch2-3.7.1-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/clang-format-19.1.0-default_hec7ea82_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/clangdev-5.0.0-flang_3.tar.bz2 @@ -307,11 +375,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/cppcheck-2.15.0-py312h6f9174a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpplint-1.6.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.8.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/flang-5.0.0-he025d50_20180525.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-5.0.0-h13ae965_20180526.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/fmt-11.0.2-h7f575de_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.8.0-h9655429_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_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.10.1-h1ee3ff0_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda @@ -326,26 +399,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.49.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openblas-0.3.28-pthreads_h29161c6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre-8.45-h0e60522_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pipx-1.7.1-pyhd8ed1ab_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/noarch/pkgconfig-1.5.5-pyhd8ed1ab_4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pycapnp-2.0.0-py312h6759c7f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/spdlog-1.14.1-h9f2357e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tinyxml2-10.0.0-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.7.0-pyhd8ed1ab_0.tar.bz2 @@ -354,6 +438,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_21.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-he1865b1_21.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xtensor-0.25.0-h181d51b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xtl-0.7.7-h181d51b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 @@ -403,6 +489,22 @@ packages: license_family: Apache size: 41268 timestamp: 1728339105769 +- kind: conda + name: asttokens + version: 2.4.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 + md5: 5f25798dcefd8252ce5f9dc494d5f571 + depends: + - python >=3.5 + - six >=1.12.0 + license: Apache-2.0 + license_family: Apache + size: 28922 + timestamp: 1698341257884 - kind: conda name: binutils version: '2.43' @@ -663,6 +765,76 @@ packages: license: ISC size: 158482 timestamp: 1725019034582 +- kind: conda + name: capnproto + version: 1.0.2 + build: h766bdaa_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/capnproto-1.0.2-h766bdaa_2.conda + sha256: e80d7a2a433037656284fcea237f70a29659906fef011f351960355c2542fc19 + md5: 341ff15870e42dc2ac6a660b6aeb3245 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + size: 3967795 + timestamp: 1728321274561 +- kind: conda + name: capnproto + version: 1.0.2 + build: hb5d7e06_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/capnproto-1.0.2-hb5d7e06_2.conda + sha256: 2b68241ce5908374786b8ffe79efa97e11410a7003b36dc74be3dd0e37b22107 + md5: 96fff88fd33194c1324ece6e94817668 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + size: 8771194 + timestamp: 1728321975836 +- kind: conda + name: capnproto + version: 1.0.2 + build: hcee422a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/capnproto-1.0.2-hcee422a_2.conda + sha256: 5e7fbc51f6aa4a164f47f81b1870ba93e4fdec573742f7718288203da61eb08d + md5: e1720fdfdf3dfc4a03dd7fd5f6564b9d + depends: + - __osx >=11.0 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + size: 2910053 + timestamp: 1728321260824 +- kind: conda + name: capnproto + version: 1.0.2 + build: heb0326a_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/capnproto-1.0.2-heb0326a_2.conda + sha256: 067493bfa390971a25e82ecfadf57891f5c63359ad49933f0f7cdd4af4925cdc + md5: f1187ef74d7f8813f8ad3df9caaa8177 + depends: + - __osx >=10.13 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + size: 2891123 + timestamp: 1728321264577 - kind: conda name: catch2 version: 3.7.1 @@ -1628,6 +1800,21 @@ packages: license_family: BSD size: 6202 timestamp: 1725746590277 +- kind: conda + name: decorator + version: 5.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 + md5: 43afe5ab04e35e17ba28649471dd7364 + depends: + - python >=3.5 + license: BSD-2-Clause + license_family: BSD + size: 12072 + timestamp: 1641555714315 - kind: conda name: eigen version: 3.4.0 @@ -1687,6 +1874,35 @@ packages: license_family: MOZILLA size: 1089706 timestamp: 1690273089254 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 + md5: d02ae936e42063ca46af6cdad2dbd1e0 + depends: + - python >=3.7 + license: MIT and PSF-2.0 + size: 20418 + timestamp: 1720869435725 +- kind: conda + name: executing + version: 2.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 + md5: d0441db20c827c11721889a241df1220 + depends: + - python >=2.7 + license: MIT + license_family: MIT + size: 28337 + timestamp: 1725214501850 - kind: conda name: flang version: 5.0.0 @@ -2213,6 +2429,60 @@ packages: license_family: MIT size: 11857802 timestamp: 1720853997952 +- kind: conda + name: ipython + version: 8.28.0 + build: pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda + sha256: b18adc659d43fc8eef026312a74cd39944ffe9d8decee71ec60a1974fb8ec86c + md5: 7142a7dff2a47e40b55d304decadd78a + depends: + - __unix + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pexpect >4.3 + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + license: BSD-3-Clause + license_family: BSD + size: 600094 + timestamp: 1727944801855 +- kind: conda + name: ipython + version: 8.28.0 + build: pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh7428d3b_0.conda + sha256: 8d2480d5593854e6bd994329a0b1819d39b35c5ee9e85043737df962f236a948 + md5: 4df2592ebe3672f282a02c557db209ee + depends: + - __win + - colorama + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + license: BSD-3-Clause + license_family: BSD + size: 599622 + timestamp: 1727945272442 - kind: conda name: isl version: '0.26' @@ -2247,6 +2517,22 @@ packages: license_family: MIT size: 819937 timestamp: 1680649567633 +- kind: conda + name: jedi + version: 0.19.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a + md5: 81a3be0b2023e1ea8555781f0ad904a2 + depends: + - parso >=0.8.3,<0.9.0 + - python >=3.6 + license: MIT + license_family: MIT + size: 841312 + timestamp: 1696326218364 - kind: conda name: kernel-headers_linux-64 version: 3.10.0 @@ -3969,6 +4255,22 @@ packages: license_family: Apache size: 23219165 timestamp: 1701378990823 +- kind: conda + name: matplotlib-inline + version: 0.1.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda + sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab + md5: 779345c95648be40d22aaa89de7d4254 + depends: + - python >=3.6 + - traitlets + license: BSD-3-Clause + license_family: BSD + size: 14599 + timestamp: 1713250613726 - kind: conda name: meson version: 1.5.2 @@ -4322,6 +4624,21 @@ packages: license_family: APACHE size: 50290 timestamp: 1718189540074 +- kind: conda + name: parso + version: 0.8.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae + md5: 81534b420deb77da8833f2289b8d47ac + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 75191 + timestamp: 1712320447201 - kind: conda name: pcre version: '8.45' @@ -4416,6 +4733,55 @@ packages: license_family: BSD size: 820831 timestamp: 1723489427046 +- kind: conda + name: pexpect + version: 4.9.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e + md5: 629f3203c99b32e0988910c93e77f3b6 + depends: + - ptyprocess >=0.5 + - python >=3.7 + license: ISC + size: 53600 + timestamp: 1706113273252 +- kind: conda + name: pickleshare + version: 0.7.5 + build: py_1003 + build_number: 1003 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 + md5: 415f0ebb6198cc2801c73438a9fb5761 + depends: + - python >=3 + license: MIT + license_family: MIT + size: 9332 + timestamp: 1602536313357 +- kind: conda + name: pip + version: '24.2' + build: pyh8b19718_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda + sha256: d820e5358bcb117fa6286e55d4550c60b0332443df62121df839eab2d11c890b + md5: 6c78fbb8ddfd64bcb55b5cbafd2d2c43 + depends: + - python >=3.8,<3.13.0a0 + - setuptools + - wheel + license: MIT + license_family: MIT + size: 1237976 + timestamp: 1724954490262 - kind: conda name: pipx version: 1.7.1 @@ -4536,6 +4902,132 @@ packages: license_family: MIT size: 20625 timestamp: 1726613611845 +- kind: conda + name: prompt-toolkit + version: 3.0.48 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 + md5: 4c05134c48b6a74f33bbb9938e4a115e + depends: + - python >=3.7 + - wcwidth + constrains: + - prompt_toolkit 3.0.48 + license: BSD-3-Clause + license_family: BSD + size: 270271 + timestamp: 1727341744544 +- kind: conda + name: ptyprocess + version: 0.7.0 + build: pyhd3deb0d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a + md5: 359eeb6536da0e687af562ed265ec263 + depends: + - python + license: ISC + size: 16546 + timestamp: 1609419417991 +- kind: conda + name: pure_eval + version: 0.2.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 + md5: 0f051f09d992e0d08941706ad519ee0e + depends: + - python >=3.5 + license: MIT + license_family: MIT + size: 16551 + timestamp: 1721585805256 +- kind: conda + name: pycapnp + version: 2.0.0 + build: py312h6759c7f_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pycapnp-2.0.0-py312h6759c7f_1.conda + sha256: efcd0cf5f76924e0a75f5d043870b732685401f628a0f568c2de8cbe8f3dd3ff + md5: ec2186021277d1c7e8593ec2dbec6ad7 + depends: + - capnproto >=1.0.2,<1.0.3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 951183 + timestamp: 1720569709066 +- kind: conda + name: pycapnp + version: 2.0.0 + build: py312h9aaef94_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pycapnp-2.0.0-py312h9aaef94_1.conda + sha256: fe016d2ad9596ea37f7e1ffdfbcdd988fba71f80dec406a5a35bebc7d4d26507 + md5: 767adf44baa3824ed0acb3fa0f7eee2d + depends: + - __osx >=11.0 + - capnproto >=1.0.2,<1.0.3.0a0 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 464880 + timestamp: 1720569546235 +- kind: conda + name: pycapnp + version: 2.0.0 + build: py312hd0dd6af_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pycapnp-2.0.0-py312hd0dd6af_1.conda + sha256: 8f802eb49775b413c190cc3b8c80d6e39b4ba3faacbeeb53b73635aa9a56c2e5 + md5: bf102e8a0ebc01bab5141b277114a3ed + depends: + - __glibc >=2.17,<3.0.a0 + - capnproto >=1.0.2,<1.0.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 553797 + timestamp: 1720569190748 +- kind: conda + name: pycapnp + version: 2.0.0 + build: py312he537db1_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pycapnp-2.0.0-py312he537db1_1.conda + sha256: 67b614cfe7915ddc96f5f1005012e4891bd6efbffd98615f166b57dd0d26a5d5 + md5: 01c83c38b20b696bcdf545b330d29c08 + depends: + - __osx >=10.13 + - capnproto >=1.0.2,<1.0.3.0a0 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 1284218 + timestamp: 1720569389209 - kind: conda name: pygments version: 2.18.0 @@ -4847,6 +5339,21 @@ packages: license_family: MIT size: 213817 timestamp: 1643442169866 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + md5: e5f25f8dbc060e9a8d912e432202afc2 + depends: + - python + license: MIT + license_family: MIT + size: 14259 + timestamp: 1620240338595 - kind: conda name: spdlog version: 1.14.1 @@ -4917,6 +5424,24 @@ packages: license_family: MIT size: 195665 timestamp: 1722238295031 +- kind: conda + name: stack_data + version: 0.6.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec + md5: e7df0fdd404616638df5ece6e69ba7af + depends: + - asttokens + - executing + - pure_eval + - python >=3.5 + license: MIT + license_family: MIT + size: 26205 + timestamp: 1669632203115 - kind: conda name: sysroot_linux-64 version: '2.17' @@ -5099,6 +5624,36 @@ packages: license_family: MIT size: 18203 timestamp: 1727974767524 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 + md5: 3df84416a021220d8b5700c613af2dc5 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 110187 + timestamp: 1713535244513 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + size: 39888 + timestamp: 1717802653893 - kind: conda name: tzdata version: 2024b @@ -5221,6 +5776,36 @@ packages: license_family: MIT size: 219013 timestamp: 1719460515960 +- kind: conda + name: wcwidth + version: 0.2.13 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 + md5: 68f0738df502a14213624b288c60c9ad + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 32709 + timestamp: 1704731373922 +- kind: conda + name: wheel + version: 0.44.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + sha256: d828764736babb4322b8102094de38074dedfc71f5ff405c9dfee89191c14ebc + md5: d44e3b085abcaef02983c6305b84b584 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 58585 + timestamp: 1722797131787 - kind: conda name: xtensor version: 0.25.0 diff --git a/pixi.toml b/pixi.toml index 7705c43..1653d7f 100644 --- a/pixi.toml +++ b/pixi.toml @@ -24,3 +24,7 @@ cpplint = ">=1.6.0,<2" pipx = ">=1.7.1,<2" fortran-compiler = ">=1.8.0,<2" clang-format = ">=19.1.0,<20" +capnproto = ">=1.0.2,<2" +pycapnp = ">=2.0.0,<3" +ipython = ">=8.28.0,<9" +pip = ">=24.2,<25"