[Subversion] / PEAK / CHANGES.txt  

Diff of /PEAK/CHANGES.txt

Parent Directory | Revision Log

version 374, Sun Mar 31 20:27:05 2002 UTC version 1078, Sat May 3 22:11:56 2003 UTC
Line 1 
Line 1 
 New Features and Bug Fixes since v0.2, preview 1  Fixes and Enhancements since Version 0.5 alpha 1
   
  * Added warnings for detectable module-level modifications of mutables   - Removed 'LOG_XYZ' convenience functions from 'peak.api', and refactored
    in modules which are used for inheritances or advice.  Added an API     'peak.running.logs' to use a PEP 282-like interface, 'running.ILogger'.
    function, 'configure(object, attr1=val, attr2=val,...)' to safely     Under the new scheme, messages must be sent to a specific entry point
    set attributes of mutables that might have been defined in a derived     (e.g. 'self.logger.warning("foo")').  Components can bind an attribute
    module.     directly to a logger object, or via configuration properties or utilities.
      PEAK components that do logging all define a 'logger' attribute, bound
  * Removed 'Meta.ClassInit' and '__class_init__' support.  Use metaclass     to a configuration property in the 'peak.logs' property namespace.  By
    '__init__' methods instead; see 'TW.Database.DataModel.RecordTypeMC'     a default in 'peak.ini', 'peak.logs.*' is configured to output messages
    for one example of the conversion.     of 'WARNING' priority or higher to 'sys.stderr'.
   
  * Added 'SEF.bindToParent()', 'SEF.bindToNames()', and 'SEF.bindToSelf()'     For compatibility with the PEP 282 logging package, a 'logging.logger:'
    descriptors, to allow more flexible component parameter bindings.     URL scheme has been added; looking up the URL '"logging.logger:foo.bar"'
      is equivalent to 'logging.getLogger("foo.bar")', unless the 'logging'
  * Improved key integrity checks in DataModel: Record objects now disallow     package is not available, in which case the configuration property
    modification of key fields unless the old value is None, and cache     'peak.logs.foo.bar' will be looked up in the target context of the
    collisions between records with supposedly unique keys will result in an     lookup.  Optionally, you can configure the 'logging.logger' URL scheme so
    AssertionError.     that it only uses PEAK loggers, and never uses the PEP 282 loggers.
   
  * Added 'SET' method (ala WarpCORE's set_X procedures) to   - Added 'binding.metamethod()' wrapper for metaclass methods that might
    TW.Utils.MiniTable.     not be accessible from their instances if the instances (classes) also
      defined the method for *their* instances.  You must now use this wrapper
  * Added more docs to TW.Utils.Code, and removed 'iterFromEnd()' method     on any such metaclass-defined methods, as PEAK no longer works around
    from code objects.  Added experimental 'nextSplit' index to codeIndex     this via the 'x.__class__.foo(x,...)' trick that was used previously.
    objects that does top-level block analysis to allow splitting a code     In particular, if you have metaclass definitions of 'getParentComponent',
    object into smaller routines.     '_getConfigData', 'getComponentName', or 'notifyUponAssembly', you need
      to wrap them with 'binding.metamethod' now.
  * Fixed the "reference to rebound class within another class" problem  
    with module inheritance, as reported by (who else?) Ulrich Eck.  :)   - Fixed 'mof2py' generator script not working
   
  * Rewrote SEF "features" to use 'element.verbFeature()' style methods   - Fixed model.Element not getting parent component set when passed as a
    instead of 'element.feature.verb()' style.  UML/XMI/Querying code     constructor argument.
    still uses the old-style SEF framework, which is still available from  
    'TW.SEF.FeatureObjects'.  See the docs of 'TW.SEF.Basic.FeatureMC'   - Fixed property/utility lookups not working correctly on model.*
    and 'TW.API.Meta.MethodExporter' for details on how new-style methods     objects.
    work.  
    - Fixed IndentedStream generating all-whitespace lines
  * Fixed misc. bugs in 'DataModel', 'LDAPModel', 'Connections', and  
    'TW.Caching' found by Ulrich Eck.  Thanks Ulrich!  Also, added a fix   - Made 'NOT_GIVEN' and 'NOT_FOUND' recognizable by humans (they 'repr'
    to ensure that non-existent records are invalidated by     and 'str' to their names) and by Python (they can be pickled, and
    'RecordType.getItem()'.     when restored they come back as the same object).
   
  * 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  
    updated the documentation to more clearly reflect what it is that  
    metaclass generation and module inheritance does and does not do.  Added  
    test cases to prevent regression of the rebind-by-name problem.  
   
  * The 'setup.py' script features a new command, 'happy', which can be used  
    to generate the API reference docs, and this command runs as part of the  
    'sdist' command to build source distributions.  
   
  * The API reference docs in the source distribution has been moved from  
    the 'doc' directory to 'docs/html/reference'.  
   
  * Added 'CHANGES.txt' file.  


Generate output suitable for use with a patch program
Legend:
Removed from v.374  
changed lines
  Added in v.1078

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help