1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools-scm,
6 bottle,
7 importlib-resources,
8 proxy-tools,
9 pygobject3,
10 pyqtwebengine,
11 pytest,
12 pythonOlder,
13 qt5,
14 qtpy,
15 six,
16 xvfb-run,
17}:
18
19buildPythonPackage rec {
20 pname = "pywebview";
21 version = "5.0.5";
22 pyproject = true;
23
24 disabled = pythonOlder "3.5";
25
26 src = fetchFromGitHub {
27 owner = "r0x0r";
28 repo = "pywebview";
29 rev = "refs/tags/${version}";
30 hash = "sha256-Mep4r5OujsefXFQA09OospqnzgQ3xn8HHdZFKNo3oM4=";
31 };
32
33 nativeBuildInputs = [
34 setuptools-scm
35 qt5.wrapQtAppsHook
36 ];
37
38 propagatedBuildInputs = [
39 bottle
40 pyqtwebengine
41 proxy-tools
42 six
43 ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
44
45 nativeCheckInputs = [
46 pygobject3
47 pytest
48 qtpy
49 xvfb-run
50 ];
51
52 checkPhase = ''
53 # Cannot create directory /homeless-shelter/.... Error: FILE_ERROR_ACCESS_DENIED
54 export HOME=$TMPDIR
55 # QStandardPaths: XDG_RUNTIME_DIR not set
56 export XDG_RUNTIME_DIR=$HOME/xdg-runtime-dir
57
58 pushd tests
59 substituteInPlace run.sh \
60 --replace "PYTHONPATH=.." "PYTHONPATH=$PYTHONPATH" \
61 --replace "pywebviewtest test_js_api.py::test_concurrent ''${PYTEST_OPTIONS}" "# skip flaky test_js_api.py::test_concurrent"
62
63 patchShebangs run.sh
64 wrapQtApp run.sh
65
66 xvfb-run -s '-screen 0 800x600x24' ./run.sh
67 popd
68 '';
69
70 pythonImportsCheck = [ "webview" ];
71
72 meta = with lib; {
73 description = "Lightweight cross-platform wrapper around a webview";
74 homepage = "https://github.com/r0x0r/pywebview";
75 license = licenses.bsd3;
76 maintainers = with maintainers; [ jojosch ];
77 };
78}