ó
    ×›‘hú:  ã                  óÆ  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
Jr  S SKJr  S SKJrJrJr  S SKJr  S SKJr   " S S	\5      r " S
 S\R.                  5      r " S S\R.                  5      r " S S\5      r " S S\\5      r " S S\5      r " S S\R:                  5      r " S S\5      r " S S5      r  " S S5      r! " S S5      r" " S S5      r#S3S  jr$\R                  " \"\$5         " S! S"5      r% " S# S$5      r&S4S% jr' " S& S'\5      r( " S( S)\5      r) " S* S+5      r* " S, S-5      r+\
\S.\,4      r- " S/ S0\5      r. " S1 S2\5      r/\\\(/r0g)5é    )ÚannotationsN)ÚAnyÚCallableÚListÚTuple)ÚNoReturn)ÚaotÚcrefutilÚstyles)Úunittest)ÚTestCasec                  ó<   • \ rS rSrSS jrSS jrSS jrSS jrSrg)	ÚVersionTestsé   c                ó  •  " S S5      q [        R                  " [        5       5      n " S S[        R                  5      q [        R
                  " U5      n[        R                  " 5         UR                  (       d   S5       eg )Nc                  ó   • \ rS rSrSS jrSrg)ÚNullVersionedé   c                ó   • SU l         g )Nr   ©Úok©Úselfs    Ú_C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/test/test_persisted.pyÚ__init__ÚNullVersioned.__init__   ó	   € Ø�•ó    r   N©ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__© r   r   r   r      s   † ÷r   r   c                  ó"   • \ rS rSrSrSS jrSrg)r   é   é   c                ó   • SU l         g ©Nr+   r   r   s    r   ÚupgradeToVersion1ÚNullVersioned.upgradeToVersion1"   r   r   r   Nr   )r#   r$   r%   r&   ÚpersistenceVersionr.   r'   r(   r   r   r   r      s   † Ø!"Ð÷r   zinitial upgrade not run!)r   ÚpickleÚdumpsr   Ú	VersionedÚloadsÚ	doUpgrader   )r   ÚpkclÚmnvs      r   Útest_nullVersionUpgradeÚ$VersionTests.test_nullVersionUpgrade   s^   € ÷	ñ 	ô �|Š|œM›OÓ,ˆô	œF×,Ñ,ô 	ô �lŠl˜4Ó ˆÜ×ÒÔØ�v�vÐ1Ð1Ó1‰vr   c                ór  •  " S S[         R                  5      q[        5       nUR                  (       d  UR                  (       a   S5       e[
        R                  " U5      nS[        l        [
        R                  " U5      n[         R                  " 5         UR                  (       d   S5       eUR                  (       d   S5       e[
        R                  " U5      n[
        R                  " U5      n[         R                  " 5         UR                  S:X  d   S5       eUR                  S:X  d   S5       eg )	Nc                  óD   • \ rS rSrSrS/rSrSrS
S jrS
S jr	S
S jr
Srg	)ÚMyVersionedé,   é   Úgarbagedatar   c                ó"   • SU l         S U l        g )NÚxxxc                ó   • g)Nzcant persistr(   )Úqs    r   Ú<lambda>Ú&MyVersioned.__init__.<locals>.<lambda>5   s   € ¨^r   )Úsomedatar?   r   s    r   r   ÚMyVersioned.__init__3   s   € Ø %�”Ù#;�Õ r   c                ó.   • U =R                   S-  sl         g r-   )Úv3r   s    r   ÚupgradeToVersion3ÚMyVersioned.upgradeToVersion37   ó   € Ø—’˜1‘–r   c                ó.   • U =R                   S-  sl         g r-   )Úv4r   s    r   ÚupgradeToVersion4ÚMyVersioned.upgradeToVersion4:   rL   r   )r?   rF   Nr   )r#   r$   r%   r&   r0   ÚpersistenceForgetsrI   rN   r   rJ   rO   r'   r(   r   r   r<   r<   ,   s)   † Ø!"Ðà"/ ÐØˆBØˆBô<ô÷r   r<   zhasn't been upgraded yeté   zdidn't do version 3 upgradezdidn't do version 4 upgrader+   zupgraded unnecessarily)
r   r3   r<   rI   rN   r1   r2   r0   r4   r5   )r   ÚmvÚpicklÚobjs       r   Útest_versionUpgradeÚ VersionTests.test_versionUpgrade)   sÞ   € ô	œ&×*Ñ*ô 	ô" ‹]ˆØ—E—E˜RŸUŸUÐ?Ð%?Ó?Ð#Ü—’˜RÓ ˆØ)*ŒÔ&Ü�lŠl˜5Ó!ˆÜ×ÒÔØ�v�vÐ4Ð4Ó4ˆvØ�v�vÐ4Ð4Ó4ˆvÜ—’˜SÓ!ˆÜ�lŠl˜5Ó!ˆÜ×ÒÔØ�v‰v˜‹{Ð4Ð4Ó4ˆ{Ø�v‰v˜‹{Ð4Ð4Ó4‰{r   c                óü  •  " S S[         R                  5      q[        SS5      n[        SS5      n[        R                  " X45      nAAS[        l        S [        l        [        R                  " U5      u  p[         R                  " 5         U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  5        g )Nc                  ó(   • \ rS rSrSS jrSS jrSrg)ÚClassWithCustomHashéN   c                ó   • Xl         X l        g ©N)ÚuniqueÚhash)r   r^   r_   s      r   r   ÚClassWithCustomHash.__init__O   s   € Ø$”Ø •	r   c                ó   • U R                   $ r]   )r_   r   s    r   Ú__hash__ÚClassWithCustomHash.__hash__S   s   € Ø—y‘yÐ r   )r_   r^   N)r^   Ústrr_   Úintr    r!   ©r    re   )r#   r$   r%   r&   r   rb   r'   r(   r   r   rZ   rZ   N   s   † ô!÷!r   rZ   Úv1r   Úv2r+   c                ó   • [        U SS5      $ ©NÚupgradedT©Úsetattrr   s    r   rD   Ú3VersionTests.test_nonIdentityHash.<locals>.<lambda>\   s   € ¼WØ�*˜dô>
r   )r   r3   rZ   r1   r2   r0   r.   r4   r5   ÚassertEqualr^   Ú
assertTruerk   )r   rg   rh   Úpkls       r   Útest_nonIdentityHashÚ!VersionTests.test_nonIdentityHashK   s½   € ô	!¤&×"2Ñ"2ô 	!ô !  qÓ)ˆÜ   qÓ)ˆä�lŠl˜B˜8Ó$ˆØ�Ø12ÔÔ.ñ1
ÔÔ-ô —’˜cÓ"‰ˆÜ×ÒÔØ×Ñ˜Ÿ™ DÔ)Ø×Ñ˜Ÿ™ DÔ)Ø�‰˜Ÿ™Ô$Ø�‰˜Ÿ™Õ$r   c                ó  ^•  " S S[         R                  5      q " S S[         R                  5      q[        5       n[        5       n[        R
                  " U5      [        R
                  " U5      snmAAS[        l        SU4S jjnU[        l        S[        l        S	S jnU[        l        [        R                  " U5      n[         R                  " 5         U R                  UR                  R                  5        g )
Nc                  ó   • \ rS rSrSrg)Ú	ToyClassAéi   r(   N©r#   r$   r%   r&   r'   r(   r   r   rv   rv   i   ó   † Úr   rv   c                  ó   • \ rS rSrSrg)Ú	ToyClassBél   r(   Nrx   r(   r   r   r{   r{   l   ry   r   r{   r+   c                óf   >• [         R                  " T5      U l        [        R                  " 5         g r]   )r1   r4   Úyr   r5   )r   ÚpklBs    €r   r.   ÚWVersionTests.test_upgradeDeserializesObjectsRequiringUpgrade.<locals>.upgradeToVersion1u   s   ø€ Ü—\’\ $Ó'ˆDŒFÜ×ÒÕr   c                ó   • [        U SS5        g rj   rl   r   s    r   ÚsetUpgradedÚQVersionTests.test_upgradeDeserializesObjectsRequiringUpgrade.<locals>.setUpgraded|   s   € Ü�D˜* dÕ+r   )r   r   r    r!   )r   Úobjectr    r!   )r   r3   rv   r{   r1   r2   r0   r.   r4   r5   rp   r~   rk   )r   Úxr~   ÚpklAr.   r‚   r   s         @r   Ú/test_upgradeDeserializesObjectsRequiringUpgradeÚ<VersionTests.test_upgradeDeserializesObjectsRequiringUpgradef   s³   ø€ ô	œ×(Ñ(ô 	ô	œ×(Ñ(ô 	ô ‹KˆÜ‹KˆÜ—\’\ !“_¤f§l¢l°1£oˆ
ˆˆdØˆqØ'(Œ	Ô$÷	ð '8Œ	Ô#Ø'(Œ	Ô$ô	,ð '2Œ	Ô#ä�LŠL˜ÓˆÜ×ÒÔØ�‰˜Ÿ™Ÿ™Õ%r   )r~   Nr   )	r#   r$   r%   r&   r8   rV   rr   r‡   r'   r(   r   r   r   r      s   † ô2ô& 5ôD%÷6&r   r   c                  ó   • \ rS rSrSrg)ÚVersionedSubClassé†   r(   Nrx   r(   r   r   rŠ   rŠ   †   ó   † Úr   rŠ   c                  ó   • \ rS rSrSrg)ÚSecondVersionedSubClasséŠ   r(   Nrx   r(   r   r   rŽ   rŽ   Š   rŒ   r   rŽ   c                  ó   • \ rS rSrSrg)ÚVersionedSubSubClasséŽ   r(   Nrx   r(   r   r   r‘   r‘   Ž   rŒ   r   r‘   c                  ó   • \ rS rSrSrg)ÚVersionedDiamondSubClassé’   r(   Nrx   r(   r   r   r”   r”   ’   rŒ   r   r”   c                  ó@   • \ rS rSrSrS	S jrS	S jrS	S jrS	S jrSr	g)
ÚAybabtuTestsé–   z’
L{styles._aybabtu} gets all of classes in the inheritance hierarchy of its
argument that are strictly between L{Versioned} and the class itself.
c                ól   • U R                  [        R                  " [        R                  5      / 5        g)z=
L{styles._aybabtu} of L{Versioned} itself is an empty list.
N)ro   r   Ú_aybabtur3   r   s    r   Útest_aybabtuStrictEmptyÚ$AybabtuTests.test_aybabtuStrictEmptyœ   s#   € ð 	×ÑœŸš¬×)9Ñ)9Ó:¸BÕ?r   c                óX   • U R                  [        R                  " [        5      / 5        g)zu
There are no classes I{between} L{VersionedSubClass} and L{Versioned},
so L{styles._aybabtu} returns an empty list.
N)ro   r   rš   rŠ   r   s    r   Útest_aybabtuStrictSubclassÚ'AybabtuTests.test_aybabtuStrictSubclass¢   s   € ð
 	×ÑœŸšÔ):Ó;¸RÕ@r   c                ób   • U R                  [        R                  " [        5      [        /5        g)zn
With a sub-sub-class of L{Versioned}, L{styles._aybabtu} returns a list
containing the intervening subclass.
N)ro   r   rš   r‘   rŠ   r   s    r   Útest_aybabtuSubsubclassÚ$AybabtuTests.test_aybabtuSubsubclass©   s"   € ð
 	×ÑœŸšÔ)=Ó>ÔARÐ@SÕTr   c                óv   • U R                  [        R                  " [        5      [        [
        [        /5        g)zw
For a diamond-shaped inheritance graph, L{styles._aybabtu} returns a
list containing I{both} intermediate subclasses.
N)ro   r   rš   r”   r‘   rŠ   rŽ   r   s    r   Útest_aybabtuStrictÚAybabtuTests.test_aybabtuStrict°   s+   € ð
 	×ÑÜ�OŠOÔ4Ó5Ü!Ô#4Ô6MÐNõ	
