1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, contexttimer
5, versioneer
6, cython
7, numpy
8, pytest
9, pythonOlder
10}:
11
12buildPythonPackage rec {
13 pname = "pyrevolve";
14 version = "2.2.2";
15 format = "setuptools";
16
17 disabled = pythonOlder "3.7";
18
19 src = fetchFromGitHub {
20 owner = "devitocodes";
21 repo = pname;
22 rev = "refs/tags/v${version}";
23 hash = "sha256-JLDn3WEBcdO8YYzt/MWOHB/1kcmbmZUsiH00/4Uwlxo=";
24 };
25
26 nativeBuildInputs = [
27 versioneer
28 cython
29 ];
30
31 propagatedBuildInputs = [
32 contexttimer
33 numpy
34 ];
35
36 nativeCheckInputs = [ pytest ];
37 # Using approach bellow bcs the tests fail with the pytestCheckHook, throwing the following error
38 # ImportError: cannot import name 'crevolve' from partially initialized module 'pyrevolve'
39 # (most likely due to a circular import)
40 checkPhase = ''
41 pytest
42 '';
43
44 pythonImportsCheck = [
45 "pyrevolve"
46 ];
47
48 meta = with lib; {
49 homepage = "https://github.com/devitocodes/pyrevolve";
50 changelog = "https://github.com/devitocodes/pyrevolve/releases/tag/v${version}";
51 description = "Python library to manage checkpointing for adjoints";
52 license = licenses.epl10;
53 maintainers = with maintainers; [ atila ];
54 };
55}