Sindbad~EG File Manager
�
'Μg�: � �b � d Z ddlZddlZddlZddlZ ddlmZ ddlmZ ddl m
Z
G d� d � Z G d
� de� Ze G d� d
e� � Z
e G d� de� � Z G d� de� Z G d� de� Z G d� d� Z G d� deej$ � Z G d� d� Z G d� dee� Z G d� dee� Z G d� dee� Z G d � d!eej$ � Z G d"� d#� Z G d$� d%ee� Z G d&� d'ee� Z G d(� d)ee� Z G d*� d+eej$ � Z G d,� d-e� Ze G d.� d/e� � Ze G d0� d1e� � Z e G d2� d3ee� � Z!e
jD G d4� d5eej$ � � Z#e$d6k( r ejJ � yy# e$ r d� ZY ���w xY w# e$ r d� ZY ���w xY w)7zB
Tests for object finalization semantics, as outlined in PEP 442.
� N)�with_tp_delc �$ � G d� dt � }|S )Nc � � e Zd Zd� Zy)�with_tp_del.<locals>.Cc � � t d� �)Nzrequires _testcapi.with_tp_del�� TypeError��cls�args�kwargss �3/usr/local/lib/python3.12/test/test_finalization.py�__new__zwith_tp_del.<locals>.C.__new__ s � �� @�A�A� N��__name__�
__module__�__qualname__r � r r �Cr s � �
Br r )�object�r r s r r r
s � � B�� B� �r )�
without_gcc � � G d� d� }|S )Nc � � e Zd Zd� Zy)�without_gc.<locals>.Cc � � t d� �)Nzrequires _testcapi.without_gcr r
s r r zwithout_gc.<locals>.C.__new__ s � �� ?�@�@r Nr r r r r r s � �
Ar r r r s r r r s � � A� A� �r )�supportc �x � e Zd ZdZg Zg Zg Zg ZdZdZ e
d� � Ze
ej d� � � Zd� Zd� Zd� Zy )
�NonGCSimpleBasezd
The base class for all the objects under test, equipped with various
testing features.
Fr c �8 � | j j � | j j � t j j � t j
� | j j � | j j � y �N)� survivors�clear�errors�gc�garbage�collect� del_calls�tp_del_calls�r s r �_cleanupzNonGCSimpleBase._cleanup. s] � ��
�
�����
�
����
�
�
����
�
�
���
�
��������� r c # � K � t j � 5 | j j � | j j � dt
_ d�� | j r| j d � dt
_ | j � ddd� y# dt
_ | j � w xY w# 1 sw Y yxY w�w)zI
A context manager to use around all finalization tests.
FNr T) r �
disable_gcr) r$ r* r � _cleaningr% r, r+ s r �testzNonGCSimpleBase.test7 s� � �� � �
�
�
!��M�M���!����"�"�$�(-�O�%�
���:�:��*�*�Q�-�'� � -1��)����� "�
!�� -1��)������ "�
!�s5 �C �A B=�B�8B=� C �B:�:B=�=C�C c � � y)z8
Check the object is sane (non-broken).
Nr ��selfs r �check_sanityzNonGCSimpleBase.check_sanityI � � r c �
� | j sE| j j t | � � | j � | j � yy# t $ r%}| j j |� Y d}~yd}~ww xY w)z�
PEP 442 finalizer. Record that this was called, check the
object is in a sane state, and invoke a side effect.
N)r/ r) �append�idr4 �side_effect� Exceptionr% �r3 �es r �__del__zNonGCSimpleBase.__del__N sh � �
"��>�>����%�%�b��h�/��!�!�#�� � �"� "�� � "��K�K���q�!�!�� "�� �AA � B�A=�=Bc � � y)z6
A side effect called on destruction.
Nr r2 s r r9 zNonGCSimpleBase.side_effect[ r5 r N)r r r �__doc__r# r) r* r% r/ � __slots__�classmethodr, �
contextlib�contextmanagerr0 r4 r= r9 r r r r r sj � ��
�I��I��L�
�F��I��I��!� �!� ����� � �� �
"�r r c � � e Zd Zd� Zd� Zy)�
SimpleBasec �$ � t | � | _ y r"