Skip to main content

deform

deform is an implementation of an efficient graph-cut based method for dense deformable image registration. The original and the GPU accelerated method were introduced in the following papers:

  • S. Ekström, F. Malmberg, H. Ahlström, J. Kullberg, and R. Strand, “Fast graph-cut based optimization for practical dense deformable registration of volume images,” Computerized Medical Imaging and Graphics, vol. 84, p. 101745, Sep. 2020, doi: 10.1016/j.compmedimag.2020.101745.
  • S. Ekström, M. Pilia, J. Kullberg, H. Ahlström, R. Strand, and F. Malmberg, “Faster dense deformable image registration by utilizing both CPU and GPU,” J. Med. Imag., vol. 8, no. 01, Feb. 2021, doi: 10.1117/1.JMI.8.1.014002.

If you make use of this software it would be appreciated if you cite these papers.

The method can be used either as a module through Python (recommended) or a standalone executable. Currently no pre-built binaries for the standalone executable are provided, but the Python module (excluding GPU support) can be installed through pip.

Install

To download and install the pre-compiled Python module from pip:

pip install pydeform

Note: to enable GPU-supported registration you're required to compile the software yourself. See the section below.

Building

Prerequisites

Optional

Download

Retrieve the repository and associated dependencies by running

$ git clone https://github.com/simeks/deform.git
$ cd deform
$ git submodule update --init --recursive

Python

For the best possible build experience it is recommended to install the stk dependency first. For this a build script is provided doing exactly that:

> sh build_python.sh [--use-cuda] <flags>

The script builds python-stk from the bundled submodule and pydeform, and installs both into the active Python environment. Pass --use-cuda as the first argument to build both packages with CUDA support. Any other flags are forwarded to CMake. See C++ section for available build options.

To build a wheel instead of installing the package, use

> pip wheel . --no-deps -w dist

pydeform and python-stk need to be built from the same checkout, since the two modules share types and must be compiled with the same version of pybind11.

Wheels

Wheels for multiple Python versions are built with cibuildwheel:

> pipx run cibuildwheel --platform linux

C++

Use CMake (>=3.8) to generate build options of your own choosing.

If CMake cannot find the ISPC executable on your installation, it is possible to hint the installation directory with -DISPC_DIR_HINTS, or to specify the full path to the executable with -DISPC_EXECUTABLE.

Documentation

The Sphinx docs are built with -DDF_BUILD_DOCS=ON -DDF_BUILD_PYTHON_WRAPPER=ON, which adds a docs target. The docs import pydeform, so a matching python-stk has to be installed in the Python environment first, along with the docs requirements:

> pip install ./third_party/stk -r sphinx/requirements.txt

Build options

The build can be configured with the following CMake boolean options:

  • DF_BUILD_TESTS: Build unit tests (default: OFF)
  • DF_BUILD_DOCS: Build Sphinx docs (default: OFF)
  • DF_BUILD_EXECUTABLE: Build registration executable (default: ON)
  • DF_BUILD_PYTHON_WRAPPER: Build Python wrapper (default: OFF)
  • DF_USE_CUDA: Enable CUDA support (default: OFF)
  • DF_USE_ISPC: Enable ISPC support (default: OFF)
  • DF_WARNINGS_ARE_ERRORS: Warnings are treated as errors (default: OFF)
  • DF_BUILD_WITH_DEBUG_INFO: Include debug info in release builds (default: OFF)
  • DF_ENABLE_FAST_MATH: Enable fast math (default: OFF)
  • DF_ITK_BRIDGE: Add support to interoperate with ITK (default: OFF)
  • DF_STACK_TRACE: Print a stack trace on errors (default: OFF)
  • DF_ENABLE_MICROPROFILE: Enable microprofile profiler (default: OFF)
  • DF_ENABLE_NVTOOLSEXT: Enable nvtoolsext profiler (default: OFF)

GCC issues

