1{ lib
2, stdenv
3, buildPythonPackage
4, cons
5, cython
6, etuples
7, fetchFromGitHub
8, filelock
9, hatch-vcs
10, hatchling
11, jax
12, jaxlib
13, logical-unification
14, minikanren
15, numba
16, numba-scipy
17, numpy
18, pytestCheckHook
19, pythonOlder
20, scipy
21, typing-extensions
22}:
23
24buildPythonPackage rec {
25 pname = "aesara";
26 version = "2.9.3";
27 format = "pyproject";
28
29 disabled = pythonOlder "3.8";
30
31 src = fetchFromGitHub {
32 owner = "aesara-devs";
33 repo = "aesara";
34 rev = "refs/tags/rel-${version}";
35 hash = "sha256-aO0+O7Ts9phsV4ghunNolxfAruGBbC+tHjVkmFedcCI=";
36 };
37
38 nativeBuildInputs = [
39 cython
40 hatch-vcs
41 hatchling
42 ];
43
44 propagatedBuildInputs = [
45 cons
46 etuples
47 filelock
48 logical-unification
49 minikanren
50 numpy
51 scipy
52 typing-extensions
53 ];
54
55 nativeCheckInputs = [
56 jax
57 jaxlib
58 numba
59 numba-scipy
60 pytestCheckHook
61 ];
62
63 postPatch = ''
64 substituteInPlace pyproject.toml \
65 --replace "--durations=50" ""
66 '';
67
68 preBuild = ''
69 export HOME=$(mktemp -d)
70 '';
71
72 pythonImportsCheck = [
73 "aesara"
74 ];
75
76 disabledTestPaths = [
77 # Don't run the most compute-intense tests
78 "tests/scan/"
79 "tests/tensor/"
80 "tests/sandbox/"
81 "tests/sparse/sandbox/"
82 # JAX is not available on all platform and often broken
83 "tests/link/jax/"
84 ];
85
86 disabledTests = [
87 # Disable all benchmark tests
88 "test_scan_multiple_output"
89 "test_logsumexp_benchmark"
90 ];
91
92 meta = with lib; {
93 description = "Python library to define, optimize, and efficiently evaluate mathematical expressions involving multi-dimensional arrays";
94 homepage = "https://github.com/aesara-devs/aesara";
95 changelog = "https://github.com/aesara-devs/aesara/releases/tag/rel-${version}";
96 license = licenses.bsd3;
97 maintainers = with maintainers; [ Etjean ];
98 broken = (stdenv.isLinux && stdenv.isAarch64);
99 };
100}