gnu: python-pydot: Update to 1.4.2.
* gnu/packages/graphviz.scm (python-pydot): Update to 1.4.2. [source](patches): Remove. * gnu/packages/patches/python-pydot-regression-test.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
parent
81b7bf40b2
commit
883227dde1
|
@ -1711,7 +1711,6 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/python-pycrypto-time-clock.patch \
|
%D%/packages/patches/python-pycrypto-time-clock.patch \
|
||||||
%D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
|
%D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
|
||||||
%D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
|
%D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
|
||||||
%D%/packages/patches/python-pydot-regression-test.patch \
|
|
||||||
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
|
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
|
||||||
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
|
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
|
||||||
%D%/packages/patches/python-pytest-asyncio-python-3.8.patch \
|
%D%/packages/patches/python-pytest-asyncio-python-3.8.patch \
|
||||||
|
|
|
@ -370,15 +370,14 @@ can be used either as a standalone application, or as a Python library.")
|
||||||
(define-public python-pydot
|
(define-public python-pydot
|
||||||
(package
|
(package
|
||||||
(name "python-pydot")
|
(name "python-pydot")
|
||||||
(version "1.4.1")
|
(version "1.4.2")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (pypi-uri "pydot" version))
|
(uri (pypi-uri "pydot" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"00az4cbf8bv447lkk9xi6pjm7gcc7ia33y4pm71fwfwis56rv76l"))
|
"0z80zwldf7ffkwrpm28hixsiqp3053j7g281xd6phmnbkfiq3014"))))
|
||||||
(patches (search-patches "python-pydot-regression-test.patch"))))
|
|
||||||
(build-system python-build-system)
|
(build-system python-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:phases
|
'(#:phases
|
||||||
|
@ -389,8 +388,7 @@ can be used either as a standalone application, or as a Python library.")
|
||||||
(when tests?
|
(when tests?
|
||||||
(add-installed-pythonpath inputs outputs)
|
(add-installed-pythonpath inputs outputs)
|
||||||
(with-directory-excursion "test"
|
(with-directory-excursion "test"
|
||||||
(invoke "python" "pydot_unittest.py")))
|
(invoke "python" "pydot_unittest.py"))))))))
|
||||||
#t)))))
|
|
||||||
(native-inputs
|
(native-inputs
|
||||||
;; For tests.
|
;; For tests.
|
||||||
(list graphviz python-chardet))
|
(list graphviz python-chardet))
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
This patch is taken from the upstream repository
|
|
||||||
https://github.com/pydot/pydot/commit/a10ced4d132361027a545a471af4541dea8c5cf5.patch
|
|
||||||
It should be included in the 1.4.2 release.
|
|
||||||
|
|
||||||
|
|
||||||
From a10ced4d132361027a545a471af4541dea8c5cf5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Nowee <peter@peternowee.com>
|
|
||||||
Date: Wed, 26 Jun 2019 15:43:38 +0800
|
|
||||||
Subject: [PATCH] Fix multi.dot Graphviz regression test
|
|
||||||
|
|
||||||
Commit d6602ad of 2018-12-01 fixed the regression test broken by commit
|
|
||||||
2d55978 of 2016-07-01. This revealed that `test/graphs/multi.dot` was
|
|
||||||
failing.
|
|
||||||
|
|
||||||
`multi.dot` was introduced in commit 2b3f088 of 2010-11-07 together
|
|
||||||
with many of the other tests still here today. It has not been touched
|
|
||||||
since. It is a DOT-file containing two digraphs. The regression test
|
|
||||||
compares the JPEG images rendered from the DOT-file by pydot with those
|
|
||||||
rendered by Graphviz's dot directly.
|
|
||||||
|
|
||||||
Commit 66734d2 of 2016-07-01 is the actual cause of the failure. It
|
|
||||||
changed one of the render methods of the regression test,
|
|
||||||
`_render_with_pydot`, from calculating a single hash for all the JPEG
|
|
||||||
images to calculating separate hashes for each JPEG image and then
|
|
||||||
concatenating those hashes in one long string. The other render method,
|
|
||||||
`_render_with_graphviz`, still calculates a single hash over all data.
|
|
||||||
For DOT-files that generate only one image the end result is the same,
|
|
||||||
but because `multi.dot` has two graphs, it produces two images and this
|
|
||||||
leads to comparing a string of two hashes with one single hash.
|
|
||||||
|
|
||||||
I do not think the change in generating the hash was intentional, for
|
|
||||||
the following reasons:
|
|
||||||
- Commit 66734d2 states that its purpose was to adapt the test to an
|
|
||||||
API change in pydot. It does not mention a deliberate choice to
|
|
||||||
change the testing method.
|
|
||||||
- There was no effort to change `_render_with_graphviz` to also produce
|
|
||||||
multiple hashes.
|
|
||||||
- Except for easier debugging in case of a failing test with multiple
|
|
||||||
images (AFAICT, only `multi.dot`), I do not see much added benefit in
|
|
||||||
checking a concatenation of the hashes of all images vs. checking one
|
|
||||||
hash of all images together: In both cases the test will fail if one
|
|
||||||
or more images is rendered differently.
|
|
||||||
- Given that there were many commits authored that same hour, including
|
|
||||||
commit 2d55978 which broke the regression tests, I suspect the author
|
|
||||||
did not run the tests for each individual commit, but only at the end
|
|
||||||
of that batch, and was therefore also not alerted of this change by
|
|
||||||
the test suite.
|
|
||||||
|
|
||||||
Assuming that the change was not intended, this commit will now revert
|
|
||||||
`_render_with_pydot` to the old behavior of calculating a single hash
|
|
||||||
from all JPEG image data.
|
|
||||||
|
|
||||||
Tested with Debian 9.9, Graphviz 2.38.0-17, Python 2.7.13-2 and 3.5.3-1.
|
|
||||||
|
|
||||||
Fixes https://github.com/pydot/pydot/issues/204.
|
|
||||||
---
|
|
||||||
test/pydot_unittest.py | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/test/pydot_unittest.py b/test/pydot_unittest.py
|
|
||||||
index 881ee16..64aa856 100644
|
|
||||||
--- a/test/pydot_unittest.py
|
|
||||||
+++ b/test/pydot_unittest.py
|
|
||||||
@@ -194,11 +194,11 @@ def _render_with_graphviz(self, filename, encoding):
|
|
||||||
|
|
||||||
def _render_with_pydot(self, filename, encoding):
|
|
||||||
c = pydot.graph_from_dot_file(filename, encoding=encoding)
|
|
||||||
- sha = ''
|
|
||||||
+ jpe_data = bytearray()
|
|
||||||
for g in c:
|
|
||||||
- jpe_data = g.create(prog=TEST_PROGRAM, format='jpe', encoding=encoding)
|
|
||||||
- sha += sha256(jpe_data).hexdigest()
|
|
||||||
- return sha
|
|
||||||
+ jpe_data.extend(g.create(prog=TEST_PROGRAM, format='jpe',
|
|
||||||
+ encoding=encoding))
|
|
||||||
+ return sha256(jpe_data).hexdigest()
|
|
||||||
|
|
||||||
def test_my_regression_tests(self):
|
|
||||||
path = os.path.join(test_dir, TESTS_DIR_1)
|
|
Reference in New Issue