
    XaJj?                     
   d Z dZddlZddlZddlZddlZddlmZm	Z	 ddl
Z
d Zd Zd Zd Z e
j                  d	      Z e
j                  d
      Z e
j                  d      Z e
j                  d      Z e
j                  d      Z e
j                  d      Z e
j                  d      ZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%ejM                  d      Z'ejM                  d      Z(ejM                  d       Z)ejM                  d!      Z*ejM                  d"      Z+ejM                  d#      Z,ejM                  d$      Z-ejM                  d%      Z.ejM                  d&      Z/ejM                  d'      Z0ejM                  d(      Z1 G d) d*      Z2i Z3	 d<d+Z4d, Z5e5e3e6<   d- Z7e7e3e8<   d=d.Z9e9e3 e:e9      <   	 e;jy                          d/ Z>e>e3e:<   d0 Z?e?e3 e:e@      <   d1 ZAeAe3 e:eB      <   i ZCd2 ZDeDeCe<   d3 ZEeEeCe<   d4 ZFeFeCe<   d5 ZGeGeCe%<   d6 ZHeHeCe$<   d7 ZIeIeCe<   d8 ZJeJeCe<   d9 ZKeKeCe<   d: ZLd; ZMeLe
j                  _O        eMe
j                  _P        ej                  e
j                  _Q        y# e=$ r e9e3 e:e;      <   Y w xY w)>aV  
Implementation of NSCoding for OC_PythonObject and friends

A minor problem with NSCoding support is that NSCoding restores
graphs recursively while Pickle does so depth-first (more of less).
This can cause problems when the object state contains the
object itself, which is why we need a 'setValue' callback for the
load_* functions below.
     N)PicklingErrorUnpicklingErrorc                     |j                  d      }|D ]%  }|dk(  rt        d|d|       	 t        | |      } ' | S # t        $ r t        d|d|       w xY w)N.z<locals>zCan't get local attribute z on zCan't get attribute )splitAttributeErrorgetattr)objnamedotted_pathsubpaths       W/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/objc/_pycoder.py_getattributer      s    **S/Kj  #=dXT#!QRR	M#w'C	  J  	M #7xtC7!KLL	Ms	   >Ac                     t        | dd       }||S t        t        j                  j	                               D ]   \  }}|dk(  s|	 t        ||      | u r|c S " y# t        $ r Y /w xY w)N
__module____main__)r
   listsysmodulesitemsr   r	   )r   r   module_namemodules       r   whichmoduler   (   s    #|T2K#CKK$5$5$78V*$	VT*c1"" 2  9   		s   A	A)(A)c                     t        | t        j                        rt        j                  t        |             S t        | t
              rt        j                  |       S | S N)
isinstanceobjcpyobjc_unicoder   internstr)values    r   r    r    ;   sC    %,,-zz#e*%%	E3	zz%      c                 P    | dk(  rd} t        | d       t        j                  |    S )Ncopy_regcopyregr   )level)
__import__r   r   )r   s    r   import_moduler)   D   s(    zt1;;tr#   NSArrayNSMutableArrayNSDictionaryNSStringNSSetNSMutableSetNSData                        	   
               kindfuncargsr   dictstateclassr"   r   r   codec                       e Zd Zy)_EmptyClassN)__name__r   __qualname__r   r#   r   rG   rG   p   s    r#   rG   c                    t        |t              st        d      t        |      st        d      | j	                         r| j                  t        t               | j                  |t               | j                  |t               || j                  d t               n| j                  t        |      t               || j                  d t               n| j                  t        |      t               | j                  |t               y | j!                  t"        j$                  t               | j'                  |       | j'                  |       || j'                  d        n| j'                  t        |             || j'                  d        n| j'                  t        |             | j'                  |       y )Nz$args from reduce() should be a tuplez#func from reduce should be callable)r   tupler   callableallowsKeyedCodingencodeInt_forKey_
kOP_REDUCEkKINDencodeObject_forKey_kFUNCkARGSkLISTr   kDICTrB   kSTATEencodeValueOfObjCType_at_r   _C_INTencodeObject_)coderr@   rA   rC   	listitems	dictitemsr   s          r   save_reducer]   {   sY    dE"BCCD>ABB 
E2""4/""4/&&tU3&&tI>&&tU3&&tI>""5&1 	''Z@D!D!%Y0%Y0E"r#   c                    | j                         r:| j                  t        t               | j	                  t        |      t               y | j                  t        j                  t               | j                  t        |             y r   )rM   rN   kOP_LONGrP   rQ   reprkVALUErW   r   rX   rY   rZ   r   s     r   save_intrc      sX     %0""49f5''X>DI&r#   c                    | j                         r:| j                  t        t               | j	                  t        |      t               y | j                  t        j                  t               | j                  t        |             y r   )rM   rN   kOP_FLOAT_STRrP   rQ   r`   ra   rW   r   rX   rY   rb   s     r   
save_floatrf      sZ      u5""49f5'']CDI&r#   c           	         |t        |dd       }||j                  }t        ||      }	 t        |      }t	        ||      }||urt        d|d|d|      t        j                  j                  ||f      }| j                         rz|r1| j                  t        t               | j                  |t                y | j                  t"        t               | j%                  |t&               | j%                  |t(               y |rE| j+                  t,        j.                  t               | j+                  t,        j.                  |       y | j+                  t,        j.                  t"               | j1                  |       | j1                  |       y # t        t        t        f$ r}t        d|d| d|       |d }~ww xY w)NrI   zCan't pickle z: it's not the same object as r   z: it's not found as )r
   rH   r   r)   r   r   ImportErrorKeyErrorr	   r&   _extension_registrygetrM   rN   kOP_GLOBAL_EXTrP   kCODE