There has been reports on issues on building on certain gcc versions, therefore I advise to use gcc-10. To do this on Ubuntu, ensure you install gcc-10 and g++-10:

> sudo apt install gcc-10 g++10

Then run the build with the following arguments: -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CUDA_HOST_COMPILER=g++-10, either through the build_python.sh script for Python, or through CMake.

E.g.:

> sh build_python.sh --use-cuda -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CUDA_HOST_COMPILER=g++-10

Run

Examples

Examples on how to run the registration can be found in the examples subfolder.

Python

Everything needed for a simple registration setup is located in the pydeform package. The package provides two APIs; first uses pydeform.Volume for handling images and the second uses SimpleITK.

pydeform API

This API uses pydeform.Volume which is a direct wrapper around the internal Volume class used within deform.

import pydeform

fixed = pydeform.read_volume('fixed_file.nrrd')
moving = pydeform.read_volume('moving_file.nrrd')
affine_transform = pydeform.read_affine_transform('affine.txt')

settings = {
  'pyramid_levels': 4
}

df = pydeform.register(
  fixed,
  moving,
  settings=settings,
  affine_transform=affine_transform
)
pydeform.write_volume('result.nrrd', df)

SimpleITK API

SimpleITK is a simplified layer built on top of ITK that provides a wide array of different filters and supports a larger variety of image formats compared to the pydeform API.

The API itself is similar to the pydeform API with the exception that it takes SimpleITK.Image as input for images and SimpleITK.AffineTransform as input for affine transforms. To use this API simply use import pydeform.sitk_api as pydeform.

import SimpleITK as sitk
import pydeform.sitk_api as pydeform

fixed = sitk.ReadImage('fixed_file.nrrd')
moving = sitk.ReadImage('moving_file.nrrd')
affine_transform = sitk.ReadTransform('affine.txt')

settings = {
  'pyramid_levels': 4
}

df = pydeform.register(
  fixed,
  moving,
  settings=settings,
  affine_transform=sitk.AffineTransform(affine_transform)
)
sitk.WriteImage(df, 'result.nrrd')

Settings

The Python API provides the same parameters as the command-line interface. However, rather the specifying the parameters in a YAML-document, the parameters are set by passing a dict object to the registration.

settings = {
  'pyramid_levels': 4,

  'levels': {
    '0': {'max_iteration_count': 20}
  }

  'image_slots': [
    {'cost_function': 'ncc'}
  ]
}
pydeform.register(fixed, moving, settings=settings)

Command-line

To perform a registration using the standalone executable

deform registration -p <param file> -f0 <fixed_0> ... -f<i> <fixed_i> -m0 <moving_0> ... -m<i> <moving_i>

Argument
-f<i> <file> Filename of the i:th fixed image.†
-m<i> <file> Filename of the i:th moving image.†
-fm <file> Filename of the fixed mask.‡
-mm <file> Filename of the moving mask.‡
-fp <file> Filename for the fixed landmarks.
-mp <file> Filename for the moving landmarks.
-d0 <file> Filename for initial deformation field.
-a <file> Filename for initial affine transformation
-constraint_mask <file> Filename for constraint mask.
-constraint_values <file> Filename for constraint values.
-rm <file> Filename for regularization weight map
-p <file> Filename of the parameter file.
-o <file> Filename of the resulting deformation field
-j <file> Filename of the resulting jacobian map
-t <file> Filename of the transformed moving volume
--gpu Enables GPU assisted registration.

† Requires a matching number of fixed and moving images.

‡ Fuzzy masks in floating point format, whose values denote the confidence on the image intensity at each point.

Parameter file example

pyramid_levels: 6
pyramid_stop_level: 0
solver: gco
update_rule: additive
constraints_weight: 1000.0
landmarks_weight: 1.0
landmarks_decay: 2.0
landmarks_stop_level: 0
block_size: [16, 16, 16]
block_energy_epsilon: 1e-7
max_iteration_count: -1
step_size: 0.5
regularization_weight: 0.1
regularization_scale: 1.0
regularization_exponent: 2.0

