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