Re: Default value lost in binding.Obtain()

PJ Eby <pje-Wh6+Hckhi6HFNGf7iClzIwC/[email protected]> Fri, 30 Oct 2015 14:59:31 -0400
Newsgroups gmane.comp.python.peak
Message-ID <CALeMXf6t2bGJRWaRCyv8wL=Q87st7aAwZUORGVvPiLOBn3cL+Q@mail.gmail.com>
--001a11c117d0436000052357080c
Content-Type: text/plain; charset=UTF-8

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

--001a11c117d0436000052357080c
Content-Type: application/octet-stream; name="obtain.patch"
Content-Disposition: attachment; filename="obtain.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ige12fwa0

SW5kZXg6IHNyYy9wZWFrL2NvbmZpZy9jb25maWdfY29tcG9uZW50cy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzcmMvcGVhay9jb25maWcvY29uZmlnX2NvbXBvbmVudHMucHkJKHJldmlzaW9uIDI3NzgpCisr
KyBzcmMvcGVhay9jb25maWcvY29uZmlnX2NvbXBvbmVudHMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTc2NCw4ICs3NjQsOCBAQAogICAgIGRlZiBub01vcmVWYWx1ZXMoc2VsZixyb290LGNvbmZpZ0tl
eSxmb3JPYmopOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgbmFtZU5vdEZvdW5kKHNlbGYscm9v
dCxuYW1lLGZvck9iaik6Ci0gICAgICAgIHJldHVybiBuYW1pbmcubG9va3VwKGZvck9iaiwgbmFt
ZSwgY3JlYXRpb25QYXJlbnQ9Zm9yT2JqKQorICAgIGRlZiBuYW1lTm90Rm91bmQoc2VsZixyb290
LG5hbWUsZm9yT2JqLGRlZmF1bHQ9Tk9UX0dJVkVOKToKKyAgICAgICAgcmV0dXJuIG5hbWluZy5s
b29rdXAoZm9yT2JqLCBuYW1lLCBjcmVhdGlvblBhcmVudD1mb3JPYmosIGRlZmF1bHQ9ZGVmYXVs
dCkKIAogCiAKSW5kZXg6IHNyYy9wZWFrL2NvbmZpZy9pbnRlcmZhY2VzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHNyYy9wZWFrL2NvbmZpZy9pbnRlcmZhY2VzLnB5CShyZXZpc2lvbiAyNzc4KQorKysgc3Jj
L3BlYWsvY29uZmlnL2ludGVyZmFjZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQs
NyBAQAogICAgIGRlZiBub01vcmVWYWx1ZXMocm9vdCxjb25maWdLZXksZm9yT2JqKToKICAgICAg
ICAgIiIiQSB2YWx1ZSBzZWFyY2ggaGFzIGNvbXBsZXRlZCIiIgogCi0gICAgZGVmIG5hbWVOb3RG
b3VuZChyb290LG5hbWUsZm9yT2JqLGJpbmROYW1lKToKKyAgICBkZWYgbmFtZU5vdEZvdW5kKHJv
b3QsbmFtZSxmb3JPYmosYmluZE5hbWUsZGVmYXVsdD1OT1RfR0lWRU4pOgogICAgICAgICAiIiJB
IChub24tVVJMKSBjb21wb25lbnQgbmFtZSB3YXMgbm90IGZvdW5kIiIiCiAKIApJbmRleDogc3Jj
L3BlYWsvYmluZGluZy9jb21wb25lbnRzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9wZWFrL2JpbmRp
bmcvY29tcG9uZW50cy5weQkocmV2aXNpb24gMjc3OCkKKysrIHNyYy9wZWFrL2JpbmRpbmcvY29t
cG9uZW50cy5weQkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBACiAKIAogCi1kZWYg
YWNxdWlyZUNvbXBvbmVudChjb21wb25lbnQsIG5hbWUpOgorZGVmIGFjcXVpcmVDb21wb25lbnQo
Y29tcG9uZW50LCBuYW1lLCBkZWZhdWx0PU5PVF9HSVZFTik6CiAKICAgICAiIiJBY3F1aXJlICdu
YW1lJyByZWxhdGl2ZSB0byAnY29tcG9uZW50Jywgdy9mYWxsYmFjayB0byBuYW1pbmcubG9va3Vw
KCkKIApAQCAtMzEyLDcgKzMxMiw3IEBACiAgICAgICAgIHJldHVybiBhZGFwdCgKICAgICAgICAg
ICAgIHByZXYsIElDb25maWd1cmF0aW9uUm9vdCwgTnVsbENvbmZpZ1Jvb3QKICAgICAgICAgKS5u
YW1lTm90Rm91bmQoCi0gICAgICAgICAgICBwcmV2LCBuYW1lLCBjb21wb25lbnQKKyAgICAgICAg
ICAgIHByZXYsIG5hbWUsIGNvbXBvbmVudCwgZGVmYXVsdD1kZWZhdWx0CiAgICAgICAgICkKIAog
CkBAIC0zNzYsMzggKzM3NiwzOCBAQAogICAgICAgICBhdHRyID0gcGFydHMubmV4dCgpICAgICAg
ICAgICAgICAgICAjIGZpcnN0IHBhcnQKICAgICAgICAgcGMgPSBfZ2V0Rmlyc3RQYXRoQ29tcG9u
ZW50KGF0dHIpCiAKKyAgICAgICAgaWYgcGM6CisgICAgICAgICAgICBvYiA9IHBjKGNvbXBvbmVu
dCkKKyAgICAgICAgZWxpZiBkZWZhdWx0IGlzIE5PVF9HSVZFTjogICAKKyAgICAgICAgICAgIG9i
ID0gYWNxdWlyZUNvbXBvbmVudChjb21wb25lbnQsIGF0dHIpICMgbGV0IHRoZSBlcnJvciBoYXBw
ZW4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9iID0gYWNxdWlyZUNvbXBvbmVudChjb21w
b25lbnQsIGF0dHIsIE5PVF9GT1VORCkKIAotICAgICAgICBpZiBwYzogIG9iID0gcGMoY29tcG9u
ZW50KQotICAgICAgICBlbHNlOiAgIG9iID0gYWNxdWlyZUNvbXBvbmVudChjb21wb25lbnQsIGF0
dHIpCi0KICAgICAgICAgcmVzb2x2ZWQgPSBbXQogICAgICAgICBhcHBlbmQgPSByZXNvbHZlZC5h
cHBlbmQKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBwYXJ0czoKKyAg
ICAgICAgICAgICAgICBpZiBvYiBpcyBOT1RfRk9VTkQ6IGJyZWFrCiAgICAgICAgICAgICAgICAg
cGMgPSBfZ2V0TmV4dFBhdGhDb21wb25lbnQoYXR0cikKICAgICAgICAgICAgICAgICBpZiBwYzog
IG9iID0gcGMob2IpCiAgICAgICAgICAgICAgICAgZWxzZTogICBvYiA9IGdldGF0dHIob2IsYXR0
cikKICAgICAgICAgICAgICAgICBhcHBlbmQoYXR0cikKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG9iCiAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgor
ICAgICAgICAgICAgcGFzcwogCi0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBOT1RfR0lW
RU46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKyAgICAgICAgaWYgZGVmYXVsdCBp
cyBub3QgTk9UX0dJVkVOOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAotICAgICAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5OYW1lTm90Rm91bmQoCi0gICAgICAgICAgICAgICAgcmVzb2x2
ZWROYW1lID0gQ29tcG9uZW50TmFtZShyZXNvbHZlZCksCi0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nTmFtZSA9IENvbXBvbmVudE5hbWUoW2F0dHJdICsgW2EgZm9yIGEgaW4gcGFydHNdKSwKLSAg
ICAgICAgICAgICAgICByZXNvbHZlZE9iaiA9IG9iCi0gICAgICAgICAgICApCisgICAgICAgIHJh
aXNlIGV4Y2VwdGlvbnMuTmFtZU5vdEZvdW5kKAorICAgICAgICAgICAgcmVzb2x2ZWROYW1lID0g
Q29tcG9uZW50TmFtZShyZXNvbHZlZCksCisgICAgICAgICAgICByZW1haW5pbmdOYW1lID0gQ29t
cG9uZW50TmFtZShbYXR0cl0gKyBbYSBmb3IgYSBpbiBwYXJ0c10pLAorICAgICAgICAgICAgcmVz
b2x2ZWRPYmogPSBvYgorICAgICAgICApCiAKLSAgICAgICAgcmV0dXJuIG9iCi0KLQotCi0KLQot
CiBfZ2V0Rmlyc3RQYXRoQ29tcG9uZW50ID0gZGljdCggKAogICAgICgnJywgICBnZXRSb290Q29t
cG9uZW50KSwKICAgICAoJy4nLCAgbGFtYmRhIHg6eCksCg==
--001a11c117d0436000052357080c
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
--001a11c117d0436000052357080c--