Hide password in URL and Engine __repr__

Fixes #2821
This commit is contained in:
Gunnlaugur Þór Briem
2013-09-06 17:55:19 +00:00
parent e816754842
commit 610684bb08
3 changed files with 14 additions and 3 deletions
+1 -1
View File
@@ -1428,7 +1428,7 @@ class Engine(Connectable, log.Identified):
echo = log.echo_property()
def __repr__(self):
return 'Engine(%s)' % str(self.url)
return 'Engine(%r)' % self.url
def dispose(self):
"""Dispose of the connection pool used by this :class:`.Engine`.
+9 -2
View File
@@ -62,12 +62,13 @@ class URL(object):
self.database = database
self.query = query or {}
def __str__(self):
def __to_string__(self, hide_password=True):
s = self.drivername + "://"
if self.username is not None:
s += self.username
if self.password is not None:
s += ':' + util.quote_plus(self.password)
s += ':' + ('***' if hide_password
else util.quote_plus(self.password))
s += "@"
if self.host is not None:
s += self.host
@@ -81,6 +82,12 @@ class URL(object):
s += '?' + "&".join("%s=%s" % (k, self.query[k]) for k in keys)
return s
def __str__(self):
return self.__to_string__(hide_password=False)
def __repr__(self):
return self.__to_string__()
def __hash__(self):
return hash(str(self))
+4
View File
@@ -277,6 +277,10 @@ pool_timeout=10
assert e.url.drivername == e2.url.drivername == 'mysql'
assert e.url.username == e2.url.username == 'scott'
assert e2.url is u
assert str(u) == 'mysql://scott:tiger@localhost/test'
assert repr(u) == 'mysql://scott:***@localhost/test'
assert repr(e) == 'Engine(mysql://scott:***@localhost/test)'
assert repr(e2) == 'Engine(mysql://scott:***@localhost/test)'
def test_poolargs(self):
"""test that connection pool args make it thru"""