levels:
  0:
    regularization_weight: 0.1
  1:
    regularization_weight: 0.2
    step_size: 0.01

image_slots:

  # water
  - resampler: gaussian
    normalize: true
    cost_function:
      - function: ssd
        weight: 0.3
      - function: ncc
        weight: 0.4
        radius: 2
        window: cube
      - function: mi
        weight: 0.6
        sigma: 4.5
        bins: 256
        update_interval: 1
        interpolator: nearest
      - function: gradient_ssd
        weight: 0.7
        sigma: 1.0

  # sfcm
  - resampler: gaussian
    normalize: true
    cost_function: ssd

First two parameters, pyramid_levels and pyramid_stop_level, defines the size of the pyramid and at which level to stop the registration. Each level halves the resolution of the input volumes. Setting pyramid_stop_level to > 0 specifies that the registration should not be run on the original resolution (level 0).

solver selects which solver to use for the energy minimization. Available solvers are gco, gridcut, and icm. Note: deform needs to be compiled with DF_ENABLE_GCO and DF_ENABLE_GRIDCUT for gco and gridcut to be enabled.

update_rule specifies the update rule for updating the displacement field. This can be either additive or compositive. The first option updates the displacement field according to u(x) = u(x) + delta, while the second uses composition, i.e., u(x) = u(x+delta) + delta. Compositive updates should produce a more diffeomorphic transformation. Note: compositive updates are still considered an experimental feature.

constraints_weight sets the weight that is applied for constrained voxels. A really high value means hard constraints while a lower value may allow constraints to move a certain amount. Cost for constrained voxels are applied as constraint_weight * squared_distance, where squared_distance is the distance from the constraint target. See cost function for more info.

landmarks_weight sets the weight for the landmark cost term when performing landmark-based registration. In order to perform landmark-based registration, a set of fixed and moving landmarks must be supplied. The implementation of the landmark-based unary energy term is inspired to [2], but the cost in each term of the sum is also proportional to the distance between the current displacement and the landmark displacement. It is possible to limit the usage of the landmarks up to a certain height of the resolution pyramid by assigning to landmarks_stop_level a value greater than zero. landmarks_decay controls the exponential decay of the landmarks effect with respect to distance in image space: higher values correspond to faster decay.

block_size size of the block (in voxels) for the block-wise solver. A block size of (0,0,0) will result in a single block for the whole volume.

block_energy_epsilon, minimum percentage decrease of the block energy required to accept a solution. Higher epsilon will result in lower run time but also lower quality.

max_iteration_count, maximum number of iterations run on each registration level. Setting this to -1 (default) allows an unlimited number of iterations.

step_size, this is the step size in mm that the solver will use. Can be a single float value, in that case the same step size will be used in all directions, or a sequence [sx, sy, sz] of three float specifying the size for each direction.

regularization_weight, regularization_scale, and regularization_exponent control the importance of the regularization term. The cost function is specified as cost = D + a*((b*R)^c), where D = Σw_i*C_i is the data term given by the cost functions C_i with weights w_i, R is the regularization term, a is the regularization weight, b the regularization scale, and c the regularization exponent.

levels, specifies parameters on a per-level basis. The key indicates which level the parameters apply to, where 0 is the bottom of the resolution pyramid (last level). The level identifier can not exceed pyramid_levels. Parameters available on a per-level basis are: constraints_weight, landmarks_weight, block_size, block_energy_epsilon, max_iteration_count, step_size, and regularization_weight.

image_slots, specifies how to use the input images. resampler only supports gaussian for now, normalize specifies whether the volumes should be normalized before the registration, and cost_function allows to provide one or more cost functions to use. Its value can be the name of a single function (ssd for squared distance, ncc for normalized cross correlation, mi for mutual information, gradient_ssd for squared distance of the gradients), in which case its weight is assumed to be 1.0, otherwise one or multiple weighted components can be specified by listing each function and its weight. Each function can accept a set of parameters.

