Skip to main content

Python bindings for laddu

Project description

Amplitude analysis made short and sweet

GitHub Release GitHub last commit GitHub Actions Workflow Status GitHub License Crates.io Version docs.rs Read the Docs Codecov PyPI - Version CodSpeed Badge

laddu (/ˈlʌduː/) is a library for analysis of particle physics data. It is intended to be a simple and efficient alternative to some of the other tools out there. laddu is written in Rust with bindings to Python via PyO3 and maturin and is the spiritual successor to rustitude, one of my first Rust projects. The goal of this project is to allow users to perform complex amplitude analyses (like partial-wave analyses) without complex code or configuration files.

[!CAUTION] This crate is still in an early development phase, and the API is not stable. It can (and likely will) be subject to breaking changes before the 1.0.0 version release (and hopefully not many after that).

Table of Contents

Key Features

  • A simple interface focused on combining Amplitudes into models which can be evaluated over Datasets.
  • A single Amplitude trait which makes it easy to write new amplitudes and integrate them into the library.
  • Easy interfaces to precompute and cache values before the main calculation to speed up model evaluations.
  • Efficient parallelism using rayon.
  • Python bindings to allow users to write quick, easy-to-read code that just works.

Installation

laddu can be added to a Rust project with cargo:

cargo add laddu

The library's Python bindings are located in a library by the same name, which can be installed simply with your favorite Python package manager:

pip install laddu

Quick Start

Rust

Writing a New Amplitude

While it is probably easier for most users to skip to the Python section, there is currently no way to implement a new amplitude directly from Python. At the time of writing, Rust is not a common language used by particle physics, but this tutorial should hopefully convince the reader that they don't have to know the intricacies of Rust to write performant amplitudes. As an example, here is how one might write a Breit-Wigner, parameterized as follows:

I_{\ell}(m; m_0, \Gamma_0, m_1, m_2) =  \frac{1}{\pi}\frac{m_0 \Gamma_0 B_{\ell}(m, m_1, m_2)}{(m_0^2 - m^2) - \imath m_0 \Gamma}

where

\Gamma = \Gamma_0 \frac{m_0}{m} \frac{q(m, m_1, m_2)}{q(m_0, m_1, m_2)} \left(\frac{B_{\ell}(m, m_1, m_2)}{B_{\ell}(m_0, m_1, m_2)}\right)^2

is the relativistic width correction, $q(m_a, m_b, m_c)$ is the breakup momentum of a particle with mass $m_a$ decaying into two particles with masses $m_b$ and $m_c$, $B_{\ell}(m_a, m_b, m_c)$ is the Blatt-Weisskopf barrier factor for the same decay assuming particle $a$ has angular momentum $\ell$, $m_0$ is the mass of the resonance, $\Gamma_0$ is the nominal width of the resonance, $m_1$ and $m_2$ are the masses of the decay products, and $m$ is the "input" mass.

Although this particular amplitude is already included in laddu, let's assume it isn't and imagine how we would write it from scratch:

use laddu::{
   AmplitudeID, Cache, DatasetMetadata, EventData, Expression, LadduError, LadduResult, Mass,
   ParameterID, ParameterLike, Parameters, Resources, PI,
};
use laddu::traits::*;
use laddu::utils::functions::{blatt_weisskopf, breakup_momentum};
use laddu::{Deserialize, Serialize, typetag};
use num::complex::Complex64;

#[derive(Clone, Serialize, Deserialize)]
pub struct MyBreitWigner {
    name: String,
    mass: ParameterLike,
    width: ParameterLike,
    pid_mass: ParameterID,
    pid_width: ParameterID,
    l: usize,
    daughter_1_mass: Mass,
    daughter_2_mass: Mass,
    resonance_mass: Mass,
}
impl MyBreitWigner {
    pub fn new(
        name: &str,
        mass: ParameterLike,
        width: ParameterLike,
        l: usize,
        daughter_1_mass: &Mass,
        daughter_2_mass: &Mass,
        resonance_mass: &Mass,
    ) -> LadduResult<Expression> {
        Self {
            name: name.to_string(),
            mass,
            width,
            pid_mass: ParameterID::default(),
            pid_width: ParameterID::default(),
            l,
            daughter_1_mass: daughter_1_mass.clone(),
            daughter_2_mass: daughter_2_mass.clone(),
            resonance_mass: resonance_mass.clone(),
        }
        .into_expression()
    }
}

