What's New in ReportLab 3.0

released 14th February 2014

This is our first major release in eight years.   It runs on Python 2.7+ and 3.3+ using the same source code.  

There are no deliberate API changes; we expect that most applications using reportlab will run seamlessly.  However, the internals have been extensively rewritten, and anyone relying on internal details may find changes.

Our open source package, reportlab, is production ready.  A preview version of our commercial package, rlextra, is available to customers on request and will undergo a few more weeks of testing and some documentation updates.  There will be a coordinated release of the two (probably labelled 3.1) shortly.

Installation

We aim to completely follow modern Python packaging standards.  All versions are available on PyPI and in our downloads area.  Source code and issue tracker are still on BitBucket.  You can install with any of the usual techniques:

  • download a Windows installer
  • get source and run python setup.py install
  • easy_install reportlab
  • pip install reportlab==3.0

The only dependency is the Python Imaging Library, usually repackaged as "pillow" 

Changes

  • Python 3.x compatibility. A single line of code should run on 2.7 and 3.3
  • __init__.py restricts to 2.7 or >=3.3
  • __init__.py allow the import of on optional reportlab.local_rl_mods to allow monkey patching etc.
  • rl_config now imports rl_settings & optionally local_rl_settings
  • ReportLab C extensions now live inside reportlab; _rl_accel is no longer required. All _rl_accel imports now pass through reportlab.lib.rl_accel
  • xmllib is gone, alongside the paraparser stuff that caused issues in favour of HTMLParser.
  • some obsolete C extensions (sgmlop and pyHnj) are gone
  • Improved support for multi-threaded systems to the _rl_accel extension module.
  • Removed reportlab/lib/ para.py & pycanvas.py. These would better belong in third party packages, which can make use of the monkeypatching feature above.

New features

  • Add ability to output greyscale and 1-bit PIL images without conversion to RGB. (contributed by Matthew Duggan)
  • highlight annotation (contributed by Ben Echols)