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