@@ -126,7 +126,7 @@ class Driver(object):
126
126
127
127
#: Overridden by subclasses to specify the URI scheme owned by that
128
128
#: class.
129
- uri_scheme = None
129
+ uri_schemes = ()
130
130
131
131
#: Connection pool
132
132
_pool = None
@@ -145,16 +145,15 @@ def _check_uri(cls, uri):
145
145
:raise: `ValueError` if URI scheme is incompatible
146
146
"""
147
147
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 ))
150
151
151
152
def __new__ (cls , uri , ** config ):
152
153
parsed = urlparse (uri )
153
154
parsed_scheme = parsed .scheme
154
- if parsed_scheme == "neo4j" :
155
- parsed_scheme = "neo4j" # TODO: remove alias in future version
156
155
for subclass in Driver .__subclasses__ ():
157
- if parsed_scheme == subclass .uri_scheme :
156
+ if parsed_scheme in subclass .uri_schemes :
158
157
return subclass (uri , ** config )
159
158
raise ValueError ("URI scheme %r not supported" % parsed .scheme )
160
159
@@ -204,7 +203,7 @@ class DirectDriver(Driver):
204
203
exact host and port detailed in the URI.
205
204
"""
206
205
207
- uri_scheme = "bolt"
206
+ uri_schemes = ( "bolt" ,)
208
207
209
208
def __new__ (cls , uri , ** config ):
210
209
from neobolt .addressing import SocketAddress
@@ -247,7 +246,7 @@ class RoutingDriver(Driver):
247
246
by directing read and write behaviour to appropriate cluster members.
248
247
"""
249
248
250
- uri_scheme = "neo4j"
249
+ uri_schemes = ( "neo4j" , "bolt+routing" )
251
250
252
251
def __new__ (cls , uri , ** config ):
253
252
from neobolt .addressing import SocketAddress
0 commit comments