The parameters available for each function are:

  • ssd: no parameters available
  • ncc:
    • window (string): shape of the correlation window, either sphere or cube (default: spere). Note that cube is available only if the program is built with ISPC support. For a given number of samples, the sphere has a better spatial distribution of the samples, yielding a slightly superior quality. When running on the CPU, for the same number of samples (e.g., roughly, a sphere of radius 2 and a cube of radius 1) the cube can be significantly faster to compute.
    • radius (int): radius of the cross-correlation kernel (default: 2). For window=sphere, given a point where NCC is evaluated, samples are taken in all the voxels such that the Euclidean distance of each sample from the point is lesser or equal to radius. For window=cube, samples are taken on all voxels within a cube centred on the point and with side 2×radius + 1.
  • mi:
    • bins (int): number of histogram bins used in the approximation of probability densities (default: 255)
    • sigma (float): standard deviation of the Gaussian kernel used to approximate probability densities (default: 4.5)
    • update_interval (int): interval (in iterations) between updates of the entropy estimates (default: 1). If 0, updates are disabled.
    • interpolator ('linear' or 'nearest'): interpolator used in the update the entropy estimates (default: 'nearest')
  • gradient_ssd:
    • sigma (float): Gaussian smoothing applied to the images before computing the Sobel operator (default: 0.0)

GPU

GPU assisted registration is supported on newer CUDA supported hardware. First step to enable GPU registration is to compile with the DF_USE_CUDA=1 flag, this is set when generating the project with CMake. When both these prerequisites are met, you simply add the --gpu flag to the command-line.

As for now the GPU implementation is considered a pre-release and not all cost functions and features from the original registration implementation are supported. Currently the only two supported cost functions are ssd and ncc.

Logging

The file name for the log file can be specified through the environment variable DF_LOG_FILE. The minimum level for log messages to be reported can be set through the environment variable DF_LOG_LEVEL, and the possible values are Verbose, Info, Warning, Error, and Fatal.

Masks

It is possible to optionally specify fuzzy masks for the fixed and moving image space. The two masks can be set independently, and it is possible to use no mask, only one of the two (either fixed or moving) or both. The masks should be given in floating point format, and they denote the level of confidence on image intensity at each voxel. If the mask value m(x, y, z) at a certain location (x, y, z) is lesser than or equal to zero, then samples taken at that location will not contribute to the matching cost. If m(x, y, z) is greater than zero, then the sample will contribute and its cost given at that location by the image metric will by multiplied by m(x, y, z).

The fixed mask allows to denote a ROI in reference space, formed by all voxels with strictly positive mask values; for all samples outside such ROI the cost function will not be computed at all, having the side effect of making the registration process faster. If a sample belongs to a valid region, then its mapping through the displacement will be computed and, if a mask for the moving image is specified, the sample will contribute only if it falls within a valid ROI in the moving image space, otherwise it will be discarded. The regularisation term is not weighted by the masks, and it will be always computed over all the volume, regardless of the mask values.

The moving mask should be used carefully because it can affect the quality of the result, since there is no penalty for mapping from valid samples in reference space to regions outside of the moving image mask.

Regularization weight maps

It is possible to impose voxel-wise regularization weights in the registration by providing a regularization weight map. This is a map of scalar values the same size as the fixed image. In the standard case the binary term is computed a a|u(v)-u(w)|, where a is the regularization weight. Using a regularization weight map, the weight a is computed as a = 0.5*(W(v) - W(w)), where W is the weight map.

References

  • [1] Junhwan Kim, Vladimir Kolmogorov, Ramin Zabih: Visual correspondence using energy minimization and mutual information. Proceedings of the Ninth IEEE International Conference on Computer Vision, 1033-1040, 2003.

  • [2] Herve Lombaert, Yiyong Sun, Farida Cheriet: Landmark-based non-rigid registration via graph cuts, International Conference Image Analysis and Recognition, 166–175, 2007

