Skip to content

Commit 1292ba4

Browse files
committed
Fixed multiple schemes for same driver
1 parent 816ea5d commit 1292ba4

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

neo4j/__init__.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class Driver(object):
126126

127127
#: Overridden by subclasses to specify the URI scheme owned by that
128128
#: class.
129-
uri_scheme = None
129+
uri_schemes = ()
130130

131131
#: Connection pool
132132
_pool = None
@@ -145,16 +145,15 @@ def _check_uri(cls, uri):
145145
:raise: `ValueError` if URI scheme is incompatible
146146
"""
147147
parsed = urlparse(uri)
148-
if parsed.scheme != cls.uri_scheme:
149-
raise ValueError("%s objects require the %r URI scheme" % (cls.__name__, cls.uri_scheme))
148+
if parsed.scheme not in cls.uri_schemes:
149+
raise ValueError("%s objects require the one of the URI "
150+
"schemes %r" % (cls.__name__, cls.uri_schemes))
150151

151152
def __new__(cls, uri, **config):
152153
parsed = urlparse(uri)
153154
parsed_scheme = parsed.scheme
154-
if parsed_scheme == "neo4j":
155-
parsed_scheme = "neo4j" # TODO: remove alias in future version
156155
for subclass in Driver.__subclasses__():
157-
if parsed_scheme == subclass.uri_scheme:
156+
if parsed_scheme in subclass.uri_schemes:
158157
return subclass(uri, **config)
159158
raise ValueError("URI scheme %r not supported" % parsed.scheme)
160159

@@ -204,7 +203,7 @@ class DirectDriver(Driver):
204203
exact host and port detailed in the URI.
205204
"""
206205

207-
uri_scheme = "bolt"
206+
uri_schemes = ("bolt",)
208207

209208
def __new__(cls, uri, **config):
210209
from neobolt.addressing import SocketAddress
@@ -247,7 +246,7 @@ class RoutingDriver(Driver):
247246
by directing read and write behaviour to appropriate cluster members.
248247
"""
249248

250-
uri_scheme = "neo4j"
249+
uri_schemes = ("neo4j", "bolt+routing")
251250

252251
def __new__(cls, uri, **config):
253252
from neobolt.addressing import SocketAddress

0 commit comments

Comments
 (0)