[Zope3-dev] Why z.a.appsetup.bootstrap function do not return the actual object

Florian Lindner mailinglists at xgm.de
Wed Mar 22 12:57:15 EST 2006


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


More information about the Zope3-dev mailing list