Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-blockdiag for openSUSE:Factory checked in at 2022-08-05 19:51:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-blockdiag (Old) and /work/SRC/openSUSE:Factory/.python-blockdiag.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-blockdiag" Fri Aug 5 19:51:09 2022 rev:8 rq:993149 version:3.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-blockdiag/python-blockdiag.changes 2021-09-03 21:25:28.150122854 +0200 +++ /work/SRC/openSUSE:Factory/.python-blockdiag.new.1521/python-blockdiag.changes 2022-08-05 19:52:08.717632954 +0200 @@ -1,0 +2,11 @@ +Thu Aug 4 19:43:01 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Update to 3.0.0 + * Drop python3.6 support + * Use funcparserlib-1.0.0a0 or newer to support new python + versions + * Allow to write multiline string via triple quotes (""" ... """) + * Fix #147: file existence disclosure using svg renderer +- Refresh python-blockdiag-nose-to-pytest.patch + +------------------------------------------------------------------- Old: ---- blockdiag-2.0.1.tar.gz New: ---- blockdiag-3.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-blockdiag.spec ++++++ --- /var/tmp/diff_new_pack.lwTcBl/_old 2022-08-05 19:52:09.345634576 +0200 +++ /var/tmp/diff_new_pack.lwTcBl/_new 2022-08-05 19:52:09.361634617 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-blockdiag # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,38 +16,37 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} -%define skip_python2 1 Name: python-blockdiag -Version: 2.0.1 +Version: 3.0.0 Release: 0 Summary: Program to generate block-diagram images from text License: Apache-2.0 Group: Development/Languages/Python URL: http://blockdiag.com/ Source: https://files.pythonhosted.org/packages/source/b/blockdiag/blockdiag-%{version}.tar.gz -# https://github.com/blockdiag/blockdiag/pull/131 +# PATCH-FIX-UPSTREAM python-blockdiag-nose-to-pytest.patch gh#blockdiag/blockdiag#131 pgaj...@suse.com +# Remove the last silly dependency on nose Patch0: python-blockdiag-nose-to-pytest.patch -BuildRequires: %{python_module Pillow >= 2.2.1} -BuildRequires: %{python_module funcparserlib >= 0.3.6} -BuildRequires: %{python_module reportlab} +BuildRequires: %{python_module Pillow >= 3} +BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module funcparserlib >= 1.0.0~a0} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module webcolors} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-Pillow >= 2.2.1 -Requires: python-funcparserlib >= 0.3.6 +Requires: python-Pillow >= 3 +Requires: python-funcparserlib >= 1.0.0~a0 +Requires: python-setuptools Requires: python-webcolors Requires(post): update-alternatives Requires(preun):update-alternatives BuildArch: noarch # SECTION test requirements +BuildRequires: %{python_module reportlab} BuildRequires: %{python_module docutils} -BuildRequires: %{python_module pep8 >= 1.3} -BuildRequires: %{python_module pip >= 1.4.1} BuildRequires: %{python_module pytest} # /SECTION -%if 0%{?suse_version} >= 1000 || 0%{?fedora_version} >= 24 +%if 0%{?suse_version} || 0%{?fedora_version} >= 24 Recommends: ghostscript Recommends: python-Wand Recommends: python-reportlab @@ -59,8 +58,7 @@ from spec-text files. %prep -%setup -q -n blockdiag-%{version} -%patch0 -p1 +%autosetup -p1 -n blockdiag-%{version} %build %python_build @@ -73,7 +71,7 @@ %post %python_install_alternative blockdiag -%preun +%postun %python_uninstall_alternative blockdiag %check @@ -89,6 +87,7 @@ %license LICENSE %doc CHANGES.rst README.rst %python_alternative %{_bindir}/blockdiag -%{python_sitelib}/* +%{python_sitelib}/blockdiag +%{python_sitelib}/blockdiag-%{version}*-info %changelog ++++++ blockdiag-2.0.1.tar.gz -> blockdiag-3.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/CHANGES.rst new/blockdiag-3.0.0/CHANGES.rst --- old/blockdiag-2.0.1/CHANGES.rst 2020-02-01 11:12:31.000000000 +0100 +++ new/blockdiag-3.0.0/CHANGES.rst 2021-12-06 17:43:47.000000000 +0100 @@ -1,6 +1,15 @@ Changelog ========= +3.0.0 (2021-12-06) +------------------ +* Drop python3.6 support +* Use funcparserlib-1.0.0a0 or newer to support new python versions +* Allow to write multiline string via triple quotes (""" ... """) +* Fix a bug + + - Fix #147: file existence disclosure using svg renderer + 2.0.0 (2020-02-01) ------------------ * Fix a bug diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/PKG-INFO new/blockdiag-3.0.0/PKG-INFO --- old/blockdiag-2.0.1/PKG-INFO 2020-02-01 11:12:53.149483700 +0100 +++ new/blockdiag-3.0.0/PKG-INFO 2021-12-06 17:43:51.665107500 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: blockdiag -Version: 2.0.1 +Version: 3.0.0 Summary: blockdiag generates block-diagram image from text Home-page: http://blockdiag.com/ Author: Takeshi Komiya @@ -9,137 +9,139 @@ Download-URL: http://pypi.python.org/pypi/blockdiag Project-URL: Code, https://github.com/blockdiag/blockdiag Project-URL: Issue tracker, https://github.com/blockdiag/blockdiag/issues -Description: `blockdiag` generate block-diagram image file from spec-text file. - - .. image:: https://drone.io/bitbucket.org/blockdiag/blockdiag/status.png - :target: https://drone.io/bitbucket.org/blockdiag/blockdiag - :alt: drone.io CI build status - - .. image:: https://pypip.in/v/blockdiag/badge.png - :target: https://pypi.python.org/pypi/blockdiag/ - :alt: Latest PyPI version - - .. image:: https://pypip.in/d/blockdiag/badge.png - :target: https://pypi.python.org/pypi/blockdiag/ - :alt: Number of PyPI downloads - - - Features - ======== - * Generate block-diagram from dot like text (basic feature). - * Multilingualization for node-label (utf-8 only). - - You can get some examples and generated images on - `blockdiag.com <http://blockdiag.com/en/blockdiag/examples.html>`_ . - - Setup - ===== - - Use pip:: - - $ sudo pip install blockdiag - - If you want to export as PDF format, give pdf arguments:: - - $ sudo pip install "blockdiag[pdf]" - - - Copy and modify ini file. example:: - - $ cp <blockdiag installed path>/blockdiag/examples/simple.diag . - $ vi simple.diag - - Please refer to `spec-text setting sample`_ section for the format of the - `simpla.diag` configuration file. - - spec-text setting sample - ======================== - Few examples are available. - You can get more examples at - `blockdiag.com`_ . - - simple.diag - ------------ - simple.diag is simply define nodes and transitions by dot-like text format:: - - diagram admin { - top_page -> config -> config_edit -> config_confirm -> top_page; - } - - screen.diag - ------------ - screen.diag is more complexly sample. diaglam nodes have a alternative label - and some transitions:: - - diagram admin { - top_page [label = "Top page"]; - - foo_index [label = "List of FOOs"]; - foo_detail [label = "Detail FOO"]; - foo_add [label = "Add FOO"]; - foo_add_confirm [label = "Add FOO (confirm)"]; - foo_edit [label = "Edit FOO"]; - foo_edit_confirm [label = "Edit FOO (confirm)"]; - foo_delete_confirm [label = "Delete FOO (confirm)"]; - - bar_detail [label = "Detail of BAR"]; - bar_edit [label = "Edit BAR"]; - bar_edit_confirm [label = "Edit BAR (confirm)"]; - - logout; - - top_page -> foo_index; - top_page -> bar_detail; - - foo_index -> foo_detail; - foo_detail -> foo_edit; - foo_detail -> foo_delete_confirm; - foo_index -> foo_add -> foo_add_confirm -> foo_index; - foo_index -> foo_edit -> foo_edit_confirm -> foo_index; - foo_index -> foo_delete_confirm -> foo_index; - - bar_detail -> bar_edit -> bar_edit_confirm -> bar_detail; - } - - - Usage - ===== - Execute blockdiag command:: - - $ blockdiag simple.diag - $ ls simple.png - simple.png - - - Requirements - ============ - * Python 3.5 or later - * Pillow 3.0 or later - * funcparserlib 0.3.6 or later - * reportlab (optional) - * wand and imagemagick (optional) - * setuptools - - - License - ======= - Apache License 2.0 - Keywords: diagram,generator Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python -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: Topic :: Software Development Classifier: Topic :: Software Development :: Documentation Classifier: Topic :: Text Processing :: Markup -Requires-Python: >=3.5 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: pdf Provides-Extra: rst Provides-Extra: testing +License-File: LICENSE + +`blockdiag` generate block-diagram image file from spec-text file. + +.. image:: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml/badge.svg + :target: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml + :alt: GitHub Action CI build status + +.. image:: https://img.shields.io/pypi/v/blockdiag + :target: https://pypi.python.org/pypi/blockdiag/ + :alt: Latest PyPI version + +.. image:: https://img.shields.io/pypi/dm/blockdiag + :target: https://pypi.python.org/pypi/blockdiag/ + :alt: Number of PyPI downloads + + +Features +======== +* Generate block-diagram from dot like text (basic feature). +* Multilingualization for node-label (utf-8 only). + +You can get some examples and generated images on +`blockdiag.com <http://blockdiag.com/en/blockdiag/examples.html>`_ . + +Setup +===== + +Use pip:: + + $ sudo pip install blockdiag + +If you want to export as PDF format, give pdf arguments:: + + $ sudo pip install "blockdiag[pdf]" + + +Copy and modify ini file. example:: + + $ cp <blockdiag installed path>/blockdiag/examples/simple.diag . + $ vi simple.diag + +Please refer to `spec-text setting sample`_ section for the format of the +`simpla.diag` configuration file. + +spec-text setting sample +======================== +Few examples are available. +You can get more examples at +`blockdiag.com`_ . + +simple.diag +------------ +simple.diag is simply define nodes and transitions by dot-like text format:: + + diagram admin { + top_page -> config -> config_edit -> config_confirm -> top_page; + } + +screen.diag +------------ +screen.diag is more complexly sample. diaglam nodes have a alternative label +and some transitions:: + + diagram admin { + top_page [label = "Top page"]; + + foo_index [label = "List of FOOs"]; + foo_detail [label = "Detail FOO"]; + foo_add [label = "Add FOO"]; + foo_add_confirm [label = "Add FOO (confirm)"]; + foo_edit [label = "Edit FOO"]; + foo_edit_confirm [label = "Edit FOO (confirm)"]; + foo_delete_confirm [label = "Delete FOO (confirm)"]; + + bar_detail [label = "Detail of BAR"]; + bar_edit [label = "Edit BAR"]; + bar_edit_confirm [label = "Edit BAR (confirm)"]; + + logout; + + top_page -> foo_index; + top_page -> bar_detail; + + foo_index -> foo_detail; + foo_detail -> foo_edit; + foo_detail -> foo_delete_confirm; + foo_index -> foo_add -> foo_add_confirm -> foo_index; + foo_index -> foo_edit -> foo_edit_confirm -> foo_index; + foo_index -> foo_delete_confirm -> foo_index; + + bar_detail -> bar_edit -> bar_edit_confirm -> bar_detail; + } + + +Usage +===== +Execute blockdiag command:: + + $ blockdiag simple.diag + $ ls simple.png + simple.png + + +Requirements +============ +* Python 3.7 or later +* Pillow 3.0 or later +* funcparserlib 1.0.0a0 or later +* reportlab (optional) +* wand and imagemagick (optional) +* setuptools + + +License +======= +Apache License 2.0 + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/README.rst new/blockdiag-3.0.0/README.rst --- old/blockdiag-2.0.1/README.rst 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/README.rst 2021-12-06 17:43:47.000000000 +0100 @@ -1,14 +1,14 @@ `blockdiag` generate block-diagram image file from spec-text file. -.. image:: https://drone.io/bitbucket.org/blockdiag/blockdiag/status.png - :target: https://drone.io/bitbucket.org/blockdiag/blockdiag - :alt: drone.io CI build status +.. image:: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml/badge.svg + :target: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml + :alt: GitHub Action CI build status -.. image:: https://pypip.in/v/blockdiag/badge.png +.. image:: https://img.shields.io/pypi/v/blockdiag :target: https://pypi.python.org/pypi/blockdiag/ :alt: Latest PyPI version -.. image:: https://pypip.in/d/blockdiag/badge.png +.. image:: https://img.shields.io/pypi/dm/blockdiag :target: https://pypi.python.org/pypi/blockdiag/ :alt: Number of PyPI downloads @@ -102,9 +102,9 @@ Requirements ============ -* Python 3.5 or later +* Python 3.7 or later * Pillow 3.0 or later -* funcparserlib 0.3.6 or later +* funcparserlib 1.0.0a0 or later * reportlab (optional) * wand and imagemagick (optional) * setuptools diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/setup.py new/blockdiag-3.0.0/setup.py --- old/blockdiag-2.0.1/setup.py 2020-01-26 06:48:27.000000000 +0100 +++ new/blockdiag-3.0.0/setup.py 2021-12-06 17:43:47.000000000 +0100 @@ -9,10 +9,9 @@ "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", - "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", "Topic :: Software Development", "Topic :: Software Development :: Documentation", "Topic :: Text Processing :: Markup", @@ -48,14 +47,13 @@ "Issue tracker": "https://github.com/blockdiag/blockdiag/issues", }, license='Apache License 2.0', - py_modules=['blockdiag_sphinxhelper'], packages=find_packages('src'), package_dir={'': 'src'}, include_package_data=True, - python_requires=">=3.5", + python_requires=">=3.7", install_requires=[ 'setuptools', - 'funcparserlib', + 'funcparserlib>=1.0.0a0', 'Pillow > 3.0', 'webcolors', ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/__init__.py new/blockdiag-3.0.0/src/blockdiag/__init__.py --- old/blockdiag-2.0.1/src/blockdiag/__init__.py 2020-02-01 11:12:19.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/__init__.py 2021-12-06 17:43:47.000000000 +0100 @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = '2.0.1' +__version__ = '3.0.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/imagedraw/filters/linejump.py new/blockdiag-3.0.0/src/blockdiag/imagedraw/filters/linejump.py --- old/blockdiag-2.0.1/src/blockdiag/imagedraw/filters/linejump.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/imagedraw/filters/linejump.py 2021-12-06 17:43:47.000000000 +0100 @@ -162,7 +162,7 @@ def save(self, *args, **kwargs): # Search crosspoints - from bisect import insort, bisect_left, bisect_right + from bisect import bisect_left, bisect_right, insort xtree = [] for y, _, ((x1, y1), (x2, y2)) in self.ytree: if x2 < x1: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/imagedraw/svg.py new/blockdiag-3.0.0/src/blockdiag/imagedraw/svg.py --- old/blockdiag-2.0.1/src/blockdiag/imagedraw/svg.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/imagedraw/svg.py 2021-12-06 17:43:47.000000000 +0100 @@ -247,7 +247,7 @@ stream = images.open(url, mode='png') url = "data:;base64," + str(b64encode(stream.read())) except IOError: - pass + url = None finally: if stream: stream.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/parser.py new/blockdiag-3.0.0/src/blockdiag/parser.py --- old/blockdiag-2.0.1/src/blockdiag/parser.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/parser.py 2021-12-06 17:43:47.000000000 +0100 @@ -70,7 +70,7 @@ '[A-Za-z_\\-.0-9\u0080-\uffff]*',)), # NOQA ('Op', (r'[{};,=\[\]]|(<->)|(<-)|(--)|(->)|(>-<)|(-<)|(>-)',)), # NOQA ('Number', (r'-?(\.[0-9]+)|([0-9]+(\.[0-9]*)?)',)), # NOQA - ('String', (r'(?P<quote>"|\').*?(?<!\\)(?P=quote)', DOTALL)), # NOQA + ('String', (r'(?P<quote>(""")|(\'\'\')|"|\').*?(?<!\\)(?P=quote)', DOTALL)), # NOQA ] useless = ['Comment', 'NL', 'Space'] t = make_tokenizer(specs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/background_url_local.diag new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/background_url_local.diag --- old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/background_url_local.diag 1970-01-01 01:00:00.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/background_url_local.diag 2021-12-06 17:43:47.000000000 +0100 @@ -0,0 +1,5 @@ +{ + A [background = "src/blockdiag/tests/diagrams/white.gif"]; + B [background = "src/blockdiag/tests/diagrams/invalid.txt"]; + Z; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/edge_label.diag new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/edge_label.diag --- old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/edge_label.diag 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/edge_label.diag 2021-12-06 17:43:47.000000000 +0100 @@ -1,3 +1,6 @@ { A -> B [label = "test label"]; + A -> B [label = 'test label']; + A -> B [label = """test' "label"""]; + A -> B [label = '''test' "label''']; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/node_has_block_label.diag new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/node_has_block_label.diag --- old/blockdiag-2.0.1/src/blockdiag/tests/diagrams/node_has_block_label.diag 1970-01-01 01:00:00.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/diagrams/node_has_block_label.diag 2021-12-06 17:43:47.000000000 +0100 @@ -0,0 +1,8 @@ +diagram { + A [label = """A +block +string"""]; + B [label = '''Another +block +string with different quotes''']; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/rst/test_blockdiag_directives.py new/blockdiag-3.0.0/src/blockdiag/tests/rst/test_blockdiag_directives.py --- old/blockdiag-2.0.1/src/blockdiag/tests/rst/test_blockdiag_directives.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/rst/test_blockdiag_directives.py 2021-12-06 17:43:47.000000000 +0100 @@ -21,6 +21,7 @@ from docutils.core import publish_doctree from docutils.parsers.rst import directives as docutils +from blockdiag.tests.test_generate_diagram import TESTDIR, get_fontpath from blockdiag.tests.utils import TemporaryDirectory, capture_stderr, with_pil from blockdiag.utils.rst import directives @@ -178,7 +179,9 @@ self.assertEqual(nodes.image, type(doctree[0])) def test_setup_inline_svg_is_true_with_multibytes(self): - directives.setup(format='SVG', outputdir=self.tmpdir) + # multibyte characters aren't support for default font, set a own font + directives.setup(format='SVG', outputdir=self.tmpdir, + fontpath=get_fontpath(TESTDIR)) text = (".. blockdiag::\n" "\n" " ??? -> ???") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/test_generate_diagram.py new/blockdiag-3.0.0/src/blockdiag/tests/test_generate_diagram.py --- old/blockdiag-2.0.1/src/blockdiag/tests/test_generate_diagram.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/test_generate_diagram.py 2021-12-06 17:43:47.000000000 +0100 @@ -17,6 +17,7 @@ import re import sys import unittest +from xml.etree import ElementTree from nose.tools import nottest @@ -37,7 +38,7 @@ diagramsdir = os.path.join(testdir, 'diagrams') skipped = ['README', 'debian-logo-256color-palettealpha.png', - 'errors', 'white.gif'] + 'errors', 'invalid.txt', 'white.gif'] for file in os.listdir(diagramsdir): if file in skipped: pass @@ -158,8 +159,6 @@ @capture_stderr def svg_includes_source_code_tag_test(): - from xml.etree import ElementTree - testdir = os.path.dirname(__file__) diagpath = os.path.join(testdir, 'diagrams', 'single_edge.diag') @@ -182,3 +181,27 @@ assert source_code == embeded finally: tmpdir.clean() + + +@capture_stderr +def svg_sanitizes_url_on_error_test(): + testdir = os.path.dirname(__file__) + diagpath = os.path.join(testdir, 'diagrams', 'background_url_local.diag') + + try: + tmpdir = TemporaryDirectory() + fd, tmpfile = tmpdir.mkstemp() + os.close(fd) + + args = ['-T', 'SVG', '-o', tmpfile, diagpath] + ret = blockdiag.command.main(args) + tree = ElementTree.parse(tmpfile) + images = tree.findall('{http://www.w3.org/2000/svg}image') + valid_url, invalid_url = [image.attrib.get('{http://www.w3.org/1999/xlink}href') for image in images] + + assert valid_url + assert not invalid_url + assert 'unknown image type:' in sys.stderr.getvalue() + assert ret == 0 + finally: + tmpdir.clean() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/tests/test_parser.py new/blockdiag-3.0.0/src/blockdiag/tests/test_parser.py --- old/blockdiag-2.0.1/src/blockdiag/tests/test_parser.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/tests/test_parser.py 2021-12-06 17:43:47.000000000 +0100 @@ -70,17 +70,35 @@ A; B [label = "foobar"]; C [color = "red"]; + D [label = 'foobar']; + E [color = 'red']; + F [label = \"\"\"foobar\"\"\"]; + G [label = \'\'\'foobar\'\'\']; + H [label = \"\"\"foo"bar\"\"\"]; + I [label = \'\'\'foo'bar\'\'\']; } """ tree = parse_string(code) self.assertIsInstance(tree, Diagram) - self.assertEqual(3, len(tree.stmts)) + self.assertEqual(9, len(tree.stmts)) self.assertIsInstance(tree.stmts[0], Statements) self.assertIsInstance(tree.stmts[0].stmts[0], Node) self.assertIsInstance(tree.stmts[1], Statements) self.assertIsInstance(tree.stmts[1].stmts[0], Node) self.assertIsInstance(tree.stmts[2], Statements) self.assertIsInstance(tree.stmts[2].stmts[0], Node) + self.assertIsInstance(tree.stmts[3], Statements) + self.assertIsInstance(tree.stmts[3].stmts[0], Node) + self.assertIsInstance(tree.stmts[4], Statements) + self.assertIsInstance(tree.stmts[4].stmts[0], Node) + self.assertIsInstance(tree.stmts[5], Statements) + self.assertIsInstance(tree.stmts[5].stmts[0], Node) + self.assertIsInstance(tree.stmts[6], Statements) + self.assertIsInstance(tree.stmts[6].stmts[0], Node) + self.assertIsInstance(tree.stmts[7], Statements) + self.assertIsInstance(tree.stmts[7].stmts[0], Node) + self.assertIsInstance(tree.stmts[8], Statements) + self.assertIsInstance(tree.stmts[8].stmts[0], Node) def test_diagram_includes_edges(self): code = """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag/utils/__init__.py new/blockdiag-3.0.0/src/blockdiag/utils/__init__.py --- old/blockdiag-2.0.1/src/blockdiag/utils/__init__.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag/utils/__init__.py 2021-12-06 17:43:47.000000000 +0100 @@ -170,6 +170,8 @@ def unquote(string): """ Remove quotas from string """ if string: + string = string.replace('"""', '').replace("'''", '') + m = re.match(r'\A(?P<quote>"|\')((.|\s)*)(?P=quote)\Z', string, re.M) if m: return re.sub("\\\\" + m.group(1), m.group(1), m.group(2)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag.egg-info/PKG-INFO new/blockdiag-3.0.0/src/blockdiag.egg-info/PKG-INFO --- old/blockdiag-2.0.1/src/blockdiag.egg-info/PKG-INFO 2020-02-01 11:12:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag.egg-info/PKG-INFO 2021-12-06 17:43:51.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: blockdiag -Version: 2.0.1 +Version: 3.0.0 Summary: blockdiag generates block-diagram image from text Home-page: http://blockdiag.com/ Author: Takeshi Komiya @@ -9,137 +9,139 @@ Download-URL: http://pypi.python.org/pypi/blockdiag Project-URL: Code, https://github.com/blockdiag/blockdiag Project-URL: Issue tracker, https://github.com/blockdiag/blockdiag/issues -Description: `blockdiag` generate block-diagram image file from spec-text file. - - .. image:: https://drone.io/bitbucket.org/blockdiag/blockdiag/status.png - :target: https://drone.io/bitbucket.org/blockdiag/blockdiag - :alt: drone.io CI build status - - .. image:: https://pypip.in/v/blockdiag/badge.png - :target: https://pypi.python.org/pypi/blockdiag/ - :alt: Latest PyPI version - - .. image:: https://pypip.in/d/blockdiag/badge.png - :target: https://pypi.python.org/pypi/blockdiag/ - :alt: Number of PyPI downloads - - - Features - ======== - * Generate block-diagram from dot like text (basic feature). - * Multilingualization for node-label (utf-8 only). - - You can get some examples and generated images on - `blockdiag.com <http://blockdiag.com/en/blockdiag/examples.html>`_ . - - Setup - ===== - - Use pip:: - - $ sudo pip install blockdiag - - If you want to export as PDF format, give pdf arguments:: - - $ sudo pip install "blockdiag[pdf]" - - - Copy and modify ini file. example:: - - $ cp <blockdiag installed path>/blockdiag/examples/simple.diag . - $ vi simple.diag - - Please refer to `spec-text setting sample`_ section for the format of the - `simpla.diag` configuration file. - - spec-text setting sample - ======================== - Few examples are available. - You can get more examples at - `blockdiag.com`_ . - - simple.diag - ------------ - simple.diag is simply define nodes and transitions by dot-like text format:: - - diagram admin { - top_page -> config -> config_edit -> config_confirm -> top_page; - } - - screen.diag - ------------ - screen.diag is more complexly sample. diaglam nodes have a alternative label - and some transitions:: - - diagram admin { - top_page [label = "Top page"]; - - foo_index [label = "List of FOOs"]; - foo_detail [label = "Detail FOO"]; - foo_add [label = "Add FOO"]; - foo_add_confirm [label = "Add FOO (confirm)"]; - foo_edit [label = "Edit FOO"]; - foo_edit_confirm [label = "Edit FOO (confirm)"]; - foo_delete_confirm [label = "Delete FOO (confirm)"]; - - bar_detail [label = "Detail of BAR"]; - bar_edit [label = "Edit BAR"]; - bar_edit_confirm [label = "Edit BAR (confirm)"]; - - logout; - - top_page -> foo_index; - top_page -> bar_detail; - - foo_index -> foo_detail; - foo_detail -> foo_edit; - foo_detail -> foo_delete_confirm; - foo_index -> foo_add -> foo_add_confirm -> foo_index; - foo_index -> foo_edit -> foo_edit_confirm -> foo_index; - foo_index -> foo_delete_confirm -> foo_index; - - bar_detail -> bar_edit -> bar_edit_confirm -> bar_detail; - } - - - Usage - ===== - Execute blockdiag command:: - - $ blockdiag simple.diag - $ ls simple.png - simple.png - - - Requirements - ============ - * Python 3.5 or later - * Pillow 3.0 or later - * funcparserlib 0.3.6 or later - * reportlab (optional) - * wand and imagemagick (optional) - * setuptools - - - License - ======= - Apache License 2.0 - Keywords: diagram,generator Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python -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: Topic :: Software Development Classifier: Topic :: Software Development :: Documentation Classifier: Topic :: Text Processing :: Markup -Requires-Python: >=3.5 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: pdf Provides-Extra: rst Provides-Extra: testing +License-File: LICENSE + +`blockdiag` generate block-diagram image file from spec-text file. + +.. image:: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml/badge.svg + :target: https://github.com/blockdiag/blockdiag/actions/workflows/main.yml + :alt: GitHub Action CI build status + +.. image:: https://img.shields.io/pypi/v/blockdiag + :target: https://pypi.python.org/pypi/blockdiag/ + :alt: Latest PyPI version + +.. image:: https://img.shields.io/pypi/dm/blockdiag + :target: https://pypi.python.org/pypi/blockdiag/ + :alt: Number of PyPI downloads + + +Features +======== +* Generate block-diagram from dot like text (basic feature). +* Multilingualization for node-label (utf-8 only). + +You can get some examples and generated images on +`blockdiag.com <http://blockdiag.com/en/blockdiag/examples.html>`_ . + +Setup +===== + +Use pip:: + + $ sudo pip install blockdiag + +If you want to export as PDF format, give pdf arguments:: + + $ sudo pip install "blockdiag[pdf]" + + +Copy and modify ini file. example:: + + $ cp <blockdiag installed path>/blockdiag/examples/simple.diag . + $ vi simple.diag + +Please refer to `spec-text setting sample`_ section for the format of the +`simpla.diag` configuration file. + +spec-text setting sample +======================== +Few examples are available. +You can get more examples at +`blockdiag.com`_ . + +simple.diag +------------ +simple.diag is simply define nodes and transitions by dot-like text format:: + + diagram admin { + top_page -> config -> config_edit -> config_confirm -> top_page; + } + +screen.diag +------------ +screen.diag is more complexly sample. diaglam nodes have a alternative label +and some transitions:: + + diagram admin { + top_page [label = "Top page"]; + + foo_index [label = "List of FOOs"]; + foo_detail [label = "Detail FOO"]; + foo_add [label = "Add FOO"]; + foo_add_confirm [label = "Add FOO (confirm)"]; + foo_edit [label = "Edit FOO"]; + foo_edit_confirm [label = "Edit FOO (confirm)"]; + foo_delete_confirm [label = "Delete FOO (confirm)"]; + + bar_detail [label = "Detail of BAR"]; + bar_edit [label = "Edit BAR"]; + bar_edit_confirm [label = "Edit BAR (confirm)"]; + + logout; + + top_page -> foo_index; + top_page -> bar_detail; + + foo_index -> foo_detail; + foo_detail -> foo_edit; + foo_detail -> foo_delete_confirm; + foo_index -> foo_add -> foo_add_confirm -> foo_index; + foo_index -> foo_edit -> foo_edit_confirm -> foo_index; + foo_index -> foo_delete_confirm -> foo_index; + + bar_detail -> bar_edit -> bar_edit_confirm -> bar_detail; + } + + +Usage +===== +Execute blockdiag command:: + + $ blockdiag simple.diag + $ ls simple.png + simple.png + + +Requirements +============ +* Python 3.7 or later +* Pillow 3.0 or later +* funcparserlib 1.0.0a0 or later +* reportlab (optional) +* wand and imagemagick (optional) +* setuptools + + +License +======= +Apache License 2.0 + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag.egg-info/SOURCES.txt new/blockdiag-3.0.0/src/blockdiag.egg-info/SOURCES.txt --- old/blockdiag-2.0.1/src/blockdiag.egg-info/SOURCES.txt 2020-02-01 11:12:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag.egg-info/SOURCES.txt 2021-12-06 17:43:51.000000000 +0100 @@ -22,7 +22,6 @@ examples/simple.diag examples/simple.png examples/simple.svg -src/blockdiag_sphinxhelper.py src/blockdiag/__init__.py src/blockdiag/builder.py src/blockdiag/command.py @@ -98,6 +97,7 @@ src/blockdiag/tests/diagrams/README src/blockdiag/tests/diagrams/auto_jumping_edge.diag src/blockdiag/tests/diagrams/background_url_image.diag +src/blockdiag/tests/diagrams/background_url_local.diag src/blockdiag/tests/diagrams/beginpoint_color.diag src/blockdiag/tests/diagrams/branched.diag src/blockdiag/tests/diagrams/circular_ref.diag @@ -158,6 +158,7 @@ src/blockdiag/tests/diagrams/nested_skipped_circular.diag src/blockdiag/tests/diagrams/node_attribute.diag src/blockdiag/tests/diagrams/node_attribute_and_group.diag +src/blockdiag/tests/diagrams/node_has_block_label.diag src/blockdiag/tests/diagrams/node_has_multilined_label.diag src/blockdiag/tests/diagrams/node_height.diag src/blockdiag/tests/diagrams/node_icon.diag diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag.egg-info/requires.txt new/blockdiag-3.0.0/src/blockdiag.egg-info/requires.txt --- old/blockdiag-2.0.1/src/blockdiag.egg-info/requires.txt 2020-02-01 11:12:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag.egg-info/requires.txt 2021-12-06 17:43:51.000000000 +0100 @@ -1,5 +1,5 @@ setuptools -funcparserlib +funcparserlib>=1.0.0a0 Pillow>3.0 webcolors diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag.egg-info/top_level.txt new/blockdiag-3.0.0/src/blockdiag.egg-info/top_level.txt --- old/blockdiag-2.0.1/src/blockdiag.egg-info/top_level.txt 2020-02-01 11:12:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag.egg-info/top_level.txt 2021-12-06 17:43:51.000000000 +0100 @@ -1,2 +1 @@ blockdiag -blockdiag_sphinxhelper diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/src/blockdiag_sphinxhelper.py new/blockdiag-3.0.0/src/blockdiag_sphinxhelper.py --- old/blockdiag-2.0.1/src/blockdiag_sphinxhelper.py 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/src/blockdiag_sphinxhelper.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2011 Takeshi KOMIYA -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import blockdiag.builder -import blockdiag.drawer -import blockdiag.parser -import blockdiag.utils.bootstrap -import blockdiag.utils.compat -import blockdiag.utils.fontmap -import blockdiag.utils.rst.directives -import blockdiag.utils.rst.nodes - -__all__ = [ - 'core', 'utils' -] - -core = blockdiag -utils = blockdiag.utils diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blockdiag-2.0.1/tox.ini new/blockdiag-3.0.0/tox.ini --- old/blockdiag-2.0.1/tox.ini 2020-01-13 10:55:52.000000000 +0100 +++ new/blockdiag-3.0.0/tox.ini 2021-12-06 17:43:47.000000000 +0100 @@ -1,5 +1,5 @@ [tox] -envlist=py{35,36,37},pillow{3.x,4.x,5.x,6.x,7.x} +envlist=py{37,38,39},pillow{3.x,4.x,5.x,6.x,7.x},flake8 [testenv] usedevelop = True @@ -19,4 +19,11 @@ ALL_TESTS commands = nosetests + +[testenv:flake8] +description = + Run style checks. +extras = + testing +commands = flake8 src ++++++ python-blockdiag-nose-to-pytest.patch ++++++ --- /var/tmp/diff_new_pack.lwTcBl/_old 2022-08-05 19:52:09.633635319 +0200 +++ /var/tmp/diff_new_pack.lwTcBl/_new 2022-08-05 19:52:09.637635330 +0200 @@ -1,8 +1,8 @@ -diff --git a/setup.py b/setup.py -index 116434d..7da66c2 100644 ---- a/setup.py -+++ b/setup.py -@@ -67,7 +67,7 @@ def get_version(): +Index: blockdiag-3.0.0/setup.py +=================================================================== +--- blockdiag-3.0.0.orig/setup.py ++++ blockdiag-3.0.0/setup.py +@@ -65,7 +65,7 @@ setup( 'docutils' ], 'testing': [ @@ -11,7 +11,7 @@ 'flake8', 'flake8-coding', 'flake8-copyright', -@@ -76,7 +76,6 @@ def get_version(): +@@ -74,7 +74,6 @@ setup( 'docutils', ], }, @@ -19,43 +19,20 @@ entry_points=""" [console_scripts] blockdiag = blockdiag.command:main -diff --git a/src/blockdiag/tests/rst/test_blockdiag_directives.py b/src/blockdiag/tests/rst/test_blockdiag_directives.py -index 0b86583..72ed086 100644 ---- a/src/blockdiag/tests/rst/test_blockdiag_directives.py -+++ b/src/blockdiag/tests/rst/test_blockdiag_directives.py -@@ -24,6 +24,9 @@ - from blockdiag.tests.utils import TemporaryDirectory, capture_stderr, with_pil - from blockdiag.utils.rst import directives - -+TESTDIR = os.path.dirname(__file__) -+FONTPATH = os.path.join(TESTDIR, '..', 'VLGothic', 'VL-Gothic-Regular.ttf') -+ - - class TestRstDirectives(unittest.TestCase): - def setUp(self): -@@ -178,7 +181,7 @@ def test_setup_inline_svg_is_true_but_format_isnt_svg(self): - self.assertEqual(nodes.image, type(doctree[0])) - - def test_setup_inline_svg_is_true_with_multibytes(self): -- directives.setup(format='SVG', outputdir=self.tmpdir) -+ directives.setup(format='SVG', outputdir=self.tmpdir, fontpath=FONTPATH) - text = (".. blockdiag::\n" - "\n" - " ??? -> ???") -diff --git a/src/blockdiag/tests/test_generate_diagram.py b/src/blockdiag/tests/test_generate_diagram.py -index 361c86f..6b9a773 100644 ---- a/src/blockdiag/tests/test_generate_diagram.py -+++ b/src/blockdiag/tests/test_generate_diagram.py -@@ -18,8 +18,6 @@ - import sys +Index: blockdiag-3.0.0/src/blockdiag/tests/test_generate_diagram.py +=================================================================== +--- blockdiag-3.0.0.orig/src/blockdiag/tests/test_generate_diagram.py ++++ blockdiag-3.0.0/src/blockdiag/tests/test_generate_diagram.py +@@ -19,8 +19,6 @@ import sys import unittest + from xml.etree import ElementTree -from nose.tools import nottest - import blockdiag import blockdiag.command from blockdiag.tests.utils import (TemporaryDirectory, capture_stderr, -@@ -51,7 +49,7 @@ def test_generate(): +@@ -52,7 +50,7 @@ def test_generate(): files = get_diagram_files(basepath) options = [] @@ -64,7 +41,7 @@ yield testcase -@@ -62,12 +60,11 @@ def test_generate_with_separate(): +@@ -63,12 +61,11 @@ def test_generate_with_separate(): filtered = (f for f in files if re.search('separate', f)) options = ['--separate'] @@ -79,16 +56,17 @@ fontpath = get_fontpath(basepath) options = options + ['-f', fontpath] -diff --git a/tox.ini b/tox.ini -index 3912471..48b0c85 100644 ---- a/tox.ini -+++ b/tox.ini -@@ -18,5 +18,5 @@ deps = +Index: blockdiag-3.0.0/tox.ini +=================================================================== +--- blockdiag-3.0.0.orig/tox.ini ++++ blockdiag-3.0.0/tox.ini +@@ -18,7 +18,7 @@ deps = passenv = ALL_TESTS commands = - nosetests + pytest - flake8 src - + + [testenv:flake8] + description =