.. _spkg_pybind11:

pybind11: Create Python bindings to C++ code
============================================

Description
-----------

**pybind11** is a lightweight header-only library that exposes C++ types in Python
and vice versa, mainly to create Python bindings of existing C++ code. Its
goals and syntax are similar to the excellent
[Boost.Python](http://www.boost.org/doc/libs/1_58_0/libs/python/doc/) library
by David Abrahams: to minimize boilerplate code in traditional extension
modules by inferring type information using compile-time introspection.

License
-------

pybind11 is provided under a BSD-style license that can be found in the
``LICENSE`` file. By using, distributing, or contributing to this project,
you agree to the terms and conditions of this license.


Upstream Contact
----------------

https://github.com/pybind/pybind11

Type
----

standard


Dependencies
------------

- $(PYTHON)
- $(PYTHON_TOOLCHAIN)

Version Information
-------------------

package-version.txt::

    2.9.2

install-requires.txt::

    pybind11 >=2.5.0


Equivalent System Packages
--------------------------

conda:

.. CODE-BLOCK:: bash

    $ conda install  pybind11


homebrew:

.. CODE-BLOCK:: bash

    $ brew install pybind11


macports:
install the following packages: py-pybind11

void:

.. CODE-BLOCK:: bash

    $ sudo xbps-install  python3-pybind11


See https://repology.org/project/python:pybind11/versions


However, these system packages will not be used for building Sage
because using Python site-packages is not supported by the Sage distribution;
see :trac:`29023`

