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.
Done. > 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, asObject=False): """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 deprecated") 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. Thanks, Florian _______________________________________________ Zope3-dev mailing list Zope3-dev@zope.org Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com