writers: add writeGuile[Bin] (#364531)
[NixPkgs.git] / pkgs / development / python-modules / cmdstanpy / default.nix
blob6fcf618bafef445a7075ef9d06a4506ebd5bd952
2   lib,
3   buildPythonPackage,
4   fetchFromGitHub,
5   substituteAll,
6   cmdstan,
7   setuptools,
8   pandas,
9   numpy,
10   tqdm,
11   stanio,
12   xarray,
13   pytestCheckHook,
14   stdenv,
17 buildPythonPackage rec {
18   pname = "cmdstanpy";
19   version = "1.2.4";
20   pyproject = true;
22   src = fetchFromGitHub {
23     owner = "stan-dev";
24     repo = "cmdstanpy";
25     rev = "refs/tags/v${version}";
26     hash = "sha256-SKDqLvWbzaBcL13E87kcphBJNIZfdkPp2g4SIDEKA0U=";
27   };
29   patches = [
30     (substituteAll {
31       src = ./use-nix-cmdstan-path.patch;
32       cmdstan = "${cmdstan}/opt/cmdstan";
33     })
34   ];
36   postPatch = ''
37     # conftest.py would have used git to clean up, which is unnecessary here
38     rm test/conftest.py
39   '';
41   nativeBuildInputs = [
42     setuptools
43   ];
45   propagatedBuildInputs = [
46     pandas
47     numpy
48     tqdm
49     stanio
50   ];
52   optional-dependencies = {
53     all = [ xarray ];
54   };
56   pythonRelaxDeps = [ "stanio" ];
58   preCheck = ''
59     export HOME=$(mktemp -d)
60   '';
62   nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.all;
64   disabledTestPaths = [
65     # No need to test these when using Nix
66     "test/test_install_cmdstan.py"
67     "test/test_cxx_installation.py"
68   ];
70   disabledTests =
71     [
72       "test_serialization" # Pickle class mismatch errors
73       # These tests use the flag -DSTAN_THREADS which doesn't work in cmdstan (missing file)
74       "test_multi_proc_threads"
75       "test_compile_force"
76       # These tests require a writeable cmdstan source directory
77       "test_pathfinder_threads"
78       "test_save_profile"
79     ]
80     ++ lib.optionals stdenv.hostPlatform.isDarwin [
81       "test_init_types" # CmdStan error: error during processing Operation not permitted
82     ];
84   pythonImportsCheck = [ "cmdstanpy" ];
86   meta = {
87     homepage = "https://github.com/stan-dev/cmdstanpy";
88     description = "Lightweight interface to Stan for Python users";
89     changelog = "https://github.com/stan-dev/cmdstanpy/releases/tag/v${version}";
90     license = lib.licenses.bsd3;
91     maintainers = with lib.maintainers; [ tomasajt ];
92   };