Skip to main content

ndpolator: fast, n-dimensional linear interpolation and extrapolation on sparse grids

Project description

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

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.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
import ndpolator

# initialize the axes:
a1 = np.linspace(1000, 5000, 5)
a2 = np.linspace(1, 5, 5)
a3 = np.linspace(0.01, 0.05, 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]/1000 + pt[1] + 100*pt[2]

grid = np.empty((len(ax1), len(ax2), len(ax3), 1))
for i, x in enumerate(ax1):
        for j, y in enumerate(ax2):
            for k, z in enumerate(ax3):
                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(500, 5500, 1000),
        np.random.uniform(0.5, 5.5, 1000),
        np.random.uniform(0.005, 0.055, 1000))
    ).T
)

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

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.

Project details


Download files

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

Source Distribution

ndpolator-1.2.1.tar.gz (51.4 kB view details)

Uploaded Source

Built Distributions

ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.2 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl (35.9 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (36.6 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.2 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl (35.9 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (36.6 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.2 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl (35.9 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (36.2 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.5 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.6 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (36.1 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl (70.8 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp312-cp312-musllinux_1_2_i686.whl (67.3 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (72.4 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (68.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp312-cp312-macosx_11_0_arm64.whl (36.6 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ndpolator-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl (37.2 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

ndpolator-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl (70.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp311-cp311-musllinux_1_2_i686.whl (66.9 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (67.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp311-cp311-macosx_11_0_arm64.whl (36.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ndpolator-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl (37.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

ndpolator-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl (69.8 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp310-cp310-musllinux_1_2_i686.whl (66.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (67.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp310-cp310-macosx_11_0_arm64.whl (36.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ndpolator-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl (37.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

ndpolator-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl (69.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp39-cp39-musllinux_1_2_i686.whl (66.1 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (66.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp39-cp39-macosx_11_0_arm64.whl (36.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

ndpolator-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl (37.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

ndpolator-1.2.1-cp38-cp38-musllinux_1_2_x86_64.whl (70.0 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp38-cp38-musllinux_1_2_i686.whl (66.3 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ndpolator-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (67.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp38-cp38-macosx_11_0_arm64.whl (36.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

ndpolator-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl (37.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl (69.2 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ x86-64

ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_i686.whl (65.8 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

ndpolator-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.0 kB view details)

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

ndpolator-1.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (66.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ndpolator-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl (37.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: ndpolator-1.2.1.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for ndpolator-1.2.1.tar.gz
Algorithm Hash digest
SHA256 e06a3a3447d6b91a7cd251c7dbda43f9b3b1882d8dd4c679afe2f0be876ebc2d
MD5 6bfffc354f1a7ceb6eae880b5c97de45
BLAKE2b-256 4c8632696e37fda4bfb4febb866684f8d676718d3a86f8e7c6b99905ff822db3

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd86c7af4b39c9468f63ebf097e71a85b730fbf3386ebef732ecfb63854ca30f
MD5 d79dc7c4eb4b3ffab1a0534ccc9f5f25
BLAKE2b-256 49d5a181e48842961a6e832dbea53a13c82c00e2ee2ac72a1f06863eeed7b9aa

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c24b6b835de5e9cabfa36fd8e52d1d3a048ff06479e44e1689de41cc0e5f95dc
MD5 47cc0ac39334efa5b881a557fe1e1727
BLAKE2b-256 2c748484ba132556a440325c8bfa323ad428d3286012f302edf4c443932acf7a

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2a058dc9248266879357b13dde4c19db60820c67c374234b189a48d544f679d
MD5 214f6c31eeecc6a09e4040d8bce119cc
BLAKE2b-256 1ae9f0eaed2c0ba92e12f5191d211f9f07884f7ab5cdacbaccd16989279c1310

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6657636f7522f5071e40eb2556db4abb2fdda2bb4514ca033da52610a90872f9
MD5 58c7560680b7065076e4e89de4064b95
BLAKE2b-256 41523679f05b39ba66d1f321b61f44f240a23fd202459627e664822430f9cc63

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60d77743b70927dc9311dcbded8c24e4a00eca3d82c2f6108f0744d6a0fa5bd6
MD5 03d9b04b7599f769784d7cfdd0837ed6
BLAKE2b-256 ca8d05d9785e1eea4bb73f36c33d8f57b7f10c93108b6f10d93c0089ab3d18ec

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f9dd526f21f1be0c27c1ca50d2b675f466737b84fcf5f5a8d0bb135b09bc6dd4
MD5 f10a81e4eb2d195e5570fe016b23c0d6
BLAKE2b-256 2352a682c4140ff5847727f3f93f75526095de5103f4870ebae1a0ca3b8154d7

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84728b68fa5074b95932f68244ada082c9e6a83e1c2e5206f4d8ecad532d4ac7
MD5 7a78fa4c3d50394a3c256614d4e1c1b9
BLAKE2b-256 ea4c5a6fdb573a753a97545c62a8b5d8317b4ce78fbc1b408101d9b127b82a23

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3511c53fd99283eedc85bed6a9a5bb926db204ad72919bdff215ac9ce80b2b84
MD5 de900d8fe51275c693a7d935d8039fd9
BLAKE2b-256 ea6664e3d78435b629e2e035e350130e8293c2f12ceb909ac773a0129540fe12

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e5780295fe9342f04a418ea319f856a537b0cad927cc2c0c730166bf443624b
MD5 fa1753f9ef23b192add6e7ed63eef29b
BLAKE2b-256 7cb4a3e5253d28caacf9d58c7e975fc09378cc727bf07d246b0eec74971b0398

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b529c35e5847c7ce52aadce616cef6ba8b2c96a4b4398d7bbaa78f322538f814
MD5 52fb422785f3d45a5e8941bd9674ddc3
BLAKE2b-256 f23ba9802a6572e64c0293c11326689b2a610381a97f6b55f9a71482c5ea9772

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c66dbd5d355492f1eab9c54000ad8f5567a79174f670217294f407d96d13f5ea
MD5 bcb2a750e3d750217d40875eb5099de2
BLAKE2b-256 311644d8ba609223c4edfb6ed4e64413b7b5e267ffa412a381be9ac03aecdd08

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6a43657b91a57570e93deb58a88f73c500f4499a6ad7f250cd34d4c93c7e7370
MD5 949c4b719e086a4ab52728b9873dbb4c
BLAKE2b-256 2f0945b20f87481ec6e71747915041819316f98c51e91e699cf0c18510d75e0b

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd4c7ecfad1268e6944f491ba0d9552f55b03d652879cf2fae14b9cbd246a055
MD5 e18e897c5d00dde83b07c4a19f3df3e0
BLAKE2b-256 af9690da046ebaeba8dd4e80c370a186bf3123910d9a0ca7687f60223adb4521

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2d2dbbeddb42e6179388cf650b49e7e3dc6fcfe3be417d0d3216239804f39907
MD5 dbd461b3c4b8d021bc5a4d72f9dd3c63
BLAKE2b-256 cb5f78b5ae4802e4387617e9b0c4385afb4e0972d14a5605146214ce7c0a6cf0

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5afb79017289a23419a5ea44ccf05b136490d37685cd8fcc3d340ad2809f75b9
MD5 99bc01dc1e5a812db7e8613aea6eb080
BLAKE2b-256 9ddd81c4b8aec95552112826ddbc716faec140124ffbaa9461fd5d3ca1858143

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 701025516283b9cc15ad884da231caa582ca8e12c7ce75e7fb9c3a72404e6136
MD5 f0a8b746cf0f0e6d918c5181bb9b8cfa
BLAKE2b-256 c394f4bc67d53cef59055007c3576ac0ecc143ffc2a640bedd2621f2677c0fc7

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 15262ff60da1dd44d16dda1fee30a414d5b8aeca643d8f39435adda50d2ea7b7
MD5 4113ead0d42157cbb1bf4bd4d42e8bc7
BLAKE2b-256 fd7cad7d7e65ad1d5138ef03158ec0d9d40f45713e0170070fb1bb76cff1d345

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74d7cd9114d6a255543164ba4a94f2b8d7dc00ec322bcc22f7c7c934a5b0e014
MD5 73f8ef8a07f02bd27b38cea7ccae0c39
BLAKE2b-256 f86f2e29811b8f984a8a2f8994afc17c76cdd5568d6c14d4aa3bc8fa3251d500

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d1b2c1a8a549864750b11a8197da8870bbd02948a13c970acde8ea5fd80c16fc
MD5 cd79f9f95663e7444edfdded9ba04ddf
BLAKE2b-256 673ef33e37d167d479de60a6b86e54ac18e8057f72edbc4b43adfb751f47d7c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e84e4be033dab2f77f7ff0a9c0e37206256fde40803c61f720a39e014fa6f8ba
MD5 40a04e4d75b79cf4d610546e92b560d1
BLAKE2b-256 c34871123d27dab4c701337c42a419848e211ad2f9fa59cc5a5084ef30f8fe69

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ecffb557145d0220b3caf4891d3bd68b18fda554e26da96ac411de3594d81f07
MD5 60dbe68d6439d3b6a8c300685ffc265f
BLAKE2b-256 89820383508b8f3e554ffea3cf90021a268a335c62cbe3f1e8cc6daedf72a8eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7ac52b6b5e90f072c61e0cb275a7ca6722325c9258e4b6ce19a78b1ab5638d4a
MD5 222c88cc0a64aebc8028be8a446e5d6a
BLAKE2b-256 44452ea8082a012652c3249c6de92083c9e812ee2eeed4efca429e3c1c0ee314

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 eb53791a66be7ebc11ab523598cceaa5000404395c006fe2d1d5d0f30d7a789e
MD5 ac3d2cb1799ed7b3629e4eb3bdb538d2
BLAKE2b-256 280d8137fd735d36ac9aaa98eba81567615a6d8f3c206c60ad5239f46414f82f

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a8aa625c4a9ef3426ea360345736f680b4ad6a9f387b44cc1af33583f4e49a5
MD5 f5ce95167210d1cbd12ac3e12b2dfd6d
BLAKE2b-256 1bd377fe3f56739e0f3cd1fb3881372a554aef2251510bdfa5656477e0e997c5

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a1bd606615b8a088dccdb197ec79c8aa002625768000ce98310354fa7f90f7f3
MD5 9acd6cdf0ac8583d0f332c0647b9c7f6
BLAKE2b-256 4cbe86a2452e510ebb6a656713d6fb63e7eddb6ebd00e80e4f4857436454cc3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc256e2defbe5766b85b059d469dfc2055a238e6f0069c275f9aec813bee3af1
MD5 5ad779476a1c6541e28c6429ab0b046f
BLAKE2b-256 4be00b310c20e65e1c3e266deb02e624e9c72389904fdb4a888672aa41c1ad30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1284af7d4456924fb82dcc1dae566f3267f749417c7f40aee5d099e6f9389456
MD5 a8a706a1aef2b92e206bfe1b31d9c99f
BLAKE2b-256 25e55cc53ccc20aa60292dc27c57101e41e57a7d4fb06dd569fb1ce8336443e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65e4454dfa9a4f31f8e6a880bb4b179ea77fc869966461bd77d90f569c8f2055
MD5 336d809a3c1a69df7b519dcf657bae80
BLAKE2b-256 908de4fd454c6d9ec558d0403f8b7059447beeafdd4e421964da45b3581219e5

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 89d0e38223e40807f245ab6b5afca70d29462e915b9080b74b6390c2857df295
MD5 80d6c997fc102c1062b0d5aaa584d9ca
BLAKE2b-256 8d28e352e3e7c41a1f3e16fcf15b8f1e475dca08b27cef9f36f7fd76b9c30af5

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15d35d20e071df3d8db3bfc6961d533cd85b5daae373046957c3025da82f84eb
MD5 e1eb0e3406054de926d40c366f7d9202
BLAKE2b-256 40205af65917db63a15a3fe7a19dde504fd3e933a4352a715e2309d2ec08246e

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ecb71f8a5acb5e4e0ca8410afa3b054257f055c33a21c5bca94aaf1ef980d3a0
MD5 88e94c43312763299e88e168b3aec6f2
BLAKE2b-256 0ffc7a39e7335318cb4212f7d4afa09582a6ba05d342c856a412381f777a71a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6456bbf0ecd911ef75af14922d09d970803d2fabfd8bf368a98a4ea485e7448c
MD5 7f5fe8822a5ac1cc83899c40a5baf718
BLAKE2b-256 0ef952d9f2855be2fa0932f4872dd1d1407d7f6e9cb8febf0bb394360aa8839f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6806a2f2ad61cfdc0959096aeb7f7a06e773fe6f0115c109b882a102a2e231d7
MD5 d0306ee540d3560ad0844f841b6e0434
BLAKE2b-256 f2bc16b8b6db7677770016355ce573e366ef1a125523781f9e3fee74a4209256

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a3a450f2aa0e84a51fbfb3332c6b3e8ba7e99235785ddfe6f708e007666e60be
MD5 006295a7be2bc444a0c22b43a07d28a3
BLAKE2b-256 e921c6b9d110d6f129fba5d11124fa471f3fe51e274d077390c1717bc668a2a3

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fa108f4fe9338fda666191554bb1db8da9496383d291b4a67d7174a9f83d274b
MD5 a13564d0a0a3677c2e72d5dc8823bd59
BLAKE2b-256 7065c35576b7b00b9fd646816a89b3f57565ebc234920480fc1c659718490638

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f493741688a3a6a7e3549e66965c3f88470eb113b455ae065c3ee537314da169
MD5 36535bcaad968416e32cb6007fdfdc6a
BLAKE2b-256 1c5b67ed0102e4305b48c07db19585965548d40eb6fca89c981dd1aef8ff0900

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c6e80dfd3c0aeda80c29116c803e1468a2326649fd632fe5404cd33a1fb76a01
MD5 b23aaa509067e5c47aa1e7d8996838ae
BLAKE2b-256 b95df9845866ea504db999f94fefb2bf709703588c2b43942ad555d380cad621

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8665c80f7ea30086128ec98bc475c82051bc35e4b87f31269fbdf154918a2341
MD5 35f59a5b0cb9ec4cdf3d99f6ff4717f8
BLAKE2b-256 f1d0f4162e0eecda0315153d510d4345d472e57ce9937e69e4f4ed4d59b6050d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64ea943bc269e85909920408446c504fdbc8c405b73526c24e655d424696670b
MD5 7f10c70ff7c4b848b564af995498e4a4
BLAKE2b-256 f04295bf6f2d34223d024950328be3739019d7933e099fd64b338e11f8d8e4c3

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d16a640df1bff42dcdb681e1eaa92f3b9173822ee8a9fe727a6998ef889fd54d
MD5 874da091d86143a861e0e96d82961665
BLAKE2b-256 ef816d71d5c7f7bedcf42f3b8db699360795f6ab3489c2495ec633494b87740a

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 262615d6d4a1516abb2f6b113fe2d59ee651d5b722d5cebef9507087ca1fb6b1
MD5 4fe8020c7b4557b10affe18a2e2b15d5
BLAKE2b-256 61dc77e122c3b450adb3aa855355a05f1bd79407b1c1e074aaace55fd8165640

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4fd9a1d07f52795ef135ea8e9f9a1d08704c6349f2796698b38b644b4579def
MD5 2fbb3e96ed62d30b8744dbbb39b398e6
BLAKE2b-256 d8e45c99187669f8879945f658e504022b19955ee8b29259b405736db27a3ff8

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 227b6e1166ee0a28f1c8198daae3a6086128acdb8656958567dbd22f15be48f1
MD5 3798904ba4d5e44d828404262be5d702
BLAKE2b-256 bfdd0211ac4fa5cd4dac8115ce852c9ad1202f10311f1b7b0094a833e628f8d1

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0dce168cb67a276f3c9996617b25b17920d9be96a2bbcafbd91d02bce8221551
MD5 50d493dd99a90ddf3b8574fc54f6f4c1
BLAKE2b-256 f5778a2b2c226eb739d316a7caeb80e9ae3afb20f63043736bfc1aef70944af6

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3621adb8f3537c5045af2e40aa0472b025090f96a936ad700da39e70b30468b8
MD5 b7f4558d65bead7873e5fbb7fbf2725d
BLAKE2b-256 16e86a63ccb7c274497f2b14bea839cc86145af5d72bc7dadfe3a90021c89612

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a2dc405de68d2a896a9b687d8a18f83df32386b49c2cb22f512d70d36992fd82
MD5 7aacec98c80754f7a0259d6fead209ab
BLAKE2b-256 b441e4858fc34f0cee05c55fd5fa83975f597e7524310d35834934738d91b872

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 234aa7ef21ab28cdba1ff48072add0d14bd4594de923e716f9ea6386cb1d2ed5
MD5 bd91149ff7a3d26e72970a4c43bd458b
BLAKE2b-256 1d695441dcd255c1b4b1ef7d28cc52f3563aca01c2d2c3068374edc8d659ea63

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a076bc8efdeb7a85920f2377d997b9d57f2538032c2f96e0d096bdf3ffa9779
MD5 81f73e0014770d23f2309d297142824a
BLAKE2b-256 1368ea27c63490385390f5c652dd921b52c45e583baf044e900372d4fd52ab26

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c5c1a844145fa0af9656d4f287cd82ca697aece5488ae40b70da70c2b534ac0
MD5 1d2a8a4a141fc46a6319133e1c7a66fd
BLAKE2b-256 454bca3d1c43c8eb52e63772bf6314bae31b5326064a97f3f882b456d27e7f20

See more details on using hashes here.

File details

Details for the file ndpolator-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4994ef66650754aefe937648385e83ff313c431e4f0c5660e0b166a2330b9b8d
MD5 24d88a3a5f88d02b93962fbf91636164
BLAKE2b-256 add01b7602c3f984204c99525a7368adbe7e8cded0c2aebd18f54d8bfc249aec

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page