Skip to main content

Differentiable moment bounds.

Project description

Moment Bounds are Differentiable:
Efficiently Approximating Measures in Inverse Rendering

ACM Transactions on Graphics (SIGGRAPH 2025)
Markus Worchel · Marc Alexa

About

This repository contains the official implementation of the paper "Moment Bounds are Differentiable: Efficiently Approximating Measures in Inverse Rendering", which introduces a family of techniques to differentiable rendering that can be used to approximate various effects of light attenuation, such as shadows, transmittance, and transparency.

In particular, this repository contains the core algorithms for computing and differentiating moment-based bounds, which are the key component of these approximations. The algorithms are implement in C++, targeting the CPU and the GPU (using CUDA). The diffmoments package exposes these algorithms to Python, where they are readily usable with PyTorch, NumPy, and Dr.Jit.

Note that this repository does not contain code for specific applications like shadow mapping or transmittance mapping. Moment shadow maps will soon be available in the diffshadow package, which exposes low-level primitives for differentiable shadow mapping.

Installation

The easiest way to install the Python package is via pip

pip install git+https://github.com/mworchel/differentiable-moment-bounds.git 

This builds the code from source and only requires a C++20-compatible compiler.

NOTE: A PyPI package with pre-built wheels will be provided soon to simplify the installation.

Optional: Test the Installation

To test the installation, run

pip install numpy pytest
python -m pytest .\tests -v

Some tests will be skipped, depending on the availability of packages (NumPy is required, PyTorch/Dr.Jit are optional).

Usage

Please see the Getting Started tutorial to learn about the functions exposed by the diffmoments package and how to use them with the different frameworks.

Development

This section is intended for developers who want to modify the source code or who are trying to use parts of this project in a non-standard way (e.g. not via the Python bindings).

Cloning

The only external dependency is nanobind for the Python bindings, which is included as a git submodule.

To clone the repository and its dependencies use

git clone --recursive git@github.com:mworchel/differentiable-moment-bounds.git

Compilation

The project uses C++20 core and library features, so a compatible compiler is required (GCC ≥ 11, Clang ≥ 14, MSVC ≥ 19.27).

If the goal is to modify the source code and access the algorithms through the Python bindings, it is advisable to set up an editable build. Please see the root CMakeLists.txt for instructions.

Alternatively, the project can be directly built using CMake (≥ 3.25.2).

If the goal is to access functions or algorithms from another C++ project, using this project as a dependency, see the notes on architecture below.

CUDA

A potential "gotcha" is that executing the CUDA variants not necessarily reflects changes made to the source code. The reason is that compiling the CUDA code is optional, and must be enabled via the CMake option DM_BUILD_KERNELS. This requires the CUDA toolkit, specifically a C++20-compatible CUDA compiler (NVCC ≥ 12.0).

Architecture

The Python interface is just a shallow wrapper around C++ code, which is organized to be accessible by external projects. The following diagram gives an overview of the project structure:

        +-----------------------+
        | PyTorch/NumPy/Dr.Jit  |
        +-----------+-----------+
                    |
                    v
        +-----------+------------+
        |  diffmoments (Python)  | 
        +-----------+------------+
                    |
                    v
        +-----------+-------------+
        |  diffmoments_ext (C++)  |
        +-----------+-------------+
                    |
                    v
  +-----------------+------------+
  |  diffmoments_dispatch (C++)  |
  +-----------+---------------+--+
              |               ^
              |               |
              |               v
              |    +----------+------------------+
              |    |  diffmoments_kernels (CUDA) |
              |    +----+------------------------+
              |         |                    
              v         v
  +-----------+---------+---+     
  |  diffmoments (C++/CUDA) |            
  +-------------------------+

All entities labeled with C++/C++/CUDA are CMake targets. A brief description, from bottom to top:

  • diffmoments: contains low-level building blocks (e.g. Cholesky factorization and polynomial root finding), and the primal and adjoint algorithms (compute_moment_bound/compute_moment_bound_backward in moment_problem.hpp)
  • diffmoments_dispatch/diffmoments_kernels: both targets are tightly coupled (see remarks below) and define high-level functions that, for example, apply the core algorithms to multiple inputs (potentially in parallel) or detect errors in a list of outputs.
  • diffmoments_ext: exposes the high-level functions to Python (the diffmoments Python package is just a shallow wrapper around this extension module).

