§
    Ètºfú:  ã                  ó&  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ  G d„ d	e¦  «        Z G d
„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ dej        ¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d„ d¦  «        Z" G d„ d¦  «        Z#d8d$„Z$ ej        e"e$¦  «          G d%„ d&¦  «        Z% G d'„ d(¦  «        Z&d9d*„Z' G d+„ d,e¦  «        Z( G d-„ d.e¦  «        Z) G d/„ d0¦  «        Z* G d1„ d2¦  «        Z+e
ed3e,f                  Z- G d4„ d5e¦  «        Z. G d6„ d7e¦  «        Z/eee(gZ0dS ):é    )ÚannotationsN)ÚAnyÚCallableÚListÚTuple)ÚNoReturn)ÚaotÚcrefutilÚstyles)Úunittest)ÚTestCasec                  ó.   — e Zd Zdd„Zdd„Zdd„Zdd„ZdS )	ÚVersionTestsÚreturnÚNonec                ó   —  G d„ d¦  «        a t          j        t          ¦   «         ¦  «        } G d„ dt          j        ¦  «        a t          j        |¦  «        }t          j        ¦   «          |j        s
J d¦   «         ‚d S )Nc                  ó   — e Zd Zdd„ZdS )ÚNullVersionedr   r   c                ó   — d| _         d S )Nr   ©Úok©Úselfs    úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_persisted.pyÚ__init__zNullVersioned.__init__   ó   € Ø�”��ó    N©r   r   ©Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s(   € € € € € ðð ð ð ð ð r   r   c                  ó   — e Zd ZdZdd„ZdS )r   é   r   r   c                ó   — d| _         d S ©Nr%   r   r   s    r   ÚupgradeToVersion1zNullVersioned.upgradeToVersion1"   r   r   Nr   )r    r!   r"   ÚpersistenceVersionr(   r#   r   r   r   r      s.   € € € € € Ø!"Ððð ð ð ð ð r   zinitial upgrade not run!)r   ÚpickleÚdumpsr   Ú	VersionedÚloadsÚ	doUpgrader   )r   ÚpkclÚmnvs      r   Útest_nullVersionUpgradez$VersionTests.test_nullVersionUpgrade   s©   € ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	õ Œ|�M™OœOÑ,Ô,ˆð	ð 	ð 	ð 	ð 	�FÔ,ñ 	ô 	ð 	õ Œl˜4Ñ Ô ˆÝÔÑÔÐØŒvÐ1Ð1Ð1Ñ1Ô1Ð1Ð1Ð1r   c                ó  —  G d„ dt           j        ¦  «        at          ¦   «         }|j        s|j        r
J d¦   «         ‚t          j        |¦  «        }dt          _        t          j        |¦  «        }t          j	        ¦   «          |j        s
J d¦   «         ‚|j        s
J d¦   «         ‚t          j        |¦  «        }t          j        |¦  «        }t          j	        ¦   «          |j        dk    s
J d¦   «         ‚|j        dk    s
J d¦   «         ‚d S )	Nc                  ó8   — e Zd ZdZdgZdZdZd
d„Zd
d„Zd
d„Z	d	S )ÚMyVersionedé   Úgarbagedatar   r   r   c                ó$   — d| _         d„ | _        d S )NÚxxxc                ó   — dS )Nzcant persistr#   )Úqs    r   ú<lambda>z&MyVersioned.__init__.<locals>.<lambda>5   s   € ¨^€ r   )Úsomedatar6   r   s    r   r   zMyVersioned.__init__3   s   € Ø %�”Ø#;Ð#;�Ô Ð Ð r   c                ó&   — | xj         dz  c_         d S r'   )Úv3r   s    r   ÚupgradeToVersion3zMyVersioned.upgradeToVersion37   ó   € Ø�”˜1‘�”��r   c                ó&   — | xj         dz  c_         d S r'   )Úv4r   s    r   ÚupgradeToVersion4zMyVersioned.upgradeToVersion4:   r@   r   Nr   )
r    r!   r"   r)   ÚpersistenceForgetsr>   rB   r   r?   rC   r#   r   r   r4   r4   ,   sh   € € € € € Ø!"Ðà"/ ÐØˆBØˆBð<ð <ð <ð <ðð ð ð ðð ð ð ð ð r   r4   zhasn't been upgraded yeté   zdidn't do version 3 upgradezdidn't do version 4 upgrader%   zupgraded unnecessarily)
r   r,   r4   r>   rB   r*   r+   r)   r-   r.   )r   ÚmvÚpicklÚobjs       r   Útest_versionUpgradez VersionTests.test_versionUpgrade)   s  € ð	ð 	ð 	ð 	ð 	�&Ô*ñ 	ô 	ð 	õ" ‰]Œ]ˆØ”EÐ?˜RœUÐ?Ð?Ð%?Ñ?Ô?Ð?Ý”˜RÑ Ô ˆØ)*�Ô&ÝŒl˜5Ñ!Ô!ˆÝÔÑÔÐØŒvÐ4Ð4Ð4Ñ4Ô4Ð4ØŒvÐ4Ð4Ð4Ñ4Ô4Ð4Ý”˜SÑ!Ô!ˆÝŒl˜5Ñ!Ô!ˆÝÔÑÔÐØŒv˜Š{ˆ{ˆ{Ð4‰{Œ{ˆ{ØŒv˜Š{ˆ{ˆ{Ð4‰{Œ{ˆ{ˆ{ˆ{r   c                ó   —  G d„ dt           j        ¦  «        at          dd¦  «        }t          dd¦  «        }t          j        ||f¦  «        }~~dt          _        d„ t          _        t          j        |¦  «        \  }}t          j        ¦   «          |  	                    |j
        d¦  «         |  	                    |j
        d¦  «         |                      |j        ¦  «         |                      |j        ¦  «         d S )Nc                  ó   — e Zd Zd
