ó
    ‰*£h  ã                   óZ  • S r SSKrSSKJr  / SQr/ SQr\\\\	\
\\\\\\\\/r\R*                  r\R.                  r " S S\5      r\" SS	0 5      r " S
 S\5      r\ H"  r\R=                  S\R>                  -  \5        M$     \\-    H!  r S\ -  r!\R=                  \!\"" \\!5      5        M#     \ H!  r \R=                  S\ -  \"" \S\ -  5      SS9  M#     \R=                  S\SS9  \R=                  S\RF                  5        \RH                  \l%         " S S\5      r& " S S\&5      r'S r(g)z]
Based on the implementation here by Phillip J. Eby:
https://pypi.python.org/pypi/ProxyTypes
é    N©Úwraps)ÚposÚnegÚabsÚinvertÚeqÚneÚltÚgtÚleÚgeÚgetitemÚsetitemÚdelitemÚcontainsÚiaddÚisubÚimulÚ	ifloordivÚitruedivÚimodÚipowÚilshiftÚirshiftÚiandÚiorÚixor)ÚaddÚsubÚmulÚfloordivÚtruedivÚmodÚpowÚandÚorÚxorÚlshiftÚrshiftc                   óD   ^ • \ rS rSrU 4S jrU 4S jr\S 5       rSrU =r	$ )ÚProxyMetaClasséL   c                 ó<  >• [         [        U ]  XX#5      n[        UR	                  SS5      5      Ul        U H;  n[        US5      (       d  M  UR
                  R                  UR
                  5        M=     UR                  5        H  u  pg[        XFU5        M     U$ )NÚ__notproxied__© )
Úsuperr,   Ú__new__ÚsetÚpopr/   ÚhasattrÚupdateÚitemsÚsetattr)	ÚmcsÚnameÚbasesÚdctÚnewclsÚbaseÚkeyÚvalÚ	__class__s	           €ÚG/home/mande/repo/quber/.venv/lib/python3.13/site-packages/proxytypes.pyr2   ÚProxyMetaClass.__new__M   s„   ø€ Ü”~ sÑ3°C¸uÓJˆÜ # C§G¡GÐ,<¸bÓ$AÓ BˆÔãˆDÜ�tÐ-×.Ó.Ø×%Ñ%×,Ñ,¨T×-@Ñ-@ÖAñ ð Ÿ	™	ž‰HˆCÜ�F Ö%ñ $àˆó    c                 ó  >• U R                   S   R                  S:X  d  US:X  a  GOK[        U5      (       aZ  [        USS5      (       a  U R                  R                  U5        [        U[        [        45      (       d  U R                  U5      nOá[        U[        5      (       aÌ  [        UR                  SS5      (       a  U R                  R                  U5        UR                  (       a  U R                  UR                  5      OUR                  nUR                  (       a  U R                  UR                  5      OUR                  n[        U R                  UR                  5      X45      n[        [        U ]C  X5        g )Nr   Ú
_ProxyBaser2   r/   F)Ú	__bases__Ú__name__ÚcallableÚgetattrr/   r   Ú
isinstanceÚstaticmethodÚclassmethodÚ	_no_proxyÚpropertyÚfgetÚfsetÚfdelr1   r,   Ú__setattr__)ÚclsÚattrÚvaluerQ   rR   rA   s        €rB   rS   ÚProxyMetaClass.__setattr__X   s  ø€ ð �=‰=˜Ñ×$Ñ$¨Ó4¸À	Ó8IÙÜ�e�_‰_Ü�uÐ.°×6Ñ6Ø×"Ñ"×&Ñ& tÔ,ä˜e¤l´KÐ%@×AÑAØŸ™ eÓ,�øÜ˜œx×(Ñ(Ü�u—z‘zÐ#3°U×;Ñ;Ø×"Ñ"×&Ñ& tÔ,à05·
·
�3—=‘= §¡Ô,ÀÇ
Á
ˆDØ05·
·
�3—=‘= §¡Ô,ÀÇ
Á
ˆDÜ˜SŸ]™]¨5¯:©:Ó6¸ÓCˆEÜŒn˜cÑ.¨tÕ;rD   c                 ó0   ^ • [        T 5      U 4S j5       nU$ )zb
Returns a wrapped version of `method`, such that proxying is turned off
during the method call.