#[typetag::serde]
impl Amplitude for MyBreitWigner {
    fn register(&mut self, resources: &mut Resources) -> LadduResult<AmplitudeID> {
        self.pid_mass = resources.register_parameter(&self.mass)?;
        self.pid_width = resources.register_parameter(&self.width)?;
        resources.register_amplitude(&self.name)
    }

    fn bind(
        &mut self,
        metadata: &DatasetMetadata,
    ) -> LadduResult<()> {
        self.daughter_1_mass.bind(metadata)?;
        self.daughter_2_mass.bind(metadata)?;
        self.resonance_mass.bind(metadata)?;
        Ok(())
    }

    fn compute(&self, parameters: &Parameters, event: &EventData, _cache: &Cache) -> Complex64 {
        let mass = self.resonance_mass.value(event);
        let mass0 = parameters.get(self.pid_mass);
        let width0 = parameters.get(self.pid_width);
        let mass1 = self.daughter_1_mass.value(event);
        let mass2 = self.daughter_2_mass.value(event);
        let q0 = breakup_momentum(mass0, mass1, mass2);
        let q = breakup_momentum(mass, mass1, mass2);
        let f0 = blatt_weisskopf(mass0, mass1, mass2, self.l);
        let f = blatt_weisskopf(mass, mass1, mass2, self.l);
        let width = width0 * (mass0 / mass) * (q / q0) * (f / f0).powi(2);
        let n = (mass0 * width0 / PI).sqrt();
        let d = Complex64::new(mass0.powi(2) - mass.powi(2), -(mass0 * width));
        Complex64::from(f * n) / d
    }
}

Calculating a Likelihood

We could then write some code to use this amplitude. For demonstration purposes, let's just calculate an extended unbinned negative log-likelihood, assuming we have some data and Monte Carlo in the proper parquet format:

use laddu::{io, Scalar, Dataset, DatasetReadOptions, Mass, NLL, parameter};
let p4_names = ["beam", "proton", "kshort1", "kshort2"];
let aux_names = ["pol_magnitude", "pol_angle"];
let options = DatasetReadOptions::default()
    .p4_names(p4_names)
    .aux_names(aux_names)
    .alias("resonance", ["kshort1", "kshort2"]);
let ds_data = io::read_parquet("test_data/data.parquet", &options).unwrap();
let ds_mc = io::read_parquet("test_data/mc.parquet", &options).unwrap();

let resonance_mass = Mass::new(["kshort1", "kshort2"]);
let p1_mass = Mass::new(["kshort1"]);
let p2_mass = Mass::new(["kshort2"]);
let bw = MyBreitWigner::new(
    "bw",
    parameter("mass"),
    parameter("width"),
    2,
    &p1_mass,
    &p2_mass,
    &resonance_mass,
).unwrap();
let mag = Scalar::new("mag", parameter("magnitude")).unwrap();
let expr = (mag * bw).norm_sqr();

let nll = NLL::new(&expr, &ds_data, &ds_mc).unwrap();
println!("Parameters names and order: {:?}", nll.parameters());
let result = nll.evaluate(&[1.27, 0.120, 100.0]);
println!("The extended negative log-likelihood is {}", result);

In practice, amplitudes can also be added together, their real and imaginary parts can be taken, and evaluators should mostly take the real part of whatever complex value comes out of the model.

Python

Fitting Data

While we cannot (yet) implement new amplitudes within the Python interface alone, it does contain all the functionality required to analyze data. Here's an example to show some of the syntax. This models includes three partial waves described by the $Z_{\ell}^m$ amplitude listed in Equation (D13) here[^1]. Since we take the squared norm of each individual sum, they are invariant up to a total phase, thus the S-wave was arbitrarily picked to be purely real.

import laddu as ld
import matplotlib.pyplot as plt
import numpy as np
from laddu import constant, parameter

