Skip to main content

GitHub commit activity GitHub last commit GitHub Issues or Pull Requests GitHub Pull Requests GitHub Actions Workflow Status Documentation Dependabot Dependabot PRs

Ndpolator

Fast, n-dimensional linear interpolation and extrapolation on sparse grids.

Ndpolator is a combined interpolator/extrapolator that operates on sparse (incompletely populated) $n$-dimensional grids. It estimates scalar or vector function values within and beyond the definition range of the grid while still avoiding the need to impute missing data or sacrifice the benefits of structured grids. Ndpolator is written in C for speed and portability; a python wrapper that uses numpy arrays is provided for convenience.

Recent changes

ndpolator 1.3.1

  • replaces all C99 code with the ANSI standard so that Microsoft C compiler can build the code.

  • fixes compiler flag inconsistency across different platform compilers.

  • fixes pip self-upgrade on Windows.

  • sets the minimal setuptools version to 77 to ensure support for license reference.

ndpolator 1.3.0

  • implements kd-tree lookup of nearest vertices and/or hypercubes. The search speed for kd-trees is O(logN), where N is the number of vertices; compared to the previous linear search that has O(N) dependence, this provides a significant speed increase in extrapolation. For example, for a 3D 50x50x50 grid, the speed-up is ~500.

  • adds NDP_METHOD_LINEAR and NDP_METHOD_KDTREE options to ndpolator() and ndp_find_nearest() methods.

ndpolator 1.2.3

  • extrapolating with extrapolation_mode='nearest' when two or more points were at the exact same distance (within machine precision) did not consistently select the same point on all architectures, causing potential inconsistencies across different machines.

ndpolator 1.2.2

  • docbuild moved from PR actions to release action.

  • an incorrect argument name in unit tests fixed.

ndpolator 1.2.1

  • the computation of distance between the query point and the grid was not done correctly in off-grid vertices; fixed.

  • the find_nearest() function now stores an array of nearest points sorted by distance.

ndpolator 1.2

  • distance between the query point and the grid for off-grid query points is now explicitly computed and returned.

  • github workflows substantially improved.

ndpolator 1.1

  • memory management improvements.

ndpolator 1.0

  • initial release.

Installation

Ndpolator sources are hosted on pypi; you can install the latest release by issuing:

pip install ndpolator

To install ndpolator from github, clone the repo and install it from the local directory with pip:

$> git clone https://github.com/aprsa/ndpolator ndpolator
$> cd ndpolator
$> pip install .

Once installed, you can test the installation by running a pytest:

$> cd tests
$> pytest

Documentation

API reference is available on gh-pages.

Usage example

To demonstrate the usage of ndpolator, let us consider a 3-dimensional space with three axes of vastly different vertex magnitudes. For comparison purposes, let the function that we want to interpolate and extrapolate be a linear scalar field:

\mathbf a_1 = \{1000, 2000, 3000, 4000, 5000\}, \quad \mathbf a_2 = \{1, 2, 3, 4, 5\}, \quad \mathbf a_3 = \{0.01, 0.02, 0.03, 0.04, 0.05\},
\mathbf F(x, y, z) = \frac{x}{1000} + y + 100 z.

A suitable ndpolator instance would be initiated and operated as follows:

import numpy as np
import ndpolator

# initialize the axes:
a1 = np.linspace(1, 5, 5)
a2 = np.linspace(10, 50, 5)
a3 = np.linspace(100, 500, 5)

# initialize interpolation space:
ndp = ndpolator.Ndpolator(basic_axes=(a1, a2, a3))

# define a scalar function field and evaluate it across the grid:
def fv(pt):
    return pt[0] + pt[1] + pt[2]

grid = np.empty((len(a1), len(a2), len(a3), 1))
for i, x in enumerate(a1):
    for j, y in enumerate(a2):
        for k, z in enumerate(a3):
            grid[i, j, k, 0] = fv((x, y, z))

# label the grid ('main') and register it with the ndpolator instance:
ndp.register(table='main', associated_axes=None, grid=grid)

# draw query points randomly within and beyond the definition ranges:
query_pts = np.ascontiguousarray(
    np.vstack((
        np.random.uniform(-5, 5, 10),
        np.random.uniform(-50, 50, 10),
        np.random.uniform(-500, 500, 10))
    ).T
)

