1{ lib
2, buildPythonPackage
3, fetchPypi
4
5# build-system
6, setuptools
7
8# tests
9, objgraph
10, psutil
11, python
12, unittestCheckHook
13}:
14
15let greenlet = buildPythonPackage rec {
16 pname = "greenlet";
17 version = "3.0.1";
18 pyproject = true;
19
20 src = fetchPypi {
21 inherit pname version;
22 hash = "sha256-gWvZSIqUy6eNk+GrtYAA6CZvqcwqqczdbrBpasskAFs=";
23 };
24
25 nativeBuildInputs = [
26 setuptools
27 ];
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 = [
43 "greenlet.tests"
44 ];
45
46 postCheck = ''
47 popd
48 '';
49
50 passthru.tests.pytest = greenlet.overridePythonAttrs (_: { doCheck = true; });
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 greenlet