c                 óŽ   >• [        U S5      n[        U SS5         T" U /UQ70 UD6[        U SU5        $ ! [        U SU5        f = f)Nr/   T)Ú_ogaÚ_osa)ÚselfÚargsÚkwargsÚ
notproxiedÚmethods       €rB   ÚwrapperÚ)ProxyMetaClass._no_proxy.<locals>.wrappert   sO   ø€ ä˜dÐ$4Ó5ˆJÜ�Ð'¨Ô.ð9Ù˜dÐ4 TÒ4¨VÑ4ä�TÐ+¨ZÕ8ø”�TÐ+¨ZÕ8ús	   œ5 µAr   )r`   ra   s   ` rB   rN   ÚProxyMetaClass._no_proxyl   s"   ø€ ô 
ˆv‹ô	9ó 
ð	9ð ˆrD   r0   )
rH   Ú
__module__Ú__qualname__Ú__firstlineno__r2   rS   rL   rN   Ú__static_attributes__Ú__classcell__©rA   s   @rB   r,   r,   L   s!   ø† õ	õ<ð( ñó örD   r,   rF   r0   c                   ó^   • \ rS rSrSrSrS r\S 5       rS r	S r
S rS	 r\SS
 j5       rSrg)ÚProxyé…   z™
Proxy for any python object. Base class for other proxies.

:attr:`__subject__` is the only non-proxied attribute, and contains the
    proxied object

©Ú__subject__c                 ó   • Xl         g ©Nrm   )r\   Úsubjects     rB   Ú__init__ÚProxy.__init__�   s   € Ø"ÕrD   c                 óX   • U[        U 5      R                  ;   a  g[        U S5      SL a  gg)z\
Determines whether `attr` should be looked up on the proxied object, or
the proxy itself.

Fr/   T)Útyper/   rZ   ©r\   rU   s     rB   Ú_should_proxyÚProxy._should_proxy“   s/   € ð ”4˜“:×,Ñ,Ó,ØÜ�Ð&Ó'¨4Ò/ØØrD   c                 óx   • [         R                  X5      (       a  [        U R                  U5      $ [	        X5      $ rp   )rk   rw   rJ   rn   rZ   rv   s     rB   Ú__getattribute__ÚProxy.__getattribute__    s1   € Ü×Ñ˜t×*Ñ*Ü˜4×+Ñ+¨TÓ2Ð2Ü�DÓÐrD   c                 ó|   • [         R                  X5      (       a  [        U R                  X5        [	        XU5        g rp   )rk   rw   r8   rn   r[   )r\   rU   r@   s      rB   rS   ÚProxy.__setattr__¥   s-   € Ü×Ñ˜t×*Ñ*Ü�D×$Ñ$ dÔ0ÜˆT˜ÕrD   c                 óŽ   • [         R                  X5      (       a  [        U R                  U5        [        R                  X5        g rp   )rk   rw   Údelattrrn   ÚobjectÚ__delattr__rv   s     rB   r�   ÚProxy.__delattr__ª   s1   € Ü×Ñ˜t×*Ñ*Ü�D×$Ñ$ dÔ+Ü×Ñ˜4Õ&rD   c                 ó&   • U R                   " U0 UD6$ rp   rm   )r\   r]   Úkws      rB   Ú__call__ÚProxy.__call__¯   s   € Ø×Ò Ð,¨Ñ,Ð,rD   c                 óJ   ^^• [        T5      UU4S j5       n[        XU5        g)z{
Add a method `name` to the class, which returns the value of `func`,
called with the proxied value inserted at `arg_pos`