d„Zdd„Zd	S )ÚClassWithCustomHashÚuniqueÚstrÚhashÚintr   r   c                ó"   — || _         || _        d S ©N)rM   rO   )r   rM   rO   s      r   r   zClassWithCustomHash.__init__O   s   € Ø$�”Ø �”	�	�	r   c                ó   — | j         S rR   )rO   r   s    r   Ú__hash__zClassWithCustomHash.__hash__S   s
   € Ø”yÐ r   N)rM   rN   rO   rP   r   r   ©r   rP   )r    r!   r"   r   rT   r#   r   r   rL   rL   N   s<   € € € € € ð!ð !ð !ð !ð!ð !ð !ð !ð !ð !r   rL   Úv1r   Úv2r%   c                ó$   — t          | dd¦  «        S ©NÚupgradedT©Úsetattrr   s    r   r;   z3VersionTests.test_nonIdentityHash.<locals>.<lambda>\   s   € ½WØ�*˜dñ>
ô >
€ r   )r   r,   rL   r*   r+   r)   r(   r-   r.   ÚassertEqualrM   Ú
assertTruerZ   )r   rV   rW   Úpkls       r   Útest_nonIdentityHashz!VersionTests.test_nonIdentityHashK   s  € ð	!ð 	!ð 	!ð 	!ð 	!¥&Ô"2ñ 	!ô 	!ð 	!õ !  qÑ)Ô)ˆÝ   qÑ)Ô)ˆåŒl˜B ˜8Ñ$Ô$ˆØ�Ø12ÕÔ.ð1
ð 1
ÕÔ-õ ”˜cÑ"Ô"‰ˆˆBÝÔÑÔÐØ×Ò˜œ DÑ)Ô)Ð)Ø×Ò˜œ DÑ)Ô)Ð)Ø�Š˜œÑ$Ô$Ð$Ø�Š˜œÑ$Ô$Ð$Ð$Ð$r   c                óö  ‡—  G d„ dt           j        ¦  «        a G d„ dt           j        ¦  «        at          ¦   «         }t          ¦   «         }t	          j        |¦  «        t	          j        |¦  «        c}Š~~dt          _        dˆfd
„}|t          _        dt          _        dd„}|t          _        t	          j        |¦  «        }t          j	        ¦   «          |  
                    |j        j        ¦  «         d S )Nc                  ó   — e Zd ZdS )Ú	ToyClassAN©r    r!   r"   r#   r   r   rc   rc   i   ó   € € € € € ØˆDr   rc   c                  ó   — e Zd ZdS )Ú	ToyClassBNrd   r#   r   r   rg   rg   l   re   r   rg   r%   r   r   r   r   c                ó`   •— t          j        ‰¦  «        | _        t          j        ¦   «          d S rR   )r*   r-   Úyr   r.   )r   ÚpklBs    €r   r(   zWVersionTests.test_upgradeDeserializesObjectsRequiringUpgrade.<locals>.upgradeToVersion1u   s)   ø€ Ý”\ $Ñ'Ô'ˆDŒFÝÔÑÔÐÐÐr   Úobjectc                ó(   — t          | dd¦  «         d S rY   r[   r   s    r   ÚsetUpgradedzQVersionTests.test_upgradeDeserializesObjectsRequiringUpgrade.<locals>.setUpgraded|   s   € Ý�D˜* dÑ+Ô+Ð+Ð+Ð+r   )r   r   r   r   )r   rk   r   r   )r   r,   rc   rg   r*   r+   r)   r(   r-   r.   r^   ri   rZ   )r   Úxri   ÚpklAr(   rm   rj   s         @r   Ú/test_upgradeDeserializesObjectsRequiringUpgradez<VersionTests.test_upgradeDeserializesObjectsRequiringUpgradef   s!  ø€ ð	ð 	ð 	ð 	ð 	�Ô(ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�Ô(ñ 	ô 	ð 	õ ‰KŒKˆÝ‰KŒKˆÝ”\ !‘_”_¥f¤l°1¡o¤oˆ
