[Sqlalchemy-commits] [6004] sqlalchemy/branches/rel_0_6: - repair were-never-working instrumentatio
Brought to you by:
zzzeek
From: <co...@sq...> - 2009-05-30 21:04:04
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[6004] sqlalchemy/branches/rel_0_6: - repair were-never-working instrumentation tests</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>6004</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2009-05-30 17:03:41 -0400 (Sat, 30 May 2009)</dd> </dl> <h3>Log Message</h3> <pre>- repair were-never-working instrumentation tests - use nicer py3k reraise style detailed in pep3109 (directly affects how the traceback is formatted vs. with_traceback()) - seriously considering writing regular tests for sqlsoup since this is going to be impossible to 2to3-ize</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemybranchesrel_0_6libsqlalchemyenginebasepy">sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/base.py</a></li> <li><a href="#sqlalchemybranchesrel_0_6libsqlalchemyenginestrategiespy">sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/strategies.py</a></li> <li><a href="#sqlalchemybranchesrel_0_6libsqlalchemyextsqlsouppy">sqlalchemy/branches/rel_0_6/lib/sqlalchemy/ext/sqlsoup.py</a></li> <li><a href="#sqlalchemybranchesrel_0_6libsqlalchemyormidentitypy">sqlalchemy/branches/rel_0_6/lib/sqlalchemy/orm/identity.py</a></li> <li><a href="#sqlalchemybranchesrel_0_6testorminstrumentationpy">sqlalchemy/branches/rel_0_6/test/orm/instrumentation.py</a></li> <li><a href="#sqlalchemybranchesrel_0_6testormquerypy">sqlalchemy/branches/rel_0_6/test/orm/query.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemybranchesrel_0_6libsqlalchemyenginebasepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/base.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/base.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/base.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -1048,7 +1048,11 @@ </span><span class="cx"> </span><span class="cx"> def _handle_dbapi_exception(self, e, statement, parameters, cursor, context): </span><span class="cx"> if getattr(self, '_reentrant_error', False): </span><ins>+ # Py3K + #raise exc.DBAPIError.instance(statement, parameters, e) as e + # Py2K </ins><span class="cx"> raise exc.DBAPIError.instance(statement, parameters, e), None, sys.exc_info()[2] </span><ins>+ # end Py2K </ins><span class="cx"> self._reentrant_error = True </span><span class="cx"> try: </span><span class="cx"> if not isinstance(e, self.dialect.dbapi.Error): </span><span class="lines">@@ -1068,7 +1072,7 @@ </span><span class="cx"> if self.__close_with_result: </span><span class="cx"> self.close() </span><span class="cx"> # Py3K </span><del>- #raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect).with_traceback(sys.exc_info()[2]) </del><ins>+ #raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect) as e </ins><span class="cx"> # Py2K </span><span class="cx"> raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect), None, sys.exc_info()[2] </span><span class="cx"> # end Py2K </span></span></pre></div> <a id="sqlalchemybranchesrel_0_6libsqlalchemyenginestrategiespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/strategies.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/strategies.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/lib/sqlalchemy/engine/strategies.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -75,11 +75,10 @@ </span><span class="cx"> try: </span><span class="cx"> return dialect.connect(*cargs, **cparams) </span><span class="cx"> except Exception, e: </span><del>- import sys - </del><span class="cx"> # Py3K </span><del>- #raise exc.DBAPIError.instance(None, None, e).with_traceback(sys.exc_info()[2]) </del><ins>+ #raise exc.DBAPIError.instance(None, None, e) as e </ins><span class="cx"> # Py2K </span><ins>+ import sys </ins><span class="cx"> raise exc.DBAPIError.instance(None, None, e), None, sys.exc_info()[2] </span><span class="cx"> # end Py2K </span><span class="cx"> </span></span></pre></div> <a id="sqlalchemybranchesrel_0_6libsqlalchemyextsqlsouppy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/lib/sqlalchemy/ext/sqlsoup.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/lib/sqlalchemy/ext/sqlsoup.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/lib/sqlalchemy/ext/sqlsoup.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -86,7 +86,7 @@ </span><span class="cx"> Get, filter, filter_by, order_by, limit, and the rest of the </span><span class="cx"> query methods are explained in detail in the `SQLAlchemy documentation`__. </span><span class="cx"> </span><del>-__ http://www.sqlalchemy.org/docs/04/ormtutorial.html#datamapping_querying </del><ins>+__ http://www.sqlalchemy.org/docs/05/ormtutorial.html#datamapping_querying </ins><span class="cx"> </span><span class="cx"> </span><span class="cx"> Modifying objects </span><span class="lines">@@ -545,10 +545,14 @@ </span><span class="cx"> def entity(self, attr, schema=None): </span><span class="cx"> try: </span><span class="cx"> t = self._cache[attr] </span><del>- except KeyError: </del><ins>+ except KeyError, ke: </ins><span class="cx"> table = Table(attr, self._metadata, autoload=True, schema=schema or self.schema) </span><span class="cx"> if not table.primary_key.columns: </span><ins>+ # Py3K + #raise PKNotFoundError('table %r does not have a primary key defined [columns: %s]' % (attr, ','.join(table.c.keys()))) as ke + # Py2K </ins><span class="cx"> raise PKNotFoundError('table %r does not have a primary key defined [columns: %s]' % (attr, ','.join(table.c.keys()))) </span><ins>+ # end Py2K </ins><span class="cx"> if table.columns: </span><span class="cx"> t = class_for_table(table) </span><span class="cx"> else: </span></span></pre></div> <a id="sqlalchemybranchesrel_0_6libsqlalchemyormidentitypy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/lib/sqlalchemy/orm/identity.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/lib/sqlalchemy/orm/identity.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/lib/sqlalchemy/orm/identity.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -226,7 +226,11 @@ </span><span class="cx"> </span><span class="cx"> ref_count = len(self) </span><span class="cx"> dirty = [s.obj() for s in self.all_states() if s.check_modified()] </span><del>- keepers = weakref.WeakValueDictionary(self) </del><ins>+ + # work around http://bugs.python.org/issue6149 + keepers = weakref.WeakValueDictionary() + keepers.update(self) + </ins><span class="cx"> dict.clear(self) </span><span class="cx"> dict.update(self, keepers) </span><span class="cx"> self.modified = bool(dirty) </span></span></pre></div> <a id="sqlalchemybranchesrel_0_6testorminstrumentationpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/test/orm/instrumentation.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/test/orm/instrumentation.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/test/orm/instrumentation.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -486,7 +486,7 @@ </span><span class="cx"> class B(A): </span><span class="cx"> __sa_instrumentation_manager__ = staticmethod(mgr_factory) </span><span class="cx"> </span><del>- self.assertRaises(TypeError, attributes.register_class, B) </del><ins>+ self.assertRaisesMessage(TypeError, "multiple instrumentation implementations", attributes.register_class, B) </ins><span class="cx"> </span><span class="cx"> def test_single_up(self): </span><span class="cx"> </span><span class="lines">@@ -497,7 +497,7 @@ </span><span class="cx"> class B(A): </span><span class="cx"> __sa_instrumentation_manager__ = staticmethod(mgr_factory) </span><span class="cx"> attributes.register_class(B) </span><del>- self.assertRaises(TypeError, attributes.register_class, A) </del><ins>+ self.assertRaisesMessage(TypeError, "multiple instrumentation implementations", attributes.register_class, A) </ins><span class="cx"> </span><span class="cx"> def test_diamond_b1(self): </span><span class="cx"> mgr_factory = lambda cls: attributes.ClassManager(cls) </span><span class="lines">@@ -505,10 +505,10 @@ </span><span class="cx"> class A(object): pass </span><span class="cx"> class B1(A): pass </span><span class="cx"> class B2(A): </span><del>- __sa_instrumentation_manager__ = mgr_factory </del><ins>+ __sa_instrumentation_manager__ = staticmethod(mgr_factory) </ins><span class="cx"> class C(object): pass </span><span class="cx"> </span><del>- self.assertRaises(TypeError, attributes.register_class, B1) </del><ins>+ self.assertRaisesMessage(TypeError, "multiple instrumentation implementations", attributes.register_class, B1) </ins><span class="cx"> </span><span class="cx"> def test_diamond_b2(self): </span><span class="cx"> mgr_factory = lambda cls: attributes.ClassManager(cls) </span><span class="lines">@@ -516,22 +516,23 @@ </span><span class="cx"> class A(object): pass </span><span class="cx"> class B1(A): pass </span><span class="cx"> class B2(A): </span><del>- __sa_instrumentation_manager__ = mgr_factory </del><ins>+ __sa_instrumentation_manager__ = staticmethod(mgr_factory) </ins><span class="cx"> class C(object): pass </span><ins>+ + attributes.register_class(B2) + self.assertRaisesMessage(TypeError, "multiple instrumentation implementations", attributes.register_class, B1) </ins><span class="cx"> </span><del>- self.assertRaises(TypeError, attributes.register_class, B2) - </del><span class="cx"> def test_diamond_c_b(self): </span><span class="cx"> mgr_factory = lambda cls: attributes.ClassManager(cls) </span><span class="cx"> </span><span class="cx"> class A(object): pass </span><span class="cx"> class B1(A): pass </span><span class="cx"> class B2(A): </span><del>- __sa_instrumentation_manager__ = mgr_factory </del><ins>+ __sa_instrumentation_manager__ = staticmethod(mgr_factory) </ins><span class="cx"> class C(object): pass </span><span class="cx"> </span><span class="cx"> attributes.register_class(C) </span><del>- self.assertRaises(TypeError, attributes.register_class, B1) </del><ins>+ self.assertRaisesMessage(TypeError, "multiple instrumentation implementations", attributes.register_class, B1) </ins><span class="cx"> </span><span class="cx"> </span><span class="cx"> class OnLoadTest(_base.ORMTest): </span></span></pre></div> <a id="sqlalchemybranchesrel_0_6testormquerypy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/rel_0_6/test/orm/query.py (6003 => 6004)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/rel_0_6/test/orm/query.py 2009-05-30 19:56:08 UTC (rev 6003) +++ sqlalchemy/branches/rel_0_6/test/orm/query.py 2009-05-30 21:03:41 UTC (rev 6004) </span><span class="lines">@@ -143,7 +143,12 @@ </span><span class="cx"> Column('data', Unicode(40))) </span><span class="cx"> try: </span><span class="cx"> metadata.create_all() </span><ins>+ # Py3K + #ustring = 'petit voix m\xe2\x80\x99a' + # Py2K </ins><span class="cx"> ustring = 'petit voix m\xe2\x80\x99a'.decode('utf-8') </span><ins>+ # end Py2K + </ins><span class="cx"> table.insert().execute(id=ustring, data=ustring) </span><span class="cx"> class LocalFoo(Base): </span><span class="cx"> pass </span><span class="lines">@@ -299,7 +304,12 @@ </span><span class="cx"> def test_arithmetic(self): </span><span class="cx"> create_session().query(User) </span><span class="cx"> for (py_op, sql_op) in ((operator.add, '+'), (operator.mul, '*'), </span><del>- (operator.sub, '-'), (operator.div, '/'), </del><ins>+ (operator.sub, '-'), + # Py3k + #(operator.truediv, '/'), + # Py2K + (operator.div, '/'), + # end Py2K </ins><span class="cx"> ): </span><span class="cx"> for (lhs, rhs, res) in ( </span><span class="cx"> (5, User.id, ':id_1 %s users.id'), </span></span></pre> </div> </div> </body> </html> |