Skip to main content

latticepts

Nate MacFadden, Liam McAllister Group, Cornell

DOI

Fast lattice point enumeration for convex polyhedra. A C/Cython implementation of Kannan's algorithm, significantly outperforming Normaliz and OR-Tools CP-SAT in speed for certain problems. To demonstrate the performance, latticepts materializes ~108M lattice points in the strict interior of an example 7D cone ('Manwe') in ~13s single-threaded, or ~6.3s on 12 threads on an Intel Core Ultra 7 270K (30 GB RAM, Ubuntu 26.04); reproduce this with benchmark_enum_lattice_points.py (build with LATTICEPTS_OPENMP=1 for the multithreaded figure). We can also just count points, which is quicker.

Used by CYTools and Macaulay2 (see here).

Description

More explicitly, latticepts enumerates lattice points

$$ \{x\in\mathbb{Z}^{\text{dim}}: Hx\geq\text{rhs}\} $$

for $H\in\mathbb{Z}^{N_\text{hyps}\times\text{dim}}$ and $\text{rhs}\in\mathbb{Z}^{N_\text{hyps}}$. Here each row of $H$ is an inward-facing facet normal and the corresponding entry of $\text{rhs}$ is its offset. Cones correspond to $\text{rhs}=0$; 'stretched cones' (e.g., for finding strict interior points) correspond to $\text{rhs} > 0$; polyhedra to general $\text{rhs}$.

latticepts materializes the lattice points (lists them). The exposed count_only mode is there primarily to size that allocation -- it runs the search and reports how many output points there are (the matrix size to allocate) without itself allocating the (multi-GB) output array. Getting a count is incidental; for counting alone, LattE is likely faster. For generating the points, the closer competing approach is to compute/use a Hilbert basis.

Limitations

  • Maximum dimension: 256. For convex cones, latticepts excels at low-dimensions. It can become sluggish in comparison to alternatives at higher-dimensions (well before 256)
  • Windows is not supported: the C kernel uses C99 variable-length arrays, which MSVC does not support

Installation

pip install latticepts

This installs a prebuilt wheel from PyPI -- no C compiler needed (CPython 3.9-3.13 on Linux and macOS; Windows is unsupported, see Limitations).

Building from source

Build from a clone for a development install, or to enable the machine-specific (LATTICEPTS_NATIVE) or parallel (LATTICEPTS_OPENMP) builds below:

pip install -e .

Requires a C compiler.

For a faster, machine-specific build, set LATTICEPTS_NATIVE=1:

LATTICEPTS_NATIVE=1 pip install -e .

Enumeration runs in parallel over the independent top-level search branches -- both counting and materializing. Opt in with LATTICEPTS_OPENMP=1 (needs an OpenMP-capable compiler -- standard on most Linux machines, not on most Macs):

LATTICEPTS_OPENMP=1 pip install -e .

then set the thread count at runtime via the OMP_NUM_THREADS environment variable:

OMP_NUM_THREADS=8 python your_script.py

The two build flags are independent and compose; for the fastest build, set both:

LATTICEPTS_NATIVE=1 LATTICEPTS_OPENMP=1 pip install -e .