ˆˆdØˆqØ'(�	Ô$ð	ð 	ð 	ð 	ð 	ð 	ð '8�	Ô#Ø'(�	Ô$ð	,ð 	,ð 	,ð 	,ð '2�	Ô#åŒL˜ÑÔˆÝÔÑÔÐØ�Š˜œœÑ%Ô%Ð%Ð%Ð%r   Nr   )r    r!   r"   r1   rI   r`   rp   r#   r   r   r   r      se   € € € € € ð2ð 2ð 2ð 2ð& 5ð  5ð  5ð  5ðD%ð %ð %ð %ð6&ð &ð &ð &ð &ð &r   r   c                  ó   — e Zd ZdS )ÚVersionedSubClassNrd   r#   r   r   rr   rr   †   ó   € € € € € Ø€Dr   rr   c                  ó   — e Zd ZdS )ÚSecondVersionedSubClassNrd   r#   r   r   ru   ru   Š   rs   r   ru   c                  ó   — e Zd ZdS )ÚVersionedSubSubClassNrd   r#   r   r   rw   rw   Ž   rs   r   rw   c                  ó   — e Zd ZdS )ÚVersionedDiamondSubClassNrd   r#   r   r   ry   ry   ’   rs   r   ry   c                  ó2   — e Zd ZdZd	d„Zd	d„Zd	d„Zd	d„ZdS )
ÚAybabtuTestszž
    L{styles._aybabtu} gets all of classes in the inheritance hierarchy of its
    argument that are strictly between L{Versioned} and the class itself.
    r   r   c                ój   — |                       t          j        t          j        ¦  «        g ¦  «         dS )zM
        L{styles._aybabtu} of L{Versioned} itself is an empty list.
        N)r]   r   Ú_aybabtur,   r   s    r   Útest_aybabtuStrictEmptyz$AybabtuTests.test_aybabtuStrictEmptyœ   s-   € ð 	×Ò�œ­Ô)9Ñ:Ô:¸BÑ?Ô?Ð?Ð?Ð?r   c                ó`   — |                       t          j        t          ¦  «        g ¦  «         dS )z�
        There are no classes I{between} L{VersionedSubClass} and L{Versioned},
        so L{styles._aybabtu} returns an empty list.
        N)r]   r   r}   rr   r   s    r   Útest_aybabtuStrictSubclassz'AybabtuTests.test_aybabtuStrictSubclass¢   s+   € ð
 	×Ò�œÕ):Ñ;Ô;¸RÑ@Ô@Ð@Ð@Ð@r   c                ól   — |                       t          j        t          ¦  «        t          g¦  «         dS )z†
        With a sub-sub-class of L{Versioned}, L{styles._aybabtu} returns a list
        containing the intervening subclass.
        N)r]   r   r}   rw   rr   r   s    r   Útest_aybabtuSubsubclassz$AybabtuTests.test_aybabtuSubsubclass©   s/   € ð
 	×Ò�œÕ)=Ñ>Ô>ÕARÐ@SÑTÔTÐTÐTÐTr   c                ó„   — |                       t          j        t          ¦  «        t          t
          t          g¦  «         dS )z�
        For a diamond-shaped inheritance graph, L{styles._aybabtu} returns a
        list containing I{both} intermediate subclasses.
        N)r]   r   r}   ry   rw   rr   ru   r   s    r   Útest_aybabtuStrictzAybabtuTests.test_aybabtuStrict°   s@   € ð
 	×ÒÝŒOÕ4Ñ5Ô5Ý!Õ#4Õ6MÐNñ	
ô 	
ð 	
ð 	
ð 	
r   Nr   )r    r!   r"   Ú__doc__r~   r€   r‚   r„   r#   r   r   r{   r{   –   sz   € € € € € ðð ð
@ð @ð @ð @ðAð Að Að AðUð Uð Uð Uð
ð 
ð 
ð 
ð 
ð 
r   r{   c                  ó   — e Zd Zdd„ZdS )ÚMyEphemeralrn   rP   r   r   c                ó   — || _         d S rR   ©rn   ©r   rn   s     r   r   zMyEphemeral.__init__¼   ó   € ØˆŒˆˆr   N©rn   rP   r   r   r   r#   r   r   r‡   r‡   »   s(   € € € € € ðð ð ð ð ð r   r‡   c                  ó   — e Zd Zdd„ZdS )ÚEphemeralTestsr   r   c                óz  — t          d¦  «        }|                      |j        t           ¦  «         |                      |j        d¦  «         t	          j        |¦  «        }t	          j        |¦  «        }|                      |j        t          j        ¦  «         |  	                    t          |d¦  «        ¦  «         d S )Né   rn   )r‡   r]   Ú	__class__rn   r*   r+   r-   r   Ú	EphemeralÚassertFalseÚhasattr)r   ÚorG   s      r   Útest_ephemeralzEphemeralTests.test_ephemeralÁ   s–   € Ý˜‰NŒNˆØ×Ò˜œ¥kÑ2Ô2Ð2Ø×Ò˜œ˜aÑ Ô Ð å”˜Q‘”ˆÝŒL˜ÑÔˆà×Ò˜œ¥fÔ&6Ñ7Ô7Ð7Ø×Ò�  C™œÑ)Ô)Ð)Ð)Ð)r   Nr   )r    r!   r"   r–   r#   r   r   rŽ   rŽ   À   s(   € € € € € ð	*ð 	*ð 	*ð 	*ð 	*ð 	*r   rŽ   c                  ó   — e Zd Zdd„Zd	d„ZdS )
Ú
Pickleablern   rP   r   r   c                ó   — || _         d S rR   r‰   rŠ   s     r   r   zPickleable.__init__Î   r‹   r   c                ó   — | j         S rR   r‰   r   s    r   ÚgetXzPickleable.getXÑ   s	   € ØŒvˆr   NrŒ   rU   )r    r!   r"   r   r›   r#   r   r   r˜   r˜   Í   s<   € € € € € ðð ð ð ðð ð ð ð ð r   r˜   c                  ó   — e Zd ZdZdd„ZdS )ÚNotPickleablez)
    A class that is not pickleable.
    r   r   c                ó    — t          d¦  «        ‚)z9
        Raise an exception instead of pickling.
        zNot serializable.)Ú	TypeErrorr   s    r   Ú
__reduce__zNotPickleable.__reduce__Ú   s   € õ Ð+Ñ,Ô,Ð,r   N©r   r   )r    r!   r"   r…   r    r#   r   r   r�   r�   Õ   s2   € € € € € ðð ð-ð -ð -ð -ð -ð -r   r�   c                  ó   — e Zd ZdZdd„ZdS )ÚCopyRegisteredzb
    A class that is pickleable only because it is registered with the
    C{copyreg} module.
    r   r   c                ó,   — t          ¦   «         | _        dS )zE
        Ensure that this object is normally not pickleable.
        N)r�   ÚnotPickleabler   s    r   r   zCopyRegistered.__init__ç   s   € õ +™_œ_ˆÔÐÐr   Nr   )r    r!   r"   r…   r   r#   r   r   r£   r£   á   s2   € € € € € ðð ð
-ð -ð -ð -ð -ð -r   r£   c                  ó   — e Zd ZdZdS )ÚCopyRegisteredLoadedz2
    L{CopyRegistered} after unserialization.
    N)r    r!   r"   r…   r#   r   r   r§   r§   î   s   € € € € € ðð ð ð r   r§   Úcrrk   r   ú,tuple[type[CopyRegisteredLoaded], tuple[()]]c                ó   — t           dfS )zé
    Externally implement C{__reduce__} for L{CopyRegistered}.

    @param cr: The L{CopyRegistered} instance.

    @return: a 2-tuple of callable and argument list, in this case
        L{CopyRegisteredLoaded} and no arguments.
    r#   )r§   )r¨   s    r   ÚreduceCopyRegisteredr«   ô   s   € õ   Ð#Ð#r   c                  ó&   — e Zd ZU dZded<   dd„ZdS )	ÚAú
    dummy class
    zCallable[[], None]Úbmethodr   r   c                ó   — d S rR   r#   r   s    r   Úamethodz	A.amethod
  ó   € Øˆr   Nr   )r    r!   r"   r…   Ú__annotations__r±   r#   r   r   r­   r­     sB   € € € € € € ðð ð  ÐÐÑðð ð ð ð ð r   r­   c                  ó&   — e Zd ZU dZded<   dd„ZdS )	ÚBr®   r­   Úar   r   c                ó   — d S rR   r#   r   s    r   r¯   z	B.bmethod  r²   r   Nr   )r    r!   r"   r…   r³   r¯   r#   r   r   rµ   rµ     s?   € € € € € € ðð ð 	€D€D�Dðð ð ð ð ð r   rµ   r   c                 ó   — d S rR   r#   r#   r   r   Úfunktionr¹     s   € Ø€Dr   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )ÚPicklingTestsz$Test pickling of extra object types.r   r   c                ó–   — t          j        t          ¦  «        }t          j        |¦  «        }|                      |t          ¦  «         d S rR   )r*   r+   r   r-   r]   )r   rG   r•   s      r   Útest_modulezPicklingTests.test_module   s<   € Ý”�VÑ$Ô$ˆÝŒL˜ÑÔˆØ×Ò˜�FÑ#Ô#Ð#Ð#Ð#r   c                ó$  — t          d¦  «        }t          j        |j        ¦  «        }t          j        |¦  «        }|                       |¦   «         d¦  «         |                      t          |¦  «        t          |j        ¦  «        ¦  «         d S )NrE   )r˜   r*   r+   r›   r-   r]   Útype)r   rH   rG   r•   s       r   Útest_instanceMethodz!PicklingTests.test_instanceMethod%  ss   € Ý˜‰mŒmˆÝ”˜SœXÑ&Ô&ˆÝŒL˜ÑÔˆØ×Ò˜˜™œ˜aÑ Ô Ð Ø×Ò�˜a™œ¥$ s¤x¡.¤.Ñ1Ô1Ð1Ð1Ð1r   Nr   )r    r!   r"   r…   r½   rÀ   r#   r   r   r»   r»     sB   € € € € € Ø.Ð.ð$ð $ð $ð $ð
2ð 2ð 2ð 2ð 2ð 2r   r»   c                  ó   — e Zd ZdZdd„ZdS )ÚStringIOTransitionTestsz–
    When pickling a cStringIO in Python 2, it should unpickle as a BytesIO or a
    StringIO in Python 3, depending on the type of its contents.
    r   r   c                óÂ   — d}t          j        |¦  «        }|                      |t          j        ¦  «         |                      |                     ¦   «         d¦  «         dS )zg
        A cStringIO pickled with bytes in it will yield an L{io.BytesIO} on
        python 3.
        sE   ctwisted.persisted.styles
unpickleStringI
p0
(S'test'
p1
I0
tp2
Rp3
.ÚtestN)r*   r-   ÚassertIsInstanceÚioÚStringIOr]   Úgetvalue)r   ÚpickledStringIWithTextÚloadeds      r   Útest_unpickleBytesIOz,StringIOTransitionTests.test_unpickleBytesIO3  s\   € ð-ð 	õ ”Ð4Ñ5Ô5ˆØ×Ò˜f¥b¤kÑ2Ô2Ð2Ø×Ò˜ŸšÑ*Ô*¨FÑ3Ô3Ð3Ð3Ð3r   Nr   )r    r!   r"   r…   rË   r#   r   r   rÂ   rÂ   -  s2   € € € € € ðð ð
4ð 4ð 4ð 4ð 4ð 4r   rÂ   c                  ó6   — e Zd ZU d ed<   d ed<   ded<   d
d„Zd	S )ÚEvilSourcerorr¶   Úbrk   Úcrn   r   r   c                óN   — | | _         | | j         _        || j         j        _        d S rR   )r¶   rÎ   rÏ   rŠ   s     r   r   zEvilSourceror.__init__F  s!   € ØˆŒØˆŒŒØˆŒŒŒ
ˆ
ˆ
r   N)rn   rk   r   r   )r    r!   r"   r³   r   r#   r   r   rÍ   rÍ   A  sK   € € € € € € ØÐÐÑØÐÐÑØ€I€I�Iðð ð ð ð ð r   rÍ   c                  ó*   — e Zd ZU ded<   dd„Zd	d„ZdS )
ÚNonDictStaterN   Ústater   c                ó   — | j         S rR   ©rÓ   r   s    r   Ú__getstate__zNonDictState.__getstate__O  s
   € ØŒzÐr   r   c                ó   — || _         d S rR   rÕ   )r   rÓ   s     r   Ú__setstate__zNonDictState.__setstate__R  s   € ØˆŒ
ˆ
ˆ
r   N)r   rN   )rÓ   rN   r   r   )r    r!   r"   r³   rÖ   rØ   r#   r   r   rÒ   rÒ   L  sG   € € € € € € Ø€J€J�Jðð ð ð ðð ð ð ð ð r   rÒ   Ú_CircularTupleTypec                  ó^   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„ZdS )ÚAOTTestsr   r   c           
     óØ   — ddddt          ddd¦  «        ddt          j        dz   d t          f
}t	          j        t	          j        |¦  «        ¦  «        }|                      ||¦  «         d S )	Nr%   g       @y              @Tr5   r�   ÚhelloÚworld)ÚsliceÚsysÚmaxsizeÚEllipsisr	   ÚunjellyFromSourceÚjellyToSourcer]   )r   rH   ÚrtObjs      r   Útest_simpleTypeszAOTTests.test_simpleTypesZ  sp   € àØØØÝ�!�Q˜‰NŒNØØÝŒK˜!‰OØÝð
ˆõ Ô%¥cÔ&7¸Ñ&<Ô&<Ñ=Ô=ˆØ×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r   c                óB  — t          ¦   «         }t          ¦   «         }|j        |_        ||_        t	          j        t	          j        |¦  «        ¦  «        j        j        }|                      t	          j        |¦  «        j	        t	          j
        |¦  «        ¦  «         d S rR   )r­   rµ   r¯   r¶   r	   rã   rä   r]   Ú_selfOfMethodr‘   Ú_classOfMethod)r   r¶   rÎ   Úim_s       r   Útest_methodSelfIdentityz AOTTests.test_methodSelfIdentityj  sz   € Ý‰CŒCˆÝ‰CŒCˆØ”IˆŒ	ØˆŒÝÔ#¥CÔ$5°aÑ$8Ô$8Ñ9Ô9Ô;ÔCˆØ×Ò�Ô*¨3Ñ/Ô/Ô9½3Ô;MÈcÑ;RÔ;RÑSÔSÐSÐSÐSr   c                ó6  — t          ¦   «         }t          ¦   «         }|j        |_        ||_        t          j        }t          `	 |                      t
          t          j        t          j        |¦  «        ¦  «         |t          _        dS # |t          _        w xY w)z°
        If a class change after an instance has been created,
        L{aot.unjellyFromSource} shoud raise a C{TypeError} when trying to
        unjelly the instance.
        N)	r­   rµ   r¯   r¶   ÚassertRaisesrŸ   r	   rã   rä   )r   r¶   rÎ   Úsavedbmethods       r   Útest_methodNotSelfIdentityz#AOTTests.test_methodNotSelfIdentityr  s|   € õ ‰CŒCˆÝ‰CŒCˆØ”IˆŒ	ØˆŒÝ”yˆÝˆIð	%Ø×Ò�i­Ô)>ÅÔ@QÐRSÑ@TÔ@TÑUÔUÐUà$�AŒIˆIˆIø˜�AŒIÐ$Ð$Ð$Ð$s   Á8B
 Â
