splinepy


Namesplinepy JSON
Version 0.0.51 PyPI version JSON
download
home_page
SummaryProcess, analyze and visualize N-dim, N-degree splines
upload_time2024-02-06 08:13:17
maintainer
docs_urlNone
author
requires_python>=3.7
licenseMIT License Copyright (c) 2021 Jaewook Lee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords bezier rational bezier bspline nurbs multi patch
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # splinepy
[![workflow](https://github.com/tataratat/splinepy/actions/workflows/main.yml/badge.svg)](https://github.com/tataratat/splinepy/actions)
[![PyPI version](https://badge.fury.io/py/splinepy.svg)](https://badge.fury.io/py/splinepy)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/tataratat/try-splinepy/main)

splinepy is a python library for splines of arbitrary dimensions and degrees.
The library supports Bezier, Rational Bezier, BSpline and NURBS with fast and easy-to-use APIs.

## Install guide
splinepy wheels are available for python3.8+ for MacOS, Linux, and Windows:
```bash
# including all optional dependencies
pip install "splinepy[all]"  # quotation marks required for some shells
# or
pip install splinepy
```


Of course, you can install it directly from the source.
In addition to the aforementioned compilers, this requires a cmake3.16+. If you don't have `cmake`, the easiest way to install it would be: `pip install cmake`.
```bash
git clone git@github.com:tataratat/splinepy.git
cd splinepy
git submodule update --init --recursive
pip install -e .
```

## Quick start
```python
import splinepy
import numpy as np

# Initialize bspline with any array-like input
bspline = splinepy.BSpline(
    degrees=[2, 1],
    knot_vectors=[
        [0.0, 0.0, 0.0, 1.0, 1.0, 1.0],
        [0.0, 0.0, 1.0, 1.0],
    ],
    control_points=[
        [0.0, 0.0],  # [0, 0] (control grid index)
        [0.5, 0.0],  # [1, 0]
        [1.0, 0.0],  # [2, 0]
        [0.0, 1.0],  # [0, 1]
        [0.5, 1.0],  # [1, 1]
        [1.0, 1.0],  # [2, 1]
    ],
)

# We always store control points in 2D arrays with shape
# (total_number_of_control_points, physical_dimension).
# The indexing of the control grid is defined by iterating
# lower-indexed dimensions first. But if you prefer a
# grid-like structure, try
multi_index = bspline.multi_index
grid_cps = np.empty(bspline.control_points.shape)
grid_cps[multi_index[0, 0]] = [0.0, 0.0]
grid_cps[multi_index[1, 0]] = [0.5, 0.0]
grid_cps[multi_index[2, 0], 0] = 1.0
# which also supports ranges
grid_cps[multi_index[:, 0], 1] = 0.0
grid_cps[multi_index[:, 1], 1] = 1.0
grid_cps[multi_index[:, 1], 0] = [0.0, 0.5, 1.0]

assert np.allclose(bspline.control_points, grid_cps)

# Evaluate spline mapping.
# First, let's form parametric coordinate queries
queries = [
    [0.1, 0.2],  # first query
    [0.4, 0.5],  # second query
    [0.1156, 0.9091],  # third query
]
physical_coords = bspline.evaluate(queries)

# we can also execute this in parallel using multithread
# executions on c++ side (for heavy multi-queries scenarios)
physical_coords_parallel = bspline.evaluate(queries, nthreads=2)

# this holds
assert np.allclose(physical_coords, physical_coords_parallel)
```
You can also try `splinepy` online by clicking the [Binder](https://mybinder.org/v2/gh/tataratat/try-splinepy/main) badge above!

## Feature Summary
For details, please take a look at the [documentation](https://tataratat.github.io/splinepy).
Most of the functions are vectorized and capable of multithread executions.

### Splines
__Any type of spline is capable of:__
- computing spline mappings, derivatives, partial derivatives, jacobian, basis functions, basis function derivatives, basis function partial derivatives, and proximity (point inversion, nearest mapping search),
- degree elevation,
- extracting boundary splines, and
- visualization (see [visualizing with splinepy](docs/markdown/spline_plotting.md)).

In addition to the common features, __Bezier and Rational Bezier__ can:
- add/multiply two splines,
- split itself into multiple patches,
- create derivative splines, and
- compose an inner spline into an outer spline and compute its composition derivative

and __BSpline and NURBS__ can:
- reduce degrees,
- insert and remove knots, and
- extract bezier patches.

Some __BSpline fitting__ routines from [The NURBS Book](https://link.springer.com/book/10.1007/978-3-642-97385-7):
- curve interpolation/approximation
- surface interpolation/approximation

### Multipatch
Splinepy offers a common interface for multipatch geometries, i.e., geometries consisting of multiple, individual splines of arbitrary types. This concept is used for complex geometries and for Isogeometric Analysis. __Multipatch__ objects have the following functionalities:
 - determine patch-interfaces automatically
 - identification of boundary faces
 - boundary assignment using different techniques, relying either on the boundary position or on the continuity in between patches
 - Boundary extraction

### IO
Available in `splinepy.io`.

| Formats | Description                                                                                                                                          |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| iges    | Loads/Exports splines from an [IGES](https://en.wikipedia.org/wiki/IGES) file                                                                        |
| irit    | [IRIT](https://www.cs.technion.ac.il/~irit/) compatible format                                                                                       |
| json    | (Custom) easy-to-read format, supports base64 encoding                                                                                               |
| mfem    | [MFEM](https://mfem.org) compatible `.mesh` format. Supports structured multi-patch splines in `controlpoints_cartesian` and 2D single-patch splines |
| gismo   | [GISMO](https://gismo.github.io) compatible `.xml` format                                                                                            |
| npz     | Based on np.savez()                                                                                                                                  |
| xml     | [RWTH CATS](https://www.cats.rwth-aachen.de/) spline format                                                                                          |


## Dependencies
The following are direct dependencies for splinepy. Please feel free to check out the repositories linked.

| Package | Description                                             | Python | C++ |
| ------- | ------------------------------------------------------- | :----: | :---: |
| [pybind11](https://github.com/pybind/pybind11) | Binds c++ and python | X | X |
| [SplineLib](https://github.com/tataratat/SplineLib) | Main functionalities for BSplines and NURBS |    | X |
| [bezman](https://github.com/tataratat/bezman)       | Main functionalities for Beziers and rational Beziers |    | X |
| [napf](https://github.com/tataratat/napf)           | Creates k-d trees that provide initial guess for proximity search. Wraps [nanoflann](https://github.com/jlblancoc/nanoflann) |   | X |
| [numpy](https://numpy.org) | Fast array data storage and manipulation | X |   |
| [gustaf](https://github.com/tataratat/gustaf) | Conversion to mesh representation, visualization, and helpers | X |  |
| [scipy](https://scipy.org) | (Optional) Creates sparse matrices, where applicable | X |   |
| [cmake](https://cmake.org) | Platform independent build system for c++ implementations |   | X |
| [setuptools](https://setuptools.pypa.io/en/latest/) | Build python package  | X |  |
| [wheel](https://wheel.readthedocs.io/en/stable/)    | Implementation of python binary packaging standard | X | X |
| [cibuildwheel](https://cibuildwheel.readthedocs.io/en/stable/) | Builds and tests wheels on CI server | X | X |

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "splinepy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "bezier rational bezier bspline nurbs multi patch",
    "author": "",
    "author_email": "Jaewook Lee <jaewooklee042@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b2/60/372cb3f7180b265cd5edb538a390674fbe9a9bcb9288b5e29c912f10fca2/splinepy-0.0.51.tar.gz",
    "platform": null,
    "description": "# splinepy\n[![workflow](https://github.com/tataratat/splinepy/actions/workflows/main.yml/badge.svg)](https://github.com/tataratat/splinepy/actions)\n[![PyPI version](https://badge.fury.io/py/splinepy.svg)](https://badge.fury.io/py/splinepy)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/tataratat/try-splinepy/main)\n\nsplinepy is a python library for splines of arbitrary dimensions and degrees.\nThe library supports Bezier, Rational Bezier, BSpline and NURBS with fast and easy-to-use APIs.\n\n## Install guide\nsplinepy wheels are available for python3.8+ for MacOS, Linux, and Windows:\n```bash\n# including all optional dependencies\npip install \"splinepy[all]\"  # quotation marks required for some shells\n# or\npip install splinepy\n```\n\n\nOf course, you can install it directly from the source.\nIn addition to the aforementioned compilers, this requires a cmake3.16+. If you don't have `cmake`, the easiest way to install it would be: `pip install cmake`.\n```bash\ngit clone git@github.com:tataratat/splinepy.git\ncd splinepy\ngit submodule update --init --recursive\npip install -e .\n```\n\n## Quick start\n```python\nimport splinepy\nimport numpy as np\n\n# Initialize bspline with any array-like input\nbspline = splinepy.BSpline(\n    degrees=[2, 1],\n    knot_vectors=[\n        [0.0, 0.0, 0.0, 1.0, 1.0, 1.0],\n        [0.0, 0.0, 1.0, 1.0],\n    ],\n    control_points=[\n        [0.0, 0.0],  # [0, 0] (control grid index)\n        [0.5, 0.0],  # [1, 0]\n        [1.0, 0.0],  # [2, 0]\n        [0.0, 1.0],  # [0, 1]\n        [0.5, 1.0],  # [1, 1]\n        [1.0, 1.0],  # [2, 1]\n    ],\n)\n\n# We always store control points in 2D arrays with shape\n# (total_number_of_control_points, physical_dimension).\n# The indexing of the control grid is defined by iterating\n# lower-indexed dimensions first. But if you prefer a\n# grid-like structure, try\nmulti_index = bspline.multi_index\ngrid_cps = np.empty(bspline.control_points.shape)\ngrid_cps[multi_index[0, 0]] = [0.0, 0.0]\ngrid_cps[multi_index[1, 0]] = [0.5, 0.0]\ngrid_cps[multi_index[2, 0], 0] = 1.0\n# which also supports ranges\ngrid_cps[multi_index[:, 0], 1] = 0.0\ngrid_cps[multi_index[:, 1], 1] = 1.0\ngrid_cps[multi_index[:, 1], 0] = [0.0, 0.5, 1.0]\n\nassert np.allclose(bspline.control_points, grid_cps)\n\n# Evaluate spline mapping.\n# First, let's form parametric coordinate queries\nqueries = [\n    [0.1, 0.2],  # first query\n    [0.4, 0.5],  # second query\n    [0.1156, 0.9091],  # third query\n]\nphysical_coords = bspline.evaluate(queries)\n\n# we can also execute this in parallel using multithread\n# executions on c++ side (for heavy multi-queries scenarios)\nphysical_coords_parallel = bspline.evaluate(queries, nthreads=2)\n\n# this holds\nassert np.allclose(physical_coords, physical_coords_parallel)\n```\nYou can also try `splinepy` online by clicking the [Binder](https://mybinder.org/v2/gh/tataratat/try-splinepy/main) badge above!\n\n## Feature Summary\nFor details, please take a look at the [documentation](https://tataratat.github.io/splinepy).\nMost of the functions are vectorized and capable of multithread executions.\n\n### Splines\n__Any type of spline is capable of:__\n- computing spline mappings, derivatives, partial derivatives, jacobian, basis functions, basis function derivatives, basis function partial derivatives, and proximity (point inversion, nearest mapping search),\n- degree elevation,\n- extracting boundary splines, and\n- visualization (see [visualizing with splinepy](docs/markdown/spline_plotting.md)).\n\nIn addition to the common features, __Bezier and Rational Bezier__ can:\n- add/multiply two splines,\n- split itself into multiple patches,\n- create derivative splines, and\n- compose an inner spline into an outer spline and compute its composition derivative\n\nand __BSpline and NURBS__ can:\n- reduce degrees,\n- insert and remove knots, and\n- extract bezier patches.\n\nSome __BSpline fitting__ routines from [The NURBS Book](https://link.springer.com/book/10.1007/978-3-642-97385-7):\n- curve interpolation/approximation\n- surface interpolation/approximation\n\n### Multipatch\nSplinepy offers a common interface for multipatch geometries, i.e., geometries consisting of multiple, individual splines of arbitrary types. This concept is used for complex geometries and for Isogeometric Analysis. __Multipatch__ objects have the following functionalities:\n - determine patch-interfaces automatically\n - identification of boundary faces\n - boundary assignment using different techniques, relying either on the boundary position or on the continuity in between patches\n - Boundary extraction\n\n### IO\nAvailable in `splinepy.io`.\n\n| Formats | Description                                                                                                                                          |\n| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| iges    | Loads/Exports splines from an [IGES](https://en.wikipedia.org/wiki/IGES) file                                                                        |\n| irit    | [IRIT](https://www.cs.technion.ac.il/~irit/) compatible format                                                                                       |\n| json    | (Custom) easy-to-read format, supports base64 encoding                                                                                               |\n| mfem    | [MFEM](https://mfem.org) compatible `.mesh` format. Supports structured multi-patch splines in `controlpoints_cartesian` and 2D single-patch splines |\n| gismo   | [GISMO](https://gismo.github.io) compatible `.xml` format                                                                                            |\n| npz     | Based on np.savez()                                                                                                                                  |\n| xml     | [RWTH CATS](https://www.cats.rwth-aachen.de/) spline format                                                                                          |\n\n\n## Dependencies\nThe following are direct dependencies for splinepy. Please feel free to check out the repositories linked.\n\n| Package | Description                                             | Python | C++ |\n| ------- | ------------------------------------------------------- | :----: | :---: |\n| [pybind11](https://github.com/pybind/pybind11) | Binds c++ and python | X | X |\n| [SplineLib](https://github.com/tataratat/SplineLib) | Main functionalities for BSplines and NURBS |    | X |\n| [bezman](https://github.com/tataratat/bezman)       | Main functionalities for Beziers and rational Beziers |    | X |\n| [napf](https://github.com/tataratat/napf)           | Creates k-d trees that provide initial guess for proximity search. Wraps [nanoflann](https://github.com/jlblancoc/nanoflann) |   | X |\n| [numpy](https://numpy.org) | Fast array data storage and manipulation | X |   |\n| [gustaf](https://github.com/tataratat/gustaf) | Conversion to mesh representation, visualization, and helpers | X |  |\n| [scipy](https://scipy.org) | (Optional) Creates sparse matrices, where applicable | X |   |\n| [cmake](https://cmake.org) | Platform independent build system for c++ implementations |   | X |\n| [setuptools](https://setuptools.pypa.io/en/latest/) | Build python package  | X |  |\n| [wheel](https://wheel.readthedocs.io/en/stable/)    | Implementation of python binary packaging standard | X | X |\n| [cibuildwheel](https://cibuildwheel.readthedocs.io/en/stable/) | Builds and tests wheels on CI server | X | X |\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2021 Jaewook Lee  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "Process, analyze and visualize N-dim, N-degree splines",
    "version": "0.0.51",
    "project_urls": {
        "Homepage": "https://github.com/tataratat/splinepy"
    },
    "split_keywords": [
        "bezier",
        "rational",
        "bezier",
        "bspline",
        "nurbs",
        "multi",
        "patch"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98d92807a12d3da48ce5831b3fe68eee4004f51d68fe17ad06840b3dfc30cc3d",
                "md5": "d718f2f0c52871f9877f1857290d166c",
                "sha256": "dd076f297beb81d2c66cd109e9c609941382b1f23bca8e1cc0ce712bbcef1c64"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d718f2f0c52871f9877f1857290d166c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 39262687,
            "upload_time": "2024-02-06T08:11:58",
            "upload_time_iso_8601": "2024-02-06T08:11:58.690579Z",
            "url": "https://files.pythonhosted.org/packages/98/d9/2807a12d3da48ce5831b3fe68eee4004f51d68fe17ad06840b3dfc30cc3d/splinepy-0.0.51-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2a01fcee76807990bff88f9482199afbabd7da31b6740030da154a23b2331ef5",
                "md5": "9ddddafd0d5593621f536a6d0756bc71",
                "sha256": "463500e23f3a767ef274d6623070cadfe7de0a46bbcdb0d87c4aac1873a48afa"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "9ddddafd0d5593621f536a6d0756bc71",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 34627881,
            "upload_time": "2024-02-06T08:12:02",
            "upload_time_iso_8601": "2024-02-06T08:12:02.878442Z",
            "url": "https://files.pythonhosted.org/packages/2a/01/fcee76807990bff88f9482199afbabd7da31b6740030da154a23b2331ef5/splinepy-0.0.51-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f5dc14d4b21b0def0f96a589b779de97e92621f67d01e1b824909bb7a32daa5",
                "md5": "c6a275fd52047f155f50c4e1ee010fb7",
                "sha256": "d96172252c8ca65fa8461df9157fdab0deb24067443b943bca6c04859d94fb6c"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c6a275fd52047f155f50c4e1ee010fb7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 34888648,
            "upload_time": "2024-02-06T08:12:05",
            "upload_time_iso_8601": "2024-02-06T08:12:05.841283Z",
            "url": "https://files.pythonhosted.org/packages/8f/5d/c14d4b21b0def0f96a589b779de97e92621f67d01e1b824909bb7a32daa5/splinepy-0.0.51-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a2a05a773ab782de688bcd3809218eee9178ed15d5d6f432bf148f1c951d706a",
                "md5": "be5f6502f0c1797df046d697807065d2",
                "sha256": "d9689610356d5990be78fd0a0c2f5aeaf1a31763a5f87a6d4d5f3bb3819f4425"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "be5f6502f0c1797df046d697807065d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 62322588,
            "upload_time": "2024-02-06T08:12:09",
            "upload_time_iso_8601": "2024-02-06T08:12:09.644166Z",
            "url": "https://files.pythonhosted.org/packages/a2/a0/5a773ab782de688bcd3809218eee9178ed15d5d6f432bf148f1c951d706a/splinepy-0.0.51-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b1e73b02e5d694114b8f5120541e60ea5b0213148bbed6b6a7e3b8fa034cd77",
                "md5": "28e6a5ba92508e8135c152fb21ccd53b",
                "sha256": "b61a4833436d798c41f08c1d83e206f2031a88648a15fd9c7077ae493dc37625"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "28e6a5ba92508e8135c152fb21ccd53b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 39264541,
            "upload_time": "2024-02-06T08:12:14",
            "upload_time_iso_8601": "2024-02-06T08:12:14.332026Z",
            "url": "https://files.pythonhosted.org/packages/9b/1e/73b02e5d694114b8f5120541e60ea5b0213148bbed6b6a7e3b8fa034cd77/splinepy-0.0.51-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "151ae29d170248ba44b9ccffe972f57d48066240a11bbe1722ec08e66a8d1dbb",
                "md5": "34c43aae9d85549c2f43e756e50c070a",
                "sha256": "dee7e8f9d8be7f6b0f22a7b6cfe330a3a0a709b209a3f8b363a66d5b1d1c8f79"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "34c43aae9d85549c2f43e756e50c070a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 34628379,
            "upload_time": "2024-02-06T08:12:18",
            "upload_time_iso_8601": "2024-02-06T08:12:18.135464Z",
            "url": "https://files.pythonhosted.org/packages/15/1a/e29d170248ba44b9ccffe972f57d48066240a11bbe1722ec08e66a8d1dbb/splinepy-0.0.51-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f3612c95698851b38c97b4f207926cc32aef4f47bc251f8ebb90f32979587057",
                "md5": "0d5c06454cb9234f5a8adab450c4c6c2",
                "sha256": "0a9cf6aeb9b3ea9a62d2026fd0d1cd0991068d7119322253ba90dd6b613e0a34"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0d5c06454cb9234f5a8adab450c4c6c2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 34898275,
            "upload_time": "2024-02-06T08:12:21",
            "upload_time_iso_8601": "2024-02-06T08:12:21.748331Z",
            "url": "https://files.pythonhosted.org/packages/f3/61/2c95698851b38c97b4f207926cc32aef4f47bc251f8ebb90f32979587057/splinepy-0.0.51-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "93986faa193681490cfb6092d35387793513e2ab5eb98c2d288da1c7c594f483",
                "md5": "47f2b6045ff8cbc6634ddcc32d435169",
                "sha256": "070691e27319f95a02476043668d03894ac4cb5d9a3869dc54b74e2add5f2c19"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "47f2b6045ff8cbc6634ddcc32d435169",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 62348757,
            "upload_time": "2024-02-06T08:12:26",
            "upload_time_iso_8601": "2024-02-06T08:12:26.378371Z",
            "url": "https://files.pythonhosted.org/packages/93/98/6faa193681490cfb6092d35387793513e2ab5eb98c2d288da1c7c594f483/splinepy-0.0.51-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "443be2d4698c564cf3b0c818ba0e7fda49cdc43e64fe5a0c221b40a9c44389b0",
                "md5": "62033d712f8b5dbabd35126b7544f9bc",
                "sha256": "7040791591e6c8866e8df8f5f1a9fb7da3c6f483a93a0dafe3560dd1a3f652a7"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "62033d712f8b5dbabd35126b7544f9bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 39318039,
            "upload_time": "2024-02-06T08:12:30",
            "upload_time_iso_8601": "2024-02-06T08:12:30.421887Z",
            "url": "https://files.pythonhosted.org/packages/44/3b/e2d4698c564cf3b0c818ba0e7fda49cdc43e64fe5a0c221b40a9c44389b0/splinepy-0.0.51-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7617c64dea37bab84daf6184865e3c725349df4ef30006f1042c38bd4af6082e",
                "md5": "290c1e09a0acd46e40f946bd1e4650f3",
                "sha256": "bff0429a90765abcc9d8393751a643d028746ebd128a2e150b6cc48378426619"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "290c1e09a0acd46e40f946bd1e4650f3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 34676468,
            "upload_time": "2024-02-06T08:12:34",
            "upload_time_iso_8601": "2024-02-06T08:12:34.752465Z",
            "url": "https://files.pythonhosted.org/packages/76/17/c64dea37bab84daf6184865e3c725349df4ef30006f1042c38bd4af6082e/splinepy-0.0.51-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df10b520996cd6b132820667a655e3d700f537f11a5d95f17282bf5809b0355c",
                "md5": "f6486a2d9407b696e61770ac1c8572c5",
                "sha256": "b8eb8254ab292c4edc0ce585e52956df3554d2cd06cb8f213cb8617b5abf53dd"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f6486a2d9407b696e61770ac1c8572c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 34981039,
            "upload_time": "2024-02-06T08:12:37",
            "upload_time_iso_8601": "2024-02-06T08:12:37.653885Z",
            "url": "https://files.pythonhosted.org/packages/df/10/b520996cd6b132820667a655e3d700f537f11a5d95f17282bf5809b0355c/splinepy-0.0.51-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fdc58cd9b24081a4b3924ca9e918f39b304b59bf4245ee9be2e6ffce9ceab74a",
                "md5": "567bf441919c2d45550ea12a10455ae5",
                "sha256": "70e8c834bea07e13904e217d7aa7101b435b8749ce40c45dc733750dd5ed2d38"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "567bf441919c2d45550ea12a10455ae5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 62389341,
            "upload_time": "2024-02-06T08:12:41",
            "upload_time_iso_8601": "2024-02-06T08:12:41.573499Z",
            "url": "https://files.pythonhosted.org/packages/fd/c5/8cd9b24081a4b3924ca9e918f39b304b59bf4245ee9be2e6ffce9ceab74a/splinepy-0.0.51-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "603070964fba45c7f61ffe3a936b420edc51241d820da8333350c1a12cf8714a",
                "md5": "7f5a0564fe0b0742a99cdb02f4b41e9d",
                "sha256": "1969e0245f098f4d7f55fd662e913b3cf1713fe90c676a1eae5a247838bc5814"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7f5a0564fe0b0742a99cdb02f4b41e9d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 39262557,
            "upload_time": "2024-02-06T08:12:45",
            "upload_time_iso_8601": "2024-02-06T08:12:45.319479Z",
            "url": "https://files.pythonhosted.org/packages/60/30/70964fba45c7f61ffe3a936b420edc51241d820da8333350c1a12cf8714a/splinepy-0.0.51-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e026f457e6af35455205da0982f9559aa9178ca6bf76cf4b81c82ceefa1bd483",
                "md5": "5e97c423fcaa0f3ab377baa733c77cb7",
                "sha256": "fdee4d969bdc55691a388724cd31b72eb1c80c0a7218b3f3c3407d7179c2b1d2"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "5e97c423fcaa0f3ab377baa733c77cb7",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 34629545,
            "upload_time": "2024-02-06T08:12:49",
            "upload_time_iso_8601": "2024-02-06T08:12:49.336350Z",
            "url": "https://files.pythonhosted.org/packages/e0/26/f457e6af35455205da0982f9559aa9178ca6bf76cf4b81c82ceefa1bd483/splinepy-0.0.51-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "224f9ec745c349f672520914bea89243551936f8813fe8fd7d5e4940610b07ed",
                "md5": "6166a00118aa3f2d60e88d75a1fd3c37",
                "sha256": "8d20bc60c9d52af94fe86ae50bcfb4199413bf9e0bd0b55054605c24f85e9a59"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6166a00118aa3f2d60e88d75a1fd3c37",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 34847187,
            "upload_time": "2024-02-06T08:12:52",
            "upload_time_iso_8601": "2024-02-06T08:12:52.914358Z",
            "url": "https://files.pythonhosted.org/packages/22/4f/9ec745c349f672520914bea89243551936f8813fe8fd7d5e4940610b07ed/splinepy-0.0.51-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dabb44a8e8a9a94e2258e85e0828531f04fb67bbabf754a57010f55e87756672",
                "md5": "d058beef09c0e27582598501cb5c025a",
                "sha256": "e1dd28347cd6ce8ba7edf7c820ec514bbf0c5b80711072436216544e020d0e83"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d058beef09c0e27582598501cb5c025a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 62307588,
            "upload_time": "2024-02-06T08:12:56",
            "upload_time_iso_8601": "2024-02-06T08:12:56.572756Z",
            "url": "https://files.pythonhosted.org/packages/da/bb/44a8e8a9a94e2258e85e0828531f04fb67bbabf754a57010f55e87756672/splinepy-0.0.51-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "178179c03a2d7a639e631e6992d5778e905e77b7e43f381f76a03af94bd71171",
                "md5": "b6939aa573231b66ea7e57114403ea7e",
                "sha256": "dc7156c828e60a364febd90a579a21c8cd3e1549140b3751f2f365db85f81b5b"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b6939aa573231b66ea7e57114403ea7e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 39264595,
            "upload_time": "2024-02-06T08:13:00",
            "upload_time_iso_8601": "2024-02-06T08:13:00.990985Z",
            "url": "https://files.pythonhosted.org/packages/17/81/79c03a2d7a639e631e6992d5778e905e77b7e43f381f76a03af94bd71171/splinepy-0.0.51-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "39aa25375b94ef0b22d7185d4cc78fd66ef449eebe2c06e551238e4ebd7c0264",
                "md5": "571761e567fa92d7840124e0589d2425",
                "sha256": "24acda3c3566a13731480173375de48c91a37f329ece142405fc8a92301ca03c"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "571761e567fa92d7840124e0589d2425",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 34629313,
            "upload_time": "2024-02-06T08:13:04",
            "upload_time_iso_8601": "2024-02-06T08:13:04.630755Z",
            "url": "https://files.pythonhosted.org/packages/39/aa/25375b94ef0b22d7185d4cc78fd66ef449eebe2c06e551238e4ebd7c0264/splinepy-0.0.51-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "658e8d415dca36abd5979f92a1d16ae38a6cb8e6a4f68d61c92215d42638eaa8",
                "md5": "28319dc246d27262a7f16d8809560971",
                "sha256": "e9e32d999be589fd2b5dc32c8da4daaec2afbc94e0f80c896df0a65b9847ed82"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "28319dc246d27262a7f16d8809560971",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 34892782,
            "upload_time": "2024-02-06T08:13:08",
            "upload_time_iso_8601": "2024-02-06T08:13:08.460252Z",
            "url": "https://files.pythonhosted.org/packages/65/8e/8d415dca36abd5979f92a1d16ae38a6cb8e6a4f68d61c92215d42638eaa8/splinepy-0.0.51-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "488c280e132c2827ddd6dea031a7255f9f7ad8cd235bc2badc4f378a3f8c3b9e",
                "md5": "0063d68362b7c4ffdb62a9b169a2af90",
                "sha256": "25f8af773c83fcf8787fe53e9ec51c80d2a46af23377aa06f407972cb3730616"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0063d68362b7c4ffdb62a9b169a2af90",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 62320567,
            "upload_time": "2024-02-06T08:13:13",
            "upload_time_iso_8601": "2024-02-06T08:13:13.589605Z",
            "url": "https://files.pythonhosted.org/packages/48/8c/280e132c2827ddd6dea031a7255f9f7ad8cd235bc2badc4f378a3f8c3b9e/splinepy-0.0.51-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b260372cb3f7180b265cd5edb538a390674fbe9a9bcb9288b5e29c912f10fca2",
                "md5": "6ca8493b25ba987ff824d96a30cb5d78",
                "sha256": "72cee0a8a200bc6be988162c27507a4d4d54551c37de0dcdbc463828651b34c5"
            },
            "downloads": -1,
            "filename": "splinepy-0.0.51.tar.gz",
            "has_sig": false,
            "md5_digest": "6ca8493b25ba987ff824d96a30cb5d78",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 1940144,
            "upload_time": "2024-02-06T08:13:17",
            "upload_time_iso_8601": "2024-02-06T08:13:17.955240Z",
            "url": "https://files.pythonhosted.org/packages/b2/60/372cb3f7180b265cd5edb538a390674fbe9a9bcb9288b5e29c912f10fca2/splinepy-0.0.51.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-06 08:13:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tataratat",
    "github_project": "splinepy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "splinepy"
}
        
Elapsed time: 0.18632s