Metadata

Release files for pydeform 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydeform 0.6.0
File Size Uploaded Provenance Actions
pydeform-0.6.0.tar.gz 4.7 MB With provenance Details for pydeform-0.6.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pydeform 0.6.0
File Actions
pydeform-0.6.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for pydeform-0.6.0-cp315-cp315-win_amd64.whl
pydeform-0.6.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for pydeform-0.6.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp315-cp315-macosx_15_0_x86_64.whl CPython 3.15 CPython 3.15 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp315-cp315-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp315-cp315-macosx_15_0_arm64.whl CPython 3.15 CPython 3.15 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp315-cp315-macosx_15_0_arm64.whl
pydeform-0.6.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pydeform-0.6.0-cp314-cp314-win_amd64.whl
pydeform-0.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for pydeform-0.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp314-cp314-macosx_15_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp314-cp314-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp314-cp314-macosx_15_0_arm64.whl
pydeform-0.6.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pydeform-0.6.0-cp313-cp313-win_amd64.whl
pydeform-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pydeform-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp313-cp313-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp313-cp313-macosx_15_0_arm64.whl
pydeform-0.6.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pydeform-0.6.0-cp312-cp312-win_amd64.whl
pydeform-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for pydeform-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp312-cp312-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp312-cp312-macosx_15_0_arm64.whl
pydeform-0.6.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pydeform-0.6.0-cp311-cp311-win_amd64.whl
pydeform-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pydeform-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp311-cp311-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp311-cp311-macosx_15_0_arm64.whl
pydeform-0.6.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pydeform-0.6.0-cp310-cp310-win_amd64.whl
pydeform-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pydeform-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pydeform-0.6.0-cp310-cp310-macosx_15_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 15.0+ x86-64 Details for pydeform-0.6.0-cp310-cp310-macosx_15_0_x86_64.whl
pydeform-0.6.0-cp310-cp310-macosx_15_0_arm64.whl CPython 3.10 CPython 3.10 macOS 15.0+ ARM64 Details for pydeform-0.6.0-cp310-cp310-macosx_15_0_arm64.whl

Total release size: 19.4 MB

Release files / pydeform-0.6.0.tar.gz

Download URL pydeform-0.6.0.tar.gz
Size 4.7 MB
Tags Source
SHA-256 checksum
How to use checksums
e03b6b838bb07d3529e23f0517e0735d684a276b010b4ab798062f1e7d65bb8f
BLAKE2b-256 checksum
How to use checksums
66584ee855fc4842136cf934a7a7285136ee2ebba2d3c9a60c9ee1b8c0a9199f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp315-cp315-win_amd64.whl

Download URL pydeform-0.6.0-cp315-cp315-win_amd64.whl
Size 649.1 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
d5e81d5b5d05d1d7a7d3954278a7f5edc29a4c9c1d0c91088bfbe21168d532fc
BLAKE2b-256 checksum
How to use checksums
1d432b71e53a33692e2eb5c18d528d0374182301e4bea2c8b1fbeda34b666b7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 622.0 kB
Tags CPython 3.15 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0d6d0d30328e6ea885ddf4343932f9c5e8c0eb4fc4726a335d6c8c4b4ac26050
BLAKE2b-256 checksum
How to use checksums
d8b64509ac82b9bb520de3d8a0e6682b20d9bf8b8ef20879fda7f6589883aae5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp315-cp315-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp315-cp315-macosx_15_0_x86_64.whl
Size 634.6 kB
Tags CPython 3.15 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
ba04b2e0389313107b2a1ff46244e12740609c904ed7b9967ca5379b674a0758
BLAKE2b-256 checksum
How to use checksums
ea20cb4baf637df6a3ec17dfe19d3e1c3b880824687762e2cb430d4626c8196c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp315-cp315-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp315-cp315-macosx_15_0_arm64.whl
Size 565.5 kB
Tags CPython 3.15 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
01bf62969bf9822ba61042ef864beba0f863449836628599e894488901d21f33
BLAKE2b-256 checksum
How to use checksums
f85f67b855aa3b67dbe10299792593e697d01610b18644cd94310f0d6422a861
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp314-cp314-win_amd64.whl