Bc                ó|   —  G d„ d¦  «        }|                       t          t          j         |¦   «         ¦  «         dS )z±
        L{aot.jellyToSource} should raise a C{TypeError} when trying to jelly
        an unknown type without a C{__dict__} property or C{__getstate__}
        method.
        c                  ó>   — e Zd Zedd„¦   «         Zedd„¦   «         ZdS )ú2AOTTests.test_unsupportedType.<locals>.UnknownTyper   r   c                ó   — t          ¦   «         ‚rR   ©ÚAttributeErrorr   s    r   Ú__dict__z;AOTTests.test_unsupportedType.<locals>.UnknownType.__dict__‹  ó   € å$Ñ&Ô&Ð&r   c                ó   — t          ¦   «         ‚rR   rô   r   s    r   rÖ   z?AOTTests.test_unsupportedType.<locals>.UnknownType.__getstate__�  r÷   r   Nr¡   )r    r!   r"   Úpropertyrö   rÖ   r#   r   r   ÚUnknownTyperò   Š  sR   € € € € € Øð'ð 'ð 'ñ ŒXð'ð ð'ð 'ð 'ñ ŒXð'ð 'ð 'r   rú   N)rí   rŸ   r	   rä   )r   rú   s     r   Útest_unsupportedTypezAOTTests.test_unsupportedTypeƒ  sS   € ð	'ð 	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	×Ò�)¥SÔ%6¸¸¹¼ÑFÔFÐFÐFÐFr   c                óÖ  — t          j        ¦   «         j        }d|dœ}dddddddd	d	z  t          t           j        |t          g}t          |¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «         t          j        t          j        ||g¦  «        ¦  «        }|d
         |d         u sJ ‚|d         d
