pythonPackages.purepng: fix for py3.7, enable tests

the pypi package includes pre-cythonized versions of some components,
however these were cythonized with a py3.7-unaware cython which is what
caused the main breakage. fetching the equivalent version from github
allows us to offer either the pure-python version or one we cythonize
ourselves if the cython package is provided.

the added bonus of using a github checkout is that the tests are included,
so enable these.

these tests revealed that for full py3.7 compatibility an additional patch
is needed from an upstream PR.
This commit is contained in:
Robert Scott 2019-05-02 22:18:12 +01:00
parent 11a185b61f
commit 7451a6a107

View File

@ -1,17 +1,43 @@
{ stdenv
, buildPythonPackage
, fetchPypi
, python
, fetchFromGitHub
, fetchpatch
, cython ? null
, numpy ? null
}:
buildPythonPackage rec {
pname = "purepng";
version = "0.2.0";
src = fetchPypi {
inherit pname version;
sha256 = "1kcl7a6d7d59360fbz2jwfk6ha6pmqgn396962p4s62j893d2r0d";
src = fetchFromGitHub {
owner = "Scondo";
repo = "purepng";
rev = "449aa00e97a8d7b8a200eb9048056d4da600a345";
sha256 = "105p7sxn2f21icfnqpah69mnd74r31szj330swbpz53k7gr6nlsv";
};
patches = [
(fetchpatch {
name = "fix-py37-stopiteration-in-generators.patch";
url = "https://github.com/Scondo/purepng/pull/28/commits/62d71dfc2be9ffdc4b3e5f642af0281a8ce8f946.patch";
sha256 = "1ag0pji3p012hmj8kadcd0vydv9702188c0isizsi964qcl4va6m";
})
];
patchFlags = "-p1 -d code";
# cython is optional - if not supplied, the "pure python" implementation will be used
nativeBuildInputs = [ cython ];
# numpy is optional - if not supplied, tests simply have less coverage
checkInputs = [ numpy ];
# checkPhase begins by deleting source dir to force test execution against installed version
checkPhase = ''
rm -r code/png
${python.interpreter} code/test_png.py
'';
meta = with stdenv.lib; {
description = "Pure Python library for PNG image encoding/decoding";
homepage = https://github.com/scondo/purepng;