mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
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.
This commit is contained in:
parent
81b7bf40b2
commit
883227dde1
3 changed files with 3 additions and 85 deletions
|
@ -1711,7 +1711,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/python-pycrypto-time-clock.patch \
|
||||
%D%/packages/patches/python-pyan3-fix-absolute-path-bug.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/python-pygpgme-fix-pinentry-tests.patch \
|
||||
%D%/packages/patches/python-pytest-asyncio-python-3.8.patch \
|
||||
|
|
|
@ -370,15 +370,14 @@ (define-public xdot
|
|||
(define-public python-pydot
|
||||
(package
|
||||
(name "python-pydot")
|
||||
(version "1.4.1")
|
||||
(version "1.4.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "pydot" version))
|
||||
(sha256
|
||||
(base32
|
||||
"00az4cbf8bv447lkk9xi6pjm7gcc7ia33y4pm71fwfwis56rv76l"))
|
||||
(patches (search-patches "python-pydot-regression-test.patch"))))
|
||||
"0z80zwldf7ffkwrpm28hixsiqp3053j7g281xd6phmnbkfiq3014"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
|
@ -389,8 +388,7 @@ (define-public python-pydot
|
|||
(when tests?
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(with-directory-excursion "test"
|
||||
(invoke "python" "pydot_unittest.py")))
|
||||
#t)))))
|
||||
(invoke "python" "pydot_unittest.py"))))))))
|
||||
(native-inputs
|
||||
;; For tests.
|
||||
(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)
|
Loading…
Reference in a new issue