def main():
    p4_columns = ['beam', 'proton', 'kshort1', 'kshort2']
    aux_columns = ['pol_magnitude', 'pol_angle']
    ds_data = ld.io.read_parquet('path/to/data.parquet', p4s=p4_columns, aux=aux_columns)
    ds_mc = ld.io.read_parquet('path/to/accmc.parquet', p4s=p4_columns, aux=aux_columns)
    topology = ld.Topology.missing_k2('beam', ['kshort1', 'kshort2'], 'proton')
    angles = ld.Angles(topology, 'kshort1', 'Helicity')
    polarization = ld.Polarization(topology, 'pol_magnitude', 'pol_angle')

    z00p = ld.Zlm("z00p", 0, 0, "+", angles, polarization)
    z00n = ld.Zlm("z00n", 0, 0, "-", angles, polarization)
    z22p = ld.Zlm("z22p", 2, 2, "+", angles, polarization)

    s0p = ld.Scalar("s0p", parameter("s0p"))
    s0n = ld.Scalar("s0n", parameter("s0n"))
    d2p = ld.ComplexScalar("d2p", parameter("d2 re"), parameter("d2 im"))

    pos_re = (s0p * z00p.real() + d2p * z22p.real()).norm_sqr()
    pos_im = (s0p * z00p.imag() + d2p * z22p.imag()).norm_sqr()
    neg_re = (s0n * z00n.real()).norm_sqr()
    neg_im = (s0n * z00n.imag()).norm_sqr()
    expr = pos_re + pos_im + neg_re + neg_im

    nll = ld.NLL(expr, ds_data, ds_mc)
    status = nll.minimize([1.0] * len(nll.parameters))
    print(status)
    fit_weights = nll.project(status.x)
    s0p_weights = nll.project_with(status.x, ["z00p", "s0p"])
    s0n_weights = nll.project_with(status.x, ["z00n", "s0n"])
    d2p_weights = nll.project_with(status.x, ["z22p", "d2p"])
    masses_mc = res_mass.value_on(ds_mc)
    masses_data = res_mass.value_on(ds_data)
    weights_data = ds_data.weights
    plt.hist(masses_data, weights=weights_data, bins=80, range=(1.0, 2.0), label="Data", histtype="step")
    plt.hist(masses_mc, weights=fit_weights, bins=80, range=(1.0, 2.0), label="Fit", histtype="step")
    plt.hist(masses_mc, weights=s0p_weights, bins=80, range=(1.0, 2.0), label="$S_0^+$", histtype="step")
    plt.hist(masses_mc, weights=s0n_weights, bins=80, range=(1.0, 2.0), label="$S_0^-$", histtype="step")
    plt.hist(masses_mc, weights=d2p_weights, bins=80, range=(1.0, 2.0), label="$D_2^+$", histtype="step")
    plt.legend()
    plt.savefig("demo.svg")


if __name__ == "__main__":
    main()

This example would probably make the most sense for a binned fit, since there isn't actually any mass dependence in any of these amplitudes (so it will just plot the relative amount of each wave over the entire dataset).

Other Examples

You can find other Python examples in the py-laddu/examples folder. These scripts have inline script metadata (PEP 723) which allows them to be run with uv run (which will automatically install the necessary dependencies).

Example 1

The first example script uses data generated with gen_amp. These data consist of a data file with two resonances, an $f_0(1500)$ modeled as a Breit-Wigner with a mass of $1506\text{ MeV}/c^2$ and a width of $112\text{ MeV}/c^2$ and an $f_2'(1525)$, also modeled as a Breit-Wigner, with a mass of $1517\text{ MeV}/c^2$ and a width of $86\text{ MeV}/c^2$, as per the PDG. These were generated to decay to pairs of $K_S^0$s and are produced via photoproduction off a proton target (as in the GlueX experiment). The beam photon is polarized with an angle of $0$ degrees relative to the production plane and a polarization magnitude of $0.3519$ (out of unity). The configuration file used to generate the corresponding data and Monte Carlo files can also be found in the python_examples, and the datasets contain $100,000$ data events and $1,000,000$ Monte Carlo events (generated with the -f argument to create a Monte Carlo file without resonances). The result of this fit can be seen in the following image (using the default 50 bins):

