
    XaJjF                        d Z ddlmZmZmZmZmZmZmZ ddl	m
Z ddlmZmZ ddlmZ ddlZddlZddlZddlZdZi Zi Zej0                  e_        ej4                  e_        ej8                  e_        ej<                  e_        ej@                  e_!        ejD                  e_#        ejH                  e_%        ejL                  e_'        ejP                  e_)        [dD ]  Z* ede*d	d
dii        d Z+e+d        Z,d Z+e+d        Z-d Z.d Z/d Z0d Z1d Z2 ed      jg                         Z4d Z5d Z6 e2ddd ff        e2ddd fdd ff       d Z7 e2d d!e7ff       y)"z
This module implements a callback function that is used by the C code to
add Python special methods to Objective-C classes with a suitable interface.
    )_block_call_rescanClasscurrentBundlelookUpClassoptionsregisterMetaDataForSelectorselectorN)make_generic_newNEW_MAP)_selectorToKeywords)addConvenienceForClassregisterABCForClassregisterUnavailableMethodregisterNewKeywordsregisterNewKeywordsFromSelector)s   allocs   copys   copyWithZone:s   mutableCopys   mutableCopyWithZone:s   NSObjectretvalalready_retainedTc                     | t         _        y N)r   _class_extenderfs    [/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/objc/_convenience.pyregisterr   ;   s
    G    c                    | j                   s=t        | j                  d   j                        t        d       k7  rt	        |       |d<   t
        j                  | j                  d      D ]
  \  }}|||<    	 t        | j                     D ]  }|j                  |         t        | j                  = y# t        $ r Y yw xY w)a'  
    Add additional methods to the type-dict of subclass 'name' of
    'super_class'.

    CLASS_METHODS is a global variable containing a mapping from
    class name to a list of Python method names and implementation.

    Matching entries from both mappings are added to the 'type_dict'.
       c                       y r    r   r   r   <lambda>z)add_convenience_methods.<locals>.<lambda>P   s    dr   __new__r   N)__has_python_implementation__type__mro__r!   r
   CLASS_METHODSget__name__	CLASS_ABCr   KeyError)cls	type_dictnmvalue	abc_classs        r   add_convenience_methodsr/   ?   s     ,,A2	l	2  04	)"&&s||R8	E	" 9"3<<0Is# 1cll# s   8:B3 3	B?>B?c                     | t         _        y r   )r   _make_bundleForClassr   s    r   r   r   ^   s
    #$G r   c                  <    t               fd} t        | d      S )Nc                     S r   r   )r*   cbs    r   bundleForClassz*makeBundleForClass.<locals>.bundleForClassf   s    	r   T)isClassMethod)r   r	   )r5   r4   s    @r   makeBundleForClassr7   b   s    	B N$77r   c                 &   t        |t              st        d       |j                         }t	        | j                         |d |j                         di       |j                  d      r%t        |      }dt        j                  | i       |<   yy)z9
    Mark *selector* as unavailable for *classname*.
    !selector should by a bytes object
suggestionz is NS_UNAVAILABLEinitN)

isinstancebytes	TypeErrordecoder   encode
startswithr   r   
setdefault)	classnamer	   selnamekws       r   r   r   l   s     h&;<<hooG  	/(//+..@AB &! )049b)"- "r   c                     t        |t              st        d       |j                         }t	        |      }t        j                  | i       }||vr|j                  dd      ||<   yy)z
    Register keywords calculated from 'selector' as passible
    keyword arguments for __new__ for the given class. The
    selector should be an 'init' method.
    r9   :_N)r<   r=   r>   r?   r   r   rB   replace)rC   r	   rD   rE   map_dicts        r   r   r      se     h&;<<hooG	W	%B!!)R0H	sC0 r   c                     t        |t              rt        d |D              st        d      t	        j
                  | i       }||vr|||<   yy)z
    Register the keyword tuple 'keywords' as a set of keyword
    arguments for __new__ for the given class that will result
    in the invocation of the given method.

    Method should be either an init method or a class method.
    c              3   <   K   | ]  }t        |t                y wr   )r<   str).0xs     r   	<genexpr>z&registerNewKeywords.<locals>.<genexpr>   s     1Wh*Q2Dhs   z!keywords must be tuple of stringsN)r<   tupleallr>   r   rB   )rC   keywords
methodnamerJ   s       r   r   r      sP     h&c1Wh1W.W;<<!!)R0Hx'  r   c                     	 t         | xx   t        |      z  cc<   t        xj                  dz  c_        t        |        y# t        $ r t        |      t         | <   Y Bw xY w)z\
    Register *classname* with the *abc_class*-es when
    the class becomes available.
    r   N)r(   rQ   r)   r   _mapping_countr   )rC   r.   s     r   r   r      sW    
0)i 00 a	  0$Y/	)0   A AAc                     	 t         | xx   t        |      z  cc<   t        xj                  dz  c_        t        |        y# t        $ r t        |      t         | <   Y Bw xY w)zH
    Add the list with methods to the class with the specified name
    r   N)r%   rQ   r)   r   rV   r   )rC   methodss     r   r   r      sU    2i E'N2  a	  2#(>i 2rW   NSNullc                     | t         S | S r   _NULL)vs    r   container_wrapr_      s    yHr   c                 &    |  || | t         u ry | S r   r\   )r^   exc_typeexc_argss      r   container_unwraprc      s!    y!!	
eHr   __bool__c                      y)NFr   selfs    r   r    r       s    Er   NSEnumerator__iter__c                     | S r   r   rf   s    r   r    r       s    $r   __next__c                 >    t        | j                         t              S r   )rc   
nextObjectStopIterationrf   s    r   r    r       s    "24??3Dm"Tr   c                 2    t        | | j                  ||      S r   )r   __block_signature__)rg   argskwdss      r   __call__rs      s    tT55tTBBr   NSBlockrs   )8__doc__
objc._objcr   r   r   r   r   r   r	   PyObjCTools.KeyValueCodingKeyValueCodingkvc	objc._newr
   r   objc._transformr   arraycopyctypessocket__all__r%   r(   getKey_getKeysetKey_setKey
getKeyPath_getKeyPath
setKeyPath_setKeyPath	ArrayType
_ArrayTypedeepcopy	_deepcopyc_void_p	_c_void_perror_socket_errorgaierror_socket_gaierrormethodr   r/   r7   r   r   r   r   r   nullr]   r_   rc   rs   r   r   r   <module>r      s  
   ) / /     	 ****nn nn __ MM OO  !?? F  Vh);T(BC  
 
<% 
8 
8501(
6 	H""$ x:/A"B!D E 	&'	TUC yJ#9"; <r   