Remarks on CUDA kernels

The target diffmoments_kernels has a single source file, src/kernels.cu, which contains the CUDA implementation of the high-level functions. The code is not directly compiled to machine code, but instead translated to PTX (an intermediate language), producing the file src/generated/kernels.ptx. Since PTX can be JIT-compiled on a user system, the user's hardware doesn't need to be known in advance, ensuring forward-compatibility. The diffmoments_dispatch library loads and executes the PTX code using the CUDA driver API.

The PTX file is tracked by git and is only updated when the CMake option DM_BUILD_KERNELS is enabled. This ensures that the project compiles on systems missing the CUDA toolkit (e.g., the GitHub runners that build the PyPI wheels).

License and Copyright

The code in this repository is provided under a 3-clause BSD license.

Citation

If you find this code or our method useful for your research, please cite our paper

@article{worchel:2025:diffmoments,
author = {Worchel, Markus and Alexa, Marc},
title = {Moment Bounds are Differentiable: Efficiently Approximating Measures in Inverse Rendering},
year = {2025},
issue_date = {August 2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {44},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3730899},
doi = {10.1145/3730899},
journal = {ACM Trans. Graph.},
month = jul,
articleno = {80},
numpages = {21},
keywords = {differentiable rendering, shadows}
}

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

diffmoments-0.1.0.tar.gz (10.6 MB view details)

Uploaded Source

Built Distributions

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

diffmoments-0.1.0-cp314-cp314t-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.14tWindows x86-64

diffmoments-0.1.0-cp314-cp314t-win32.whl (983.3 kB view details)

Uploaded CPython 3.14tWindows x86

diffmoments-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

diffmoments-0.1.0-cp314-cp314t-macosx_10_14_x86_64.whl (998.2 kB view details)

Uploaded CPython 3.14tmacOS 10.14+ x86-64

diffmoments-0.1.0-cp314-cp314-win_amd64.whl (996.9 kB view details)

Uploaded CPython 3.14Windows x86-64

diffmoments-0.1.0-cp314-cp314-win32.whl (978.3 kB view details)

Uploaded CPython 3.14Windows x86

diffmoments-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

diffmoments-0.1.0-cp314-cp314-macosx_10_14_x86_64.whl (994.1 kB view details)

Uploaded CPython 3.14macOS 10.14+ x86-64

diffmoments-0.1.0-cp313-cp313-win_amd64.whl (972.1 kB view details)

Uploaded CPython 3.13Windows x86-64

diffmoments-0.1.0-cp313-cp313-win32.whl (954.6 kB view details)

Uploaded CPython 3.13Windows x86

diffmoments-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

diffmoments-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl (994.1 kB view details)

Uploaded CPython 3.13macOS 10.14+ x86-64

diffmoments-0.1.0-cp312-cp312-win_amd64.whl (972.1 kB view details)

Uploaded CPython 3.12Windows x86-64

diffmoments-0.1.0-cp312-cp312-win32.whl (954.6 kB view details)

Uploaded CPython 3.12Windows x86

diffmoments-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

diffmoments-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl (994.1 kB view details)

Uploaded CPython 3.12macOS 10.14+ x86-64

diffmoments-0.1.0-cp311-cp311-win_amd64.whl (973.8 kB view details)

Uploaded CPython 3.11Windows x86-64

diffmoments-0.1.0-cp311-cp311-win32.whl (956.2 kB view details)

Uploaded CPython 3.11Windows x86

diffmoments-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

diffmoments-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl (995.0 kB view details)

Uploaded CPython 3.11macOS 10.14+ x86-64

diffmoments-0.1.0-cp310-cp310-win_amd64.whl (973.6 kB view details)

Uploaded CPython 3.10Windows x86-64

diffmoments-0.1.0-cp310-cp310-win32.whl (955.8 kB view details)

Uploaded CPython 3.10Windows x86

diffmoments-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

diffmoments-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl (994.5 kB view details)

Uploaded CPython 3.10macOS 10.14+ x86-64

