1{ lib
2, aiohttp
3, buildPythonPackage
4, cachetools
5, ecdsa
6, eth-hash
7, fastecdsa
8, fetchzip
9, frozendict
10, gmp
11, lark
12, marshmallow
13, marshmallow-dataclass
14, marshmallow-enum
15, marshmallow-oneofschema
16, mpmath
17, numpy
18, pipdeptree
19, prometheus-client
20, pytest
21, pytest-asyncio
22, pytestCheckHook
23, pythonOlder
24, pythonRelaxDepsHook
25, pyyaml
26, setuptools
27, sympy
28, typeguard
29, web3
30}:
31
32buildPythonPackage rec {
33 pname = "cairo-lang";
34 version = "0.10.1";
35 format = "setuptools";
36
37 disabled = pythonOlder "3.7";
38
39 src = fetchzip {
40 url = "https://github.com/starkware-libs/cairo-lang/releases/download/v${version}/cairo-lang-${version}.zip";
41 hash = "sha256-MNbzDqqNhij9JizozLp9hhQjbRGzWxECOErS3TOPlAA=";
42 };
43
44 nativeBuildInputs = [
45 pythonRelaxDepsHook
46 ];
47
48 buildInputs = [
49 gmp
50 ];
51
52 propagatedBuildInputs = [
53 aiohttp
54 cachetools
55 setuptools
56 ecdsa
57 fastecdsa
58 sympy
59 mpmath
60 numpy
61 typeguard
62 frozendict
63 prometheus-client
64 marshmallow
65 marshmallow-enum
66 marshmallow-dataclass
67 marshmallow-oneofschema
68 pipdeptree
69 lark
70 web3
71 eth-hash
72 pyyaml
73 ] ++ eth-hash.optional-dependencies.pycryptodome;
74
75 nativeCheckInputs = [
76 pytest-asyncio
77 pytestCheckHook
78 ];
79
80 pythonRelaxDeps = [
81 "frozendict"
82 ];
83
84 pythonRemoveDeps = [
85 # TODO: pytest and pytest-asyncio must be removed as they are check inputs
86 "pytest"
87 "pytest-asyncio"
88 ];
89
90 postFixup = ''
91 chmod +x $out/bin/*
92 '';
93
94 # There seems to be no test included in the ZIP release…
95 # Cloning from GitHub is harder because they use a custom CMake setup
96 # TODO(raitobezarius): upstream was pinged out of band about it.
97 doCheck = false;
98
99 meta = with lib; {
100 description = "Tooling for Cairo language";
101 homepage = "https://github.com/starkware/cairo-lang";
102 license = licenses.mit;
103 maintainers = with maintainers; [ raitobezarius ];
104 };
105}