pygobject/pycairo

Python bindings for cairo

C

700

921 commits

updated Oct 11, 2026

See the code

README

.. image:: https://raw.githubusercontent.com/pygobject/pycairo/main/docs/images/pycairo.svg
   :align: center
   :width: 370px

|

Pycairo is a Python module providing bindings for the `cairo graphics library
<https://cairographics.org/>`__. It depends on **cairo >= 1.15.10** and works
with **Python 3.10+** and **PyPy3**. Pycairo, including this documentation, is
licensed under the `LGPL-2.1-only OR MPL-1.1 <https://spdx.dev/ids>`__.

The Pycairo bindings are designed to match the cairo C API as closely as
possible, and to deviate only in cases which are clearly better implemented in
a more ‘Pythonic’ way.

.. code:: shell

    pip install pycairo

Installing Pycairo requires cairo including its headers. For more info see
"`Getting Started
<https://pycairo.readthedocs.io/en/latest/getting_started.html>`__".

----

.. code:: python

    import cairo

    with cairo.SVGSurface("example.svg", 200, 200) as surface:
        context = cairo.Context(surface)
        x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
        x2, y2, x3, y3 = 0.6, 0.1, 0.9, 0.5
        context.scale(200, 200)
        context.set_line_width(0.04)
        context.move_to(x, y)
        context.curve_to(x1, y1, x2, y2, x3, y3)
        context.stroke()
        context.set_source_rgba(1, 0.2, 0.2, 0.6)
        context.set_line_width(0.02)
        context.move_to(x, y)
        context.line_to(x1, y1)
        context.move_to(x2, y2)
        context.line_to(x3, y3)
        context.stroke()

.. image:: https://raw.githubusercontent.com/pygobject/pycairo/main/docs/images/example.svg
    :width: 320px
    :align: center

----

Features of the Pycairo bindings:

* Provides an object oriented interface to cairo.
* Queries the error status of objects and translates them to exceptions.
* Provides a C API that can be used by other Python extensions.
* Fully typed and documented API.

For more information visit https://pycairo.readthedocs.io

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

cairo
python

Project health

Overall

5.6/10

Maintained

10/10

Code review

0/10
OpenSSF Scorecard

Latest release

1.29.2 · Oct 4, 2026

Releases this year

3

Significant stargazers

Álvaro Mondéjar Rubio

142 followers · starred Jan 2021

Kermit Alexander II

50 followers · starred Nov 2018

Aaron Jheng

25 followers · starred Dec 2025

Guangyang Li

82 followers · starred Oct 2019

pygobject/pycairo

Python bindings for cairo

C

700

921 commits

updated Oct 11, 2026

See the code

README

.. image:: https://raw.githubusercontent.com/pygobject/pycairo/main/docs/images/pycairo.svg
   :align: center
   :width: 370px

|

Pycairo is a Python module providing bindings for the `cairo graphics library
<https://cairographics.org/>`__. It depends on **cairo >= 1.15.10** and works
with **Python 3.10+** and **PyPy3**. Pycairo, including this documentation, is
licensed under the `LGPL-2.1-only OR MPL-1.1 <https://spdx.dev/ids>`__.

The Pycairo bindings are designed to match the cairo C API as closely as
possible, and to deviate only in cases which are clearly better implemented in
a more ‘Pythonic’ way.

.. code:: shell

    pip install pycairo

Installing Pycairo requires cairo including its headers. For more info see
"`Getting Started
<https://pycairo.readthedocs.io/en/latest/getting_started.html>`__".

----

.. code:: python

    import cairo

    with cairo.SVGSurface("example.svg", 200, 200) as surface:
        context = cairo.Context(surface)
        x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
        x2, y2, x3, y3 = 0.6, 0.1, 0.9, 0.5
        context.scale(200, 200)
        context.set_line_width(0.04)
        context.move_to(x, y)
        context.curve_to(x1, y1, x2, y2, x3, y3)
        context.stroke()
        context.set_source_rgba(1, 0.2, 0.2, 0.6)
        context.set_line_width(0.02)
        context.move_to(x, y)
        context.line_to(x1, y1)
        context.move_to(x2, y2)
        context.line_to(x3, y3)
        context.stroke()

.. image:: https://raw.githubusercontent.com/pygobject/pycairo/main/docs/images/example.svg
    :width: 320px
    :align: center

----

Features of the Pycairo bindings:

* Provides an object oriented interface to cairo.
* Queries the error status of objects and translates them to exceptions.
* Provides a C API that can be used by other Python extensions.
* Fully typed and documented API.

For more information visit https://pycairo.readthedocs.io

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

cairo
python

Project health

Overall

5.6/10

Maintained

10/10

Code review

0/10
OpenSSF Scorecard

Latest release

1.29.2 · Oct 4, 2026

Releases this year

3

Significant stargazers

Álvaro Mondéjar Rubio

142 followers · starred Jan 2021

Kermit Alexander II

50 followers · starred Nov 2018

Aaron Jheng

25 followers · starred Dec 2025

Guangyang Li

82 followers · starred Oct 2019