d…         |d
d…         k    sJ ‚d S )NrÞ   )rÝ   Úmethodr%   r5   r�   zhe	llo

"x world!u   goodbye 
	á€� world!g      ð?éd   r   é   )	r	   Ú
AOTJellierÚ	jellyToAOr   r¹   ÚtupleÚappendrã   rä   )r   ÚajÚdÚlÚtÚujs         r   Útest_basicIdentityzAOTTests.test_basicIdentity•  së   € õ Œ^ÑÔÔ'ˆØ¨Ð,Ð,ˆàØØØ"Ø'ØØØ�‰HÝÝŒNØÝð
ˆõ �!‰HŒHˆØ	�Š�‰ŒˆØ	�Š�‰ŒˆØ	�Š�‰ŒˆÝÔ"¥3Ô#4°a¸°VÑ#<Ô#<Ñ=Ô=ˆØ�!Œu˜˜1œˆ~ˆ~ˆ~ˆ~Ø�!Œu�Q�q�SŒz˜Q˜q ˜sœVÒ#Ð#Ð#Ð#Ð#Ð#r   c                óœ   — t          ¦   «         }d|_        t          j        t          j        |¦  «        ¦  «        j        |j        k    sJ ‚d S )Nz	meringue!)rÒ   rÓ   r	   rã   rä   )r   r¶   s     r   Útest_nonDictStatezAOTTests.test_nonDictState°  sD   € Ý‰NŒNˆØˆŒÝÔ$¥SÔ%6°qÑ%9Ô%9Ñ:Ô:Ô@ÀAÄGÒKÐKÐKÐKÐKÐKr   c                ó    — t          j        t          j        t          ¦   «         ¦  «        ¦  «        }|                      |t
          ¦  «         dS )zƒ
        L{aot.jellyToSource} and L{aot.unjellyFromSource} honor functions
        registered in the pickle copy registry.
        N)r	   rã   rä   r£   rÅ   r§   )r   r  s     r   Útest_copyRegzAOTTests.test_copyRegµ  sB   € õ
 Ô"¥3Ô#4µ^Ñ5EÔ5EÑ#FÔ#FÑGÔGˆØ×Ò˜bÕ"6Ñ7Ô7Ð7Ð7Ð7r   c                óø   — t          t          g ¦  «        ¦  «        }t          j        |¦  «        }t          j        |¦  «        }|j        |u sJ ‚|j        j        |j        u sJ ‚|j        |j        j        usJ ‚d S rR   )rÍ   r	   Ú