r   r(   Nr   )
r#   r$   r%   r&   Ú__doc__r›   rž   r¡   r¤   r'   r(   r   r   r—   r—   –   s   † ñô
@ôAôU÷
r   r—   c                  ó   • \ rS rSrSS jrSrg)ÚMyEphemeralé»   c                ó   • Xl         g r]   ©r…   ©r   r…   s     r   r   ÚMyEphemeral.__init__¼   ó   € Ø�r   r«   N©r…   re   r    r!   r"   r(   r   r   r¨   r¨   »   s   † ÷r   r¨   c                  ó   • \ rS rSrSS jrSrg)ÚEphemeralTestséÀ   c                ót  • [        S5      nU R                  UR                  [         5        U R                  UR                  S5        [        R
                  " U5      n[        R                  " U5      nU R                  UR                  [        R                  5        U R                  [        US5      5        g )Né   r…   )r¨   ro   Ú	__class__r…   r1   r2   r4   r   Ú	EphemeralÚassertFalseÚhasattr)r   ÚorT   s      r   Útest_ephemeralÚEphemeralTests.test_ephemeralÁ   s|   € Ü˜‹NˆØ×Ñ˜Ÿ™¤kÔ2Ø×Ñ˜Ÿ™˜aÔ ä—’˜Q“ˆÜ�LŠL˜Óˆà×Ñ˜Ÿ™¤f×&6Ñ&6Ô7Ø×Ñœ  C›Õ)r   r(   Nr   )r#   r$   r%   r&   rº   r'   r(   r   r   r±   r±   À   s   † ÷	*r   r±   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú
