2011-03-29: Version 0.4.12-stable
--------------------------------

* SystemField changed to use method "_text" instead of "text" to allow override

2011-02-16: Version 0.4.11-alpha
--------------------------------

* Refactored force_new_page and start_new_page to be the same.
* Fixed documentation about auto_expand_height

2010-09-23: Version 0.4.10-stable
--------------------------------
* Fixed ReportGroup.force_new_page when works with child bands (with secondary detail pages)

2010-09-23: Version 0.4.9-stable
--------------------------------
* Fixed a test related to ReportGroup.force_new_page

2010-07-05: Version 0.4.8-stable
--------------------------------
* Fixed problem on ReportGroup.force_new_page

2010-07-02: Version 0.4.7-stable
--------------------------------
* Fixed problem with blank page when available height was the same needed

2010-06-29: Version 0.4.7-alpha
--------------------------------
* Implemented new generator CSV

2010-06-25: Version 0.4.6-stable
--------------------------------
* Implemented new event on ObjectValue: on_expression_error

2010-06-17: Version 0.4.5-stable
--------------------------------
* Fixed expressions token replacing braces

2010-06-17: Version 0.4.4-stable
--------------------------------
* Fixed bug on complex expressions with braces 

2010-05-06: Version 0.4.3-stable
--------------------------------
* Fixed cross reference matrix and expressions to avoid use existing object as dictionary

2010-04-29: Version 0.4.2-stable
--------------------------------
* Implemented support to merge default_style to inherite reports
* Fixed ReportGroup.force_new_page that wasn't rendering page footer on the first page

2010-04-27: Version 0.4.1-stable
--------------------------------
* Implementing ReportGroup to support 'force_new_page' to force a new page for each new
  item on the groupper.
* Implementing new function for expression 'coalesce' to set a default value.

2010-04-18: Version 0.4-beta
--------------------------------
* Just releasing 0.4-beta

2010-04-18: Version 0.4-alpha-30
--------------------------------
* Fixed expression to support get_value and children methods (like attribute_name)

2010-04-16: Version 0.4-alpha-29
--------------------------------
* Fixed on_new_page to support real current page number, instead of internal number (thanks to Ari Caldeira)
* Created a new test with all kinds of page number variations are possible
* Additional fonts support to font families

2010-04-11: Version 0.4-alpha-28
--------------------------------
* Fixed ObjectValue when run a circular reference with expressions like 'name.upper'
* Implemented widget borders, useful for outside text borders (thanks to Ari Caldeira)

2010-04-11: Version 0.4-alpha-27
--------------------------------
* Fixed charts on summarize
* Improved expressions to support calculation as argument (i.e: sum(age*weight**2))

2010-04-08: Version 0.4-alpha-26
--------------------------------
* Fixed chart legends x chart widths (they were in conflicts)
* Fixed bar charts to show full size bars (instead lower value)
* Fixed bar charts to show right axis X and Y values

2010-04-07: Version 0.4-alpha-25
--------------------------------
* Implemented events 'before_print' and 'after_print' on ReportBand, and exception AbortEvent
  to abort a rendering inside a "before_*" event

2010-04-07: Version 0.4-alpha-24
--------------------------------
* Implemented new attribute 'get_queryset' on SubRepor can be assigned to a lambda function to
  replace queryset_string

2010-04-06: Version 0.4-alpha-23
--------------------------------
* Fixed calculation involving aggregation as float and simple value as decimal (and vice-versa)

2010-03-30: Version 0.4-alpha-22
--------------------------------
* Fixed charts about values_labels with font-size
* Started implementation of smart expressions in ObjectValue

2010-03-26: Version 0.4-alpha-21
--------------------------------
* Improved CrossReferenceMatrix class to support cols and rows values informed manually
* Fixed method ManyElements.get_elements to not use an internal cache (it was doing it
  wrong with no need)

2010-03-23: Version 0.4-alpha-20
--------------------------------
* Fixed CrossReferenceMatrix class to sort rows and cols values

2010-03-22: Version 0.4-alpha-19
--------------------------------
* Some fixes in cross reference and chart functions
* New function on charts and cross reference: FIELD_ACTION_PERCENT

2010-03-19: Version 0.4-alpha-18
--------------------------------
* Charts support to round values

2010-03-18: Version 0.4-alpha-17
--------------------------------
* Chart colors now support hex strings

2010-03-10: Version 0.4-alpha-16
--------------------------------
* Label widget fixed to support get_value with 'self' and 'text' arguments

2010-03-09: Version 0.4-alpha-15
--------------------------------
* Added automatic report class registration, a variable to store them and a function
  'geraldo.base.get_report_class_by_registered_id' to find it by registration ID

2010-03-06: Version 0.4-alpha-14
--------------------------------
* Generator's attribute 'first_page_number_by' changed to 'first_page_number_by'
* Widget SystemField now support new macros %(first_page_number)s and %(last_page_number)s
* New kind of macro 'var:something' to get variable values and attribute 'variables'
* New method on class BaseReport (Report and SubReport): get_variable_value
* New feature to support generators return rendered pages without generate them (attribute 'return_pages')

2010-02-26: Version 0.4-alpha-13
--------------------------------
* Fixed method GeraldoObject.get_object_value to raise correct exception when don't find an attribute
* Fixed ManyElements to calculate right incremental left and top

2010-02-22: Version 0.4-alpha-12
--------------------------------
* New option 'start_page_number_by' on generators to set what is the first page number

2010-01-23: Version 0.4-alpha-5
-------------------------------
* Implemented barcodes

2010-01-22: Version 0.4-alpha-4
-------------------------------
* Borders now support integer numbers in place of boolean, to set their stroke widths
* Implemented caching functions

2010-01-20: Version 0.4-alpha-3
-------------------------------
* New attribute 'additional_fonts' on Report, to be a dictionary with font names file paths
  for additional fonts besides those from PDF defaults.

2010-01-15: Version 0.4-alpha-2
-------------------------------
* New 'lambda' attribute on ObjectValue 'get_text' to help 'get_value' to format the value
  after it is getted (from Ari's patch)
* New attribute on ObjectValue 'stores_text_in_cache' to set _text property to store the
  value in a memory variable and use it in the next times it be requested.
* Fixed a problem on groups aggregation values.

2010-01-13: Version 0.4-alpha
-----------------------------
* Changed website home page to list new discussion groups
* Fixed reporting to return right file names when downloading
* Fixed decorator memoize to support Python 2.4
* Changed 'Set' imports to be more elegant and compatible with new 'set' builtin type
* Added event system (from Ari's patch)

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.
