|
|
Changed, Enhanced, or Newly Deprecated Features |
Changed, Enhanced, or Newly Deprecated Features |
|
|
|
- Added 'peak.events' package, supporting a simple event-driven programming |
|
microkernel, including event-driven "ultralight" threads powered by |
|
generators. |
|
|
|
- "Global" services defined by '[Component Factories]' sections now live in |
|
the closest "service area" to the component that requests them. A "service |
|
area" is a parent component that implements 'config.IServiceArea', such as |
|
a configuration root returned by 'config.makeRoot()'. Applications loaded |
|
by the 'peak runIni' command are now created in their own service area, |
|
which means that settings in the .ini file being run will apply to services |
|
the application uses. (Because the application will have its own, |
|
application-specific service instances, and they will use the configuration |
|
loaded into the service area.) |
|
|
|
If you need to create your own service area, you can do so by mixing in |
|
'config.ServiceArea' to your component class. However, you should *not* do |
|
this unless you know exactly what "outside" services you may need to use |
|
from "inside" the newly created service area, so that you can explicitly |
|
connect them "into" the service area. (In short, if you don't know *why* |
|
you're creating a service area, don't do it.) |
|
|
|
- 'config.Namespace()' objects now have a 'keys()' method that can be used |
|
when the namespace is bound to a context component. It returns a list of |
|
strings that may be used as keys for that namespace. Example usage:: |
|
|
|
>>> from peak.api import * |
|
>>> r=config.makeRoot() |
|
>>> ns=config.Namespace('peak.naming.schemes',r) |
|
>>> ns.keys() |
|
['https', 'smtp', 'logfile', 'psycopg', 'pkgfile', 'unix.dg', 'win32.dde', |
|
'sybase', 'timer', 'lockfile', 'pgsql', 'fd.socket', 'uuid', 'tcp', 'file', |
|
'gadfly', 'http', 'logger', 'icb', 'cxoracle', 'udp', 'winflockfile', |
|
'import', 'logging.logger', 'nulllockfile', 'nis', 'shlockfile', |
|
'zconfig.schema', 'flockfile', 'shellcmd', 'dcoracle2', 'config', 'ftp', |
|
'unix', 'ldap', 'sqlite', 'mockdb'] |
|
>>> ns['ldap'] |
|
'peak.storage.LDAP:ldapURL' |
|
|
|
- Log events don't use a positional 'message' argument any more, and |
|
loggers aren't responsible for interpolating message arguments any more. |
|
The new signature is 'Event(parent, msg=msg, args=args, ...)'. Loggers |
|
also now tell events what logger name they are, via the 'ident' keyword. |
|
|
|
- The logging system now uses a property namespace, 'peak.logging.levels', to |
|
obtain log level names and values. The various 'logs.LEVEL' constants are |
|
now DEPRECATED. Please use the 'getLevelFor()' method of the nearest |
|
'logs.ILoggingService' instead. Also note that URL schemes such as |
|
'logfile:' no longer convert their level names to numbers, since the |
|
level names are only meaningful in the context of a logging service. |
|
|
|
- Support for integration with the Python 2.3/PEP 282 logging module has been |
|
scaled back. There are too many globalisms and dependencies there. When we |
|
add plugin-based log configuration, it should be possible to use the logging |
|
package's handlers and formatters with the PEAK logging services. At that |
|
point, you'll be able to replace 'logging.getLogger' and |
|
'logging.getLevelName' with the corresponding methods of a PEAK logging |
|
service, if you need to force non-PEAK packages to use PEAK's logging. |
|
|
|
- Logs are now accessed via a 'logs.ILoggingService' instance. The 'logger:' |
|
URL scheme automatically accesses the nearest such service. For backward |
|
compatibility, the old 'peak.logs' namespace is still used to supply the |
|
actual loggers. This will be gradually replaced with a plugin-based |
|
mechanism. |
|
|
|
- Added 'binding.PluginKeys' and 'binding.PluginsFor'. These are component |
|
keys that can be used to 'Obtain' plugins registered within a property |
|
namespace. 'PluginKeys' obtains a list of the plugins' configuration keys, |
|
while 'PluginsFor' obtains a list of the actual plugins. |
|
|
|
- Replaced 'peak.config.registries.EigenRegistry' with |
|
'peak.config.registries.ImmutableConfig'. The only use we had for |
|
'EigenRegistry' was to keep track of 'offerAs' settings within classes, and |
|
it didn't need all the extra complexity of eigenstate management. The new, |
|
more-specialized class is shorter, simpler, and easier to use. |
|
|
- Added 'config.iterKeys()' which iterates over all available configuration |
- Added 'config.iterKeys()' which iterates over all available configuration |
keys in a given namespace (just property names for now). The 'config:' |
keys in a given namespace (just property names for now). The 'config:' |
namespace is now a 'naming.IReadContext', so you can navigate it with the |
namespace is now a 'naming.IReadContext', so you can navigate it with the |