jellyToAOTÚunjellyFromAOTr¶   rÎ   rÏ   )r   r•   Új1Úojs       r   Útest_funkyReferenceszAOTTests.test_funkyReferences½  su   € Ý�-¨Ñ+Ô+Ñ,Ô,ˆÝŒ^˜AÑÔˆÝÔ Ñ#Ô#ˆàŒt�rˆzˆzˆzˆzØŒtŒv˜œˆ~ˆ~ˆ~ˆ~ØŒt˜2œ4œ6Ð!Ð!Ð!Ð!Ð!Ð!r   c                óV  — g }|df}|                      |¦  «         t          j        |¦  «        }t          j        |¦  «        }|                      |d         t
          ¦  «         |                      |d         d         |¦  «         |                      |d         d         d¦  «         dS )zS
        L{aot.jellyToAOT} can persist circular references through tuples.
        iá  r   r%   N)r  r	   r  r  rÅ   r  ÚassertIsr]   )r   r  r  r  r  s        r   Útest_circularTuplezAOTTests.test_circularTupleÆ  sš   € ð !#ˆØ�ˆIˆØ	�Š�‰ŒˆÝŒ^˜AÑÔˆÝÔ Ñ#Ô#ˆØ×Ò˜b œe¥UÑ+Ô+Ð+Ø�Š�b˜”e˜A”h Ñ#Ô#Ð#Ø×Ò˜˜Aœ˜qœ 4Ñ(Ô(Ð(Ð(Ð(r   c                ó‚   — |                       t          j        ddg ii¦  «        t          j        d¦  «        ¦  «         dS )z:
        The generated serialization is indented.
        rÝ   rÞ   z|                app={
                  'hello':{
                    'world':[],
                    },
                  }N)r]   r	   rä   ÚtextwrapÚdedentr   s    r   ÚtestIndentifyzAOTTests.testIndentifyÓ  sQ   € ð 	×ÒÝÔ˜w¨°"¨Ð6Ñ7Ô7ÝŒOðñô ñ
	
