about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/greenlet/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/greenlet/default.nix62
1 files changed, 62 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/greenlet/default.nix b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
new file mode 100644
index 000000000000..6839b2340961
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+
+# build-system
+, setuptools
+
+# tests
+, objgraph
+, psutil
+, python
+, unittestCheckHook
+}:
+
+let greenlet = buildPythonPackage rec {
+  pname = "greenlet";
+  version = "3.0.3";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-QzdEQjUyWVVM4zWZ2otpLVqpb4l21WfUut8mM3H75JE=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  # tests in passthru, infinite recursion via objgraph/graphviz
+  doCheck = false;
+
+  nativeCheckInputs = [
+    objgraph
+    psutil
+    unittestCheckHook
+  ];
+
+  preCheck = ''
+    pushd ${placeholder "out"}/${python.sitePackages}
+  '';
+
+  unittestFlagsArray = [
+    "greenlet.tests"
+  ];
+
+  postCheck = ''
+    popd
+  '';
+
+  passthru.tests.pytest = greenlet.overridePythonAttrs (_: { doCheck = true; });
+
+  meta = with lib; {
+    changelog = "https://github.com/python-greenlet/greenlet/blob/${version}/CHANGES.rst";
+    homepage = "https://github.com/python-greenlet/greenlet";
+    description = "Module for lightweight in-process concurrent programming";
+    license = with licenses; [
+      psfl # src/greenlet/slp_platformselect.h & files in src/greenlet/platform/ directory
+      mit
+    ];
+  };
+};
+in greenlet