Sindbad~EG File Manager
�
'Μg<F � � � d Z ddlZddlZddlZdZdZd� Z G d� dej � Ze dk( r ej � yy) z&
Test the API of the symtable module.
� Na�
import sys
glob = 42
some_var = 12
some_non_assigned_global_var: int
some_assigned_global_var = 11
class Mine:
instance_var = 24
def a_method(p1, p2):
pass
def spam(a, b, *var, **kw):
global bar
global some_assigned_global_var
some_assigned_global_var = 12
bar = 47
some_var = 10
x = 23
glob
def internal():
return x
def other_internal():
nonlocal some_var
some_var = 3
return some_var
return internal
def foo():
pass
def namespace_test(): pass
def namespace_test(): pass
type Alias = int
type GenericAlias[T] = list[T]
def generic_spam[T](a):
pass
class GenericMine[T: int]:
pass
aS
# The following symbols are defined in ComplexClass
# without being introduced by a 'global' statement.
glob_unassigned_meth: Any
glob_unassigned_meth_pep_695: Any
glob_unassigned_async_meth: Any
glob_unassigned_async_meth_pep_695: Any
def glob_assigned_meth(): pass
def glob_assigned_meth_pep_695[T](): pass
async def glob_assigned_async_meth(): pass
async def glob_assigned_async_meth_pep_695[T](): pass
# The following symbols are defined in ComplexClass after
# being introduced by a 'global' statement (and therefore
# are not considered as local symbols of ComplexClass).
glob_unassigned_meth_ignore: Any
glob_unassigned_meth_pep_695_ignore: Any
glob_unassigned_async_meth_ignore: Any
glob_unassigned_async_meth_pep_695_ignore: Any
def glob_assigned_meth_ignore(): pass
def glob_assigned_meth_pep_695_ignore[T](): pass
async def glob_assigned_async_meth_ignore(): pass
async def glob_assigned_async_meth_pep_695_ignore[T](): pass
class ComplexClass:
a_var = 1234
a_genexpr = (x for x in [])
a_lambda = lambda x: x
type a_type_alias = int
type a_type_alias_pep_695[T] = list[T]
class a_class: pass
class a_class_pep_695[T]: pass
def a_method(self): pass
def a_method_pep_695[T](self): pass
async def an_async_method(self): pass
async def an_async_method_pep_695[T](self): pass
@classmethod
def a_classmethod(cls): pass
@classmethod
def a_classmethod_pep_695[T](self): pass
@classmethod
async def an_async_classmethod(cls): pass
@classmethod
async def an_async_classmethod_pep_695[T](self): pass
@staticmethod
def a_staticmethod(): pass
@staticmethod
def a_staticmethod_pep_695[T](self): pass
@staticmethod
async def an_async_staticmethod(): pass
@staticmethod
async def an_async_staticmethod_pep_695[T](self): pass
# These ones will be considered as methods because of the 'def' although
# they are *not* valid methods at runtime since they are not decorated
# with @staticmethod.
def a_fakemethod(): pass
def a_fakemethod_pep_695[T](): pass
async def an_async_fakemethod(): pass
async def an_async_fakemethod_pep_695[T](): pass
# Check that those are still considered as methods
# since they are not using the 'global' keyword.
def glob_unassigned_meth(): pass
def glob_unassigned_meth_pep_695[T](): pass
async def glob_unassigned_async_meth(): pass
async def glob_unassigned_async_meth_pep_695[T](): pass
def glob_assigned_meth(): pass
def glob_assigned_meth_pep_695[T](): pass
async def glob_assigned_async_meth(): pass
async def glob_assigned_async_meth_pep_695[T](): pass
# The following are not picked as local symbols because they are not
# visible by the class at runtime (this is equivalent to having the
# definitions outside of the class).
global glob_unassigned_meth_ignore
def glob_unassigned_meth_ignore(): pass
global glob_unassigned_meth_pep_695_ignore
def glob_unassigned_meth_pep_695_ignore[T](): pass
global glob_unassigned_async_meth_ignore
async def glob_unassigned_async_meth_ignore(): pass
global glob_unassigned_async_meth_pep_695_ignore
async def glob_unassigned_async_meth_pep_695_ignore[T](): pass
global glob_assigned_meth_ignore
def glob_assigned_meth_ignore(): pass
global glob_assigned_meth_pep_695_ignore
def glob_assigned_meth_pep_695_ignore[T](): pass
global glob_assigned_async_meth_ignore
async def glob_assigned_async_meth_ignore(): pass
global glob_assigned_async_meth_pep_695_ignore
async def glob_assigned_async_meth_pep_695_ignore[T](): pass
c �\ � | j � D ] }|j � |k( s�|c S y �N)�get_children�get_name)�block�name�chs �//usr/local/lib/python3.12/test/test_symtable.py�
find_blockr � s( � �� � �"��
�;�;�=�D� ��I� #� c �� � e Zd Z ej edd� Z eed� Z eed� Z eed� Z ee d� Z
ee d� Z eed� Z eed � Z
eed
� Z eed
� Z eed� Z eed� Z eed� Z eed� Z eed
� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Z d� Z!d� Z"d� Z#d� Z$d� Z%d� Z&d � Z'd!� Z(d"� Z)d#� Z*d$� Z+d%� Z,d&� Z-d'� Z.d(� Z/y))*�SymtableTest�?�exec�Mine�a_method�spam�internal�other_internal�foo�Alias�GenericAlias�generic_spam�GenericMine�Tc � � | j | j j � d� | j | j j � d� | j | j j � d� | j | j
j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� y )N�module�class�functionz
type aliasztype parameterz
TypeVar bound)�assertEqual�top�get_typer r r r r r r �GenericAlias_innerr �generic_spam_innerr �GenericMine_innerr ��selfs r
� test_typezSymtableTest.test_type� s� � �������*�*�,�h�7�������+�+�-�w�7�������/�/�1�:�>�������+�+�-�z�:�������/�/�1�:�>�������*�*�,�j�9�������,�,�.��=�����*�*�3�3�5�7G�H�����0�0�9�9�;�\�J�����*�*�3�3�5�7G�H�����0�0�9�9�;�Z�H�����)�)�2�2�4�6F�G�����/�/�8�8�:�G�D���������*�O�<r c �L � | j | j j � d� | j | j j � d� | j | j j � d� | j | j
j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� | j | j j � d� y )Nr )�
assertGreaterr! �get_idr r r r r r r r r r&