PickleableéÍ   c                ó   • Xl         g r]   r«   r¬   s     r   r   ÚPickleable.__init__Î   r®   r   c                ó   • U R                   $ r]   r«   r   s    r   ÚgetXÚPickleable.getXÑ   s   € Ø�v‰vˆr   r«   Nr¯   rf   )r#   r$   r%   r&   r   rÂ   r'   r(   r   r   r½   r½   Í   s   † ô÷r   r½   c                  ó"   • \ rS rSrSrSS jrSrg)ÚNotPickleableéÕ   z!
A class that is not pickleable.
c                ó   • [        S5      e)z)
Raise an exception instead of pickling.
zNot serializable.)Ú	TypeErrorr   s    r   Ú
__reduce__ÚNotPickleable.__reduce__Ú   s   € ô Ð+Ó,Ð,r   r(   N©r    r   )r#   r$   r%   r&   r¦   rÉ   r'   r(   r   r   rÅ   rÅ   Õ   s   † ñ÷-r   rÅ   c                  ó"   • \ rS rSrSrSS jrSrg)ÚCopyRegisteredéá   zV
A class that is pickleable only because it is registered with the
C{copyreg} module.
c                ó"   • [        5       U l        g)z5
Ensure that this object is normally not pickleable.
N)rÅ   ÚnotPickleabler   s    r   r   ÚCopyRegistered.__init__ç   s   € ô +›_ˆÕr   )rÐ   Nr   )r#   r$   r%   r&   r¦   r   r'   r(   r   r   rÍ   rÍ   á   s   † ñ÷
-r   rÍ   c                  ó   • \ rS rSrSrSrg)ÚCopyRegisteredLoadedéî   z*
L{CopyRegistered} after unserialization.
r(   N)r#   r$   r%   r&   r¦   r'   r(   r   r   rÓ   rÓ   î   s   † ôr   rÓ   c                ó   • [         S4$ )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Ó   )Úcrs    r   ÚreduceCopyRegisteredr×   ô   s   € ô   Ð#Ð#r   c                  ó.   • \ rS rSr% SrS\S'   SS jrSrg)	ÚAi  ú
dummy class
zCallable[[], None]Úbmethodc                ó   • g r]   r(   r   s    r   ÚamethodÚ	A.amethod
  ó   € Ør   r(   Nr   )r#   r$   r%   r&   r¦   Ú__annotations__rÝ   r'   r(   r   r   rÙ   rÙ     s   ‡ ñð  Ó÷r   rÙ   c                  ó.   • \ rS rSr% SrS\S'   SS jrSrg)	ÚBi  rÚ   rÙ   Úac                ó   • g r]   r(   r   s    r   rÛ   Ú	B.bmethod  rß   r   r(   Nr   )r#   r$   r%   r&   r¦   rà   rÛ   r'   r(   r   r   râ   râ     s   ‡ ñð 	ƒD÷r   râ   c                 ó   • g r]   r(   r(   r   r   Úfunktionrç     s   € Ør   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)ÚPicklingTestsi  z$Test pickling of extra object types.c                ó�   • [         R                  " [        5      n[         R                  " U5      nU R	                  U[        5        g r]   )r1   r2   r   r4   ro   )r   rT   r¹   s      r   Útest_moduleÚPicklingTests.test_module   s.   € Ü—’œVÓ$ˆÜ�LŠL˜ÓˆØ×Ñ˜œFÕ#r   c                ó  • [        S5      n[        R                  " UR                  5      n[        R                  " U5      nU R                  U" 5       S5        U R                  [        U5      [        UR                  5      5        g )NrR   )r½   r1   r2   rÂ   r4   ro   Útype)r   rU   rT   r¹   s       r   Útest_instanceMethodÚ!PicklingTests.test_instanceMethod%  sY   € Ü˜‹mˆÜ—’˜SŸX™XÓ&ˆÜ�LŠL˜ÓˆØ×Ñ™›˜aÔ Ø×Ñœ˜a›¤$ s§x¡x£.Õ1r   r(   Nr   )r#   r$   r%   r&   r¦   rë   rï   r'   r(   r   r   ré   ré     s   † Ù.ô$÷
2r   ré   c                  ó"   • \ rS rSrSrSS jrSrg)ÚStringIOTransitionTestsi-  zŠ
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.
c                ó´   • Sn[         R                  " U5      nU R                  U[        R                  5        U R                  UR                  5       S5        g)zO
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)r1   r4   ÚassertIsInstanceÚioÚStringIOro   Úgetvalue)r   ÚpickledStringIWithTextÚloadeds      r   Útest_unpickleBytesIOÚ,StringIOTransitionTests.test_unpickleBytesIO3  sH   € ð-ð 	ô —’Ð4Ó5ˆØ×Ñ˜f¤b§k¡kÔ2Ø×Ñ˜Ÿ™Ó*¨FÕ3r   r(   Nr   )r#   r$   r%   r&   r¦   rû   r'   r(   r   r   rò   rò   -  s   † ñ÷
4r   rò   c                  ó>   • \ rS rSr% S \S'   S \S'   S\S'   S	S jrSrg)
ÚEvilSourceroriA  rã   Úbr„   Úcc                ód   • X l         X R                   l        XR                   R                  l        g r]   )rã   rÿ   r   r¬   s     r   r   ÚEvilSourceror.__init__F  s   € ØŒØ�‰ŒØ�‰�‰�
r   )rã   N)r…   r„   r    r!   )r#   r$   r%   r&   rà   r   r'   r(   r   r   rþ   rþ   A  s   ‡ ØÓØÓØƒI÷r   rþ   c                  ó4   • \ rS rSr% S\S'   SS jrS	S jrSrg)
ÚNonDictStateiL  rd   Ústatec                ó   • U R                   $ r]   ©r  r   s    r   Ú__getstate__ÚNonDictState.__getstate__O  s   € Ø�z‰zÐr   c                ó   • Xl         g r]   r  )r   r  s     r   Ú__setstate__ÚNonDictState.__setstate__R  s   € Ø�
r   r  N)r    rd   )r  rd   r    r!   )r#   r$   r%   r&   rà   r  r  r'   r(   r   r   r  r  L  s   ‡ ØƒJô÷r   r  Ú_CircularTupleTypec                  óx   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSrg)ÚAOTTestsiY  c           
     óÒ   • SSSS[        SSS5      SS[        R                  S-   S [        4
n[        R
                  " [        R                  " U5      5      nU R                  X5        g )	Nr+   g       @y              @Tr>   r´   ÚhelloÚworld)ÚsliceÚsysÚmaxsizeÚEllipsisr	   ÚunjellyFromSourceÚjellyToSourcero   )r   rU   ÚrtObjs      r   Útest_simpleTypesÚAOTTests.test_simpleTypesZ  sb   € àØØØÜ�!�Q˜‹NØØÜ�K‰K˜!‰OØÜð
ˆô ×%Ò%¤c×&7Ò&7¸Ó&<Ó=ˆØ×Ñ˜Õ$r   c                ó^  • [        5       n[        5       nUR                  Ul        Xl        [        R
                  " [        R                  " U5      5      R                  R                  nU R                  [        R                  " U5      R                  [        R                  " U5      5        g r]   )rÙ   râ   rÛ   rã   r	   r  r  ro   Ú_selfOfMethodrµ   Ú_classOfMethod)r   rã   rÿ   Úim_s       r   Útest_methodSelfIdentityÚ AOTTests.test_methodSelfIdentityj  ss   € Ü‹CˆÜ‹CˆØ—I‘IˆŒ	ØŒÜ×#Ò#¤C×$5Ò$5°aÓ$8Ó9×;Ñ;×CÑCˆØ×Ñœ×*Ò*¨3Ó/×9Ñ9¼3×;MÒ;MÈcÓ;RÕSr   c                ó0  • [        5       n[        5       nUR                  Ul        Xl        [        R                  n[        ? U R	                  [
        [        R                  [        R                  " U5      5        U[        l        g! U[        l        f = f)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_methodNotSelfIdentityÚ#AOTTests.test_methodNotSelfIdentityr  sh   € ô ‹CˆÜ‹CˆØ—I‘IˆŒ	ØŒÜ—y‘yˆÜˆIð	%Ø×Ñœi¬×)>Ñ)>Ä×@QÒ@QÐRSÓ@TÔUà$ŒA�Iø˜ŒA�Iús   Á9B ÂBc                ól   •  " S S5      nU R                  [        [        R                  U" 5       5        g)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                  ó<   • \ rS rSr\SS j5       r\SS j5       rSrg)Ú2AOTTests.test_unsupportedType.<locals>.UnknownTypeiŠ  c                ó   • [        5       er]   ©ÚAttributeErrorr   s    r   Ú__dict__Ú;AOTTests.test_unsupportedType.<locals>.UnknownType.__dict__‹  ó   € ä$Ó&Ð&r   c                ó   • [        5       er]   r+  r   s    r   r  Ú?AOTTests.test_unsupportedType.<locals>.UnknownType.__getstate__�  r/  r   r(   NrË   )r#   r$   r%   r&   Úpropertyr-  r  r'   r(   r   r   ÚUnknownTyper)  Š  s(   † Øó'ó ð'ð ó'ó ó'r   r3  N)r#  rÈ   r	   r  )r   r3  s     r   Útest_unsupportedTypeÚAOTTests.test_unsupportedTypeƒ  s(   € ÷	'ñ 	'ð 	×Ñœ)¤S×%6Ñ%6¹»ÕFr   c                ó¨  • [         R                  " 5       R                  nSUS.nSSSSSSSS	S	-  [        [         R                  U[        /n[        U5      nUR                  U5        UR                  U5        UR                  U5        [         R                  " [         R                  " X3/5      5      nUS
   US   L d   eUS   S
S US
S :X  d   eg )Nr  )r  Úmethodr+   r>   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_basicIdentityÚAOTTests.test_basicIdentity•  sÎ   € ô �^Š^Ó×'Ñ'ˆØ¨Ñ,ˆàØØØ"Ø'ØØØ�‰HÜÜ�N‰NØÜð
ˆô �!‹HˆØ	�‰�ŒØ	�‰�ŒØ	�‰�ŒÜ×"Ò"¤3×#4Ò#4°a°VÓ#<Ó=ˆØ�!‰u˜˜1™Š~Ðˆ~Ø�!‰u�Q�qˆz˜Q˜q ˜VÓ#Ð#Ñ#r   c                ó®   • [        5       nSUl        [        R                  " [        R                  " U5      5      R                  UR                  :X  d   eg )Nz	meringue!)r  r  r	   r  r  )r   rã   s     r   Útest_nonDictStateÚAOTTests.test_nonDictState°  s>   € Ü‹NˆØˆŒÜ×$Ò$¤S×%6Ò%6°qÓ%9Ó:×@Ñ@ÀAÇGÁGÓKÐKÑKr   c                ó”   • [         R                  " [         R                  " [        5       5      5      nU R	                  U[
        5        g)zk
L{aot.jellyToSource} and L{aot.unjellyFromSource} honor functions
registered in the pickle copy registry.
N)r	   r  r  rÍ   rõ   rÓ   )r   rB  s     r   Útest_copyRegÚAOTTests.test_copyRegµ  s3   € ô
 ×"Ò"¤3×#4Ò#4´^Ó5EÓ#FÓGˆØ×Ñ˜bÔ"6Õ7r   c                ó:  • [        [        / 5      5      n[        R                  " U5      n[        R                  " U5      nUR                  UL d   eUR                  R
                  UR
                  L d   eUR                  UR                  R                  Ld   eg r]   )rþ   r	   Ú
jellyToAOTÚunjellyFromAOTrã   rÿ   r   )r   r¹   Új1Úojs       r   Útest_funkyReferencesÚAOTTests.test_funkyReferences½  sq   € Üœ-¨Ó+Ó,ˆÜ�^Š^˜AÓˆÜ×Ò Ó#ˆà�t‰t�rŠzÐˆzØ�t‰t�v‰v˜Ÿ™Š~Ðˆ~Ø�t‰t˜2Ÿ4™4Ÿ6™6Ò!Ð!Ñ!r   c                ó  • / nUS4nUR                  U5        [        R                  " U5      n[        R                  " U5      nU R	                  US   [
        5        U R                  US   S   U5        U R                  US   S   S5        g)zC
L{aot.jellyToAOT} can persist circular references through tuples.
iá  r   r+   N)r=  r	   rL  rM  rõ   r<  ÚassertIsro   )r   r@  rA  rN  rO  s        r   Útest_circularTupleÚAOTTests.test_circularTupleÆ  s}   € ð !#ˆØ�ˆIˆØ	�‰�ŒÜ�^Š^˜AÓˆÜ×Ò Ó#ˆØ×Ñ˜b ™e¤UÔ+Ø�‰�b˜‘e˜A‘h Ô#Ø×Ñ˜˜A™˜q™ 4Õ(r   c                ó€   • U R                  [        R                  " SS/ 005      [        R                  " S5      5        g)z*
The generated serialization is indented.
r  r  z|                app={
                  'hello':{
                    'world':[],
                    },
                  }N)ro   r	   r  ÚtextwrapÚdedentr   s    r   ÚtestIndentifyÚAOTTests.testIndentifyÓ  s:   € ð 	×ÑÜ×Ò˜w¨°"¨Ð6Ó7Ü�OŠOðóõ
	
