[Matplotlib-devel] mplcairo 0.1 release

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[Matplotlib-devel] mplcairo 0.1 release

anntzer.lee
Dear all,

I am pleased to announce the release of mplcairo 0.1

# Description

mplcairo is a Matplotlib backend based on the well-known cairo library,
supporting output to both raster (including interactively) and vector
formats.  In other words, it provides the functionality of Matplotlib's
{,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.

Per Matplotlib's standard API, the backend can be selected by calling

    matplotlib.use("module://mplcairo.qt")

or setting your MPLBACKEND environment variable to `module://mplcairo.qt` for
Qt5, and similarly for other toolkits.

The source tarball, and Py3.6 manylinux and Windows wheels, are available on
PyPI (I am looking for help to generate the OSX wheels).

See the README for more details.

# Why a new backend?

Compared to Matplotlib's builtin Agg and cairo backends, mplcairo presents the
following features:

- Improved accuracy (e.g., with marker positioning, quad meshes, and text
  kerning).
- Support for a wider variety of font formats, such as otf and pfb, for vector
  (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such fonts).
- Optional support for complex text layout (right-to-left languages, etc.)
  using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed under
  the LGPLv2.1+.
- Support for embedding URLs in PDF (but not SVG) output (requires
  cairo≥1.15.4).
- Support for multi-page output both for PDF and PS (Matplotlib only supports
  multi-page PDF).
- Support for custom blend modes (see `examples/operators.py`).

See the README for more details.

# Changelog from mplcairo 0.1a1 to mplcairo 0.1

- Integration with libraqm now occurs via dlopen() rather than being selected
  at compile-time.
- Various rendering and performance improvements.
- On Travis, we now run Matplotlib's test suite with mplcairo patching the
  default Agg renderer.

Enjoy,

Antony Lee

_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: mplcairo 0.1 release

Benjamin Root
Congratulations to Antony for his hard work on this important backend!

As far as I am concerned, the cairo backend is the future of matplotlib. Test this backend out for yourselves and help us take matplotlib to the next level in high-quality charting!

Cheers!
Ben Root

On Sun, Jul 22, 2018 at 4:52 PM, Antony Lee <[hidden email]> wrote:
Dear all,

I am pleased to announce the release of mplcairo 0.1

# Description

mplcairo is a Matplotlib backend based on the well-known cairo library,
supporting output to both raster (including interactively) and vector
formats.  In other words, it provides the functionality of Matplotlib's
{,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.

Per Matplotlib's standard API, the backend can be selected by calling

    matplotlib.use("module://mplcairo.qt")

or setting your MPLBACKEND environment variable to `module://mplcairo.qt` for
Qt5, and similarly for other toolkits.

The source tarball, and Py3.6 manylinux and Windows wheels, are available on
PyPI (I am looking for help to generate the OSX wheels).

See the README for more details.

# Why a new backend?

Compared to Matplotlib's builtin Agg and cairo backends, mplcairo presents the
following features:

- Improved accuracy (e.g., with marker positioning, quad meshes, and text
  kerning).
- Support for a wider variety of font formats, such as otf and pfb, for vector
  (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such fonts).
- Optional support for complex text layout (right-to-left languages, etc.)
  using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed under
  the LGPLv2.1+.
- Support for embedding URLs in PDF (but not SVG) output (requires
  cairo≥1.15.4).
- Support for multi-page output both for PDF and PS (Matplotlib only supports
  multi-page PDF).
- Support for custom blend modes (see `examples/operators.py`).

See the README for more details.

# Changelog from mplcairo 0.1a1 to mplcairo 0.1

- Integration with libraqm now occurs via dlopen() rather than being selected
  at compile-time.
- Various rendering and performance improvements.
- On Travis, we now run Matplotlib's test suite with mplcairo patching the
  default Agg renderer.

Enjoy,

Antony Lee

_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel



_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: mplcairo 0.1 release

Matthew Brett
In reply to this post by anntzer.lee
Hi,

Can I help with the macOS wheel build?

Cheers,

Matthew

On Sun, Jul 22, 2018 at 9:52 PM, Antony Lee <[hidden email]> wrote:

> Dear all,
>
> I am pleased to announce the release of mplcairo 0.1
>
> # Description
>
> mplcairo is a Matplotlib backend based on the well-known cairo library,
> supporting output to both raster (including interactively) and vector
> formats.  In other words, it provides the functionality of Matplotlib's
> {,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.
>
> Per Matplotlib's standard API, the backend can be selected by calling
>
>     matplotlib.use("module://mplcairo.qt")
>
> or setting your MPLBACKEND environment variable to `module://mplcairo.qt`
> for
> Qt5, and similarly for other toolkits.
>
> The source tarball, and Py3.6 manylinux and Windows wheels, are available on
> PyPI (I am looking for help to generate the OSX wheels).
>
> See the README for more details.
>
> # Why a new backend?
>
> Compared to Matplotlib's builtin Agg and cairo backends, mplcairo presents
> the
> following features:
>
> - Improved accuracy (e.g., with marker positioning, quad meshes, and text
>   kerning).
> - Support for a wider variety of font formats, such as otf and pfb, for
> vector
>   (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such
> fonts).
> - Optional support for complex text layout (right-to-left languages, etc.)
>   using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed
> under
>   the LGPLv2.1+.
> - Support for embedding URLs in PDF (but not SVG) output (requires
>   cairo≥1.15.4).
> - Support for multi-page output both for PDF and PS (Matplotlib only
> supports
>   multi-page PDF).
> - Support for custom blend modes (see `examples/operators.py`).
>
> See the README for more details.
>
> # Changelog from mplcairo 0.1a1 to mplcairo 0.1
>
> - Integration with libraqm now occurs via dlopen() rather than being
> selected
>   at compile-time.
> - Various rendering and performance improvements.
> - On Travis, we now run Matplotlib's test suite with mplcairo patching the
>   default Agg renderer.
>
> Enjoy,
>
> Antony Lee
>
> _______________________________________________
> Matplotlib-devel mailing list
> [hidden email]
> https://mail.python.org/mailman/listinfo/matplotlib-devel
>
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: mplcairo 0.1 release

anntzer.lee
Yes please!
The issue is essentially that mplcairo depends on a very recent libc++.  For local builds on machines with recent enough tooling (e.g. from homebrew), that's fine, including on OSX (https://travis-ci.org/anntzer/mplcairo/jobs/406902684 shows that mplcairo does work on Travis); the problem is how to ship the new libc++ with the wheels.  On Linux, gcc has -static-libgcc -static-libstdc++ which are basically there exactly for that purpose (https://github.com/anntzer/mplcairo/blob/master/setup.py#L37), but it's unclear to me how to achieve the same on OSX.  Alternatively, if recent-enough OSXes already ship a recent-enough libc++, perhaps we could start with wheels that just target these versions of OSX (not optimal, but better than nothing)?
Looking forward to your insights,
Antony

On Mon, Jul 23, 2018 at 8:52 PM, Matthew Brett <[hidden email]> wrote:
Hi,

Can I help with the macOS wheel build?

Cheers,

Matthew

On Sun, Jul 22, 2018 at 9:52 PM, Antony Lee <[hidden email]> wrote:
> Dear all,
>
> I am pleased to announce the release of mplcairo 0.1
>
> # Description
>
> mplcairo is a Matplotlib backend based on the well-known cairo library,
> supporting output to both raster (including interactively) and vector
> formats.  In other words, it provides the functionality of Matplotlib's
> {,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.
>
> Per Matplotlib's standard API, the backend can be selected by calling
>
>     matplotlib.use("module://mplcairo.qt")
>
> or setting your MPLBACKEND environment variable to `module://mplcairo.qt`
> for
> Qt5, and similarly for other toolkits.
>
> The source tarball, and Py3.6 manylinux and Windows wheels, are available on
> PyPI (I am looking for help to generate the OSX wheels).
>
> See the README for more details.
>
> # Why a new backend?
>
> Compared to Matplotlib's builtin Agg and cairo backends, mplcairo presents
> the
> following features:
>
> - Improved accuracy (e.g., with marker positioning, quad meshes, and text
>   kerning).
> - Support for a wider variety of font formats, such as otf and pfb, for
> vector
>   (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such
> fonts).
> - Optional support for complex text layout (right-to-left languages, etc.)
>   using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed
> under
>   the LGPLv2.1+.
> - Support for embedding URLs in PDF (but not SVG) output (requires
>   cairo≥1.15.4).
> - Support for multi-page output both for PDF and PS (Matplotlib only
> supports
>   multi-page PDF).
> - Support for custom blend modes (see `examples/operators.py`).
>
> See the README for more details.
>
> # Changelog from mplcairo 0.1a1 to mplcairo 0.1
>
> - Integration with libraqm now occurs via dlopen() rather than being
> selected
>   at compile-time.
> - Various rendering and performance improvements.
> - On Travis, we now run Matplotlib's test suite with mplcairo patching the
>   default Agg renderer.
>
> Enjoy,
>
> Antony Lee
>
> _______________________________________________
> Matplotlib-devel mailing list
> [hidden email]
> https://mail.python.org/mailman/listinfo/matplotlib-devel
>


_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: mplcairo 0.1 release

Matthew Brett
Hi,

What version has a late enough libc?   It's not problem at at to
depend on 10.9, for example.

Cheers,

Matthew

On Mon, Jul 23, 2018 at 8:51 PM, Antony Lee <[hidden email]> wrote:

> Yes please!
> The issue is essentially that mplcairo depends on a very recent libc++.  For
> local builds on machines with recent enough tooling (e.g. from homebrew),
> that's fine, including on OSX
> (https://travis-ci.org/anntzer/mplcairo/jobs/406902684 shows that mplcairo
> does work on Travis); the problem is how to ship the new libc++ with the
> wheels.  On Linux, gcc has -static-libgcc -static-libstdc++ which are
> basically there exactly for that purpose
> (https://github.com/anntzer/mplcairo/blob/master/setup.py#L37), but it's
> unclear to me how to achieve the same on OSX.  Alternatively, if
> recent-enough OSXes already ship a recent-enough libc++, perhaps we could
> start with wheels that just target these versions of OSX (not optimal, but
> better than nothing)?
> Looking forward to your insights,
> Antony
>
> On Mon, Jul 23, 2018 at 8:52 PM, Matthew Brett <[hidden email]>
> wrote:
>>
>> Hi,
>>
>> Can I help with the macOS wheel build?
>>
>> Cheers,
>>
>> Matthew
>>
>> On Sun, Jul 22, 2018 at 9:52 PM, Antony Lee <[hidden email]> wrote:
>> > Dear all,
>> >
>> > I am pleased to announce the release of mplcairo 0.1
>> >
>> > # Description
>> >
>> > mplcairo is a Matplotlib backend based on the well-known cairo library,
>> > supporting output to both raster (including interactively) and vector
>> > formats.  In other words, it provides the functionality of Matplotlib's
>> > {,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.
>> >
>> > Per Matplotlib's standard API, the backend can be selected by calling
>> >
>> >     matplotlib.use("module://mplcairo.qt")
>> >
>> > or setting your MPLBACKEND environment variable to
>> > `module://mplcairo.qt`
>> > for
>> > Qt5, and similarly for other toolkits.
>> >
>> > The source tarball, and Py3.6 manylinux and Windows wheels, are
>> > available on
>> > PyPI (I am looking for help to generate the OSX wheels).
>> >
>> > See the README for more details.
>> >
>> > # Why a new backend?
>> >
>> > Compared to Matplotlib's builtin Agg and cairo backends, mplcairo
>> > presents
>> > the
>> > following features:
>> >
>> > - Improved accuracy (e.g., with marker positioning, quad meshes, and
>> > text
>> >   kerning).
>> > - Support for a wider variety of font formats, such as otf and pfb, for
>> > vector
>> >   (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such
>> > fonts).
>> > - Optional support for complex text layout (right-to-left languages,
>> > etc.)
>> >   using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed
>> > under
>> >   the LGPLv2.1+.
>> > - Support for embedding URLs in PDF (but not SVG) output (requires
>> >   cairo≥1.15.4).
>> > - Support for multi-page output both for PDF and PS (Matplotlib only
>> > supports
>> >   multi-page PDF).
>> > - Support for custom blend modes (see `examples/operators.py`).
>> >
>> > See the README for more details.
>> >
>> > # Changelog from mplcairo 0.1a1 to mplcairo 0.1
>> >
>> > - Integration with libraqm now occurs via dlopen() rather than being
>> > selected
>> >   at compile-time.
>> > - Various rendering and performance improvements.
>> > - On Travis, we now run Matplotlib's test suite with mplcairo patching
>> > the
>> >   default Agg renderer.
>> >
>> > Enjoy,
>> >
>> > Antony Lee
>> >
>> > _______________________________________________
>> > Matplotlib-devel mailing list
>> > [hidden email]
>> > https://mail.python.org/mailman/listinfo/matplotlib-devel
>> >
>
>
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: mplcairo 0.1 release

anntzer.lee
That's not totally clear to me (I don't actually have an OSX machine available, although I do get ssh access to a not-so-recent one), but by "very recent", I mean something that supports C++17 (e.g. std::variant), so that can't be older than 10.13 (and it's not even certain that that would work).
(Perhaps looking into static linking is better indeed :-))
Antony

On Mon, Jul 23, 2018 at 9:58 PM, Matthew Brett <[hidden email]> wrote:
Hi,

What version has a late enough libc?   It's not problem at at to
depend on 10.9, for example.

Cheers,

Matthew

On Mon, Jul 23, 2018 at 8:51 PM, Antony Lee <[hidden email]> wrote:
> Yes please!
> The issue is essentially that mplcairo depends on a very recent libc++.  For
> local builds on machines with recent enough tooling (e.g. from homebrew),
> that's fine, including on OSX
> (https://travis-ci.org/anntzer/mplcairo/jobs/406902684 shows that mplcairo
> does work on Travis); the problem is how to ship the new libc++ with the
> wheels.  On Linux, gcc has -static-libgcc -static-libstdc++ which are
> basically there exactly for that purpose
> (https://github.com/anntzer/mplcairo/blob/master/setup.py#L37), but it's
> unclear to me how to achieve the same on OSX.  Alternatively, if
> recent-enough OSXes already ship a recent-enough libc++, perhaps we could
> start with wheels that just target these versions of OSX (not optimal, but
> better than nothing)?
> Looking forward to your insights,
> Antony
>
> On Mon, Jul 23, 2018 at 8:52 PM, Matthew Brett <[hidden email]>
> wrote:
>>
>> Hi,
>>
>> Can I help with the macOS wheel build?
>>
>> Cheers,
>>
>> Matthew
>>
>> On Sun, Jul 22, 2018 at 9:52 PM, Antony Lee <[hidden email]> wrote:
>> > Dear all,
>> >
>> > I am pleased to announce the release of mplcairo 0.1
>> >
>> > # Description
>> >
>> > mplcairo is a Matplotlib backend based on the well-known cairo library,
>> > supporting output to both raster (including interactively) and vector
>> > formats.  In other words, it provides the functionality of Matplotlib's
>> > {,qt5,gtk3,wx,tk,macos}{agg,cairo}, pdf, ps, and svg backends.
>> >
>> > Per Matplotlib's standard API, the backend can be selected by calling
>> >
>> >     matplotlib.use("module://mplcairo.qt")
>> >
>> > or setting your MPLBACKEND environment variable to
>> > `module://mplcairo.qt`
>> > for
>> > Qt5, and similarly for other toolkits.
>> >
>> > The source tarball, and Py3.6 manylinux and Windows wheels, are
>> > available on
>> > PyPI (I am looking for help to generate the OSX wheels).
>> >
>> > See the README for more details.
>> >
>> > # Why a new backend?
>> >
>> > Compared to Matplotlib's builtin Agg and cairo backends, mplcairo
>> > presents
>> > the
>> > following features:
>> >
>> > - Improved accuracy (e.g., with marker positioning, quad meshes, and
>> > text
>> >   kerning).
>> > - Support for a wider variety of font formats, such as otf and pfb, for
>> > vector
>> >   (PDF, PS, SVG) backends (Matplotlib's Agg backend also supports such
>> > fonts).
>> > - Optional support for complex text layout (right-to-left languages,
>> > etc.)
>> >   using Raqm.  **Note** that Raqm depends on Fribidi, which is licensed
>> > under
>> >   the LGPLv2.1+.
>> > - Support for embedding URLs in PDF (but not SVG) output (requires
>> >   cairo≥1.15.4).
>> > - Support for multi-page output both for PDF and PS (Matplotlib only
>> > supports
>> >   multi-page PDF).
>> > - Support for custom blend modes (see `examples/operators.py`).
>> >
>> > See the README for more details.
>> >
>> > # Changelog from mplcairo 0.1a1 to mplcairo 0.1
>> >
>> > - Integration with libraqm now occurs via dlopen() rather than being
>> > selected
>> >   at compile-time.
>> > - Various rendering and performance improvements.
>> > - On Travis, we now run Matplotlib's test suite with mplcairo patching
>> > the
>> >   default Agg renderer.
>> >
>> > Enjoy,
>> >
>> > Antony Lee
>> >
>> > _______________________________________________
>> > Matplotlib-devel mailing list
>> > [hidden email]
>> > https://mail.python.org/mailman/listinfo/matplotlib-devel
>> >
>
>


_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel