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.13.0.tar.gz (728.5 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.13.0-cp313-cp313t-win_arm64.whl (7.3 MB view details)

Uploaded CPython 3.13tWindows ARM64

laddu_cpu-0.13.0-cp313-cp313t-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.13tWindows x86-64

laddu_cpu-0.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (8.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (8.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (7.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

laddu_cpu-0.13.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.13.0-cp37-abi3-win_arm64.whl (7.3 MB view details)

Uploaded CPython 3.7+Windows ARM64

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

Uploaded CPython 3.7+Windows x86-64

laddu_cpu-0.13.0-cp37-abi3-musllinux_1_2_x86_64.whl (8.3 MB view details)

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

laddu_cpu-0.13.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.13.0-cp37-abi3-musllinux_1_2_armv7l.whl (7.7 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ ARMv7l

laddu_cpu-0.13.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.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.1 MB view details)

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

laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (8.2 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ s390x

laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (8.5 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ i686

laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (7.5 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARMv7l

laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.4 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.7+macOS 11.0+ ARM64

laddu_cpu-0.13.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.13.0.tar.gz.

File metadata

  • Download URL: laddu_cpu-0.13.0.tar.gz
  • Upload date:
  • Size: 728.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0.tar.gz
Algorithm Hash digest
SHA256 46e6289ccd96d0ee6f93c7717792f038ee7bcccb77468bba9597e1347b2c0e5a
MD5 f4b395d88df1c71fbb1acd1fb1e5f9dc
BLAKE2b-256 e494564aaf677de8b793ae78faa7e7c58456d359d71ef9ecdfde1735e52a7523

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 9521a4d26794d918628984a287b25c71124ffcb9f15290f2f7e09066dff0f788
MD5 8934210fb027c35abffa92a4fd3cab75
BLAKE2b-256 165c9cc3a7dbb5c37564a4b24d97d7d01367bfa60d1eab687e8e75fb13a906cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 898c8cdcfe9464e5f36f6054076f019352470164506da4456266d28312c5cf8f
MD5 4def5e6f91c6b8890082c9a9ef829d53
BLAKE2b-256 9b850929c08f753e141a7b9c5c441fc6567fdfd6534224e25d9bddf80d00fa1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3310e696204d1a3af989ee3945ab984ae220d43257c5afc67df07069c75678aa
MD5 ff3290e03ec8b72656633797a2cb16b5
BLAKE2b-256 b333a3024031a19d1ad42199b099e70a670861e1bae00a2eaff4a9d766c2eee8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0d09166d9ab0590edf50bbd245e39af795eead89cec410c94a353d9971fd33c3
MD5 25ffe52655df1598bcf5fe45b86ffad1
BLAKE2b-256 783db563a1b40a331cd821cce432d70e062e932f47311e1753b465074b2219f7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 69acbe198b4d95e09112efb612621aca531664fb574241b8517cd5ff3654c623
MD5 a630a260a3515152e2f4e3874ec91f2e
BLAKE2b-256 2bbfa8389b6a1dba5e753d019c1ea2195a8b2f6f8868899497523956102625b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 79ecd152cc1168fc2dedf222b72cbc4462e2bd99382ee00c10b947a0d55cadd6
MD5 6474a93288303c61dee75b9157a12e79
BLAKE2b-256 ee303d02214f3cf3daa0ef64b58e14952a4d076277702ab87fea0439d2440cac

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7734e325767a7311ea3b8bdf761a44a365b163969ac50259f90286499e7ff77
MD5 cc13a15496c4108676c7ec4be5f849ea
BLAKE2b-256 a9aafbf98793af4dfaeb3184ca16bb8b7b5d80692e6dadb16e7e82c176fbc4c2

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 937e67a0461e4f08a11316e8e5671fde55d7c3a9453c5ffd36b2d9c7af3cb127
MD5 f41bd07cdfff81654dfafc6df5626527
BLAKE2b-256 9f3197a42072e465131963434f9cb28e9ad6a59cbace6a224d3cce0f8ac2e175

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 8.5 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a64a155f10396dbb0f917bb4507dc2a75a5be64182da1b5edf2125a5859cb3ad
MD5 18b1f22a0ef1624ecdbfcdfaa933d7ff
BLAKE2b-256 058d268f8d896c747c15494ac9deb7357591a0295bf71142dda65e531e962c3e

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c8d09d2bbee1538dd0deea7fa8af30ae3f1550742713fa833027d677be9a2cc8
MD5 614c9612d24494a3c56bdb7135fd89a7
BLAKE2b-256 009eab9d353488e36874d82a7ad7d9719ca756e64c614b197c32dcf0f63ba66a

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f720efc1c509dad933bbf9b165425c15d9bb11600048471af888e4ebfed9fbcc
MD5 0c7f2b87761e21e2efddcd4a27dde63a
BLAKE2b-256 e744db8f50f5be4d1e42ae725fcfed388be4d02f7642db0434d6e34c8f6844c4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 033edd6b5448bc7c350f031cc33a695fda88e670c42a012f99465c6b1bc39c67
MD5 9eeff9c21a9397aa33a20c24ec127590
BLAKE2b-256 c17dfe48126de6c8ac78f52a27e9dbb774d3bc246334b024639d6dbb354d0fa5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f001bcb27f61b3c168bcaeaf17f68cb679a601b78476ddeaf8f53a027753d1c6
MD5 141f954a6b7423d5a2fc2dee84d6ac1e
BLAKE2b-256 21479661023317699bccc38e01a73370100e1d0f4312c8e370a30601d7ceeb51

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-win_arm64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.7+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 c3e9ba697fa229386c98ce66eb04e52f3fe6be4f9e683ed8df44a17d9acfac73
MD5 1293036b3f16e60aed26a6d9ebaef568
BLAKE2b-256 e31fe6c50c9dd99c52928684904a103181f334b9a3e28c43722f6a24793db397

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f5aed2b2773b0ecb9461bde28144cc58a51c34fb49d5af5dcef1374744de690f
MD5 ddd529f59281daa270ea4ae0780ad5fb
BLAKE2b-256 fd781f6619c70b045d6b606ec1c63ea5b3decfa2c6b3006ad6fce9bb3555612b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5b75eb5f016918076b5b16fc7d180b64fb35199c6c13b8c9080bacaf80825b0
MD5 06de2b7eda652a8237438d34854e8d72
BLAKE2b-256 c64abaea1b6a7a3b235ffc7ac641073ff4f17850ed0f74e4953ba3cade9a84b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 491400f440f497badf2955da7fed46e9d36544e739ce2fb02e4c3b66dd51e915
MD5 502f961939704d53b9c07a31b87f6c64
BLAKE2b-256 6c88f13ea8f9b9bad67a4752686bb03170a36ae890125d2e5e749551fc3a732e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 56a7b91e74e808535ab380f5b30ed241526d34b9ac10c6acefef9b733160b954
MD5 dc832eea1a828303d6bb405917a426ae
BLAKE2b-256 6bb151cba288043b901201e3f97c0e184e396a18502225bcea1f0ff315c73e85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bf63794da0f068e6a7f7b76cd6d291f62e1a4b171f21d28baec83ca34c53f66b
MD5 274d43e94316e62c4a579065085403df
BLAKE2b-256 0a056ff764e5f1683aa1253bcd3af561fc9aaac10c03af2069de295254ee4f13

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e51df68806f53ebeb72b2077985c950f2a841315ef5d797232510c0aaed09503
MD5 ffec84f200e308cbc3867d06a0c59ddd
BLAKE2b-256 991398cae1fc9e11dcf2fa4418e7a96d6240d690937d330934d53edba2dbaa2d

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ae0fdaef347d65993ba3fcb452e7d3f05ab3efac3cd9e39885f35b7398d30e46
MD5 dbdc88066647d3318772714dc8711380
BLAKE2b-256 aa54bbbaa85d244764bab8cbba4f1484558ecf796620a780a9b976b53c32f9a8

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 8.5 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cb4e4610ca005b59636409fed6236a889e8fbf9a3f6ba2006109a60ff2d54313
MD5 ae2e4a89a2cb849b6f146a08a96f5236
BLAKE2b-256 5f035e0a834a7226d9555e83822b28dc3c05eff496b1f76bac979b1b95185bd5

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 474ae473f65837f358ec338df9364b19397efc84fa98c26ad85ea953c170cda3
MD5 b8fc24ce38572d91615a5f08c24ef36d
BLAKE2b-256 45f41b263231a0eda0b819935e59b3f1aca08a925fa1828927f9214b231b03d1

See more details on using hashes here.

File details

Details for the file laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: laddu_cpu-0.13.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d672e7b9bbda1e142310a8de2aa25904724371d0d8bee0af913822a4e819dabe
MD5 951367ad998564cbf9509dac7d52c78d
BLAKE2b-256 855232f90b0b52dbc5b6d234b9cdf62d3fc2a26cac5faa4b5edbb89b2616fe66

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9fecb2b456192c645532e8b5258d7e542e6f2d6d9e3668410d62a0f2a74bfa3
MD5 6dc3bd5eb57b76059d439a3303288020
BLAKE2b-256 01ae601b3e766b41b1b951f3c3861bfe4358f9eadb206b16f1d9696f22c5e192

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.13.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.21 {"installer":{"name":"uv","version":"0.9.21","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.13.0-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f19352d4916924aa38f2ebb0ea856adfa808d584141067b72b85a5ee5a2ba9b8
MD5 5a27faf701dbf950f8802b353015820e
BLAKE2b-256 eb615f67c833e5f50ed06ad6398707fbc481e82acbec29a9c58ae439c706a786

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