r   r(   Nr   )r#   r$   r%   r&   r  r   r%  r4  rC  rF  rI  rP  rT  rY  r'   r(   r   r   r  r  Y  s7   † ô%ô Tô%ô"Gô$$ô6Lô
8ô"ô)÷
r   r  c                  óJ   • \ rS rSrSrS
S jrS
S jrS
S jrS
S jrS
S jr	Sr
g	)ÚCrefUtilTestsiä  z
Tests for L{crefutil}.
c                ót   • [         R                  " 0 5      nU R                  [        UR                  SS5        g)z?
L{crefutil._DictKeyAndValue} only support keys C{0} and C{1}.
r>   r´   N)r
   Ú_DictKeyAndValuer#  ÚRuntimeErrorÚ__setitem__©r   r?  s     r   Útest_dictUnknownKeyÚ!CrefUtilTests.test_dictUnknownKeyé  s,   € ô ×%Ò% bÓ)ˆØ×Ñœ,¨¯©°q¸!Õ<r   c                ó|   • [         R                  " 5       nSUS'   U R                  [        UR                  SS5        g)z9
L{crefutil._Defer} can be assigned a key only one time.
r+   r   N)r
   Ú_Deferr#  r_  r`  ra  s     r   Útest_deferSetMultipleTimesÚ(CrefUtilTests.test_deferSetMultipleTimesð  s1   € ô �OŠOÓˆØˆˆ!‰Ø×Ñœ,¨¯©°q¸!Õ<r   c                ó‚   • [         R                  " / SQ[        5      nU R                  [        UR
                  0 S5        g)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+   r>   r´   z	ignore-meN)r
   Ú
