Bezier

Latest version: v2024.6.20

Safety actively analyzes 701139 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 22

2024.6.20

[![PyPI link to release 2024.6.20](https://img.shields.io/pypi/v/bezier/2024.6.20.svg)](https://pypi.org/project/bezier/2024.6.20/) [![Documentation for release 2024.6.20](https://readthedocs.org/projects/bezier/badge/?version=2024.6.20)](https://bezier.readthedocs.io/en/2024.6.20/)

`libbezzier` Changes

Packaging

- Stop building with `-static` on Windows ([\311](https://github.com/dhermes/bezier/pull/311)). This is entirely enabled by the amazing [delvewheel](https://github.com/adang1345/delvewheel) project (non-static dependencies can now easily be packaged into a built wheel for Python).

Python Changes

Packaging

- Added support for Python 3.12 ([\315](https://github.com/dhermes/bezier/pull/315)).
- Dropped support for Python 3.8 ([\310](https://github.com/dhermes/bezier/pull/310)) and Python 3.9 ([\#315](https://github.com/dhermes/bezier/pull/315)).

Documentation

- Add `DEVELOPMENT.rst` section about configuring a shell and compilers for Windows development ([\311](https://github.com/dhermes/bezier/pull/311)). This had been a hodge podge of local and remote (CI) development for the last 5+ years, so this a big milestone!

2023.7.28

[![PyPI link to release 2023.7.28](https://img.shields.io/pypi/v/bezier/2023.7.28.svg)](https://pypi.org/project/bezier/2023.7.28/) [![Documentation for release 2023.7.28](https://readthedocs.org/projects/bezier/badge/?version=2023.7.28)](https://bezier.readthedocs.io/en/2023.7.28/)

Robustness

- Fall back to de Casteljau algorithm for evaluation on high degree curves ([264](https://github.com/dhermes/bezier/pull/264)). Fixed [#263](https://github.com/dhermes/bezier/issues/263). The more efficient `evaluate_multi_vs()` [function](https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.hazmat.curve_helpers.html#bezier.hazmat.curve_helpers.evaluate_multi_vs) relies on the ability to compute binomial coefficients `(n C k)` but after `(55 C 26)` these values cannot be computed in floating point without roundoff and for very large degrees these values overflow.

Python Changes

Packaging

- Switched to [delvewheel](https://github.com/adang1345/delvewheel) for repairing Windows wheels ([#307](https://github.com/dhermes/bezier/pull/307)). This is similar to how Linux and macOS packaging already work. This is vastly superior to the homegrown approach previously used with `extra-dll`.
- Dropped support for Python 3.7 and added support for Python 3.10 and 3.11 ([271](https://github.com/dhermes/bezier/pull/271), [#302](https://github.com/dhermes/bezier/pull/302)).
- Add strict check for Python version on source installs. Fixed [278](https://github.com/dhermes/bezier/issues/278).
- Make missing `BEZIER_INSTALL_PREFIX` error message more helpful. In particular, add a suggestion to set `BEZIER_NO_EXTENSION` for a source only install if `BEZIER_INSTALL_PREFIX` cannot be set. Fixed [277](https://github.com/dhermes/bezier/issues/277).
- Use [cibuildwheel](https://github.com/pypa/cibuildwheel) to automate building wheels as part of release ([#308](https://github.com/dhermes/bezier/pull/308)).

Bug Fixes

- Allow the extra DLL directory to be absent on Windows. For binary wheel installs, this directory contains the `libbezier` DLL (e.g. `bezier.libs\bezier-2a44d276.dll`). For pure Python installs, the `bezier.libs` directory will be absent. ([307](https://github.com/dhermes/bezier/pull/307), [#255](https://github.com/dhermes/bezier/pull/255)). Fixed [#254](https://github.com/dhermes/bezier/issues/254).
- Bug fix for `clip_range()` ([doc](https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.hazmat.clipping.html#bezier.hazmat.clipping.clip_range)). Intersections with the `t=0` / `t=1` sides of the fat line were not taken into account **and** a value for `s_max` could be accidentally left unset if the intersections occurred in an order where the `s`-value decreased throughout ([259](https://github.com/dhermes/bezier/pull/259)).

Breaking Changes

- Removing `Surface` alias for the `Triangle` [type](https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.triangle.html#bezier.triangle.Triangle) ([252](https://github.com/dhermes/bezier/pull/252)). The `Surface` type was deprecated (and converted to an alias) in the `2020.1.14` release.

Additive Changes

- Renaming all \"private\" `_verify` args to `verify` ([251](https://github.com/dhermes/bezier/pull/251)). For example, in `Curve.intersect()` ([doc](https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.curve.html#bezier.curve.Curve.intersect))
- Adding provisional support for self-intersection checks in planar curves ([265](https://github.com/dhermes/bezier/pull/265), [#267](https://github.com/dhermes/bezier/pull/267)). Fixed [#165](https://github.com/dhermes/bezier/issues/165) and [#171](https://github.com/dhermes/bezier/issues/171). Supported via `Curve.self_intersections()` [method](https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.curve.html#bezier.curve.Curve.self_intersections).
- Added `alpha` argument to `Triangle.plot()` and `CurvedPolygon.plot()` methods ([296](https://github.com/dhermes/bezier/pull/296)).

Documentation

- Making all docs pages import external packages at least once ([257](https://github.com/dhermes/bezier/pull/257)). Fixed [#210](https://github.com/dhermes/bezier/issues/210).

2021.2.12

[![PyPI link to release 2021.2.12](https://img.shields.io/pypi/v/bezier/2021.2.12.svg)](https://pypi.org/project/bezier/2021.2.12/) [![Documentation for release 2021.2.12](https://readthedocs.org/projects/bezier/badge/?version=2021.2.12)](https://bezier.readthedocs.io/en/2021.2.12/)

Python Changes

Packaging

- Dropped support for Python 3.6 and added support for Python 3.9 ([\246](https://github.com/dhermes/bezier/pull/246)).

Breaking Changes

- Moved non-public / experimental `bezier._clipping` module to `bezier.hazmat.clipping` ([\225](https://github.com/dhermes/bezier/pull/225)).

2020.5.19

[![PyPI link to release 2020.5.19](https://img.shields.io/pypi/v/bezier/2020.5.19.svg)](https://pypi.org/project/bezier/2020.5.19/) [![Documentation for release 2020.5.19](https://readthedocs.org/projects/bezier/badge/?version=2020.5.19)](https://bezier.readthedocs.io/en/2020.5.19/)

Python Changes
--------------

Bug Fixes

- Using `importlib.metadata` to locate `extra-dll` on Windows, caused by the behavior of the `conda`-supplied `setuptools` in Python 3.8 ([\208](https://github.com/dhermes/bezier/pull/208), fixed [\#206](https://github.com/dhermes/bezier/issues/206)).

Breaking Changes

- Created `bezier.hazmat` subpackage (fixed [\170](https://github.com/dhermes/bezier/issues/170)).
- Moved non-public `bezier._py_helpers` module to `bezier.hazmat.helpers` ([\201](https://github.com/dhermes/bezier/pull/201)).
- Moved non-public `bezier._algebraic_intersection` module to `bezier.hazmat.algebraic_intersection` ([\216](https://github.com/dhermes/bezier/pull/216)).
- Moved non-public `bezier._py_curve_helpers` module to `bezier.hazmat.curve_helpers` ([\218](https://github.com/dhermes/bezier/pull/218)).
- Moved non-public `bezier._py_triangle_intersection` module to `bezier.hazmat.triangle_intersection` ([\219](https://github.com/dhermes/bezier/pull/219)).
- Moved non-public `bezier._py_triangle_helpers` module to `bezier.hazmat.triangle_helpers` ([\220](https://github.com/dhermes/bezier/pull/220)).
- Moved non-public `bezier._py_intersection_helpers` module to `bezier.hazmat.intersection_helpers` ([\222](https://github.com/dhermes/bezier/pull/222)).
- Moved non-public `bezier._py_geometric_intersection` module to `bezier.hazmat.geometric_intersection` ([\223](https://github.com/dhermes/bezier/pull/223)).

Documentation
-------------

- Updated `binary-extension` [doc](https://bezier.readthedocs.io/en/2020.5.19/python/binary-extension.html) to refer to `bezier.libs` ([\#211](https://github.com/dhermes/bezier/pull/211)). This is based on a change to `auditwheel` from the [3.1.0 release](https://github.com/pypa/auditwheel/releases/tag/3.1.0).
- Removed `algorithms/algebraic-helpers` document since the `bezier.hazmat.algebraic_intersection` module is now fully documented ([\216](https://github.com/dhermes/bezier/pull/216)).
- Updated from `https://docs.scipy.org/doc/numpy` to `https://numpy.org` for references to the NumPy documentation ([\#221](https://github.com/dhermes/bezier/pull/221)).
- Removed `algorithms/geometric-helpers` document since the functions and classes there are now fully documented in `bezier.hazmat` ([\223](https://github.com/dhermes/bezier/pull/223)).

2020.2.3

[![PyPI link to release 2020.2.3](https://img.shields.io/pypi/v/bezier/2020.2.3.svg)](https://pypi.org/project/bezier/2020.2.3/) [![Documentation for release 2020.2.3](https://readthedocs.org/projects/bezier/badge/?version=2020.2.3)](https://bezier.readthedocs.io/en/2020.2.3/)

ABI Changes
-----------

Packaging

- Introduced first-class build and install support for `libbezier` via [CMake](https://cmake.org/). Achieved with the following PRs

- Added `CMakeLists.txt` files to enable building `libbezier` with [CMake](https://cmake.org/) ([\#175](https://github.com/dhermes/bezier/pull/175)).
- Added `-DTARGET_NATIVE_ARCH:BOOL=OFF` flag to enable portable release builds ([\182](https://github.com/dhermes/bezier/pull/182)).

and closed the following issues

- Use a shared library (rather than a static library) for `libbezier` ([\54](https://github.com/dhermes/bezier/issues/54)).
- Enable Python installs to be "hybrid-editable" ([\56](https://github.com/dhermes/bezier/issues/56)). (This means that the Python files reference the source tree but the built components, i.e. `libbezier` and `_speedup.so`, are already built and utilize caching of [CMake](https://cmake.org/).)
- Use build system other than Python / `distutils` / `setuptools` ([\62](https://github.com/dhermes/bezier/issues/62)).
- Add ability to disable `-march=native` flag to make release builds portable across compatible operating systems ([\181](https://github.com/dhermes/bezier/issues/181)).

Python Changes
--------------

Additive Changes

- Exposing `Curve.evaluate_hodograph()` [method](https://bezier.readthedocs.io/en/2020.2.3/python/reference/bezier.curve.html#bezier.curve.Curve.evaluate_hodograph) as part of the public API ([\191](https://github.com/dhermes/bezier/pull/191)). Fixed [\#138](https://github.com/dhermes/bezier/issues/138).

Packaging

- Removed build dependency on `gfortran` and other heavyweight tools (and hacks) such as `numpy.distutils`. Now, `libbezier` must be built before the Python package can be installed and the install location must be provided via the `BEZIER_INSTALL_PREFIX` environment variable. Achieved with the following PRs
- Requiring prebuilt `libbezier` when building `bezier._speedup` Python binary extension ([\176](https://github.com/dhermes/bezier/pull/176)).
- Support building of wheels on all platforms that depend on `libbezier` ([\182](https://github.com/dhermes/bezier/pull/182)).
- Switch from `manylinux1` to `manylinux2010` for built wheels ([\178](https://github.com/dhermes/bezier/pull/178)).
- Delaying imports of `pkg_resources`, `scipy` and `sympy` until actually needed (if ever) ([\194](https://github.com/dhermes/bezier/pull/194), [\#195](https://github.com/dhermes/bezier/pull/195), [38602d8](https://github.com/dhermes/bezier/commit/38602d88714b5358fdab2730392c7bbf27b2b8c2)).
- Adding `matplotlib` to `pip install bezier[full]` ([8beb036](https://github.com/dhermes/bezier/commit/8beb036ce06decb26ae25de118a8a3778c18c519)).
- Avoiding `bezier.dll` name collision on Windows in wheels distributed on PyPI ([\190](https://github.com/dhermes/bezier/pull/190)). Fixed [\#189](https://github.com/dhermes/bezier/issues/189).

Breaking Changes

- Removed `bezier.get_dll()` helper ([\184](https://github.com/dhermes/bezier/pull/184)).

Documentation
-------------

- Changed "Read the Docs" landing page to point to `.../stable/` documentation (i.e. the last published release) instead of `.../latest` documentation (i.e. the last **merged** commit).
- Making sure [CMake](https://cmake.org/) installed trees (on Linux, macOS and Windows) are verified in `doctest` as part of CI ([48e4166](https://github.com/dhermes/bezier/commit/48e416651878f02f7fce35e4944c56ba98463427)).
- Making sure `example_*.c` ABI examples are compiled and run (on Linux and macOS) in `doctest` as part of CI ([ffdcdf7](https://github.com/dhermes/bezier/commit/ffdcdf7e0b6608bb2a2b37337abbf49090f922c2), [9551495](https://github.com/dhermes/bezier/commit/95514952d54224d52d909876cb54bb75e672b653), [0766649](https://github.com/dhermes/bezier/commit/07666494a318d81770323a03aba694a282a8434b)).
- Converting (untested, potentially stale) console codeblocks to `doctest` (that get run in CI) for Linux sections of binary extension documentation ([\188](https://github.com/dhermes/bezier/pull/188)). Fixed [\#74](https://github.com/dhermes/bezier/issues/74).

2020.1.14

[![PyPI link to release 2020.1.14](https://img.shields.io/pypi/v/bezier/2020.1.14.svg)](https://pypi.org/project/bezier/2020.1.14/) [![Documentation for release 2020.1.14](https://readthedocs.org/projects/bezier/badge/?version=2020.1.14)](https://bezier.readthedocs.io/en/2020.1.14/)

Breaking Changes
----------------

- Rename `Surface` to `Triangle` ([\172](https://github.com/dhermes/bezier/pull/172)). Fixed [\#132](https://github.com/dhermes/bezier/issues/132).

Documentation
-------------

- Make sure all ABI `example_*.c` blocks get run with `doctest` ([\174](https://github.com/dhermes/bezier/pull/174)). Fixed [\#173](https://github.com/dhermes/bezier/issues/173).

Packaging
---------

- Switched from [semantic versioning](http://semver.org/) to [calendar versioning](https://calver.org/).

Page 1 of 22

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.