1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 pythonOlder,
6 stdenv,
7
8 # build-system
9 setuptools,
10
11 # dependencies
12 importlib-metadata,
13
14 # optional-dependencies
15 lxml,
16 cairosvg,
17
18 # tests
19 pyquery,
20 pytestCheckHook,
21}:
22
23buildPythonPackage rec {
24 pname = "pygal";
25 version = "3.0.5";
26 pyproject = true;
27
28 disabled = pythonOlder "3.8";
29
30 src = fetchPypi {
31 inherit pname version;
32 hash = "sha256-wKDzTlvBwBl1wr+4NCrVIeKTrULlJWmd0AxNelLBS3E=";
33 };
34
35 postPatch = ''
36 substituteInPlace setup.py \
37 --replace-fail pytest-runner ""
38 '';
39
40 build-system = [ setuptools ];
41
42 dependencies = [ importlib-metadata ];
43
44 optional-dependencies = {
45 lxml = [ lxml ];
46 png = [ cairosvg ];
47 };
48
49 nativeCheckInputs = [
50 pyquery
51 pytestCheckHook
52 ]
53 ++ lib.flatten (lib.attrValues optional-dependencies);
54
55 preCheck = ''
56 # necessary on darwin to pass the testsuite
57 export LANG=en_US.UTF-8
58 '';
59
60 # Cairo tries to load system fonts by default.
61 # It's surfaced as a Cairo "out of memory" error in tests.
62 __impureHostDeps = [ "/System/Library/Fonts" ];
63
64 postCheck = ''
65 export LANG=${if stdenv.hostPlatform.isDarwin then "en_US.UTF-8" else "C.UTF-8"}
66 '';
67
68 meta = with lib; {
69 description = "Module for dynamic SVG charting";
70 homepage = "http://www.pygal.org";
71 changelog = "https://github.com/Kozea/pygal/blob/${version}/docs/changelog.rst";
72 downloadPage = "https://github.com/Kozea/pygal";
73 license = licenses.lgpl3Plus;
74 maintainers = [ ];
75 mainProgram = "pygal_gen.py";
76 };
77}