Additionally, this example has an optional MCMC analysis complete with a custom observer to monitor convergence based on the integrated autocorrelation time. This can be run using example_1_mcmc.py script after example_1.py has completed, as it uses data stored during the execution of example_1.py to initialize the walkers. A word of warning, this analysis takes a long time, but is meant more as a demonstration of what's possible with the current system. The custom autocorrelation observer plays an important role in choosing convergence criteria, since this problem has an implicit symmetry (the absolute phase between the two waves matters, but the sign is ambiguous) which cause the posterior distributions to sometimes be multimodal, which can lead to long IATs. Instead, the custom implementation projects the walkers' positions onto the two waves and uses those projections as a proxy to the real chain. This proxy is unimodal by definition, so the IATs calculated from it are much smaller and more realistically describe convergence.

Some example plots can be seen below for the first data bin:

Example 2

The second example uses linear algebra to calculate unpolarized and polarized moments $H(\ell, m)$ from the same data used in the first example. While the results are not as informative, it is a good demonstration of how laddu can also be used outside of the context of a maximum likelihood fit. The mechanism for obtaining moments could also be written with numpy and scipy alone, but laddu's data format, variables, and amplitude evaluation make it easy to write the same code in a very straightforward way which will efficiently run in parallel or even over an MPI instance.

A moment analysis is similar to a partial-wave analysis, except the target observables are coefficients attached to spherical harmonics in a standard sum rather than a coherent sum. This makes it difficult to extract these observables from a maximum likelihood fit, since the corresponding intensity function may be negative for some parameter values, making the logarithm of that intensity undefined. However, similar to a discrete Fourier transform, a moment analysis can be performed by simply summing the spherical harmonic evaluated on each event, and this is what the example does. However, there are two additional considerations. First, since the example data contains a polarized photon beam, we can extract polarized moments which span a basis of not only spherical harmonics of decay angles, but also sine and cosine functions of the polarization angle. Second, we have a Monte Carlo dataset which models the detector efficiency, so we have to construct a matrix of normalization integrals (similar to what we do in an extended maximum likelihood fit). Any non-unitary acceptance function will cause mixing between all of the moments, so we invert the normalization integral matrix and use the matrix-vector product to transform measured moments into the true physical moments.

The resulting unpolarized moments are shown below:

Data Format

laddu focuses on a column layout rather than a specific file container. Each particle is represented by four floating-point columns (_px, _py, _pz, _e), auxiliary scalars keep their explicit names (e.g. pol_magnitude), and an optional weight column stores per-event weights. As long as those columns exist, the physical storage format may vary. Today, Parquet is the preferred container because it is small, language-agnostic, and easy to stream, but the Rust core can also read ROOT TTrees via oxyroot, and the Python bindings add an AmpTools-aware backend on top of uproot. When the weight column is omitted, both the Rust and Python loaders fill it with ones so that unweighted samples continue to work without any extra preprocessing.

For example, the following columns describe a dataset with four particles, the first of which is a polarized photon beam as in the GlueX experiment:

Column name Data Type Interpretation
beam_px Float32 or Float64 Beam momentum (x-component)
beam_py Float32 or Float64 Beam momentum (y-component)
beam_pz Float32 or Float64 Beam momentum (z-component)
beam_e Float32 or Float64 Beam energy
pol_magnitude Float32 or Float64 Beam polarization magnitude
pol_angle Float32 or Float64 Beam polarization angle
proton_px Float32 or Float64 Recoil proton momentum (x-component)
proton_py Float32 or Float64 Recoil proton momentum (y-component)
proton_pz Float32 or Float64 Recoil proton momentum (z-component)
proton_e Float32 or Float64 Recoil proton energy
kshort1_px Float32 or Float64 Decay product 1 momentum (x-component)
kshort1_py Float32 or Float64 Decay product 1 momentum (y-component)
kshort1_pz Float32 or Float64 Decay product 1 momentum (z-component)
kshort1_e Float32 or Float64 Decay product 1 energy
kshort2_px Float32 or Float64 Decay product 2 momentum (x-component)
kshort2_py Float32 or Float64 Decay product 2 momentum (y-component)
kshort2_pz Float32 or Float64 Decay product 2 momentum (z-component)
kshort2_e Float32 or Float64 Decay product 2 energy
weight Float32 or Float64 Event weight