kOP_GLOBALrQ   kMODULEkNAMErW   r   rX   rY   )rZ   r   r   r   r   obj2excrE   s           r   save_globalrs      s   |sND1| ||c4(K{+VT* s?T+ 
 &&**K+>?D ##NE:##D%0 ##J6&&{G<&&tU3 ++DKKH++DKK> ++DKKD,%? >2 C7"6{m1TFK
	s   F G'F<<Gc                     |t        d       u rt        | t         d|      S |t        t              u rt        | t         t        f|      S |t        t              u rt        | t         t        f|      S t	        | |      S )Nr   )r   )typer]   NotImplementedEllipsisrs   rb   s     r   	save_typerx      sl    
d4j5$S99	^$	$5$(9sCC	X	5$==uc""r#   c                 &    t        | t        d       y )Nrw   )rs   rw   rb   s     r   save_ellipsisrz     s    x,r#   c                 &    t        | t        d       y )Nrv   )rs   rv   rb   s     r   save_notimplementedr|   
  s    ~'78r#   c                     | j                         rt        | j                  t                    S t        | j	                  t
        j                  d             S r   )rM   intdecodeInt64ForKey_ra   decodeValueOfObjCType_at_r   
_C_LNG_LNGrZ   setValues     r   load_intr     s@     5++F3445224??DIJJr#   c                     | j                         rt        | j                  t                    S t        | j	                               S r   )rM   r~   decodeObjectForKey_ra   decodeObjectr   s     r   	load_longr     s8     5,,V4555%%'((r#   c                 b    | j                         r| j                  t              S t        d      )NzUnexpected encoding)rM   decodeFloatForKey_ra   RuntimeErrorr   s     r   
load_floatr   (  s-      ''//011r#   c                     | j                         rt        | j                  t                    S t        | j	                               S r   )rM   floatr   ra   r   r   s     r   load_float_strr   4  s8     U..v677U'')**r#   c                    | j                         r| j                  t              }n | j                  t        j
                  d       }g }t        j                  j                  ||      }||ur|S t        j                  j                  |      }|st        d|z        |\  }}t        |      }t        ||      }	|	t        j                  |<   |	S )Nzunregistered extension code %d)rM   decodeIntForKey_rm   r   r   rX   r&   _extension_cacherk   _inverted_registry
ValueErrorr)   r   )
rZ   r   rE   nilr   keyr   r   modklasss
             r   load_global_extr   >  s     %%e,..t{{DA
C

"
"
&
&tS
1C
#~


$
$
(
(
.C9D@AALFD

C#t$E%*GT"Lr#   c                     | j                         r+| j                  t              }| j                  t              }n | j	                         }| j	                         }t        |      }t        ||      S r   )rM   r   ro   rp   r   r)   r   )rZ   r   r   r   r   s        r   load_globalr   U  sa     //8((/((*!!#

$Cd##r#   c           	      h   | j                         r+| j                  t              }| j                  t              }n | j	                         }| j	                         }	  || } ||       | j                         r| j                  t              }n?| j	                         }t        |t        j                  j                        rt        |      }t!        |dd       }|
 ||       |S d }t        |t              rt#        |      dk(  r|\  }}|j$                  }	|xs dD ]  }
||
   }||	t'        |
      <    |r.|j)                         D ]  \  }
}t+        |t'        |
      |        |S # t
        $ r?}t        d|j                   dt        |       t        j                         d         d }~ww xY w)Nzin constructor for z: r2   __setstate__r   )rM   r   kCLASSrS   r   	TypeErrorrH   r!   r   exc_inforV   r   collectionsabcSequencerK   r
   len__dict__r    r   setattr)rZ   r   clsinitargsr"   errrC   setstate	slotstate	inst_dictkvs               r   	load_instr   d  s     ''/,,U3  "%%'