Download URL pydeform-0.6.0-cp314-cp314-win_amd64.whl
Size 649.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
0dccc113aad5a95b9592d23c084d16f59e80665bfcd350922b1a8b5917e3ab75
BLAKE2b-256 checksum
How to use checksums
0a9dcc3809d104d96fa085c1b12843182179a57641d86f34a186ee87c3ebcb02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 622.0 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4a4531b3d9ae2d78265b9cda36477a2924c36460e7af0bff5c857f797bde19c5
BLAKE2b-256 checksum
How to use checksums
d69f5f6013ee15017e58db01974ddca244f68804ecad0eae4897169815d0a87d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp314-cp314-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp314-cp314-macosx_15_0_x86_64.whl
Size 634.6 kB
Tags CPython 3.14 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
7f11cf30cb78d0f47fee41746b4271ee9a2848d07143866d8004d0fbddd44ee1
BLAKE2b-256 checksum
How to use checksums
c5441b3d98262f56c361bd8d08a53407353b0556ceb66f40d15d16f9d575a6e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp314-cp314-macosx_15_0_arm64.whl
Size 565.5 kB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
fc6553b6c4ac11e396ba8c889d4fedfc0cb3595d7c6c158fe0aed05474ee1b57
BLAKE2b-256 checksum
How to use checksums
4d1e5b59b9a014774160a3edf3719473433b1bc613e5a1538fcaf524df15303f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp313-cp313-win_amd64.whl

Download URL pydeform-0.6.0-cp313-cp313-win_amd64.whl
Size 628.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
023d64c35443f579d12206161a143ae1fa08f807f59c599d0ff19976d0d395a8
BLAKE2b-256 checksum
How to use checksums
dc4853230653f732d9a55aff8c586f3650872729d910c1eae47947d55d391869
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 621.8 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
50826b68522dd0cbe74e2f15d5996ea0c51c94637f2b8bdd0bed4b8ed0bc21cf
BLAKE2b-256 checksum
How to use checksums
dba97da368fbdbf9713f2223cef35137f279847f0f3fe821c8c4a374b64fd352
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp313-cp313-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp313-cp313-macosx_15_0_x86_64.whl
Size 634.4 kB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
1a9af3e0ac8c261308f0b3659ec077cdb26e3e51a3b97b575654de8fc1975c29
BLAKE2b-256 checksum
How to use checksums
003c1004b3bebb8f7d3e167cef5e6145f5f487d79a908096e53c126b9a1b4af0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp313-cp313-macosx_15_0_arm64.whl
Size 565.1 kB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
7ba0bc2d521e182be0bed1c38f358706d8ea3de9fcc5df2aba7e12245389b854
BLAKE2b-256 checksum
How to use checksums
b06fceac40ce260f15ee399a3c250080328b68089f1724ee5776e10cb4123db9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp312-cp312-win_amd64.whl

Download URL pydeform-0.6.0-cp312-cp312-win_amd64.whl
Size 628.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4df1a295647c035fd323893a388ca7822999bd60c80880aca2c3c96a92d4c815
BLAKE2b-256 checksum
How to use checksums
2da331787939b8cd33894f355f20e4b7cbca3b758e1d6df698da953fd9ed4d0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 621.6 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
362c7ab80edb4f08124e2fd3fa7ed06a1975f944860c6df4df8342fe8318c262
BLAKE2b-256 checksum
How to use checksums
ddcb6abb6ba3a20f18f7413e4b46bd62e1248c5929391183291b47b679ea9706
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp312-cp312-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp312-cp312-macosx_15_0_x86_64.whl
Size 634.4 kB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
791cc6f453d78d567721fe04a1723b16748781a425a90ef52b597530057bdfca
BLAKE2b-256 checksum
How to use checksums
12fb02f16769e0167c2b8c85b85d793ec651ecfe78bff79d2efdf810fb1e5a6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp312-cp312-macosx_15_0_arm64.whl
Size 565.0 kB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
380f2f286563440b138c36d356e9a5d8645c9d99c9e99f53503b2d984d7186c2
BLAKE2b-256 checksum
How to use checksums
124b9ca8c2eca4281e9406f433f8e2a0c23552d553f788c11bdfe1de3b1ecf03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp311-cp311-win_amd64.whl

