bezier


Namebezier JSON
Version 2024.6.20 PyPI version JSON
download
home_pagehttps://github.com/dhermes/bezier
SummaryHelper for Bézier Curves, Triangles, and Higher Order Objects
upload_time2024-06-21 04:22:24
maintainerNone
docs_urlNone
authorDanny Hermes
requires_python>=3.10
licenseApache 2.0
keywords geometry curve bezier intersection python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ``bezier``
==========

    Helper for B |eacute| zier Curves, Triangles, and Higher Order Objects

|linux-build| |macos-build| |windows-build| |coverage|

|docs| |zenodo| |JOSS|

.. |eacute| unicode:: U+000E9 .. LATIN SMALL LETTER E WITH ACUTE
   :trim:

This library provides:

* Support for B |eacute| zier `Curves`_
* Support for B |eacute| zier `Triangles`_

Dive in and take a look!

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/triangles6Q_and_7Q.png
   :align: center

Why B |eacute| zier?
--------------------

A B |eacute| zier curve (and triangle, etc.) is a parametric curve
that uses the `Bernstein basis`_:

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/bernstein_basis.png
   :align: center

to define a curve as a linear combination:

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/bezier_defn.png
   :align: center

This comes from the fact that the weights sum to one:

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/sum_to_unity.png
   :align: center

This can be generalized to higher order by considering three, four, etc.
non-negative weights that sum to one (in the above we have the two
non-negative weights ``s`` and ``1 - s``).

Due to their simple form, B |eacute| zier curves:

* can easily model geometric objects as parametric curves, triangles, etc.
* can be computed in an efficient and numerically stable way via
  `de Casteljau's algorithm`_
* can utilize convex optimization techniques for many algorithms (such as
  curve-curve intersection), since curves (and triangles, etc.)
  are convex combinations of the basis

Many applications -- as well as the history of their development --
are described in
"The Bernstein polynomial basis: A centennial `retrospective`_",
for example;

* aids physical analysis using finite element methods (`FEM`_) on
  isogeometric models by using geometric shape functions called
  `NURBS`_ to represent data
* used in robust control of dynamic systems; utilizes convexity to
  create a hull of curves

.. _retrospective: https://dx.doi.org/10.1016/j.cagd.2012.03.001
.. _Bernstein basis: https://en.wikipedia.org/wiki/Bernstein_polynomial
.. _de Casteljau's algorithm: https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm
.. _FEM: https://en.wikipedia.org/wiki/Finite_element_method
.. _NURBS: https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline

Installing
----------

The ``bezier`` Python package can be installed with `pip`_:

.. code-block:: console

   $ python     -m pip install --upgrade bezier
   $ python3.12 -m pip install --upgrade bezier
   $ # To install optional dependencies, e.g. SymPy
   $ python     -m pip install --upgrade bezier[full]

To install a pure Python version (i.e. with no binary extension):

.. code-block:: console

   $ BEZIER_NO_EXTENSION=true \
   >   python   -m pip install --upgrade bezier --no-binary=bezier

``bezier`` is open-source, so you can alternatively grab the source
code from `GitHub`_ and install from source.

.. _pip: https://pip.pypa.io
.. _GitHub: https://github.com/dhermes/bezier/

Getting Started
---------------

For example, to create a curve:

.. code-block:: python

   >>> import bezier
   >>> import numpy as np
   >>> nodes1 = np.asfortranarray([
   ...     [0.0, 0.5, 1.0],
   ...     [0.0, 1.0, 0.0],
   ... ])
   >>> curve1 = bezier.Curve(nodes1, degree=2)

The intersection (points) between two curves can
also be determined:

.. code-block:: python

   >>> nodes2 = np.asfortranarray([
   ...     [0.0, 0.25,  0.5, 0.75, 1.0],
   ...     [0.0, 2.0 , -2.0, 2.0 , 0.0],
   ... ])
   >>> curve2 = bezier.Curve.from_nodes(nodes2)
   >>> intersections = curve1.intersect(curve2)
   >>> intersections
   array([[0.31101776, 0.68898224, 0. , 1. ],
          [0.31101776, 0.68898224, 0. , 1. ]])
   >>> s_vals = np.asfortranarray(intersections[0, :])
   >>> points = curve1.evaluate_multi(s_vals)
   >>> points
   array([[0.31101776, 0.68898224, 0. , 1. ],
          [0.42857143, 0.42857143, 0. , 0. ]])

