1{ stdenv, buildPythonPackage, fetchPypi, isPy3k
2, setuptools_scm
3, cheroot, portend, more-itertools, zc_lockfile, routes
4, jaraco_collections
5, objgraph, pytest, pytestcov, pathpy, requests_toolbelt, pytest-services
6, fetchpatch
7}:
8
9buildPythonPackage rec {
10 pname = "cherrypy";
11 version = "18.6.0";
12
13 disabled = !isPy3k;
14
15 src = fetchPypi {
16 pname = "CherryPy";
17 inherit version;
18 sha256 = "16f410izp2c4qhn4n3l5l3qirmkf43h2amjqms8hkl0shgfqwq2n";
19 };
20
21 propagatedBuildInputs = [
22 # required
23 cheroot portend more-itertools zc_lockfile
24 jaraco_collections
25 # optional
26 routes
27 ];
28
29 nativeBuildInputs = [ setuptools_scm ];
30
31 checkInputs = [
32 objgraph pytest pytestcov pathpy requests_toolbelt pytest-services
33 ];
34
35 # Keyboard interrupt ends test suite run
36 # daemonize and autoreload tests have issue with sockets within sandbox
37 # Disable doctest plugin because times out
38 checkPhase = ''
39 substituteInPlace pytest.ini --replace "--doctest-modules" ""
40 pytest \
41 -k 'not KeyboardInterrupt and not daemonize and not Autoreload' \
42 --deselect=cherrypy/test/test_static.py::StaticTest::test_null_bytes \
43 --deselect=cherrypy/test/test_tools.py::ToolTests::testCombinedTools \
44 ${stdenv.lib.optionalString stdenv.isDarwin
45 "--deselect=cherrypy/test/test_bus.py::BusMethodTests::test_block"}
46 '';
47
48 meta = with stdenv.lib; {
49 homepage = "https://www.cherrypy.org";
50 description = "A pythonic, object-oriented HTTP framework";
51 license = licenses.bsd3;
52 };
53}