Am Montag, 20. März 2006 14:27 schrieb Stephan Richter:
> On Wednesday 08 March 2006 08:57, Florian Lindner wrote:
> > Hello,
> > I'm currently playning with the functions from
> > zope.app.appsetup.bootstrap and I'm wondering why the functions that
> > create objects
> > (addConfigureUtility, addUtility, configureUtility, ensureObject,
> > ensureUtility) do return the name of the object added (or None) and not
> > the object itself. What is the reason for that?
> > IMO in most cases you add a Utility you want to change some attributes of
> > it afterwards. In order to do that you need the object instance. To get
> > it from the name you have to perform a getUtility call. If the functions
> > above would return the object you could omit the getUtility.
> > What do you think about that?
> This is a relic from the early days, when we still had context wrappers. I
> am +1 for the change, but backward-compatibility has to be provided. And
> since the return value changes, this has to be done in two steps:
> 1. Create a new option argument to the functions saying ``asObject=False``,
> and only if set to True the object will return.
> Then deprecate the string
> return value by generating a warning message.
Mmmhh... how can I deprecate a function argument conditionally?
def ensureObject(root_folder, object_name, object_type, object_factory,
"""Check that there's a basic object in the site
manager. If not, add one.
Return the name abdded, if we added an object, otherwise None.
if not asObject:
asObject = deprecation.deprecated(asObject, "Using asObject=False is
But that does not do anything....
> 2. After two releases, remove deprecated string value return and set
> ``asObject=True`` by default. Also deprecate the asObject argument again.
Hope I'll remember that.
Zope3-dev mailing list