sqlobject-cvs Mailing List for SQLObject (Page 61)
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
(9) |
Apr
(74) |
May
(29) |
Jun
(16) |
Jul
(28) |
Aug
(10) |
Sep
(57) |
Oct
(9) |
Nov
(29) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(14) |
Mar
(6) |
Apr
(3) |
May
(12) |
Jun
(34) |
Jul
(9) |
Aug
(29) |
Sep
(22) |
Oct
(2) |
Nov
(15) |
Dec
(52) |
2005 |
Jan
(47) |
Feb
(78) |
Mar
(14) |
Apr
(35) |
May
(33) |
Jun
(16) |
Jul
(26) |
Aug
(63) |
Sep
(40) |
Oct
(96) |
Nov
(96) |
Dec
(123) |
2006 |
Jan
(159) |
Feb
(144) |
Mar
(64) |
Apr
(31) |
May
(88) |
Jun
(48) |
Jul
(16) |
Aug
(64) |
Sep
(87) |
Oct
(92) |
Nov
(56) |
Dec
(76) |
2007 |
Jan
(94) |
Feb
(103) |
Mar
(126) |
Apr
(123) |
May
(85) |
Jun
(11) |
Jul
(130) |
Aug
(47) |
Sep
(65) |
Oct
(70) |
Nov
(12) |
Dec
(11) |
2008 |
Jan
(30) |
Feb
(55) |
Mar
(88) |
Apr
(20) |
May
(50) |
Jun
|
Jul
(38) |
Aug
(1) |
Sep
(9) |
Oct
(5) |
Nov
(6) |
Dec
(39) |
2009 |
Jan
(8) |
Feb
(16) |
Mar
(3) |
Apr
(33) |
May
(44) |
Jun
(1) |
Jul
(10) |
Aug
(33) |
Sep
(74) |
Oct
(22) |
Nov
|
Dec
(15) |
2010 |
Jan
(28) |
Feb
(22) |
Mar
(46) |
Apr
(29) |
May
(1) |
Jun
(1) |
Jul
(27) |
Aug
(8) |
Sep
(5) |
Oct
(33) |
Nov
(24) |
Dec
(41) |
2011 |
Jan
(4) |
Feb
(12) |
Mar
(35) |
Apr
(29) |
May
(19) |
Jun
(16) |
Jul
(32) |
Aug
(25) |
Sep
(5) |
Oct
(11) |
Nov
(21) |
Dec
(12) |
2012 |
Jan
(3) |
Feb
(4) |
Mar
(20) |
Apr
(4) |
May
(25) |
Jun
(13) |
Jul
|
Aug
|
Sep
(2) |
Oct
(25) |
Nov
(9) |
Dec
(1) |
2013 |
Jan
(6) |
Feb
(8) |
Mar
|
Apr
(10) |
May
(31) |
Jun
(7) |
Jul
(18) |
Aug
(33) |
Sep
(4) |
Oct
(16) |
Nov
|
Dec
(27) |
2014 |
Jan
(2) |
Feb
|
Mar
|
Apr
(11) |
May
(39) |
Jun
(8) |
Jul
(11) |
Aug
(4) |
Sep
|
Oct
(27) |
Nov
|
Dec
(71) |
2015 |
Jan
(17) |
Feb
(47) |
Mar
(33) |
Apr
|
May
|
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
2016 |
Jan
(4) |
Feb
(4) |
Mar
|
Apr
|
May
(12) |
Jun
(7) |
Jul
(9) |
Aug
(31) |
Sep
(8) |
Oct
(3) |
Nov
(15) |
Dec
(1) |
2017 |
Jan
(13) |
Feb
(7) |
Mar
(14) |
Apr
(8) |
May
(10) |
Jun
(4) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(8) |
Nov
(4) |
Dec
(5) |
2018 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
(1) |
Feb
(16) |
Mar
(1) |
Apr
(3) |
May
(5) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
2021 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
|
2024 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(9) |
2025 |
Jan
|
Feb
(4) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: SourceForge.net <no...@so...> - 2009-04-09 17:46:48
|
Bugs item #2432888, was opened at 2008-12-16 11:26 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2432888&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: SQLObject release (specify) >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Iwan Vosloo (iwanvosloo) >Assigned to: Oleg Broytmann (phd) Summary: splicing without a threadConnection breaks with inheritance Initial Comment: Using sqlobject 0.10.2, and a class which inherits from a sqlobject.inheritance.InheritableSQLObject, the following happens: If you do NOT use a threadConnection, but pass an explicit connection to a select, subsequent splicing on that result breaks because it insists on a threadConnection. This bug is not present in sqlobject 0.9.1. ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2009-04-09 21:46 Message: Fixed in the revisions 3839-3841 (branches 0.9, 0.10and the trunk). ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2432888&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-04-08 19:08:23
|
Bugs item #2744934, was opened at 2009-04-08 15:18 Message generated for change (Comment added) made by alejolp You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2744934&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: SQLObject from repository Status: Open Resolution: None Priority: 5 Private: No Submitted By: Alejandro Santos (alejolp) Assigned to: Nobody/Anonymous (nobody) Summary: Missing classmethod in InheritableSQLMeta Initial Comment: In the SVN Revisión: 3846 the following error is raised when the getColumns method is called: >>> SomeTable.sqlmeta.getColumns() TypeError: unbound method getColumns() must be called with sqlmeta instance as first argument (got nothing instead) The class InheritableSQLMeta lacks the getColumns and getAllColumns classmethod declararations. The attached file contains the svn diff output for the patch. ---------------------------------------------------------------------- >Comment By: Alejandro Santos (alejolp) Date: 2009-04-08 16:08 Message: Update: the sqlmeta class in main.py also misses the classmethod call for the getColumns method. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2744934&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-04-08 18:18:46
|
Bugs item #2744934, was opened at 2009-04-08 15:18 Message generated for change (Tracker Item Submitted) made by alejolp You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2744934&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: SQLObject from repository Status: Open Resolution: None Priority: 5 Private: No Submitted By: Alejandro Santos (alejolp) Assigned to: Nobody/Anonymous (nobody) Summary: Missing classmethod in InheritableSQLMeta Initial Comment: In the SVN Revisión: 3846 the following error is raised when the getColumns method is called: >>> SomeTable.sqlmeta.getColumns() TypeError: unbound method getColumns() must be called with sqlmeta instance as first argument (got nothing instead) The class InheritableSQLMeta lacks the getColumns and getAllColumns classmethod declararations. The attached file contains the svn diff output for the patch. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2744934&group_id=74338 |
From: <sub...@co...> - 2009-04-03 17:26:43
|
Author: phd Date: 2009-04-03 11:26:37 -0600 (Fri, 03 Apr 2009) New Revision: 3841 Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/inheritance/iteration.py Log: Fixed a bug in InheritableIteration - pass connection to child klass.select(). Modified: SQLObject/trunk/docs/News.txt =================================================================== --- SQLObject/trunk/docs/News.txt 2009-04-03 17:25:26 UTC (rev 3840) +++ SQLObject/trunk/docs/News.txt 2009-04-03 17:26:37 UTC (rev 3841) @@ -168,6 +168,9 @@ * Fixed a minor bug - pass name to DecimalValidator. +* Fixed a bug in InheritableIteration - pass connection to child + klass.select(). + SQLObject 0.9.9 =============== Modified: SQLObject/trunk/sqlobject/inheritance/iteration.py =================================================================== --- SQLObject/trunk/sqlobject/inheritance/iteration.py 2009-04-03 17:25:26 UTC (rev 3840) +++ SQLObject/trunk/sqlobject/inheritance/iteration.py 2009-04-03 17:26:37 UTC (rev 3841) @@ -69,10 +69,10 @@ klass = findClass(childName, registry) if len(ids) == 1: select = klass.select(klass.q.id == ids[0], - childUpdate=True) + childUpdate=True, connection=dbconn) else: select = klass.select(sqlbuilder.IN(klass.q.id, ids), - childUpdate=True) + childUpdate=True, connection=dbconn) query = dbconn.queryForSelect(select) if dbconn.debug: dbconn.printDebug(rawconn, query, 'Select children of the class %s' % childName) |
From: <sub...@co...> - 2009-04-03 17:25:37
|
Author: phd Date: 2009-04-03 11:25:26 -0600 (Fri, 03 Apr 2009) New Revision: 3840 Modified: SQLObject/branches/0.10/docs/News.txt SQLObject/branches/0.10/sqlobject/inheritance/iteration.py Log: Fixed a bug in InheritableIteration - pass connection to child klass.select(). Modified: SQLObject/branches/0.10/docs/News.txt =================================================================== --- SQLObject/branches/0.10/docs/News.txt 2009-04-03 17:18:32 UTC (rev 3839) +++ SQLObject/branches/0.10/docs/News.txt 2009-04-03 17:25:26 UTC (rev 3840) @@ -127,6 +127,9 @@ * Fixed a minor bug - pass name to DecimalValidator. +* Fixed a bug in InheritableIteration - pass connection to child + klass.select(). + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.10/sqlobject/inheritance/iteration.py =================================================================== --- SQLObject/branches/0.10/sqlobject/inheritance/iteration.py 2009-04-03 17:18:32 UTC (rev 3839) +++ SQLObject/branches/0.10/sqlobject/inheritance/iteration.py 2009-04-03 17:25:26 UTC (rev 3840) @@ -69,10 +69,10 @@ klass = findClass(childName, registry) if len(ids) == 1: select = klass.select(klass.q.id == ids[0], - childUpdate=True) + childUpdate=True, connection=dbconn) else: select = klass.select(sqlbuilder.IN(klass.q.id, ids), - childUpdate=True) + childUpdate=True, connection=dbconn) query = dbconn.queryForSelect(select) if dbconn.debug: dbconn.printDebug(rawconn, query, 'Select children of the class %s' % childName) |
From: <sub...@co...> - 2009-04-03 17:18:52
|
Author: phd Date: 2009-04-03 11:18:32 -0600 (Fri, 03 Apr 2009) New Revision: 3839 Modified: SQLObject/branches/0.9/docs/News.txt SQLObject/branches/0.9/sqlobject/inheritance/iteration.py Log: Fixed a bug in InheritableIteration - pass connection to child klass.select(). Modified: SQLObject/branches/0.9/docs/News.txt =================================================================== --- SQLObject/branches/0.9/docs/News.txt 2009-03-27 16:27:58 UTC (rev 3838) +++ SQLObject/branches/0.9/docs/News.txt 2009-04-03 17:18:32 UTC (rev 3839) @@ -21,6 +21,9 @@ * Fixed a minor bug - pass name to DecimalValidator. +* Fixed a bug in InheritableIteration - pass connection to child + klass.select(). + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.9/sqlobject/inheritance/iteration.py =================================================================== --- SQLObject/branches/0.9/sqlobject/inheritance/iteration.py 2009-03-27 16:27:58 UTC (rev 3838) +++ SQLObject/branches/0.9/sqlobject/inheritance/iteration.py 2009-04-03 17:18:32 UTC (rev 3839) @@ -69,10 +69,10 @@ klass = findClass(childName, registry) if len(ids) == 1: select = klass.select(klass.q.id == ids[0], - childUpdate=True) + childUpdate=True, connection=dbconn) else: select = klass.select(sqlbuilder.IN(klass.q.id, ids), - childUpdate=True) + childUpdate=True, connection=dbconn) query = dbconn.queryForSelect(select) if dbconn.debug: dbconn.printDebug(rawconn, query, 'Select children of the class %s' % childName) |
From: <sub...@co...> - 2009-03-27 16:28:11
|
Author: phd Date: 2009-03-27 10:27:58 -0600 (Fri, 27 Mar 2009) New Revision: 3838 Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/col.py Log: Merged a bugfix from revision 3836 from branch 0.9 for a minor bug - pass name to DecimalValidator. Modified: SQLObject/trunk/docs/News.txt =================================================================== --- SQLObject/trunk/docs/News.txt 2009-03-27 16:26:49 UTC (rev 3837) +++ SQLObject/trunk/docs/News.txt 2009-03-27 16:27:58 UTC (rev 3838) @@ -166,6 +166,8 @@ * Setup requires FormEncode version 1.1.1+. +* Fixed a minor bug - pass name to DecimalValidator. + SQLObject 0.9.9 =============== Modified: SQLObject/trunk/sqlobject/col.py =================================================================== --- SQLObject/trunk/sqlobject/col.py 2009-03-27 16:26:49 UTC (rev 3837) +++ SQLObject/trunk/sqlobject/col.py 2009-03-27 16:27:58 UTC (rev 3838) @@ -940,8 +940,8 @@ return [consts.isString, consts.InList(self.enumValues)] def createValidators(self): - return [EnumValidator(name = self.name, enumValues = self.enumValues, - notNone = self.notNone)] + \ + return [EnumValidator(name=self.name, enumValues=self.enumValues, + notNone=self.notNone)] + \ super(SOEnumCol, self).createValidators() def _mysqlType(self): @@ -1017,7 +1017,7 @@ return [consts.isString, consts.InList(self.setValues)] def createValidators(self): - return [SetValidator(name = self.name, setValues = self.setValues)] + \ + return [SetValidator(name=self.name, setValues=self.setValues)] + \ super(SOSetCol, self).createValidators() def _mysqlType(self): @@ -1333,7 +1333,7 @@ return 'DECIMAL(%i, %i)' % (self.size, self.precision) def createValidators(self): - return [DecimalValidator()] + \ + return [DecimalValidator(name=self.name)] + \ super(SODecimalCol, self).createValidators() class DecimalCol(Col): |
From: <sub...@co...> - 2009-03-27 16:27:12
|
Author: phd Date: 2009-03-27 10:26:49 -0600 (Fri, 27 Mar 2009) New Revision: 3837 Modified: SQLObject/branches/0.10/docs/News.txt SQLObject/branches/0.10/sqlobject/col.py Log: Merged a bugfix from revision 3836 from branch 0.9 for a minor bug - pass name to DecimalValidator. Modified: SQLObject/branches/0.10/docs/News.txt =================================================================== --- SQLObject/branches/0.10/docs/News.txt 2009-03-27 16:23:58 UTC (rev 3836) +++ SQLObject/branches/0.10/docs/News.txt 2009-03-27 16:26:49 UTC (rev 3837) @@ -125,6 +125,8 @@ * Setup requires FormEncode version 1.1.1+. +* Fixed a minor bug - pass name to DecimalValidator. + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.10/sqlobject/col.py =================================================================== --- SQLObject/branches/0.10/sqlobject/col.py 2009-03-27 16:23:58 UTC (rev 3836) +++ SQLObject/branches/0.10/sqlobject/col.py 2009-03-27 16:26:49 UTC (rev 3837) @@ -940,8 +940,8 @@ return [consts.isString, consts.InList(self.enumValues)] def createValidators(self): - return [EnumValidator(name = self.name, enumValues = self.enumValues, - notNone = self.notNone)] + \ + return [EnumValidator(name=self.name, enumValues=self.enumValues, + notNone=self.notNone)] + \ super(SOEnumCol, self).createValidators() def _mysqlType(self): @@ -1017,7 +1017,7 @@ return [consts.isString, consts.InList(self.setValues)] def createValidators(self): - return [SetValidator(name = self.name, setValues = self.setValues)] + \ + return [SetValidator(name=self.name, setValues=self.setValues)] + \ super(SOSetCol, self).createValidators() def _mysqlType(self): @@ -1336,7 +1336,7 @@ return 'DECIMAL(%i, %i)' % (self.size, self.precision) def createValidators(self): - return [DecimalValidator()] + \ + return [DecimalValidator(name=self.name)] + \ super(SODecimalCol, self).createValidators() class DecimalCol(Col): |
From: <sub...@co...> - 2009-03-27 16:24:28
|
Author: phd Date: 2009-03-27 10:23:58 -0600 (Fri, 27 Mar 2009) New Revision: 3836 Modified: SQLObject/branches/0.9/docs/News.txt SQLObject/branches/0.9/sqlobject/col.py Log: Fixed a minor bug - pass name to DecimalValidator. Modified: SQLObject/branches/0.9/docs/News.txt =================================================================== --- SQLObject/branches/0.9/docs/News.txt 2009-03-26 20:10:18 UTC (rev 3835) +++ SQLObject/branches/0.9/docs/News.txt 2009-03-27 16:23:58 UTC (rev 3836) @@ -19,6 +19,8 @@ * Setup requires FormEncode version 1.1.1+. +* Fixed a minor bug - pass name to DecimalValidator. + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.9/sqlobject/col.py =================================================================== --- SQLObject/branches/0.9/sqlobject/col.py 2009-03-26 20:10:18 UTC (rev 3835) +++ SQLObject/branches/0.9/sqlobject/col.py 2009-03-27 16:23:58 UTC (rev 3836) @@ -955,8 +955,8 @@ return [consts.isString, consts.InList(self.enumValues)] def createValidators(self): - return [EnumValidator(name = self.name, enumValues = self.enumValues, - notNone = self.notNone)] + \ + return [EnumValidator(name=self.name, enumValues=self.enumValues, + notNone=self.notNone)] + \ super(SOEnumCol, self).createValidators() def _mysqlType(self): @@ -1032,7 +1032,7 @@ return [consts.isString, consts.InList(self.setValues)] def createValidators(self): - return [SetValidator(name = self.name, setValues = self.setValues)] + \ + return [SetValidator(name=self.name, setValues=self.setValues)] + \ super(SOSetCol, self).createValidators() def _mysqlType(self): @@ -1354,7 +1354,7 @@ return 'DECIMAL(%i, %i)' % (self.size, self.precision) def createValidators(self): - return [DecimalValidator()] + \ + return [DecimalValidator(name=self.name)] + \ super(SODecimalCol, self).createValidators() class DecimalCol(Col): |
From: <sub...@co...> - 2009-02-21 18:38:30
|
Author: phd Date: 2009-02-21 11:38:17 -0700 (Sat, 21 Feb 2009) New Revision: 3792 Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/events.py SQLObject/trunk/sqlobject/main.py SQLObject/trunk/sqlobject/tests/test_events.py Log: A patch by Gabriel <ga...@op...>: added RowDestroyedSignal and RowUpdatedSignal . Modified: SQLObject/trunk/docs/News.txt =================================================================== --- SQLObject/trunk/docs/News.txt 2009-02-21 18:14:44 UTC (rev 3791) +++ SQLObject/trunk/docs/News.txt 2009-02-21 18:38:17 UTC (rev 3792) @@ -27,6 +27,8 @@ * Added some support for schemas in PostgreSQL. +* RowDestroyedSignal and RowUpdatedSignal were added. + Minor features -------------- Modified: SQLObject/trunk/sqlobject/events.py =================================================================== --- SQLObject/trunk/sqlobject/events.py 2009-02-21 18:14:44 UTC (rev 3791) +++ SQLObject/trunk/sqlobject/events.py 2009-02-21 18:38:17 UTC (rev 3792) @@ -115,6 +115,17 @@ row can be deleted without first fetching it? """ +class RowDestroyedSignal(Signal): + """ + Called after an instance is deleted. Sender is the instance's + class. Arguments are ``(instance)``. + + This is called before the post_funcs of RowDestroySignal + + Note: this is not called when an instance is destroyed through + garbage collection. + """ + class RowUpdateSignal(Signal): """ Called when an instance is updated through a call to ``.set()`` @@ -124,6 +135,14 @@ current values, simply look at ``instance``. """ +class RowUpdatedSignal(Signal): + """ + Called when an instance is updated through a call to ``.set()`` + (or a column attribute assignment). The arguments are + ``(instance)``. This is run *after* the instance is updated; + Works better with lazyUpdate = True + """ + class AddColumnSignal(Signal): """ Called when a column is added to a class, with arguments ``(cls, Modified: SQLObject/trunk/sqlobject/main.py =================================================================== --- SQLObject/trunk/sqlobject/main.py 2009-02-21 18:14:44 UTC (rev 3791) +++ SQLObject/trunk/sqlobject/main.py 2009-02-21 18:38:17 UTC (rev 3792) @@ -991,6 +991,11 @@ finally: self._SO_writeLock.release() + post_funcs = [] + self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) + for func in post_funcs: + func() + def expire(self): if self.sqlmeta.expired: return @@ -1043,6 +1048,11 @@ if self.sqlmeta.cacheValues: setattr(self, instanceName(name), value) + post_funcs = [] + self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) + for func in post_funcs: + func() + def set(self, _suppress_set_sig=False, **kw): if not self.sqlmeta._creating and not getattr(self.sqlmeta, "row_update_sig_suppress", False) and not _suppress_set_sig: self.sqlmeta.send(events.RowUpdateSignal, self, kw) @@ -1130,6 +1140,11 @@ finally: self._SO_writeLock.release() + post_funcs = [] + self.sqlmeta.send(events.RowUpdatedSignal, self, post_funcs) + for func in post_funcs: + func() + def _SO_selectInit(self, row): for col, colValue in zip(self.sqlmeta.columnList, row): if col.to_python: @@ -1566,6 +1581,11 @@ for func in post_funcs: func() + post_funcs = [] + self.sqlmeta.send(events.RowDestroyedSignal, self, post_funcs) + for func in post_funcs: + func() + def delete(cls, id, connection=None): obj = cls.get(id, connection=connection) obj.destroySelf() Modified: SQLObject/trunk/sqlobject/tests/test_events.py =================================================================== --- SQLObject/trunk/sqlobject/tests/test_events.py 2009-02-21 18:14:44 UTC (rev 3791) +++ SQLObject/trunk/sqlobject/tests/test_events.py 2009-02-21 18:38:17 UTC (rev 3792) @@ -50,6 +50,14 @@ f.destroySelf() assert watcher.log == [(f, [])] +def test_row_destroyed(): + setupClass(EventTester) + watcher = make_listen(events.RowDestroyedSignal) + f = EventTester(name='foo') + assert not watcher.log + f.destroySelf() + assert watcher.log == [(f, [])] + def test_row_update(): setupClass(EventTester) watcher = make_listen(events.RowUpdateSignal) @@ -61,6 +69,15 @@ (f, {'name': 'bar2'}), (f, {'name': 'bar3'})] +def test_row_updated(): + setupClass(EventTester) + watcher = make_listen(events.RowUpdatedSignal) + f = EventTester(name='bar') + assert not watcher.log + f.name = 'bar2' + f.set(name='bar3') + assert watcher.log == [(f, []), (f, [])] + def test_add_column(): setupClass(EventTester) watcher = make_listen(events.AddColumnSignal) |
From: <sub...@co...> - 2009-02-21 18:14:52
|
Author: phd Date: 2009-02-21 11:14:44 -0700 (Sat, 21 Feb 2009) New Revision: 3791 Modified: SQLObject/trunk/sqlobject/tests/test_events.py Log: Merged revision 3789 from the branch 0.9: minor refactoring. Modified: SQLObject/trunk/sqlobject/tests/test_events.py =================================================================== --- SQLObject/trunk/sqlobject/tests/test_events.py 2009-02-21 18:13:38 UTC (rev 3790) +++ SQLObject/trunk/sqlobject/tests/test_events.py 2009-02-21 18:14:44 UTC (rev 3791) @@ -75,28 +75,24 @@ assert watcher.log[1] == expect -class A(InheritableSQLObject): +class InheritableEventTestA(InheritableSQLObject): a = IntCol() -class B(A): +class InheritableEventTestB(InheritableEventTestA): b = IntCol() -class C(B): +class InheritableEventTestC(InheritableEventTestB): c = IntCol() +def _query(instance): + InheritableEventTestA.get(instance.id) +def _signal(kwargs, postfuncs): + postfuncs.append(_query) + def test_inheritance_row_created(): - setupClass(A) - setupClass(B) - setupClass(C) + setupClass([InheritableEventTestA, InheritableEventTestB, InheritableEventTestC]) - def test_query(instance): - id = instance.id - A.get(id) + events.listen(_signal, InheritableEventTestA, events.RowCreatedSignal) - def signal(kwargs, postfuncs): - postfuncs.append(test_query) - - events.listen(signal, A, events.RowCreatedSignal) - - C(a=1, b=2, c=3) + InheritableEventTestC(a=1, b=2, c=3) |
From: <sub...@co...> - 2009-02-21 18:13:47
|
Author: phd Date: 2009-02-21 11:13:38 -0700 (Sat, 21 Feb 2009) New Revision: 3790 Modified: SQLObject/branches/0.10/sqlobject/tests/test_events.py Log: Merged revision 3789 from the branch 0.9: minor refactoring. Modified: SQLObject/branches/0.10/sqlobject/tests/test_events.py =================================================================== --- SQLObject/branches/0.10/sqlobject/tests/test_events.py 2009-02-21 18:12:01 UTC (rev 3789) +++ SQLObject/branches/0.10/sqlobject/tests/test_events.py 2009-02-21 18:13:38 UTC (rev 3790) @@ -75,28 +75,24 @@ assert watcher.log[1] == expect -class A(InheritableSQLObject): +class InheritableEventTestA(InheritableSQLObject): a = IntCol() -class B(A): +class InheritableEventTestB(InheritableEventTestA): b = IntCol() -class C(B): +class InheritableEventTestC(InheritableEventTestB): c = IntCol() +def _query(instance): + InheritableEventTestA.get(instance.id) +def _signal(kwargs, postfuncs): + postfuncs.append(_query) + def test_inheritance_row_created(): - setupClass(A) - setupClass(B) - setupClass(C) + setupClass([InheritableEventTestA, InheritableEventTestB, InheritableEventTestC]) - def test_query(instance): - id = instance.id - A.get(id) + events.listen(_signal, InheritableEventTestA, events.RowCreatedSignal) - def signal(kwargs, postfuncs): - postfuncs.append(test_query) - - events.listen(signal, A, events.RowCreatedSignal) - - C(a=1, b=2, c=3) + InheritableEventTestC(a=1, b=2, c=3) |
From: <sub...@co...> - 2009-02-21 18:12:08
|
Author: phd Date: 2009-02-21 11:12:01 -0700 (Sat, 21 Feb 2009) New Revision: 3789 Modified: SQLObject/branches/0.9/sqlobject/tests/test_events.py Log: Minor refactoring. Modified: SQLObject/branches/0.9/sqlobject/tests/test_events.py =================================================================== --- SQLObject/branches/0.9/sqlobject/tests/test_events.py 2009-02-19 19:13:24 UTC (rev 3788) +++ SQLObject/branches/0.9/sqlobject/tests/test_events.py 2009-02-21 18:12:01 UTC (rev 3789) @@ -75,28 +75,24 @@ assert watcher.log[1] == expect -class A(InheritableSQLObject): +class InheritableEventTestA(InheritableSQLObject): a = IntCol() -class B(A): +class InheritableEventTestB(InheritableEventTestA): b = IntCol() -class C(B): +class InheritableEventTestC(InheritableEventTestB): c = IntCol() +def _query(instance): + InheritableEventTestA.get(instance.id) +def _signal(kwargs, postfuncs): + postfuncs.append(_query) + def test_inheritance_row_created(): - setupClass(A) - setupClass(B) - setupClass(C) + setupClass([InheritableEventTestA, InheritableEventTestB, InheritableEventTestC]) - def test_query(instance): - id = instance.id - A.get(id) + events.listen(_signal, InheritableEventTestA, events.RowCreatedSignal) - def signal(kwargs, postfuncs): - postfuncs.append(test_query) - - events.listen(signal, A, events.RowCreatedSignal) - - C(a=1, b=2, c=3) + InheritableEventTestC(a=1, b=2, c=3) |
From: SourceForge.net <no...@so...> - 2009-02-10 17:14:18
|
Bugs item #2585315, was opened at 2009-02-10 17:38 Message generated for change (Settings changed) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585315&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: None >Status: Deleted >Resolution: Invalid Priority: 5 Private: No Submitted By: rkd77 (rkd77) Assigned to: Nobody/Anonymous (nobody) Summary: Exceptions and Python-2.6.1 Initial Comment: Hi, I use sqlobject-0.10.4, MySQL-5.1.31, Python-2.6.1. The attached code fails on Exception. Could you reproduce it? What I am doing wrong? ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2009-02-10 20:14 Message: This is a bug tracker - a place to post bug reports and patches. It is not a forum to ask private consultations from developers. If you want to discuss things - please subscribe to the mailing list at http://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss and post questins to the list. To ask questions about exceptions please also provide the stack trace. Thank you. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585315&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-02-10 17:00:34
|
Bugs item #2585578, was opened at 2009-02-10 19:06 Message generated for change (Settings changed) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585578&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: None >Status: Deleted >Resolution: Duplicate Priority: 5 Private: No Submitted By: rkd77 (rkd77) Assigned to: Nobody/Anonymous (nobody) Summary: Exceptions and Python-2.6.1 Initial Comment: Hi, I use sqlobject-0.10.4, MySQL-5.1.31, Python-2.6.1. The attached code fails on Exception. Could you reproduce it? What I am doing wrong? ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2009-02-10 20:00 Message: This is a dup of the "bug" 2585315. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585578&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-02-10 16:06:21
|
Bugs item #2585578, was opened at 2009-02-10 17:06 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585578&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: rkd77 (rkd77) Assigned to: Nobody/Anonymous (nobody) Summary: Exceptions and Python-2.6.1 Initial Comment: Hi, I use sqlobject-0.10.4, MySQL-5.1.31, Python-2.6.1. The attached code fails on Exception. Could you reproduce it? What I am doing wrong? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585578&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-02-10 14:38:57
|
Bugs item #2585315, was opened at 2009-02-10 15:38 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585315&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: rkd77 (rkd77) Assigned to: Nobody/Anonymous (nobody) Summary: Exceptions and Python-2.6.1 Initial Comment: Hi, I use sqlobject-0.10.4, MySQL-5.1.31, Python-2.6.1. The attached code fails on Exception. Could you reproduce it? What I am doing wrong? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2585315&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-02-07 14:12:12
|
Bugs item #2575809, was opened at 2009-02-07 09:15 Message generated for change (Settings changed) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2575809&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: SQLObject from repository >Status: Closed >Resolution: Wont Fix Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: escape reserved words with backtics Initial Comment: In order to create table and column names using SQL reserved words, as "read", "default", "select", "when" and so on, those names should be enclosed in backticks every time a query is generated: class Issue(SQLObject): read = BoolCol() Issue.CreateTableSQL() >>>"CREATE TABLE issue (id INT PRIMARY KEY AUTO_INCREMENT, read BOOL)" Issue.CreateTable() >>>ProgrammingError: You have an error in your SQL syntax .... the correct SQL output should be >>>"CREATE TABLE `issue` (`id` INT PRIMARY KEY AUTO_INCREMENT, `read` BOOL)" ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2009-02-07 17:11 Message: This is a duplicate of https://sourceforge.net/tracker2/?func=detail&aid=1539927&group_id=74338&atid=540672 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2575809&group_id=74338 |
From: SourceForge.net <no...@so...> - 2009-02-07 06:16:06
|
Bugs item #2575809, was opened at 2009-02-07 06:15 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2575809&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MySQL Group: SQLObject from repository Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: escape reserved words with backtics Initial Comment: In order to create table and column names using SQL reserved words, as "read", "default", "select", "when" and so on, those names should be enclosed in backticks every time a query is generated: class Issue(SQLObject): read = BoolCol() Issue.CreateTableSQL() >>>"CREATE TABLE issue (id INT PRIMARY KEY AUTO_INCREMENT, read BOOL)" Issue.CreateTable() >>>ProgrammingError: You have an error in your SQL syntax .... the correct SQL output should be >>>"CREATE TABLE `issue` (`id` INT PRIMARY KEY AUTO_INCREMENT, `read` BOOL)" ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2575809&group_id=74338 |
From: <sub...@co...> - 2009-02-06 13:56:32
|
Author: phd Date: 2009-02-06 06:56:26 -0700 (Fri, 06 Feb 2009) New Revision: 3783 Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Log: Merged revision 3781 from the branch 0.9: fixed a minor misspelling. Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py =================================================================== --- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2009-02-06 13:53:59 UTC (rev 3782) +++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2009-02-06 13:56:26 UTC (rev 3783) @@ -306,7 +306,7 @@ colData = self.queryOne("SELECT sql FROM sqlite_master WHERE type='table' AND name='%s'" % tableName) if not colData: - raise ValueError('The table %s ws not found in the database. Load failed.' % tableName) + raise ValueError('The table %s was not found in the database. Load failed.' % tableName) colData = colData[0].split('(', 1)[1].strip()[:-2] while colData.find('(') > -1: start = colData.find('(') |
From: <sub...@co...> - 2009-02-06 13:54:03
|
Author: phd Date: 2009-02-06 06:53:59 -0700 (Fri, 06 Feb 2009) New Revision: 3782 Modified: SQLObject/branches/0.10/sqlobject/sqlite/sqliteconnection.py Log: Merged revision 3781 from the branch 0.9: fixed a minor misspelling. Modified: SQLObject/branches/0.10/sqlobject/sqlite/sqliteconnection.py =================================================================== --- SQLObject/branches/0.10/sqlobject/sqlite/sqliteconnection.py 2009-02-06 13:51:38 UTC (rev 3781) +++ SQLObject/branches/0.10/sqlobject/sqlite/sqliteconnection.py 2009-02-06 13:53:59 UTC (rev 3782) @@ -305,7 +305,7 @@ colData = self.queryOne("SELECT sql FROM sqlite_master WHERE type='table' AND name='%s'" % tableName) if not colData: - raise ValueError('The table %s ws not found in the database. Load failed.' % tableName) + raise ValueError('The table %s was not found in the database. Load failed.' % tableName) colData = colData[0].split('(', 1)[1].strip()[:-2] while colData.find('(') > -1: start = colData.find('(') |
From: <sub...@co...> - 2009-02-06 13:51:42
|
Author: phd Date: 2009-02-06 06:51:38 -0700 (Fri, 06 Feb 2009) New Revision: 3781 Modified: SQLObject/branches/0.9/sqlobject/sqlite/sqliteconnection.py Log: Fixed a minor misspelling. Modified: SQLObject/branches/0.9/sqlobject/sqlite/sqliteconnection.py =================================================================== --- SQLObject/branches/0.9/sqlobject/sqlite/sqliteconnection.py 2009-02-02 22:39:12 UTC (rev 3780) +++ SQLObject/branches/0.9/sqlobject/sqlite/sqliteconnection.py 2009-02-06 13:51:38 UTC (rev 3781) @@ -305,7 +305,7 @@ colData = self.queryOne("SELECT sql FROM sqlite_master WHERE type='table' AND name='%s'" % tableName) if not colData: - raise ValueError('The table %s ws not found in the database. Load failed.' % tableName) + raise ValueError('The table %s was not found in the database. Load failed.' % tableName) colData = colData[0].split('(', 1)[1].strip()[:-2] while colData.find('(') > -1: start = colData.find('(') |
From: <sub...@co...> - 2009-02-02 22:39:17
|
Author: phd Date: 2009-02-02 15:39:12 -0700 (Mon, 02 Feb 2009) New Revision: 3780 Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/setup.py SQLObject/trunk/sqlobject/tests/test_validation.py Log: Merged revision 3778 from the branch 0.9: require FormEncode version 1.1.1+. Modified: SQLObject/trunk/docs/News.txt =================================================================== --- SQLObject/trunk/docs/News.txt 2009-02-02 22:22:16 UTC (rev 3779) +++ SQLObject/trunk/docs/News.txt 2009-02-02 22:39:12 UTC (rev 3780) @@ -162,6 +162,8 @@ - MySQLdb = 1.2.1: only unicode - MySQLdb > 1.2.1: both ascii and unicode +* Setup requires FormEncode version 1.1.1+. + SQLObject 0.9.9 =============== Modified: SQLObject/trunk/setup.py =================================================================== --- SQLObject/trunk/setup.py 2009-02-02 22:22:16 UTC (rev 3779) +++ SQLObject/trunk/setup.py 2009-02-02 22:39:12 UTC (rev 3780) @@ -53,7 +53,7 @@ license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], - install_requires=["FormEncode>=0.2.2"], + install_requires=["FormEncode>=1.1.1"], extras_require={ 'mysql': ['MySQLdb'], 'postgresql': ['psycopg'], # or pgdb from PyGreSQL Modified: SQLObject/trunk/sqlobject/tests/test_validation.py =================================================================== --- SQLObject/trunk/sqlobject/tests/test_validation.py 2009-02-02 22:22:16 UTC (rev 3779) +++ SQLObject/trunk/sqlobject/tests/test_validation.py 2009-02-02 22:39:12 UTC (rev 3780) @@ -12,6 +12,7 @@ name2 = StringCol(validator=validators.ConfirmType(type=str), default='y') name3 = IntCol(validator=validators.Wrapper(fromPython=int), default=100) name4 = FloatCol(default=2.718) + name5 = PickleCol(default=None) class TestValidation: @@ -42,3 +43,7 @@ assert t.name3 == 1 t.name3 = 0 assert t.name3 == 0 + + def test_emptyValue(self): + t = SOValidation(name5={}) + assert t.name5 == {} |
From: <sub...@co...> - 2009-02-02 22:26:11
|
Author: phd Date: 2009-02-02 15:22:16 -0700 (Mon, 02 Feb 2009) New Revision: 3779 Modified: SQLObject/branches/0.10/docs/News.txt SQLObject/branches/0.10/setup.py SQLObject/branches/0.10/sqlobject/tests/test_validation.py Log: Merged revision 3778 from the branch 0.9: require FormEncode version 1.1.1+. Modified: SQLObject/branches/0.10/docs/News.txt =================================================================== --- SQLObject/branches/0.10/docs/News.txt 2009-02-02 22:10:14 UTC (rev 3778) +++ SQLObject/branches/0.10/docs/News.txt 2009-02-02 22:22:16 UTC (rev 3779) @@ -123,6 +123,8 @@ - MySQLdb = 1.2.1: only unicode - MySQLdb > 1.2.1: both ascii and unicode +* Setup requires FormEncode version 1.1.1+. + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.10/setup.py =================================================================== --- SQLObject/branches/0.10/setup.py 2009-02-02 22:10:14 UTC (rev 3778) +++ SQLObject/branches/0.10/setup.py 2009-02-02 22:22:16 UTC (rev 3779) @@ -53,7 +53,7 @@ license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], - install_requires=["FormEncode>=0.2.2"], + install_requires=["FormEncode>=1.1.1"], extras_require={ 'mysql': ['MySQLdb'], 'postgresql': ['psycopg'], # or pgdb from PyGreSQL Modified: SQLObject/branches/0.10/sqlobject/tests/test_validation.py =================================================================== --- SQLObject/branches/0.10/sqlobject/tests/test_validation.py 2009-02-02 22:10:14 UTC (rev 3778) +++ SQLObject/branches/0.10/sqlobject/tests/test_validation.py 2009-02-02 22:22:16 UTC (rev 3779) @@ -12,6 +12,7 @@ name2 = StringCol(validator=validators.ConfirmType(type=str), default='y') name3 = IntCol(validator=validators.Wrapper(fromPython=int), default=100) name4 = FloatCol(default=2.718) + name5 = PickleCol(default=None) class TestValidation: @@ -42,3 +43,7 @@ assert t.name3 == 1 t.name3 = 0 assert t.name3 == 0 + + def test_emptyValue(self): + t = SOValidation(name5={}) + assert t.name5 == {} |
From: <sub...@co...> - 2009-02-02 22:26:07
|
Author: phd Date: 2009-02-02 15:10:14 -0700 (Mon, 02 Feb 2009) New Revision: 3778 Modified: SQLObject/branches/0.9/docs/News.txt SQLObject/branches/0.9/setup.py SQLObject/branches/0.9/sqlobject/tests/test_validation.py Log: Require FormEncode version 1.1.1+. Modified: SQLObject/branches/0.9/docs/News.txt =================================================================== --- SQLObject/branches/0.9/docs/News.txt 2009-01-30 01:48:16 UTC (rev 3777) +++ SQLObject/branches/0.9/docs/News.txt 2009-02-02 22:10:14 UTC (rev 3778) @@ -17,6 +17,8 @@ - MySQLdb = 1.2.1: only unicode - MySQLdb > 1.2.1: both ascii and unicode +* Setup requires FormEncode version 1.1.1+. + SQLObject 0.9.9 =============== Modified: SQLObject/branches/0.9/setup.py =================================================================== --- SQLObject/branches/0.9/setup.py 2009-01-30 01:48:16 UTC (rev 3777) +++ SQLObject/branches/0.9/setup.py 2009-02-02 22:10:14 UTC (rev 3778) @@ -60,7 +60,7 @@ license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin"], - install_requires=["FormEncode>=0.2.2"], + install_requires=["FormEncode>=1.1.1"], extras_require={ 'mysql': ['MySQLdb'], 'postgresql': ['psycopg'], # or pgdb from PyGreSQL Modified: SQLObject/branches/0.9/sqlobject/tests/test_validation.py =================================================================== --- SQLObject/branches/0.9/sqlobject/tests/test_validation.py 2009-01-30 01:48:16 UTC (rev 3777) +++ SQLObject/branches/0.9/sqlobject/tests/test_validation.py 2009-02-02 22:10:14 UTC (rev 3778) @@ -12,6 +12,7 @@ name2 = StringCol(validator=validators.ConfirmType(type=str), default='y') name3 = IntCol(validator=validators.Wrapper(fromPython=int), default=100) name4 = FloatCol(default=2.718) + name5 = PickleCol(default=None) class TestValidation: @@ -42,3 +43,7 @@ assert t.name3 == 1 t.name3 = 0 assert t.name3 == 0 + + def test_emptyValue(self): + t = SOValidation(name5={}) + assert t.name5 == {} |