Changelogs » Svg.charts

Svg.charts

6.1

===

* Rely on `importlib.resources
<https://docs.python.org/3.7/library/importlib.htmlmodule-importlib.resources>`_
for loading resources from the package.
* Packaging refresh.

6.0

===

* 26: Drop support for Python 3.4 and earlier (including 2.7).

5.0

===

* 24: Switched from ``pkg_resource``-style namespace
package for ``svg`` to a `pkgutil style
<https://packaging.python.org/guides/packaging-namespace-packages/pkgutil-style-namespace-packages>`_
namespace package.

4.0.1

=====

* 22: Now ``burn`` uses text mode to write the data,
giving a more normal experience on Python 3.
* Refreshed project metadata.

4.0

===

* 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.

3.4.4

=====

* 17: Fix issue in subclassed Line charts.

3.4.3

=====

* Minor tweak to README for better rendering in PyPI.

3.4.2

=====

* Update docs link.

3.4.1

=====

* 16: Restore support for passing iterable data elements.

3.4

===

Issue 14:

* ``svg.charts.plot.Plot``
(and hence its subclass ``svg.charts.time_series.Plot``)
now accept data as a sequence of pairs.  Example::

import svg.charts.plot

g = svg.charts.plot.Plot()
g.add_data(dict(title='Example',
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::

import svg.charts.plot
from collections import namedtuple

Datum = nametuple("Datum", 'x y text')

g = svg.charts.plot.Plot()
g.add_data(dict(title='Example',
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)

3.3.1

=====

* 13: Fix issues in lazy-evaluated iterators.

3.3

===

* 12: The library now provides an ``svg.charts.graph.DrawHooks``
mix-in for customizing the draw behavior.
* Cleaned up documentation.

3.2

===

* 8: Subtitle is now rendering the subtitle and not the title
again.
* 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::

class VerticalBar(svg.charts.bar.VerticalBar):
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

3.1

===

* Adding a couple small dependencies eliminated a lot of duplicated code
in the ``util`` module.
* Corrected error when ``stacked`` was used in Line charts.

3.0

===

* Dropped support for Python 2.6.
* Requires setuptools for installation.
* Filter out comments when parsing CSS.
* Corrected errors in ``Graph.render_inline_styles``.

2.3

===

* 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::

class MyPlot(plot.Plot):
def _get_root_attributes(self):
attrs = super(MyPlot, self)._get_root_attributes()
del attrs['width']
del attrs['height']
return attrs

2.2.2

=====

* 1: Fixed javascript ID names in TimeSeries labels.

2.2.1

=====

* 5: Fixed references to class attributes in ``graph.py``.

2.2

===

* SF Issue 1: Fixed installation on Unix systems again. Author's preference
for lowercase ``readme.txt`` was trumped by `setuptools 100
<https://bitbucket.org/pypa/setuptools/issue/100/>`_.
* Moved hosting to BitBucket.
* Established Continuous Integration Tests on Github mirror using Travis-CI.

2.1

===

* Project now builds and tests pass on Python 3 without 2to3.

2.0.9

=====

* Corrected buggy logic in y-axis label rendering (thanks to Emmanuel
Blot).
* Converted to Unix line endings.

2.0.8

=====

* Updated to latest cssutils with Python 3 support. Thanks Christof!
* Fixed a few remaining issues with Python 3 compatibility.

2.0.7

=====

* Fixed bug in rendering of Pie Chart styles.
* Improved testing framework. Now samples are at least generated as part
of the test suite.
* Fixed bug in javascript when label ids had spaces. See 3139197.
* Fixed build issue where package data wasn't included due to 2to3
technique. Now using distribute technique and installation on Python
3 requires distribute.

2.0.6

=====

* 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
chart.

2.0.5

=====

* Altered the way CSS files are loaded, so they can be more easily
customized by subclasses (and less dependent on the class names).

2.0.4

=====

* A small attempt to improve the documentation - added links to examples
that already exist.

2.0.3

=====

* 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.

2.0.2

=====

* 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.

2.0.1

=====

* Added preliminary SVG CSS profile, suitable for stock CSS properties.

2.0

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
Bar.VerticalBar(...)

becomes::

from svg.charts import bar
bar.VerticalBar(...)

1.2

===

* Bug fixes

1.1

===

* First public release