1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 # dependencies
7 cached-property,
8 ckzg,
9 eth-bloom,
10 eth-keys,
11 eth-typing,
12 eth-utils,
13 lru-dict,
14 pydantic,
15 py-ecc,
16 rlp,
17 trie,
18 # nativeCheckInputs
19 factory-boy,
20 hypothesis,
21 pytestCheckHook,
22 pytest-xdist,
23 eth-hash,
24}:
25
26buildPythonPackage rec {
27 pname = "py-evm";
28 version = "0.10.1-beta.2";
29 pyproject = true;
30
31 src = fetchFromGitHub {
32 owner = "ethereum";
33 repo = "py-evm";
34 tag = "v${version}";
35 hash = "sha256-2BWMen/6ZcL1/SgGP0XcrTC63+LEjZO7Ogb3anhavsE=";
36 };
37
38 build-system = [ setuptools ];
39
40 dependencies = [
41 cached-property
42 ckzg
43 eth-bloom
44 eth-keys
45 eth-typing
46 eth-utils
47 lru-dict
48 py-ecc
49 rlp
50 trie
51 ];
52
53 nativeCheckInputs = [
54 factory-boy
55 hypothesis
56 pytestCheckHook
57 pytest-xdist
58 ]
59 ++ eth-hash.optional-dependencies.pycryptodome;
60
61 disabledTests = [
62 # side-effect: runs pip online check and is blocked by sandbox
63 "test_install_local_wheel"
64 ];
65
66 disabledTestPaths = [
67 # json-fixtures require fixture submodule and execution spec
68 "tests/json-fixtures"
69 ];
70
71 pythonImportsCheck = [ "eth" ];
72
73 meta = {
74 description = "Python implementation of the Ethereum Virtual Machine";
75 homepage = "https://github.com/ethereum/py-evm";
76 license = lib.licenses.mit;
77 maintainers = with lib.maintainers; [ hellwolf ];
78 };
79}