about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/funsor
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/funsor')
-rw-r--r--nixpkgs/pkgs/development/python-modules/funsor/default.nix78
-rw-r--r--nixpkgs/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch27
2 files changed, 105 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/funsor/default.nix b/nixpkgs/pkgs/development/python-modules/funsor/default.nix
new file mode 100644
index 000000000000..a5250afff471
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funsor/default.nix
@@ -0,0 +1,78 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, makefun
+, multipledispatch
+, numpy
+, opt-einsum
+, typing-extensions
+, pyro-ppl
+, torch
+, pandas
+, pillow
+, pyro-api
+, pytest
+, pytest-xdist
+, requests
+, scipy
+, torchvision
+}:
+
+buildPythonPackage rec {
+  pname = "funsor";
+  version = "0.4.5";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "pyro-ppl";
+    repo = "funsor";
+    rev = "refs/tags/${version}";
+    hash = "sha256-3JxnRlJN/kYstcIKt8cvDmqnp8oyoA4jkMBDVuAMa5Q=";
+  };
+
+  # Disable the tests that rely on downloading assets from the internet as well as the linting checks.
+  patches = [
+    ./patch-makefile-for-tests.patch
+  ];
+
+  propagatedBuildInputs = [
+    makefun
+    multipledispatch
+    numpy
+    opt-einsum
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [
+    # Backend
+    pyro-ppl
+    torch
+
+    pandas
+    pillow
+    pyro-api
+    pytest
+    pytest-xdist
+    requests
+    scipy
+    torchvision
+  ];
+
+  # Use the included Makefile to run the tests.
+  checkPhase = ''
+    export FUNSOR_BACKEND=torch
+    make test
+  '';
+
+  pythonImportsCheck = [ "funsor" ];
+
+  meta = with lib; {
+    description = "Functional tensors for probabilistic programming";
+    homepage = "https://funsor.pyro.ai";
+    changelog = "https://github.com/pyro-ppl/funsor/releases/tag/${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch b/nixpkgs/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch
new file mode 100644
index 000000000000..ca59bf75bb7d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch
@@ -0,0 +1,27 @@
+diff --git a/Makefile b/Makefile
+index d4b862c..755dfe3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,7 @@ format: license FORCE
+ 	black .
+ 	isort .
+ 
+-test: lint FORCE
++test: FORCE
+ ifeq (${FUNSOR_BACKEND}, torch)
+ 	pytest -v -n auto test/
+ 	FUNSOR_DEBUG=1 pytest -v test/test_gaussian.py
+@@ -45,10 +45,10 @@ ifeq (${FUNSOR_BACKEND}, torch)
+ 	python examples/slds.py -n 2 -t 50
+ 	python examples/pcfg.py --size 3
+ 	python examples/talbot.py -n 2
+-	python examples/vae.py --smoke-test
++	# python examples/vae.py --smoke-test
+ 	python examples/eeg_slds.py --num-steps 2 --fon --test
+-	python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --smoke
+-	python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --parallel --smoke
++	# python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --smoke
++	# python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --parallel --smoke
+ 	python examples/sensor.py --seed=0 --num-frames=2 -n 1
+ 	python examples/adam.py --num-steps=21
+ 	@echo PASS