AmpTools-format ROOT files can be directly read as Dataset objects (this is currently implemented in the Python bindings; the Rust API still targets Parquet/standard ROOT TTrees):

import laddu as ld

dataset = ld.io.read_amptools(
    'example_amp.root',
    pol_in_beam=True,
)

This loads the ROOT tree, infers the particle names, and exposes the result through the same Dataset interface used for Parquet inputs.

MPI Support

The latest version of laddu supports the Message Passing Interface (MPI) protocol for distributed computing. MPI-compatible versions of the core laddu methods have been written behind the mpi feature gate. To build laddu with MPI compatibility, it can be added with the mpi feature via cargo add laddu --features mpi. Note that this requires a working MPI installation, and OpenMPI or MPICH are recommended, as well as LLVM/Clang. The installation of these packages differs by system, but are generally available via each system's package manager. The Python implementation of laddu contains a library laddu-cpu and may be optionally installed with a dependency laddu-mpi. If the latter is available, it will be used at runtime unless otherwise specified. Note that this just selects the backend, and doesn't actually use MPI at all, it just gives the option to use it. You can install the optional dependency automatically with pip install 'laddu[mpi]'.

To use MPI in Rust, one must simply surround their main analysis code with a call to laddu::mpi::use_mpi(true) and laddu::mpi::finalize_mpi(). The first method has a boolean flag which allows for runtime switching of MPI use (for example, disabling MPI with an environment variable). These same methods exist in Python as laddu.mpi.use_mpi(trigger=true) and laddu.mpi.finalize_mpi(), and an additional context manager, laddu.mpi.MPI(trigger=true), can be used to quickly wrap a main() function. See the documentation for more details.

[!WARNING] The current ROOT backend always materializes the entire TTree on rank 0 before broadcasting partitions to other ranks. Large ROOT files therefore negate the MPI memory-savings you get with Parquet until upstream oxyroot gains range-aware reads.

Future Plans

  • GPU integration (this is incredibly difficult to do right now, but it's something I'm looking into).
  • As always, more tests and documentation.

Alternatives

While this is likely the first Rust project (aside from my previous attempt, rustitude), there are several other amplitude analysis programs out there at time of writing. This library is a rewrite of rustitude which was written when I was just learning Rust and didn't have a firm grasp of a lot of the core concepts that are required to make the analysis pipeline memory- and CPU-efficient. In particular, rustitude worked well, but ate up a ton of memory and did not handle precalculation as nicely.

AmpTools

The main inspiration for this project is the library most of my collaboration uses, AmpTools. AmpTools has several advantages over laddu: it's probably faster for almost every use case, but this is mainly because it is fully integrated with MPI and GPU support. I'm not actually sure if there's a fair benchmark between the two libraries, but I'd wager AmpTools would still win. AmpTools is a much older, more developed project, dating back to 2010. However, it does have its disadvantages. First and foremost, the primary interaction with the library is through configuration files which are not really code and sort of represent a domain specific language. As such, there isn't really a way to check if a particular config will work before running it. Users could technically code up their analyses in C++ as well, but I think this would generally be more work for very little benefit. AmpTools primarily interacts with Minuit, so there aren't simple ways to perform alternative optimization algorithms, and the outputs are a file which must also be parsed by code written by the user. This usually means some boilerplate setup for each analysis, a slew of input and output files, and, since it doesn't ship with any amplitudes, integration with other libraries. The data format is also very rigid, to the point where including beam polarization information feels hacked on (see the Zlm implementation here which requires the event-by-event polarization to be stored in the beam's four-momentum). While there isn't an official Python interface, Lawrence Ng has made some progress porting the code here.

PyPWA

