Title: bpo-41370: Evaluate strings as forward refs in PEP 585 generics by NiklasRosenstein · Pull Request #30900 · python/cpython · GitHub
Open Graph Title: bpo-41370: Evaluate strings as forward refs in PEP 585 generics by NiklasRosenstein · Pull Request #30900 · python/cpython
X Title: bpo-41370: Evaluate strings as forward refs in PEP 585 generics by NiklasRosenstein · Pull Request #30900 · python/cpython
Description: This Pull Requests suggests a change to typing._eval_type() that considers strings in PEP 585 generics (ie. instances of types.GenericAlias) as forward references. This is necessary because ForwardRef is not and likely will not be implemented in C, and thus strings used as forward references in PEP 585 are not currently evaluated by typing.get_type_hints(). https://bugs.python.org/issue41370 A test case that uses assertIs() currently fails because in the current state _eval_type() creates a copy of the same generic alias with transformed arguments, thus for any PEP 585 generic alias x, the comparison x is typing.get_type_hints(func)['X'] will evaluate to False, assuming func has a field/argument annotation X: x. I think that this can be worked around, and happy to propose an updated implementation. I created this PR as a proof of concept until a there is consent that in spirit this change to get_type_hints() is something that should happen. So for now I'll keep it as it is. ====================================================================== FAIL: test_get_type_hints_annotated (__main__.GetTypeHintTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/niklas/git/cpython/Lib/test/test_typing.py", line 3298, in test_get_type_hints_annotated self.assertIs( ^^^^^^^^^^^^^^ AssertionError: tuple[typing.Annotated[~T, (1, 0)], ...] is not tuple[typing.Annotated[~T, (1, 0)], ...] Open todos/questions Fix test_get_type_hints_annotated in test_typing.py Do we actually need to treat types.GenericAlias separately or is it safe to assume that a string argument is always a forward reference? Backport to 3.10 as a bugfix? Co-Authored-By: Guido van Rossum guido@python.org https://bugs.python.org/issue41370
Open Graph Description: This Pull Requests suggests a change to typing._eval_type() that considers strings in PEP 585 generics (ie. instances of types.GenericAlias) as forward references. This is necessary because Forward...
X Description: This Pull Requests suggests a change to typing._eval_type() that considers strings in PEP 585 generics (ie. instances of types.GenericAlias) as forward references. This is necessary because Forward...
Opengraph URL: https://github.com/python/cpython/pull/30900
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:9f721a66-a4c6-11eb-3490-c80c62b7c41e |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | AC16:1EFC6:1C296A9:2693757:696AB9E7 |
| html-safe-nonce | be9fdd41231e1fa06379d627cbc7d8301f5be7e0f100fd0bc3d3b4a1943eb06e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQzE2OjFFRkM2OjFDMjk2QTk6MjY5Mzc1Nzo2OTZBQjlFNyIsInZpc2l0b3JfaWQiOiIyNzc3MTg0MzI3MDQ2OTY5ODMyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 1c1b620526e17f8139d2b9656fd066e15601c9bb073a25f1f6bfb1d7d68566ff |
| hovercard-subject-tag | pull_request:831927247 |
| 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/python/cpython/pull/30900/checks |
| twitter:image | https://avatars.githubusercontent.com/u/1318438?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/1318438?s=400&v=4 |
| og:image:alt | This Pull Requests suggests a change to typing._eval_type() that considers strings in PEP 585 generics (ie. instances of types.GenericAlias) as forward references. This is necessary because Forward... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 46ce962e0e18113ea447391b6ace8b02d4d2861e57b4fbab3658698f73d8855b |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| 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 | 30300f30bb3949de255e84a146706a3bdb5c19c9 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width