1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchFromGitHub,
6 pythonOlder,
7 setuptools,
8 setuptools-scm,
9 libxcrypt,
10 numpy,
11 qt6,
12 qtpy,
13 pyqt6,
14 mesa,
15 pytestCheckHook,
16 pytest-cov-stub,
17}:
18
19buildPythonPackage rec {
20 pname = "echo";
21 version = "0.11.0";
22 pyproject = true;
23
24 disabled = pythonOlder "3.10";
25
26 src = fetchFromGitHub {
27 owner = "glue-viz";
28 repo = "echo";
29 tag = "v${version}";
30 sha256 = "sha256-Uikzn9vbLctiZ6W0uA6hNvr7IB/FhCcHk+JxBW7yrA4=";
31 };
32
33 build-system = [
34 setuptools
35 setuptools-scm
36 ];
37
38 nativeBuildInputs = [
39 qt6.wrapQtAppsHook
40 ];
41
42 buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ];
43
44 dependencies = [
45 qt6.qtconnectivity
46 qt6.qtbase
47 qt6.qttools
48 pyqt6
49 numpy
50 qtpy
51 ];
52
53 doCheck = lib.meta.availableOn stdenv.hostPlatform mesa.llvmpipeHook;
54
55 preCheck = ''
56 export QT_QPA_PLATFORM=offscreen
57 '';
58
59 nativeCheckInputs = [
60 mesa.llvmpipeHook
61 pytestCheckHook
62 pytest-cov-stub
63 ];
64
65 pythonImportsCheck = [ "echo" ];
66
67 meta = with lib; {
68 homepage = "https://github.com/glue-viz/echo";
69 description = "Callback Properties in Python";
70 license = licenses.mit;
71 maintainers = with maintainers; [ ifurther ];
72 };
73}