c                 óf   >• [        U5      nUR                  TU R                  5        T" U0 UD6nU$ rp   )ÚlistÚinsertrn   )r\   r]   r^   ÚresultÚarg_posÚfuncs       €€rB   ÚproxiedÚ%Proxy.add_proxy_meth.<locals>.proxiedº   s4   ø€ ä˜“:ˆDØ�K‰K˜ ×!1Ñ!1Ô2Ù˜4Ð* 6Ñ*ˆFØˆMrD   N)r   r8   )rT   r:   r�   rŒ   rŽ   s     `` rB   Úadd_proxy_methÚProxy.add_proxy_meth²   s'   ù€ ô 
ˆt‹õ	ó 
ð	ô 	�˜7Õ#rD   N)r   )rH   rd   re   rf   Ú__doc__r/   rr   rL   rw   rz   rS   r�   r…   rM   r�   rg   r0   rD   rB   rk   rk   …   sO   † ñð &€Nò#ð ñ
ó ð
ò ò
ò
'ò
-ð ó$ó ó$rD   rk   z__%s__z__r%s__é   )rŒ   Ú__rdivmod__Ú	__index__c                   ó.   • \ rS rSrSrS r\S 5       rSrg)ÚCallbackProxyéØ   z?
Proxy for a callback result. Callback is called on each use.

c                 ó   • Xl         g rp   ©Úcallback)r\   r›   s     rB   rr   ÚCallbackProxy.__init__Þ   s   € Ø �rD   c                 ó"   • U R                  5       $ rp   rš   )r\   s    rB   rn   ÚCallbackProxy.__subject__á   s   € à�}‰}‹ÐrD   rš   N)	rH   rd   re   rf   r’   rr   rO   rn   rg   r0   rD   rB   r—   r—   Ø   s    † ñò
!ð ñó órD   r—   c                   óZ   ^ • \ rS rSrSr\U 4S j5       r\R                  S 5       rSrU =r	$ )Ú	LazyProxyéæ   z<
Proxy for a callback result, that is cached on first use.

c                 ó|   >•  U R                   $ ! [         a     Of = f[        [        U ]  U l         U R                   $ rp   )ÚcacheÚAttributeErrorr1   r    rn   )r\   rA   s    €rB   rn   ÚLazyProxy.__subject__ì   s>   ø€ ð	Ø—:‘:ÐøÜó 	Ùð	úô œ9 dÑ7ˆŒ
Ø�z‰zÐs   ƒ �
›c                 ó   • Xl         g rp   ©r£   )r\   rV   s     rB   rn   r¥   ö   s   € à�
rD   r§   )
rH   rd   re   rf   r’   rO   rn   Úsetterrg   rh   ri   s   @rB   r    r    æ   s6   ø† ñð
 ôó ðð ×Ññó örD   r    c                 ó   • SU l         U $ )z6
Decorator to add methods to the __notproxied__ list

T)r/   )r�   s    rB   r_   r_   û   s   € ð
 €DÔØ€KrD   ))r’   ÚoperatorÚ	functoolsr   Ú	OPERATORSÚREFLECTED_OPERATORSÚdivmodÚroundÚreprÚstrÚhashÚlenr   ÚcomplexÚboolÚintÚfloatÚiterÚbytesÚMAGIC_FUNCSr€   rz   rZ   rS   r[   ru   r,   rF   rk   r�   r�   rH   ÚopÚ
magic_methrJ   ÚindexÚ__bool__Ú__nonzero__r—   r    r_   r0   rD   rB   Ú<module>rÀ      sp  ðñó
 Ý ò€	ò@Ð ð  Ø	ØØØØØØØØØ	ØØ	ð€ð  ×Ñ€Ø×Ñ€ô1�Tô 1ñl ˜L¨"¨bÓ1€
ô<$ˆJô <$ó~ €DØ	×Ñ˜ D§M¡MÑ1°4Ö8ñ ð Ð)Ô
)€BØ˜B‘€JØ	×Ñ˜¡W¨X°zÓ%BÖCñ *ó
 €BØ	×Ñ˜ R™©°¸8Àb¹=Ó)IÐSTÐÓUñ ð
 × Ñ �] F°AÐ Ñ 6à × Ñ �[ (§.¡.Ô 1à—N‘N€Ô ô�Eô ô�ô ó*rD   