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

Alexey Smishlayev alexey at xtech2.lv
Wed Oct 28 08:45:31 EDT 2015


Hi!
How can I get an svn checkout to incorporate described changes and 
propose another patch? This is essential for our software and I'd like 
to see it merged in upstream as soon as possible.

Best regards,
Alexey


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