PyPWA is a library written in pure Python. While this might seem like an issue for performance (and it sort of is), the library has several features which encourage the use of JIT compilers. The upside is that analyses can be quickly prototyped and run with very few dependencies, it can even run on GPUs and use multiprocessing. The downside is that recent development has been slow and the actual implementation of common amplitudes is, in my opinion, messy. I don't think that's a reason to not use it, but it does make it difficult for new users to get started.

ComPWA

ComPWA is a newcomer to the field. It's also a pure Python implementation and is comprised of three separate libraries. QRules can be used to validate and generate particle reaction topologies using conservation rules. AmpForm uses SymPy to transform these topologies into mathematical expressions, and it can also simplify the mathematical forms through the built-in CAS of SymPy. Finally, TensorWaves connects AmpForm to various fitting methods. In general, these libraries have tons of neat features, are well-documented, and are really quite nice to use. I would like to eventually see laddu as a companion to ComPWA (rather than direct competition), but I don't really know enough about the libraries to say much more than that.

Others

It could be the case that I am leaving out software with which I am not familiar. If so, I'd love to include it here for reference. I don't think that laddu will ever be the end-all-be-all of amplitude analysis, just an alternative that might improve on existing systems. It is important for physicists to be aware of these alternatives. For example, if you really don't want to learn Rust but need to implement an amplitude which isn't already included here, laddu isn't for you, and one of these alternatives might be best.