# interpolate and extrapolate linearly:
interps = ndp.ndpolate(table='main', query_pts=query_pts, extrapolation_method='nearest')

print(f'a1 = {a1}')
print(f'a2 = {a2}')
print(f'a3 = {a3}')
print(f'query_pts = {query_pts}')
print(f'interps = {interps}')

Purpose

Multi-variate ($n$-dimensional) interpolation and extrapolation are techniques used in mathematics, statistics and science to estimate unknown values between and beyond existing data points in a multi-dimensional space. Interpolation involves estimating the function value at points within the range determined by the existing data points, while extrapolation involves estimating the function value beyond that range. There are numerous robust implementations of multi-variate interpolation, including k nearest neighbors (Cover & Hart 1967), natural neighbor interpolation (Sibson 1981), radial basis functions (Hardy 1971), kriging (Cressie 1990), and many others. Scipy, for example, features an entire module for interpolation (scipy.interpolate) that implements several multi-variate interpolation classes, including piecewise-linear, nearest neighbor, and radial basis function interpolators. Unfortunately, none of the implemented scipy methods lend themselves readily to extrapolation: at most they can fill the values off the convex hull with nans or a value supplied by the user. In addition, interpolators that operate on a regular $n$-dimensional grid do not allow any missing data; those values either need to be imputed by using unstructured data interpolators, or structured data interpolators need to be abandoned altogether.

Ndpolator aims to fill this gap: it can both interpolate and extrapolate function values within and beyond the grid definition range, and it can operate on incomplete grids. As a side benefit, ndpolator can estimate both scalar and vector function values, and it can reduce grid dimensionality for points of interest that lie on grid axes. It is optimized for speed and portability (the backend is written in C), and it also features a python wrapper. Ndpolator was initially developed for the purposes of the eclipsing binary star modeling code PHOEBE (Prša et al. 2016), to allow the interpolation and extrapolation of specific intensities in stellar atmospheres. Yet given the gap in the multi-variate interpolation and extrapolation landscape, ndpolator development has been separated from PHOEBE and made available to the community as a standalone package.

Ndpolator's operation principles

Consider a scalar or a vector field $\mathbf{F}$ that is sampled in a set of $N$ $n$-dimensional points, $\{\mathbf F (x_1, \dots, x_n)_k\}$, $k = 1 \dots N$. Let these function values be sampled on a grid, where axes $\mathbf{a}_k$ span each grid dimension, so that $\mathsf{X}_{k=1}^{n} \mathbf a_k \equiv \mathbf{a}_1 \times \mathbf{a}_2 \times \dots \times \mathbf{a}_n$ is a cartesian product that spans the grid. Axis spacing need not be uniform: vertices can be separated by any amount that is required to make the grid sufficiently locally linear. If the grid is complete, i.e. if there is a function value $\mathbf F(x_1, \dots, x_n)$ associated with each grid point, we have $N_c = \prod_k l(\mathbf a_k)$ function value samples, where $l(\mathbf a)$ is the length of axis $\mathbf a$. If the grid is incomplete, i.e. if some function values are missing, then $N < N_c$. Ndpolator defines grid points with sampled values as nodes, and grid points with missing values as voids. The points in which we want to estimate the function value are called query points or points of interest. The smallest $n$-dimensional subgrid that encloses (or is adjacent to) the query point is called a hypercube.

Unit hypercube transformation

The first, most fundamental principle of ndpolator is that all interpolation and extrapolation is done on unit hypercubes. In real-world applications, it is seldomly true that all axes are defined on a unit interval. This can lead to vertices of significantly different orders of magnitude along individual axes. To that end, ndpolator first normalizes the hypercubes by transforming them to unit hypercubes: given the sets of two consecutive axis values that span a hypercube, $(\mathbf a_{1,p}, \mathbf a_{1,p+1}) \times (\mathbf a_{2,q}, \mathbf a_{2,q+1}) \times \dots \times (\mathbf a_{n,t}, \mathbf a_{n,t+1})$, the unit transformation maps it to the $[0, 1] \times [0, 1] \times \dots \times [0, 1] \equiv [0, 1]^n$ hypercube. All query points are subjected to the same transformation, creating unit-normalized query points. Therefore, interpolation (and extrapolation) always operates on unit hypercubes, which is computationally the least expensive and numerically the most stable process. An additional benefit of this transformation is that extrapolation inherits the nearest hypercube's grid spacing, thus naturally accounting for (potentially) variable spacing in different regions of the grid.

