[PEAK] Default value lost in binding.Obtain()

Alexey Smishlayev alexey at xtech2.lv
Thu Oct 1 05:19:49 EDT 2015

Okay, that's probably going to be better. Anyways, I'm going to apply 
the patch locally for now. Is there hope for a new snapshot with the fix?

Alexey Smishlayev

On 30/09/15 01:53, PJ Eby wrote:
> Thanks for reporting the problem.  Unfortunately your patch will mask
> any other sort of name error, including one that happens indirectly as
> a side effect of the lookup.  I think the correct fix is going to be
> to change the nameNotFound() method of config.IConfigurationRoot to
> include a default (defaulting to NOT_GIVEN), and have
> acquireComponent() take a default and pass it along to nameNotFound().
> This would handle the case of a direct lookup failing by returning the
> default, but still raise an error for any other part of the process
> getting a naming error.
> On Tue, Sep 29, 2015 at 9:03 AM, Alexey Smishlayev <alexey at xtech2.lv> wrote:
>> Hello!
>> Today, fiddling with the binding.Obtain() I noticed that the default value
>> gets lost.
>> In my application, I have a component tree and I want an attribute to be
>> defined in any component in that tree, so I created binding:
>>>      callback = binding.Obtain("callbackFunction", default=lambda arg:
>>> None)
>> So, in case that no component defines a callbackFunction, the lambda
>> function would be used as a fallback.
>> Unfortunately, "default" option is ignored unless target name contains
>> slashes (e.g. "/callbackFunction", "./callBackFunction",
>> "../callbackFunction")
>> I went to the peak/binding/components.py trying to fix it and propose the
>> attached patch.
>> The problem is that default value was not propagated to the
>> acquireComponent() call, so an exception occurred.
>> Best regards,
>> Alexey Smishlayev
>> _______________________________________________
>> PEAK mailing list
>> PEAK at eby-sarna.com
>> http://www.eby-sarna.com/mailman/listinfo/peak

More information about the PEAK mailing list