Handler for the directives directive
This is just a grouping directive that adds a namespace attribute to the normal directive context.
There are no attributes in this class.
action(discriminator, callable=None, args=(), kw={}, order=0)
Add an action with the given discriminator, callable and arguments
For testing purposes, the callable and arguments may be omitted. In that case, a default noop callable is used.
The discriminator must be given, but it can be None, to indicate that the action never conflicts.
Let's look at some examples:
>>> c = ConfigurationContext()
Normally, the context gets actions from subclasses. We'll provide an actions attribute ourselves:
>>> c.actions = []
We'll use a test callable that has a convenient string representation
>>> from zope.configuration.tests.directives import f
>>> c.action(1, f, (1, ), {'x': 1}) >>> c.actions [(1, f, (1,), {'x': 1})]
>>> c.action(None) >>> c.actions [(1, f, (1,), {'x': 1}), (None, None)]
Now set the include path and info:
>>> c.includepath = ('foo.zcml',) >>> c.info = "?" >>> c.action(None) >>> c.actions[-1] (None, None, (), {}, ('foo.zcml',), '?')
Finally, we can add an order argument to crudely control the order of execution:
>>> c.action(None, order=99999) >>> c.actions[-1] (None, None, (), {}, ('foo.zcml',), '?', 99999)
after()
before()
checkDuplicate(filename)
Check for duplicate imports of the same file.
Raises an exception if this file had been processed before. This is better than an unlimited number of conflict errors.
>>> c = ConfigurationContext() >>> c.checkDuplicate('/foo.zcml') >>> try: ... c.checkDuplicate('/foo.zcml') ... except ConfigurationError, e: ... # On Linux the exact msg has /foo, on Windows oo. ... str(e).endswith("foo.zcml' included more than once") True
You may use different ways to refer to the same file:
>>> import zope.configuration >>> c.package = zope.configuration >>> import os >>> d = os.path.dirname(zope.configuration.__file__) >>> c.checkDuplicate('bar.zcml') >>> try: ... c.checkDuplicate(d + os.path.normpath('/bar.zcml')) ... except ConfigurationError, e: ... str(e).endswith("bar.zcml' included more than once") ... True
hasFeature(feature)
Check whether a named feature has been provided.
Initially no features are provided
>>> c = ConfigurationContext() >>> c.hasFeature('onlinehelp') False
You can declare that a feature is provided
>>> c.provideFeature('onlinehelp')
and it becomes available
>>> c.hasFeature('onlinehelp') True
path(filename)
Examples:
>>> c = ConfigurationContext() >>> c.path("/x/y/z") == os.path.normpath("/x/y/z") 1 >>> c.path("y/z") Traceback (most recent call last): ... AttributeError: 'ConfigurationContext' object has no attribute 'package' >>> import zope.configuration >>> c.package = zope.configuration >>> import os >>> d = os.path.dirname(zope.configuration.__file__) >>> c.path("y/z") == d + os.path.normpath("/y/z") 1 >>> c.path("y/./z") == d + os.path.normpath("/y/z") 1 >>> c.path("y/../z") == d + os.path.normpath("/z") 1
processFile(filename)
Check whether a file needs to be processed
Return True if processing is needed and False otherwise. If the file needs to be processed, it will be marked as processed, assuming that the caller will procces the file if it needs to be procssed.
>>> c = ConfigurationContext() >>> c.processFile('/foo.zcml') True >>> c.processFile('/foo.zcml') False
You may use different ways to refer to the same file:
>>> import zope.configuration >>> c.package = zope.configuration >>> import os >>> d = os.path.dirname(zope.configuration.__file__) >>> c.processFile('bar.zcml') True >>> c.processFile('bar.zcml') False
provideFeature(feature)
Declare thata named feature has been provided.
See hasFeature for examples.
resolve(dottedname)
Resolve a dotted name to an object
Examples:
>>> c = ConfigurationContext() >>> import zope, zope.interface >>> c.resolve('zope') is zope 1 >>> c.resolve('zope.interface') is zope.interface 1
>>> c.resolve('zope.configuration.eek') #doctest: +NORMALIZE_WHITESPACE Traceback (most recent call last): ... ConfigurationError: ImportError: Module zope.configuration has no global eek
>>> c.resolve('.config.ConfigurationContext') Traceback (most recent call last): ... AttributeError: 'ConfigurationContext' object has no attribute 'package' >>> import zope.configuration >>> c.package = zope.configuration >>> c.resolve('.') is zope.configuration 1 >>> c.resolve('.config.ConfigurationContext') is ConfigurationContext 1 >>> c.resolve('..interface') is zope.interface 1 >>> c.resolve('unicode') <type 'unicode'>
There are no known subclasses.