Files

108 lines
2.5 KiB
Nix

{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchpatch,
aenum,
aiohttp,
isodate,
nest-asyncio,
pytestCheckHook,
pythonOlder,
mock,
pyhamcrest,
pyyaml,
radish-bdd,
setuptools,
}:
buildPythonPackage rec {
__structuredAttrs = true;
pname = "gremlinpython";
version = "3.8.0";
pyproject = true;
src = fetchFromGitHub {
owner = "apache";
repo = "tinkerpop";
tag = version;
hash = "sha256-dslSvtne+0mobjhjZDiO7crQE3aW5wEMWw7l3LkBTV8=";
};
patches = [
(fetchpatch {
name = "remove-async_timeout.pach";
url = "https://github.com/apache/tinkerpop/commit/aa327ace6feaf6ccd3eca411f3b5f6f86f8571f6.patch";
excludes = [ "gremlin-python/src/main/python/setup.py" ];
hash = "sha256-NyXA9vffFem1EzhdNWuoYr7JPkT5DuKyl409LFj9AvQ=";
})
];
postPatch = ''
cd gremlin-python/src/main/python
substituteInPlace gremlin_python/__init__.py \
--replace-fail ".dev1" ""
'';
build-system = [ setuptools ];
pythonRemoveDeps = [
"async-timeout"
];
dependencies = [
aenum
aiohttp
isodate
nest-asyncio
];
nativeCheckInputs = [
pytestCheckHook
mock
pyhamcrest
pyyaml
radish-bdd
];
# disable custom pytest report generation
preCheck = ''
export TEST_TRANSACTIONS='false'
'';
# many tests expect a running tinkerpop server
disabledTestPaths = [
"tests/driver/test_client.py"
"tests/driver/test_driver_remote_connection.py"
"tests/driver/test_driver_remote_connection_http.py"
"tests/driver/test_driver_remote_connection_threaded.py"
"tests/driver/test_web_socket_client_behavior.py"
"tests/process/test_dsl.py"
"tests/structure/io/test_functionalityio.py"
];
disabledTests = [
"TestFunctionalGraphSONIO and test_timestamp"
"TestFunctionalGraphSONIO and test_datetime"
"TestFunctionalGraphSONIO and test_uuid"
"test_transaction_commit"
"test_transaction_rollback"
"test_transaction_no_begin"
"test_multi_commit_transaction"
"test_multi_rollback_transaction"
"test_multi_commit_and_rollback"
"test_transaction_close_tx"
"test_transaction_close_tx_from_parent"
];
meta = with lib; {
changelog = "https://github.com/apache/tinkerpop/blob/${src.tag}/CHANGELOG.asciidoc";
description = "Gremlin-Python implements Gremlin, the graph traversal language of Apache TinkerPop, within the Python language";
homepage = "https://tinkerpop.apache.org/";
license = licenses.asl20;
maintainers = with maintainers; [ ris ];
};
}