nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 fetchpatch,
6 aenum,
7 aiohttp,
8 isodate,
9 nest-asyncio,
10 pytestCheckHook,
11 pythonOlder,
12 mock,
13 pyhamcrest,
14 pyyaml,
15 radish-bdd,
16 setuptools,
17}:
18
19buildPythonPackage rec {
20 __structuredAttrs = true;
21
22 pname = "gremlinpython";
23 version = "3.8.0";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "apache";
28 repo = "tinkerpop";
29 tag = version;
30 hash = "sha256-dslSvtne+0mobjhjZDiO7crQE3aW5wEMWw7l3LkBTV8=";
31 };
32
33 patches = [
34 (fetchpatch {
35 name = "remove-async_timeout.pach";
36 url = "https://github.com/apache/tinkerpop/commit/aa327ace6feaf6ccd3eca411f3b5f6f86f8571f6.patch";
37 excludes = [ "gremlin-python/src/main/python/setup.py" ];
38 hash = "sha256-NyXA9vffFem1EzhdNWuoYr7JPkT5DuKyl409LFj9AvQ=";
39 })
40 ];
41
42 postPatch = ''
43 cd gremlin-python/src/main/python
44
45 substituteInPlace gremlin_python/__init__.py \
46 --replace-fail ".dev1" ""
47 '';
48
49 build-system = [ setuptools ];
50
51 pythonRemoveDeps = [
52 "async-timeout"
53 ];
54
55 dependencies = [
56 aenum
57 aiohttp
58 isodate
59 nest-asyncio
60 ];
61
62 nativeCheckInputs = [
63 pytestCheckHook
64 mock
65 pyhamcrest
66 pyyaml
67 radish-bdd
68 ];
69
70 # disable custom pytest report generation
71 preCheck = ''
72 export TEST_TRANSACTIONS='false'
73 '';
74
75 # many tests expect a running tinkerpop server
76 disabledTestPaths = [
77 "tests/driver/test_client.py"
78 "tests/driver/test_driver_remote_connection.py"
79 "tests/driver/test_driver_remote_connection_http.py"
80 "tests/driver/test_driver_remote_connection_threaded.py"
81 "tests/driver/test_web_socket_client_behavior.py"
82 "tests/process/test_dsl.py"
83 "tests/structure/io/test_functionalityio.py"
84 ];
85
86 disabledTests = [
87 "TestFunctionalGraphSONIO and test_timestamp"
88 "TestFunctionalGraphSONIO and test_datetime"
89 "TestFunctionalGraphSONIO and test_uuid"
90 "test_transaction_commit"
91 "test_transaction_rollback"
92 "test_transaction_no_begin"
93 "test_multi_commit_transaction"
94 "test_multi_rollback_transaction"
95 "test_multi_commit_and_rollback"
96 "test_transaction_close_tx"
97 "test_transaction_close_tx_from_parent"
98 ];
99
100 meta = {
101 changelog = "https://github.com/apache/tinkerpop/blob/${src.tag}/CHANGELOG.asciidoc";
102 description = "Gremlin-Python implements Gremlin, the graph traversal language of Apache TinkerPop, within the Python language";
103 homepage = "https://tinkerpop.apache.org/";
104 license = lib.licenses.asl20;
105 maintainers = with lib.maintainers; [ ris ];
106 };
107}