Name | ndsplines JSON |
Version |
0.2.0
JSON |
| download |
home_page | None |
Summary | Multi-dimensional splines |
upload_time | 2024-08-21 22:06:28 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | BSD 3-Clause License Copyright (c) 2019, Benjamin Margolis and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ndsplines includes modified source code from the SciPy library. These are listed below with their original license: Files: _bspl.pyx, _bspl.h License: 3-clause BSD Copyright (c) 2001, 2002 Enthought, Inc. All rights reserved. Copyright (c) 2003-2019 SciPy Developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. c. Neither the name of Enthought nor the names of the SciPy Developers may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
=========
ndsplines
=========
.. image:: https://img.shields.io/pypi/v/ndsplines.svg
:alt: PyPI Package latest release
:target: https://pypi.python.org/pypi/ndsplines
.. image:: https://github.com/kb-press/ndsplines/actions/workflows/test.yml/badge.svg
:target: https://github.com/kb-press/ndsplines/ations/workflows/test.yml
:alt: GitHub Actions Build
.. image:: https://readthedocs.org/projects/ndsplines/badge/?version=latest
:target: https://ndsplines.readthedocs.io/en/latest/?badge=latest
:alt: Documentation status
.. image:: https://joss.theoj.org/papers/10.21105/joss.01745/status.svg
:target: https://doi.org/10.21105/joss.01745
:alt: JOSS DOI
.. image:: https://zenodo.org/badge/172368121.svg
:target: https://zenodo.org/badge/latestdoi/172368121
:alt: Zenodo DOI
This is a Python package for multivariate B-splines with performant NumPy and C
(via Cython) implementations. For a mathematical overview of tensor product
B-splines, see the |Splines| page of the documentation.
The primary goal of this package is to provide a unified API for tensor product
splines of arbitrary input and output dimension. For a list of related packages
see the |Comparisons| page.
.. |Splines| replace:: `Splines`_
.. _Splines: https://ndsplines.readthedocs.io/en/latest/math.html
.. |Comparisons| replace:: `Comparisons`_
.. _Comparisons: https://ndsplines.readthedocs.io/en/latest/compare.html
Installation
------------
``ndsplines`` is available on PyPI as well as conda-forge.
pip
^^^
Install ``ndsplines`` with pip::
$ pip install ndsplines
Wheels are provided for a range of Python versions and platforms, so no
compilation is required to get the better-performing Cython-based implementation
in many cases.
If no matching wheel is found, pip will install build dependencies and attempt
to compile the Cython-based extension module. If this is not desired, set the
environment variable ``NDSPLINES_NUMPY_ONLY=1``, e.g.::
$ NDSPLINES_NUMPY_ONLY=1 pip install ndsplines
conda
^^^^^
Install ``ndsplines`` with conda::
$ conda install -c conda-forge ndsplines
Usage
-----
The easiest way to use ``ndsplines`` is to use one of the ``make_*``
functions: ``make_interp_spline``, ``make_interp_spline_from_tidy``, or
``make_lsq_spline``, which return an ``NDSpline`` object which can be used to
evaluate the spline. For example, suppose we have data over a two-dimensional
mesh.
.. code:: python
import ndsplines
import numpy as np
# generate grid of independent variables
x = np.array([-1, -7/8, -3/4, -1/2, -1/4, -1/8, 0, 1/8, 1/4, 1/2, 3/4, 7/8, 1])*np.pi
y = np.array([-1, -1/2, 0, 1/2, 1])
meshx, meshy = np.meshgrid(x, y, indexing='ij')
gridxy = np.stack((meshx, meshy), axis=-1)
# evaluate a function to interpolate over input grid
meshf = np.sin(meshx) * (meshy-3/8)**2 + 2
We can then use ``make_interp_spline`` to create an interpolating spline and
evaluate it over a denser mesh.
.. code:: python
# create the interpolating spline
interp = ndsplines.make_interp_spline(gridxy, meshf)
# generate denser grid of independent variables to interpolate
sparse_dense = 2**7
xx = np.concatenate([np.linspace(x[i], x[i+1], sparse_dense) for i in range(x.size-1)])
yy = np.concatenate([np.linspace(y[i], y[i+1], sparse_dense) for i in range(y.size-1)])
gridxxyy = np.stack(np.meshgrid(xx, yy, indexing='ij'), axis=-1)
# evaluate spline over denser grid
meshff = interp(gridxxyy)
Generally, we construct data so that the first ``ndim`` axes index the
independent variables and the remaining axes index output. This is
a generalization of using rows to index time and columns to index output
variables for time-series data.
We can also create an interpolating spline from a `tidy data`_ format:
.. code:: python
tidy_data = np.dstack((gridxy, meshf)).reshape((-1,3))
tidy_interp = ndsplines.make_interp_spline_from_tidy(
tidy_data,
[0,1], # columns to use as independent variable data
[2] # columns to use as dependent variable data
)
print("\nCoefficients all same?",
np.all(tidy_interp.coefficients == interp.coefficients))
print("Knots all same?",
np.all([np.all(k0 == k1) for k0, k1 in zip(tidy_interp.knots, interp.knots)]))
Note however, that the tidy dataset must be over a structured rectangular grid
equivalent to the N-dimensional tensor product representation. Also note that
Pandas dataframes can be used, in which case lists of column names can be used
instead of lists of column indices.
To see examples for creating least-squares regression splines
with ``make_lsq_spline``, see the |1D example| and |2D example|.
Derivatives of constructed splines can be evaluated in two ways: (1) by using
the ``nus`` parameter while calling the interpolator or (2) by creating a new spline
with the ``derivative`` method. In this codeblock, we show both ways of
evaluating derivatives in each direction.
.. code:: python
# two ways to evaluate derivatives x-direction: create a derivative spline or call with nus:
deriv_interp = interp.derivative(0)
deriv1 = deriv_interp(gridxxy)
deriv2 = interp(gridxy, nus=np.array([1,0]))
# two ways to evaluate derivative - y direction
deriv_interp = interp.derivative(1)
deriv1 = deriv_interp(gridxy)
deriv2 = interp(gridxxyy, nus=np.array([0,1]))
The ``NDSpline`` class also has an ``antiderivative`` method for creating a
spline representative of the anti-derivative in the specified direction.
.. code:: python
# Calculus demonstration
interp1 = deriv_interp.antiderivative(0)
coeff_diff = interp1.coefficients - interp.coefficients
print("\nAntiderivative of derivative:\n","Coefficients differ by constant?",
np.allclose(interp1.coefficients+2.0, interp.coefficients))
print("Knots all same?",
np.all([np.all(k0 == k1) for k0, k1 in zip(interp1.knots, interp.knots)]))
antideriv_interp = interp.antiderivative(0)
interp2 = antideriv_interp.derivative(0)
print("\nDerivative of antiderivative:\n","Coefficients the same?",
np.allclose(interp2.coefficients, interp.coefficients))
print("Knots all same?",
np.all([np.all(k0 == k1) for k0, k1 in zip(interp2.knots, interp.knots)]))
.. _tidy data: https://www.jstatsoft.org/article/view/v059i10
.. |1D example| replace:: `1D example`_
.. _1D example: https://ndsplines.readthedocs.io/en/latest/auto_examples/1d-lsq.html
.. |2D example| replace:: `2D example`_
.. _2D example: https://ndsplines.readthedocs.io/en/latest/auto_examples/2d-lsq.html
Contributing
------------
Please feel free to share any thoughts or opinions about the design and
implementation of this software by `opening an issue on GitHub
<https://github.com/kb-press/ndsplines/issues/new>`_. Constructive feedback is
welcomed and appreciated.
Bug fix pull requests are always welcome. For feature additions, breaking
changes, etc. check if there is an open issue discussing the change and
reference it in the pull request. If there isn't one, it is recommended to open
one with your rationale for the change before spending significant time
preparing the pull request.
Ideally, new/changed functionality should come with tests and documentation. If
you are new to contributing, it is perfectly fine to open a work-in-progress
pull request and have it iteratively reviewed.
Testing
-------
To test, install the package with the ``test`` extras and use ``pytest``::
$ pip install .[test]
$ pytest
Documentation
-------------
Documentation is based on Sphinx and built and served by Read the Docs. To
build locally, install the ``docs`` requirements::
$ pip install .[docs]
$ cd docs
$ make html
Raw data
{
"_id": null,
"home_page": null,
"name": "ndsplines",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Kenneth Lyons <ixjlyons@gmail.com>",
"keywords": null,
"author": null,
"author_email": "Benjamin Margolis <ben@sixpearls.com>",
"download_url": "https://files.pythonhosted.org/packages/72/51/34a5c5ecba099f43af33d9fe69fa1915fd48742ce34b54e840cf8af67919/ndsplines-0.2.0.tar.gz",
"platform": null,
"description": "=========\nndsplines\n=========\n\n.. image:: https://img.shields.io/pypi/v/ndsplines.svg\n :alt: PyPI Package latest release\n :target: https://pypi.python.org/pypi/ndsplines\n\n.. image:: https://github.com/kb-press/ndsplines/actions/workflows/test.yml/badge.svg\n :target: https://github.com/kb-press/ndsplines/ations/workflows/test.yml\n :alt: GitHub Actions Build\n\n.. image:: https://readthedocs.org/projects/ndsplines/badge/?version=latest\n :target: https://ndsplines.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation status\n\n.. image:: https://joss.theoj.org/papers/10.21105/joss.01745/status.svg\n :target: https://doi.org/10.21105/joss.01745\n :alt: JOSS DOI\n\n.. image:: https://zenodo.org/badge/172368121.svg\n :target: https://zenodo.org/badge/latestdoi/172368121\n :alt: Zenodo DOI\n\nThis is a Python package for multivariate B-splines with performant NumPy and C\n(via Cython) implementations. For a mathematical overview of tensor product\nB-splines, see the |Splines| page of the documentation.\n\nThe primary goal of this package is to provide a unified API for tensor product\nsplines of arbitrary input and output dimension. For a list of related packages\nsee the |Comparisons| page.\n\n.. |Splines| replace:: `Splines`_\n.. _Splines: https://ndsplines.readthedocs.io/en/latest/math.html\n\n.. |Comparisons| replace:: `Comparisons`_\n.. _Comparisons: https://ndsplines.readthedocs.io/en/latest/compare.html\n\nInstallation\n------------\n\n``ndsplines`` is available on PyPI as well as conda-forge.\n\npip\n^^^\n\nInstall ``ndsplines`` with pip::\n\n $ pip install ndsplines\n\nWheels are provided for a range of Python versions and platforms, so no\ncompilation is required to get the better-performing Cython-based implementation\nin many cases.\n\nIf no matching wheel is found, pip will install build dependencies and attempt\nto compile the Cython-based extension module. If this is not desired, set the\nenvironment variable ``NDSPLINES_NUMPY_ONLY=1``, e.g.::\n\n $ NDSPLINES_NUMPY_ONLY=1 pip install ndsplines\n\nconda\n^^^^^\n\nInstall ``ndsplines`` with conda::\n\n $ conda install -c conda-forge ndsplines\n\nUsage\n-----\n\nThe easiest way to use ``ndsplines`` is to use one of the ``make_*``\nfunctions: ``make_interp_spline``, ``make_interp_spline_from_tidy``, or\n``make_lsq_spline``, which return an ``NDSpline`` object which can be used to\nevaluate the spline. For example, suppose we have data over a two-dimensional\nmesh.\n\n.. code:: python\n\n import ndsplines\n import numpy as np\n\n # generate grid of independent variables\n x = np.array([-1, -7/8, -3/4, -1/2, -1/4, -1/8, 0, 1/8, 1/4, 1/2, 3/4, 7/8, 1])*np.pi\n y = np.array([-1, -1/2, 0, 1/2, 1])\n meshx, meshy = np.meshgrid(x, y, indexing='ij')\n gridxy = np.stack((meshx, meshy), axis=-1)\n\n # evaluate a function to interpolate over input grid\n meshf = np.sin(meshx) * (meshy-3/8)**2 + 2\n\n\nWe can then use ``make_interp_spline`` to create an interpolating spline and\nevaluate it over a denser mesh.\n\n.. code:: python\n\n # create the interpolating spline\n interp = ndsplines.make_interp_spline(gridxy, meshf)\n\n # generate denser grid of independent variables to interpolate\n sparse_dense = 2**7\n xx = np.concatenate([np.linspace(x[i], x[i+1], sparse_dense) for i in range(x.size-1)])\n yy = np.concatenate([np.linspace(y[i], y[i+1], sparse_dense) for i in range(y.size-1)])\n gridxxyy = np.stack(np.meshgrid(xx, yy, indexing='ij'), axis=-1)\n\n # evaluate spline over denser grid\n meshff = interp(gridxxyy)\n\n\nGenerally, we construct data so that the first ``ndim`` axes index the\nindependent variables and the remaining axes index output. This is\na generalization of using rows to index time and columns to index output\nvariables for time-series data.\n\nWe can also create an interpolating spline from a `tidy data`_ format:\n\n.. code:: python\n\n tidy_data = np.dstack((gridxy, meshf)).reshape((-1,3))\n tidy_interp = ndsplines.make_interp_spline_from_tidy(\n tidy_data,\n [0,1], # columns to use as independent variable data\n [2] # columns to use as dependent variable data\n )\n\n print(\"\\nCoefficients all same?\",\n np.all(tidy_interp.coefficients == interp.coefficients))\n print(\"Knots all same?\",\n np.all([np.all(k0 == k1) for k0, k1 in zip(tidy_interp.knots, interp.knots)]))\n\nNote however, that the tidy dataset must be over a structured rectangular grid\nequivalent to the N-dimensional tensor product representation. Also note that\nPandas dataframes can be used, in which case lists of column names can be used\ninstead of lists of column indices.\n\nTo see examples for creating least-squares regression splines\nwith ``make_lsq_spline``, see the |1D example| and |2D example|.\n\nDerivatives of constructed splines can be evaluated in two ways: (1) by using\nthe ``nus`` parameter while calling the interpolator or (2) by creating a new spline\nwith the ``derivative`` method. In this codeblock, we show both ways of\nevaluating derivatives in each direction.\n\n.. code:: python\n\n # two ways to evaluate derivatives x-direction: create a derivative spline or call with nus:\n deriv_interp = interp.derivative(0)\n deriv1 = deriv_interp(gridxxy)\n deriv2 = interp(gridxy, nus=np.array([1,0]))\n\n # two ways to evaluate derivative - y direction\n deriv_interp = interp.derivative(1)\n deriv1 = deriv_interp(gridxy)\n deriv2 = interp(gridxxyy, nus=np.array([0,1]))\n\nThe ``NDSpline`` class also has an ``antiderivative`` method for creating a\nspline representative of the anti-derivative in the specified direction.\n\n.. code:: python\n\n # Calculus demonstration\n interp1 = deriv_interp.antiderivative(0)\n coeff_diff = interp1.coefficients - interp.coefficients\n print(\"\\nAntiderivative of derivative:\\n\",\"Coefficients differ by constant?\",\n np.allclose(interp1.coefficients+2.0, interp.coefficients))\n print(\"Knots all same?\",\n np.all([np.all(k0 == k1) for k0, k1 in zip(interp1.knots, interp.knots)]))\n\n antideriv_interp = interp.antiderivative(0)\n interp2 = antideriv_interp.derivative(0)\n print(\"\\nDerivative of antiderivative:\\n\",\"Coefficients the same?\",\n np.allclose(interp2.coefficients, interp.coefficients))\n print(\"Knots all same?\",\n np.all([np.all(k0 == k1) for k0, k1 in zip(interp2.knots, interp.knots)]))\n\n.. _tidy data: https://www.jstatsoft.org/article/view/v059i10\n\n.. |1D example| replace:: `1D example`_\n.. _1D example: https://ndsplines.readthedocs.io/en/latest/auto_examples/1d-lsq.html\n\n.. |2D example| replace:: `2D example`_\n.. _2D example: https://ndsplines.readthedocs.io/en/latest/auto_examples/2d-lsq.html\n\nContributing\n------------\n\nPlease feel free to share any thoughts or opinions about the design and\nimplementation of this software by `opening an issue on GitHub\n<https://github.com/kb-press/ndsplines/issues/new>`_. Constructive feedback is\nwelcomed and appreciated.\n\nBug fix pull requests are always welcome. For feature additions, breaking\nchanges, etc. check if there is an open issue discussing the change and\nreference it in the pull request. If there isn't one, it is recommended to open\none with your rationale for the change before spending significant time\npreparing the pull request.\n\nIdeally, new/changed functionality should come with tests and documentation. If\nyou are new to contributing, it is perfectly fine to open a work-in-progress\npull request and have it iteratively reviewed.\n\nTesting\n-------\n\nTo test, install the package with the ``test`` extras and use ``pytest``::\n\n $ pip install .[test]\n $ pytest\n\nDocumentation\n-------------\n\nDocumentation is based on Sphinx and built and served by Read the Docs. To\nbuild locally, install the ``docs`` requirements::\n\n $ pip install .[docs]\n $ cd docs\n $ make html\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License Copyright (c) 2019, Benjamin Margolis and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ndsplines includes modified source code from the SciPy library. These are listed below with their original license: Files: _bspl.pyx, _bspl.h License: 3-clause BSD Copyright (c) 2001, 2002 Enthought, Inc. All rights reserved. Copyright (c) 2003-2019 SciPy Developers. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. c. Neither the name of Enthought nor the names of the SciPy Developers may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
"summary": "Multi-dimensional splines",
"version": "0.2.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0774f3997e8bbd5d634981aa5e7f5fc3fdbc8a2b51c423da3af7870d97e93cf4",
"md5": "d7b903f608c12841bfe8bb8bcb336630",
"sha256": "5938c6b0966e322f3fa44db3c97103e916d88b90639335acfaddc7ee5361130c"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "d7b903f608c12841bfe8bb8bcb336630",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 248511,
"upload_time": "2024-08-21T22:05:50",
"upload_time_iso_8601": "2024-08-21T22:05:50.332540Z",
"url": "https://files.pythonhosted.org/packages/07/74/f3997e8bbd5d634981aa5e7f5fc3fdbc8a2b51c423da3af7870d97e93cf4/ndsplines-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d779cd26f426379660b2f5dcb24241b461f437b7ea88cee958993cf7c28d3fa",
"md5": "b236a5d7d685e8ee60b9efbe2e272b19",
"sha256": "6c7bb85f5c5354e574d92b6e30f13c22d8521231b82c1f6c8887a6e37d3676fb"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b236a5d7d685e8ee60b9efbe2e272b19",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 244020,
"upload_time": "2024-08-21T22:05:51",
"upload_time_iso_8601": "2024-08-21T22:05:51.902339Z",
"url": "https://files.pythonhosted.org/packages/3d/77/9cd26f426379660b2f5dcb24241b461f437b7ea88cee958993cf7c28d3fa/ndsplines-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b8592f422a2850fefcdc9a3c0ad5cde2dc841a1586bca546acaf9a7f57c713aa",
"md5": "bbf474f0518bfdfc29fbd117905e3b57",
"sha256": "4aa81203d6c953d65fa1c2c8e33d142798246985c42c2fcf5366b35d92098e2e"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "bbf474f0518bfdfc29fbd117905e3b57",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 598918,
"upload_time": "2024-08-21T22:05:53",
"upload_time_iso_8601": "2024-08-21T22:05:53.508920Z",
"url": "https://files.pythonhosted.org/packages/b8/59/2f422a2850fefcdc9a3c0ad5cde2dc841a1586bca546acaf9a7f57c713aa/ndsplines-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4b0967d8bfc8d0592aababc50f29fd5e3ce6b802e1c22a5891fcf2d7d428a20a",
"md5": "2d952d8908e3284b38009475bfa862e7",
"sha256": "12953d77ef100fcdb207eb953e2abd01621686e2480834a5b966a5f3f700ea5b"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "2d952d8908e3284b38009475bfa862e7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 242418,
"upload_time": "2024-08-21T22:05:55",
"upload_time_iso_8601": "2024-08-21T22:05:55.152056Z",
"url": "https://files.pythonhosted.org/packages/4b/09/67d8bfc8d0592aababc50f29fd5e3ce6b802e1c22a5891fcf2d7d428a20a/ndsplines-0.2.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a8697dd98fcd26cd4d2c03f63f24908df617659f3f99a7bc6814a6c3e27abf54",
"md5": "eea1a8157ca95b4bdac9e391559161d5",
"sha256": "7c61d3c49501be2802e94bbf7df18d2504df3f798b323a44ca4a08f5f84fae61"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "eea1a8157ca95b4bdac9e391559161d5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 248461,
"upload_time": "2024-08-21T22:05:57",
"upload_time_iso_8601": "2024-08-21T22:05:57.011719Z",
"url": "https://files.pythonhosted.org/packages/a8/69/7dd98fcd26cd4d2c03f63f24908df617659f3f99a7bc6814a6c3e27abf54/ndsplines-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f30d23ebc5b078b401320328c2d818440ecdee2f42f3a30cd3278186d4a9c6ea",
"md5": "dc5ee3002741f2962bb164e2ec611be5",
"sha256": "00b2a9cc1ac2e47393bd9997c0aa24f517196624f78cca9d8c450f4b1ae3e554"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "dc5ee3002741f2962bb164e2ec611be5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 243911,
"upload_time": "2024-08-21T22:05:58",
"upload_time_iso_8601": "2024-08-21T22:05:58.734489Z",
"url": "https://files.pythonhosted.org/packages/f3/0d/23ebc5b078b401320328c2d818440ecdee2f42f3a30cd3278186d4a9c6ea/ndsplines-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "290fe72fe3d0dc0fe908323b79b03886ce7045a0c0b42c923feb58d65f4b71ca",
"md5": "8136b47c01e61f4adb0338cb7766817c",
"sha256": "b4792d2ceb3cd634731a8d46d5d09fb212eb84873bf8a6c47b8d2847c133253d"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8136b47c01e61f4adb0338cb7766817c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 634187,
"upload_time": "2024-08-21T22:06:00",
"upload_time_iso_8601": "2024-08-21T22:06:00.224249Z",
"url": "https://files.pythonhosted.org/packages/29/0f/e72fe3d0dc0fe908323b79b03886ce7045a0c0b42c923feb58d65f4b71ca/ndsplines-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d35d2585b378c130b5ce1fc71c67e1cdb4fcf6df3928482a20738ce351cb871d",
"md5": "42f978eb7d0c6c9e4585815a3cf7073f",
"sha256": "df29a18964ce29a3af162772300ab42fa55e9dd9a42baa82c808dec52f9e5a5a"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "42f978eb7d0c6c9e4585815a3cf7073f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 242450,
"upload_time": "2024-08-21T22:06:01",
"upload_time_iso_8601": "2024-08-21T22:06:01.880139Z",
"url": "https://files.pythonhosted.org/packages/d3/5d/2585b378c130b5ce1fc71c67e1cdb4fcf6df3928482a20738ce351cb871d/ndsplines-0.2.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6de118712832f3a7912ed4878b85ade6a86ef7f0ecc142cd8511f6dd80586e38",
"md5": "424660c3567fbebe12e2149499165b61",
"sha256": "24351979024ec196617ac28a4c2df7b37d9166a0477ea508864e9bb187d94664"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "424660c3567fbebe12e2149499165b61",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 250052,
"upload_time": "2024-08-21T22:06:03",
"upload_time_iso_8601": "2024-08-21T22:06:03.133221Z",
"url": "https://files.pythonhosted.org/packages/6d/e1/18712832f3a7912ed4878b85ade6a86ef7f0ecc142cd8511f6dd80586e38/ndsplines-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "239f3bd26ec89f2d7eb6a1b35eebdb90049984cc892bef8fe9819a0ba7ee4b4b",
"md5": "4b872ba2fbf3905d49bf3cc27a458a2d",
"sha256": "21dfb51fec06e1e31ce9d80a874a0d30beba25802ad6b88e94efeebd8a243def"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "4b872ba2fbf3905d49bf3cc27a458a2d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 245078,
"upload_time": "2024-08-21T22:06:04",
"upload_time_iso_8601": "2024-08-21T22:06:04.467038Z",
"url": "https://files.pythonhosted.org/packages/23/9f/3bd26ec89f2d7eb6a1b35eebdb90049984cc892bef8fe9819a0ba7ee4b4b/ndsplines-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd48f90557536ee968e1d866ea3f4198e7d463454383eb5266835fee6971041d",
"md5": "8f638eb5e7cb92368a196d301862104c",
"sha256": "748e9e3702d1999118943603cfab229e02038fddf1486a8d7eb5ad2a5c4d93b6"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8f638eb5e7cb92368a196d301862104c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 627493,
"upload_time": "2024-08-21T22:06:06",
"upload_time_iso_8601": "2024-08-21T22:06:06.475925Z",
"url": "https://files.pythonhosted.org/packages/cd/48/f90557536ee968e1d866ea3f4198e7d463454383eb5266835fee6971041d/ndsplines-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "557ddb549442b8445c6901c4dd4b37f5012a55cb6065182442ed1e430e26c98e",
"md5": "b8e47018f5d28b9296aab4ab30831d70",
"sha256": "d8e887ed3436e7438f633eb9d44a163b92adad7de846bebe53f2b543fc80d86a"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "b8e47018f5d28b9296aab4ab30831d70",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 243354,
"upload_time": "2024-08-21T22:06:08",
"upload_time_iso_8601": "2024-08-21T22:06:08.234386Z",
"url": "https://files.pythonhosted.org/packages/55/7d/db549442b8445c6901c4dd4b37f5012a55cb6065182442ed1e430e26c98e/ndsplines-0.2.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "33717e47631f36c01bc087c7e3b20e25dbe1a5cf0c7eb58dc37679121a8fc6bc",
"md5": "af29922ceb5a7c9b6311957634fc5a1f",
"sha256": "27b37b2a5102a9f6c2a26dc860521dfdc3ed389a24fe9a516f8ab8ad7c2224f0"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "af29922ceb5a7c9b6311957634fc5a1f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 249046,
"upload_time": "2024-08-21T22:06:09",
"upload_time_iso_8601": "2024-08-21T22:06:09.720924Z",
"url": "https://files.pythonhosted.org/packages/33/71/7e47631f36c01bc087c7e3b20e25dbe1a5cf0c7eb58dc37679121a8fc6bc/ndsplines-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "301b0cf6d0c60dff29ed4932863aac5974348ea8a9a67f6d310672a395b6118b",
"md5": "87ab9e03fb1b67bfe2d6da3cd3ac4cad",
"sha256": "cd39e735a962091535628a2a996db308fb85679712c93a9e7d3ae2614569cbde"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "87ab9e03fb1b67bfe2d6da3cd3ac4cad",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 243869,
"upload_time": "2024-08-21T22:06:11",
"upload_time_iso_8601": "2024-08-21T22:06:11.197752Z",
"url": "https://files.pythonhosted.org/packages/30/1b/0cf6d0c60dff29ed4932863aac5974348ea8a9a67f6d310672a395b6118b/ndsplines-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3c185ccf41bff72dc79fc2ad6bc0eac787431063143f672e7396f88cf8e33b1b",
"md5": "4d5e0f64a5ee97e06baea26c1c1447d5",
"sha256": "9eaa44e3cf4d1e37d63ec9d47a25754aee17f8de83809c1f4b999ff0bab7b132"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4d5e0f64a5ee97e06baea26c1c1447d5",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 624047,
"upload_time": "2024-08-21T22:06:12",
"upload_time_iso_8601": "2024-08-21T22:06:12.841726Z",
"url": "https://files.pythonhosted.org/packages/3c/18/5ccf41bff72dc79fc2ad6bc0eac787431063143f672e7396f88cf8e33b1b/ndsplines-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67e150514ebaddd3cba03431fd5993ba8c269ba5f7d2884a3dcc6dc5d3984064",
"md5": "5b492fcd08e58c96cd2f70818935c83b",
"sha256": "8ef30e1647d447ec711049515f31dac378eb60c2fcd83568ee304d475cd443c9"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "5b492fcd08e58c96cd2f70818935c83b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 243194,
"upload_time": "2024-08-21T22:06:14",
"upload_time_iso_8601": "2024-08-21T22:06:14.441988Z",
"url": "https://files.pythonhosted.org/packages/67/e1/50514ebaddd3cba03431fd5993ba8c269ba5f7d2884a3dcc6dc5d3984064/ndsplines-0.2.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dbdaf6b96afe24d2e67dfc01cfa9a1808f552bdd1f45eaa66b9628d7011f740d",
"md5": "4b766775e2473f893b672cc59298c8ed",
"sha256": "174f87ea7dc06e73676e68aec1ef94efdc8297158838de342ebcec705aee2af1"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "4b766775e2473f893b672cc59298c8ed",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 247132,
"upload_time": "2024-08-21T22:06:16",
"upload_time_iso_8601": "2024-08-21T22:06:16.207173Z",
"url": "https://files.pythonhosted.org/packages/db/da/f6b96afe24d2e67dfc01cfa9a1808f552bdd1f45eaa66b9628d7011f740d/ndsplines-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dac7f8127bbf46a4f5dccf2e2d09c690533f2f76a34f579e05145c957d6b0554",
"md5": "2d1bdc5bb6a1088c9d41ea432da400d3",
"sha256": "9e3b0b2ce83b00edf0307e9620ee382f6db9280727e86c25470c5c0abfcf4213"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "2d1bdc5bb6a1088c9d41ea432da400d3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 242737,
"upload_time": "2024-08-21T22:06:17",
"upload_time_iso_8601": "2024-08-21T22:06:17.538849Z",
"url": "https://files.pythonhosted.org/packages/da/c7/f8127bbf46a4f5dccf2e2d09c690533f2f76a34f579e05145c957d6b0554/ndsplines-0.2.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd2953a1acb6736057dea355afb7be08774c6081f5b8c979e416b34c61d275e6",
"md5": "a56e52bb64259d21ee1b5d043320750c",
"sha256": "113ae587b5c9c976ec9b1ed094c75e43060ded73584c3da7256ea1f366bfeaa4"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a56e52bb64259d21ee1b5d043320750c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 607363,
"upload_time": "2024-08-21T22:06:18",
"upload_time_iso_8601": "2024-08-21T22:06:18.712270Z",
"url": "https://files.pythonhosted.org/packages/cd/29/53a1acb6736057dea355afb7be08774c6081f5b8c979e416b34c61d275e6/ndsplines-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "35f8e0a32a5db2d459fdd21f3a3ab2107f384d1e43ee3000a790d5e0e4f9450c",
"md5": "0b0d97630a527b6105f3f9149f69833a",
"sha256": "35b58771e5253073eb49535680dc56017e1feda74b7a8f3b8c9a38012d66288a"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "0b0d97630a527b6105f3f9149f69833a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 241186,
"upload_time": "2024-08-21T22:06:20",
"upload_time_iso_8601": "2024-08-21T22:06:20.899297Z",
"url": "https://files.pythonhosted.org/packages/35/f8/e0a32a5db2d459fdd21f3a3ab2107f384d1e43ee3000a790d5e0e4f9450c/ndsplines-0.2.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "28fcba6e8b4a6f05f78df0a4373e0647f0a7a466df63d01cfd9471b1e0d0d3c7",
"md5": "6a8acf6da39ab593dd47e91e334a5cec",
"sha256": "4e576d85fd35fdfbc5980eaff67a4391d982eb03833cd0626b82d2e3106911af"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6a8acf6da39ab593dd47e91e334a5cec",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 249055,
"upload_time": "2024-08-21T22:06:21",
"upload_time_iso_8601": "2024-08-21T22:06:21.998651Z",
"url": "https://files.pythonhosted.org/packages/28/fc/ba6e8b4a6f05f78df0a4373e0647f0a7a466df63d01cfd9471b1e0d0d3c7/ndsplines-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3ead3bc0acd825aac9ab7a00e881979791b704dfe30469ed8e747c5370ad9354",
"md5": "c61f5a6f3b903b8dac6fde8dd2c4d1e5",
"sha256": "04ccca5d4f02d6872274f5f431177f9588a688a4efc03e36302542714b0a958a"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c61f5a6f3b903b8dac6fde8dd2c4d1e5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 244728,
"upload_time": "2024-08-21T22:06:23",
"upload_time_iso_8601": "2024-08-21T22:06:23.668870Z",
"url": "https://files.pythonhosted.org/packages/3e/ad/3bc0acd825aac9ab7a00e881979791b704dfe30469ed8e747c5370ad9354/ndsplines-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d32f7935643f69ea034385423f50a7bad5e3ea2f97c49714fce666d3c76876a",
"md5": "876118e0bdf171c5e020034945a25aaa",
"sha256": "eb749c409970ed348c8e01b9f71b23d5ddfa720185b0824731fbe7c3f7ca9a40"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "876118e0bdf171c5e020034945a25aaa",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 602193,
"upload_time": "2024-08-21T22:06:25",
"upload_time_iso_8601": "2024-08-21T22:06:25.479664Z",
"url": "https://files.pythonhosted.org/packages/6d/32/f7935643f69ea034385423f50a7bad5e3ea2f97c49714fce666d3c76876a/ndsplines-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b2380ddd57c61fd8572e2b3da4c568b66e5db2416e97ffca935764156c925ad0",
"md5": "9b3eb39544b2191d4a2cf0e5b011155d",
"sha256": "0f589ed0c318e480e8419c6176f8b0e0210b99d8516456ce3bdabf2fd924cfed"
},
"downloads": -1,
"filename": "ndsplines-0.2.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "9b3eb39544b2191d4a2cf0e5b011155d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 242965,
"upload_time": "2024-08-21T22:06:26",
"upload_time_iso_8601": "2024-08-21T22:06:26.718434Z",
"url": "https://files.pythonhosted.org/packages/b2/38/0ddd57c61fd8572e2b3da4c568b66e5db2416e97ffca935764156c925ad0/ndsplines-0.2.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "725134a5c5ecba099f43af33d9fe69fa1915fd48742ce34b54e840cf8af67919",
"md5": "017dbf7ef560d9ec0f5f4a08d56ca19a",
"sha256": "7ddf3c5b7b983360dc7a0acca8035566efdc9a536e35fae41f2ec94e05211298"
},
"downloads": -1,
"filename": "ndsplines-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "017dbf7ef560d9ec0f5f4a08d56ca19a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 190887,
"upload_time": "2024-08-21T22:06:28",
"upload_time_iso_8601": "2024-08-21T22:06:28.125196Z",
"url": "https://files.pythonhosted.org/packages/72/51/34a5c5ecba099f43af33d9fe69fa1915fd48742ce34b54e840cf8af67919/ndsplines-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-21 22:06:28",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "ndsplines"
}