diff --git a/neo4j/__init__.py b/neo4j/__init__.py index 88fd6228b..b7ea1e2de 100644 --- a/neo4j/__init__.py +++ b/neo4j/__init__.py @@ -65,7 +65,7 @@ ]) -from collections import deque, namedtuple, Mapping +from collections import deque, namedtuple from functools import reduce from operator import xor as xor_operator from random import random @@ -73,7 +73,7 @@ from warnings import warn -from .compat import perf_counter, urlparse, xstr +from .compat import perf_counter, urlparse, xstr, Mapping from .config import * from .meta import version as __version__ diff --git a/neo4j/compat/__init__.py b/neo4j/compat/__init__.py index e265d2f21..92f4ad62c 100644 --- a/neo4j/compat/__init__.py +++ b/neo4j/compat/__init__.py @@ -121,6 +121,14 @@ def perf_counter(): return nanoTime() / 1000000000 +# Using or importing the ABCs from 'collections' instead of from +# 'collections.abc' is deprecated, and in 3.8 it will stop working +try: + from collections.abc import Mapping +except ImportError: + from collections import Mapping + + # The location of urlparse varies between Python 2 and 3 try: from urllib.parse import urlparse, parse_qs diff --git a/neo4j/types/graph.py b/neo4j/types/graph.py index 7b59e1d6d..66419a897 100644 --- a/neo4j/types/graph.py +++ b/neo4j/types/graph.py @@ -23,9 +23,7 @@ """ -from collections import Mapping - -from neo4j.compat import xstr, deprecated +from neo4j.compat import xstr, deprecated, Mapping __all__ = [ diff --git a/requirements.txt b/requirements.txt index 1218d3c08..96c4bb9c2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -neobolt<2,>=1.7 +neobolt<2,>=1.7.2 neotime<2,>=1.7.1 diff --git a/setup.py b/setup.py index 2d2479fc7..65ec7c62e 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ from neo4j.meta import package, version install_requires = [ - "neobolt<2,>=1.7", + "neobolt<2,>=1.7.2", "neotime<2,>=1.7.1", ] classifiers = [ diff --git a/test/requirements.txt b/test/requirements.txt index 8f7c845b8..31f901c0f 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -1,4 +1,4 @@ -boltkit>=1.0.39 +boltkit coverage mock pytest diff --git a/test/stub/scripts/broken_router.script b/test/stub/scripts/broken_router.script index dad453e7f..4ca07a7be 100644 --- a/test/stub/scripts/broken_router.script +++ b/test/stub/scripts/broken_router.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: FAILURE {"code": "Neo.DatabaseError.General.UnknownError", "message": "An unknown error occurred."} IGNORED diff --git a/test/stub/scripts/non_router.script b/test/stub/scripts/non_router.script index 68769f453..331e84144 100644 --- a/test/stub/scripts/non_router.script +++ b/test/stub/scripts/non_router.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: FAILURE {"code": "Neo.ClientError.Procedure.ProcedureNotFound", "message": "Not a router"} IGNORED diff --git a/test/stub/scripts/return_1_four_times.script b/test/stub/scripts/return_1_four_times.script index 54f8eaf46..306ea309d 100644 --- a/test/stub/scripts/return_1_four_times.script +++ b/test/stub/scripts/return_1_four_times.script @@ -7,19 +7,19 @@ S: SUCCESS {"fields": ["x"]} RECORD [1] SUCCESS {} -C: RUN "RETURN $x" {"x": 1} +C: RUN "" {"x": 1} PULL_ALL S: SUCCESS {"fields": ["x"]} RECORD [1] SUCCESS {} -C: RUN "RETURN $x" {"x": 1} +C: RUN "" {"x": 1} PULL_ALL S: SUCCESS {"fields": ["x"]} RECORD [1] SUCCESS {} -C: RUN "RETURN $x" {"x": 1} +C: RUN "" {"x": 1} PULL_ALL S: SUCCESS {"fields": ["x"]} RECORD [1] diff --git a/test/stub/scripts/return_1_in_tx_twice.script b/test/stub/scripts/return_1_in_tx_twice.script index aef5eb3e3..bde66437f 100644 --- a/test/stub/scripts/return_1_in_tx_twice.script +++ b/test/stub/scripts/return_1_in_tx_twice.script @@ -22,7 +22,7 @@ C: RUN "BEGIN" {"bookmark": "bookmark:1", "bookmarks": ["bookmark:1"]} S: SUCCESS {"fields": []} SUCCESS {} -C: RUN "RETURN 1" {} +C: RUN "" {} PULL_ALL S: SUCCESS {"fields": ["1"]} RECORD [1] diff --git a/test/stub/scripts/return_1_twice.script b/test/stub/scripts/return_1_twice.script index 97015dfd6..0adc52f3b 100644 --- a/test/stub/scripts/return_1_twice.script +++ b/test/stub/scripts/return_1_twice.script @@ -7,7 +7,7 @@ S: SUCCESS {"fields": ["x"]} RECORD [1] SUCCESS {} -C: RUN "RETURN $x" {"x": 1} +C: RUN "" {"x": 1} PULL_ALL S: SUCCESS {"fields": ["x"]} RECORD [1] diff --git a/test/stub/scripts/return_1_twice_in_tx.script b/test/stub/scripts/return_1_twice_in_tx.script index 6fc0881fe..78fff4963 100644 --- a/test/stub/scripts/return_1_twice_in_tx.script +++ b/test/stub/scripts/return_1_twice_in_tx.script @@ -12,7 +12,7 @@ S: SUCCESS {"fields": ["x"]} RECORD [1] SUCCESS {} -C: RUN "RETURN $x" {"x": 1} +C: RUN "" {"x": 1} PULL_ALL S: SUCCESS {"fields": ["x"]} RECORD [1] diff --git a/test/stub/scripts/router.script b/test/stub/scripts/router.script index 208831ca1..e16f6f537 100644 --- a/test/stub/scripts/router.script +++ b/test/stub/scripts/router.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":["127.0.0.1:9001","127.0.0.1:9002","127.0.0.1:9003"]},{"role":"READ","addresses":["127.0.0.1:9004","127.0.0.1:9005"]},{"role":"WRITE","addresses":["127.0.0.1:9006"]}]] diff --git a/test/stub/scripts/router_no_readers.script b/test/stub/scripts/router_no_readers.script index 85ab1fca5..523792f0e 100644 --- a/test/stub/scripts/router_no_readers.script +++ b/test/stub/scripts/router_no_readers.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":["127.0.0.1:9001","127.0.0.1:9002","127.0.0.1:9003"]},{"role":"READ","addresses":[]},{"role":"WRITE","addresses":["127.0.0.1:9006"]}]] diff --git a/test/stub/scripts/router_no_routers.script b/test/stub/scripts/router_no_routers.script index 26d4f82c8..989fbf300 100644 --- a/test/stub/scripts/router_no_routers.script +++ b/test/stub/scripts/router_no_routers.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":[]},{"role":"READ","addresses":["127.0.0.1:9004","127.0.0.1:9005"]},{"role":"WRITE","addresses":["127.0.0.1:9006"]}]] diff --git a/test/stub/scripts/router_no_writers.script b/test/stub/scripts/router_no_writers.script index df3deacac..d100cc4ac 100644 --- a/test/stub/scripts/router_no_writers.script +++ b/test/stub/scripts/router_no_writers.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":["127.0.0.1:9001","127.0.0.1:9002","127.0.0.1:9003"]},{"role":"READ","addresses":["127.0.0.1:9004","127.0.0.1:9005"]},{"role":"WRITE","addresses":[]}]] diff --git a/test/stub/scripts/router_with_multiple_servers.script b/test/stub/scripts/router_with_multiple_servers.script index f520dc60e..9331adcfe 100644 --- a/test/stub/scripts/router_with_multiple_servers.script +++ b/test/stub/scripts/router_with_multiple_servers.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":["127.0.0.1:9001","127.0.0.1:9002"]},{"role":"READ","addresses":["127.0.0.1:9001","127.0.0.1:9003"]},{"role":"WRITE","addresses":["127.0.0.1:9004"]}]] diff --git a/test/stub/scripts/router_with_multiple_writers.script b/test/stub/scripts/router_with_multiple_writers.script index e3ae63f78..343fdaa4d 100644 --- a/test/stub/scripts/router_with_multiple_writers.script +++ b/test/stub/scripts/router_with_multiple_writers.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} RECORD [300, [{"role":"ROUTE","addresses":["127.0.0.1:9001","127.0.0.1:9002","127.0.0.1:9003"]},{"role":"READ","addresses":["127.0.0.1:9004","127.0.0.1:9005"]},{"role":"WRITE","addresses":["127.0.0.1:9006","127.0.0.1:9007"]}]] diff --git a/test/stub/scripts/rude_router.script b/test/stub/scripts/rude_router.script index 5bde7374f..78d153363 100644 --- a/test/stub/scripts/rude_router.script +++ b/test/stub/scripts/rude_router.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: diff --git a/test/stub/scripts/silent_router.script b/test/stub/scripts/silent_router.script index a315ae3a9..c193cb1b3 100644 --- a/test/stub/scripts/silent_router.script +++ b/test/stub/scripts/silent_router.script @@ -1,7 +1,7 @@ !: AUTO INIT !: AUTO RESET -C: RUN "CALL dbms.cluster.routing.getServers" {} +C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} PULL_ALL S: SUCCESS {"fields": ["ttl", "servers"]} SUCCESS {} diff --git a/tox.ini b/tox.ini index 70bc52a01..b28a20e81 100644 --- a/tox.ini +++ b/tox.ini @@ -6,9 +6,6 @@ envlist = py36 [testenv] -deps = - -r{toxinidir}/requirements.txt - -r{toxinidir}/test/requirements.txt passenv = NEO4J_SERVER_PACKAGE NEO4J_USER @@ -20,6 +17,7 @@ passenv = JAVA_HOME commands = python setup.py develop + pip install --upgrade -r {toxinidir}/test/requirements.txt coverage erase coverage run -m pytest -v {posargs} test/unit test/stub test/integration #test/performance coverage report