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.
- Getting-started guide - tutorial page (run with jupyter to get interactive features)
- Examples page - stand-alone executables of different applications
- API documentation - technical details on all functions
Required
This library requires numpy and scipy. E.g. on Ubuntu:
pip install numpy pip install scipy pip install cython
Optional
To use image processing tools, you need OpenCV
pip install python-opencv
To generate the documentation you will need Sphinx:
pip install sphinx
And to run the tests you can use your favourite test runner, for example pytest:
pip install pytest pytest-benchmark
To install, use:
python setup.py build_ext --inplace python setup.py install
To generate a package, use:
python setup.py sdist --dist-dir .
To generate the documentation, run in the doc folder:
make html
To push generated docs online on the gh-pages
branch, run the helper script:
python push_documentation.py [remote]
where remote
is the name of the remote to push to. If not given, it will be asked.
To run the tests, you can use your favourite test runner. For example, with pytest:
py.test splipy test_utils --benchmark-skip
You can use pylint3 to perform static code analysis on the module. This can help identify bugs and give suggestions for improvements.
To install, use:
pip3 install pylint
To perform the code analysis, use:
pylint -d C --rcfile=pylint.cfg splipy/
To make a new release, it is recommended to install bumpversion. To make a new release, run:
bumpversion <type>
where type is one of patch, minor or major. This will up the version number, create a commit and a tag. To push this to github, use:
git push --tags
After that, to create the actual packages, run:
rm -rf dist python setup.py sdist python setup.py bdist_wheel --universal
to create a source distribution and a wheel. These can then be uploaded where they need to be uploaded. The recommended way to do that is using twine:
twine upload dist/* -r <index>
Where index is the name of the index in your ~/.pypirc where you want to upload.