Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Finalize release notes for release. #306

Merged
merged 6 commits into from
Jul 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 3 additions & 16 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ jobs:
runs-on: windows-2022
env:
NOX_SESSION: "${{ matrix.nox-session }}"
MINGW_32: 'C:\msys64\mingw32\bin'
MINGW_64: 'C:\msys64\mingw64\bin'
MINGW: 'C:\msys64\mingw64\bin'
strategy:
matrix:
nox-session:
Expand All @@ -61,23 +60,11 @@ jobs:
- name: Show gfortran version
shell: powershell
run: |
$NOX_SESSION = $env:NOX_SESSION
If ($NOX_SESSION.EndsWith("-32")) {
$MINGW = $env:MINGW_32
} Else {
$MINGW = $env:MINGW_64
}
$env:Path = "$MINGW;" + $env:Path
$env:Path = "$env:MINGW;" + $env:Path
gfortran --version

- name: Invoke nox
shell: powershell
run: |
$NOX_SESSION = $env:NOX_SESSION
If ($NOX_SESSION.EndsWith("-32")) {
$MINGW = $env:MINGW_32
} Else {
$MINGW = $env:MINGW_64
}
$env:Path = "$MINGW;" + $env:Path
$env:Path = "$env:MINGW;" + $env:Path
nox --session $env:NOX_SESSION
8 changes: 4 additions & 4 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ sphinx:
formats: []

python:
version: 3.9
version: "3.11"
install:
- requirements: docs/requirements.txt
- method: pip
path: "."
- requirements: docs/requirements.txt
- method: pip
path: "."
9 changes: 0 additions & 9 deletions DEVELOPMENT.rst
Original file line number Diff line number Diff line change
Expand Up @@ -448,21 +448,12 @@ Python versions we test in. The image used in our Linux builds (from
`bezier Dockerfile`_) installs dependencies needed for testing (such as
``nox`` and NumPy).

For macOS, Matthew Brett's `multibuild`_ is used to
install "official" python.org CPython binaries for macOS. Then tests are run
in 64-bit mode (NumPy has `discontinued`_ 32-bit support).

For Windows, the binary extension is built and tested with both 32-bit and
64-bit Python binaries.

.. _GitHub Actions: https://github.com/dhermes/bezier/actions
.. _Linux config: https://github.com/dhermes/bezier/blob/main/.github/workflows/linux.yml
.. _macOS config: https://github.com/dhermes/bezier/blob/main/.github/workflows/macos.yml
.. _Windows config: https://github.com/dhermes/bezier/blob/main/.github/workflows/windows.yml
.. _python-multi Dockerfile: https://github.com/dhermes/python-multi/blob/master/src/Dockerfile
.. _bezier Dockerfile: https://github.com/dhermes/bezier/blob/main/scripts/docker/bezier.Dockerfile
.. _multibuild: https://github.com/matthew-brett/multibuild
.. _discontinued: https://github.com/numpy/numpy/issues/11625

****************************************
Release Process / Deploying New Versions
Expand Down
9 changes: 0 additions & 9 deletions DEVELOPMENT.rst.template
Original file line number Diff line number Diff line change
Expand Up @@ -448,21 +448,12 @@ Python versions we test in. The image used in our Linux builds (from
`bezier Dockerfile`_) installs dependencies needed for testing (such as
``nox`` and NumPy).

For macOS, Matthew Brett's `multibuild`_ is used to
install "official" python.org CPython binaries for macOS. Then tests are run
in 64-bit mode (NumPy has `discontinued`_ 32-bit support).

For Windows, the binary extension is built and tested with both 32-bit and
64-bit Python binaries.

