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 ] ++ eth-hash.optional-dependencies.pycryptodome;
59
60 disabledTests = [
61 # side-effect: runs pip online check and is blocked by sandbox
62 "test_install_local_wheel"
63 ];
64
65 disabledTestPaths = [
66 # json-fixtures require fixture submodule and execution spec
67 "tests/json-fixtures"
68 ];
69
70 pythonImportsCheck = [ "eth" ];
71
72 meta = {
73 description = "A Python implementation of the Ethereum Virtual Machine.";
74 homepage = "https://github.com/ethereum/py-evm";
75 license = lib.licenses.mit;
76 maintainers = with lib.maintainers; [ hellwolf ];
77 };
78}