From: Mike Bayer Date: Sun, 29 Jul 2007 02:13:29 +0000 (+0000) Subject: fixed pydoc bug in [ticket:564] X-Git-Tag: rel_0_4beta1~156 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45650694ee3e3d52b96e6c30e1b3176688ad5210;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fixed pydoc bug in [ticket:564] --- diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index ff92f0b430..0cc7d11ed2 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -732,7 +732,14 @@ class _FunctionGenerator(object): self.opts = opts def __getattr__(self, name): - if name[-1] == '_': + # passthru __ attributes; fixes pydoc + if name.startswith('__'): + try: + return self.__dict__[name] + except KeyError: + raise AttributeError(name) + + elif name.startswith('_'): name = name[0:-1] f = _FunctionGenerator(**self.opts) f.__names = list(self.__names) + [name] diff --git a/test/sql/select.py b/test/sql/select.py index a5cf061e21..6dc4ae0f79 100644 --- a/test/sql/select.py +++ b/test/sql/select.py @@ -625,6 +625,14 @@ FROM mytable, myothertable WHERE foo.id = foofoo(lala) AND datetime(foo) = Today # test None becomes NULL self.runtest(func.my_func(1,2,None,3), "my_func(:my_func, :my_func_1, NULL, :my_func_2)") + # assert func raises AttributeError for __bases__ attribute, since its not a class + # fixes pydoc + try: + func.__bases__ + assert False + except AttributeError: + assert True + def testextract(self): """test the EXTRACT function""" self.runtest(select([extract("month", table3.c.otherstuff)]), "SELECT extract(month FROM thirdtable.otherstuff) FROM thirdtable")