X UO ))&1""$e[__556%LEund3HI%CJ!O y
 I[b[!H 	&)  OO%DAqE6!9a( & LO  
!#,,r#c(<cllnQ>O
 	

s   E) )	F12:F,,F1c                    | j                         r,| j                  t              }| j                  t              }n| j	                         }| j	                         }g }|D ]  }t        |t              r|j                  t        |             .t        |t              r|j                  t        |             Yt        |t              r|j                  t        |             t        |t              r|j                  t        |             t        |t              r|j                  t!        |             |j                  |        |}~| j                         sBt#        |      dv r5t        |d   t$              r"t        |      }t'        |d         |d<    || }n || } ||       | j                         r@| j                  t(              }| j                  t*              }| j                  t,              }	nK| j	                         }| j	                         }| j	                         }	t        |	t              rt        |	      }	t/        |dd       }
|
r
 |
|	       |S d }t        |	t              rt#        |	      dk(  r|	\  }	}|	rg|j0                  }|	D ]V  }|	|   }t3        |      t4        j6                  u r||t9        |      <   2t3        |      t:        u r||t9        |      <   R|||<   X |r.|j=                         D ]  \  }}t?        |t9        |      |        |r|D ]  }|j                  |        |r|j=                         D ]
  \  }}|||<    |S )N)r1   r2   r   r   r2   ) rM   r   rR   rS   r   r   r,   appendrB   r+   r   r*   rK   r/   setr.   	frozensetr   r0   bytesrT   rU   rV   r
   r   ru   r   r   r    r!   r   r   )rZ   r   r@   rA   new_argsar"   r[   r\   rC   r   r   r   r   r   s                  r   load_reducer     s    ((/((/ !!#!!#A!\*Q(A~.Q(Aw'a)A|,A'Au%	!-"   ##%ItAw' DzQ.Qdd UO --e4	--e4	))&1&&(	&&(	""$eW%%LEund3HI%CJ!O y NN	AaAAw$---'(	&)$aC'(	&)$  !	!  OO%DAqE6!9a( & ALLO  OO%DAqE!H & Lr#   c                    t        |       }t        j                  |      }|
 |||        y t        |t               }|rt	        ||        y t
        j                  j                  |      }|	 ||       }nt        | dd       } |d      }t        |      t        u rt	        || |       y t        |      t        urt        d|z        t        |      }d|cxk  rdk  sn t        d|z        t        |g|  y )N__reduce_ex__r2   z%s must return string or tupler5   z3Tuple returned by %s must have two to five elements)ru   encode_dispatchrk   
issubclassrs   r&   dispatch_tabler
   r!   rK   r   r   r]   )selfrZ   tfisscreducervrv_lens           r   pyobjectEncoder     s    T
A 	AA}	% aDE4  ##''*FD\ 5AYBx3E4$Bxu<vEFFWF1DvM
 	
 r#   c                     | j                         r| j                  t              }n | j                  t        j
                  d       }t        j                  |      }|t        d|        || |      S )NzUnknown object kind: )	rM   r   rP   r   r   rX   decode_dispatchrk   r   )rZ   r   tpr   s       r   pyobjectDecoder   8  si     ##E*,,T[[$?BAy 5bT:;;UHr#   )NNNNr   )R__doc____all__copyr&   r   collections.abcr   pickler   r   r   r   r   r    r)   lookUpClassr*   r+   r,   r-   r.   r/   r0   rO   kOP_INSTrn   kOP_NONEkOP_BOOLkOP_INTr_   	kOP_FLOATkOP_UNICODE
kOP_STRING	kOP_TUPLEkOP_LISTkOP_DICTrl   re   stringWithString_rP   rR   rS   rT   rU   rV   r   ra   rp   ro   rm   rG   r   r]   rc   r~   rf   r   rs   ru   dir
__reduce__r   rx   rz   rw   r|   rv   r   r   r   r   r   r   r   r   r   r   r   options_nscoding_encoder_nscoding_decoder_copyr   r#   r   <module>r      s=      
  1 	& $

9
%!!!"23t/4J'!t/			(	#


	
	""6*""6*""6*""6*""6*		#	#G	,		#	#G	,		#	#G	,""6*

$
$X
.""6*	 	  HL%#P'   ' $ ,&^ &1[! "-NN
# " - #0X 9 )<^$ % K $ ) & 2 (	 + "0 ( #2 	$ *
 9x & cL *
 )X	 "0 !/ YY k
  -!,ODI-s   5I/ /JJ