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.

API note: The low-level event container is now named EventData. The metadata-aware view returned by Dataset::named_event is called Event and exposes the same kinematic helpers while enabling name-based lookups. Python bindings continue to expose this view as laddu.Event.

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::{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 = Dataset::from_parquet("test_data/data.parquet", &options).unwrap();
let ds_mc = Dataset::from_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.Dataset.from_parquet('path/to/data.parquet', p4s=p4_columns, aux=aux_columns)
    ds_mc = ld.Dataset.from_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):

from laddu import Dataset

dataset = Dataset.from_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.

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

Uploaded CPython 3.13tWindows ARM64

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

Uploaded CPython 3.13tWindows x86-64

laddu_cpu-0.12.1-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.12.1-cp313-cp313t-musllinux_1_2_i686.whl (8.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

laddu_cpu-0.12.1-cp313-cp313t-musllinux_1_2_armv7l.whl (7.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

laddu_cpu-0.12.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

laddu_cpu-0.12.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (8.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

laddu_cpu-0.12.1-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.12.1-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.12.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tmacOS 10.12+ x86-64

laddu_cpu-0.12.1-cp37-abi3-win_arm64.whl (7.3 MB view details)

Uploaded CPython 3.7+Windows ARM64

laddu_cpu-0.12.1-cp37-abi3-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.7+Windows x86-64

laddu_cpu-0.12.1-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.12.1-cp37-abi3-musllinux_1_2_i686.whl (8.3 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ i686

laddu_cpu-0.12.1-cp37-abi3-musllinux_1_2_armv7l.whl (7.7 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ ARMv7l

laddu_cpu-0.12.1-cp37-abi3-musllinux_1_2_aarch64.whl (7.6 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ ARM64

laddu_cpu-0.12.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.0 MB view details)

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

laddu_cpu-0.12.1-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (8.1 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ s390x

laddu_cpu-0.12.1-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.12.1-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.12.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.7+macOS 11.0+ ARM64

laddu_cpu-0.12.1-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.12.1.tar.gz.

File metadata

  • Download URL: laddu_cpu-0.12.1.tar.gz
  • Upload date:
  • Size: 725.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1.tar.gz
Algorithm Hash digest
SHA256 31b3ca9d108d54362f95aa6b7158e667ba7cff9faec96396d4b927e0ae8cfd02
MD5 09ec2a1b4435fe92b85a65ed6bfac913
BLAKE2b-256 462237ef2e83de393edfa20d32173108cb835251ae79cc2fc1b56db4806d42dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 742c8873a09f41d71d638c3c18340872b2bf7f7ee99d3ad7cf210ea8bcf0d91c
MD5 9bb3c0e4e018e4e90dd6c54112c31e41
BLAKE2b-256 cfbde2db1abd8a9c6a370fdd11a11e6820c743885b509ff849e20a4e2e2983ec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 903310c960758050ae401721e582739da058a98ac02ce7c5a77adfdb01e1ee31
MD5 bf1bd58b01c14c2b525943386ae5ec67
BLAKE2b-256 3a13ce01aefbe5c77d49704269f230b5bca828189d069e4e21d63fa46ba1616b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 28766ab7e3be28d44d7e23a4cf81a9ddc724a836f9dc3c99aa7757c463ebeb84
MD5 a18531a9f5e50bcf303edabc9dc5595c
BLAKE2b-256 1d00bb771f67496e487a1515a88f9d9edfa1c8a3bb3f94d2c45122c0583bda73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0b1d27080b40b59a5d36a6a9a3b72cd6e9e841c562909b204405ef82375fe9aa
MD5 a73e35f33c39afde8c7b0bd54202209c
BLAKE2b-256 1afa2c945c40800010b6edc7b72aa7876e8d56a48e5f5ade6d2c9d8d82f9d144

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp313-cp313t-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e131989897a7df889e65f03b157713c77a42af45d3a79fa0b170dfb9fbd45b7d
MD5 a153e47c67ec3e6e48c5c47a44c742ad
BLAKE2b-256 13539c79535a0618258659fc5ca1dc8e9e00eecb46be182507015358ce0df1bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a985df136b250f7ce76f47966c3155ae02cac3d49428182be7e1406c8a7a75bc
MD5 f061efd650726c484c045e04bdd726b1
BLAKE2b-256 14376281c1b30c165508397a70370c18a94657c056b3cdfc2448d0ff68146c27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04945818a4917578ba2c4d8401067bcf274c5bdaad1fb95f5cfc1d1b753e6898
MD5 8d301a20df0a0d5b60cb6d4abcad420f
BLAKE2b-256 663ace23c10ba34383322aeeb3443bbd8a8e3e0b372cedbcba1556a7c1862e37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4d7f2f2a6d3b6d4dfea01fb721b9088f383d47d75ac5055e37e07af7b0ec194d
MD5 88dc570670f399409cb419d51c03a9ba
BLAKE2b-256 d34a0b8c96114b23057570cf5721d9ee9c8fba7856db18448dd4f23063467174

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4aa2214dcd9f6c427e093118cc1967bb3957334073e3ea71b3498a8db72b566b
MD5 172b7748889952fceabd79c8c05b722d
BLAKE2b-256 6a886cc878c42f456f4e050e2fe86b85cf6b88552fef2902e2aa93de2d4d9616

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8bcbb62f8a3ba36875127b564db567dc25d0ffe54702378b608f7504615eb4c3
MD5 3a143226209a7bc38d2a2c8fa9f41adf
BLAKE2b-256 59b3245ffb6b7a7489aba9799e746e2329c061b77f05a3841dec1b409c8cc0f8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cef822905b00638cac06821d164a8ec9d171038ba63f2ec532c0746201bdb3bb
MD5 7d0da95481eebe99be95e4bf9e39f6b0
BLAKE2b-256 af1f24ef11556b5ea5bc2d0fccb7af241a469e50a3638a549af28e8518ca2807

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1069c0fe953e335e2cc7e941e2039352b96242cb3f92cf8e99182c02aec38800
MD5 b981721803fd6d69bff0a1e0b80c0fde
BLAKE2b-256 33b699bf610aca844db071e673ee3d041c61fe98e13a0dfd85417145c86cc2f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 31ee73b0b002c7d308fac6e778b5b86ec8c12f9fb852c2b346a054b0393ad1a1
MD5 f5df755b3cb01c74dfe732f75fce9b2b
BLAKE2b-256 5cb4fec9b1f783efff91604abe6fa04aefe19e8bf1a09acfaee753e59fdfe0ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 5e21ca457e48bcaa029951921cbeac9d2b0b6c3c72c8077773877c96a17cda7f
MD5 b775d3b8014f4cfc7aeab1419a0b9ebb
BLAKE2b-256 ae3314acb76da83fadd0b11b741a75410c8b27d8e4e6f32b15432ea2797d8211

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0f2758c196927e0db2bb12a2f0973d99e56f09ef4cd8904329f560aa84431028
MD5 ee12d1e32cee5fe0aaa428ca9be12f71
BLAKE2b-256 7a66013fc8d8ec6be412773b3e92d221606fdd25d94703cd3d95436fde9011de

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5c4f256523b9ac6cfc91bd6fe1f31127e393054b3db297c7cfaacee05f990ec4
MD5 c81301bb9a44af1ae791ee74d99ef485
BLAKE2b-256 626b67ae48dcb8a16626e26fd7a3b8553c9280ea0efa8036a24ff26f29f44ccf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d334c9294fc8482b733c6c9e88b93970aa985f6562a356878ce30217ab7b6c71
MD5 4542f979c214c7c14f4cbbcc202b6f49
BLAKE2b-256 9a1a9188b14802ef4cbc942358564596608f3f9a4d044d9023f9149b0168c534

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ed66fa3bf8cbb4ffaf87b7507916946a00d93ed27b79cc56d59dcefc71191a06
MD5 bb1b199682f89996efef613159c9e0a0
BLAKE2b-256 2a3404f6e577444d131da32fc3a5e243e6fe74040fce6d6c81b09f9495386acc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp37-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.7+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bbff1b67188a168f63ae543af8ec4a409d40bb88eaed90eddad8508701a8fce
MD5 41d23bcf25996873e39629159d90599a
BLAKE2b-256 7bcd7efb090238e14ca7a4d5875a7234bba9146f71bcebbe148b9aac9c2e3363

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e07799172fe5feb64bf2f60f4b1dc42da2f858ca26b3a461a55c38fa110a7e4c
MD5 caa7db6e6499815ea95d74f4e63cf9b9
BLAKE2b-256 26734158b83a01b81215ebb86f5a28749c905ee532c3cd39700fd24f44b513ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bbc1afc243701f831f0502854f3682a67acf6c1d3b0551564fe0f950b0325f59
MD5 eec1226675589961efc78a3fe50202aa
BLAKE2b-256 7f56c9e55c9ed7809b1bcd76540364f441ba5f1cc349e9fc395193594723882c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 085b79f813f4c8f17d9db85980e4fa6f81197f8aa959f2e80a130c241807c6ea
MD5 904ccfd4a028200a6a36bf519e961f5c
BLAKE2b-256 bee2f8ee568eefc07367ef2daee88708b43d19831e3604588e7efd13d71a21dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e85b9db57d40db4b0ceefe54143d9a07d181e87acf2bcac13cdaa8b8e0a6cd10
MD5 3ded4d40eac5e67b7994e4a11388f07d
BLAKE2b-256 81cc148ab851702dd56d29cf101d919c6c52fc56addb16784b0fa86540285302

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.7+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c0542f65254ebf2c01f21d85a3654f609145a6361def928ad55cb5beb0f70809
MD5 3a6ae8a588941fd86b1e45b324d7b657
BLAKE2b-256 a37fc1b36d8ba37953a1faaaaa41ee7a3db4c9289d9802365ec40229dc6da002

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc2b4f45a921b01dbabe5eb9545a37daa838f411da5a01aad6e0e909d666525c
MD5 73f2ad79d24ab3fba69a10dc79a28c15
BLAKE2b-256 204ea24b6d98de2ba9d1cb589d36096c5a974479de8b74b424b7166a3963149e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: laddu_cpu-0.12.1-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.18 {"installer":{"name":"uv","version":"0.9.18","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.12.1-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9be5baf61f1e4cdbdf5b620d4daf73aab4916ca208235689acfbe4bcada1d67a
MD5 dc9d2a683759017785c05771af015050
BLAKE2b-256 1d715505d1df2950a9bfa5168efa1df699e0eb07f0d5edd4f5731dc535ff06f8

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