diffmoments-0.1.0-cp39-cp39-win_amd64.whl (973.9 kB view details)

Uploaded CPython 3.9Windows x86-64

diffmoments-0.1.0-cp39-cp39-win32.whl (956.2 kB view details)

Uploaded CPython 3.9Windows x86

diffmoments-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

diffmoments-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl (994.6 kB view details)

Uploaded CPython 3.9macOS 10.14+ x86-64

diffmoments-0.1.0-cp38-cp38-win_amd64.whl (973.8 kB view details)

Uploaded CPython 3.8Windows x86-64

diffmoments-0.1.0-cp38-cp38-win32.whl (956.1 kB view details)

Uploaded CPython 3.8Windows x86

diffmoments-0.1.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

diffmoments-0.1.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

diffmoments-0.1.0-cp38-cp38-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

diffmoments-0.1.0-cp38-cp38-macosx_10_14_x86_64.whl (994.6 kB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

File details

Details for the file diffmoments-0.1.0.tar.gz.

File metadata

  • Download URL: diffmoments-0.1.0.tar.gz
  • Upload date:
  • Size: 10.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9c62958e45c767f4a6fb113ecab9d0ac42bdc83ece3978b304d5d16b50bc68f3
MD5 5a2830c83181e7aafebf45d060c1c799
BLAKE2b-256 95fdb2d4418ebfd5f704d86817661ce7e783dcb21fb549ad4a21f5caced579dc

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 609355911e204314b533e8f089ce5fd1f04528191cd749cf69ec94db7e678bde
MD5 c6ff9f58d18793979ac35394d880936f
BLAKE2b-256 4e7c99efa55924d2e2a871d10f738870ad007f6d16e1442fcd05fb88a7756f70

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 983.3 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 43016748d6c30ee6a9ba96ff240664e4e82759622678fa23719956506824753f
MD5 1c1fc191259ff3e6ed7a1f9a522ef072
BLAKE2b-256 2423da7dbcad7f89f752a8fd1791d37a58f9925bf88d2d8bf9a9720a1c36ce7f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 060358ab98ced947484dab5be8777246e1f43e88d0f88a7fc35a597f866815c8
MD5 dac0db43f666f1431a34992d12fd3b20
BLAKE2b-256 f34bff866bb4e962a120b055403d97ba98ba05e6ba66c512c861210bfecdf25f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 04033a6602398b8e1f856bbfc9a6bc7fdfb20d62ab6162e91ba69cd6409d9bc8
MD5 a5035535db008ceaec08dd0b72bcb554
BLAKE2b-256 f901e9314ab465bb761004c45ccb1d3a94049d2bdb21cfd79eab7a1d5e214366

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4c2b3f881654a7a1f60faefc3febd5f5255b7848a6150b89ffd564c9831f8c1
MD5 120864d4bf4bc3c08cd372cff24eadc9
BLAKE2b-256 0f67727435616dacd4cd86626eaacde3beb6cf6ab484a32ca7336e320da281ed

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314t-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314t-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fde21ea1f943e851b7771a4ddce23945e9b613bd94165dd7676dd265b5e611a8
MD5 e4cf551d627018c3e534ab415ca74da1
BLAKE2b-256 a0f254d598bc97acef713a35252a0ce5cc92c925f8ec60060523998e602ef20f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9dd3ceeff33f7a865968171a9d50d3707ef4e030d915c2bac15b76ae45ba201c
MD5 5389217688d1a4308477f9ddb621dbc3
BLAKE2b-256 874628d9cd9f4a886fac33c01154de5ea5442c2afb195610e482b3c518c9f88e

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 978.3 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 b8b5e61e4d1a46156ee1917dd2142c823f5ea7c07d50b3063c1d3566f684dcad
MD5 e05cb9ece039aaf1e5df08da92e77719
BLAKE2b-256 5c9e66fc45e7f71259e82aa2807510e4ab8be2edf4acc7e7b25eaef5f488ce23

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92f7910f98092260fde07d79a8e55cfbceab9c688aade7a41bdb2403c8a99fe9
MD5 a864c8c243f3f93598d408290754f20b
BLAKE2b-256 98219a8197fca47454eb528e84b553ab1850b8ec2f04e5d48a74aa0eeec0ce8e

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ade6fd3167d7c3ae1a04b5ab51621603d188d0285733a395f2bf2b0a02c75b4
MD5 1f1d05e2e183eac6ed5bdbd4eedb08b4
BLAKE2b-256 91662ba6e5eaee810c4fb077326e48d4ad21e6ca656dd102008b1287ae1a67fd

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a70a2a56cd9f2c2055fb093b001fd0b9d002596e990fa8dbcd1f4dfd5c6369dd
MD5 ce4b208d77e32c6ab2c727eff0743aa1
BLAKE2b-256 94d2e7fd602a1fdb3e17b47434ce31874851240853b2ad90ec02c8056bcd2ead

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp314-cp314-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp314-cp314-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f630bdbb3a49b5e7195c9acb3c70efccc1f5483dfcb8e4d3fd6b8e37a75cfd4a
MD5 2e5ea74f692afebfcadc2ccbcf913fbf
BLAKE2b-256 94e717cf577e21b60923a38682ae254c745a7f58ac505c633ef62551c0065ba5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 334d3a90e4b5eba457e8bd8faac988f6fc916cf25d371df6ea203847e9fdbd76
MD5 b77100fa5b063d363e680fc4463f387a
BLAKE2b-256 afd9a8cb25e0d125e073b8b529891bc11c94c9d20947b991d41465c5efb67ce7

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 954.6 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 119a56845c4c08bd1af9b29bafd5cb5d42c518ca9438003428de169b0b78d3a2
MD5 aa8af870f7a2f22aff6b49ef724e4719
BLAKE2b-256 9b08e7ce8c0bab4eeeb75edd3f8fd5234af2d8f34b7a42150a1db47a42fe664f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5747cabeec92a71c938fa6444b410b8650c75e6a4b4b6c592c41a39067b4759b
MD5 f6d46a48961177db3caab88698ccbbcf
BLAKE2b-256 bf560c6c6f7ebc38a4ea88231bcb1a1073ecf4ff9f2780a9fa5a7f9f84e13c4c

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac98f74b2df40db88272c9a965424214f063023b002baa265bbcba5a6468314b
MD5 98b374d3759e85105accab2c4afd5972
BLAKE2b-256 d0198b2d94f431e8450a90f83a6a604c2c2eff331db542274c2a21efec1dbc21

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cf9daace9ad43ec79b3194a37542d51a49dfff1473e39114123d1b6e50eea73d
MD5 1badb0a749e327aeab032861542d9fde
BLAKE2b-256 d20e71066b15213d11ee717e5ba52bf134d483959a2f8b598be51f498a63f8c5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 cdcaca8655373ef29c95e17b18361931819e85bcddffc40a20f0b3211cbb65b4
MD5 7c980d670b73af7937925ff52eb1dc32
BLAKE2b-256 ee3aa39abec92aa21a24847200374147a630b5e2c17d09d1ec6307acc4e09046

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a4853f13af5b55f5a1c4695fc083f4dcfbffef01d22ec3411617d4be14b1034b
MD5 d52affc97832fe4b85452517a0a59a22
BLAKE2b-256 a0550373f53c20055b8ff12217de8d4570f4b04a5e8facb468055678114c5f86

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 954.6 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9b68ca8b8b72c429e3ddc1a334bcc439c7431b5ca6417ee20473df41dfda01f3
MD5 5a91d8e3c66c7e40b7f0176c9d3dee08
BLAKE2b-256 1ab43172a0b1e364d51335ab26cd14ea89a8abda999541e3693649ecab176673

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7cb6ffeefdcbc48b6a123141fe3fd33fcf56db95e5a467bae9ca9d4690fd38dc
MD5 d5fba525036e63a133416324cda38e16
BLAKE2b-256 d8e4623680a16f61dc6b696ae1175ab527b7f962c76dbe77f3b6eda0b63b80c9

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fff723556e7cc92b5e16dbf51506bea33bf95b7edfeb944bd1367d2d62dc9a90
MD5 c08d9de34ba6adccbc1968c12e434edd
BLAKE2b-256 342a6190e619f352997c64b952ec8f04ac31a9241229886cf48f75f3a53214d9

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72330c7a35929d0219e4782ede30e56e8362bc73e9396bb6e4c27b21fa578da2
MD5 fa92c234f74e182c1c7952008cfabfe5
BLAKE2b-256 970d06acdbf65cd051383d3d2196317fdcbe437f59fdce649ca7994b1a81fff0

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 45adc961419f60a30975de74c2afe851d5d88ebc20621c2a748a75503a91f4b5
MD5 515ca0e8dab9c7db7c6d39eea9ca20af
BLAKE2b-256 f179a4177a8ac3f4ab4058f3803a8bde8d5b3b45d818c542416bbdc6187abad0

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 564fb8ca1842cdde30580ef429ccbc87e71f418dd77d6709be7de189293bb248
MD5 3e928473d0403ea41f3fd7049a3258b0
BLAKE2b-256 f79510dba5f2d6160d8bbc2591a08dddaaaa6469302964362836b9ba8c50d2af

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 956.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 4e3535aef1ce3dd0c6e9dfd4dfb39b0b0a8263cd21420bd21e1ee6383a53adc3
MD5 991cb228a256c295039c69d5ca095043
BLAKE2b-256 1f60a59667e3ceaf03c107052589213146ca25a365535c772d762fe54de61282

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3a208fb759200ad554ff9d224fbaea66ecdbdad39b965b4b0baa2df769564437
MD5 4eb8bc4b63a54ee141abb8ec44c554bc
BLAKE2b-256 644cfe9a9512f45da290efb4c8e55a6d0b10a66039ddf09349139195ac177e03

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9420480649cb22ec8fbea67fc0c800f9cbc210712f808dd2576ad5eb322ecb57
MD5 0366041c0eaacd459081fe862daaa850
BLAKE2b-256 45661cb786992bc8e5abe17627f24c794c13069a95e3bb0e9005c2b57cee7cd0

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d9de4a8fe835ff5a003090f64622de9cc56b9dcbd0eb60c5223b562d8b37121
MD5 2cf41349172d848e31be195148595c16
BLAKE2b-256 1ed1276b44c91e95038d2be36d689ca99781f4aa3dce6b3e20fa1ca1fb828571

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 eb8bb1153e8bab311b944c5bcc98fed93ee419d1b976b1e295f4b6a7ea65e4c4
MD5 b0a0ac9bc7b90613fba14777317e53cf
BLAKE2b-256 41b28ac4f2735d7b164d460d1ef7b732248a2d221187019c4b17d6531c805c2e

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7c2bf6f326e000de7f189899b0b88cfbf39437665debc9d687148c3ed57ae1c3
MD5 fa8f57bf68232ced768103c3ce19e738
BLAKE2b-256 54f4adb751ac6f477526b623f095348f104ccca325ac14876a7bf53233395bdc

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 955.8 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 25001315832d840cc4d703105a149cd022deb38c169c0874795c44932ea86e6f
MD5 57f94fe813c130842fa42a42505b1ac0
BLAKE2b-256 c6edc1ce1b8591598563139105c6e2585485165368391ce93c9b42f7e97624a5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dd3d138ab8bd89a5278789f702af24367652d451a581b76c5834d4547c4e9901
MD5 ef8da094298b2000fcbdb6bce00428d2
BLAKE2b-256 c045e5e1e6208f9cb19b17d431bf9a3794a8fe2106a6d4528c6eb9335e24e246

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b27c1b81bef2c6e977d76b1bcb1f11dd57ce1d640e41c4b6a3b4583cf060f708
MD5 ddd191cbd85aa10ce9c6b6f9fdcbeb9e
BLAKE2b-256 d30a1c316f689dc38acf07cb65b0ace94c04108dd77679ef3a0796f775177af0

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8018312f75ddf70a59c1f58d5ec81032ea7611d6b58c53563ed526a1e0d5f18e
MD5 8c6c0961276fba2e5d2b5981eea0718b
BLAKE2b-256 aef330ae11ef9b2809848ba1b4226cfef9eae70c7bd16e0e8020931c5ea44d5f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f357b84a5cf3e898a52dd302fb9108957be24a49e43d744dc3f7c2215291887d
MD5 1c6606447225523ff593b30a6fa5dca7
BLAKE2b-256 a91b04d8144a9cad7310bf277767dbe58f7412674e451e75473571b623d5ada5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 973.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 73bf57d281cc928e59432a11570c672824d26521df032cb3b01b25da51727ca5
MD5 1e4545b4fae163e4bf4abb2b6dfbc09e
BLAKE2b-256 e87aea6939b909438917f5b2554c5c201f7e6f18ff055089ede8c39adea657a8

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 956.2 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 acf5fc03246dc23078c755483b9fb24c116d19e6619364d4b4e3d219fa0dcad5
MD5 5a313c4c3b524733dcb513c6875a0339
BLAKE2b-256 c06cbd58cd7acc124cff249cce62e68279b5ce82e43d5f956723f1a08a2a0eb4

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 52b18bcf3b02f4252ccce860f51d2e84a858a3ad357c2bb870858b4c2b595257
MD5 a1b03cbef2eef80bf000aa1adc8506aa
BLAKE2b-256 19d1ff78296d61307bd2b10684db450fb60b415bdc30bfd19b8cc0daa87de43d

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a275e03115c18b0d818fcb0fc7e2db429ca8b7b85315848efcbbd26d9955452
MD5 8cba0ad95e196ee878a4c6d8f25bf218
BLAKE2b-256 de4f684bd3fb8708b1beb561df3aaaff62fd146d8fd711f4373cf1df279047f5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77d11d553e04d9811b5f20eb2dce5819ee3f35a71be4a3ee303602ec407616e7
MD5 79d453f59947b507990d8e711a28b374
BLAKE2b-256 872dc7d3aac00adc87a5768ba1d4df0ae551970cdc37b09bd7fe2c3b4711874f

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 b7c9077eddb51b56bd02cd45020210a3b10eff9ed1055a7626236b8d905ba844
MD5 031b00ed0ba8ab12658f7e2e6e1cc0fd
BLAKE2b-256 07b23ffd715ec8e1aef9f7c2a83e1d8c598245cb4a2810ed2b7f4c146d4d1465

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 973.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 939f1ba5c8f90d3f7c7ac23ff42099cd9a8a89e60fd4cd8670b94aca9eb5bf94
MD5 31de5a358106556c547fb0c03b3c01db
BLAKE2b-256 d7423c0b9ee2754778ee370c6d5411cd5d1f8d2634dbc30342684802d4591e9e

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: diffmoments-0.1.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 956.1 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 01216a49023ce574da61be87e870f78a68fa6a39d41fa0f7c7409c11e3202023
MD5 6b19e3541f2685b6e978975d7e5d9124
BLAKE2b-256 24eef1fb12506a356850aa05020c6364943eee3a7b14a473164f2053f00ae3bd

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 10ddef2217856f2d485e60e8cb26e9fd00595d13455102f05b256e5aa931e178
MD5 66ceef1e2cafc2ab0fd8e697a8bbd5ee
BLAKE2b-256 377d27fcc6b7ff4dd42b0cbac34763cd829897951c7ce64897eadca21fc3ad72

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 470132066527309a1799c5fdf3a280848e5fae864dcd62c2b09d08ab02e12d08
MD5 948086481d796a9a082e6b6af363a9ca
BLAKE2b-256 c0b3ffa6eb553b7eb2e805904a4f681723a3a8f861ea7d20024dae4d43393ac5

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3f70f5c974e64ae61c68b176e77f35cde445181479b3a4d0e7ea8d166bf1d59
MD5 435d7e6855c828015f29a1253902554a
BLAKE2b-256 def81d834ced00ae360e11ccbb4269e51688f43e273a96094a7927b18ffb067d

See more details on using hashes here.

File details

Details for the file diffmoments-0.1.0-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for diffmoments-0.1.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 a1ffa654cc5822360b3a5fbe906af5b0eda5c401b3e0cd1b99b8b03a730d624e
MD5 84adc7c0f660a3499a724e148fb41e1c
BLAKE2b-256 8a87fb3fa24fcbbc6048ac23998d0caa217625b54fad0219b6797f53f623de7f

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