.. _GitHub Actions: https://github.com/dhermes/bezier/actions
.. _Linux config: https://github.com/dhermes/bezier/blob/{revision}/.github/workflows/linux.yml
.. _macOS config: https://github.com/dhermes/bezier/blob/{revision}/.github/workflows/macos.yml
.. _Windows config: https://github.com/dhermes/bezier/blob/{revision}/.github/workflows/windows.yml
.. _python-multi Dockerfile: https://github.com/dhermes/python-multi/blob/master/src/Dockerfile
.. _bezier Dockerfile: https://github.com/dhermes/bezier/blob/{revision}/scripts/docker/bezier.Dockerfile
.. _multibuild: https://github.com/matthew-brett/multibuild
.. _discontinued: https://github.com/numpy/numpy/issues/11625

****************************************
Release Process / Deploying New Versions
Expand Down
2 changes: 1 addition & 1 deletion codemeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@
"keywords": "Geometry, Curve, B\u00e9zier, Intersection, Python",
"license": "Apache 2.0",
"title": "B\u00e9zier",
"version": "2023.7.26"
"version": "2023.7.27"
}
8 changes: 4 additions & 4 deletions docs/abi/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ Linux
bezier.h
lib/
libbezier.so -> libbezier.so.2023
libbezier.so.2023 -> libbezier.so.2023.7.26
libbezier.so.2023.7.26
libbezier.so.2023 -> libbezier.so.2023.7.27
libbezier.so.2023.7.27
share/
bezier/
cmake/
Expand All @@ -92,8 +92,8 @@ macOS
triangle_intersection.h
bezier.h
lib/
libbezier.2023.7.26.dylib
libbezier.2023.dylib -> libbezier.2023.7.26.dylib
libbezier.2023.7.27.dylib
libbezier.2023.dylib -> libbezier.2023.7.27.dylib
libbezier.dylib -> libbezier.2023.dylib
share/
bezier/
Expand Down
22 changes: 11 additions & 11 deletions docs/python/binary-extension.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ The command line tool `auditwheel`_ adds a ``bezier.libs`` directory to
'.../site-packages/bezier.libs'
>>> print_tree(libs_directory)
bezier.libs/
libbezier-631d8eda.so.2023.7.26
libbezier-631d8eda.so.2023.7.27
libgfortran-040039e1.so.5.0.0
libquadmath-96973f99.so.0.0.0

Expand All @@ -99,7 +99,7 @@ The ``bezier._speedup`` module depends on this local copy of ``libbezier``:
Dynamic section at offset 0x4a9000 contains 27 entries:
Tag Type Name/Value
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../bezier.libs]
0x0000000000000001 (NEEDED) Shared library: [libbezier-631d8eda.so.2023.7.26]
0x0000000000000001 (NEEDED) Shared library: [libbezier-631d8eda.so.2023.7.27]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000c (INIT) 0x6000
Expand All @@ -112,13 +112,13 @@ and the local copy of ``libbezier`` depends on the other dependencies in
.. testcode:: linux-readelf-lib
:hide:

invoke_shell("readelf", "-d", "../bezier.libs/libbezier-631d8eda.so.2023.7.26")
invoke_shell("readelf", "-d", "../bezier.libs/libbezier-631d8eda.so.2023.7.27")
invoke_shell("readelf", "-d", "../bezier.libs/libgfortran-040039e1.so.5.0.0")

.. testoutput:: linux-readelf-lib
:linux-only:

$ readelf -d ../bezier.libs/libbezier-631d8eda.so.2023.7.26
$ readelf -d ../bezier.libs/libbezier-631d8eda.so.2023.7.27

