New Features and Bug Fixes since v0.2, preview 1 |
New Features and Bug Fixes since v0.2, preview 1 |
|
|
* Added 'SEF.bindToParent()' and 'SEF.bindToNames()' specifiers to allow |
* SEF.DynamicBinding is now SEF.AutoCreated, and all AutoCreatable |
more flexible component parameter bindings. |
classes like SEF.App and SEF.Service must now have an '__init__' method |
|
that accepts their SEF parent component. This lets such objects have |
|
access to the SEF hierarchy during initialization. (Note that this |
|
means any '__init__' methods of such classes must be revised to take |
|
this into consideration. See TW.Database.DataModel.Database for an |
|
example of such a revision.) |
|
|
|
Also, I dropped the unused SEF.StaticBinding class. |
|
|
|
* 'setupModule()' and 'adviseModule()' will now issue warnings for most |
|
questionable code structures and variable redefinitions that might not |
|
work the way you'd expect or intend under module inheritance. |
|
|
|
* Added tests and documentation for 'adviseModule()' API |
|
|
|
* Added a 'test' command to 'setup.py' that installs and then tests all of |
|
TransWarp. (It saves me time running the unit tests while I'm writing |
|
new code.) |
|
|
|
* Added warnings for detectable module-level modifications of mutables |
|
in modules which are used for inheritances or advice. Added an API |
|
function, 'configure(object, attr1=val, attr2=val,...)' to safely |
|
set attributes of mutables that might have been defined in a derived |
|
module. |
|
|
|
* Removed 'Meta.ClassInit' and '__class_init__' support. Use metaclass |
|
'__init__' methods instead; see 'TW.Database.DataModel.RecordTypeMC' |
|
for one example of the conversion. |
|
|
|
* Added 'SEF.bindToParent()', 'SEF.bindToNames()', and 'SEF.bindToSelf()' |
|
descriptors, to allow more flexible component parameter bindings. |
|
|
|
* Improved key integrity checks in DataModel: Record objects now disallow |
|
modification of key fields unless the old value is None, and cache |
|
collisions between records with supposedly unique keys will result in an |
|
AssertionError. |
|
|
|
* Added 'SET' method (ala WarpCORE's set_X procedures) to |
|
TW.Utils.MiniTable. |
|
|
|
* Added more docs to TW.Utils.Code, and removed 'iterFromEnd()' method |
|
from code objects. Added experimental 'nextSplit' index to codeIndex |
|
objects that does top-level block analysis to allow splitting a code |
|
object into smaller routines. |
|
|
|
* Fixed the "reference to rebound class within another class" problem |
|
with module inheritance, as reported by (who else?) Ulrich Eck. :) |
|
|
|
* Rewrote SEF "features" to use 'element.verbFeature()' style methods |
|
instead of 'element.feature.verb()' style. UML/XMI/Querying code |
|
still uses the old-style SEF framework, which is still available from |
|
'TW.SEF.FeatureObjects'. See the docs of 'TW.SEF.Basic.FeatureMC' |
|
and 'TW.API.Meta.MethodExporter' for details on how new-style methods |
|
work. |
|
|
|
* Fixed misc. bugs in 'DataModel', 'LDAPModel', 'Connections', and |
|
'TW.Caching' found by Ulrich Eck. Thanks Ulrich! Also, added a fix |
|
to ensure that non-existent records are invalidated by |
|
'RecordType.getItem()'. |
|
|
|
* Added basic Specialist implementation to 'TW.SEF.Basic', and reverted |
|
naming from 'TypeService' and 'ITypeService' to 'Specialist' and |
|
'ISpecialist'. Updated 'TW.SEF.Interfaces' to reflect "self"-less |
|
convention for documenting methods. |
|
|
|
* Dropped obsolete 'TW.Database.Records' module. |
|
|
* Fixed the base class "rebind by name" bugs in module inheritance, and |
* Fixed the base class "rebind by name" bugs in module inheritance, and |
updated the documentation to more clearly reflect what it is that |
updated the documentation to more clearly reflect what it is that |