PyPI link to release 0.10.0 Documentation for release 0.10.0

Python Changes

Breaking Changes

  • Support for Python 2.7 has been dropped. With the impending EOL of Python 2.7 on January 1, 2020 many of the bezier dependencies such as numpy, scipy and pytest have dropped support for Python 2.7 in their latest releases. Some changes related to this include:

    • Removing support for Python 2.7 (3eaa5aa).

    • Updating all PyPy usage to be Python 3 only (1e3037f).

    • Removing _bool_patch.h (4ccc559).


  • Integrating black code formatter into the nox -s lint session to ensure consistent formatting (e659532).

  • Fully automating the building of wheels in the bezier-wheels project (recent commits). Built wheels are uploaded to a Google Cloud Storage bucket.

  • Using the same set of optimal flags for Fortran 77 code (i.e. .f files) that are used for Fortran 90 code (i.e. .f90 files) (e7eb56e).

  • Unify requirements.txt files and add notes about why each dependency is required (230814d, 1ae147f, e710ee6).

  • Changing imp usage to importlib due to deprecation of the former (9231d92). Fixed #137.

  • Ditching the --check-archs flag in the macOS script for building wheels since we can no longer support 32-bit on macOS due to NumPy (37be384).

  • Improved dev experience with Docker image used on CircleCI by adding a .dockerignore file for faster builds, suggesting --workdir and flag during local dev, setting WHEELHOUSE environment variable directly in the container (rather than in the CircleCI settings) and allowing “default” locations for pre-built wheels at /wheelhouse and ${HOME}/wheelhouse (08be336, 26acc38, 7634779, f9a8fcf).


  • Make some functional test cases more lenient so that they pass on 32-bit CentOS 5, which is used for manylinux (e7eb56e). This was part of a large effort to fully automate the building of wheels in the bezier-wheels project.

  • Replacing pypy with pypy3 in testing as the only non-CPython “unofficially supported” runtime. (This is part of the drop in support for Python 2.7.) Unfortunately the currently (as of August 2019) released versions of pypy3 are not currently working with numpy >= 1.16 (see numpy/numpy#12740) so the numpy == 1.15.4 version is a pinned dependency.

    • Specifying the NumPy version in setup.py based on implementation_name (7e9046d).

    • Add _pypy_speedup.c built with Cython 0.29.11 because the latest Cython (0.29.13 as of August 2019) corresponds to the versions of NumPy that are incompatible with PyPy (7813e41).

    • Pinning to numpy==1.15.4 and scipy==1.2.0 in wheelhouse for pre-built Docker container (7634779).

  • Added nox -s validate_functional_test_cases session to ensure that functional test cases always adhere to the JSON schema.

    • Added nox session and fixed some schema file bugs (618653a).

    • Fixed curve intersections that did not adhere to schema (35b158a).

    • Transposed nodes schema for curved polygon (8c3ca89).

    • Enable the nox session to run in CircleCI (5a0a343).

  • Updated @slow marker for pytest because it used a deprecated API (46f8b57).


  • Changing all references to Mac OS X to macOS (b10c2fc, c1c2c6b, 131d17b). As of 10.12, the operating system has changed its name.

  • Splitting up algorithms/helpers. The pre-amble has been moved into the algorithms landing page and the geometric and algebraic helpers have been moved into separate docs. (889c913).