Counting parallelizes well -- ~7x on 12 threads when there are many top-level branches (latticepts splits the search across the top coordinate's values, so that count caps the speedup); materializing gains less (~2x: its two-pass count-then-fill is more memory-bound), and the thread-startup overhead can make the serial path (parallel=False) faster for small outputs. No extra memory either way: counting holds only each thread's small O(N_hyps * dim) search state, and materializing fills disjoint slices of the single output buffer (no per-thread copies). See the benchmarks for thread-scaling plots.

Algorithm Notes

This repo contains a Cython wrapper of a C implementation of Kannan's algorithm. See this webpage for some other relevant work (not by me). The specific implementation in this repo is for lattice point enumeration in square boxes $|x_i|\leq B$ for $B\geq 1$. I.e.,

$$ \{x\in\mathbb{Z}^{\text{dim}}: Hx\geq\text{rhs} \text{ and } |x|_\infty \leq B\}. $$

It is a short, single-file implementation: one self-contained, dependency-free C header (box_enum.h, ~290 lines of code, depending only on standard C libraries... no extra install) - I encourage you to read it. The single-file format was inspired by the stb-style. If Python is easier to follow, reference/kannan_reference.py is a pedagogical numba.njit port of the same algorithm. The Python port is efficient but has less options than box_enum (scalar rhs only, so cones and stretched cones but not general polyhedra) and is not used at runtime or as a correctness oracle (box_enum is authoritative).

A helper method to box_enum is provided in case the user wants $N$ points but doesn't care about box size. One such task here is for enumerating some lattice points in convex cones. In this case, boxes of increasing sizes $B$ are studied until $\geq N$ lattice points are found.

Benchmarks

The three comparison benchmarks below are single-threaded -- each tool is given one thread, so none is helped or hurt by its own parallelism -- measured on a 24-core Intel Core Ultra 7 270K (30 GB RAM, Ubuntu 26.04) with the default pip install build (GCC -O3). Each plotted point is the median of several warmed-up runs; error bars are usually smaller than the marker. To recreate (Python >= 3.12): pip install -e ".[benchmark]", then run the benchmarks/ scripts. latticepts's own multicore scaling is shown separately below.

Convex cones: runtime vs requested number of interior lattice points in a cone (i.e., not on the boundary). The cone studied is the 7D 'Manwe' from https://arxiv.org/abs/2406.13751:

Runtime vs N on the Manwe example: latticepts outperforms PyNormaliz and OR-Tools CP-SAT

Polytopes: runtime to enumerate all contained lattice points for various 4D reflexive polytopes. Size of the polytope is measured by h11 with one polytope per h11 value, h11 = 6..491:

Runtime vs h11 for 4D reflexive polytopes

More polytopes: runtime vs dimension of length-2 hypercubes $[0,2]^{dim}$ for dim = 2..14:

Runtime vs dimension for the length-2 hypercube

Thread scaling: latticepts also parallelizes (build with LATTICEPTS_OPENMP=1; the comparison plots above use the single-threaded serial path). It splits the search across the top coordinate's values, so the number of top-level branches caps the speedup. On a bounded cube $|x_i|\leq 10$ in 6D (~86M points, 21 top-level branches), the parallelization achieves ~7x speedup for counting the points and ~2x speedup for materializing them, both on 12 threads. Parallelization was often counterproductive (slower) for Normaliz and CP-SAT.

latticepts thread scaling on a bounded cube: counting ~7x on 12 threads, materializing ~2x

Usage

There are two primary interfaces. For unbounded polyhedra (e.g., cones), the focus is on efficiently generating a finite collection of lattice points. This can be done via enum_lattice_points which enumerates all lattice points with components bounded by $|x_i|\leq B$ in the polyhedron. The algorithm increases the size of $B$ until a user-requested number of points is found. See the following example of how to use this to get lattice points in the strict (since $rhs=1$) interior of a convex cone:

import numpy as np
from latticepts import enum_lattice_points

# Find at least 1000 lattice points in {x : H @ x >= rhs}
H   = np.array([[1, 2], [3, -1]], dtype=np.int32)
rhs = 1
pts = enum_lattice_points(H=H, rhs=rhs, min_N_pts=1000)
# pts.shape -> (1062, 2), dtype int32; overshoots min_N_pts because the
# search grows B in steps (stops at B=31) and returns all points at that B

# Optionally restrict to primitive vectors (GCD = 1)
pts = enum_lattice_points(H=H, rhs=rhs, min_N_pts=1000, primitive=True)
# pts.shape -> (1026, 2): still >= min_N_pts, but primitive vectors are
# sparser, so the search steps to a larger box (B=39) to reach the minimum

box_enum allows direct control over the box size $B$ instead of the number of lattice points. I.e., to enumerate all lattice points in $\{x: Hx \geq \text{rhs},\ |x|_\infty \leq B\}$:

from latticepts import box_enum

pts, status, N_nodes = box_enum(B=5, H=H, rhs=rhs, max_N_out=10_000)
# pts.shape -> (31, 2), status == 0 (success), N_nodes == 39
# status: 0 = success, -1 = dim>256, -2 = hit max_N_out, -3 = hit max_N_nodes, -4 = too many constraints
# (statuses are also explained in the docstring)

box_enum is well suited to lattice point enumeration in polytopes (assuming an H-representation is known). For example, if one knows a bounding box of the polytope (if you have a V-representation, this is trivial: $B = \max|v_i|$ over all vertices), then the lattice point enumeration can be done as follows. Here's an example of the $h^{1,1}=491$ 4D reflexive polytope:

import numpy as np
from latticepts import box_enum

H   = np.array([[ 1,   0,   0,   0],
                [-15,  8,   6,   1],
                [-15,  8,   6,  -1],
                [ -1,  1,  -1,   0],
                [  0, -1,   0,   0]], dtype=np.int32)
rhs = np.array([-1, -1, -1, -1, -1], dtype=np.int32)
# has bounding box B = max(|vertices|) = 42 (basis-dependent)
B   = 42

# one can then get the lattice points via:
pts, status, N_nodes = box_enum(B=B, H=H, rhs=rhs, max_N_out=10_000)
# pts.shape -> (680, 4), status == 0, N_nodes == 1289

Citation

If you use latticepts in your research, please cite it:

@software{latticepts,
  author  = {MacFadden, Nate},
  title   = {latticepts},
  doi     = {10.5281/zenodo.19405318},
  url     = {https://github.com/natemacfadden/latticepts},
  orcid   = {0000-0002-8481-3724},
}

Organization

latticepts/
├── latticepts/
│   ├── box_enum.h                       # STB-style library for the Kannan enumeration (serial)
│   ├── box_enum_omp.h                   # optional OpenMP parallel layer (count + materialize) over box_enum.h
|   ├── box_enum.pyx                     # Cython wrapper
|   └── latticepts.py                    # the enum_lattice_points wrapper for box_enum
├── tests/
│   ├── conftest.py                      # shared test helpers (pytest)
│   ├── test_box_enum.py                 # tests of box_enum
│   ├── test_manwe.py                    # tests relating to 'Manwe' (arXiv:2406.13751)
│   ├── test_enum_lattice_points.py      # tests of enum_lattice_points
|   └── c/                               # simple C-kernel tests (no Python interface)
├── benchmarks/                          # perf benchmarks; double as usage examples + make the README figures
│   ├── benchmark_box_enum.py            # runtime vs B for the Manwe geometry (h11=491, 7D)
│   ├── benchmark_enum_lattice_points.py # runtime vs requested N for the Manwe cone (h11=491, 7D)
│   ├── benchmark_polytopes.py           # runtime vs h11 for 4D reflexive polytopes; runtime vs dimension for hypercubes
│   └── benchmark_narrowness.py          # runtime vs narrowness for a 4D convex cone
├── reference/
│   └── kannan_reference.py              # readable pure-Python (numba.njit) port of the algorithm; not used at runtime
├── docs/                                # README figures (benchmark_*.png)
├── pyproject.toml
└── setup.py

License

GPLv3. Copyright (c) 2026 Nate MacFadden.

Metadata

Release files for latticepts 0.4.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 latticepts 0.4.0
File Size Uploaded Provenance Actions
latticepts-0.4.0.tar.gz 213.3 kB With provenance Details for latticepts-0.4.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for latticepts 0.4.0
File Actions
latticepts-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for latticepts-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
latticepts-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for latticepts-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
latticepts-0.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for latticepts-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
latticepts-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details for latticepts-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl
latticepts-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for latticepts-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
latticepts-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for latticepts-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
latticepts-0.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for latticepts-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
latticepts-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details for latticepts-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl
latticepts-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for latticepts-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
latticepts-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for latticepts-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
latticepts-0.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for latticepts-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
latticepts-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details for latticepts-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl
latticepts-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details for latticepts-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
latticepts-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for latticepts-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
latticepts-0.4.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for latticepts-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
latticepts-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details for latticepts-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl
latticepts-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details for latticepts-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl
latticepts-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details for latticepts-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
latticepts-0.4.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details for latticepts-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
latticepts-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details for latticepts-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl

Total release size: 11.3 MB

Release files / latticepts-0.4.0.tar.gz

Download URL latticepts-0.4.0.tar.gz
Size 213.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b52cc9ed7b1ae86f3108855761a2b6c3b64fa050b96ebe4646991c863108eda5
BLAKE2b-256 checksum
How to use checksums
21646438d2be64a3fb115384a07913782f2d766907e034406ebe2969e7130530
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL latticepts-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 835.4 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
697c68508232b7d1e0bad731de1d1f3d62668f7e1693bfcbe41646d955e89131
BLAKE2b-256 checksum
How to use checksums
762a278061eb7354d5c1726c0c424d830198d697069b668d419f565d807addb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL latticepts-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 800.5 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
027d37838a0efa71adfcacdae3539c26e7b92aeb1edae14990437af155c545c1
BLAKE2b-256 checksum
How to use checksums
627afacf2521b348fdd5e552731ed79a338eecb53eef07f8921216c025ec8870
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL latticepts-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 296.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5c8687ab0335c5ee72b1d6aa7d2cf94dbe34443c089a90286d16981c5042e1da
BLAKE2b-256 checksum
How to use checksums
fb8f040e13b4b9350208a284c11946835c987fe91c56d42ed267e96d2b77424c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL latticepts-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 295.0 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
7cf54cd06d9ada072105b3c30ef519e8dab5d2c41ad53dee30f14c089aebd62b
BLAKE2b-256 checksum
How to use checksums
ebb6d7b5b2d6db1c12a89434521ee310c91d334cd153998f75b5c930dbf047f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL latticepts-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 835.1 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
06288e96f09590e406616713849bc2bafbb066ead4daa7bf8c4bb209c48a0d8b
BLAKE2b-256 checksum
How to use checksums
659cc051c1a45a7ad05e7acf9c62b5f3748b7a24ed9b7f9e20ea2d2020ca4daa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL latticepts-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 810.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
01b8cd31655d9fd9e15a030def79f784f96c99f4fbb3c871539a7be5a1008f85
BLAKE2b-256 checksum
How to use checksums
7d6c0ce73fc7dbc936f5dcbaf3db7e241a24729964019528bf3583fb5c788eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL latticepts-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 296.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2fde527dc8fb3887e049e9021e1f780f7fdac90df5f6140bbc32ed6d942141e5
BLAKE2b-256 checksum
How to use checksums
f1e820f0be6c18023ee8c4581dbaf943e9698ae8ade770bbe714764eaf03e390
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL latticepts-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 295.1 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
ed42283df25dca090d3111ea4fa20a8932441de712c4ca87a206e972f005cb7a
BLAKE2b-256 checksum
How to use checksums
94614092a7a10b2a0e973f123c1f084d3f6f787fdb8ed6cf21b1c3cb3284c504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL latticepts-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 845.8 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
b5a0daf964124a1aff4e724dc63b053766f3107acd015c2aa97bbe4f7570ac87
BLAKE2b-256 checksum
How to use checksums
932d4ce408b253e392442811d648dc3cc58f3b5992182769d2b61fef2c779c73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL latticepts-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 814.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
14d201b1b4d8b1fb2386104a4ef2d3720be6c91d3e53fb2f35a914f9a1fefeb9
BLAKE2b-256 checksum
How to use checksums
f0f9fe72b84afa032e7cbf5cf0ec6c873f0b9375db48fd322a5a8b70789e50e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL latticepts-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 295.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a72603471298c3d838f60662ed29a33e256077eeade18a9d59fe6f85d0d4799c
BLAKE2b-256 checksum
How to use checksums
3197ba2f02de14f0ddc64c2522609b9d6548692c037faaad3f5a2012e24c9a9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL latticepts-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 294.1 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
d9aec45c55c9e158d8f10e9cda1384398f6d69df4796847ad3eed59c12c9860f
BLAKE2b-256 checksum
How to use checksums
3334229153f2a30cd384cc405ae502a943b4762ece85432aca758c1678233e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL latticepts-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 815.6 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
aad76cfc7227696096b6ed590320a659cc2ae730558f59c184a22c68c331d4ba
BLAKE2b-256 checksum
How to use checksums
f8bab994761d2bbdfdc71ba4540bed35b57dc2dd6bd8ceed44600cf50374160c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL latticepts-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 787.3 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2d2763b9491bb3c4fa82f0b6d2ad7e5136821a6406c80131b8d4ed50f349e715
BLAKE2b-256 checksum
How to use checksums
488f18d86d234fe39325d2ae2fbd8bfc12205aebf4041a1ab4d1dcdad1c2ab78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL latticepts-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Size 297.1 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
295d22574e884e2de82bcd3fc51bacb9c9323ae79b992ac80b99ccb3eca49e26
BLAKE2b-256 checksum
How to use checksums
0cf763b5bd5c60e11ce25ac41b6329a1a70a31ad17caa44a663b8c90ac7ee57b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL latticepts-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 295.5 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
12caac57b49fccb80fa46a687d0959d3daed85e9962558c25d613d4905e11f00
BLAKE2b-256 checksum
How to use checksums
4e6982def22869d13fe5c07679b9a263665cc7c62706b8204163e30091a6d15c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL latticepts-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 813.9 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
bbafa3a9c52591ba5dfc8ce9d282578774564f3f464e38dd6c682344ef49e05e
BLAKE2b-256 checksum
How to use checksums
9ed2ea8cafda95cba09f2fc398de0441bb36691d8592324bebd79f017d800d04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL latticepts-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 784.4 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6037bd0c103c64a8b59be132903017ab49e1574cfafab4af173ff645070e5b9b
BLAKE2b-256 checksum
How to use checksums
8a135e29ae0a7ef611b52deb01ff4b4ff3506035c6d6b2e1557cdbf9f801b281
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL latticepts-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Size 297.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8e116ad82672b87f8207a5b05b1e706540c494fef90650833a70c8fd0f8e226f
BLAKE2b-256 checksum
How to use checksums
f99a93881ca12292f952055764a9c38c5da6cf1adf36e27f15830c884b6c59de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Release files / latticepts-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl

Download URL latticepts-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Size 295.9 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
f6a1c5189bad6c24ec9c9f93fc4ccbbf47c840dd5f970f16ca9a04e7c8a592c6
BLAKE2b-256 checksum
How to use checksums
fc74a8d283d64f0b33196d550586e403db0545852662f8e2f2a86fba07bc6f34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 9, 2026.

Transparency log

Security for latticepts 0.4.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 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for latticepts-0.4.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 Sep 9, 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