| 
									
										
										
										
											2017-02-13 22:50:14 +01:00
										 |  |  | """Module for testing the behavior of generics across different modules.""" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 15:56:15 -07:00
										 |  |  | from typing import TypeVar, Generic, Optional, TypeAliasType | 
					
						
							| 
									
										
										
										
											2017-02-13 22:50:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  | default_a: Optional['A'] = None | 
					
						
							|  |  |  | default_b: Optional['B'] = None | 
					
						
							| 
									
										
										
										
											2017-02-13 22:50:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  | T = TypeVar('T') | 
					
						
							| 
									
										
										
										
											2017-02-13 22:50:14 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  | class A(Generic[T]): | 
					
						
							|  |  |  |     some_b: 'B' | 
					
						
							| 
									
										
										
										
											2017-09-14 14:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  | class B(Generic[T]): | 
					
						
							| 
									
										
										
										
											2017-09-14 14:33:00 -04:00
										 |  |  |     class A(Generic[T]): | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  |         pass | 
					
						
							| 
									
										
										
										
											2017-09-14 14:33:00 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-12 19:48:10 +03:00
										 |  |  |     my_inner_a1: 'B.A' | 
					
						
							|  |  |  |     my_inner_a2: A | 
					
						
							|  |  |  |     my_outer_a: 'A'  # unless somebody calls get_type_hints with localns=B.__dict__ | 
					
						
							| 
									
										
										
										
											2023-05-18 15:56:15 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | type Alias = int | 
					
						
							|  |  |  | OldStyle = TypeAliasType("OldStyle", int) |