Interfaces objects currently describe the following meta-data:
Interface -- An Interface object describes:
o A name
o Documentation
o A list of attributes
Attribute -- An attribute object describes:
o A name
o Documentation
Method -- A method object describes:
o A Name
o Documentation
o Method signature information
It is desireable to support an extensible meta-data framework so that Interface authors can associate more interesting meta-data with an interface. In particular, security assertions in Zope could benefit from this facility. Some possible uses for extended meta-data are:
o Pre/Post conditions
o return type/description
o Security assertions
o Exceptions raised and their meaning
o Examples
Proposal:
In UML parlance, extra data can be associated with a class, interface, or object through tagged values. This proposal tries to match this common design concept for extensible meta data on interface objects.
Extend the Inteface, Attribute, and Method interfaces to include the following methods:
getTaggedValue(tag) -- Return the value of the meta-data associated with 'tag'.
getTaggedValueTags() -- Return a list of all meta-data tags.
setTaggedValue(tag, value) -- Associate the meta-data 'value' with 'tag'.