ô 
	
ð 
	
ð 
	
ð 
	
r   Nr   )r    r!   r"   ræ   rë   rï   rû   r	  r  r  r  r  r  r#   r   r   rÛ   rÛ   Y  sè   € € € € € ð%ð %ð %ð %ð Tð Tð Tð Tð%ð %ð %ð %ð"Gð Gð Gð Gð$$ð $ð $ð $ð6Lð Lð Lð Lð
8ð 8ð 8ð 8ð"ð "ð "ð "ð)ð )ð )ð )ð
ð 
ð 
ð 
ð 
ð 
r   rÛ   c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )ÚCrefUtilTestsz 
    Tests for L{crefutil}.
    r   r   c                ór   — t          j        i ¦  «        }|                      t          |j        dd¦  «         dS )zO
        L{crefutil._DictKeyAndValue} only support keys C{0} and C{1}.
        r5   r�   N)r
   Ú_DictKeyAndValuerí   ÚRuntimeErrorÚ__setitem__©r   r  s     r   Útest_dictUnknownKeyz!CrefUtilTests.test_dictUnknownKeyé  s6   € õ Ô% bÑ)Ô)ˆØ×Ò�,¨¬°q¸!Ñ<Ô<Ð<Ð<Ð<r   c                óz   — t          j        ¦   «         }d|d<   |                      t          |j        dd¦  «         dS )zI
        L{crefutil._Defer} can be assigned a key only one time.
        r%   r   N)r
   Ú_Deferrí   r  r   r!  s     r   Útest_deferSetMultipleTimesz(CrefUtilTests.test_deferSetMultipleTimesð  s<   € õ ŒOÑÔˆØˆˆ!‰Ø×Ò�,¨¬°q¸!Ñ<Ô<Ð<Ð<Ð<r   c                ó‚   — t          j        g d¢t          ¦  «        }|                      t          |j        i d¦  «         dS )z¹
        A L{crefutil._Container} where all of its elements are known at
        construction time is nonsensical and will result in errors in any call
        to addDependant.
        )r%   r5   r�   z	ignore-meN)r
   Ú
