Re: Default value lost in binding.Obtain()

Alexey Smishlayev <[email protected]> Sat, 31 Oct 2015 09:09:23 +0200
Newsgroups gmane.comp.python.peak
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------070008000403070200030703
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

It does except for a little typo, at line 60 of the patch it should read 
"ob = acquireComponent(component, attr, default)", then it works good. 
Thank you!


Best regards,
Alexey

On 30/10/15 20:59, PJ Eby wrote:
> Does this patch work for you?
>
> On Wed, Oct 28, 2015 at 8:45 AM, Alexey Smishlayev <[email protected]> wrote:
>> 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 <[email protected]>
>>> 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
>>>> [email protected]
>>>> http://www.eby-sarna.com/mailman/listinfo/peak
>>
>> _______________________________________________
>> PEAK mailing list
>> [email protected]
>> http://www.eby-sarna.com/mailman/listinfo/peak


--------------070008000403070200030703
Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0";
	name="obtain.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="obtain.patch"

SW5kZXg6IHNyYy9wZWFrL2NvbmZpZy9jb25maWdfY29tcG9uZW50cy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzcmMvcGVhay9jb25maWcvY29uZmlnX2NvbXBvbmVudHMucHkJKHJldmlzaW9u
IDI3NzgpCisrKyBzcmMvcGVhay9jb25maWcvY29uZmlnX2NvbXBvbmVudHMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTc2NCw4ICs3NjQsOCBAQAogICAgIGRlZiBub01vcmVWYWx1ZXMoc2Vs
Zixyb290LGNvbmZpZ0tleSxmb3JPYmopOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgbmFt
ZU5vdEZvdW5kKHNlbGYscm9vdCxuYW1lLGZvck9iaik6Ci0gICAgICAgIHJldHVybiBuYW1p
bmcubG9va3VwKGZvck9iaiwgbmFtZSwgY3JlYXRpb25QYXJlbnQ9Zm9yT2JqKQorICAgIGRl
ZiBuYW1lTm90Rm91bmQoc2VsZixyb290LG5hbWUsZm9yT2JqLGRlZmF1bHQ9Tk9UX0dJVkVO
KToKKyAgICAgICAgcmV0dXJuIG5hbWluZy5sb29rdXAoZm9yT2JqLCBuYW1lLCBjcmVhdGlv
blBhcmVudD1mb3JPYmosIGRlZmF1bHQ9ZGVmYXVsdCkKIAogCiAKSW5kZXg6IHNyYy9wZWFr
L2NvbmZpZy9pbnRlcmZhY2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9wZWFrL2NvbmZp
Zy9pbnRlcmZhY2VzLnB5CShyZXZpc2lvbiAyNzc4KQorKysgc3JjL3BlYWsvY29uZmlnL2lu
dGVyZmFjZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIGRl
ZiBub01vcmVWYWx1ZXMocm9vdCxjb25maWdLZXksZm9yT2JqKToKICAgICAgICAgIiIiQSB2
YWx1ZSBzZWFyY2ggaGFzIGNvbXBsZXRlZCIiIgogCi0gICAgZGVmIG5hbWVOb3RGb3VuZChy
b290LG5hbWUsZm9yT2JqLGJpbmROYW1lKToKKyAgICBkZWYgbmFtZU5vdEZvdW5kKHJvb3Qs
bmFtZSxmb3JPYmosYmluZE5hbWUsZGVmYXVsdD1OT1RfR0lWRU4pOgogICAgICAgICAiIiJB
IChub24tVVJMKSBjb21wb25lbnQgbmFtZSB3YXMgbm90IGZvdW5kIiIiCiAKIApJbmRleDog
c3JjL3BlYWsvYmluZGluZy9jb21wb25lbnRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9w
ZWFrL2JpbmRpbmcvY29tcG9uZW50cy5weQkocmV2aXNpb24gMjc3OCkKKysrIHNyYy9wZWFr
L2JpbmRpbmcvY29tcG9uZW50cy5weQkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3
IEBACiAKIAogCi1kZWYgYWNxdWlyZUNvbXBvbmVudChjb21wb25lbnQsIG5hbWUpOgorZGVm
IGFjcXVpcmVDb21wb25lbnQoY29tcG9uZW50LCBuYW1lLCBkZWZhdWx0PU5PVF9HSVZFTik6
CiAKICAgICAiIiJBY3F1aXJlICduYW1lJyByZWxhdGl2ZSB0byAnY29tcG9uZW50Jywgdy9m
YWxsYmFjayB0byBuYW1pbmcubG9va3VwKCkKIApAQCAtMzEyLDcgKzMxMiw3IEBACiAgICAg
ICAgIHJldHVybiBhZGFwdCgKICAgICAgICAgICAgIHByZXYsIElDb25maWd1cmF0aW9uUm9v
dCwgTnVsbENvbmZpZ1Jvb3QKICAgICAgICAgKS5uYW1lTm90Rm91bmQoCi0gICAgICAgICAg
ICBwcmV2LCBuYW1lLCBjb21wb25lbnQKKyAgICAgICAgICAgIHByZXYsIG5hbWUsIGNvbXBv
bmVudCwgZGVmYXVsdD1kZWZhdWx0CiAgICAgICAgICkKIAogCkBAIC0zNzYsMzggKzM3Niwz
OCBAQAogICAgICAgICBhdHRyID0gcGFydHMubmV4dCgpICAgICAgICAgICAgICAgICAjIGZp
cnN0IHBhcnQKICAgICAgICAgcGMgPSBfZ2V0Rmlyc3RQYXRoQ29tcG9uZW50KGF0dHIpCiAK
KyAgICAgICAgaWYgcGM6CisgICAgICAgICAgICBvYiA9IHBjKGNvbXBvbmVudCkKKyAgICAg
ICAgZWxpZiBkZWZhdWx0IGlzIE5PVF9HSVZFTjogICAKKyAgICAgICAgICAgIG9iID0gYWNx
dWlyZUNvbXBvbmVudChjb21wb25lbnQsIGF0dHIpICMgbGV0IHRoZSBlcnJvciBoYXBwZW4K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9iID0gYWNxdWlyZUNvbXBvbmVudChjb21w
b25lbnQsIGF0dHIsIGRlZmF1bHQpCiAKLSAgICAgICAgaWYgcGM6ICBvYiA9IHBjKGNvbXBv
bmVudCkKLSAgICAgICAgZWxzZTogICBvYiA9IGFjcXVpcmVDb21wb25lbnQoY29tcG9uZW50
LCBhdHRyKQotCiAgICAgICAgIHJlc29sdmVkID0gW10KICAgICAgICAgYXBwZW5kID0gcmVz
b2x2ZWQuYXBwZW5kCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIGF0dHIgaW4g
cGFydHM6CisgICAgICAgICAgICAgICAgaWYgb2IgaXMgTk9UX0ZPVU5EOiBicmVhawogICAg
ICAgICAgICAgICAgIHBjID0gX2dldE5leHRQYXRoQ29tcG9uZW50KGF0dHIpCiAgICAgICAg
ICAgICAgICAgaWYgcGM6ICBvYiA9IHBjKG9iKQogICAgICAgICAgICAgICAgIGVsc2U6ICAg
b2IgPSBnZXRhdHRyKG9iLGF0dHIpCiAgICAgICAgICAgICAgICAgYXBwZW5kKGF0dHIpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBvYgogCiAgICAgICAg
IGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAg
ICAgaWYgZGVmYXVsdCBpcyBub3QgTk9UX0dJVkVOOgotICAgICAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0CisgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IE5PVF9HSVZFTjoKKyAgICAg
ICAgICAgIHJldHVybiBkZWZhdWx0CiAKLSAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMu
TmFtZU5vdEZvdW5kKAotICAgICAgICAgICAgICAgIHJlc29sdmVkTmFtZSA9IENvbXBvbmVu
dE5hbWUocmVzb2x2ZWQpLAotICAgICAgICAgICAgICAgIHJlbWFpbmluZ05hbWUgPSBDb21w
b25lbnROYW1lKFthdHRyXSArIFthIGZvciBhIGluIHBhcnRzXSksCi0gICAgICAgICAgICAg
ICAgcmVzb2x2ZWRPYmogPSBvYgotICAgICAgICAgICAgKQorICAgICAgICByYWlzZSBleGNl
cHRpb25zLk5hbWVOb3RGb3VuZCgKKyAgICAgICAgICAgIHJlc29sdmVkTmFtZSA9IENvbXBv
bmVudE5hbWUocmVzb2x2ZWQpLAorICAgICAgICAgICAgcmVtYWluaW5nTmFtZSA9IENvbXBv
bmVudE5hbWUoW2F0dHJdICsgW2EgZm9yIGEgaW4gcGFydHNdKSwKKyAgICAgICAgICAgIHJl
c29sdmVkT2JqID0gb2IKKyAgICAgICAgKQogCi0gICAgICAgIHJldHVybiBvYgotCi0KLQot
Ci0KLQogX2dldEZpcnN0UGF0aENvbXBvbmVudCA9IGRpY3QoICgKICAgICAoJycsICAgZ2V0
Um9vdENvbXBvbmVudCksCiAgICAgKCcuJywgIGxhbWJkYSB4OngpLAo=
--------------070008000403070200030703
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
PEAK mailing list
[email protected]
http://www.eby-sarna.com/mailman/listinfo/peak
--------------070008000403070200030703--