* Rely on `importlib.resources
for loading resources from the package.
* Packaging refresh.
* 26: Drop support for Python 3.4 and earlier (including 2.7).
* 24: Switched from ``pkg_resource``-style namespace
package for ``svg`` to a `pkgutil style
* 22: Now ``burn`` uses text mode to write the data,
giving a more normal experience on Python 3.
* Refreshed project metadata.
* Removed support for ``compress`` flag on Graphs.
Simply invoke ``zlib.compress`` on the data if needed.
* ``Graph.burn`` now returns the rendered SVG as a
Unicode string without XML declaration and without
pretty-printing. To customize the XML rendering,
override or replace the ``Graph.render`` static method.
* 17: Fix issue in subclassed Line charts.
* Minor tweak to README for better rendering in PyPI.
* Update docs link.
* 16: Restore support for passing iterable data elements.
(and hence its subclass ``svg.charts.time_series.Plot``)
now accept data as a sequence of pairs. Example::
g = svg.charts.plot.Plot()
data=[(1, 1), (2, 4), (3, 9)]))
* data point labels that are drawn when
``show_data_values = True`` can have their label changed
from the default (which is the y-value) by giving a data item
a ``.text`` attribute.
It is convenient to used ``namedtuple()`` for this::
from collections import namedtuple
Datum = nametuple("Datum", 'x y text')
g = svg.charts.plot.Plot()
data=[Datum(1, 1, 'first'),
Datum(2, 4, 'second'),
Datum(3, 9, 'third')]))
(in fact data items can have any extra attribute;
only ``.text`` is used currently)
* 13: Fix issues in lazy-evaluated iterators.
* 12: The library now provides an ``svg.charts.graph.DrawHooks``
mix-in for customizing the draw behavior.
* Cleaned up documentation.
* 8: Subtitle is now rendering the subtitle and not the title
* 9: ``Bar`` objects now expose a ``_fill_class`` method
for overriding the default CSS fill class. It's now possible
to create a custom subclass that generates the fill based
on the field index as well. For example::
key = False
def _fill_class(self, dataset_index, field_index):
fill_index = 1 + dataset_index + field_index*len(self.data)
return 'fill%s' % fill_index
* Adding a couple small dependencies eliminated a lot of duplicated code
in the ``util`` module.
* Corrected error when ``stacked`` was used in Line charts.
* Dropped support for Python 2.6.
* Requires setuptools for installation.
* Filter out comments when parsing CSS.
* Corrected errors in ``Graph.render_inline_styles``.
* 4: Added hook in Graph to allow overriding of the attributes on the
root SVG element. One can now override or monkeypatch
``Graph._get_root_attributes`` to alter the rendering of the root
attributes such as width and height. For example, to omit width and height::
attrs = super(MyPlot, self)._get_root_attributes()
* 5: Fixed references to class attributes in ``graph.py``.
* SF Issue 1: Fixed installation on Unix systems again. Author's preference
for lowercase ``readme.txt`` was trumped by `setuptools 100
* Moved hosting to BitBucket.
* Established Continuous Integration Tests on Github mirror using Travis-CI.
* Project now builds and tests pass on Python 3 without 2to3.
* Corrected buggy logic in y-axis label rendering (thanks to Emmanuel
* Converted to Unix line endings.
* Updated to latest cssutils with Python 3 support. Thanks Christof!
* Fixed a few remaining issues with Python 3 compatibility.
* Fixed bug in rendering of Pie Chart styles.
* Improved testing framework. Now samples are at least generated as part
of the test suite.
* Fixed build issue where package data wasn't included due to 2to3
technique. Now using distribute technique and installation on Python
3 requires distribute.
* Fixed bug where x axis labels would not be rendered properly if the
largest value was the same as the largest visible x value on the
* Altered the way CSS files are loaded, so they can be more easily
customized by subclasses (and less dependent on the class names).
* A small attempt to improve the documentation - added links to examples
that already exist.
* Fix IndexError in ``svg.charts.plot.Plot.field_size`` when there are
only two values returned by float_range (in the case there are only
two different 'y' values in the data) and scale_y_integers == True.
Credit to `Jean Schurger <http://schurger.org/>`_ for the patch.
* Fixed problem in setup.py installing on Unix OS (case sensitivity of
readme.txt). Credit to Luke Miller and Jean Schurger for supplying
a patch for this issue.
* Updated cssutils dependency to 0.9.6 (currently in beta) to require the CSS profiles support.
* Completed an SVG CSS profile according to the SVG 1.1 spec.
* Added preliminary SVG CSS profile, suitable for stock CSS properties.
I suggest removing SVG 1.0 from the python installation. This involves removing the
SVG directory (or svg_chart*) from site-packages.
Change import statements to import from the new namespace, so::
from SVG import Bar
from svg.charts import bar
* First public release