1{
2 lib,
3 buildPythonPackage,
4 deprecated,
5 fetchFromGitHub,
6 importlib-metadata,
7 ipython,
8 lark,
9 matplotlib-inline,
10 nest-asyncio,
11 networkx,
12 numpy,
13 packaging,
14 poetry-core,
15 pydantic,
16 pytest-asyncio,
17 pytest-mock,
18 pytestCheckHook,
19 pythonOlder,
20 pythonRelaxDepsHook,
21 qcs-sdk-python,
22 respx,
23 rpcq,
24 scipy,
25 syrupy,
26 tenacity,
27 types-deprecated,
28 types-python-dateutil,
29 types-retry,
30}:
31
32buildPythonPackage rec {
33 pname = "pyquil";
34 version = "4.8.0";
35 pyproject = true;
36
37 disabled = pythonOlder "3.7";
38
39 src = fetchFromGitHub {
40 owner = "rigetti";
41 repo = "pyquil";
42 rev = "refs/tags/v${version}";
43 hash = "sha256-MGI+R3oteqDWsXP+SlAGSRGiQiAj44YG6V7o90A4Krc=";
44 };
45
46 pythonRelaxDeps = [
47 "lark"
48 "networkx"
49 "packaging"
50 "qcs-sdk-python"
51 ];
52
53 build-system = [ poetry-core ];
54
55 nativeBuildInputs = [ pythonRelaxDepsHook ];
56
57 dependencies = [
58 deprecated
59 lark
60 matplotlib-inline
61 networkx
62 numpy
63 packaging
64 pydantic
65 qcs-sdk-python
66 rpcq
67 scipy
68 tenacity
69 types-deprecated
70 types-python-dateutil
71 types-retry
72 ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
73
74 nativeCheckInputs = [
75 nest-asyncio
76 pytest-asyncio
77 pytest-mock
78 pytestCheckHook
79 respx
80 syrupy
81 ipython
82 ];
83
84 # tests hang
85 doCheck = false;
86
87 pythonImportsCheck = [ "pyquil" ];
88
89 meta = with lib; {
90 description = "Python library for creating Quantum Instruction Language (Quil) programs";
91 homepage = "https://github.com/rigetti/pyquil";
92 changelog = "https://github.com/rigetti/pyquil/blob/v${version}/CHANGELOG.md";
93 license = licenses.asl20;
94 maintainers = with maintainers; [ fab ];
95 };
96}