1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, userpath
6, argcomplete
7, packaging
8, importlib-metadata
9, colorama
10, pytestCheckHook
11}:
12
13buildPythonPackage rec {
14 pname = "pipx";
15 version = "0.16.2.1";
16
17 disabled = pythonOlder "3.6";
18
19 # no tests in the pypi tarball, so we directly fetch from github
20 src = fetchFromGitHub {
21 owner = "pipxproject";
22 repo = pname;
23 rev = version;
24 sha256 = "1agdp8j4lw6z0lk2vv1m8d49r5vwfkpal3hdgq67vnjyp9904pf6";
25 };
26
27 propagatedBuildInputs = [
28 userpath
29 argcomplete
30 packaging
31 colorama
32 ] ++ lib.optionals (pythonOlder "3.8") [
33 importlib-metadata
34 ];
35
36 checkInputs = [ pytestCheckHook ];
37
38 preCheck = ''
39 export HOME=$(mktemp -d)
40 '';
41
42 # disable tests, which require internet connection
43 pytestFlagsArray = [ "--ignore=tests/test_install_all_packages.py" ];
44 disabledTests = [
45 "install"
46 "inject"
47 "ensure_null_pythonpath"
48 "missing_interpreter"
49 "cache"
50 "internet"
51 "run"
52 "runpip"
53 "upgrade"
54 "suffix"
55 "legacy_venv"
56 "determination"
57 "json"
58 ];
59
60 meta = with lib; {
61 description =
62 "Install and Run Python Applications in Isolated Environments";
63 homepage = "https://github.com/pipxproject/pipx";
64 license = licenses.mit;
65 maintainers = with maintainers; [ yevhenshymotiuk ];
66 };
67}