bezier


Namebezier JSON
Version 2023.7.28 PyPI version JSON
download
home_pagehttps://github.com/dhermes/bezier
SummaryHelper for Bézier Curves, Triangles, and Higher Order Objects
upload_time2023-07-29 04:08:20
maintainer
docs_urlNone
authorDanny Hermes
requires_python>=3.8
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/2023.7.28/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/2023.7.28/docs/images/bernstein_basis.png
   :align: center

to define a curve as a linear combination:

.. image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/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/2023.7.28/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.11 -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/2023.7.28/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/2023.7.28/python/reference/bezier.curve.html
.. _Triangles: https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.triangle.html
.. _package: https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.html
.. _DEVELOPMENT doc: https://github.com/dhermes/bezier/blob/2023.7.28/DEVELOPMENT.rst
.. _the LICENSE: https://github.com/dhermes/bezier/blob/2023.7.28/LICENSE

.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2023.7.28
   :target: https://bezier.readthedocs.io/en/2023.7.28/
   :alt: Documentation Status
.. |linux-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/linux-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/runs/5698156661
   :alt: Linux Build (GitHub Actions)
.. |macos-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/macos-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/runs/5698156663
   :alt: macOS Build (GitHub Actions)
.. |windows-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/windows-passing.svg?sanitize=true
   :target: https://github.com/dhermes/bezier/actions/run/5698156662
   :alt: Windows Build (GitHub Actions)