Sequential dimensionality reduction

The second operating principle of ndpolator is sequential dimensionality reduction. Consider a 3-dimensional hypercube in \autoref{fig:interpolation}; let us assume that function values in all 8 corners of the hypercube are sampled, i.e. we have 8 nodes. The point of interest is depicted with an open symbol in the left panel, along with projections onto the hypercube faces. Ndpolator starts with the last axis, in this case $\mathbf a_3$, and it interpolates function values along that axis to the projections of the point of interest (second panel). These are univariate interpolations. The process yields 4 vertices (depicted in open symbols), thereby reducing the initial dimension $N=3$ by 1, to $N-1=2$. The process is then repeated (third panel), this time along the second axis, $\mathbf a_2$, yielding 2 vertices, thereby reducing the dimension to 1. Finally, the last interpolation is done along axis $\mathbf a_1$ (right panel), yielding a single vertex, the point of interest itself. The dimension is thus reduced to 0, and the function value is determined. Thus, for an $n$-dimensional hypercube, ndpolator performs $\sum_{k=0}^{n-1} 2^k$ univariate interpolations to estimate $\mathbf F$ in the point of interest, which implies the $N \log N$ time dependence.

An example of sequential dimensionality reduction in 3 dimensions.\label{fig:interpolation}

Initial dimensionality reduction

The third operating principle of ndpolator is initial dimensionality reduction. In real-life applications it frequently happens that some of query point coordinates are aligned with the axes. For example, one of the axes might allow the variation of the second order variable, but its value usually defaults to the value that is sampled across the grid. When this happens, the initial hypercube dimension can be reduced by 1 for each aligned axis. The extreme case where the query point coincides with a node means that hypercube dimensionality is reduced to 0, and there is no need for interpolation. For that reason, ndpolator flags each coordinate of the query point as "on-grid", "on-vertex", or "out-of-bounds". When "on-vertex," hypercube dimension can be immediately reduced. When that happens, the time dependence is reduced to $(N-M) \log (N-M)$, where $M$ is the number of coordinates aligned with the axes.

Incomplete hypercubes

The fourth operating principle of ndpolator is dealing with incomplete hypercubes. If any of the hypercube corners are voids, we cannot interpolate. For that purpose, ndpolator keeps track of all fully defined $n$-dimensional hypercubes; when a query point lies within an incomplete hypercube, ndpolator finds the nearest fully defined hypercube and uses it to extrapolate the function value in the point of interest. While this is globally still considered interpolation as the query point is within the grid's definition range, the estimated function value is, strictly speaking, extrapolated from the nearest fully defined hypercube. Note that, when grids are particularly sparse and functios strongly non-linear, that can cause a substantial accumulation of error. In such cases, unstructured interpolation techniques might be a better fit.

Extrapolation modes

The fifth operating principle of ndpolator is extrapolation. Ndpolator has three extrapolation methods: none, nearest and linear. When extrapolation method is set to none, the function value that is outside the range of axes is set to nan. For extrapolation method nearest, ndpolator stores a list of all nodes and assigns a function value in the node that is nearest to the query point. Lastly, if extrapolation method is set to linear, ndpolator linearly extrapolates from the nearest fully defined hypercube in a manner equivalent to dealing with incomplete hypercubes. The choice for extrapolation method depends on the multi-variate function that we are estimating; if it is highly non-linear, extrapolation should be avoided, so none and nearest might be appropriate; if it is largely linear or varies slowly, then a linear extrapolation method might be warranted. Ndpolator is a linear extrapolator, so it cannot adequately estimate non-linear multi-variate functions.

Basic axes and associated axes

