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--