Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34k
bpo-46644: Remove callable() requirement from typing._type_check#31151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
6631801bff7b6e8e9870643a19bb6c205422dbab97fdcc4413b6e8302555a41File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -345,7 +345,7 @@ def test_cannot_instantiate_vars(self): | ||
| def test_bound_errors(self): | ||
| with self.assertRaises(TypeError): | ||
| TypeVar('X', bound=42) | ||
GBeauregard marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading. Please reload this page. | ||
| TypeVar('X', bound=Union) | ||
| with self.assertRaises(TypeError): | ||
| TypeVar('X', str, float, bound=Employee) | ||
| @@ -2544,9 +2544,6 @@ def test_extended_generic_rules_eq(self): | ||
| class Base: ... | ||
| class Derived(Base): ... | ||
| self.assertEqual(Union[T, Base][Union[Base, Derived]], Union[Base, Derived]) | ||
| with self.assertRaises(TypeError): | ||
| Union[T, int][1] | ||
| self.assertEqual(Callable[[T], T][KT], Callable[[KT], KT]) | ||
| self.assertEqual(Callable[..., List[T]][int], Callable[..., List[int]]) | ||
| @@ -3086,8 +3083,6 @@ class Foo(obj): | ||
| class ClassVarTests(BaseTestCase): | ||
| def test_basics(self): | ||
| with self.assertRaises(TypeError): | ||
| ClassVar[1] | ||
| with self.assertRaises(TypeError): | ||
| ClassVar[int, str] | ||
| with self.assertRaises(TypeError): | ||
| @@ -3126,8 +3121,6 @@ class FinalTests(BaseTestCase): | ||
| def test_basics(self): | ||
| Final[int] # OK | ||
| with self.assertRaises(TypeError): | ||
| Final[1] | ||
| with self.assertRaises(TypeError): | ||
| Final[int, str] | ||
| with self.assertRaises(TypeError): | ||
| @@ -3541,14 +3534,6 @@ def foo(a: 'Node[T'): | ||
| with self.assertRaises(SyntaxError): | ||
| get_type_hints(foo) | ||
| def test_type_error(self): | ||
| def foo(a: Tuple['42']): | ||
| pass | ||
| with self.assertRaises(TypeError): | ||
| get_type_hints(foo) | ||
| def test_name_error(self): | ||
| def foo(a: 'Noode[T]'): | ||
| @@ -4961,8 +4946,6 @@ def test_namedtuple_keyword_usage(self): | ||
| self.assertEqual(LocalEmployee.__annotations__, dict(name=str, age=int)) | ||
| with self.assertRaises(TypeError): | ||
| NamedTuple('Name', [('x', int)], y=str) | ||
| with self.assertRaises(TypeError): | ||
| NamedTuple('Name', x=1, y='a') | ||
| def test_namedtuple_special_keyword_names(self): | ||
| NT = NamedTuple("NT", cls=type, self=object, typename=str, fields=list) | ||
| @@ -4998,8 +4981,6 @@ def test_namedtuple_errors(self): | ||
| NamedTuple('Emp', [('_name', str)]) | ||
| with self.assertRaises(TypeError): | ||
| NamedTuple(typename='Emp', name=str, id=int) | ||
| with self.assertRaises(TypeError): | ||
| NamedTuple('Emp', fields=[('name', str), ('id', int)]) | ||
| def test_copy_and_pickle(self): | ||
| global Emp # pickle wants to reference the class by name | ||
| @@ -5074,7 +5055,6 @@ def test_typeddict_create_errors(self): | ||
| TypedDict() | ||
| with self.assertRaises(TypeError): | ||
| TypedDict('Emp', [('name', str)], None) | ||
| with self.assertRaises(TypeError): | ||
| TypedDict(_typename='Emp', name=str, id=int) | ||
| @@ -5088,13 +5068,6 @@ def test_typeddict_errors(self): | ||
| isinstance(jim, Emp) | ||
| with self.assertRaises(TypeError): | ||
| issubclass(dict, Emp) | ||
| # We raise a DeprecationWarning for the keyword syntax | ||
| # before the TypeError. | ||
| with self.assertWarns(DeprecationWarning): | ||
| with self.assertRaises(TypeError): | ||
| TypedDict('Hi', x=1) | ||
| with self.assertRaises(TypeError): | ||
| TypedDict('Hi', [('x', int), ('y', 1)]) | ||
| with self.assertRaises(TypeError): | ||
| TypedDict('Hi', [('x', int)], y=int) | ||
| @@ -5848,6 +5821,9 @@ def test_basics(self): | ||
| def foo(arg) -> TypeGuard[int]: ... | ||
| self.assertEqual(gth(foo),{'return': TypeGuard[int]}) | ||
| with self.assertRaises(TypeError): | ||
| TypeGuard[int, str] | ||
| def test_repr(self): | ||
| self.assertEqual(repr(TypeGuard), 'typing.TypeGuard') | ||
| cv = TypeGuard[int] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| No longer require valid typeforms to be callable. This allows :data:`typing.Annotated` to wrap :data:`typing.ParamSpecArgs` and :data:`dataclasses.InitVar`. Patch by Gregory Beauregard. | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Each line should be under 80 chars. However since this is usually merged into the next release's changelog anyways I'm not sure if it matters. Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, I think blurb takes care of that when it generates the full changelog. | ||
Uh oh!
There was an error while loading. Please reload this page.