ó
    Ö›‘h,  ã                   ó�   • S r SSKrSSKJr  SSKJrJrJr   " S S\R                  5      r	 " S S\R                  5      rS	 rS
 rg)z]
Persistently cached objects for PB.

Maintainer: Glyph Lefkowitz

Future Plans: None known.
é    N)Údefer)ÚbananaÚflavorsÚjellyc                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚPublishableé   z6An object whose cached state persists across sessions.c                 ó0   • U R                  5         Xl        g )N)Ú	republishÚpublishedID)Úselfr   s     ÚZC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/spread/publish.pyÚ__init__ÚPublishable.__init__   s   € Ø�‰ÔØ&Õó    c                 ó8   • [         R                   " 5       U l        g)z=Set the timestamp to current and (TODO) update all observers.N)ÚtimeÚ	timestamp©r   s    r   r   ÚPublishable.republish   s   € äŸš›ˆ�r   c                 ó$   • U R                  U5      $ )ú
(internal))ÚgetStateToPublishFor©r   Úperspectives     r   Úview_getStateToPublishÚ"Publishable.view_getStateToPublish   s   € à×(Ñ(¨Ó5Ð5r   c                 ó"   • U R                  5       $ )z:Implement me to special-case your state for a perspective.)ÚgetStateToPublishr   s     r   r   Ú Publishable.getStateToPublishFor#   s   € à×%Ñ%Ó'Ð'r   c                 ó2   • [        SU R                  -  5      e)zBImplement me to return state to copy as part of the publish phase.z%s.getStateToPublishFor)ÚNotImplementedErrorÚ	__class__r   s    r   r   ÚPublishable.getStateToPublish'   s   € ä!Ð";¸d¿n¹nÑ"LÓMÐMr   c                 óÆ   • U(       a'  UR                   nUR                  5       R                  nOSnSn[        R                  " X5      U R
                  UUU R                  S.$ )z6Get all necessary metadata to keep a clientside cache.ÚNone)Úremoter   r   Úservicer   )ÚperspectiveNameÚ
