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