and then we can plot these curves (along with their
intersections):

.. code-block:: python

   >>> import seaborn
   >>> seaborn.set()
   >>>
   >>> ax = curve1.plot(num_pts=256)
   >>> _ = curve2.plot(num_pts=256, ax=ax)
   >>> lines = ax.plot(
   ...     points[0, :], points[1, :],
   ...     marker="o", linestyle="None", color="black")
   >>> _ = ax.axis("scaled")
   >>> _ = ax.set_xlim(-0.125, 1.125)
   >>> _ = ax.set_ylim(-0.0625, 0.625)

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/curves1_and_13.png
   :align: center

For API-level documentation, check out the B |eacute| zier Python
`package`_ documentation.

Development
-----------

To work on adding a feature or to run the functional tests, see the
`DEVELOPMENT doc`_ for more information on how to get
started.

Citation
--------

For publications that use ``bezier``, there is a `JOSS paper`_ that can be
cited. The following BibTeX entry can be used:

.. code-block:: rest

   @article{Hermes2017,
     doi = {10.21105/joss.00267},
     url = {https://doi.org/10.21105%2Fjoss.00267},
     year = {2017},
     month = {Aug},
     publisher = {The Open Journal},
     volume = {2},
     number = {16},
     pages = {267},
     author = {Danny Hermes},
     title = {Helper for B{\'{e}}zier Curves, Triangles, and Higher Order Objects},
     journal = {The Journal of Open Source Software}
   }

A **particular** version of this library can be cited via a Zenodo DOI; see
a full `list by version`_.

.. _JOSS paper: https://joss.theoj.org/papers/10.21105/joss.00267
.. _list by version: https://zenodo.org/search?page=1&size=20&q=conceptrecid:%22838307%22&sort=-version&all_versions=True

License
-------

``bezier`` is made available under the Apache 2.0 License. For more
details, see `the LICENSE`_.

.. _Curves: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.curve.html
.. _Triangles: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.triangle.html
.. _package: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.html
.. _DEVELOPMENT doc: https://github.com/dhermes/bezier/blob/2024.6.20/DEVELOPMENT.rst
.. _the LICENSE: https://github.com/dhermes/bezier/blob/2024.6.20/LICENSE

.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2024.6.20
   :target: https://bezier.readthedocs.io/en/2024.6.20/
   :alt: Documentation Status
.. |linux-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/linux-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/runs/9607943395
   :alt: Linux Build (GitHub Actions)
.. |macos-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/macos-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/runs/9607943397
   :alt: macOS Build (GitHub Actions)
.. |windows-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/windows-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/runs/9607943396
   :alt: Windows Build (GitHub Actions)
.. |coverage| image:: https://s3.amazonaws.com/assets.coveralls.io/badges/coveralls_100.svg
   :target: https://coveralls.io/builds/68215528
   :alt: Code Coverage
.. |zenodo| image:: https://zenodo.org/badge/73047402.svg
   :target: https://zenodo.org/badge/latestdoi/73047402
   :alt: Zenodo DOI for ``bezier``
.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.00267/status.svg
   :target: https://dx.doi.org/10.21105/joss.00267
   :alt: "Journal of Open Source Science" DOI for ``bezier``

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/dhermes/bezier",
    "name": "bezier",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "Geometry, Curve, Bezier, Intersection, Python",
    "author": "Danny Hermes",
    "author_email": "daniel.j.hermes@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1d/1a/28aa7a72a5029f416c7d04c5cdae1b0b00d1c6c72a986689458e8e586446/bezier-2024.6.20.tar.gz",
    "platform": "Posix; macOS; Windows",
    "description": "``bezier``\n==========\n\n    Helper for B |eacute| zier Curves, Triangles, and Higher Order Objects\n\n|linux-build| |macos-build| |windows-build| |coverage|\n\n|docs| |zenodo| |JOSS|\n\n.. |eacute| unicode:: U+000E9 .. LATIN SMALL LETTER E WITH ACUTE\n   :trim:\n\nThis library provides:\n\n* Support for B |eacute| zier `Curves`_\n* Support for B |eacute| zier `Triangles`_\n\nDive in and take a look!\n\n.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/triangles6Q_and_7Q.png\n   :align: center\n\nWhy B |eacute| zier?\n--------------------\n\nA B |eacute| zier curve (and triangle, etc.) is a parametric curve\nthat uses the `Bernstein basis`_:\n\n.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/bernstein_basis.png\n   :align: center\n\nto define a curve as a linear combination:\n\n.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/bezier_defn.png\n   :align: center\n\nThis comes from the fact that the weights sum to one:\n\n.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/sum_to_unity.png\n   :align: center\n\nThis can be generalized to higher order by considering three, four, etc.\nnon-negative weights that sum to one (in the above we have the two\nnon-negative weights ``s`` and ``1 - s``).\n\nDue to their simple form, B |eacute| zier curves:\n\n* can easily model geometric objects as parametric curves, triangles, etc.\n* can be computed in an efficient and numerically stable way via\n  `de Casteljau's algorithm`_\n* can utilize convex optimization techniques for many algorithms (such as\n  curve-curve intersection), since curves (and triangles, etc.)\n  are convex combinations of the basis\n\nMany applications -- as well as the history of their development --\nare described in\n\"The Bernstein polynomial basis: A centennial `retrospective`_\",\nfor example;\n\n* aids physical analysis using finite element methods (`FEM`_) on\n  isogeometric models by using geometric shape functions called\n  `NURBS`_ to represent data\n* used in robust control of dynamic systems; utilizes convexity to\n  create a hull of curves\n\n.. _retrospective: https://dx.doi.org/10.1016/j.cagd.2012.03.001\n.. _Bernstein basis: https://en.wikipedia.org/wiki/Bernstein_polynomial\n.. _de Casteljau's algorithm: https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm\n.. _FEM: https://en.wikipedia.org/wiki/Finite_element_method\n.. _NURBS: https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline\n\nInstalling\n----------\n\nThe ``bezier`` Python package can be installed with `pip`_:\n\n.. code-block:: console\n\n   $ python     -m pip install --upgrade bezier\n   $ python3.12 -m pip install --upgrade bezier\n   $ # To install optional dependencies, e.g. SymPy\n   $ python     -m pip install --upgrade bezier[full]\n\nTo install a pure Python version (i.e. with no binary extension):\n\n.. code-block:: console\n\n   $ BEZIER_NO_EXTENSION=true \\\n   >   python   -m pip install --upgrade bezier --no-binary=bezier\n\n``bezier`` is open-source, so you can alternatively grab the source\ncode from `GitHub`_ and install from source.\n\n.. _pip: https://pip.pypa.io\n.. _GitHub: https://github.com/dhermes/bezier/\n\nGetting Started\n---------------\n\nFor example, to create a curve:\n\n.. code-block:: python\n\n   >>> import bezier\n   >>> import numpy as np\n   >>> nodes1 = np.asfortranarray([\n   ...     [0.0, 0.5, 1.0],\n   ...     [0.0, 1.0, 0.0],\n   ... ])\n   >>> curve1 = bezier.Curve(nodes1, degree=2)\n\nThe intersection (points) between two curves can\nalso be determined:\n\n.. code-block:: python\n\n   >>> nodes2 = np.asfortranarray([\n   ...     [0.0, 0.25,  0.5, 0.75, 1.0],\n   ...     [0.0, 2.0 , -2.0, 2.0 , 0.0],\n   ... ])\n   >>> curve2 = bezier.Curve.from_nodes(nodes2)\n   >>> intersections = curve1.intersect(curve2)\n   >>> intersections\n   array([[0.31101776, 0.68898224, 0. , 1. ],\n          [0.31101776, 0.68898224, 0. , 1. ]])\n   >>> s_vals = np.asfortranarray(intersections[0, :])\n   >>> points = curve1.evaluate_multi(s_vals)\n   >>> points\n   array([[0.31101776, 0.68898224, 0. , 1. ],\n          [0.42857143, 0.42857143, 0. , 0. ]])\n\nand then we can plot these curves (along with their\nintersections):\n\n.. code-block:: python\n\n   >>> import seaborn\n   >>> seaborn.set()\n   >>>\n   >>> ax = curve1.plot(num_pts=256)\n   >>> _ = curve2.plot(num_pts=256, ax=ax)\n   >>> lines = ax.plot(\n   ...     points[0, :], points[1, :],\n   ...     marker=\"o\", linestyle=\"None\", color=\"black\")\n   >>> _ = ax.axis(\"scaled\")\n   >>> _ = ax.set_xlim(-0.125, 1.125)\n   >>> _ = ax.set_ylim(-0.0625, 0.625)\n\n.. image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/images/curves1_and_13.png\n   :align: center\n\nFor API-level documentation, check out the B |eacute| zier Python\n`package`_ documentation.\n\nDevelopment\n-----------\n\nTo work on adding a feature or to run the functional tests, see the\n`DEVELOPMENT doc`_ for more information on how to get\nstarted.\n\nCitation\n--------\n\nFor publications that use ``bezier``, there is a `JOSS paper`_ that can be\ncited. The following BibTeX entry can be used:\n\n.. code-block:: rest\n\n   @article{Hermes2017,\n     doi = {10.21105/joss.00267},\n     url = {https://doi.org/10.21105%2Fjoss.00267},\n     year = {2017},\n     month = {Aug},\n     publisher = {The Open Journal},\n     volume = {2},\n     number = {16},\n     pages = {267},\n     author = {Danny Hermes},\n     title = {Helper for B{\\'{e}}zier Curves, Triangles, and Higher Order Objects},\n     journal = {The Journal of Open Source Software}\n   }\n\nA **particular** version of this library can be cited via a Zenodo DOI; see\na full `list by version`_.\n\n.. _JOSS paper: https://joss.theoj.org/papers/10.21105/joss.00267\n.. _list by version: https://zenodo.org/search?page=1&size=20&q=conceptrecid:%22838307%22&sort=-version&all_versions=True\n\nLicense\n-------\n\n``bezier`` is made available under the Apache 2.0 License. For more\ndetails, see `the LICENSE`_.\n\n.. _Curves: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.curve.html\n.. _Triangles: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.triangle.html\n.. _package: https://bezier.readthedocs.io/en/2024.6.20/python/reference/bezier.html\n.. _DEVELOPMENT doc: https://github.com/dhermes/bezier/blob/2024.6.20/DEVELOPMENT.rst\n.. _the LICENSE: https://github.com/dhermes/bezier/blob/2024.6.20/LICENSE\n\n.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2024.6.20\n   :target: https://bezier.readthedocs.io/en/2024.6.20/\n   :alt: Documentation Status\n.. |linux-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/linux-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/runs/9607943395\n   :alt: Linux Build (GitHub Actions)\n.. |macos-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/macos-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/runs/9607943397\n   :alt: macOS Build (GitHub Actions)\n.. |windows-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2024.6.20/docs/windows-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/runs/9607943396\n   :alt: Windows Build (GitHub Actions)\n.. |coverage| image:: https://s3.amazonaws.com/assets.coveralls.io/badges/coveralls_100.svg\n   :target: https://coveralls.io/builds/68215528\n   :alt: Code Coverage\n.. |zenodo| image:: https://zenodo.org/badge/73047402.svg\n   :target: https://zenodo.org/badge/latestdoi/73047402\n   :alt: Zenodo DOI for ``bezier``\n.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.00267/status.svg\n   :target: https://dx.doi.org/10.21105/joss.00267\n   :alt: \"Journal of Open Source Science\" DOI for ``bezier``\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Helper for B\u00e9zier Curves, Triangles, and Higher Order Objects",
    "version": "2024.6.20",
    "project_urls": {
        "Changelog": "https://bezier.readthedocs.io/en/latest/releases/index.html",
        "Documentation": "https://bezier.readthedocs.io/",
        "Homepage": "https://github.com/dhermes/bezier",
        "Issue Tracker": "https://github.com/dhermes/bezier/issues"
    },
    "split_keywords": [
        "geometry",
        " curve",
        " bezier",
        " intersection",
        " python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e3266fe7391f422fb18ce258c904cd951f1cedd4e0e13fc4f664b9eec240fc36",
                "md5": "36af0abf1052d49aed9986f0bd77f9cf",
                "sha256": "65d12159b919e3076c6a1b90c811b740cb1eb557d250947edb7bbc9a2157490d"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp310-cp310-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "36af0abf1052d49aed9986f0bd77f9cf",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1248773,
            "upload_time": "2024-06-21T04:21:40",
            "upload_time_iso_8601": "2024-06-21T04:21:40.626179Z",
            "url": "https://files.pythonhosted.org/packages/e3/26/6fe7391f422fb18ce258c904cd951f1cedd4e0e13fc4f664b9eec240fc36/bezier-2024.6.20-cp310-cp310-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f72055a5a2f3988fe6ab9dad8f9ba6cfa59af0bbddd6972a76a3659b90ec281",
                "md5": "f63e7d927a35199814b3e2f9dadbbc49",
                "sha256": "ad7ec863f3fa70bd0774ea49cd8f9ad6310251055ee127917b9b8dce085a9e91"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp310-cp310-macosx_14_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f63e7d927a35199814b3e2f9dadbbc49",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1906400,
            "upload_time": "2024-06-21T04:21:49",
            "upload_time_iso_8601": "2024-06-21T04:21:49.839274Z",
            "url": "https://files.pythonhosted.org/packages/9f/72/055a5a2f3988fe6ab9dad8f9ba6cfa59af0bbddd6972a76a3659b90ec281/bezier-2024.6.20-cp310-cp310-macosx_14_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b6200984381a3c9042810b2f9cf39dedac2acffe0546ded10a56cfa43ec4914b",
                "md5": "9a04cb18dc129a770bb96f591adc78f9",
                "sha256": "4b8c081eacc25c840b1991a11961421cdb0ec41906df015db9ff08322cf63486"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9a04cb18dc129a770bb96f591adc78f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1924387,
            "upload_time": "2024-06-21T04:21:52",
            "upload_time_iso_8601": "2024-06-21T04:21:52.921954Z",
            "url": "https://files.pythonhosted.org/packages/b6/20/0984381a3c9042810b2f9cf39dedac2acffe0546ded10a56cfa43ec4914b/bezier-2024.6.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db704ecdf9758fd680fdf423051b58ca2e64b6ff4cdd04f62dc1baceed0e0adf",
                "md5": "b333df4a9134d26a55997a50160698a5",
                "sha256": "fd1d4776212bdd9aa08ad57fb6a82978d50d0eba6f58f68fad9b83446fe895f3"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b333df4a9134d26a55997a50160698a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 2499029,
            "upload_time": "2024-06-21T04:21:55",
            "upload_time_iso_8601": "2024-06-21T04:21:55.166809Z",
            "url": "https://files.pythonhosted.org/packages/db/70/4ecdf9758fd680fdf423051b58ca2e64b6ff4cdd04f62dc1baceed0e0adf/bezier-2024.6.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "889d8a08db203aef6289c174bdc9566a2a7a8ff60e5fabbb8c1170b9ff2261ab",
                "md5": "65b8cefaf209e381c2945591293b7d33",
                "sha256": "191a3c9081d16b36425cc66297f6a8e4460c1b2d43c2ddcd271014fdf99b1e46"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "65b8cefaf209e381c2945591293b7d33",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1809884,
            "upload_time": "2024-06-21T04:21:57",
            "upload_time_iso_8601": "2024-06-21T04:21:57.794257Z",
            "url": "https://files.pythonhosted.org/packages/88/9d/8a08db203aef6289c174bdc9566a2a7a8ff60e5fabbb8c1170b9ff2261ab/bezier-2024.6.20-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "96d502911e75ada6f740910a7203510920947acec31c7e910c8cac521ce897bc",
                "md5": "cf3ecd022f510f73f78ee3585cb2f1af",
                "sha256": "c860cc0e777a06cda9afa019824b9f48578b2964b0ae18ea7cbbe9d1a02066b6"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp311-cp311-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "cf3ecd022f510f73f78ee3585cb2f1af",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1249223,
            "upload_time": "2024-06-21T04:22:00",
            "upload_time_iso_8601": "2024-06-21T04:22:00.109348Z",
            "url": "https://files.pythonhosted.org/packages/96/d5/02911e75ada6f740910a7203510920947acec31c7e910c8cac521ce897bc/bezier-2024.6.20-cp311-cp311-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f4e090eeab82f5e5c2c1f63e2ad7bf9ec188e0c699a410f4df1d886bd6a4b1b4",
                "md5": "37f83074c54a586465c054fb4c1e3584",
                "sha256": "28c50de2b7bc7afd19b3115e3f8ecad36bc281bf4eafbc335a7651b801dd3544"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp311-cp311-macosx_14_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37f83074c54a586465c054fb4c1e3584",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1907265,
            "upload_time": "2024-06-21T04:22:03",
            "upload_time_iso_8601": "2024-06-21T04:22:03.033368Z",
            "url": "https://files.pythonhosted.org/packages/f4/e0/90eeab82f5e5c2c1f63e2ad7bf9ec188e0c699a410f4df1d886bd6a4b1b4/bezier-2024.6.20-cp311-cp311-macosx_14_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa81b22deec7817ebdc2da7c45920687b5697830bc0961c83a1d2a72856b3ac7",
                "md5": "71f0d3ef4b8cc1af83186eea0bbf22d0",
                "sha256": "29bbecca56d6d152cd566ba626ceab1a95bbaf05205acf680da6d4d5beb0e87b"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "71f0d3ef4b8cc1af83186eea0bbf22d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 2016937,
            "upload_time": "2024-06-21T04:22:05",
            "upload_time_iso_8601": "2024-06-21T04:22:05.938113Z",
            "url": "https://files.pythonhosted.org/packages/aa/81/b22deec7817ebdc2da7c45920687b5697830bc0961c83a1d2a72856b3ac7/bezier-2024.6.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0eec836adeee81afaabd7f41f7bc3840ffc7e8b50ac1b3ffdf6f6894a13cbcd4",
                "md5": "996e7f66ca8158561ccd37d480ce4c6e",
                "sha256": "3d3205f96f982f0dc45e1776d8995d572e228b0dbeab234c0acf4618a2e8dce0"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "996e7f66ca8158561ccd37d480ce4c6e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 2592354,
            "upload_time": "2024-06-21T04:22:08",
            "upload_time_iso_8601": "2024-06-21T04:22:08.258034Z",
            "url": "https://files.pythonhosted.org/packages/0e/ec/836adeee81afaabd7f41f7bc3840ffc7e8b50ac1b3ffdf6f6894a13cbcd4/bezier-2024.6.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "709bcab28cdae18f739122905088845f8285f6271af3332e46b051c536804289",
                "md5": "612649ee06e9de01060373f597b97849",
                "sha256": "ab942ec30c73425d7b7020cbde4e1b7bd7792e914fac585565786b205ef54c94"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "612649ee06e9de01060373f597b97849",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1810077,
            "upload_time": "2024-06-21T04:22:10",
            "upload_time_iso_8601": "2024-06-21T04:22:10.947459Z",
            "url": "https://files.pythonhosted.org/packages/70/9b/cab28cdae18f739122905088845f8285f6271af3332e46b051c536804289/bezier-2024.6.20-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0d4bdcfed092496f53565d40f7c3846db030babb227d9e25e44c7e1d4371713f",
                "md5": "c5e36136fa1cf2c2aa2299b510ae619d",
                "sha256": "e18733c1fcf01a08822e6e8a6f86eb6e56067f368e4b09653d25368881765d7d"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp312-cp312-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c5e36136fa1cf2c2aa2299b510ae619d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1246686,
            "upload_time": "2024-06-21T04:22:12",
            "upload_time_iso_8601": "2024-06-21T04:22:12.980509Z",
            "url": "https://files.pythonhosted.org/packages/0d/4b/dcfed092496f53565d40f7c3846db030babb227d9e25e44c7e1d4371713f/bezier-2024.6.20-cp312-cp312-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "034da71c92270739cba039bc110e0c805c3b2f2c8360d7fac3ec861842443571",
                "md5": "f5c13d4b3cae8ee251cdcb414d707687",
                "sha256": "bbe9e09dfee5cd23033aa4caf3b32b3d05d5977604b95b9c4e0220376c3c34b6"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp312-cp312-macosx_14_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f5c13d4b3cae8ee251cdcb414d707687",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1903253,
            "upload_time": "2024-06-21T04:22:15",
            "upload_time_iso_8601": "2024-06-21T04:22:15.049659Z",
            "url": "https://files.pythonhosted.org/packages/03/4d/a71c92270739cba039bc110e0c805c3b2f2c8360d7fac3ec861842443571/bezier-2024.6.20-cp312-cp312-macosx_14_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f13c326228895c155a657079ac0094e8a3d225986332cc5b4c838f48ec18fbad",
                "md5": "fc9b1f88ded08efc116cd7e6b768360d",
                "sha256": "5199407fb9ad8bbae313dde49119ee33d684c2f81358082edea97345df6f493c"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "fc9b1f88ded08efc116cd7e6b768360d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1972128,
            "upload_time": "2024-06-21T04:22:17",
            "upload_time_iso_8601": "2024-06-21T04:22:17.150127Z",
            "url": "https://files.pythonhosted.org/packages/f1/3c/326228895c155a657079ac0094e8a3d225986332cc5b4c838f48ec18fbad/bezier-2024.6.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00a5dfa67b0de68ca25f37eeef3b85686f191991e8f20f76fdbde870dacb1c56",
                "md5": "98348e01c59eeaf53183968df3b08083",
                "sha256": "21241b81f75739e2cfb2f705a9bb6e55489cc2d8a1d2a514b68ca55514aa5f09"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "98348e01c59eeaf53183968df3b08083",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 2556550,
            "upload_time": "2024-06-21T04:22:19",
            "upload_time_iso_8601": "2024-06-21T04:22:19.461782Z",
            "url": "https://files.pythonhosted.org/packages/00/a5/dfa67b0de68ca25f37eeef3b85686f191991e8f20f76fdbde870dacb1c56/bezier-2024.6.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "113c713170cd340a8fc81cc9acb88a5c371f9aaf43102bcdfec9e543843faee4",
                "md5": "608a754031a38dfd03885e83cf01a9d6",
                "sha256": "8cf8c3e373440f799a48ccdf51bdd6428ceef5e1dd9bae9eb01711a0a73b8fdc"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "608a754031a38dfd03885e83cf01a9d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1802892,
            "upload_time": "2024-06-21T04:22:22",
            "upload_time_iso_8601": "2024-06-21T04:22:22.185363Z",
            "url": "https://files.pythonhosted.org/packages/11/3c/713170cd340a8fc81cc9acb88a5c371f9aaf43102bcdfec9e543843faee4/bezier-2024.6.20-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d1a28aa7a72a5029f416c7d04c5cdae1b0b00d1c6c72a986689458e8e586446",
                "md5": "6f30f305628b2b6cb9f5615f5c0608ff",
                "sha256": "0b46357eb6019f969a583093f66e6b73747d5e41c10d9f3dfe327b2aa43dff8c"
            },
            "downloads": -1,
            "filename": "bezier-2024.6.20.tar.gz",
            "has_sig": false,
            "md5_digest": "6f30f305628b2b6cb9f5615f5c0608ff",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 354590,
            "upload_time": "2024-06-21T04:22:24",
            "upload_time_iso_8601": "2024-06-21T04:22:24.330366Z",
            "url": "https://files.pythonhosted.org/packages/1d/1a/28aa7a72a5029f416c7d04c5cdae1b0b00d1c6c72a986689458e8e586446/bezier-2024.6.20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-21 04:22:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "dhermes",
    "github_project": "bezier",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "bezier"
}
        
Elapsed time: 1.32576s