Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-relatorio for
openSUSE:Factory checked in at 2026-04-04 19:07:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-relatorio (Old)
and /work/SRC/openSUSE:Factory/.python-relatorio.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-relatorio"
Sat Apr 4 19:07:56 2026 rev:19 rq:1344563 version:0.12.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-relatorio/python-relatorio.changes
2025-02-24 15:50:42.844137703 +0100
+++
/work/SRC/openSUSE:Factory/.python-relatorio.new.21863/python-relatorio.changes
2026-04-04 19:09:52.923188089 +0200
@@ -1,0 +2,10 @@
+Sat Apr 4 08:29:36 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.12.0:
+ * Bug fixes (see mercurial logs for details)
+ * Remove support for Python older than 3.9
+ * Upgrade to pyproject
+ * Add support for Python 3.14
+ * Add support for Python 3.13
+
+-------------------------------------------------------------------
Old:
----
relatorio-0.11.1.tar.gz
New:
----
relatorio-0.12.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-relatorio.spec ++++++
--- /var/tmp/diff_new_pack.kj9aZe/_old 2026-04-04 19:09:54.143238111 +0200
+++ /var/tmp/diff_new_pack.kj9aZe/_new 2026-04-04 19:09:54.147238275 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-relatorio
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
# Copyright (c) 2016-2024 Dr. Axel Braun
#
# All modifications and additions to the file contributed by third parties
@@ -17,31 +17,30 @@
#
-%{?sle15allpythons}
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define mod_name relatorio
+%{?sle15_python_module_pythons}
Name: python-relatorio
-Version: 0.11.1
+Version: 0.12.0
Release: 0
Summary: Python module to create reports from Python objects
License: GPL-3.0-or-later
Group: Productivity/Office/Management
URL: https://pypi.python.org/pypi/relatorio
Source:
https://pypi.io/packages/source/r/%{mod_name}/%{mod_name}-%{version}.tar.gz
-BuildRequires: %{python_module Genshi}
+BuildRequires: %{python_module Genshi >= 0.5}
BuildRequires: %{python_module devel}
-BuildRequires: %{python_module lxml}
+BuildRequires: %{python_module hatch-tryton}
+BuildRequires: %{python_module hatchling}
+BuildRequires: %{python_module lxml >= 2.0}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module python-magic}
-BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-
-Requires: python-Genshi
-Requires: python-PyYAML
-Requires: python-lxml
-Requires: python-pycha
+Requires: python-Genshi >= 0.5
+Requires: python-PyYAML >= 5.3
+Requires: python-lxml >= 2.0
+Requires: python-pycha >= 0.4.0
Requires: python-python-magic
Requires(post): update-alternatives
Requires(preun): update-alternatives
@@ -65,8 +64,6 @@
%python_clone -a %{buildroot}%{_bindir}/relatorio-render
%check
-# https://relatorio.tryton.org/bug65
-sed -i 's:iteritems:items:' relatorio/tests/test_api.py
mv relatorio relatorio_hide
%pyunittest discover -v
++++++ relatorio-0.11.1.tar.gz -> relatorio-0.12.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.flake8 new/relatorio-0.12.0/.flake8
--- old/relatorio-0.11.1/.flake8 2021-12-18 02:00:16.000000000 +0100
+++ new/relatorio-0.12.0/.flake8 1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-[flake8]
-ignore=E123,E124,E126,E128,W503
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.gitignore
new/relatorio-0.12.0/.gitignore
--- old/relatorio-0.11.1/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/relatorio-0.12.0/.gitignore 2026-04-04 19:09:54.283243851 +0200
@@ -0,0 +1 @@
+symbolic link to Sync/dotfiles/git/dot-gitignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.gitlab-ci.yml
new/relatorio-0.12.0/.gitlab-ci.yml
--- old/relatorio-0.11.1/.gitlab-ci.yml 2024-01-17 10:45:52.000000000 +0100
+++ new/relatorio-0.12.0/.gitlab-ci.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,84 +0,0 @@
-workflow:
- rules:
- - if: $CI_COMMIT_BRANCH =~ /^topic\/.*/ && $CI_PIPELINE_SOURCE == "push"
- when: never
- - when: always
-
-stages:
- - check
- - test
-
-.check:
- stage: check
- image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/tryton/ci
-
-check-doc:
- extends: .check
- image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/sphinxdoc/sphinx
- cache:
- paths:
- - .cache/pip
- before_script:
- - pip install -r doc/requirements-doc.txt
- - pip install sphinx-lint rstcheck[sphinx]
- script:
- - python -m sphinx -T -E -W -n -b html doc _build/html
- - python -m sphinxlint doc
- - rstcheck --recursive doc
- - python -m sphinx -T -E -W -n -b linkcheck doc _build
- rules:
- - changes:
- - doc/**/*
-
-check-flake8:
- extends: .check
- script:
- - flake8
-
-check-isort:
- extends: .check
- script:
- - isort -m VERTICAL_GRID -c .
-
-check-dist:
- extends: .check
- before_script:
- - pip install twine
- script:
- - python setup.py sdist
- - twine check dist/*
-
-.test:
- stage: test
-
-.test-tox:
- extends: .test
- variables:
- PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
- cache:
- paths:
- - .cache/pip
- before_script:
- - pip install tox
- coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
- artifacts:
- reports:
- junit: junit.xml
- coverage_report:
- coverage_format: cobertura
- path: coverage.xml
-
-test-tox-python:
- extends: .test-tox
- image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/python:${PYTHON_VERSION}
- script:
- - tox -e "py${PYTHON_VERSION/./}" -- -v --output-file junit.xml
- parallel:
- matrix:
- - PYTHON_VERSION: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11",
"3.12"]
-
-test-tox-pypy:
- extends: .test-tox
- image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/pypy:3
- script:
- - tox -e pypy3 -- -v --output-file junit.xml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.hgtags new/relatorio-0.12.0/.hgtags
--- old/relatorio-0.11.1/.hgtags 2024-12-14 22:59:37.000000000 +0100
+++ new/relatorio-0.12.0/.hgtags 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-e876d1a8aa91987be7fcfd8c96d56e9818436901 0.1.0
-11caddcad2239862ac8bb3902fc42337361b1d1b 0.1.1
-e3c7c71b212489adf6831bb4d51f83d53e6076e1 0.2.0
-287d6310d2ef7881221eddb65202212bada2e9b7 0.3.0
-a8fb9b03615b19e0e5b1027e81293904bb204cdd 0.4.0
-db423938f1d913e220163e87d111e9877f8e0f7a 0.4.1
-de87333baeaff772e904a2c60d0c8665dce821b7 0.5.0
-9b5bd4d4702f6b8652bfa8fd91103cf6b2dbc386 0.5.1
-9b5bd4d4702f6b8652bfa8fd91103cf6b2dbc386 0.5.1
-0000000000000000000000000000000000000000 0.5.1
-0000000000000000000000000000000000000000 0.5.1
-9bba1a2a16a11bfe7c96e4a6c81485457a7e77e2 0.5.1
-c4a133c148e17588b7cb21764758643d82ed7e91 0.5.2
-e34d189704643505397e0f8ba3a5bf92dade3003 0.5.3
-8960712aea29168b51bb46077c8a8d2f2fd0dcd2 0.5.4
-ec0f2bfc7521e95835bd712c7cc811d39d1168a3 0.5.5
-4c36447e560735d81d08bd184c46e20c1109b919 0.5.6
-4fc1c686d470c48d8c9f3bb5971fc05318053318 0.5.7
-66bfb506d014824f0afcb2c90d6503272132b99e 0.6.0
-8360160b8e383c34c4d7a097d76f4eec2eceaad8 0.6.1
-c408416e6e3d2bea0732dca1207ad994d42a0c5e 0.6.2
-fb1791ac5742e87cc24031990938d539c9f2dae4 0.6.3
-1b55b174419d6837f37cc33aa41c6db65d56e538 0.6.4
-50115e7464e35bc1517b23ed4fd4eed1d284273a 0.7.0
-8ee1d7515d35918944151d3a44003063e1ab6a18 0.7.1
-0775b131b51d40c2147b1ae104f760698a8d9f9e 0.8.0
-a9a586fec08da03f86ec781472a981949d4c455a 0.8.1
-a0cf6c5a86e3eaf125a96f942f64114b326dba3b 0.9.0
-34f63c525603ed1fe903703725a51d28cdfa622f 0.9.1
-9c0efe3507a42762e2128f9ad475f463da253c2b 0.9.2
-b190bcec6e4440fd4d21400bb1a6b01291448e41 0.9.3
-ef956866045d0ef69164574cdda0a95be63e1f20 0.10.0
-196491cc18cbbf34d720a12d41bc77ac75919e84 0.10.1
-bd062ee7301a3e54ead067cc628c1e6bce54b724 0.10.2
-224242948a5cfc928138ffbfb9347b5953654576 0.11.0
-5a86d5fc9f13e18a23734597ed698841ec45f05a 0.11.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.isort.cfg
new/relatorio-0.12.0/.isort.cfg
--- old/relatorio-0.11.1/.isort.cfg 2021-12-18 01:59:27.000000000 +0100
+++ new/relatorio-0.12.0/.isort.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-[settings]
-multi_line_output=4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/.rstcheck.cfg
new/relatorio-0.12.0/.rstcheck.cfg
--- old/relatorio-0.11.1/.rstcheck.cfg 2023-09-03 18:49:40.000000000 +0200
+++ new/relatorio-0.12.0/.rstcheck.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-[rstcheck]
-ignore_directives = include
-ignore_messages = (Hyperlink target .* is not referenced)|(Duplicate implicit
target name:.*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/CHANGELOG
new/relatorio-0.12.0/CHANGELOG
--- old/relatorio-0.11.1/CHANGELOG 2024-12-14 22:58:31.000000000 +0100
+++ new/relatorio-0.12.0/CHANGELOG 1970-01-01 01:00:00.000000000 +0100
@@ -1,189 +0,0 @@
-0.11.1 - 2024-12-14
--------------------
-* Ignore ZipFile compresslevel for Python < 3.7
-
-0.11.0 - 2024-12-07
--------------------
-* Allow setting zip file generation options on opendocument templates
-
-0.10.2 - 20240421
------------------
-* Defer files added to serializer before call
-* Add support for Python 3.12
-
-0.10.1 - 20220502
------------------
-* Use unittest discover
-* Add support for Python 3.10
-* Support directive applying to itself
-* Keep tail of directive
-
-0.10.0 - 20210911
------------------
-* Remove support for Python older than 3.5
-* Add relatorio-render script
-* Add templating of meta in opendocument
-
-0.9.3 - 20210507
-----------------
-* Support empty image in opendocument
-* Add support for Python 3.9
-
-0.9.2 - 20200826
-----------------
-* Support draw name tuple without parenthesis
-
-0.9.1 - 20200126
-----------------
-* Do not guess type of cell if directive is not alone
-* Add support for Python 3.8
-* Support file-magic as fallback to python-magic
-
-0.9.0 - 20190729
-----------------
-* Support out parameter of render
-* Write opendocument stream directly to the ZipFile
-
-0.8.1 - 20180930
-----------------
-* Add support for Python 3.7
-* Escape invalid XML characters
-* Enforce closing tag to be the same directive as the opening
-* Use compression for zip file
-* Write mimetype as first file of the zip file
-
-0.8.0 - 20171204
-----------------
-* Do not guess_type on styled cell content
-* Remove type attributes when guessing type
-* Add support for Python 3.6
-* Remove soft-page-break
-
-0.7.1 - 20171008
-----------------
-* Remove warning when import plugin fails
-* Apply the guess type function on the correct node
-* Fix guess_type for date and datetime
-
-0.7.0 - 20170729
-----------------
-* Replace hard-coded extensions by mimetypes guess
-* Add more guess types: 'boolean', 'date', 'time' and 'void'
-* Add support for Flat OpenDocument
-
-0.6.4 - 20161218
-----------------
-* Use StringIO instead of BytesIO for TextSerializer result
-
-0.6.3 - 20160629
-----------------
-* Update calcext:value-type with the same guessed type
-* Register MarkupTemplate for 'markup' mimetype instead of 'xml'
-
-0.6.2 - 20150919
-----------------
-* Add name argument for "image:" in odf
-* Remove table:end-cell-address from draw:frame as the address could be wrong
-* Remove nose
-* Add directives: attrs, content, replace and strip
-
-0.6.1 - 20140909
-----------------
-* Use io module instead of StringIO
-* Explicitly close ZipFile
-
-0.6.0 - 20130810
-----------------
- * Add support for Python 3
- * Allow to pass only source to Template
-
-0.5.7 - 20130126
-----------------
- * Allow string as bitstream for images
-
-0.5.6 - 20120223
-----------------
- * Add expression cache to prevent multiple evaluation of the same expression
- * Fix typo when writing manifest
- * Remove Thumbnails in opendocument
- * Clean meta in opendocument
- * Clean template code from draw:frame in opendocument
- * Use StringIO as failback of cStringIO
-
-0.5.5 - 20100719
-----------------
- * Fix namespace in opendocument manifest
-
-0.5.4 - 20100330
-----------------
- * Update manifest.xml with added files in opendocument
- * Do not write empty width or height attributes in opendocument
- * Update py:attrs attributes in opendocument
-
-0.5.3 - 20100110
-----------------
- * Escape elements values in opendocument template
-
-0.5.2 - 20091108
-----------------
- * Fix guess_type for long value
- * Add width, height arguments for "image:" in odf
- * Switch to GPL-3
- * Added support for Genshi {% include %} tags (patch by Simon Jagoe)
- * Nicer traceback message upon failed import
-
-0.5.1 - 20090416
-----------------
- * Simplified the examples
- * Fix usage of tags without attributes (choose & otherwise)
- * Print original traceback when a module can not be loaded
- * Do not import relatorio in setup.py
- * Better handling of namespaces
- * Added some tests
-
-0.5.0 - 20090123
-----------------
- * Added Text and XML Template to the TemplateLoader
- * Splitted mimetypes and ids in the ReportRepository
- * RelatorioStream now has a __str__ method
- * OOTemplate: ChartTemplate can be included
- * OOTemplate: Correctly handle content type in the table cells
- * OOTemplate: Better closing/opening tag detection algorithm
- * OOTemplate: Looping on columns now work in OOTemplates
- * OOTemplate: Using compression
-
-0.4.1 - 20081110
-----------------
- * Support for upstream PyCha since the most annoying bug has been fixed
- * Removed the entrypoint stuff that was confusing lot of users
-
-0.4.0 - 20080910
-----------------
- * Generation of png/svg files through PyCha
- * Code cleaning
- * Signature of report __call__ method mimics the one of genshi templates
- * Added the possibility to call chart report from odf ones
-
-0.3.0 - 20080806
-----------------
- * Generation of pdf files through ConTeXt
- * Better support of cell value in opendocument table cells
- * Better namespace support in opendocument files
- * Better image support in opendocument files
-
-0.2.0 - 20080717
-----------------
- * Added support for templating in the styles.xml file
- * Much more genshi-esque way to do stuff in the odt templating
-
-0.1.1 - 20080715
-----------------
- * Added an image handling feature (thanks to b2ck.com for the idea and bits of
- implementation)
- * Added the dependancy on Genshi
- * test for trml2pdf presence
- * standardize the way the template object returns their results
-
-0.1.0 - 20080707
-----------------
-Initial version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/COPYRIGHT
new/relatorio-0.12.0/COPYRIGHT
--- old/relatorio-0.11.1/COPYRIGHT 2024-12-14 22:58:53.000000000 +0100
+++ new/relatorio-0.12.0/COPYRIGHT 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,7 @@
-Copyright (C) 2008-2024 Nicolas Évrard
+Copyright (C) 2008-2024 Nicolas Évrard <[email protected]>
Copyright (C) 2008-2009 Gaëtan de Menten
-Copyright (C) 2008-2024 Cédric Krier
+Copyright (C) 2008-2026 Cédric Krier <[email protected]>
+Copyright (C) 2008-2026 B2CK SRL
Copyright (C) 2008 Udo Spallek
Copyright (C) 2007-2008 OpenHex SPRL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/MANIFEST.in
new/relatorio-0.12.0/MANIFEST.in
--- old/relatorio-0.11.1/MANIFEST.in 2023-09-03 18:49:40.000000000 +0200
+++ new/relatorio-0.12.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-include LICENSE
-include COPYRIGHT
-include README.rst
-include CHANGELOG
-include doc/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/PKG-INFO
new/relatorio-0.12.0/PKG-INFO
--- old/relatorio-0.11.1/PKG-INFO 2024-12-14 23:00:10.680674800 +0100
+++ new/relatorio-0.12.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,41 +1,34 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: relatorio
-Version: 0.11.1
+Version: 0.12.0
Summary: A templating library able to output odt and pdf files
-Home-page: https://pypi.python.org/pypi/relatorio
-Download-URL: https://downloads.tryton.org/relatorio/
-Author: Tryton
-Author-email: [email protected]
-License: GPL License
-Project-URL: Bug Tracker, https://bugs.tryton.org/relatorio
-Project-URL: Documentation, https://docs.tryton.org/relatorio
-Project-URL: Forum, https://discuss.tryton.org/tags/relatorio
-Project-URL: Source Code, https://code.tryton.org/relatorio
-Keywords: templating OpenDocument PDF
-Classifier: Development Status :: 4 - Beta
+Project-URL: homepage, https://www.tryton.org/
+Project-URL: documentation, https://docs.tryton.org/relatorio
+Project-URL: changelog, https://docs.tryton.org/relatorio/releases.html
+Project-URL: forum, https://discuss.tryton.org/tags/relatorio
+Project-URL: issues, https://bugs.tryton.org/relatorio
+Project-URL: repository, https://code.tryton.org/relatorio
+Author: Gaëtan de Menten, B2CK SRL, Udo Spallek, OpenHex SPRL
+Author-email: Nicolas Évrard <[email protected]>, Cédric Krier
<[email protected]>
+Maintainer-email: Tryton <[email protected]>
+License-Expression: GPL-3.0-or-later
+License-File: COPYRIGHT
+License-File: LICENSE
+Keywords: OpenDocument,PDF,templating
+Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing
-Requires-Python: >=3.5
-License-File: LICENSE
-Requires-Dist: Genshi>=0.5
+Requires-Python: >=3.9
+Requires-Dist: genshi>=0.5
Requires-Dist: lxml>=2.0
Provides-Extra: chart
-Requires-Dist: pycha>=0.4.0; extra == "chart"
-Requires-Dist: pyyaml; extra == "chart"
+Requires-Dist: pycairo; extra == 'chart'
+Requires-Dist: pycha>=0.4.0; extra == 'chart'
+Requires-Dist: pyyaml>=5.3; extra == 'chart'
Provides-Extra: fodt
-Requires-Dist: python-magic; extra == "fodt"
+Requires-Dist: python-magic; extra == 'fodt'
+Description-Content-Type: text/x-rst
#########
Relatorio
Binary files old/relatorio-0.11.1/doc/basic.png and
new/relatorio-0.12.0/doc/basic.png differ
Binary files old/relatorio-0.11.1/doc/basic_generated.png and
new/relatorio-0.12.0/doc/basic_generated.png differ
Binary files old/relatorio-0.11.1/doc/bonham_basic.png and
new/relatorio-0.12.0/doc/bonham_basic.png differ
Binary files old/relatorio-0.11.1/doc/complicated.png and
new/relatorio-0.12.0/doc/complicated.png differ
Binary files old/relatorio-0.11.1/doc/complicated_rendered.png and
new/relatorio-0.12.0/doc/complicated_rendered.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/conf.py
new/relatorio-0.12.0/doc/conf.py
--- old/relatorio-0.11.1/doc/conf.py 2023-09-03 18:49:40.000000000 +0200
+++ new/relatorio-0.12.0/doc/conf.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-# This file is part of relatorio. The COPYRIGHT file at the top level of
-# this repository contains the full copyright notices and license terms.
-
-import os
-
-
-def get_info():
- import subprocess
- import sys
-
- module_dir = os.path.dirname(os.path.dirname(__file__))
-
- info = dict()
-
- result = subprocess.run(
- [sys.executable, 'setup.py', '--name', '--description'],
- stdout=subprocess.PIPE, check=True, cwd=module_dir)
- info['name'], info['description'] = (
- result.stdout.decode('utf-8').strip().splitlines())
-
- result = subprocess.run(
- [sys.executable, 'setup.py', '--version'],
- stdout=subprocess.PIPE, check=True, cwd=module_dir)
- info['version'] = result.stdout.decode('utf-8').strip()
-
- return info
-
-
-info = get_info()
-
-html_theme = 'sphinx_book_theme'
-html_theme_options = {
- 'repository_provider': 'gitlab',
- 'repository_url': 'https://code.tryton.org/relatorio',
- 'repository_branch': 'branch/default',
- 'use_source_button': True,
- 'use_edit_page_button': True,
- 'use_repository_button': True,
- 'use_download_button': False,
- 'path_to_docs': 'doc',
- }
-html_title = info['description']
-master_doc = 'index'
-project = info['name']
-release = version = info['version']
-default_role = 'ref'
-highlight_language = 'none'
-extensions = [
- 'sphinx_copybutton',
- 'sphinx.ext.intersphinx',
- ]
-intersphinx_mapping = {
- 'python': ('https://docs.python.org/', None),
- }
-
-del get_info, info
Binary files old/relatorio-0.11.1/doc/frame.png and
new/relatorio-0.12.0/doc/frame.png differ
Binary files old/relatorio-0.11.1/doc/hyperlink.png and
new/relatorio-0.12.0/doc/hyperlink.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/indepthexample.rst
new/relatorio-0.12.0/doc/indepthexample.rst
--- old/relatorio-0.11.1/doc/indepthexample.rst 2024-12-07 16:45:07.000000000
+0100
+++ new/relatorio-0.12.0/doc/indepthexample.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1,161 +0,0 @@
-Indepth Example
-===============
-
-In this page I will detail the way I created the reports that can be found in
-the `examples directory`_.
-
-.. _examples directory:
https://foss.heptapod.net/tryton/relatorio/-/tree/branch/default/examples
-
-Let's start with the content of :file:`common.py`, this file stores the
-definition of an invoice that will be used to create the different reports. The
-invoice is a simple python dictionary with some methods added for the sake of
-simplicity:
-
-.. include:: ../examples/common.py
- :literal:
-
-Create a simple OpenOffice Writer template
-------------------------------------------
-
-Let's start with the simple template defined in :file:`basic.odt`.
-
-.. image:: basic.png
-
-This report will be created and rendered with the following three line of
code::
-
-
- from relatorio.templates.opendocument import Template
- basic = Template(source='', filepath='basic.odt')
- file('bonham_basic.odt',
'wb').write(basic.generate(o=inv).render().getvalue())
-
-Notice that the dictionary passed to ``generate`` is used to bind names to make
-them accessible to the report. So you can access the data of the invoice with a
-Text Placeholder_ containing ``o.customer.name``. This is where you can see our
-Genshi_ heritage. In fact, all reports using relatorio are subclasses of
-Genshi's Template. Thus you can use most of the goodies provided by Genshi.
-
-.. _Placeholder:
https://wiki.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Writer_Guide/Using_placeholder_fields
-.. _Genshi: https://genshi.edgewall.org/
-
-To iterate over a list you must use an hyperlink (created through
-'Insert > Hyperlink') and encode as the target the Genshi expression to use.
-The URL-scheme used *must* be ``relatorio``. You can use whatever text you want
-as the link text, but we find it way more explicit to display the Genshi code
-used. Here is the example of the for loop.
-
-.. image:: hyperlink.png
-
-And thus here is our invoice, generated through relatorio:
-
-.. image:: basic_generated.png
-
-Advanced zip options
---------------------
-
-It can happen that the document being generated result in a file which
-uncompressed size is bigger than 2GiB. The default settings of Python's
-`zipfile library`_ do not allow to generate those files.
-
-To circumvent this issue, opendocument templates support additional parameters
-to the ``generate`` method. Those parameters are:
-
-:_relatorio_compresslevel: This parameter defines the *compresslevel* parameter
- of the underlying Zipfile_ call.
-
-:_relatorio_chunksize: This parameter defines the size of each chunk of data
- streamed to the underlying Zipfile_ object.
-
-:_relatorio_zip64: This parameter forces the handling of ZIP64 extensions.
- It should be set to true if the size of the file may be
- bigger than 2GiB.
-
-:_relatorio_compression_method: This parameter defines the *compression*
- paramater of the underlygin Zipfile_ call.
-
-.. _`zipfile library`: https://docs.python.org/3/library/zipfile.html
-.. _Zipfile: https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile
-
-One step further: OpenOffice Calc and OpenOffice Impress templates
-------------------------------------------------------------------
-
-Just like we defined a Writer template it is just as easy to define a
-Calc/Impress template. Let's take a look at :file:`pivot.ods`.
-
-.. image:: pivot.png
-
-As usual you can see here the different way to make a reference to the content
-of the invoice object:
-
- * through the Text Placeholder interpolation of Genshi
- * or through the hyperlink specification I explained earlier.
-
-Note that there is another tab in this Calc file used to make some data
-aggregation thanks to the `data pilot`_ possibilities of OpenOffice.
-
-.. _data pilot:
https://help.libreoffice.org/latest/en-US/text/scalc/guide/datapilot.html
-
-And so here is our rendered template:
-
-.. image:: pivot_rendered.png
-
-Note that the type of data is correctly set even though we did not have
-anything to do.
-
-Everybody loves charts
-----------------------
-
-Now we would like to make our basic report a bit more colorful, so let's add a
-little chart. We are using PyCha_ to generate them from our :file:`pie_chart`
-template:
-
-.. include:: ../examples/pie_chart
- :literal:
-
-.. _PyCha: https://pypi.org/project/pycha/
-
-Once again we are using the same syntax as Genshi but this time this is a
-TextTemplate_. This file follow the YAML_ format thus we can render it into a
-data structure that will be sent to PyCha:
-
- * the options dictionary will be sent to PyCha as-is
- * the dataset in the chart dictionary is sent to PyCha through its
- ``.addDataset`` method.
-
-.. _TextTemplate:
https://genshi.edgewall.org/wiki/Documentation/text-templates.html
-.. _YAML: https://yaml.org/
-
-If you need more information about those go to the `pycha website`_.
-
-.. _pycha website: https://pypi.org/project/pycha/
-
-And here is the result:
-
-.. image:: pie.png
-
-A (not-so) real example
------------------------
-
-Now that we have everything to start working on our complicated template
-:file:`invoice.odt`, we will go through it one step at a time.
-
-.. image:: complicated.png
-
-In this example, you can see that not only the openoffice plugin supports the
-``for directive``, it also supports the ``if directive`` and the ``choose
directive``
-that way you can choose to render or not some elements.
-
-The next step is to add images programmatically, all you need to do is to
-create frame ('Insert > Frame') and name it ``image: expression`` just like in
-the following example:
-
-.. image:: frame.png
-
-The expression when evaluated must return a couple whose first element is a
-file object containing the image and second element is its mimetype. Note that
-if the first element of the couple is an instance of ``relatorio.Report`` then
-this report is rendered (using the same arguments as the originating template)
-and used as the source for the file definition.
-
-This kind of setup gives us a nice report like that:
-
-.. image:: complicated_rendered.png
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/index.rst
new/relatorio-0.12.0/doc/index.rst
--- old/relatorio-0.11.1/doc/index.rst 2023-09-03 19:13:35.000000000 +0200
+++ new/relatorio-0.12.0/doc/index.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-.. include:: ../README.rst
-
-Contents:
-
-.. toctree::
- :maxdepth: 2
-
- quickexample
- indepthexample
- releases
Binary files old/relatorio-0.11.1/doc/pie.png and
new/relatorio-0.12.0/doc/pie.png differ
Binary files old/relatorio-0.11.1/doc/pivot.png and
new/relatorio-0.12.0/doc/pivot.png differ
Binary files old/relatorio-0.11.1/doc/pivot_rendered.png and
new/relatorio-0.12.0/doc/pivot_rendered.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/quickexample.rst
new/relatorio-0.12.0/doc/quickexample.rst
--- old/relatorio-0.11.1/doc/quickexample.rst 2023-09-03 18:49:40.000000000
+0200
+++ new/relatorio-0.12.0/doc/quickexample.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1,59 +0,0 @@
-Quick Example
-=============
-
-In this page we will show you how you can create OpenOffice documents using
Relatorio.
-
-Data
------
-
-We need some data objects to work on, so let's first create a fake invoice
-object. Please create a file named :file:`data.py` in your favorite text
-editor, and copy the following content:
-
-.. include:: ../examples/common.py
- :literal:
-
-So we created the data for an invoice for the famous Led Zeppelin's drummer and
-his favorite addiction.
-
-Template
---------
-
-The next thing to do is to create a template for invoices. We will use the one
-displayed below. To create the Genshi directives, you need to create a
-text-type placeholder field, and fill it with the expression you want to use.
-
-.. image:: relatorio_basic.png
-
-Generate the final documents
-----------------------------
-
-Now that we have both a template and some data, we can now start to use
-Relatorio to create John Bonham's particular invoice. So fire up your favorite
-python interpreter (we suggest using IPython_) and type (or copy-paste) the
-following commands::
-
- from relatorio.templates.opendocument import Template
- from data import bonham_invoice
- basic = Template(source='', filepath='basic.odt')
- basic_generated = basic.generate(o=bonham_invoice).render()
- file('bonham_basic.odt', 'wb').write(basic_generated.getvalue())
-
-.. _IPython: https://ipython.org/
-
-On the first line we import the opendocument Template engine. This class has
-the same signature as the one from Genshi but uses only the filepath argument.
-On the fourth line, we generate the final document from the template and the
-data. Note how we pass ``o=bonham_invoice`` as argument to generate. This is
the
-same "o" variable as was used in the O dt template we just created. render()
-returns us a StringIO object, which is then used to pipe the result to a file.
-
-.. image:: bonham_basic.png
-
-And so here is our invoice with all the fields completed according to the
-Invoice object we created earlier. Notice how the style we set in the template
-are also applied in the resulting invoice.
-
-In this example, we only used the ``py:for`` directive, but Relatorio also
-supports other Genshi directives: ``py:if``, ``py:choose`` / ``py:when`` /
-``py:otherwise`` and ``py:with``.
Binary files old/relatorio-0.11.1/doc/relatorio_basic.png and
new/relatorio-0.12.0/doc/relatorio_basic.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/releases.rst
new/relatorio-0.12.0/doc/releases.rst
--- old/relatorio-0.11.1/doc/releases.rst 2023-09-03 19:18:04.000000000
+0200
+++ new/relatorio-0.12.0/doc/releases.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1,7 +0,0 @@
-.. _releases-index:
-
-=============
-Release notes
-=============
-
-.. include:: ../CHANGELOG
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/doc/requirements-doc.txt
new/relatorio-0.12.0/doc/requirements-doc.txt
--- old/relatorio-0.11.1/doc/requirements-doc.txt 2024-11-30
17:11:38.000000000 +0100
+++ new/relatorio-0.12.0/doc/requirements-doc.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-setuptools
-sphinx_book_theme
-sphinx_copybutton
Binary files old/relatorio-0.11.1/examples/basic.odt and
new/relatorio-0.12.0/examples/basic.odt differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/basic.tex
new/relatorio-0.12.0/examples/basic.tex
--- old/relatorio-0.11.1/examples/basic.tex 2018-08-18 13:27:26.000000000
+0200
+++ new/relatorio-0.12.0/examples/basic.tex 1970-01-01 01:00:00.000000000
+0100
@@ -1,21 +0,0 @@
-\enableregime [utf-8]
-\mainlanguage [fr]
-
-\starttext
-
-Dear $o.customer.name,
-
-Here is the list of your purchases:
-
-\starttable[|l|l|l|l|l|]
-\HL
-\NC Name \VL Reference \VL Quantity \VL Unit Price \VL Amount \SR
-\HL
-{% for line in o.lines%} \
-\NC $line.item.name \VL $line.item.reference \VL $line.quantity
-\VL $line.item.price \VL $line.amount \SR
-\HL \
-{% end %}
-\stoptable
-
-\stoptext
Binary files old/relatorio-0.11.1/examples/big.odt and
new/relatorio-0.12.0/examples/big.odt differ
Binary files old/relatorio-0.11.1/examples/bouteille.png and
new/relatorio-0.12.0/examples/bouteille.png differ
Binary files old/relatorio-0.11.1/examples/columns.odt and
new/relatorio-0.12.0/examples/columns.odt differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/common.py
new/relatorio-0.12.0/examples/common.py
--- old/relatorio-0.11.1/examples/common.py 2023-01-08 02:14:54.000000000
+0100
+++ new/relatorio-0.12.0/examples/common.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,43 +0,0 @@
-from os.path import dirname, join
-
-
-class Invoice(dict):
-
- @property
- def total(self):
- return sum(line['amount'] for line in self['lines'])
-
- @property
- def vat(self):
- return self.total * 0.21
-
-
-inv = Invoice(customer={'name': 'John Bonham',
- 'address': {'street': 'Smirnov street',
- 'zip': 1000,
- 'city': 'Montreux'}},
- lines=[{'item': {'name': 'Vodka 70cl',
- 'reference': 'VDKA-001',
- 'price': 10.34},
- 'quantity': 7,
- 'amount': 7 * 10.34},
- {'item': {'name': 'Cognac 70cl',
- 'reference': 'CGNC-067',
- 'price': 13.46},
- 'quantity': 12,
- 'amount': 12 * 13.46},
- {'item': {'name': 'Sparkling water 25cl',
- 'reference': 'WATR-007',
- 'price': 4},
- 'quantity': 1,
- 'amount': 4},
- {'item': {'name': 'Good customer',
- 'reference': 'BONM-001',
- 'price': -20},
- 'quantity': 1,
- 'amount': -20},
- ],
- id='MZY-20080703',
- status='late',
- bottle=(open(join(dirname(__file__), 'bouteille.png'), 'rb'),
- 'image/png'))
Binary files old/relatorio-0.11.1/examples/complicated.odt and
new/relatorio-0.12.0/examples/complicated.odt differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/demo_chart.py
new/relatorio-0.12.0/examples/demo_chart.py
--- old/relatorio-0.11.1/examples/demo_chart.py 2021-12-18 01:59:33.000000000
+0100
+++ new/relatorio-0.12.0/examples/demo_chart.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,24 +0,0 @@
-from os.path import abspath, dirname, join
-
-# test data
-from common import inv
-
-from relatorio import Report
-
-if __name__ == '__main__':
- pie_report = Report(abspath(join(dirname(__file__), 'pie_chart')),
- 'image/png')
- open(join(dirname(__file__), 'pie.png'), 'wb').write(
- pie_report(o=inv).render().getvalue())
- hbar_report = Report(abspath(join(dirname(__file__), 'hbar_chart')),
- 'image/svg')
- open(join(dirname(__file__), 'hbar.svg'), 'wb').write(
- hbar_report(o=inv).render().getvalue())
- vbar_report = Report(abspath(join(dirname(__file__), 'vbar_chart')),
- 'image/svg')
- open(join(dirname(__file__), 'vbar.svg'), 'wb').write(
- vbar_report(o=inv).render().getvalue())
- line_report = Report(abspath(join(dirname(__file__), 'line_chart')),
- 'image/png')
- open(join(dirname(__file__), 'line.png'), 'wb').write(
- line_report(o=inv).render().getvalue())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/demo_context.py
new/relatorio-0.12.0/examples/demo_context.py
--- old/relatorio-0.11.1/examples/demo_context.py 2021-12-18
01:59:33.000000000 +0100
+++ new/relatorio-0.12.0/examples/demo_context.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-
-from os.path import abspath, dirname, join
-
-# test data
-from common import inv
-
-from relatorio import Report
-
-# PDF
-if __name__ == '__main__':
- print("generating output_basic.pdf... ", end='')
- report = Report(abspath(join(dirname(__file__), 'basic.tex')),
- 'application/pdf')
- content = report(o=inv).render().getvalue()
- open(join(dirname(__file__), 'output_basic.pdf'), 'wb').write(content)
- print("done")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/demo_odf.py
new/relatorio-0.12.0/examples/demo_odf.py
--- old/relatorio-0.11.1/examples/demo_odf.py 2021-12-18 01:59:33.000000000
+0100
+++ new/relatorio-0.12.0/examples/demo_odf.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,76 +0,0 @@
-
-from os.path import abspath, dirname, join
-
-# test data
-from common import inv
-
-from relatorio import Report
-from relatorio.templates import opendocument
-
-ODT_MIME = 'application/vnd.oasis.opendocument.text'
-ODS_MIME = 'application/vnd.oasis.opendocument.spreadsheet'
-ODP_MIME = 'application/vnd.oasis.opendocument.presentation'
-
-if __name__ == '__main__':
- pwd = dirname(__file__)
- # ODT
- print("generating output_basic.odt... ", end='')
- report = Report(abspath(join(dirname(__file__), 'basic.odt')), ODT_MIME)
- content = report(o=inv).render().getvalue()
- open(join(pwd, 'output_basic.odt'), 'wb').write(content)
- print("done")
-
- # we could also use an opendocument template directly
- print("generating output_template_basic.odt... ", end='')
- template = opendocument.Template(source='',
- filepath=abspath(join(pwd, 'basic.odt')))
- content = template.generate(o=inv).render().getvalue()
- open(join(pwd, 'output_template_basic.odt'), 'wb').write(content)
- print("done")
-
- print("generating output_complicated.odt... ", end='')
- # Add a chart to the invoice
- inv['chart'] = (
- Report(abspath(join(pwd, 'pie_chart')), 'image/png'), 'image/png')
- report = Report(abspath(join(pwd, 'complicated.odt')), ODT_MIME)
- try:
- content = report(o=inv).render().getvalue()
- except NotImplementedError:
- print("skipped")
- else:
- open(join(pwd, 'output_complicated.odt'), 'wb').write(content)
- print("done")
-
- print("generating output_columns.odt... ", end='')
- report = Report(abspath(join(pwd, 'columns.odt')), ODT_MIME)
- lst = [[], ['i'], ['a', 'b'], [1, 2, 3], ['I', 'II', 'III', 'IV']]
- titles = ['first', 'second', 'third', 'fourth']
- content = report(titles=titles, lst=lst).render().getvalue()
- open(join(pwd, 'output_columns.odt'), 'wb').write(content)
- print("done")
-
- # ODS
- print("generating output_pivot.ods... ", end='')
- report = Report(abspath(join(pwd, 'pivot.ods')), ODS_MIME)
- content = report(o=inv).render().getvalue()
- open(join(pwd, 'output_pivot.ods'), 'wb').write(content)
- print("done")
-
- print("generating output_sheets.ods... ", end='')
- report = Report(abspath(join(pwd, 'demo_sheets.ods')), ODS_MIME)
- content = report(lst=lst).render().getvalue()
- open(join(pwd, 'output_sheets.ods'), 'wb').write(content)
- print("done")
-
- # ODP
- print("generating output_presentation.odp... ", end='')
- report = Report(abspath(join(pwd, 'presentation.odp')), ODP_MIME)
- content = report(o=inv).render().getvalue()
- open(join(pwd, 'output_presentation.odp'), 'wb').write(content)
- print("done")
-
- # Big document
- print("generating output_big.odt... ", end='')
- report = Report(abspath(join(pwd, 'big.odt')), ODT_MIME)
- content = report().render(out=open(join(pwd, 'output_big.odt'), 'wb'))
- print("done")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/demo_repository.py
new/relatorio-0.12.0/examples/demo_repository.py
--- old/relatorio-0.11.1/examples/demo_repository.py 2021-12-18
01:59:33.000000000 +0100
+++ new/relatorio-0.12.0/examples/demo_repository.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-
-from os.path import dirname, join
-
-from common import Invoice, inv
-
-import relatorio
-
-ODT_MIME = 'application/vnd.oasis.opendocument.text'
-ODS_MIME = 'application/vnd.oasis.opendocument.spreadsheet'
-ODP_MIME = 'application/vnd.oasis.opendocument.presentation'
-
-repository = relatorio.ReportRepository()
-repository.add_report(Invoice, ODT_MIME, 'basic.odt', report_name='basic')
-repository.add_report(Invoice, ODT_MIME,
- 'complicated.odt', report_name='complicated')
-repository.add_report(Invoice, ODS_MIME, 'pivot.ods', report_name='pivot')
-repository.add_report(Invoice, ODP_MIME,
- 'presentation.odp', report_name='presentation')
-repository.add_report(Invoice, 'image/png', 'pie_chart', report_name='pie')
-
-if __name__ == '__main__':
- # Add a chart to the invoice
- inv['chart'] = repository.by_id(Invoice, 'pie')[:2]
-
- # Generate all reports on the invoice class
- for report_name, ext in (('basic', '.odt'),
- ('complicated', '.odt'),
- ('pivot', '.ods'),
- ('presentation', '.odp')):
- filename = 'output_%s%s' % (report_name, ext)
- print("generating '%s'..." % filename, end='')
- report, mimetype, desc = repository.by_id(Invoice, report_name)
- data = report(o=inv).render().getvalue()
- open(join(dirname(__file__), filename), 'wb').write(data)
- print("done")
Binary files old/relatorio-0.11.1/examples/demo_sheets.ods and
new/relatorio-0.12.0/examples/demo_sheets.ods differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/hbar_chart
new/relatorio-0.12.0/examples/hbar_chart
--- old/relatorio-0.11.1/examples/hbar_chart 2018-08-18 13:27:26.000000000
+0200
+++ new/relatorio-0.12.0/examples/hbar_chart 1970-01-01 01:00:00.000000000
+0100
@@ -1,32 +0,0 @@
-options:
- width: 600
- height: 500
- legend:
- hide: false
- position:
- right: 40
- padding: {bottom: 70, left: 70, right: 10, top: 10}
- axis:
- y:
- interval: 15
- padding: 5
- x:
- ticks:
- {% for idx, line in enumerate(o.lines) %}
- - v: $idx
- label: $line.item.name
- {% end %}
-chart:
- type: hbar
- output_type: svg
- dataset:
- - - Sales
- -
- {% for idx, line in enumerate(o.lines) %}
- - [$idx, $line.amount]
- {% end %}
- - - Absolute sales
- -
- {% for idx, line in enumerate(o.lines) %}
- - [$idx, ${abs(line.amount)}]
- {% end %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/line_chart
new/relatorio-0.12.0/examples/line_chart
--- old/relatorio-0.11.1/examples/line_chart 2018-08-18 13:27:26.000000000
+0200
+++ new/relatorio-0.12.0/examples/line_chart 1970-01-01 01:00:00.000000000
+0100
@@ -1,27 +0,0 @@
-options:
- width: 600
- height: 500
- legend:
- hide: false
- position:
- right: 40
- padding: {bottom: 70, left: 70, right: 10, top: 10}
- axis:
- y:
- interval: 10
- padding: 10
- x:
- ticks:
- {% for idx, line in enumerate(o.lines) %}
- - v: $idx
- label: $line.item.name
- {% end %}
-chart:
- type: line
- output_type: png
- dataset:
- - - Sales
- -
- {% for idx, line in enumerate(o.lines) %}
- - [$idx, $line.amount]
- {% end %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/pie_chart
new/relatorio-0.12.0/examples/pie_chart
--- old/relatorio-0.11.1/examples/pie_chart 2018-08-18 13:27:26.000000000
+0200
+++ new/relatorio-0.12.0/examples/pie_chart 1970-01-01 01:00:00.000000000
+0100
@@ -1,15 +0,0 @@
-options:
- width: 600
- height: 400
- background: {hide: true}
- legend: {hide: true}
- axis: {labelFontSize: 14}
- padding: {bottom: 10, left: 10, right: 10, top: 10}
-chart:
- type: pie
- output_type: png
- dataset:
- {% for line in o.lines %}
- - - ${line.item.name}
- - - [0, $line.amount]
- {% end %}
Binary files old/relatorio-0.11.1/examples/pivot.ods and
new/relatorio-0.12.0/examples/pivot.ods differ
Binary files old/relatorio-0.11.1/examples/presentation.odp and
new/relatorio-0.12.0/examples/presentation.odp differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/examples/vbar_chart
new/relatorio-0.12.0/examples/vbar_chart
--- old/relatorio-0.11.1/examples/vbar_chart 2018-08-18 13:27:26.000000000
+0200
+++ new/relatorio-0.12.0/examples/vbar_chart 1970-01-01 01:00:00.000000000
+0100
@@ -1,32 +0,0 @@
-options:
- width: 600
- height: 500
- legend:
- hide: false
- position:
- right: 40
- padding: {bottom: 70, left: 70, right: 10, top: 10}
- axis:
- y:
- interval: 20
- padding: 5
- x:
- ticks:
- {% for idx, line in enumerate(o.lines) %}
- - v: $idx
- label: $line.item.name
- {% end %}
-chart:
- type: vbar
- output_type: svg
- dataset:
- - - Sales
- -
- {% for idx, line in enumerate(o.lines) %}
- - [$idx, $line.amount]
- {% end %}
- - - Absolute sales
- -
- {% for idx, line in enumerate(o.lines) %}
- - [$idx, ${abs(line.amount)}]
- {% end %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/pyproject.toml
new/relatorio-0.12.0/pyproject.toml
--- old/relatorio-0.11.1/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/relatorio-0.12.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,56 @@
+[build-system]
+requires = ['hatchling >= 1', 'hatch-tryton']
+build-backend = 'hatchling.build'
+
+[project]
+name = 'relatorio'
+dynamic = ['version', 'authors']
+dependencies = [
+ 'Genshi >= 0.5',
+ 'lxml >= 2.0',
+ ]
+requires-python= '>=3.9'
+maintainers = [
+ {name = "Tryton", email = "[email protected]"},
+ ]
+description = "A templating library able to output odt and pdf files"
+readme = 'README.rst'
+license = 'GPL-3.0-or-later'
+license-files = ['LICENSE', 'COPYRIGHT']
+keywords = ["templating", "OpenDocument", "PDF"]
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Topic :: Text Processing",
+ ]
+
+[project.scripts]
+relatorio-render = 'relatorio.render:run'
+
+[project.optional-dependencies]
+chart = [
+ 'pycairo',
+ 'pycha >= 0.4.0',
+ 'pyyaml >= 5.3',
+ ]
+fodt = [
+ 'python-magic',
+ ]
+
+[project.urls]
+homepage = "https://www.tryton.org/"
+documentation = "https://docs.tryton.org/relatorio"
+changelog = "https://docs.tryton.org/relatorio/releases.html"
+forum = "https://discuss.tryton.org/tags/relatorio"
+issues = "https://bugs.tryton.org/relatorio"
+repository = "https://code.tryton.org/relatorio"
+
+[tool.hatch.version]
+path = 'relatorio/__init__.py'
+
+[tool.hatch.build]
+packages = ['relatorio']
+
+[tool.hatch.metadata.hooks.tryton]
+copyright = 'COPYRIGHT'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio/__init__.py
new/relatorio-0.12.0/relatorio/__init__.py
--- old/relatorio-0.11.1/relatorio/__init__.py 2024-12-07 16:49:37.000000000
+0100
+++ new/relatorio-0.12.0/relatorio/__init__.py 2020-02-02 01:00:00.000000000
+0100
@@ -12,5 +12,5 @@
from . import templates
from .reporting import MIMETemplateLoader, Report, ReportRepository
-__version__ = '0.11.1'
+__version__ = '0.12.0'
__all__ = ['MIMETemplateLoader', 'ReportRepository', 'Report', 'templates']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio/render.py
new/relatorio-0.12.0/relatorio/render.py
--- old/relatorio-0.11.1/relatorio/render.py 1970-01-01 01:00:00.000000000
+0100
+++ new/relatorio-0.12.0/relatorio/render.py 2020-02-02 01:00:00.000000000
+0100
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+import json
+import mimetypes
+import os
+from argparse import ArgumentParser, FileType
+
+from relatorio import Report
+
+
+def main(input_, data, output=None):
+ input_ = os.path.abspath(input_)
+ mimetype, _ = mimetypes.guess_type(input_)
+ report = Report(input_, mimetype)
+ content = report(**data).render().getvalue()
+ if output:
+ with open(output, 'wb') as fp:
+ fp.write(content)
+
+
+def run():
+ parser = ArgumentParser()
+ parser.add_argument('-i', '--input', dest='input', required=True)
+ parser.add_argument('-o', '--output', dest='output')
+ parser.add_argument('-d', '--data', dest='data', type=FileType('r'),
+ help="JSON file with data to render")
+
+ args = parser.parse_args()
+ if args.data:
+ data = json.load(args.data)
+ else:
+ data = {}
+ main(args.input, data, args.output)
+
+
+if __name__ == '__main__':
+ run()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio/templates/chart.py
new/relatorio-0.12.0/relatorio/templates/chart.py
--- old/relatorio-0.11.1/relatorio/templates/chart.py 2021-12-18
01:59:33.000000000 +0100
+++ new/relatorio-0.12.0/relatorio/templates/chart.py 2020-02-02
01:00:00.000000000 +0100
@@ -57,7 +57,7 @@
else:
result = out
yml = StringIO(_encode(self.text_serializer(stream)))
- chart_yaml = yaml.load(yml.read())
+ chart_yaml = yaml.safe_load(yml.read())
chart_info = chart_yaml['chart']
chart_type = chart_info['output_type']
if chart_type == 'png':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio.egg-info/PKG-INFO
new/relatorio-0.12.0/relatorio.egg-info/PKG-INFO
--- old/relatorio-0.11.1/relatorio.egg-info/PKG-INFO 2024-12-14
23:00:10.000000000 +0100
+++ new/relatorio-0.12.0/relatorio.egg-info/PKG-INFO 1970-01-01
01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
-Metadata-Version: 2.1
-Name: relatorio
-Version: 0.11.1
-Summary: A templating library able to output odt and pdf files
-Home-page: https://pypi.python.org/pypi/relatorio
-Download-URL: https://downloads.tryton.org/relatorio/
-Author: Tryton
-Author-email: [email protected]
-License: GPL License
-Project-URL: Bug Tracker, https://bugs.tryton.org/relatorio
-Project-URL: Documentation, https://docs.tryton.org/relatorio
-Project-URL: Forum, https://discuss.tryton.org/tags/relatorio
-Project-URL: Source Code, https://code.tryton.org/relatorio
-Keywords: templating OpenDocument PDF
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: Text Processing
-Requires-Python: >=3.5
-License-File: LICENSE
-Requires-Dist: Genshi>=0.5
-Requires-Dist: lxml>=2.0
-Provides-Extra: chart
-Requires-Dist: pycha>=0.4.0; extra == "chart"
-Requires-Dist: pyyaml; extra == "chart"
-Provides-Extra: fodt
-Requires-Dist: python-magic; extra == "fodt"
-
-#########
-Relatorio
-#########
-
-Relatorio is a templating library which provides a way to easily generate
-various kinds of documents (odt, ods, png, svg, ...) from a template.
-Support for more filetypes can be added by creating plugins for them.
-
-Relatorio also provides a report repository allowing you to link python objects
-and reports together, and find reports by mimetype/name/python object.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio.egg-info/SOURCES.txt
new/relatorio-0.12.0/relatorio.egg-info/SOURCES.txt
--- old/relatorio-0.11.1/relatorio.egg-info/SOURCES.txt 2024-12-14
23:00:10.000000000 +0100
+++ new/relatorio-0.12.0/relatorio.egg-info/SOURCES.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
-.flake8
-.gitlab-ci.yml
-.hgignore
-.hgtags
-.isort.cfg
-.rstcheck.cfg
-CHANGELOG
-COPYRIGHT
-LICENSE
-MANIFEST.in
-README.rst
-setup.cfg
-setup.py
-tox.ini
-doc/basic.png
-doc/basic_generated.png
-doc/bonham_basic.png
-doc/complicated.png
-doc/complicated_rendered.png
-doc/conf.py
-doc/frame.png
-doc/hyperlink.png
-doc/indepthexample.rst
-doc/index.rst
-doc/pie.png
-doc/pivot.png
-doc/pivot_rendered.png
-doc/quickexample.rst
-doc/relatorio_basic.png
-doc/releases.rst
-doc/requirements-doc.txt
-examples/basic.odt
-examples/basic.tex
-examples/big.odt
-examples/bouteille.png
-examples/columns.odt
-examples/common.py
-examples/complicated.odt
-examples/demo_chart.py
-examples/demo_context.py
-examples/demo_odf.py
-examples/demo_repository.py
-examples/demo_sheets.ods
-examples/hbar_chart
-examples/line_chart
-examples/pie_chart
-examples/pivot.ods
-examples/presentation.odp
-examples/vbar_chart
-relatorio/__init__.py
-relatorio/reporting.py
-relatorio.egg-info/PKG-INFO
-relatorio.egg-info/SOURCES.txt
-relatorio.egg-info/dependency_links.txt
-relatorio.egg-info/requires.txt
-relatorio.egg-info/top_level.txt
-relatorio/templates/__init__.py
-relatorio/templates/base.py
-relatorio/templates/chart.py
-relatorio/templates/opendocument.py
-relatorio/templates/pdf.py
-relatorio/tests/__init__.py
-relatorio/tests/egg.jpg
-relatorio/tests/one.jpg
-relatorio/tests/test.fodt
-relatorio/tests/test.odt
-relatorio/tests/test_api.py
-relatorio/tests/test_odt.py
-relatorio/tests/two.png
-relatorio/tests/templates/include.tmpl
-relatorio/tests/templates/other.tmpl
-relatorio/tests/templates/test.tmpl
-relatorio/tests/templates/time.tmpl
-scripts/relatorio-render
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/relatorio-0.11.1/relatorio.egg-info/dependency_links.txt
new/relatorio-0.12.0/relatorio.egg-info/dependency_links.txt
--- old/relatorio-0.11.1/relatorio.egg-info/dependency_links.txt
2024-12-14 23:00:10.000000000 +0100
+++ new/relatorio-0.12.0/relatorio.egg-info/dependency_links.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio.egg-info/requires.txt
new/relatorio-0.12.0/relatorio.egg-info/requires.txt
--- old/relatorio-0.11.1/relatorio.egg-info/requires.txt 2024-12-14
23:00:10.000000000 +0100
+++ new/relatorio-0.12.0/relatorio.egg-info/requires.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-Genshi>=0.5
-lxml>=2.0
-
-[chart]
-pycha>=0.4.0
-pyyaml
-
-[fodt]
-python-magic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/relatorio.egg-info/top_level.txt
new/relatorio-0.12.0/relatorio.egg-info/top_level.txt
--- old/relatorio-0.11.1/relatorio.egg-info/top_level.txt 2024-12-14
23:00:10.000000000 +0100
+++ new/relatorio-0.12.0/relatorio.egg-info/top_level.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-relatorio
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/scripts/relatorio-render
new/relatorio-0.12.0/scripts/relatorio-render
--- old/relatorio-0.11.1/scripts/relatorio-render 2021-08-20
12:55:01.000000000 +0200
+++ new/relatorio-0.12.0/scripts/relatorio-render 1970-01-01
01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-import json
-import mimetypes
-import os
-from argparse import ArgumentParser, FileType
-
-from relatorio import Report
-
-
-def main(input_, data, output=None):
- input_ = os.path.abspath(input_)
- mimetype, _ = mimetypes.guess_type(input_)
- report = Report(input_, mimetype)
- content = report(**data).render().getvalue()
- if output:
- with open(output, 'wb') as fp:
- fp.write(content)
-
-
-def run():
- parser = ArgumentParser()
- parser.add_argument('-i', '--input', dest='input', required=True)
- parser.add_argument('-o', '--output', dest='output')
- parser.add_argument('-d', '--data', dest='data', type=FileType('r'),
- help="JSON file with data to render")
-
- args = parser.parse_args()
- if args.data:
- data = json.load(args.data)
- else:
- data = {}
- main(args.input, data, args.output)
-
-
-if __name__ == '__main__':
- run()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/setup.cfg
new/relatorio-0.12.0/setup.cfg
--- old/relatorio-0.11.1/setup.cfg 2024-12-14 23:00:10.680674800 +0100
+++ new/relatorio-0.12.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-[egg_info]
-tag_build =
-tag_date = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/setup.py
new/relatorio-0.12.0/setup.py
--- old/relatorio-0.11.1/setup.py 2024-03-05 23:26:36.000000000 +0100
+++ new/relatorio-0.12.0/setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,68 +0,0 @@
-import codecs
-import os
-import re
-
-from setuptools import find_packages, setup
-
-
-def read(fname):
- return codecs.open(
- os.path.join(os.path.dirname(__file__), fname), 'r', 'utf-8').read()
-
-
-def get_version():
- init = open(os.path.join(os.path.dirname(__file__), 'relatorio',
- '__init__.py')).read()
- return re.search(r"""__version__ = '([0-9.]*)'""", init).group(1)
-
-
-setup(
- name="relatorio",
- description="A templating library able to output odt and pdf files",
- long_description=read('README.rst'),
- author='Tryton',
- author_email='[email protected]',
- url='https://pypi.python.org/pypi/relatorio',
- download_url='https://downloads.tryton.org/relatorio/',
- project_urls={
- "Bug Tracker": 'https://bugs.tryton.org/relatorio',
- "Documentation": 'https://docs.tryton.org/relatorio',
- "Forum": 'https://discuss.tryton.org/tags/relatorio',
- "Source Code": 'https://code.tryton.org/relatorio',
- },
- keywords='templating OpenDocument PDF',
- license="GPL License",
- version=get_version(),
- packages=find_packages(exclude=['examples']),
- package_data={
- 'relatorio.tests': [
- '*.jpg', '*.odt', '*.fodt', '*.png', 'templates/*.tmpl'],
- },
- scripts=['scripts/relatorio-render'],
- python_requires='>=3.5',
- install_requires=[
- "Genshi >= 0.5",
- "lxml >= 2.0"
- ],
- extras_require={
- 'chart': ['pycha >= 0.4.0', 'pyyaml'], # pycairo
- 'fodt': ['python-magic'],
- },
- classifiers=[
- "Development Status :: 4 - Beta",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: GNU General Public License (GPL)",
- "Operating System :: OS Independent",
- "Programming Language :: Python :: 3",
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: 3.9',
- 'Programming Language :: Python :: 3.10',
- 'Programming Language :: Python :: 3.11',
- 'Programming Language :: Python :: 3.12',
- "Topic :: Software Development :: Libraries :: Python Modules",
- "Topic :: Text Processing",
- ],
- )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/relatorio-0.11.1/tox.ini new/relatorio-0.12.0/tox.ini
--- old/relatorio-0.11.1/tox.ini 2023-10-07 15:06:01.000000000 +0200
+++ new/relatorio-0.12.0/tox.ini 1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-# Tox (http://tox.testrun.org/) is a tool for running tests
-# in multiple virtualenvs. This configuration file will run the
-# test suite on all supported python versions. To use it, "pip install tox"
-# and then run "tox" from this directory.
-
-[tox]
-envlist = py35, py36, py37, py38, py39, py310, py311, py312, pypy3
-
-[testenv]
-usedevelop = true
-extras = fodt
-commands =
- coverage run --omit=*/tests/* -m xmlrunner discover -s relatorio.tests
{posargs}
-commands_post =
- coverage report
- coverage xml
-deps =
- coverage
- unittest-xml-reporting
- pyyaml
- pycha
-passenv = *