_ContainerÚlistr#  ÚAssertionErrorÚaddDependant)r   Ú	containers     r   Ú&test_containerWhereAllElementsAreKnownÚ4CrefUtilTests.test_containerWhereAllElementsAreKnownø  s0   € ô ×'Ò'ª	´4Ó8ˆ	Ø×Ñœ.¨)×*@Ñ*@À"ÀkÕRr   c                ó~   • U R                  [        [        5       R                  [        R
                  " 5       S5        g)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#  rk  Údictr`  r
   ÚNotKnownr   s    r   Ú.test_dontPutCircularReferencesInDictionaryKeysÚ<CrefUtilTests.test_dontPutCircularReferencesInDictionaryKeys  s,   € ð 	×ÑÜœD›F×.Ñ.´×0AÒ0AÓ0CÀWõ	
r   c                óŠ   • U R                  [        [        R                  " S[        R                  " 5       [
        5      5        g)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#  rk  r
   Ú_InstanceMethodrs  rî   r   s    r   Ú*test_dontCallInstanceMethodsThatArentReadyÚ8CrefUtilTests.test_dontCallInstanceMethodsThatArentReady  s0   € ð 	×ÑÜÜ×$Ò$ Y´×0AÒ0AÓ0CÄTÓJõ	
r   r(   Nr   )r#   r$   r%   r&   r¦   rb  rf  rn  rt  ry  r'   r(   r   r   r\  r\  ä  s!   † ñô=ô=ôSô	
÷	
r   r\  )rÖ   r„   r    z,tuple[type[CopyRegisteredLoaded], tuple[()]]r   )1Ú
__future__r   Úcopyregrö   r1   r  rW  Útypingr   r   r   r   Útyping_extensionsr   Útwisted.persistedr	   r
   r   Útwisted.trialr   Útwisted.trial.unittestr   r   r3   rŠ   rŽ   r‘   r”   r—   r¶   r¨   r±   r½   rÅ   rÍ   rÓ   r×   rÙ   râ   rç   ré   rò   rþ   r  re   r  r  r\  Ú	testCasesr(   r   r   Ú<module>rƒ     sr  ðõ #ó Û 	Û Û 
Û ß -Ó -å &÷ 4Ñ 3Ý "Ý +ôn&�8ô n&ôb	˜×(Ñ(ô 	ô	˜f×.Ñ.ô 	ô	Ð,ô 	ô	Ð3Ð5Lô 	ô"
�8ô "
ôJ�&×"Ñ"ô ô

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