GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||
GeezerVison is showing github.com — bpo-46571: improve `typing.no_type_check` to skip foreign objects by sobolevn · Pull Request #31042 · python/cpython Conversation
|
|
Here's a slightly evil corner case that this patch doesn't account for: If I have a module # typing_test.py class A: class AA: foo: int Then, observe the following behaviour (with your patch applied): >>> from typing import get_type_hints, no_type_check >>> import typing_test >>> get_type_hints(typing_test.A.AA) {'foo': <class 'int'>} >>> @no_type_check ... class A: ... AA = typing_test.A.AA ... ... >>> get_type_hints(typing_test.A.AA) {} We might be able to get around this by looking at the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
@AlexWaygood good one! Very evil! I've addressed this. @JelleZijlstra I agree that we should also fix The problem is that >>> class Some: ... @staticmethod ... def st(x: int) -> int: ... ... @classmethod ... def cl(cls, y: int) -> int: ... >>> Some.st.__no_type_check__ = True >>> Some.cl.__no_type_check__ = True AttributeError: 'method' object has no attribute '__no_type_check__' Ideas? Moreover, do we need some special |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Doesn't look like you've pushed anything -- did you mean to? :) |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Not yet, I am still fighting |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Probably if isinstance(obj, types.MethodType): obj.__func__.__no_type_check__ = True is the way to go 🤔 Will write some more tests to be sure. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
Do you think this should be backported? I'm leaning no as it's a behavior change and nobody directly complained about the old behavior (looks like you found it while reviewing typing test coverage).
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Agreed, a backport doesn't seem asked for.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.