1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pycryptodome,
6 uvloop,
7 setuptools,
8 pythonOlder,
9}:
10
11buildPythonPackage rec {
12 pname = "pproxy";
13 version = "2.7.9";
14 pyproject = true;
15
16 disabled = pythonOlder "3.6";
17
18 src = fetchFromGitHub {
19 owner = "qwj";
20 repo = "python-proxy";
21 rev = "7fccf8dd62204f34b0aa3a70fc568fd6ddff7728";
22 sha256 = "sha256-bOqDdNiaZ5MRi/UeF0hJwMs+rfQBKRsTmXrZ6ieIguo=";
23 };
24
25 nativeBuildInputs = [ setuptools ];
26
27 propagatedBuildInputs = [
28 pycryptodome
29 uvloop
30 ];
31
32 pythonImportsCheck = [ "pproxy" ];
33
34 disabledTests = [
35 # Tests try to connect to outside Internet, so disabled
36 "api_server"
37 "api_client"
38 ];
39
40 # test suite doesn't use test runner. so need to run ``python ./tests/*``
41 checkPhase = ''
42 shopt -s extglob
43 for f in ./tests/!(${builtins.concatStringsSep "|" disabledTests}).py ; do
44 echo "***Testing $f***"
45 eval "python $f"
46 done
47 '';
48
49 meta = with lib; {
50 description = "Proxy server that can tunnel among remote servers by regex rules";
51 mainProgram = "pproxy";
52 homepage = "https://github.com/qwj/python-proxy";
53 license = licenses.mit;
54 maintainers = with maintainers; [ drewrisinger ];
55 };
56}