.. |coverage| image:: https://s3.amazonaws.com/assets.coveralls.io/badges/coveralls_100.svg
   :target: https://coveralls.io/builds/61654285
   :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": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "Geometry,Curve,Bezier,Intersection,Python",
    "author": "Danny Hermes",
    "author_email": "daniel.j.hermes@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/cb/b4/bc9fcd3ea73fb084a1686b11313e91276168a53d85ecc161d3bab8832c6a/bezier-2023.7.28.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/2023.7.28/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/2023.7.28/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/2023.7.28/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/2023.7.28/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.11 -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/2023.7.28/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/2023.7.28/python/reference/bezier.curve.html\n.. _Triangles: https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.triangle.html\n.. _package: https://bezier.readthedocs.io/en/2023.7.28/python/reference/bezier.html\n.. _DEVELOPMENT doc: https://github.com/dhermes/bezier/blob/2023.7.28/DEVELOPMENT.rst\n.. _the LICENSE: https://github.com/dhermes/bezier/blob/2023.7.28/LICENSE\n\n.. |docs| image:: https://readthedocs.org/projects/bezier/badge/?version=2023.7.28\n   :target: https://bezier.readthedocs.io/en/2023.7.28/\n   :alt: Documentation Status\n.. |linux-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/linux-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/runs/5698156661\n   :alt: Linux Build (GitHub Actions)\n.. |macos-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/macos-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/runs/5698156663\n   :alt: macOS Build (GitHub Actions)\n.. |windows-build| image:: https://raw.githubusercontent.com/dhermes/bezier/2023.7.28/docs/windows-passing.svg?sanitize=true\n   :target: https://github.com/dhermes/bezier/actions/run/5698156662\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/61654285\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": "2023.7.28",
    "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": "ee30d8eb5e170b78743752b183c0f987590afff43167233441fc60f815b264ef",
                "md5": "50e30cc0980ce47b77aa5178b3c30233",
                "sha256": "5846838f53b1f63fc53a2fb6273966eeaf0e8d6ed81a25368bfda8cc4bfb1f0c"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "50e30cc0980ce47b77aa5178b3c30233",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1872245,
            "upload_time": "2023-07-29T04:07:34",
            "upload_time_iso_8601": "2023-07-29T04:07:34.173638Z",
            "url": "https://files.pythonhosted.org/packages/ee/30/d8eb5e170b78743752b183c0f987590afff43167233441fc60f815b264ef/bezier-2023.7.28-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "84daabaea567be7198e407f71fba80011bac535a223194258a1e01d1ddad6b55",
                "md5": "46fd72b7c5ba7005f5ff8a491f25ca44",
                "sha256": "412b15c606183a0aaf9cbc40d4e1069638e60d6a8a80460fb3bd7fb69f92a6b8"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "46fd72b7c5ba7005f5ff8a491f25ca44",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1216041,
            "upload_time": "2023-07-29T04:07:36",
            "upload_time_iso_8601": "2023-07-29T04:07:36.928397Z",
            "url": "https://files.pythonhosted.org/packages/84/da/abaea567be7198e407f71fba80011bac535a223194258a1e01d1ddad6b55/bezier-2023.7.28-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "043f5c66e135cccc490844f88e38f7286bc9b932456b5d22c83ab54515a42da7",
                "md5": "e2d4bfc091a311d44d4b32d4ae565f63",
                "sha256": "3db780501aa0ed9224582c28d1b4b35eab764a58096a405fc749691972986cba"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "e2d4bfc091a311d44d4b32d4ae565f63",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1937874,
            "upload_time": "2023-07-29T04:07:39",
            "upload_time_iso_8601": "2023-07-29T04:07:39.532886Z",
            "url": "https://files.pythonhosted.org/packages/04/3f/5c66e135cccc490844f88e38f7286bc9b932456b5d22c83ab54515a42da7/bezier-2023.7.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07048f146767fef25dfed8bb4285372382a85ae47460d5dc4e53b16de2b0be79",
                "md5": "b44358283b607ca3dfad113a57953369",
                "sha256": "9af82b42143e5fda2c101308166bc55f4b31ddcbd4e315b25f766668ab87e1b7"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b44358283b607ca3dfad113a57953369",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 2512248,
            "upload_time": "2023-07-29T04:07:41",
            "upload_time_iso_8601": "2023-07-29T04:07:41.922153Z",
            "url": "https://files.pythonhosted.org/packages/07/04/8f146767fef25dfed8bb4285372382a85ae47460d5dc4e53b16de2b0be79/bezier-2023.7.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1edd16754d0fbca66813ea5ef65387ee34bd72887c96a2ee02c86203fc79e752",
                "md5": "65eb30e2eb07c66f66dd26f00ab3bab4",
                "sha256": "32d6d38d7b3b9cbbea53ed0814b348da8d70718c85213ff48d418968fcf11dd9"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "65eb30e2eb07c66f66dd26f00ab3bab4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 709292,
            "upload_time": "2023-07-29T04:07:43",
            "upload_time_iso_8601": "2023-07-29T04:07:43.611496Z",
            "url": "https://files.pythonhosted.org/packages/1e/dd/16754d0fbca66813ea5ef65387ee34bd72887c96a2ee02c86203fc79e752/bezier-2023.7.28-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3065d943bf358835b6c49b6873c88710d6d930abc5380f70f2bdb422e255cef",
                "md5": "0b75bc15a9cd8db41f7c9368afcdf6cb",
                "sha256": "e8b8a0d049eef63774b805c2e1078337d206b35599e74a43554b687eb650cfd3"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0b75bc15a9cd8db41f7c9368afcdf6cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1872141,
            "upload_time": "2023-07-29T04:07:46",
            "upload_time_iso_8601": "2023-07-29T04:07:46.089807Z",
            "url": "https://files.pythonhosted.org/packages/b3/06/5d943bf358835b6c49b6873c88710d6d930abc5380f70f2bdb422e255cef/bezier-2023.7.28-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a55bf0ce45e3d82622632a7ba53b70085bb9221ba580eb6875659c571f987832",
                "md5": "ccfa91a19b240765249774a4ed2c68a0",
                "sha256": "ed0cc6441da427a2ae40dd32eb6b567c1a3e48ccbeecabdb03f93370da762c68"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ccfa91a19b240765249774a4ed2c68a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1216318,
            "upload_time": "2023-07-29T04:07:48",
            "upload_time_iso_8601": "2023-07-29T04:07:48.475125Z",
            "url": "https://files.pythonhosted.org/packages/a5/5b/f0ce45e3d82622632a7ba53b70085bb9221ba580eb6875659c571f987832/bezier-2023.7.28-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7600c94fccce7423da88c0b453ff0a89eed083f1eb75b435415b455970a6dfd5",
                "md5": "aeebaef0d438c39afc7adcef4c8888ce",
                "sha256": "aa43e1721f252f99a1d8bc06f66e89e5433604f1b0338fe7e025e4cd4dd579ff"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "aeebaef0d438c39afc7adcef4c8888ce",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 2034896,
            "upload_time": "2023-07-29T04:07:50",
            "upload_time_iso_8601": "2023-07-29T04:07:50.527994Z",
            "url": "https://files.pythonhosted.org/packages/76/00/c94fccce7423da88c0b453ff0a89eed083f1eb75b435415b455970a6dfd5/bezier-2023.7.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f47cb4fd6e9eb3bf8c83499d09c1a36c25c1074d86109f16675f5a4ab365ab0",
                "md5": "e052faa563b65caa09f3cf4c10633d53",
                "sha256": "17201989272725921b6133ff89ab29f08c5f1c18b29b0bbfe64d95fc61f50a40"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e052faa563b65caa09f3cf4c10633d53",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 2605890,
            "upload_time": "2023-07-29T04:07:52",
            "upload_time_iso_8601": "2023-07-29T04:07:52.915203Z",
            "url": "https://files.pythonhosted.org/packages/4f/47/cb4fd6e9eb3bf8c83499d09c1a36c25c1074d86109f16675f5a4ab365ab0/bezier-2023.7.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98a6fe2da06010937970a1e151c9fc71708bee8815192a04b8f8d3efa3d103f7",
                "md5": "19da82a8f6f9aae2a3829318a46296a1",
                "sha256": "355947a0b3bd1a8b978ad992ff8ac538fd46b7dcd6858af62b471445541c38b2"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "19da82a8f6f9aae2a3829318a46296a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 709781,
            "upload_time": "2023-07-29T04:07:55",
            "upload_time_iso_8601": "2023-07-29T04:07:55.038698Z",
            "url": "https://files.pythonhosted.org/packages/98/a6/fe2da06010937970a1e151c9fc71708bee8815192a04b8f8d3efa3d103f7/bezier-2023.7.28-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f8a9b5c82db19f13fa20cb79957769840f57494205943b203116d98d2da722c",
                "md5": "4f03ba97e291950fd684c33a928c313b",
                "sha256": "b6931d16897a76aecd8d427896af2ea24d00332941cb8f8a6a71ffeb15440800"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4f03ba97e291950fd684c33a928c313b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1869712,
            "upload_time": "2023-07-29T04:07:57",
            "upload_time_iso_8601": "2023-07-29T04:07:57.562495Z",
            "url": "https://files.pythonhosted.org/packages/1f/8a/9b5c82db19f13fa20cb79957769840f57494205943b203116d98d2da722c/bezier-2023.7.28-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f4214e978cf8b9c9229a78fea25804962ba3e08e507b1a132db0eaccd28508eb",
                "md5": "f7b9d3800c250a59065e58004967b741",
                "sha256": "9bde270818247331db5c99ef42bf33981c7568825269d5463d28325bbc5d5998"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f7b9d3800c250a59065e58004967b741",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1215343,
            "upload_time": "2023-07-29T04:07:59",
            "upload_time_iso_8601": "2023-07-29T04:07:59.893611Z",
            "url": "https://files.pythonhosted.org/packages/f4/21/4e978cf8b9c9229a78fea25804962ba3e08e507b1a132db0eaccd28508eb/bezier-2023.7.28-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50e117f4e8a128df601ec07a289ac26457a0d4681dcd8664a7f24cb98bf4032f",
                "md5": "c73b9000004d7c37155f10e6d9820da0",
                "sha256": "750e239d40e0d8d4b906b2509cf8c3448afabaa5779b3d5642cdc8d1b754fc48"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c73b9000004d7c37155f10e6d9820da0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1980108,
            "upload_time": "2023-07-29T04:08:02",
            "upload_time_iso_8601": "2023-07-29T04:08:02.123561Z",
            "url": "https://files.pythonhosted.org/packages/50/e1/17f4e8a128df601ec07a289ac26457a0d4681dcd8664a7f24cb98bf4032f/bezier-2023.7.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec0a3282ff43228b5a776fd4324f49e115700cc5c7acdcc5f35587fa1c03c27a",
                "md5": "58c5e0df1ccb2cb436aa89e3acb243cb",
                "sha256": "e247d82ac271b451974e9cc5e8c50a46e0196e1e35ffddee8e90d27bd5e86242"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "58c5e0df1ccb2cb436aa89e3acb243cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2553724,
            "upload_time": "2023-07-29T04:08:04",
            "upload_time_iso_8601": "2023-07-29T04:08:04.991040Z",
            "url": "https://files.pythonhosted.org/packages/ec/0a/3282ff43228b5a776fd4324f49e115700cc5c7acdcc5f35587fa1c03c27a/bezier-2023.7.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a4f2db6b792595f5c4860236172ca78b98101b46b730cb9b0729328ac42ff2e",
                "md5": "82a01c51e611becbc7fac5462a6524b6",
                "sha256": "922055eb437d46e13a0d20cc2b9ebed093dbbe3a55afb8d30136ffff5ce47620"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "82a01c51e611becbc7fac5462a6524b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 710029,
            "upload_time": "2023-07-29T04:08:07",
            "upload_time_iso_8601": "2023-07-29T04:08:07.172830Z",
            "url": "https://files.pythonhosted.org/packages/8a/4f/2db6b792595f5c4860236172ca78b98101b46b730cb9b0729328ac42ff2e/bezier-2023.7.28-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a73600b638b0cb1f95a51c0de7a6a90f53f3ac6b948fd2b3255325f7a9dde356",
                "md5": "ab4baebb5e013118073d49005e9c32d9",
                "sha256": "962d93f7dbfdc37c1fa2f930f304810eff79ef30d067a36c65bbdce0a6356afe"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ab4baebb5e013118073d49005e9c32d9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1872446,
            "upload_time": "2023-07-29T04:08:09",
            "upload_time_iso_8601": "2023-07-29T04:08:09.043638Z",
            "url": "https://files.pythonhosted.org/packages/a7/36/00b638b0cb1f95a51c0de7a6a90f53f3ac6b948fd2b3255325f7a9dde356/bezier-2023.7.28-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3bda4fd16519cae797cf41e7074a73cafcafab6796445a88edfaf19232066695",
                "md5": "d8411ac8293dc4de442890f345a1f335",
                "sha256": "6c52b5f083540250da00d586ce5f4e8d8d2434c63b5b815625c5b3e1a602c2e8"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d8411ac8293dc4de442890f345a1f335",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1216332,
            "upload_time": "2023-07-29T04:08:10",
            "upload_time_iso_8601": "2023-07-29T04:08:10.834374Z",
            "url": "https://files.pythonhosted.org/packages/3b/da/4fd16519cae797cf41e7074a73cafcafab6796445a88edfaf19232066695/bezier-2023.7.28-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c0fdadfb5be257d9a7d3d6e0403b768bef8cc4c840f3262c8959d4658ebf239c",
                "md5": "06fd20fb8004891abc1c01e3f4b4467e",
                "sha256": "787023b8e1a5d9056bbb3422ecc84b276cfb03f37e359676e523ca70446c8a33"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "06fd20fb8004891abc1c01e3f4b4467e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1944561,
            "upload_time": "2023-07-29T04:08:14",
            "upload_time_iso_8601": "2023-07-29T04:08:14.078985Z",
            "url": "https://files.pythonhosted.org/packages/c0/fd/adfb5be257d9a7d3d6e0403b768bef8cc4c840f3262c8959d4658ebf239c/bezier-2023.7.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d1681e2cae4c2327073a1c4312a9e7efc48e0f0735c84edcf3401265386982c3",
                "md5": "7c90992727fa962cd40527b5b8e6ce85",
                "sha256": "8ae58e466335c5808e8841c46afdd8ac449915895f28d9bd526b19110a6d4caa"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7c90992727fa962cd40527b5b8e6ce85",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 2517733,
            "upload_time": "2023-07-29T04:08:16",
            "upload_time_iso_8601": "2023-07-29T04:08:16.976775Z",
            "url": "https://files.pythonhosted.org/packages/d1/68/1e2cae4c2327073a1c4312a9e7efc48e0f0735c84edcf3401265386982c3/bezier-2023.7.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f12cc0ea4cb05db7d4117f59ed627634823964700fd5c6194a3a26a56f56401",
                "md5": "1a87ee607f368dc566a9f24358d00124",
                "sha256": "24fc2c33b98101321906092600a9821b495abe877a029f973882a8e88932d88a"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1a87ee607f368dc566a9f24358d00124",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 709905,
            "upload_time": "2023-07-29T04:08:18",
            "upload_time_iso_8601": "2023-07-29T04:08:18.639041Z",
            "url": "https://files.pythonhosted.org/packages/7f/12/cc0ea4cb05db7d4117f59ed627634823964700fd5c6194a3a26a56f56401/bezier-2023.7.28-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cbb4bc9fcd3ea73fb084a1686b11313e91276168a53d85ecc161d3bab8832c6a",
                "md5": "d8052824738e6f2f16ae679c1d45a68e",
                "sha256": "853256d1e1e9cd82cbb3d1543be906e9d54e8491e3020a90c084a9d18021f63b"
            },
            "downloads": -1,
            "filename": "bezier-2023.7.28.tar.gz",
            "has_sig": false,
            "md5_digest": "d8052824738e6f2f16ae679c1d45a68e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 348945,
            "upload_time": "2023-07-29T04:08:20",
            "upload_time_iso_8601": "2023-07-29T04:08:20.190605Z",
            "url": "https://files.pythonhosted.org/packages/cb/b4/bc9fcd3ea73fb084a1686b11313e91276168a53d85ecc161d3bab8832c6a/bezier-2023.7.28.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-29 04:08:20",
    "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: 0.09837s