From 382cd56772efd92a9fe5ce46623029a04163c8cf Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 23 Oct 2013 15:02:36 -0400 Subject: - The regexp used by the :func:`.url.make_url` function now parses ipv6 addresses, e.g. surrounded by brackets. [ticket:2851] --- lib/sqlalchemy/engine/url.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py index 1f192ae7f..74584b787 100644 --- a/lib/sqlalchemy/engine/url.py +++ b/lib/sqlalchemy/engine/url.py @@ -71,7 +71,10 @@ class URL(object): else util.quote_plus(self.password)) s += "@" if self.host is not None: - s += self.host + if ':' in self.host: + s += "[%s]" % self.host + else: + s += self.host if self.port is not None: s += ':' + str(self.port) if self.database is not None: @@ -170,7 +173,10 @@ def _parse_rfc1738_args(name): (?::(?P[^/]*))? @)? (?: - (?P[^/:]*) + (?: + \[(?P[^/]+)\] | + (?P[^/:]+) + )? (?::(?P[^/]*))? )? (?:/(?P.*))? @@ -193,6 +199,9 @@ def _parse_rfc1738_args(name): components['password'] = \ util.unquote_plus(components['password']) + ipv4host = components.pop('ipv4host') + ipv6host = components.pop('ipv6host') + components['host'] = ipv4host or ipv6host name = components.pop('name') return URL(name, **components) else: -- cgit v1.2.1