The question of grid completeness is quite impactful for performance; that is why the sixth operating principle of ndpolator is to distinguish between basic axes and associated axes. Axes that can have voids in their cartesian products are referred to as basic. For these axes, we need full ndpolator machinery to perform interpolation and extrapolation. On the other hand, a subset of axes may have all nodes in their cartesian products, i.e. they are guaranteed to be sampled in all vertices that basic axes are sampled in; these are referred to as associated axes. Given that their sampling is ascertained, interpolation and extrapolation can proceed without concerns for incomplete hypercubes -- that is, for as long as their basic hypercube counterparts (hypercubes spun by basic axes) are complete. Each associated axis reduces the dimensionality of the hypercubes that need to be stored for extrapolation lookup, thus optimizing performance further.

Function value dimensionality

The seventh and final operating principle concerns function value dimensionality. Most interpolators assume that the function value $\mathbf F$ is a scalar; ndpolator does not make that assumption. $\mathbf F_r(x_1, \dots, x_n)$ can be a scalar or a vector or arbitrary length $R$ (within reason, of course). It is then a requirement that all nodes are also $R$-dimensional. Ndpolator will then interpolate and extrapolate all function value components separately, and yield an $R$-dimensional estimate of the function value $\mathbf F$ in the point of interest.

Hypercube caching

While not explicitly a part of ndpolator's operating principles, ndpolator exposes two auxiliary functions, import_query_pts() and find_hypercubes(), that can be used to cache hypercubes. That way, a calling program can group query points that are enclosed by a single hypercube and perform bulk interpolation without the need to find the corresponding hypercube for each query point successively. While the indexing and the hypercube search are both binary, avoiding the lookup when possible further optimizes the runtime.

API documentation and tests

Ndpolator is released under the GNU General Public License. The Application Programming Interface (API) is available for the underlying C library on gh-pages. The test suite and automated API building are incorporated into github's Continuous Integration (CI) infrastructure. Any and all feedback, particularly issue reporting and pull requests, are most welcome.

Acknowledgements

Financial support for this project by the National Science Foundation, grant #2306996, is gratefully acknowledged.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ndpolator-1.3.1.tar.gz (108.0 kB view details)

Uploaded Source

Built Distributions

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

ndpolator-1.3.1-cp313-cp313-win_amd64.whl (42.3 kB view details)

Uploaded CPython 3.13Windows x86-64