Dynamic section at offset 0x4adc8 contains 29 entries:
Tag Type Name/Value
Expand All @@ -127,7 +127,7 @@ and the local copy of ``libbezier`` depends on the other dependencies in
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libquadmath-96973f99.so.0.0.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libbezier-631d8eda.so.2023.7.26]
0x000000000000000e (SONAME) Library soname: [libbezier-631d8eda.so.2023.7.27]
0x000000000000000c (INIT) 0x3000
...
$ readelf -d ../bezier.libs/libgfortran-040039e1.so.5.0.0
Expand Down Expand Up @@ -164,7 +164,7 @@ with copies of ``libbezier``, ``libgfortran``, ``libquadmath`` and
'.../site-packages/bezier/.dylibs'
>>> print_tree(dylibs_directory)
.dylibs/
libbezier.2023.7.26.dylib
libbezier.2023.7.27.dylib
libgcc_s.1.1.dylib
libgfortran.5.dylib
libquadmath.0.dylib
Expand All @@ -184,7 +184,7 @@ of ``libbezier``:

$ otool -L _speedup.cpython-311-darwin.so
_speedup.cpython-311-darwin.so:
@loader_path/.dylibs/libbezier.2023.7.26.dylib (...)
@loader_path/.dylibs/libbezier.2023.7.27.dylib (...)
/usr/lib/libSystem.B.dylib (...)

Though the Python extension module (``.so`` file) only depends on ``libbezier``
Expand All @@ -193,15 +193,15 @@ it indirectly depends on ``libgfortran``, ``libquadmath`` and ``libgcc_s``:
.. testcode:: macos-delocated-libgfortran
:hide:

invoke_shell("otool", "-L", ".dylibs/libbezier.2023.7.26.dylib")
invoke_shell("otool", "-L", ".dylibs/libbezier.2023.7.27.dylib")

.. testoutput:: macos-delocated-libgfortran
:options: +NORMALIZE_WHITESPACE
:macos-only:

$ otool -L .dylibs/libbezier.2023.7.26.dylib
.dylibs/libbezier.2023.7.26.dylib:
/DLC/bezier/.dylibs/libbezier.2023.7.26.dylib (...)
$ otool -L .dylibs/libbezier.2023.7.27.dylib
.dylibs/libbezier.2023.7.27.dylib:
/DLC/bezier/.dylibs/libbezier.2023.7.27.dylib (...)
@loader_path/libgfortran.5.dylib (...)
@loader_path/libquadmath.0.dylib (...)
/usr/lib/libSystem.B.dylib (...)
Expand Down
39 changes: 27 additions & 12 deletions docs/releases/latest.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Latest Release (``2023.7.26``)
Latest Release (``2023.7.27``)
===================================

