Title: Safer `GetAttr(name, default)` by lostmsu · Pull Request #1578 · pythonnet/pythonnet · GitHub
Open Graph Title: Safer `GetAttr(name, default)` by lostmsu · Pull Request #1578 · pythonnet/pythonnet
X Title: Safer `GetAttr(name, default)` by lostmsu · Pull Request #1578 · pythonnet/pythonnet
Description: What does this implement/fix? Explain your changes. Prior to this change PyObject.GetAttr(name, default) would ignore any exceptions, including ones unrelated to missing attribute. For example (hypothetically) PyObject is a file, and you call file.GetAttr("len", 0), it would return 0 on I/O error even though file object actually has len attribute. Remarks I marked the method obsolete, as even now when we restrict ignored errors to AttributeError and derived types, the behavior of this method still going to be misleading in some scenarios. For example, class RaisesAttrErr: @property def prop(self): raise AttributeError class OK: def __init__(self, impl): self._impl = impl @property def existing_prop(self): return self._impl.prop PythonEngine.Eval("OK(RaisesAttrErr())").GetAttr("existing_prop", 0) // returns 0 despite existing_prop actually existing -^ in OK Does this close any currently open issues? fixes #1036 Checklist Check all those that are applicable and complete. Make sure to include one or more tests for your change Updated the CHANGELOG
Open Graph Description: What does this implement/fix? Explain your changes. Prior to this change PyObject.GetAttr(name, default) would ignore any exceptions, including ones unrelated to missing attribute. For example (hyp...
X Description: What does this implement/fix? Explain your changes. Prior to this change PyObject.GetAttr(name, default) would ignore any exceptions, including ones unrelated to missing attribute. For example (hyp...
Opengraph URL: https://github.com/pythonnet/pythonnet/pull/1578
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:c6800e04-e61d-0f83-416f-cade6c89573b |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | DEB6:AA9C4:3B541B4:5066F58:69708645 |
| html-safe-nonce | 5dca7f1b523f904af887e775f23a1cffe4cb41314e71e126cfb95d222273a90d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERUI2OkFBOUM0OjNCNTQxQjQ6NTA2NkY1ODo2OTcwODY0NSIsInZpc2l0b3JfaWQiOiI3NjUwOTUzMDA3OTczMDQxNzMzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | c718a6446ea96723c0dbfc16c90eeeb0b3f766d04b877f3b0270f803b4cde987 |
| hovercard-subject-tag | pull_request:747817113 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/pythonnet/pythonnet/pull/1578/checks |
| twitter:image | https://avatars.githubusercontent.com/u/239520?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/239520?s=400&v=4 |
| og:image:alt | What does this implement/fix? Explain your changes. Prior to this change PyObject.GetAttr(name, default) would ignore any exceptions, including ones unrelated to missing attribute. For example (hyp... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9920a62ba22d06470388e2904804fb7e5ec51c9e35f81784e9191394c74b2bd2 |
| turbo-cache-control | no-preview |
| go-import | github.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git |
| octolytics-dimension-user_id | 6050430 |
| octolytics-dimension-user_login | pythonnet |
| octolytics-dimension-repository_id | 14748123 |
| octolytics-dimension-repository_nwo | pythonnet/pythonnet |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 14748123 |
| octolytics-dimension-repository_network_root_nwo | pythonnet/pythonnet |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7d6181066430cc06553c8396ca201e194ae33cb9 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width