ndpolator-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl (95.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

ndpolator-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (97.5 kB view details)

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

ndpolator-1.3.1-cp313-cp313-macosx_11_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ndpolator-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl (45.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

ndpolator-1.3.1-cp312-cp312-win_amd64.whl (42.3 kB view details)

Uploaded CPython 3.12Windows x86-64

ndpolator-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (95.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

ndpolator-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (97.5 kB view details)

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

ndpolator-1.3.1-cp312-cp312-macosx_11_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

ndpolator-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl (45.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

ndpolator-1.3.1-cp311-cp311-win_amd64.whl (42.3 kB view details)

Uploaded CPython 3.11Windows x86-64

ndpolator-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (94.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

ndpolator-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (96.6 kB view details)

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

ndpolator-1.3.1-cp311-cp311-macosx_11_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

ndpolator-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl (45.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

ndpolator-1.3.1-cp310-cp310-win_amd64.whl (42.3 kB view details)

Uploaded CPython 3.10Windows x86-64

ndpolator-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (94.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

ndpolator-1.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (96.2 kB view details)

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

ndpolator-1.3.1-cp310-cp310-macosx_11_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

ndpolator-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl (45.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

ndpolator-1.3.1-cp39-cp39-win_amd64.whl (42.3 kB view details)

Uploaded CPython 3.9Windows x86-64

ndpolator-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl (94.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

ndpolator-1.3.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (96.2 kB view details)

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

ndpolator-1.3.1-cp39-cp39-macosx_11_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

ndpolator-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl (45.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file ndpolator-1.3.1.tar.gz.

File metadata

  • Download URL: ndpolator-1.3.1.tar.gz
  • Upload date:
  • Size: 108.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1.tar.gz
Algorithm Hash digest
SHA256 f11ca82adb0ded292048f4e5ef61c63f1e07346ecd68fb874958d0268bdba869
MD5 4c54cbadb3344b697f9a7dde41ae3337
BLAKE2b-256 1e7382542bd4ee5465f806fd0d565f644e1808af0028b04d3253c2c5dc74b365

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1.tar.gz:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ndpolator-1.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f8e664295741b0222ea91faec45a004bb0c639397b0525c0a5e891250e502df
MD5 89f770bc4baea5fa3fade1fa8aea3b3a
BLAKE2b-256 982d001eea1fb1b3a9250c3ddb98bdd46a0f19c96d2fff6b94cd93f43e2cc66c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp313-cp313-win_amd64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2e9a600c786a01aed7f1941c7740f8fa76a97edc7fbbd19491c0f4734b0d806d
MD5 78a8010b6dedb8163d0e2b59495d8660
BLAKE2b-256 276ec8f116afd6db0c091aa71a6ef165aae59aa19d7bbe435bb48d9e295a69e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9cca468251df886ec60e79bd1c5e4bf7913ac09999e59e4c4c98a6602aeb92cd
MD5 b093b089472fd35a580cca89b405d590
BLAKE2b-256 0ab137514e2d84a94afb9f4d0b9879c4d7402d41d78f61d8b28ca73cc5c0003b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e162dbaf0757b079477ec241dda342e3621982c54449d9c1c487a6aaac1c311
MD5 0e6257ec31f41f0adf296a3d2e5b4932
BLAKE2b-256 a6bedf7d5b4e52725f4a95848321bbf594c069e23f4a09cd4de54375dd61a467

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 adfb922926765eff7f2421c657355d47952667c44304e0e2e852a56dc6bb7dd3
MD5 dffd97818f30211d336475b777db4e07
BLAKE2b-256 45dbece9be370a2900277516f310435502cd2da39387d76e256fd689b63eea0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ndpolator-1.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c417b26b08e3089d80a0788ab313fe37ff5ad05e14d3be210edc2fe169693345
MD5 8e966d8df001bd85458b7c61486e0b73
BLAKE2b-256 5844d20ba1534b2d2a8287f61121d937475884900659ea3203c221a65685187c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp312-cp312-win_amd64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 be25c244d74221da184aa06d0a94d13d33164102e22f292c2f0ae827b7b1e08a
MD5 27327ea34bec3e51b83b9fb029ac3121
BLAKE2b-256 a5887dd62fc4c88d3fa8a6e04257e35cdd99078d4a5d558e5e1c402f365389ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a89a65bb0075b5522c359e0e6500f3e4e872092f12d2094502439a396d284af5
MD5 29943dc4ac00728590ba3ad2d5fd499c
BLAKE2b-256 95f604bda11259b526de9dff6d400001c04d9d2012c462498695a099416f6bee

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 283b0346ae3ed0dee87f0863b3a94cfde6a433ee6d9ca81a46ab29117c4a9ca3
MD5 2c9f27bf5d31ded6dfbe1d9f89dee25e
BLAKE2b-256 99b18ecae0f4ae90f54d771c630edf9f3b507a1d07149ca05728702cee9ed530

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9e0705409cc78bd40cd1fa599fa4fcfef84c61812934ef584b7c5f533544b08a
MD5 6032797cd1b62aed8d27b4cc76c509b8
BLAKE2b-256 97985b6954dea5d2ee6fdf9aa0726dba4fa2ed146df6e50281d40c49a5964cca

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: ndpolator-1.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2de51c6a38348bdea64aec94c6a07d023b14932023debd14962be811f6e4b22c
MD5 3fce8f3d7a03fb6c51a9c2ce30c7f618
BLAKE2b-256 e0ff013313114eee24a577305dd448c1c12116d29901b4c9a78f17019eab88e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp311-cp311-win_amd64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9f08c1b55a33e6386b957d5cfbb6115d3d5940088bb59c76a351fb6100dbf387
MD5 4852a0a5af1243f42bc2130deeebbe9d
BLAKE2b-256 0132de10d218c1460dfb61c12492483a2328de21a226f3afc8131c96a69b8041

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a689f52aebc55a21d30a0ad280211562024b384d64fe3ccd0cc822d0fd22dd1
MD5 9f300661bfe02c34f987aef09cb9d858
BLAKE2b-256 4b8ef59659f4216e0737710683305cad40e37c1e89ffe925634d8d22ef4d1bba

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d482997c822916da20eb7b177480c628ebdf164387b645e981722021f1faafad
MD5 e625468a49782d93d2575fa1ff707fbc
BLAKE2b-256 f385b07ecb37ce4a8e90b9db10bfa94abe15b135edb4c8c6b52299fa8cc51ccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3969c19a2425aa81b971bffab5d2c646538f1ce9aa4b46c615f669ccc5d89a8f
MD5 25b1c3ddc548f0ac44138bec57f9ef0b
BLAKE2b-256 ef084f2d813c2f03f4409c64e19fc39b814215349d7d4822b30fa3c3d4c68e94

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: ndpolator-1.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 12a5299649b83bc49a3458c8df31ec6ad8a6464b2ed2b2e25194c6e18956735d
MD5 189f244fb3913ff50a6f9c66b73b96a0
BLAKE2b-256 d3cadf70250c0662933df7455125626f1b9fc82a837b727ce0a87cc7a90c1e18

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp310-cp310-win_amd64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d20a3be6c8f50ecf818e9118083eb090a11f73352ea3331965a6fb983cc7af37
MD5 b3407c8614942a29bc718aeae7ff6529
BLAKE2b-256 e1c85f1b59453bc0d93f3268a38e65e05017b95dd70d7deb87cdc18c0f2cb828

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1297bd4f4f1d5c7e3530de90c68294c2b7b3f3f990a10d9f2c39abca94c982d
MD5 afd27103267ffa0967b22a3ab20fc132
BLAKE2b-256 cbc5eac3e21283f7477a037a239fce738227d00662318052abd841538d40e44d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27740ad3f431203e36275abf6b90453d65d3618ecf6e56abfbd45c52b09d0ae5
MD5 7b34b439e9e36b58e031e8a238f6f35b
BLAKE2b-256 5e25ab0fcbae2f9239f8eee3348f60017fe6b63024ef32e9209169d53abb2b8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 49d2461a3d2e970ce1d15f1dd4808043cf46245593c04ebac3605a257b82725a
MD5 f2d9be416030ab67081d5c08c399c6a2
BLAKE2b-256 cd7e9fa30fdc2ac53a89020fe7fa800cda81e9a3cbdb2641d68a7ed706f69e6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ndpolator-1.3.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ndpolator-1.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fdac2c9fc52058870a14a6951c3fe6dca7555ba83dc51904531f1e286d7d195e
MD5 352b502a5ac9688afabda4b2f029a5a6
BLAKE2b-256 a396213bf9fd22d87037ddc2004d6cca041d8fb9f00075a2be7cf131a896b672

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp39-cp39-win_amd64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8da34f92740c0dfa434668f891adafaa82c47fc4c164e64e9cba36f1aebd801
MD5 da2a1db8c80d14b6e90bb242b5f07203
BLAKE2b-256 837e83b4c2c4f79807c493736aa041d0c8e373f1a8bf77306633a36c831c0303

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b8f9d738bacf48c289b6ae5cbdb6fb3c91be97fce3610a52932a19a5ce0e652
MD5 edc6412ef5447ac8e677c5fdb9679f27
BLAKE2b-256 bc0f1367b76d629dfc923a833cac4f6b78192062db994d9c250465e3e464572b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81a49437ccfdb963841e0dd5141d63ffab32867776c933d7a20b5087dc18ac17
MD5 8f1efb6d6f6818b9eae2b51e6ffca043
BLAKE2b-256 b31dd02bdf2a923c8685ccc75127ed015fc228c8a9b5ae52ee7e29d538cc6483

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ndpolator-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f3d567fdd3412ab9be211a41f53f219e54e7a31ed91e2bc9caf1bbe791af61d3
MD5 1651ede304e77c67cb92f0c64fe4ad4c
BLAKE2b-256 635a2a8ae582036bb999849f9ac4ad0acd8e51534c5eaa4edfbf16f8834bc571

See more details on using hashes here.

Provenance

The following attestation bundles were made for ndpolator-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: on_release.yaml on aprsa/ndpolator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.3.1 This release

26 files

1.3.0

16 files

1.2.3

44 files

1.2.2

44 files

1.2.1

51 files

1.2

51 files

1.1

1 file

1.0

1 file

0.1

1 file

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