[issue37806] Infinite recursion with typing.get_type_hints

2019-09-13 Thread Stéphane Wirtel

Change by Stéphane Wirtel :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-09-13 Thread hongweipeng


hongweipeng  added the comment:

Sorry, the link is https://github.com/python/cpython/pull/15400 .

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-09-13 Thread hongweipeng


hongweipeng  added the comment:

This report can be closed, PR #15400 has solved this issue.

--
nosy: +hongweipeng

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-28 Thread hongweipeng


Change by hongweipeng :


--
pull_requests: +15232
pull_request: https://github.com/python/cpython/pull/15559

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-25 Thread Guido van Rossum


Change by Guido van Rossum :


--
nosy:  -gvanrossum

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-25 Thread hongweipeng


Change by hongweipeng :


--
keywords: +patch
pull_requests: +15181
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/15493

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-10 Thread Ivan Levkivskyi


Change by Ivan Levkivskyi :


--
assignee:  -> levkivskyi

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-10 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +gvanrossum, levkivskyi

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-09 Thread Valerio G


Change by Valerio G :


--
type:  -> crash

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue37806] Infinite recursion with typing.get_type_hints

2019-08-09 Thread Valerio G


New submission from Valerio G :

I encountered one condition where calling get_type_hints causes infinite 
recursion when dealing with forward declaration and cyclic types.

Here's an example:

from typing import Union, List, get_type_hints

ValueList = List['Value']
Value = Union[str, ValueList]

class A:
a: List[Value]

get_type_hints(A, globals(), locals())
This reaches the recursion limit as of 3.8.0b2.

It seems that the combining _GenericAlias with ForwardRef is what triggers this 
condition:

ForwardRef._evaluate sets __forward_value__ on its first call on a given 
instance
_GenericAlias tries to compare its args post evaluation
If one of the arguments is a previously evaluated forward reference containing 
a cycle, then it will infinitely recurse in the hash function when building a 
frozen set for the comparison.
The above is, of course, a very artificial example, but I can imagine this 
happening a lot in code with trees or similar structures.
My initial reproduction case was using _eval_type to resolve forward references 
returned by get_args (side note: it would be nice to have a public function to 
do that).

--
components: Library (Lib)
messages: 349330
nosy: vg0377467
priority: normal
severity: normal
status: open
title: Infinite recursion with typing.get_type_hints
versions: Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com