[Subversion] / PEAK / CHANGES.txt  

Diff of /PEAK/CHANGES.txt

Parent Directory | Revision Log

version 1199, Fri Jun 20 16:39:18 2003 UTC version 1280, Mon Jul 28 20:37:58 2003 UTC
Line 2 
Line 2 
   
  Changed, Enhanced, or Newly Deprecated Features   Changed, Enhanced, or Newly Deprecated Features
   
  - There is now an interface for "Active Descriptors":   - .ini files now support "smart property" objects ('config.ISmartProperty').
    'binding.IActiveDescriptor'.  'peak.binding' now uses this interface to     If a property rule defined in an .ini file evaluates at runtime to an object
    identify active descriptors, so you can now create your own.  (Previously,     that implements 'ISmartProperty', the object will be given a chance to
    'peak.binding' used 'isinstance()' to detect active descriptors.)     compute a value for the property, in place of being used itself.  This helps
      to simplify definition of complex property rules in .ini files, by allowing
  - 'peak.naming' no longer automatically converts all addresses to the     the use of helper classes.  Also, 'naming.LinkRef' and 'naming.Reference'
    addressed objects.  You must specifically request the interface you want     (indirectly) support this interface, so you can now use them in .ini files
    by adapting the retrieved object to that interface.  This can be done by     to refer to an object via the naming system.  (Previously, 'naming.LinkRef'
    supplying an 'adaptTo=ISomething' keyword argument to the attribute binding     wouldn't do the right thing unless the property was looked up via a
    definition or your 'lookupComponent()' call.     'config:' URL, and 'naming.Reference' didn't exist.)
   
    The naming system no longer has 'objectFactories' and 'stateFactories';   - 'peak.util.imports.whenImported()' can now be used even when the specified
    these have been replaced with adaptation.  Writable naming contexts must     module has already been loaded.
    have a 'serializationProtocol' attribute specifying what interface an object  
    should be adapted to before attempting to store it in that context.   - The naming system no longer has 'objectFactories' and 'stateFactories' as
      utilities; they have been replaced with new mechanisms involving adaptation.
      Previously, addresses had a 'retrieve()' method that could be used to
      retrieve the object defined by the address.  Now, to retrieve an object for
      an address, you must either define a context that processes the address, or
      the address must have a 'defaultFactory' attribute, which provides a name
      to be imported to get an 'IObjectFactory' that can construct the referenced
      object.  (This is simpler than it sounds; for URLs that reference
      ManagedConnections, for example, all you need to do is provide the fully
      qualified name of the connection class.)
   
      Meanwhile, writable naming contexts must have a 'serializationProtocol'
      attribute, specifying what interface an object should be adapted to before
      attempting to store it in that context.
   
    The naming system no longer processes the 'creationName' keyword argument;     The naming system no longer processes the 'creationName' keyword argument;
    this is now considered the sole responsibility of 'peak.binding'.  The     this is now considered the sole responsibility of 'peak.binding'.  The
Line 31 
Line 44 
    rather than a 'state,attrs' tuple.  For most naming contexts, this just     rather than a 'state,attrs' tuple.  For most naming contexts, this just
    means you should change 'return foo, None' statements to just 'return foo'.     means you should change 'return foo, None' statements to just 'return foo'.
   
    - Property definition rules in an .ini file can now refer to 'rulePrefix' and
      'ruleSuffix' variables.  'rulePrefix' is a '.'-terminated string,
      representing the name the rule was defined with.  For example, if the
      rule was defined for '"foo.bar.*"', then 'rulePrefix' will be '"foo.bar."'.
      The 'ruleSuffix' will be the portion of the 'propertyName' that follows
      'rulePrefix'.  So, if looking up property '"foo.bar.baz"', then the
      '"foo.bar.*"' rule will execute with a 'ruleSuffix' of '"baz"'.  This should
      make it easier to work with hierarchical property namespaces.
   
    - Added simple example scripts and small applications in the 'examples'
      directory.
   
    - There is a new command-line namespace introspection tool, 'n2', which
      can be accessed by running 'peak n2'.  Type 'peak n2 -h' for help.
   
    - The PEAK_CONFIG environment variable can now list multiple files, separated
      by the platform's 'os.pathsep' (e.g. ':' on Unix, ';' on Windows).
   
    - It's no longer necessary to provide a '_defaultState()' implementation
      for an EntityDM: a default implementation is now supplied.
   
    - Added automatic installation of 'datetime' package for Python < 2.3.
   
    - CGI support has been moved from 'peak.running.zpublish' into
      'peak.running.commands' (for "raw" CGI/FastCGI) and 'peak.web' (for the
      PEAK high-level publishing framework).  You can use 'peak CGI someName' to
      adapt 'someName' to a 'running.IRerunnableCGI' and run it as a CGI/FastCGI.
   
    - There is now a 'peak.security' package, available from 'peak.api' as
      'security'.  It provides permission management functions: you can define
      abstract permissions by subclassing 'security.Permission', then create
      permission checking rules by subclassing 'security.RuleSet', and declare
      the permissions needed to access attributes of a class with
      'security.allow()'.  The test suite demonstrates a complex application
      ruleset with dynamic, data-driven permissions.
   
    - There is now an interface for "Active Descriptors":
      'binding.IActiveDescriptor'.  'peak.binding' now uses this interface to
      identify active descriptors, so you can now create your own.  (Previously,
      'peak.binding' used 'isinstance()' to detect active descriptors.)
   
  - REMOVED 'naming.ParsedURL'; it was deprecated as of 0.5 alpha 2.   - REMOVED 'naming.ParsedURL'; it was deprecated as of 0.5 alpha 2.
   
  - The 'provides' keyword argument to various 'peak.binding' APIs has been   - The 'provides' keyword argument to various 'peak.binding' APIs has been
Line 65 
Line 119 
    a binding to suggest a parent component, use 'suggestParent=False' in the     a binding to suggest a parent component, use 'suggestParent=False' in the
    binding definition.     binding definition.
   
    Corrected Problems
   
     - There was a typo in peak.naming.arithmetic that caused homogeneous non-URL
       name subtraction to fail.
   
     - The default reactor supplied in 'peak.running.scheduler' would consume
       CPU continuously if it was waiting for I/O and no tasks were scheduled.
   
     - The 'peak.util.imports.whenImported' function didn't work.
   
   
   
   
   
   
   
   
   
   


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

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help