2009-12-20: Version 0.3.9-beta
---------------------------------
* Module 'utils.py' improved to have two main new functions: memoize and run_under_process
  - 'memoize' is a decorator that stores function results in memory and use it when the
    function is called again with the same arguments
  - 'run_under_process' is a decorator that run a function under a multiprocessing.Process
    instance, that means you use better the power of multi-core servers to generate reports

* To make the things easier to use decorator 'run_under_process', we created a new method
  on geraldo.base.Report class: 'generate_under_process_by', that stores the generation
  output in a temp file, using a process, and loads that file in the file-like object.

2009-11-05: Version 0.3.7-stable
---------------------------------
* Fixing problem with memory consuming when generating reports.
  (thanks to Douglas Andrade and Leandro Lameiro)

2009-08-03: Version 0.3.6-stable
---------------------------------
* Fixing problem on paragraph style creation (on PDF generator)
  (thanks to Marcelo)

2009-07-24: Version 0.3.5-stable
---------------------------------
* Fixing problem on latest commit and changing back to stable version

2009-07-24: Version 0.3.5-alpha-3
---------------------------------
* Implementing method 'get_object_value' on bands and parents to
  override ObjectValue getting value behavior
* Fixing aggregation calculations on reports with multiple groups

2009-07-15: Version 0.3.5-alpha-2
---------------------------------
* Adding attributes 'canvas' and 'return_canvas' to PDF generator
  and made attribute 'filename' to be not compulsory, to be
  possible generate many reports to the same file

2009-07-14: Version 0.3.5-alpha
---------------------------------
* Fixed performance problems when cloning elements

2009-07-13: Version 0.3.4-stable
---------------------------------
* Fixed truncate_overflow behaviour

2009-07-12: Version 0.3.4-alpha
---------------------------------
* Full support to attribute 'visible', a boolean variable you can
  set to widgets, graphics, bands and subreports to make them
  visible or not. Default value is 'True'

2009-07-11: Version 0.3.3-alpha-4
---------------------------------
* Text generator fixed page header and page footer generation

2009-07-11: Version 0.3.3-alpha-3
---------------------------------
* Text generator fixed to support text alignment to center and
  right

2009-07-09: Version 0.3.3-alpha-2
---------------------------------
* Moved common code between PDF and Text generators to Base class
* Fixed band margin_bottom and margin_top calculation when it is
  a inline displayed detail band

2009-07-09: Version 0.3.3-alpha
---------------------------------
* Support to 'auto_expand_height' on bands
* Support to bands bottom margin

2009-07-06: Version 0.3.2-alpha-4
---------------------------------
* Adding attribute 'encode_to' on TextGenerator
* Tests refactored to generate output files to 'output' directory
* Tests 03 and 16 working with TextGenerator

2009-06-30: Version 0.3.2-alpha-3
---------------------------------
* TextGenerator almost done
* Little adjustments in PDFGenerator as a preview change before
  move the common code (between PDF and Text) to BaseGenerator
  class

2009-06-26: Version 0.3.2-alpha-2
---------------------------------
* Objects improved to support be named and found by their names
  using the method 'find_by_name'
* Objects can also be removed from their parents with method
  'remove_from_parent'
* Objects can remove heir childrens with method 'remove_child'
* And objects can returns their children at once, when calling
  method 'get_children'

2009-06-25: Version 0.3.2-alpha
-------------------------------
* Working on TextGenerator (still testing and fixing bugs)
* Improved base element class to calculate a rect
* Replaced '@property' to python 2.4 standard (property())

2009-06-23: Version 0.3.1-alpha-2
---------------------------------
* New function 'utils.calculate_size'
* Added support to string sizes (i.e: margin_top = '1*cm')

2009-05-29: Version 0.3.1-alpha
-------------------------------
* Fixed error on date formatting. We made a mistake decoding with UTF-8 when
  we just should make people learn to override the right method (unless we
  find a better and agnosthic solution).

2009-05-28: Version 0.3.1-alpha
-------------------------------
* Fixed error on date formatting for Python in versions less than 2.6.x
  (thanks to Paul Hide)

2009-05-26: Version 0.3.1-alpha
-------------------------------
* Fixed band_footer and band_header aggregation ObjectValue on SubReports
  (thanks to Paul Hide)
* Fixed latin datetime decode when formatting date (ticket # 2796452, thanks
  to Ari Caldeira)
* Implemented subject (description) and keywords attributes to Report class
  (ticket # 2796457, thanks to Ari Caldeira)

2009-05-14: Version 0.3.0-final
-------------------------------
* Fixed ReportGroup.attribute_name to support methods and child attributes
* Created a new module 'utils.py' with once function to get attribute values
  from objects support methods and expression paths. It is used by
  ReportGroup.attribute_name and Widget.attribute_name

2009-04-30: Version 0.3.0-alpha-9
---------------------------------
* Fixed a bug on group band footer calculations when there was only one object
  in the queryset

2009-04-28: Version 0.3.0-alpha-8
---------------------------------
* Fixed bug on ObjectValue widget and how it works with 'text' property
* Fixed bug on ObjectValue to avoid None values and to convert Decimal to float

2009-04-23: Version 0.3.0-alpha-7
---------------------------------
* Fixed a bug on basic classes creation (it was using objects on lists)

2009-04-16: Version 0.3.0-alpha-6
--------------------------------
* SubReport attribute 'detail_band' changed to 'band_detail' and the old name
  made as deprecated
* SubReports now support header and footer bands

2009-04-16: Version 0.3.0-alpha-5
--------------------------------
* Changed method Report.generate_by to raise an exception EmptyQueryset if the
  report has attribute 'print_if_empty' is False and 'queryset' is empty

2009-04-13: Version 0.3.0-alpha-4
--------------------------------
* Changed attribute 'attribute_name' on ObjectValue widget class, to support
  callable values and object paths instead of attribute names.

2009-04-10: Version 0.3.0-alpha-3
--------------------------------
* New attribute on widgets: truncate_overflow, to truncate widget values when they
  overflow
* Default widget height changed to zero ( 0 ).

2009-04-08: Version 0.3.0-alpha
--------------------------------
* Fixed a bug on queryset attribute in Report class
* Created a new class DetailBand, to support inline displayed detail bands

2009-02-01: Version 0.2.2-stable
--------------------------------
* Fixed setup.py to not require PIL and ReportLab from PyPI
* All band classes are transformed in objects on objects initializations. This
  is important to work with inheritance, and it is important to make a future
  important thing: events (specially BeforePrint and AfterPrint events)
* Fixed test of MatPlotLib support

2009-01-23: Version 0.2-alpha(4)
--------------------------------
* Removed all Django dependecy. Now when use '%(now:)s' macro in SystemField
  instances you have to use Python date formatting standards.

* Fixed PDF generator to set some report reference instances to graphic
  elements. This is important to make graphic elements in a detail band.

* graphics.Image with a new attribute 'get_image' to set manually functions
  to return image instead of load from PIL object or image. This is important
  to show images and charts depending on object values and logic.

* Added support to border in Report class to make borders around the margin.
