# ![Splipy Logo](images/logo_small.svg) SpliPy
This repository contains the SpliPy packages. SpliPy is a pure python library
for the creation, evaluation and manipulation of B-spline and NURBS geometries.
It supports n-variate splines of any dimension, but emphasis is made on the
use of curves, surfaces and volumes. The library is designed primarily for
analysis use, and therefore allows fine-grained control over many aspects which
is not possible to achieve with conventional CAD tools.
## Features
SpliPy allows for the generation of parametric curves, surfaces and volumes in the form of non-uniform rational B-splines (NURBS). It supports traditional curve- and surface-fitting methods such as (but not limited to)
### Curve fitting
* Bezier curves
* Hermite Interpolation
* Cubic Curve Interpolation
* B-spline Interpolation
* Least Square Fit
### Surface operations
* Sweep
* Revolve
* Loft
* Edge_Curves (interior from four edges)
* Extrude
* Structured Point Cloud Interpolation
* Least Square Fit
**Revolve**
![Revolve](images/revolve.png)
**Sweep**
![Sweep](images/sweep.png)
**Loft**
![Loft](images/loft.png)
### Volume operations
* Revolve
* Extrude
* Loft
* Structured Point Cloud Interpolation
* Least Square Fit
In addition to these basic building blocks, it also supports a number of primitive shapes such as (but not limited to)
### Primitive shapes
* Cube
* Circle
* Disc
* Cylinder
* Torus
* Teapot
## Examples
### Derivatives of spline curves
``` python
from splipy import *
import numpy as np
n = 250 # number of evaluation points
c = curve_factory.circle() # create the NURBS circle (r=1)
t = np.linspace(c.start(0), c.end(0), n) # parametric evaluation points
x = c(t) # physical (x,y)-coordinates, size (n,2)
v = c.derivative(t, 1) # velocity at all points
a = c.derivative(t, 2) # acceleration at all points
```
![Missing circle animation](http://i.imgur.com/8MaBiTW.gif "Circle animation")
### Curve fitting
Lissajous curves are a family of parametric curves of the type
```
x = A sin(at+d)
y = B sin(bt)
```
More info: [https://en.wikipedia.org/wiki/Lissajous_curve](https://en.wikipedia.org/wiki/Lissajous_curve). Stripping the [animation parts of the code](https://github.com/sintefmath/Splipy/blob/master/examples/lissajous.py), one can generate these curves in the following way
``` python
from splipy import *
import numpy as np
from fractions import gcd
def lissajous(a, b, d):
# request a,b integers, so we have closed, periodic curves
n = np.gcd(a,b)
N = (a/n) * (b/n) # number of periods before looping
# compute a set of interpolation points
numb_pts = max(3*N, 100) # using 3N interpolation points is decent enough
t = np.linspace(0,2*np.pi/n, numb_pts)
x = np.array([np.sin(a*t + d), np.sin(b*t)])
# do a cubic curve interpolation with periodic boundary conditions
my_curve = curve_factory.cubic_curve(x.T, curve_factory.Boundary.PERIODIC)
```
![Missing Lissajous curve animation](http://i.imgur.com/HKr59BT.gif "lissajous(3,4,pi/2)")
Animation of the lissajous curve with a=3, b=4 and d=pi/2
### Surface Sweep
This produces the trefoil knot shown above
``` python
from splipy import *
from numpy import pi,cos,sin,transpose,array,sqrt
# define a parametric representation of the trefoil knot (to be sampled)
def trefoil(u):
x = [41*cos(u) - 18*sin( u) - 83*cos(2*u) - 83*sin(2*u) - 11*cos(3*u) + 27*sin(3*u),
36*cos(u) + 27*sin( u) - 113*cos(2*u) + 30*sin(2*u) + 11*cos(3*u) - 27*sin(3*u),
45*sin(u) - 30*cos(2*u) + 113*sin(2*u) - 11*cos(3*u) + 27*sin(3*u)]
return transpose(array(x))
knot_curve = curve_factory.fit(trefoil, 0, 2*pi) # adaptive curve fit of trefoil knot
square_curve = 15 * curve_factory.n_gon(4) # square cross-section
my_surface = surface_factory.sweep(crv, square) # sweep out the surface
```
### Working with the controlpoints
``` python
>>> from splipy import *
>>> my_curve = curve_factory.circle(r=3)
>>> print(my_curve[0])
[3. 0. 1.]
>>> print(my_curve[1])
[2.12132034 2.12132034 0.70710678]
>>> for controlpoint in my_curve:
... print(controlpoint)
[3. 0. 1.]
[2.12132034 2.12132034 0.70710678]
[0. 3. 1.]
[-2.12132034 2.12132034 0.70710678]
[-3. 0. 1.]
[-2.12132034 -2.12132034 0.70710678]
[ 0. -3. 1.]
[ 2.12132034 -2.12132034 0.70710678]
```
### Creating STL files
STL files are used extensively for 3D representation and is one of the only supported formats for 3D printing.
``` python
from splipy.io import STL
from splipy import surface_factory
# create a NURBS torus
my_torus = surface_factory.torus(minor_r=1, major_r=4)
# STL files are tessellated linear triangles. View with i.e. meshlab
with STL('torus.stl') as my_file:
my_file.write(my_torus, n=(50, 150)) # specify resolution of 50x150 evaluation pts
```
**Torus tessellation as viewed in Meshlab**
![Torus](images/torus.png)
## Citations
If you use Splipy in your work, please consider citing
[K. A. Johannessen and E. Fonn 2020 *J. Phys.: Conf. Ser.* **1669** 012032](https://iopscience.iop.org/article/10.1088/1742-6596/1669/1/012032/meta).
Raw data
{
"_id": null,
"home_page": "https://github.com/sintef/Splipy",
"name": "Splipy",
"maintainer": "Kjetil Andre Johannessen",
"docs_url": "https://pythonhosted.org/Splipy/",
"requires_python": "",
"maintainer_email": "kjetijo@gmail.com",
"keywords": "Bspline,Splines,NURBS,Curve,Surface,Volume,Interpolation,Approximation,Fit,Integration,Differentiation",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/ab/be/adc10954fe010ff66dd805bb11ea13485717ad6a6a618b486636f9442e40/Splipy-1.8.2.tar.gz",
"platform": null,
"description": "\n# ![Splipy Logo](images/logo_small.svg) SpliPy\n\nThis repository contains the SpliPy packages. SpliPy is a pure python library\nfor the creation, evaluation and manipulation of B-spline and NURBS geometries.\nIt supports n-variate splines of any dimension, but emphasis is made on the\nuse of curves, surfaces and volumes. The library is designed primarily for\nanalysis use, and therefore allows fine-grained control over many aspects which\nis not possible to achieve with conventional CAD tools.\n\n## Features\n\nSpliPy allows for the generation of parametric curves, surfaces and volumes in the form of non-uniform rational B-splines (NURBS). It supports traditional curve- and surface-fitting methods such as (but not limited to)\n\n### Curve fitting\n* Bezier curves\n* Hermite Interpolation\n* Cubic Curve Interpolation\n* B-spline Interpolation\n* Least Square Fit\n\n### Surface operations\n* Sweep\n* Revolve\n* Loft\n* Edge_Curves (interior from four edges)\n* Extrude\n* Structured Point Cloud Interpolation\n* Least Square Fit\n\n**Revolve**\n![Revolve](images/revolve.png)\n\n**Sweep**\n![Sweep](images/sweep.png)\n\n**Loft**\n![Loft](images/loft.png)\n\n### Volume operations\n* Revolve\n* Extrude\n* Loft\n* Structured Point Cloud Interpolation\n* Least Square Fit\n\nIn addition to these basic building blocks, it also supports a number of primitive shapes such as (but not limited to)\n\n### Primitive shapes\n* Cube\n* Circle\n* Disc\n* Cylinder\n* Torus\n* Teapot\n\n## Examples\n\n### Derivatives of spline curves\n``` python\n from splipy import *\n import numpy as np\n\n n = 250 # number of evaluation points\n c = curve_factory.circle() # create the NURBS circle (r=1)\n t = np.linspace(c.start(0), c.end(0), n) # parametric evaluation points\n x = c(t) # physical (x,y)-coordinates, size (n,2)\n v = c.derivative(t, 1) # velocity at all points\n a = c.derivative(t, 2) # acceleration at all points\n```\n\n![Missing circle animation](http://i.imgur.com/8MaBiTW.gif \"Circle animation\")\n\n### Curve fitting\nLissajous curves are a family of parametric curves of the type\n\n```\nx = A sin(at+d)\ny = B sin(bt)\n```\n\nMore info: [https://en.wikipedia.org/wiki/Lissajous_curve](https://en.wikipedia.org/wiki/Lissajous_curve). Stripping the [animation parts of the code](https://github.com/sintefmath/Splipy/blob/master/examples/lissajous.py), one can generate these curves in the following way\n\n\n``` python\nfrom splipy import *\nimport numpy as np\nfrom fractions import gcd\n\ndef lissajous(a, b, d):\n # request a,b integers, so we have closed, periodic curves\n n = np.gcd(a,b)\n N = (a/n) * (b/n) # number of periods before looping\n\n # compute a set of interpolation points\n numb_pts = max(3*N, 100) # using 3N interpolation points is decent enough\n t = np.linspace(0,2*np.pi/n, numb_pts)\n x = np.array([np.sin(a*t + d), np.sin(b*t)])\n\n# do a cubic curve interpolation with periodic boundary conditions\nmy_curve = curve_factory.cubic_curve(x.T, curve_factory.Boundary.PERIODIC)\n```\n\n![Missing Lissajous curve animation](http://i.imgur.com/HKr59BT.gif \"lissajous(3,4,pi/2)\")\n\nAnimation of the lissajous curve with a=3, b=4 and d=pi/2\n\n### Surface Sweep\n\nThis produces the trefoil knot shown above\n\n``` python\nfrom splipy import *\nfrom numpy import pi,cos,sin,transpose,array,sqrt\n\n# define a parametric representation of the trefoil knot (to be sampled)\ndef trefoil(u):\n x = [41*cos(u) - 18*sin( u) - 83*cos(2*u) - 83*sin(2*u) - 11*cos(3*u) + 27*sin(3*u),\n 36*cos(u) + 27*sin( u) - 113*cos(2*u) + 30*sin(2*u) + 11*cos(3*u) - 27*sin(3*u),\n 45*sin(u) - 30*cos(2*u) + 113*sin(2*u) - 11*cos(3*u) + 27*sin(3*u)]\n return transpose(array(x))\n\nknot_curve = curve_factory.fit(trefoil, 0, 2*pi) # adaptive curve fit of trefoil knot\nsquare_curve = 15 * curve_factory.n_gon(4) # square cross-section\nmy_surface = surface_factory.sweep(crv, square) # sweep out the surface\n```\n\n### Working with the controlpoints\n\n``` python\n>>> from splipy import *\n>>> my_curve = curve_factory.circle(r=3)\n>>> print(my_curve[0])\n[3. 0. 1.]\n>>> print(my_curve[1])\n[2.12132034 2.12132034 0.70710678]\n>>> for controlpoint in my_curve:\n... print(controlpoint)\n[3. 0. 1.]\n[2.12132034 2.12132034 0.70710678]\n[0. 3. 1.]\n[-2.12132034 2.12132034 0.70710678]\n[-3. 0. 1.]\n[-2.12132034 -2.12132034 0.70710678]\n[ 0. -3. 1.]\n[ 2.12132034 -2.12132034 0.70710678]\n```\n\n### Creating STL files\n\nSTL files are used extensively for 3D representation and is one of the only supported formats for 3D printing.\n\n``` python\nfrom splipy.io import STL\nfrom splipy import surface_factory\n\n# create a NURBS torus\nmy_torus = surface_factory.torus(minor_r=1, major_r=4)\n\n# STL files are tessellated linear triangles. View with i.e. meshlab\nwith STL('torus.stl') as my_file:\n my_file.write(my_torus, n=(50, 150)) # specify resolution of 50x150 evaluation pts\n```\n\n**Torus tessellation as viewed in Meshlab**\n![Torus](images/torus.png)\n\n\n## Citations\n\nIf you use Splipy in your work, please consider citing\n[K. A. Johannessen and E. Fonn 2020 *J. Phys.: Conf. Ser.* **1669** 012032](https://iopscience.iop.org/article/10.1088/1742-6596/1669/1/012032/meta).\n",
"bugtrack_url": null,
"license": "GNU public license v3",
"summary": "Spline modelling library for Python",
"version": "1.8.2",
"project_urls": {
"Homepage": "https://github.com/sintef/Splipy"
},
"split_keywords": [
"bspline",
"splines",
"nurbs",
"curve",
"surface",
"volume",
"interpolation",
"approximation",
"fit",
"integration",
"differentiation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "804a428726937737ee816b208e1221869dfca7db92792791b44da13014825c9b",
"md5": "f892d976801c0129ea7bfa6212a0aac5",
"sha256": "c495479ed37b9d85f3743e26125c4a5e91518363ff001c40fe0fc52771ee9b7d"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "f892d976801c0129ea7bfa6212a0aac5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 204386,
"upload_time": "2024-02-06T21:31:48",
"upload_time_iso_8601": "2024-02-06T21:31:48.665029Z",
"url": "https://files.pythonhosted.org/packages/80/4a/428726937737ee816b208e1221869dfca7db92792791b44da13014825c9b/Splipy-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6def83f9a74e3eb0f2b198c2e2ede32ca436461f6e4fbdf1e2d6af6cd119d6db",
"md5": "d13024a3b3d1efda9aca49b23635ba33",
"sha256": "a751eac96bedc1432426f5d5fa3b3647c968c16cbd62234661c6f3d533b09973"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d13024a3b3d1efda9aca49b23635ba33",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 584413,
"upload_time": "2024-02-06T21:31:50",
"upload_time_iso_8601": "2024-02-06T21:31:50.323312Z",
"url": "https://files.pythonhosted.org/packages/6d/ef/83f9a74e3eb0f2b198c2e2ede32ca436461f6e4fbdf1e2d6af6cd119d6db/Splipy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "21975de346e4c64cca2fea26300e3ab8b04d1c6dd6b93756276262d00797d3d7",
"md5": "993323d7636de9b8afe8b0de105e73ee",
"sha256": "64ad578561b268b37f3f0327f835971c9017943b20a426dab16f32f7208a3770"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "993323d7636de9b8afe8b0de105e73ee",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 564786,
"upload_time": "2024-02-06T21:31:52",
"upload_time_iso_8601": "2024-02-06T21:31:52.065774Z",
"url": "https://files.pythonhosted.org/packages/21/97/5de346e4c64cca2fea26300e3ab8b04d1c6dd6b93756276262d00797d3d7/Splipy-1.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e168154c3fd4ca72da67d1a37523af4963189acdcf12ed61a7d749fd7dcfd48b",
"md5": "b4b97772b1d45800108bce8bbe877b46",
"sha256": "bb6ed49d7070da2679ec78c03823c30635f067015b8cbba19cc3890dbf65804c"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "b4b97772b1d45800108bce8bbe877b46",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 183042,
"upload_time": "2024-02-06T21:31:53",
"upload_time_iso_8601": "2024-02-06T21:31:53.882013Z",
"url": "https://files.pythonhosted.org/packages/e1/68/154c3fd4ca72da67d1a37523af4963189acdcf12ed61a7d749fd7dcfd48b/Splipy-1.8.2-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4bda82ef723ca7faa9b3dcfa33d44e95fb480ddd92d1664f199063134b338adf",
"md5": "fa48b4d50bc92f42cd4c0058b7e18b2a",
"sha256": "48d485b9f4c9a8b229aea345e9dde5a768cdca4844ddde8808405eda8629febd"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "fa48b4d50bc92f42cd4c0058b7e18b2a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 195011,
"upload_time": "2024-02-06T21:31:55",
"upload_time_iso_8601": "2024-02-06T21:31:55.603169Z",
"url": "https://files.pythonhosted.org/packages/4b/da/82ef723ca7faa9b3dcfa33d44e95fb480ddd92d1664f199063134b338adf/Splipy-1.8.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "831603462cdefad8af905e5dd08f97d29365f308c114a81e97575de8ab3769d0",
"md5": "6b48633d9692f3829b32e2ccbd33d972",
"sha256": "109dc9fce6591ee8bf31906786480ee3b88a20c8abf758261dce55d11226fc8d"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6b48633d9692f3829b32e2ccbd33d972",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 204158,
"upload_time": "2024-02-06T21:31:57",
"upload_time_iso_8601": "2024-02-06T21:31:57.430940Z",
"url": "https://files.pythonhosted.org/packages/83/16/03462cdefad8af905e5dd08f97d29365f308c114a81e97575de8ab3769d0/Splipy-1.8.2-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4932a4c54fb41243203012447da63a3f8081579fe66f20434ec023e1662206b4",
"md5": "442f0e5020b6207002559ac4f8b903f3",
"sha256": "6a6d0bafdfe085cc7f2aed15f5afde6241d327fff25eb4e26adb13f8cc3b2082"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "442f0e5020b6207002559ac4f8b903f3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 621502,
"upload_time": "2024-02-06T21:31:58",
"upload_time_iso_8601": "2024-02-06T21:31:58.935547Z",
"url": "https://files.pythonhosted.org/packages/49/32/a4c54fb41243203012447da63a3f8081579fe66f20434ec023e1662206b4/Splipy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2f1752826c75fa2e5ca04f9a0e4ee8fc397c0c11fcbca7aa0811e55eadf02efe",
"md5": "6a84dfbb9c435d746a3c7370f5cade58",
"sha256": "f5d092d23a8e1f9b3a8e4cece1c6fc87ffaf8eb09389a1f61d41702bdd9d196c"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "6a84dfbb9c435d746a3c7370f5cade58",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 600243,
"upload_time": "2024-02-06T21:32:01",
"upload_time_iso_8601": "2024-02-06T21:32:01.119266Z",
"url": "https://files.pythonhosted.org/packages/2f/17/52826c75fa2e5ca04f9a0e4ee8fc397c0c11fcbca7aa0811e55eadf02efe/Splipy-1.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0f544f9878a76bd4ba3d156157152795517ed390791dec96ef57ee8ccfec5154",
"md5": "dcd6cf12ca1f5c6b1f63fd2f6f80e2c6",
"sha256": "a432f8b4f800fb140f578e42356bb8a033f1827f90bbafda22bdd9577e104f9d"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "dcd6cf12ca1f5c6b1f63fd2f6f80e2c6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 182759,
"upload_time": "2024-02-06T21:32:02",
"upload_time_iso_8601": "2024-02-06T21:32:02.538485Z",
"url": "https://files.pythonhosted.org/packages/0f/54/4f9878a76bd4ba3d156157152795517ed390791dec96ef57ee8ccfec5154/Splipy-1.8.2-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "265830b0b1539bc36c25bdb493b2394ef560921a73f9ee45207b776a10e69c8f",
"md5": "72a9c5ec5a2ef80ab9412c2f99e87d4c",
"sha256": "6b897b354ebc5426f06691a93be2de002515feb7369b32d3a23d2134704be59d"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "72a9c5ec5a2ef80ab9412c2f99e87d4c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 195078,
"upload_time": "2024-02-06T21:32:04",
"upload_time_iso_8601": "2024-02-06T21:32:04.708047Z",
"url": "https://files.pythonhosted.org/packages/26/58/30b0b1539bc36c25bdb493b2394ef560921a73f9ee45207b776a10e69c8f/Splipy-1.8.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b1f1a381ffaef89efd9b02aca9f8334bc6a9007448b91bef3a13ecc6c740216",
"md5": "ae8ea09b3ba8288466b393641f0f0c4c",
"sha256": "34b93829f3ae41179c9c108bad718a4f3e3b3f0c73251c1c5d1a6ef37336ffba"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ae8ea09b3ba8288466b393641f0f0c4c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 205527,
"upload_time": "2024-02-06T21:32:08",
"upload_time_iso_8601": "2024-02-06T21:32:08.103213Z",
"url": "https://files.pythonhosted.org/packages/9b/1f/1a381ffaef89efd9b02aca9f8334bc6a9007448b91bef3a13ecc6c740216/Splipy-1.8.2-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d8aba452b0bb8b5b0c690162a37fa63bbf800cd2a1be44d4a78f9d5c8d44c3f4",
"md5": "3b4955e0407b7b1e94a7041d6f10505d",
"sha256": "da6fbfdad47a0db77f5acbfca519db14948ec53d0270dad3adafc720ddb8d8cf"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3b4955e0407b7b1e94a7041d6f10505d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 611847,
"upload_time": "2024-02-06T21:32:09",
"upload_time_iso_8601": "2024-02-06T21:32:09.491571Z",
"url": "https://files.pythonhosted.org/packages/d8/ab/a452b0bb8b5b0c690162a37fa63bbf800cd2a1be44d4a78f9d5c8d44c3f4/Splipy-1.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a115ca6a5ebf3671a80dfedbb536345e706dbdd93f3b9f46e3806fdcebd32190",
"md5": "a1b6d1efdb40607e6da1aa83bbe79dbf",
"sha256": "a444865ac3cc7e470595db736630ea3cff4837e71755a715153e43ec483a49cc"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "a1b6d1efdb40607e6da1aa83bbe79dbf",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 592174,
"upload_time": "2024-02-06T21:32:11",
"upload_time_iso_8601": "2024-02-06T21:32:11.541161Z",
"url": "https://files.pythonhosted.org/packages/a1/15/ca6a5ebf3671a80dfedbb536345e706dbdd93f3b9f46e3806fdcebd32190/Splipy-1.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b17a1ed4724cc29f1691d0425478f3b102af26830f2590a94e2a5b9c8154866b",
"md5": "9b6bc1cbca42e111e044e132c8b814bc",
"sha256": "8fc45af9e9ea7a058752c665f186b892c33acef3d6f36a85d59872f8b109ef1b"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "9b6bc1cbca42e111e044e132c8b814bc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 183288,
"upload_time": "2024-02-06T21:32:12",
"upload_time_iso_8601": "2024-02-06T21:32:12.886780Z",
"url": "https://files.pythonhosted.org/packages/b1/7a/1ed4724cc29f1691d0425478f3b102af26830f2590a94e2a5b9c8154866b/Splipy-1.8.2-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ed6f0effd9ea6e34ea1b9d5c16bb2e75fd39a8d88ad316c38dd0869a3e7d12a",
"md5": "1280aa7156d4777bf8f8315205dd9bbc",
"sha256": "a2e46d845ce1f479d915346bce0a6aaaafa42287d10a6531d4612e2c4f75653b"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "1280aa7156d4777bf8f8315205dd9bbc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 195602,
"upload_time": "2024-02-06T21:32:14",
"upload_time_iso_8601": "2024-02-06T21:32:14.119735Z",
"url": "https://files.pythonhosted.org/packages/6e/d6/f0effd9ea6e34ea1b9d5c16bb2e75fd39a8d88ad316c38dd0869a3e7d12a/Splipy-1.8.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "01959004a7737e8ff7e438dfd3a39d81bfd28df356657ec390f208bcd8b21660",
"md5": "bdc39510fadd817b84afbf98f0046ecb",
"sha256": "60ec81b85a6f16fc229f0a5be5b09f313dc9cc60168ced23448141f945af900e"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "bdc39510fadd817b84afbf98f0046ecb",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 204987,
"upload_time": "2024-02-06T21:32:16",
"upload_time_iso_8601": "2024-02-06T21:32:16.327459Z",
"url": "https://files.pythonhosted.org/packages/01/95/9004a7737e8ff7e438dfd3a39d81bfd28df356657ec390f208bcd8b21660/Splipy-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "194a894bf0a619d6ba30f9af09b84e45658c73e3cf0dcf334e1d8648b0cb3d3a",
"md5": "2849be3c2d5e8cb300278256879248c6",
"sha256": "c9177b0fd5316bd1f1358e4d3065ce63b9e790dd917b768ad0e16ec5d3497382"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2849be3c2d5e8cb300278256879248c6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 586281,
"upload_time": "2024-02-06T21:32:17",
"upload_time_iso_8601": "2024-02-06T21:32:17.543095Z",
"url": "https://files.pythonhosted.org/packages/19/4a/894bf0a619d6ba30f9af09b84e45658c73e3cf0dcf334e1d8648b0cb3d3a/Splipy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0132b9c71491e2a0275b1414048fcea257ec14782ae5e71db6e8160381aea8a0",
"md5": "7d9fcf5bde7c986e20fb9b19eaa78cfb",
"sha256": "9b7cd9550a9bafe7943b1d322f955c07fe857bbe627e7dc50576607704f67b56"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "7d9fcf5bde7c986e20fb9b19eaa78cfb",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 567751,
"upload_time": "2024-02-06T21:32:19",
"upload_time_iso_8601": "2024-02-06T21:32:19.505867Z",
"url": "https://files.pythonhosted.org/packages/01/32/b9c71491e2a0275b1414048fcea257ec14782ae5e71db6e8160381aea8a0/Splipy-1.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e8631c04f41163efef69a905c663ad08c988ab9357d463bd05d7cbc67ebb49cc",
"md5": "221fd9d28837b3d01dbaeb3ad66afcc9",
"sha256": "1bbfa0b31a8f2e227670fb099003d3c15fae144efaa3089c2d737268d07a1c8f"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "221fd9d28837b3d01dbaeb3ad66afcc9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 183712,
"upload_time": "2024-02-06T21:32:20",
"upload_time_iso_8601": "2024-02-06T21:32:20.761430Z",
"url": "https://files.pythonhosted.org/packages/e8/63/1c04f41163efef69a905c663ad08c988ab9357d463bd05d7cbc67ebb49cc/Splipy-1.8.2-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e4f891089e56890b4141ad80b48144bb944f619fe4edc27169f5abb5e5bd3769",
"md5": "d59fade3c18aff5b0bdf48a2ec94957f",
"sha256": "e23eed336889bc6688b97c8d231108e52889f59ce0084bba37379ce665b29421"
},
"downloads": -1,
"filename": "Splipy-1.8.2-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "d59fade3c18aff5b0bdf48a2ec94957f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 195530,
"upload_time": "2024-02-06T21:32:22",
"upload_time_iso_8601": "2024-02-06T21:32:22.026476Z",
"url": "https://files.pythonhosted.org/packages/e4/f8/91089e56890b4141ad80b48144bb944f619fe4edc27169f5abb5e5bd3769/Splipy-1.8.2-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "abbeadc10954fe010ff66dd805bb11ea13485717ad6a6a618b486636f9442e40",
"md5": "0d7b24937e4e38673a2a7a5762acb209",
"sha256": "201ee38bd5f0d0dc57c0d6efe350ccd493521dd3b730348295b61306e9ee4ac6"
},
"downloads": -1,
"filename": "Splipy-1.8.2.tar.gz",
"has_sig": false,
"md5_digest": "0d7b24937e4e38673a2a7a5762acb209",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 264607,
"upload_time": "2024-02-06T21:32:23",
"upload_time_iso_8601": "2024-02-06T21:32:23.847902Z",
"url": "https://files.pythonhosted.org/packages/ab/be/adc10954fe010ff66dd805bb11ea13485717ad6a6a618b486636f9442e40/Splipy-1.8.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-06 21:32:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sintef",
"github_project": "Splipy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "splipy"
}