@@ -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