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.

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.tar.gz (50.7 kB view details)

Uploaded Source

Built Distributions

ndpolator-1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.0 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.1 kB view details)

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

ndpolator-1.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl (35.6 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (36.0 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.0 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.0 kB view details)

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

ndpolator-1.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl (35.6 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (36.0 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.0 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.1 kB view details)

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

ndpolator-1.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl (35.6 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

ndpolator-1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (36.0 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.3 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ndpolator-1.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (36.3 kB view details)

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

ndpolator-1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (35.9 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

ndpolator-1.2-cp312-cp312-musllinux_1_2_x86_64.whl (70.0 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

ndpolator-1.2-cp312-cp312-musllinux_1_2_i686.whl (66.6 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

ndpolator-1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ndpolator-1.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (66.9 kB view details)

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

ndpolator-1.2-cp312-cp312-macosx_11_0_arm64.whl (36.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ndpolator-1.2-cp312-cp312-macosx_10_9_x86_64.whl (36.9 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

ndpolator-1.2-cp311-cp311-musllinux_1_2_x86_64.whl (69.5 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

ndpolator-1.2-cp311-cp311-musllinux_1_2_i686.whl (66.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

ndpolator-1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (71.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ndpolator-1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (66.4 kB view details)

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

ndpolator-1.2-cp311-cp311-macosx_11_0_arm64.whl (36.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ndpolator-1.2-cp311-cp311-macosx_10_9_x86_64.whl (36.9 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

ndpolator-1.2-cp310-cp310-musllinux_1_2_x86_64.whl (69.1 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

ndpolator-1.2-cp310-cp310-musllinux_1_2_i686.whl (65.7 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

ndpolator-1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (70.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ndpolator-1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (66.0 kB view details)

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

ndpolator-1.2-cp310-cp310-macosx_11_0_arm64.whl (36.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ndpolator-1.2-cp310-cp310-macosx_10_9_x86_64.whl (36.9 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

ndpolator-1.2-cp39-cp39-musllinux_1_2_x86_64.whl (68.9 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

ndpolator-1.2-cp39-cp39-musllinux_1_2_i686.whl (65.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

ndpolator-1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (70.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ndpolator-1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (65.8 kB view details)

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

ndpolator-1.2-cp39-cp39-macosx_11_0_arm64.whl (36.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

ndpolator-1.2-cp39-cp39-macosx_10_9_x86_64.whl (36.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

ndpolator-1.2-cp38-cp38-musllinux_1_2_x86_64.whl (69.2 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

ndpolator-1.2-cp38-cp38-musllinux_1_2_i686.whl (65.7 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

ndpolator-1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (70.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ndpolator-1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (65.8 kB view details)

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

ndpolator-1.2-cp38-cp38-macosx_11_0_arm64.whl (36.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

ndpolator-1.2-cp38-cp38-macosx_10_9_x86_64.whl (36.9 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

ndpolator-1.2-cp37-cp37m-musllinux_1_2_x86_64.whl (68.6 kB view details)

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

ndpolator-1.2-cp37-cp37m-musllinux_1_2_i686.whl (65.2 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

ndpolator-1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (69.6 kB view details)

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

ndpolator-1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (65.0 kB view details)

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

ndpolator-1.2-cp37-cp37m-macosx_10_9_x86_64.whl (36.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: ndpolator-1.2.tar.gz
  • Upload date:
  • Size: 50.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for ndpolator-1.2.tar.gz
Algorithm Hash digest
SHA256 b732f21fa2d157193a689278afafe9e8f8532ae2795ecd713a0234f97addc987
MD5 740dc3db5bf3ace71e6f372cc8317791
BLAKE2b-256 4ec0318431d53fe36918e79b7924ea89652f873f045e18574c708c6dd1a2b7c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83cda1d5ecdd5404565253c9b9383d776a886345bba0db68958080b775f3498b
MD5 0a4f3616927c343bd2cf7395b1478b36
BLAKE2b-256 e76e183f00e539347be66be23a3a76c59e5e1b382abfae3bdf6d6478223e1f2f

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-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-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ff9dfa52416157c204de3345a39937411f09b9d0d40bf74347a0b2762cd1f2cc
MD5 cba2721340372c99f23b5a37cd17bcc0
BLAKE2b-256 0ca0afa795fc03bd48e6ac1961d5dcccf9812ddf3a50d754c228d179503b6425

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9caeb7e2a3ebcd51b7b47e709b5ac77c8245f5a17d3c50d0549f7a622bec1572
MD5 1f6373a1682d3ad835c2bd6eb633111d
BLAKE2b-256 a5378db37c63f72d21edad8d0eb16d40511d905ef12a01542a3257a33cefcabd

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 46385f811985b58db99005983a643975743d59bb28dcfdeb5edb946d7f65e0b8
MD5 a7bdf9097f7d4d00badf41aac440a777
BLAKE2b-256 18590efc8aed9fe55a5ccd405adeb6ada2119fa1ee5502efe95e8c776023e350

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c46747c28d3371b84a29d6209f554d3954a831c9a0f2f5c7b83a9804377e2ffc
MD5 c83b140d11a3de0ceedddf31b4ee0586
BLAKE2b-256 bffdbd19bc590667f0ab8fc486ffb81ca2a841649cc70d726075e26b743556ef

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-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-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ff5a69b51685c2d89576400a4c7c8b12675d7c11f2efc74521bd69b32f3a4918
MD5 a8868160e78e4b17e1fdcd8c99b318e9
BLAKE2b-256 0707d4954a26c32b5f861d6302e60e0fcbbf0f4173f7bdb7e8ebb2374b63e1d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b0d91c05d13ba17daa411359729ec9a3b99af5b64a6ae7511ddbb2a085b2a40
MD5 9f8396da0c41f13323a9aaacda362508
BLAKE2b-256 eb8311f86f0022698d4a712b84511447c4bcf3200c168c4595d85b2f60e3ab76

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndpolator-1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bf62d570ff735b07992cd23d89bfbd3e37c3787e476f08dd1a0f07ce25ff5f22
MD5 5d57e4e5860ad1e192b09bc56ca8f279
BLAKE2b-256 b43d1c40fbacde7a84199e2d2212b88a6574fba630ee3ef769f361a08f8155c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ddf7c4754c0e6a420a4241e4a9dd7d6809c2f1a90065f9474af27f520ab8db5e
MD5 c4de8ea7b3dfc820f305a4a11c2c91be
BLAKE2b-256 a8fe770264b4bc8e52f92b50efdbe276261dd0dae5633b228d99ed4b015226b0

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-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-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 33fd69384916a3d0d0c71c47e7c945053333cab7c0e5376137721dd3b18f4cc8
MD5 98fc11b9d5a7b410bca2a07d7e6d651c
BLAKE2b-256 44aef96cced216224a0f49168de55404bd135a615fdee08eb74c7e31469d1520

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c60eba31dbd70364fa686c685fba808a7eae4dbe6f2c790e13df4fd2e4b68f0
MD5 7b0e079553a211add7a796c356972e8d
BLAKE2b-256 0d9caead19054a14f3d14b579b65fdfe337c12149f51c369b56d13cace8ea6d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 02f7ca4441477a13c0cb8c84efbac0b260e1b6ef0141e417ab32fbdcd623894c
MD5 8333def2c7619c120bc5317a770bbfdd
BLAKE2b-256 2ff67348172f9fabf75666084b06d4170fb4cbbdf83760e0b626a381fbfb71a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6838af2e62bcfabb8c5c382a87523ed6faab80cfcfa62ae94e1ebb76d4b20b6
MD5 8d37836325b68a70890d91594b7400dd
BLAKE2b-256 e219cd431458df40721b1b65a91607bf3fb46447bc4486edd6d9f972f39d536a

See more details on using hashes here.

File details

Details for the file ndpolator-1.2-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-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 062df24fd4546c43847f60904e50e85032b1db2679b94755ecb54dd084f8078f
MD5 b4960725051f2dc84559e60f84a69ef8
BLAKE2b-256 8599104a455f746aecefc0a2b89f3b80a89df34592512d820313986c0e4c4d70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 160b2c270bab2cad0a0992f1fa46b6af423e247c0bd92e4f19c00cdd7c15fb61
MD5 4b1a37638af94cfb205acb3c7d78118b
BLAKE2b-256 94888f79b4972c62029ff95b4353f99a081762f3153ced55ff59b79b43f78ca2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 47311d38ff9c6f37792f5ccb184c01399181ecc3fcbbf5ee1d34eee5c63a5abc
MD5 e1882e8a197240e64de86bdddaefef2f
BLAKE2b-256 acaed998581d18788f3130a7ff81238335aa108facc82a7d9646a3f444472c96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cb8e0d7933135e395abb72cd4a58ca90b63452d5c942f0695a5d48df0dfdc36e
MD5 3664ebab1d76a935fa02c8e6e132d310
BLAKE2b-256 8d76fa244a9437a5fa2594f89a7d6b28d967fd1a5106c1f6320b2fd3840e2ea7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a40015a560554294c72eb1d818ebeb2679536a0cd3cad79401e302bd9420a2d5
MD5 8c954f3a8fdc7b7d1eef35c062bfba11
BLAKE2b-256 8de3590a1e0df8ffbf6f4bd3b0358dfd5722d4faea8f1a43266d1352b9ca7fa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 210d6143b64295e5f541672159062af468a633e2a12fd8afd53422cf2b94628a
MD5 41ddfd91171110474faece512bd7d110
BLAKE2b-256 d7efe823bdd9cb8e16245f149c4b8586da4af8f017493f18357d6f72390dd388

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfb313f2b94a6fcb6b376c22eb3f0e061ffdc1a35a6deefb83b149c531f74e3a
MD5 53a0771c3dcb5fe0ddb687072183d528
BLAKE2b-256 3618a55ea54e5fef794bc90bfcafd1c812b0889107c9d8b76b37dc49d41ab054

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 963c1a2f2b05e5f13078879a4c9ea0dfa9e717665a5b30d4ffe8b5021155955c
MD5 713b56024973184a936623493e0cf7d2
BLAKE2b-256 754af83b02fa5e177f146cc427718db52588e7f0fa06d7f541aa074887cfbd1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 795c1bef2ee7d6eb7b4691ca8f1941d02e874a6c55a49baf552a71fa7ad9d4ca
MD5 8ad366ce1e2ceeb4d84adefd46c01b02
BLAKE2b-256 33f5b334c3f0bea2c75fac9a51e4167eeb26de335d05339ff111509c4a2efaaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 febb7533f4e9b0fe9fd4cb8beddc295af58c71402f2286dec3e633e43a00da53
MD5 d19e1345e4719492bf30b998bf14d873
BLAKE2b-256 ac6c254beb8fb9c635ebb82fefdad3ace3ff0f81ad0973c853ffd7b41a4a9d46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 86c73686c8fcb08778a486d1b1593c411a29c02ae8905bc621cce8fd53dfbdef
MD5 578c0a451efc13582a9f7397f965b62d
BLAKE2b-256 7bc13063ef5c3cc595bba3be201ff7131c3fedc740aca9daea21bd1c9d4e7d2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 848474a5f0eb8db0d488f52728c0881501eb6c06b99f2755a7acec698d25f4a6
MD5 d62229d5b6612d27db494a24286e7573
BLAKE2b-256 f26b51e6f8ab72abda15eab8ede9e863c7903f0378dbd4759d489099148aae51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d15ad26616590682ee9d081d83ba10fc9707f8e6c4394d099f0bd8e16e89168
MD5 7a40c52d490d238c60d1a993fe5a20e6
BLAKE2b-256 da08f8e6559d0c38e09d9ae23fce0609ebacc5a5ec5243fd29b37cf28b667cfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ade1a360775cad8f2a2eb9e488c2ba9ef1ffa9d0d8b3d370d2f9677d8bdadc92
MD5 2dbfd9a692c6e5bc332d32c0f4d181f2
BLAKE2b-256 fde5ed2e8bc5be50cffec379d40ef86b58e09960a7a21ddf9e9bce844816ae1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 57cc9dd01ac4fca4cdae3f5d1df43d0db8e40eb146ed0a85a7fe42ff6a204ff3
MD5 a525b4d0617c8c0ab58d70e5f7aee82e
BLAKE2b-256 1da9d365773c8c520070b240f9d7862a93775aee61615362ffa57ed0c19a9182

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5f1e724ba612dfacfdd92c61daa2913df83f6e16fd65b7915238c4704d4ebe44
MD5 e3c56984274f38d9ff25dd25cf0119c8
BLAKE2b-256 0bba6c64436379b75946e38c8e50f1541dec57c81e619fefe0923f95c6f4e6e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64696a3357cba6cb4506e1be69ea54cd9e59fd63e79e78162ea7fb69ab2c5789
MD5 77a2122fe8bbc4591f3f7515be23a3bf
BLAKE2b-256 a2969d890f4ba4d414e112977e7979262254ee408efd438d2140d57ccddf5959

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 df695c596cad991f5be3e4773521dc85306c4020a1b4bae361a026a34358f0e0
MD5 3eb88314962d817a6462ea1e4a315095
BLAKE2b-256 520dc92f47f5f59052667e3ddfe35e776e27fe06e19bc69cab54e902a041adc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e830fb5fc63841c35571f090d2d392845c9b56f761f8f4be010143ed062d4a7
MD5 459b2f9a54d246f2b31a443feeeb5ac0
BLAKE2b-256 4ffbddde2b173d418dcc5089de5e6d4b45270f672c4835952033ab7d902e097f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a47491ee2c54bc65aeba01a6e1f889ced9d7d9d0a1a5eae364c7b5fb1b82e058
MD5 1dfb2766fbbd508832bb9b1e18fa875e
BLAKE2b-256 aade301dfc06652ddd11ae6b79bac19289cef0327425d9dc66106f4f28736bad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e2c3f54603b80f44e25d6d6cc2c004923cb69002e5782cd3178ee06445740bb2
MD5 0f547057dec42b307eac30905b891310
BLAKE2b-256 6d45e558220a4fcf0b7ca428c3319fb0511bd7268c7c3d0fa535f0ded39d24be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 99b16790d8b091e28ef83b9dea5e1a3600d2c9620620255dd4fdfdc5a28c1e00
MD5 79d521c97a8ad5c984015ee213ef01d6
BLAKE2b-256 9e71e62f10a1bd84580c9d29e26f35155dc567069a3994c1eabf89be60258835

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e943b181978cd581b7a11abfbf6cbfecd32eb317c4fe711019ae80629c17bd0
MD5 af84505617fd8add90a4beb3b4940c1e
BLAKE2b-256 8bd9277a80514db2aa69bdbbef1fbc8d35c2e81970621425802ffe7f3c307f39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8614e3b6ed5e0ae062fab83500e1a8491ae10617c7be8ee68495f603647ccc51
MD5 4ddeef297b151809400cddb4868d10ca
BLAKE2b-256 2ff4d77b3cca23e063dec73c70fc1c0ce175b385944fe377f92ba454924cc6ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5de6d9cb51030c12990fd3042285307c5e0492571149ae1f86996c834df2b518
MD5 c1efee9b403f860beb3ec37a26450f8b
BLAKE2b-256 44cafde7143a0867fdb81b29cbbf3a6865f28906fdf3409f305b2d74289369ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3ce160b83b829bf7ca3222f3aba39d3e9a0d73321d89627245038f41400a4295
MD5 bd8c396dd666d35b64dec0154da403dd
BLAKE2b-256 e2e8988c71bcfc8afe3014c17795200e21da4f5e535eb607726ad91da0a9adc5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7f4722a4312a2a4d1acef8f586fa79bc3be956d5297bff90bd1a00091463dd4
MD5 fc1c35c6a5c7b832f868d9b93c651375
BLAKE2b-256 ad71cf7270863dd19d5ebb88c1710debd8d0072352bb558df3e6741f6da383d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ea41202a75210d2e02faa08f73a2e55fad140235d1c7520ad71bfbb5b3ba052a
MD5 55052280d6feb22e54a024d34ed40f45
BLAKE2b-256 f1f3e682a57850c74ebfd194fe73cd309f46869b12e9491b78b3a103e4971d22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d750fa65f459cdb2e272dff4af5601211ec13454e22b3de7d35af83f9ab971b9
MD5 5a2373191cc2655b9a3f34e40b2a58e4
BLAKE2b-256 4af14dda97c6a31ed2e647f41e8a18bac2b7a82adde9b770740ee139b29470c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2d92c691e027789e32e3bab0618878b3fbba96b5e2a2a5e8ffa8fbf0c9c8cec2
MD5 5d2101663d89aa86ec8187bac72697a6
BLAKE2b-256 86a5d6ac52c276d5087732652f8e2fc6da46999b976d3c24ac2fe5560b9a7a4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f455d60d3b6acc2d25a8ba499e4ba17ddb17f3f2298289ff821b9e623d912f30
MD5 65a23530352aa6481c370dc32d5f121c
BLAKE2b-256 70469347b633d250cc3bd3f1773c019fbd89c19b771e7c13210f8f1af2407d2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e1195641122386c1de577daf45fed3553943fd671fa381ad83b6fd7357a40c8f
MD5 0b1cc22dc1dfe6e919dcaaf9a7f244e6
BLAKE2b-256 878274b70803b1da440f22e1ba9d373aa067033316eac480649bc0066e98cb86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1cb65f4a274d1261ef1207a0d493a2512ff62f449de15b267212e1894c1060d6
MD5 89575c5269f1b2aad0784a9fdd838cac
BLAKE2b-256 65e14517eeadf3a182bd0ccfb4d2525ae047b196c4957362e98ab83d77893a21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4df056f1c1f58f30fcd978e5d7a0536607742f5eb7b264775e45472684c22314
MD5 3639d4ef1b09da995dd039734bb0e910
BLAKE2b-256 b4008903e07489fa89374059d7782e66cc47a5148d64b9f32196f9bce5c62cf1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79c4cd1ce661a9c27a32076b840aa481715fcc708c98c1afb7ca45a495a0f8c6
MD5 1916eaaef5263b37e5f7150a4cc0cfbe
BLAKE2b-256 a86af58ca59c6ad846fe7df38dd0891c0e29f30ccdb0cbaffd2ec97dc6e0b422

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3d9a451bb7df7694c835ef7d7322c3edd732340d63e86433b0e4027156b66b17
MD5 6b30308ebf3bb416c7fd420c332965a1
BLAKE2b-256 f1ca0cca0565c0d51befdccb2d3e5c469c86e478aab32acfd25e3b8fcb4d6532

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ndpolator-1.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0937a8c41fd1f0ce9d4d8d1d2d09b1c6aaedb6c4f1b342b63455fb8c96e949df
MD5 4590499ec2128f468dfa8a87fed5ca6d
BLAKE2b-256 e26b89c2b9028e750de730aafe63cb6329522eea56811fe3bf7c226678a3d1d1

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