getServiceÚserviceNamer   Ú	ViewPointr   r   )r   r   ÚobserverÚpnameÚsnames        r   ÚgetStateToCacheAndObserveForÚ(Publishable.getStateToCacheAndObserveFor+   s^   € æØ×/Ñ/ˆEØ×*Ñ*Ó,×8Ñ8‰EàˆEØˆEô ×'Ò'¨Ó:Ø×+Ñ+Ø ØØŸ™ñ
ð 	
r   )r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r   r0   Ú__static_attributes__© r   r   r   r      s$   † Ù@ò'ò%ò6ò(òNõ
r   r   c                   óH   • \ rS rSrSrSrSrSS jrS rS r	S r
S rS	 rS
rg)ÚRemotePublishedé=   z6The local representation of remote Publishable object.r   c                 óx   • SR                  U R                  U R                  [        U R                  5      U5      $ )Nz{}-{}-{}.{})Úformatr(   r   Ústrr   )r   Úexts     r   ÚgetFileNameÚRemotePublished.getFileNameC   s6   € Ø×#Ñ#Ø�L‰LØ×ÑÜ�× Ñ Ó!Øó	
ð 	
r   c                 ó8  • U R                   R                  U5        / U l         [        U R	                  5       S5       nUR                  5       nS S S 5        [        R                  " [        R                  " W5      5      nUR                  U R                  :H  nU(       a#  U R                  WR                   5        SU l        g U R                  R                  S5      R!                  U R                  5        g ! , (       d  f       N°= f! [         a    Sn N~f = f)NÚrbr   é   r   )Ú__dict__ÚupdateÚ_activationListenersÚopenr@   Úreadr   Úunjellyr   Údecoder   ÚOSErrorÚ_cbGotUpdateÚ_wasCleanWhenLoadedr'   Ú
callRemoteÚaddCallbacks)r   ÚstateÚdataFileÚdataÚnewselfÚrecents         r   ÚsetCopyableStateÚ RemotePublished.setCopyableStateK   sÒ   € Ø�‰×Ñ˜UÔ#Ø$&ˆÔ!ð	9Ü�d×&Ñ&Ó(¨$Ô/°8Ø—}‘}“�÷ 0ô
 —m’m¤F§M¢M°$Ó$7Ó8ˆGØ×&Ñ&¨$¯.©.Ñ8ˆFÞØ×Ñ˜g×.Ñ.Ô/Ø'(ˆDÕ$à�K‰K×"Ñ"Ð#6Ó7×DÑDÀT×EVÑEVÕW÷ 0Õ/ûäó 	ØŠFð	ús(   ¤D
 ¾C9ÁD
 Ã9
DÄD
 Ä
DÄDc                 óX   • U R                   R                  5       nUS	 US	 US	 US	 US	 U$ )NÚbrokerr'   ÚluidrG   ÚisActivated)rE   Úcopy)r   Úothers     r   Ú__getstate__ÚRemotePublished.__getstate__\   s?   € Ø—‘×"Ñ"Ó$ˆà�(ˆOØ�(ˆOØ�&ˆMàÐ(Ð)Ø�-Ð Øˆr   c                 ó†  • U R                   R                  U5        SU l        U R                   H  nU" U 5        M     / U l        U R	                  5         [        U R                  5       S5       nUR                  [        R                  " [        R                  " U 5      5      5        S S S 5        g ! , (       d  f       g = f)NrD   Úwb)rE   rF   r[   rG   Ú	activatedrH   r@   Úwriter   Úencoder   )r   ÚnewStateÚlistenerrR   s       r   rM   ÚRemotePublished._cbGotUpdateg   s„   € Ø�‰×Ñ˜XÔ&ØˆÔà×1Ô1ˆHÙ�TŽNñ 2à$&ˆÔ!Ø�‰ÔÜ�$×"Ñ"Ó$ dÔ+¨xØ�N‰Nœ6Ÿ=š=¬¯ª°TÓ):Ó;Ô<÷ ,×+Ö+ús   Á/:B2Â2
C c                 ó   • g)z^Implement this method if you want to be notified when your
publishable subclass is activated.
Nr8   r   s    r   rb   ÚRemotePublished.activatedr   s   � r   c                 ón   • U R                   (       a	  U" U 5        gU R                  R                  U5        g)zZExternally register for notification when this publishable has received all relevant data.N)r[   rG   Úappend)r   Úcallbacks     r   ÚcallWhenActivatedÚ!RemotePublished.callWhenActivatedw   s&   € à××Ù�T�Nà×%Ñ%×,Ñ,¨XÕ6r   )rG   rN   r[   N)Úpub)r2   r3   r4   r5   r6   r[   rN   r@   rV   r^   rM   rb   rm   r7   r8   r   r   r:   r:   =   s/   † Ù@à€KØÐô
òXò"	ò	=òõ
7r   r:   c                 óp   • [         R                  " 5       nU R                  [        UR                  U4S9  U$ )a,  
Wrap a deferred returned from a pb method in another deferred that
expects a RemotePublished as a result.  This will allow you to wait until
the result is really available.

Idiomatic usage would look like::

    publish.whenReady(serverObject.getMeAPublishable()).addCallback(lookAtThePublishable)
)ÚcallbackArgs)r   ÚDeferredrP   Ú	_pubReadyÚerrback)ÚdÚd2s     r   Ú	whenReadyrw      s-   € ô 
�ŠÓ	€BØ‡N�N”9˜bŸj™j¸°u€NÑ=Ø€Ir   c                 ó:   • U R                  UR                  5        g)r   N)rm   rl   )Úresultrv   s     r   rs   rs   Ž   s   € à
×Ñ˜RŸ[™[Õ)r   )r6   r   Útwisted.internetr   Útwisted.spreadr   r   r   Ú	Cacheabler   ÚRemoteCacher:   rw   rs   r8   r   r   Ú<module>r~      sH   ðñ
ó å "ß 1Ñ 1ô&
�'×#Ñ#ô &
ôR?7�g×)Ñ)ô ?7òDó*r   