[^1]: Mathieu, V., Albaladejo, M., Fernández-Ramírez, C., Jackura, A. W., Mikhasenko, M., Pilloni, A., & Szczepaniak, A. P. (2019). Moments of angular distribution and beam asymmetries in $\eta\pi^0$ photoproduction at GlueX. Physical Review D, 100(5). doi:10.1103/physrevd.100.054017

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laddu_cpu-0.14.0.tar.gz (733.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

laddu_cpu-0.14.0-cp313-cp313t-win_arm64.whl (7.3 MB view details)

Uploaded CPython 3.13tWindows ARM64

laddu_cpu-0.14.0-cp313-cp313t-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.13tWindows x86-64

laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_i686.whl (8.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_armv7l.whl (7.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_i686.whl (8.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ i686

laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_armv7l.whl (7.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARMv7l

laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_24_s390x.whl (8.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.24+ s390x

laddu_cpu-0.14.0-cp313-cp313t-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

laddu_cpu-0.14.0-cp313-cp313t-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

laddu_cpu-0.14.0-cp37-abi3-win_arm64.whl (7.4 MB view details)

Uploaded CPython 3.7+Windows ARM64

laddu_cpu-0.14.0-cp37-abi3-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.7+Windows x86-64

laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ x86-64

laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_i686.whl (8.3 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ i686

laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_armv7l.whl (7.8 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ ARMv7l

laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ ARM64

laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ x86-64

laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_i686.whl (8.5 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ i686

laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_armv7l.whl (7.5 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ ARMv7l

laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ ARM64

laddu_cpu-0.14.0-cp37-abi3-manylinux_2_24_s390x.whl (8.2 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.24+ s390x

laddu_cpu-0.14.0-cp37-abi3-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

laddu_cpu-0.14.0-cp37-abi3-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

Details for the file laddu_cpu-0.14.0.tar.gz.

File metadata

  • Download URL: laddu_cpu-0.14.0.tar.gz
  • Upload date:
  • Size: 733.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0.tar.gz
Algorithm Hash digest
SHA256 f9574440e72a95347a28ebd168b8f98a340663680b903e1bbb896286d078e2fc
MD5 809bb71f7d623a8aebe555f429f06efc
BLAKE2b-256 3afc28401ed89e395ae1643e62c43cf5e771bcf0e72b6af21fee2debb9635d5f

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 0a46cf0acae84c2d89a42eb174dc14e45928bc0e7584167e3fce1fba4bc7617e
MD5 e2859c90304a59a1e611e5a1198f19c3
BLAKE2b-256 b4ee8514c88425ea7d7c3f48a4fad1512dec4d32557b41eb742017c1732a94ec

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 6f2fb405af03a0a9a4c76e939dfcf2aab90fb2da61247a2fa1310d3cfcc8e11b
MD5 7afc7f0aa703fef7ef87ac76d92923c0
BLAKE2b-256 7500487da6d17aa3a20580d0a3600fb4fc14bfaf0ef25c5f26eb9b10b95e33e8

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f10e6dadf978e32e32e8185f4bf538d3e9206f4037b7b5f9c4b4da925dfcacf2
MD5 e592e5ca0178383a524a33cf5c22ad7f
BLAKE2b-256 66cd85f27684e1d362d144d2d0763493f7fcb8d80aec5d30574f17bf2302a57b

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c50634dc59fb8c889d60d5feff6faf2990c8446cccc9c241dd08faf2134c711c
MD5 e29bb8623acbaa4e8399856140cd409c
BLAKE2b-256 89e379f0842785a21581ed17bcb8f92b258c7b0d053b406c1377742805846a6f

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e2e7268d1cb7783a1baa06ca5190424036279cb06acc6f9506ff0caf7f3229d1
MD5 48882cda4a62d32c89da00744864dddc
BLAKE2b-256 6a10e67cc0aa17617d086aec834621a471aaafac907e999b6e91b070515a3ad5

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2c06d7677f4eab0330ab5c8fccc6d36315ff2998dff67e0ab99432c73303f3a0
MD5 ccb68b49c21cf7f7f0d8e5a7d93b7138
BLAKE2b-256 ddab7fa906ad26486e1ae9c756a6142940b706d7acbce77a218fd5d32db10730

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a06d205911b5596f7d31d81f898e0fcdd739e142295ac0e26b26dd7718f936c7
MD5 1bcc120fd99c4b0c282e2f0ef3d2b376
BLAKE2b-256 d8f329a385cf3f805dbc5f9dde7dc96a2f820f450f7d5acbb2c2da0a3a114ce5

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_i686.whl
  • Upload date:
  • Size: 8.5 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.28+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 69d9cdcc9ba5523159fa124325016b6217c9817ded48ebab0d7167e5acff424d
MD5 64562e9e74cf89c8ef160fb201e0f3b1
BLAKE2b-256 98194e8a234790b042ad99112470ace3ae037114e14b34edf51a042a663c04df

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_armv7l.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.28+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 7ca1c33742e50851e9987a9f218f0c952182937778a5388fea7f361b2484044c
MD5 c85ce41dcdb517c9396c1241ed1c0c30
BLAKE2b-256 9e92d8b6266515469990e07420d9022bee541b79f18589672db35a2b081b5c24

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0d34a5057ceb7f0233f745c58e98d4efdd8d1918a9b0f531996fcc281de1ae84
MD5 d3a443840ef88f2c7b198917b8027e5e
BLAKE2b-256 b6ab7a669bf2ef96dfbcbb5e03a2fe3db27d037a10a9636c27fe8f616aa64341

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_24_s390x.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_24_s390x.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.24+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-manylinux_2_24_s390x.whl
Algorithm Hash digest
SHA256 0a6dce909eeca207db813309e200817215125604fcbee6f36367d0b721eee029
MD5 cd444558f08e2a4837bb6c459b4b480c
BLAKE2b-256 5d831ca5c58b1286e9f76a200f733209fd4821b8461949c946bb92d812de3efb

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.13t, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc5edded0d7434c6d491ed91a77f4930b4365a0e07ab31aa717e3a5bdd72fd87
MD5 06f9c0c9a61e43759aea13a6e021837b
BLAKE2b-256 79992f0023a86bf8872a58a05d7c93bc7f392192a2971baf5d0d3e7b8618c0bb

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp313-cp313t-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.13t, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 adf38a330d597741b8e1f1d0aea1c0b64d6617392734aa8745c0c7ddd91a5b0a
MD5 839f34511b4a02817c947a56adff4e92
BLAKE2b-256 384400e2c0e7bcbf6bde4e5d093325410ac52a002d78d64a29da1f59e04e3be4

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-win_arm64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-win_arm64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.7+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 7ff058a6af34d52af73c593fad5652562fff9092fec6564b834e06a13e25791c
MD5 ef3811693d1aa160f3941aa725bff5bf
BLAKE2b-256 43e20007a0be72788507e57dd8050a80afa1ddce62e66355e28c61567ff4a9d6

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e909e0cfa895240c0a6b6c06eb25166633d2114f472ad1b48e9061197af4b54f
MD5 3415be65693ca85c45577af28f83e91d
BLAKE2b-256 0aa741e0ca0d3a88bad5471735f47375f50d04269b9e443253e1e64aa50d465e

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 657b081c097eb344cfdb7e62af05a9ce049efd04bc2625942ebfd6770ba6faf8
MD5 592fa786244934bc2bd9804741b6e6a3
BLAKE2b-256 a530523a41b963c6ee5eef92ae9cb3f2f7f868d959d3817298c2e3888d3637a4

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0b35b3313a474a49828e01a1f86cd760c7fc8497968d9b7af6c5a55e37dc909e
MD5 af4133fe017f88ea424e59fdb031141d
BLAKE2b-256 0f68247eaa93907cec9710810d786b9607ccaaadd7bccfc8836598d0dd0e3757

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 5e83885a4a787662718da8c5d214ee99fcc88a9bd0c6db67e6afa93393d9d956
MD5 68c859d1fac59b209a3cb6e36f7545c1
BLAKE2b-256 064501da50c4a8cf97870e0338de1f54ea571a5deb0a2638bde387e637ae72d8

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e112d987ce5d2fd0370e36b54b2eba4375f37dd526bd57cb7d6a72d0d7b7a812
MD5 d9ffd4efa139c5d33517aa66d0dacf7c
BLAKE2b-256 e333a0662faed09127a40100d077bc2b05de36cd64dadec6b136328ec9221894

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3524f881ed483c5e80ca56730b05e1de99071923506f61131ff9e166a4430537
MD5 28ac92d2798de1679a6ee69bdfcf7a25
BLAKE2b-256 08cc6b80e87d8e371b383e292c6fafcafa86d28e0f50b1e86c5cb63d16ee9daa

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_i686.whl
  • Upload date:
  • Size: 8.5 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.28+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 89f74d1bd65b993ca49d4d4cb10f71abbef4b1618cdadb4acfb0fe1de813cba6
MD5 492f6945e34e3e89bdf2d62a216486dd
BLAKE2b-256 12fdcf306feae2d0d34d9afd239c90522ad94e66d90124e1bc213503c03edbd9

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_armv7l.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.28+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 63e64961bac206c361be1aee80dd3e3ee562b4a4146d63f39b995d67c434edcb
MD5 fe48e62a07c9a778fe53bda1b5ab25d3
BLAKE2b-256 7962b808ab94e6153172ef414199484353be31ae98e51733ca3367312de945aa

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3627cf9bb51bd64a0a6b6290c8a3edb832cb4631724958980cc55caa9e394410
MD5 0edb2279521c6a924bbe97e02bf4664c
BLAKE2b-256 41d6d85e324974e6d4181e10f12d3f42240a788d87ca027f94031f9e2f56c01a

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-manylinux_2_24_s390x.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-manylinux_2_24_s390x.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.24+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-manylinux_2_24_s390x.whl
Algorithm Hash digest
SHA256 3526fd6584b6a31c6d26ef259cfd0c2083228556492a2b3398534609042a87f2
MD5 825715bcc2321bd754d326daccfb7dd5
BLAKE2b-256 ae46c4328fecacba5f5560135d08c36464786991632b3cc303fef14f28c51aeb

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.7+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc8f22e2ad97b5da9c435fee140f93a879f2529cdd4589e779292b6757516dfb
MD5 d40bcca889bde6475b0d4f8fd6404d08
BLAKE2b-256 0623d179ebedbbc21e9aadc0b567e48ca8f2dc4c9094ad7f9773a3bdfce83e67

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.14.0-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.14.0-cp37-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.7+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for laddu_cpu-0.14.0-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 67c2bb4f072d029946d2e13a34371c410de3c506697954387f11e932d43b56e4
MD5 aa920a0ff09fb8c1f50f46bbbdde5622
BLAKE2b-256 b2d5481fa72004b45ab5c583629a341e084bff783aecd287b240db5fe24db4ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page