|pypi| |docs|
Expand All @@ -10,14 +10,27 @@ Robustness
(`#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.26/python/reference/bezier.hazmat.curve_helpers.html#bezier.hazmat.curve_helpers.evaluate_multi_vs>`__
`function <https://bezier.readthedocs.io/en/2023.7.27/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
~~~~~~~~~

- 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>`__.

Bug Fixes
~~~~~~~~~

Expand All @@ -29,7 +42,7 @@ Bug Fixes
(`#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.26/python/reference/bezier.hazmat.clipping.html#bezier.hazmat.clipping.clip_range>`__).
(`doc <https://bezier.readthedocs.io/en/2023.7.27/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
Expand All @@ -40,7 +53,7 @@ Breaking Changes
~~~~~~~~~~~~~~~~

- Removing ``Surface`` alias for the ``Triangle``
`type <https://bezier.readthedocs.io/en/2023.7.26/python/reference/bezier.triangle.html#bezier.triangle.Triangle>`__
`type <https://bezier.readthedocs.io/en/2023.7.27/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.
Expand All @@ -51,14 +64,16 @@ 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.26/python/reference/bezier.curve.html#bezier.curve.Curve.intersect>`__)
(`doc <https://bezier.readthedocs.io/en/2023.7.27/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.26/python/reference/bezier.curve.html#bezier.curve.Curve.self_intersections>`__.
`method <https://bezier.readthedocs.io/en/2023.7.27/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
-------------
Expand All @@ -67,9 +82,9 @@ Documentation
(`#257 <https://github.com/dhermes/bezier/pull/257>`__). Fixed
`#210 <https://github.com/dhermes/bezier/issues/210>`__.

.. |pypi| image:: https://img.shields.io/pypi/v/bezier/2023.7.26.svg
:target: https://pypi.org/project/bezier/2023.7.26/
:alt: PyPI link to release 2023.7.26
.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2023.7.26
:target: https://bezier.readthedocs.io/en/2023.7.26/
:alt: Documentation for release 2023.7.26
.. |pypi| image:: https://img.shields.io/pypi/v/bezier/2023.7.27.svg
:target: https://pypi.org/project/bezier/2023.7.27/
:alt: PyPI link to release 2023.7.27
.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2023.7.27
:target: https://bezier.readthedocs.io/en/2023.7.27/
:alt: Documentation for release 2023.7.27
8 changes: 4 additions & 4 deletions paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ This library provides support for
- Specialization / reparameterization
- Self-intersection / singularity check for 2D triangles

-![Triangle-triangle intersection example](https://raw.githubusercontent.com/dhermes/bezier/2023.7.26/docs/images/triangles6Q_and_7Q.png)
-![Triangle-triangle intersection example](https://raw.githubusercontent.com/dhermes/bezier/2023.7.27/docs/images/triangles6Q_and_7Q.png)

[1]: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
[2]: https://en.wikipedia.org/wiki/B%C3%A9zier_triangle
[3]: https://bezier.readthedocs.io/en/2023.7.26/algorithms/curve-curve-intersection.html
[4]: https://bezier.readthedocs.io/en/2023.7.26/python/reference/bezier.curve.html#bezier.curve.Curve.locate
[5]: https://bezier.readthedocs.io/en/2023.7.26/python/reference/bezier.triangle.html#bezier.triangle.Triangle.locate
[3]: https://bezier.readthedocs.io/en/2023.7.27/algorithms/curve-curve-intersection.html
[4]: https://bezier.readthedocs.io/en/2023.7.27/python/reference/bezier.curve.html#bezier.curve.Curve.locate
[5]: https://bezier.readthedocs.io/en/2023.7.27/python/reference/bezier.triangle.html#bezier.triangle.Triangle.locate

# References
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import setuptools.dist


VERSION = "2023.7.26" # Also in ``codemeta.json`` and ``__init__.py``.
VERSION = "2023.7.27" # Also in ``codemeta.json`` and ``__init__.py``.
AUTHOR = "Danny Hermes" # Also in ``__init__.py``.
README_FILENAME = os.path.join(os.path.dirname(__file__), "README.rst")
NUMPY_MESSAGE = """\
Expand Down
2 changes: 1 addition & 1 deletion src/fortran/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.1)

project(
bezier
VERSION 2023.7.26
VERSION 2023.7.27
LANGUAGES Fortran C)
set(AUTHOR "Danny Hermes")
set(AUTHOR_DETAILS "daniel.j.hermes@gmail.com")
Expand Down
2 changes: 1 addition & 1 deletion src/python/bezier/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
# and related. This is **entirely** to accommodate builds where
# ``bezier`` is imported from source (and not installed).
__author__ = "Danny Hermes"
__version__ = "2023.7.26"
__version__ = "2023.7.27"
"""str: The current version of :mod:`bezier`."""
__all__ = [
"__author__",
Expand Down
2 changes: 1 addition & 1 deletion src/python/bezier/hazmat/curve_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1078,7 +1078,7 @@ def discrete_turning_angle(nodes):
This is done by considering how the angle of
:math:`B'(s) = \left[x'(s), y'(s)\right]^T` changes in small intervals
in the parameter space; where the angle is
:math:`\theta(s) = \arctan(y'(s) / x'(s)`. Computing
:math:`\theta(s) = \arctan(y'(s) / x'(s))`. Computing
:math:`\theta(s + ds) - \theta(s)` as :math:`ds \longrightarrow 0` leaves
us with the **signed** angle change

Expand Down