Bezier

Latest version: v2020.5.19

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

Scan your dependencies

Page 1 of 21

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.htmlbezier.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/).

0.11.0

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

Python Changes

Packaging

- Explicit support for Python 3.8 has been added ([\161](https://github.com/dhermes/bezier/pull/161)). On Windows this required using the `os.add_dll_directory()` [function](https://docs.python.org/3/library/os.htmlos.add_dll_directory) to load `bezier.dll` (in earlier Python versions, the DLL directory was added by modifying `%PATH%`).

New Features

- Loosened type constraints in `Curve` [constructor](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve) and `Surface` [constructor](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.surface.htmlbezier.surface.Surface); now any sequence type is accepted rather than **only** NumPy arrays ([68f7dc7](https://github.com/dhermes/bezier/commit/68f7dc7c1f26bb678d09b4221fd917531fb79860), [a8c68a3](https://github.com/dhermes/bezier/commit/a8c68a3368a1edf90cd76cd6ff77ab698b6c3907), [f5c7869](https://github.com/dhermes/bezier/commit/f5c7869e86b196aca3db272a2e85413357864bc7)). Fixed [\146](https://github.com/dhermes/bezier/issues/146).
- Added `copy` and `verify` arguments to `Curve` [constructor](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve) and `Surface` [constructor](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.surface.htmlbezier.surface.Surface) ([\163](https://github.com/dhermes/bezier/pull/163)). Fixed [\158](https://github.com/dhermes/bezier/issues/158).
- Added [SymPy](https://docs.sympy.org/)-based helpers for "exact" representations ([\164](https://github.com/dhermes/bezier/pull/164)). Fixed [\157](https://github.com/dhermes/bezier/issues/157).
- `Curve.implicitize()` [function](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve.implicitize)
- `Curve.to_symbolic()` [function](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve.to_symbolic)
- `Surface.implicitize()` [function](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.surface.htmlbezier.surface.Surface.implicitize)
- `Surface.to_symbolic()` [function](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.surface.htmlbezier.surface.Surface.to_symbolic)

Internals

- Re-factored non-public modules so that algorithms implemented in pure Python **only** invoke other algorithms written in pure Python ([\160](https://github.com/dhermes/bezier/pull/160)). Previously these algorithms invoked the equivalent Fortran speedup if present for a given function. Fixed [\159](https://github.com/dhermes/bezier/issues/159).

Miscellany

- Moved `*.f90` Fortran files **out** of Python source tree ([\152](https://github.com/dhermes/bezier/pull/152)).

ABI Changes

Breaking Changes

- Added `BEZ_` prefix for exported ABI names ([\167](https://github.com/dhermes/bezier/pull/167)). Fixed [\166](https://github.com/dhermes/bezier/issues/166).

Additive Changes

- Changed all `[in]` arguments in C headers to `const` pointers ([\169](https://github.com/dhermes/bezier/pull/169)). Fixed [\168](https://github.com/dhermes/bezier/issues/168).

Bug Fixes

- Explicitly handle length 0 curves (with an error) in the `compute_length()` Fortran [subroutine](https://bezier.readthedocs.io/en/0.11.0/abi/curve.htmlc.BEZ_compute_length) that is used by the `Curve.length` [property](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve.length) ([a24368f](https://github.com/dhermes/bezier/commit/a24368fc690b2c6d6a676b9d569f25b5919c400d)). Fixed [\148](https://github.com/dhermes/bezier/issues/148).
- Fixed high-degree error in the `Curve.evaluate()` [method](https://bezier.readthedocs.io/en/0.11.0/python/reference/bezier.curve.htmlbezier.curve.Curve.evaluate), via the `evaluate_curve_barycentric()` Fortran [subroutine](https://bezier.readthedocs.io/en/0.11.0/abi/curve.htmlc.BEZ_evaluate_curve_barycentric) ([5768824](https://github.com/dhermes/bezier/commit/57688243b9264ca7ea48423f100e8f516ba2fa2f)). Fixed [\156](https://github.com/dhermes/bezier/issues/156). The code uses `(n C (k + 1)) = (n - k) / (k + 1) (n C k)` to update the value and `(30 - 14) (30 C 14)` overflows a 32-bit signed integer.

Documentation

- Updated install instructions to show how to disable the binary extension via `BEZIER_NO_EXTENSION` ([6262594](https://github.com/dhermes/bezier/commit/626259493997a9d83924d100900189f32b87e6c5), [00c1e61](https://github.com/dhermes/bezier/commit/00c1e619688b93a6a079288be40153a9157fa6c5)). Fixed [\147](https://github.com/dhermes/bezier/issues/147).
- Added "Citation" section to landing page ([9885063](https://github.com/dhermes/bezier/commit/9885063a2e3795e0bec35a4fc1574dc294d359e0)). Fixed [\150](https://github.com/dhermes/bezier/issues/150).

0.10.0

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

Python Changes
==============

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

- Support for Python 2.7 has been dropped. With the impending [EOL](https://pythonclock.org/) 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](https://github.com/dhermes/bezier/commit/3eaa5aaa670d167b2c1340d3d531d5438eaf62cd)).
- Updating all PyPy usage to be Python 3 only ([1e3037f](https://github.com/dhermes/bezier/commit/1e3037fce5acdcfa194cac481ee06ef6bcc329e5)).
- Removing `_bool_patch.h` ([4ccc559](https://github.com/dhermes/bezier/commit/4ccc559e6928f78556c1201f45a2ad7b3b40d7a5)).

Build
-----

- Integrating `black` [code formatter](https://black.readthedocs.io) into the `nox -s lint` session to ensure consistent formatting ([e659532](https://github.com/dhermes/bezier/commit/e659532747d0433bf3a91198a7baf172ed36f069)).
- Fully automating the building of wheels in the `bezier-wheels` [project](https://github.com/dhermes/bezier-wheels) ([recent commits](https://github.com/dhermes/bezier-wheels/compare/ee008511d5ff2736dfb44f770552e7553b00e8f0...424453f50fbb8f240ca60280b637a278f6e9ad4a)). 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](https://github.com/dhermes/bezier/commit/e7eb56e723f13d43f6eae855e6556b4ccbc1edd9)).
- Unify `requirements.txt` files and add notes about why each dependency is required ([230814d](https://github.com/dhermes/bezier/commit/230814d67e24f42f967a652ff7e8d81ee2176954), [1ae147f](https://github.com/dhermes/bezier/commit/1ae147f81e7a01ba672806a8fd56de25ba2bdcdb), [e710ee6](https://github.com/dhermes/bezier/commit/e710ee6968438cb2462ec8bea8af407159a63925)).
- Changing `imp` usage to `importlib` due to deprecation of the former ([9231d92](https://github.com/dhermes/bezier/commit/9231d92b420df1ed97ae2b159bd0aedf0c1ff888)). Fixed [\137](https://github.com/dhermes/bezier/issues/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](https://github.com/dhermes/bezier/commit/37be3845750ff0fe9f200f87a8427b05639c3a61)).
- 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](https://github.com/dhermes/bezier/commit/08be336efac467beeb7055cfc80996b97482456a), [26acc38](https://github.com/dhermes/bezier/commit/26acc384d857cf9f5ddd8260ef50b7bcffeeb133), [7634779](https://github.com/dhermes/bezier/commit/763477958c73a4eb6ce0f89b6b37887c66c10706), [f9a8fcf](https://github.com/dhermes/bezier/commit/f9a8fcf275b244d962fae1e93b223af0c78285cc)).

Miscellany
----------

- Make some functional test cases more lenient so that they pass on 32-bit CentOS 5, which is used for `manylinux` ([e7eb56e](https://github.com/dhermes/bezier/commit/e7eb56e723f13d43f6eae855e6556b4ccbc1edd9)). This was part of a large effort to fully automate the building of wheels in the `bezier-wheels` [project](https://github.com/dhermes/bezier-wheels).
- 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](https://github.com/numpy/numpy/issues/12740)) so the `numpy == 1.15.4` version is a pinned dependency.
- Specifying the NumPy version in `setup.py` based on `implementation_name` ([7e9046d](https://github.com/dhermes/bezier/commit/7e9046dc9dbe6f448238141221c5a7dff497d8d4)).
- 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](https://github.com/dhermes/bezier/commit/7813e41f7666fa36fbb4a7daf0aa45c2d2bee87f)).
- Pinning to `numpy==1.15.4` and `scipy==1.2.0` in wheelhouse for pre-built Docker container ([7634779](https://github.com/dhermes/bezier/commit/763477958c73a4eb6ce0f89b6b37887c66c10706)).
- 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](https://github.com/dhermes/bezier/commit/618653a0888cc5e91a5fb1959cf5e04f61e5c1cf)).
- Fixed curve intersections that did not adhere to schema ([35b158a](https://github.com/dhermes/bezier/commit/35b158a9ad4f8c0ed1d4a3cd07a8c157f33b0639)).
- Transposed `nodes` schema for curved polygon ([8c3ca89](https://github.com/dhermes/bezier/commit/8c3ca895512a60c2fe82d8a24ab328244e3abb3f)).
- Enable the `nox` session to run in CircleCI ([5a0a343](https://github.com/dhermes/bezier/commit/5a0a343728ac52933b1aadd3c483fb439f2e043a)).
- Updated `slow` marker for `pytest` because it used a deprecated API ([46f8b57](https://github.com/dhermes/bezier/commit/46f8b57c8b34484236ce1bc9aa9f5ea5fc77c5df)).

Documentation
=============

- Changing all references to Mac OS X to macOS ([b10c2fc](https://github.com/dhermes/bezier/commit/b10c2fc1af424e862143ac40d01f7baa65fc8af0), [c1c2c6b](https://github.com/dhermes/bezier/commit/c1c2c6b767c40c2eb070ae599a110ecc9fb3e793), [131d17b](https://github.com/dhermes/bezier/commit/131d17be3db5546deebff953378252b12b426534)). 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](https://github.com/dhermes/bezier/commit/889c913436b6d01533d8eb1830717620cea725ef)).

0.9.0

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

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

- Documenting the C ABI `libbezier` ([4608364](https://github.com/dhermes/bezier/commit/4608364e9c0a2b3888f7f661e629fceda9d9a431)). Fixed [\63](https://github.com/dhermes/bezier/issues/63). This [documentation](http://bezier.readthedocs.io/en/0.9.0/abi/index.html) contains a page for each "module" which corresponds to the underlying Fortran module. Each module documents the routines in the corresponding header file, e.g. the [surface](http://bezier.readthedocs.io/en/0.9.0/abi/surface.html) document corresponds to the `bezier/surface.h` header. Fully working C examples have been added for each routine in `bezier/curve.h` and for the enum in `bezier/status.h`.
- Adding section about environment variables to [development](http://bezier.readthedocs.io/en/0.9.0/development.html) document ([5186e24](https://github.com/dhermes/bezier/commit/5186e24a7c7eab5d65ac41ba53e3826b693fc86f)). Fixed [\78](https://github.com/dhermes/bezier/issues/78).
- Remove dependency on `rawgit.com` ([04d0f8d](https://github.com/dhermes/bezier/commit/04d0f8d3155a22c5a048f52f75a3c6ffcc7eba69)). The website is being turned down. Fixed [\130](https://github.com/dhermes/bezier/issues/130).
- Renaming the "Native Libraries" document as "Binary Extension" ([f99db20](https://github.com/dhermes/bezier/commit/f99db20312bb4ba7e5943195020a8ced4be9457b)). In the process, changed most references to the "native" Python extension to instead call it a "binary" extension.
- Added a "Cython `.pxd` [Declarations](http://bezier.readthedocs.io/en/0.9.0/python/pxd/index.html)" document ([f99db20](https://github.com/dhermes/bezier/commit/f99db20312bb4ba7e5943195020a8ced4be9457b)). Fixed [\122](https://github.com/dhermes/bezier/issues/122).
- Moving all Python specific documentation under a specific URL path ([3db483b](https://github.com/dhermes/bezier/commit/3db483b58e2c5dd0f618c15fc01710ec6b1a2907)). In particular, moving
- `/reference/...` to `/python/reference/...`
- `/python-binary-extension.html` to `/python/binary-extension.html`
- `/pxd/...` to `/python/pxd/...`.
- Moving all algorithm specific documentation under a specific URL path ([6e9c825](https://github.com/dhermes/bezier/commit/6e9c82501a222c95c616658e6e5e7bc00c9f4288)). In particular, moving
- `/algorithm-helpers.html` to `/algorithms/helpers.html`
- `/curve-curve-intersection.html` to `/algorithms/curve-curve-intersection.html`

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

New Features

- Added `surface.h::compute_area` helper that can be used to compute the area of both a surface and a curved polygon ([d4d7249](https://github.com/dhermes/bezier/commit/d4d7249729dffd4994df1af899084ceb89dde8fc)).

Breaking Changes

- Removing getters and setters for parameters used during curve-curve intersection ([2fda3ae](https://github.com/dhermes/bezier/commit/2fda3aed2818849363c425e3fce70b4bafe7e9ef)):
- `curve_intersection.h::set_max_candidates`
- `curve_intersection.h::get_max_candidates`
- Removing `dimension` from `curve.h::get_curvature` ([1e39c0c](https://github.com/dhermes/bezier/commit/1e39c0ce0502919d83a81902c8d9affdb6c6b892)).

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

New Features

- Added implementation for `Surface.area` [property](http://bezier.readthedocs.io/en/0.9.0/python/reference/bezier.surface.htmlbezier.surface.Surface.area) and `CurvedPolygon.area` [property](http://bezier.readthedocs.io/en/0.9.0/python/reference/bezier.curved_polygon.htmlbezier.curved_polygon.CurvedPolygon.area) ([eb6077e](https://github.com/dhermes/bezier/commit/eb6077eab4f6ca0d72de6194f1789a2d0eada8b0)).

Non-Public API

- Removing getters and setters for parameters used during curve-curve intersection ([2fda3ae](https://github.com/dhermes/bezier/commit/2fda3aed2818849363c425e3fce70b4bafe7e9ef)):
- `bezier._geometric_intersection.set_max_candidates()`
- `bezier._geometric_intersection.get_max_candidates()`
- Removing cached values for `Curve.length` [property](http://bezier.readthedocs.io/en/0.9.0/python/reference/bezier.curve.htmlbezier.curve.Curve.length), `Surface.area` [property](http://bezier.readthedocs.io/en/0.9.0/python/reference/bezier.surface.htmlbezier.surface.Surface.area) and `Surface.is_valid` [property](http://bezier.readthedocs.io/en/0.9.0/python/reference/bezier.surface.htmlbezier.surface.Surface.is_valid) ([34d48d6](https://github.com/dhermes/bezier/commit/34d48d6900963734d7fb82f13bd3f37416cc6efe)).

Build

- Renaming `libbezier.dll` shared library to `bezier.dll` on Windows ([d17a9bc](https://github.com/dhermes/bezier/commit/d17a9bcee194edc9f103734e35023d178ed8923b)). This follows the correct convention on Windows.
- Adding Python 3.7 support and making it the default version used for testing ([e368e9f](https://github.com/dhermes/bezier/commit/e368e9fd9ab31cfd818fcb9e777dff6dcbd3a7e6)).
- Dropping support for Python 3.5 ([f99db20](https://github.com/dhermes/bezier/commit/f99db20312bb4ba7e5943195020a8ced4be9457b)).
- Adding back `-march=native` for non-wheel builds ([1566019](https://github.com/dhermes/bezier/commit/1566019635b8ffb8a2e4725a2d51830351e03fa5)). This way, when installing from source (either via a local checkout or from the source distribution on PyPI) the most optimal machine instructions will be produced. Fixed [\99](https://github.com/dhermes/bezier/issues/99).
- Removing all traces of 32-bit support for OS X ([d7620ad](https://github.com/dhermes/bezier/commit/d7620adb862ed6f9be9d2615916f789c3c24c52f)). This was driven by a [decision](https://github.com/numpy/numpy/issues/11625) from the NumPy maintainers.

Miscellany

- Adopted `black` [code formatter](https://black.readthedocs.io/en/stable/) ([f21b52d](https://github.com/dhermes/bezier/commit/f21b52d562daf6c86ddaba326aeee8362361e20f)).
- Adding project URLs and keywords for PyPI ([cfb070d](https://github.com/dhermes/bezier/commit/cfb070d651fba4e7df06216a159f623d57036f02)).
- Added 20 new surface-surface functional tests ([9fd9c1e](https://github.com/dhermes/bezier/commit/9fd9c1e26138034539e91aed04c97ec497a9e4b2)). See [\121](https://github.com/dhermes/bezier/issues/121) for more information.
- Removed time and memory benchmarks due to flakiness and lack of an environment that could be used for benchmarking ([6a30dc2](https://github.com/dhermes/bezier/commit/6a30dc22abefe7f7573048659b00fbcd968b8ccc)). See [\125](https://github.com/dhermes/bezier/issues/125) to follow discussion on re-enabling such benchmarks.
- Using `DEBUG=True` environment variable when running unit tests and other related tests ([d84dffb](https://github.com/dhermes/bezier/commit/d84dffb9d0e6fe1ee653e01cb9d4297f83aa11e0)).

Page 1 of 21

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.