Download URL pydeform-0.6.0-cp311-cp311-win_amd64.whl
Size 626.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
d7e0e3a298e1245f43f71d332b20b601a13f1a186cf3b335682d2ce0401bacc1
BLAKE2b-256 checksum
How to use checksums
4874cef9b1a4d681a72daba5a0c184a327f745b63044bfcd3afa6e06b44dba05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 619.2 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1b8da6299fb26da6aaca26a7a7d2b7adb38964f92ccd49c5b859c7270fce6ba0
BLAKE2b-256 checksum
How to use checksums
97da4721a399befdaa58d0f10b4f67deb1b0e57a2c58ba7c85cda969c34e633c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp311-cp311-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp311-cp311-macosx_15_0_x86_64.whl
Size 633.1 kB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
2de0e9b9b2bfec0dbc001176b6d407b4b56656e2ad9fb07b9d38bf28bd3ff17f
BLAKE2b-256 checksum
How to use checksums
66dc049d57a94055796eff341bacd04dd58c36cadc54bb5ec300a4a0c5ae35f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp311-cp311-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp311-cp311-macosx_15_0_arm64.whl
Size 564.6 kB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
e1bf41cb350c237cb1f3ee13ea93f186f6d7d83a3b59d5bc2c2227a8411ca42a
BLAKE2b-256 checksum
How to use checksums
40b3ffa5e94a80d760b59cd9cd3fe8932f0b5ec0360f9d8abd27dae2536a7f35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp310-cp310-win_amd64.whl

Download URL pydeform-0.6.0-cp310-cp310-win_amd64.whl
Size 625.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f2d89e2d503f71bc424c8bef8ede9845cdd5e0495420aaf33f9d2c27599ab4b1
BLAKE2b-256 checksum
How to use checksums
c33fb6e504af313be44359ce5d540bc286b246896d6e9362b054c48959667617
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pydeform-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 618.4 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7e20320ea52170b0f503a2b8af84849599f84c3b50b5ee20037a9166a8af03b8
BLAKE2b-256 checksum
How to use checksums
96f19c660a6f7e52c5f64bed8e27ee17df35697a071e890fefd96e9ce829e7f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp310-cp310-macosx_15_0_x86_64.whl

Download URL pydeform-0.6.0-cp310-cp310-macosx_15_0_x86_64.whl
Size 631.6 kB
Tags CPython 3.10 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
dcab0963a23b55cd2bee41065a944661b26a6f1617d1673fbd25b1f305f38aa0
BLAKE2b-256 checksum
How to use checksums
abcaab360bda846e39b6ba6d2d57aea0ea6b9063ebcc213cded78435eecef9c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pydeform-0.6.0-cp310-cp310-macosx_15_0_arm64.whl

Download URL pydeform-0.6.0-cp310-cp310-macosx_15_0_arm64.whl
Size 563.2 kB
Tags CPython 3.10 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
28f8b42ade87520ab08325e64f0168adcb6aed3f0c2d717853f45e55ff2cfd68
BLAKE2b-256 checksum
How to use checksums
3894373515fa64010b720d7669594d0dd185a9075075778cf72e6affb63ea159
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for pydeform 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 25 files in this release have been uploaded with provenance metadata.

Select from 25 files

Attestation for pydeform-0.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page