1{ 2 lib, 3 buildPythonPackage, 4 fetchPypi, 5 6 # build-system 7 setuptools, 8 9 # tests 10 objgraph, 11 psutil, 12 python, 13 unittestCheckHook, 14}: 15 16let 17 greenlet = buildPythonPackage rec { 18 pname = "greenlet"; 19 version = "3.0.3"; 20 pyproject = true; 21 22 src = fetchPypi { 23 inherit pname version; 24 hash = "sha256-QzdEQjUyWVVM4zWZ2otpLVqpb4l21WfUut8mM3H75JE="; 25 }; 26 27 nativeBuildInputs = [ setuptools ]; 28 29 # tests in passthru, infinite recursion via objgraph/graphviz 30 doCheck = false; 31 32 nativeCheckInputs = [ 33 objgraph 34 psutil 35 unittestCheckHook 36 ]; 37 38 preCheck = '' 39 pushd ${placeholder "out"}/${python.sitePackages} 40 ''; 41 42 unittestFlagsArray = [ "greenlet.tests" ]; 43 44 postCheck = '' 45 popd 46 ''; 47 48 passthru.tests.pytest = greenlet.overridePythonAttrs (_: { 49 doCheck = true; 50 }); 51 52 meta = with lib; { 53 changelog = "https://github.com/python-greenlet/greenlet/blob/${version}/CHANGES.rst"; 54 homepage = "https://github.com/python-greenlet/greenlet"; 55 description = "Module for lightweight in-process concurrent programming"; 56 license = with licenses; [ 57 psfl # src/greenlet/slp_platformselect.h & files in src/greenlet/platform/ directory 58 mit 59 ]; 60 }; 61 }; 62in 63greenlet