_ContainerÚlistrí   ÚAssertionErrorÚaddDependant)r   Ú	containers     r   Ú&test_containerWhereAllElementsAreKnownz4CrefUtilTests.test_containerWhereAllElementsAreKnownø  s=   € õ Ô'¨	¨	¨	µ4Ñ8Ô8ˆ	Ø×Ò�.¨)Ô*@À"ÀkÑRÔRÐRÐRÐRr   c                ó„   — |                       t          t          ¦   «         j        t	          j        ¦   «         d¦  «         dS )zù
        If a dictionary key contains a circular reference (which is probably a
        bad practice anyway) it will be resolved by a
        L{crefutil._DictKeyAndValue}, not by placing a L{crefutil.NotKnown}
        into a dictionary key.
        ÚvalueN)rí   r)  Údictr   r
   ÚNotKnownr   s    r   Ú.test_dontPutCircularReferencesInDictionaryKeysz<CrefUtilTests.test_dontPutCircularReferencesInDictionaryKeys  s?   € ð 	×ÒÝ�D™FœFÔ.µÔ0AÑ0CÔ0CÀWñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó�   — |                       t          t          j        dt          j        ¦   «         t
          ¦  «        ¦  «         dS )zÛ
        L{crefutil._InstanceMethod} raises L{AssertionError} to indicate it
        should not be called.  This should not be possible with any of its API
        clients, but is provided for helping to debug.
        Úno_nameN)rí   r)  r
   Ú_InstanceMethodr0  r¿   r   s    r   Ú*test_dontCallInstanceMethodsThatArentReadyz8CrefUtilTests.test_dontCallInstanceMethodsThatArentReady  sD   € ð 	×ÒÝÝÔ$ YµÔ0AÑ0CÔ0CÅTÑJÔJñ	
ô 	
ð 	
ð 	
ð 	
r   Nr   )	r    r!   r"   r…   r"  r%  r,  r1  r5  r#   r   r   r  r  ä  s†   € € € € € ðð ð=ð =ð =ð =ð=ð =ð =ð =ðSð Sð Sð Sð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð 	
ð 	
r   r  )r¨   rk   r   r©   r   )1Ú
__future__r   ÚcopyregrÆ   r*   rà   r  Útypingr   r   r   r   Útyping_extensionsr   Útwisted.persistedr	   r
   r   Útwisted.trialr   Útwisted.trial.unittestr   r   r,   rr   ru   rw   ry   r{   r’   r‡   rŽ   r˜   r�   r£   r§   r«   r­   rµ   r¹   r»   rÂ   rÍ   rÒ   rP   rÙ   rÛ   r  Ú	testCasesr#   r   r   ú<module>r>     s…  ðð #Ð "Ð "Ð "Ð "Ð "ð €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à &Ð &Ð &Ð &Ð &Ð &ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +ðn&ð n&ð n&ð n&ð n&�8ñ n&ô n&ð n&ðb	ð 	ð 	ð 	ð 	˜Ô(ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜fÔ.ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð3Ð5Lñ 	ô 	ð 	ð"
ð "
ð "
ð "
ð "
�8ñ "
ô "
ð "
ðJð ð ð ð �&Ô"ñ ô ð ð

*ð 
*ð 
*ð 
*ð 
*�Xñ 
*ô 
*ð 
*ðð ð ð ð ñ ô ð ð	-ð 	-ð 	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð
-ð 
-ð 
-ð 
-ð 
-ñ 
-ô 
-ð 
-ðð ð ð ð ñ ô ð ð	$ð 	$ð 	$ð 	$ð €„ˆ~Ð3Ñ 4Ô 4Ð 4ðð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð	ð 	ð 	ð 	ð2ð 2ð 2ð 2ð 2�Hñ 2ô 2ð 2ð 4ð 4ð 4ð 4ð 4˜hñ 4ô 4ð 4ð(ð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð ˜%Ð 4°cÐ 9Ô:Ô;Ð ðH
ð H
ð H
ð H
ð H
ˆxñ H
ô H
ð H
ðV1
ð 1
ð 1
ð 1
ð 1
�Hñ 1
ô 1
ð 1
ðh ˜>¨=Ð9€	€	€	r   