
    XaJj+                     R   d Z dZddlZddlZddlmZmZmZ ddl	m
Z
mZ ddl	mZ ddl	mZmZ dd	lmZ  ed
      Z ed      Zej(                  j*                  j-                  e       ej(                  j.                  j-                  e        eddddeide
ide
ide
iddddde
idi       d Zd Zd Z e       ZdefdZd Zd Zd Z dEdZ!d Z"dZ#d Z$d  Z%d! Z&d" Z'dFd#Z(d$D ]  Z)e( ejT                  e)i       d<    dFd%Z+d&D ]  Z) ejT                  e)i       Z,e+e,d<    d' Z-d( Z.d) Z/d* dfd+Z0d, Z1d- Z2d. Z3 ed
d/e%fd0e&fd1e'fd2e'fd3e1fd4e-fd5efd6e2fd7e3fd8efd9e"fd:e!ff       d;D ]  Z) ee)d:e!ff        d< Z4 edd6e4fd=e$fd>e fd?efd@e.fdAe0fdBefdCefdDe/ff	       y)Gz2
Convenience interface for NSArray/NSMutableArray
     N)addConvenienceForClasscontainer_unwrapcontainer_wrap)_C_ID_C_NSInteger)_NSNotFound)lookUpClassregisterMetaDataForSelector   )NEW_MAPNSArrayNSMutableArrays   NSObjects   sortUsingFunction:context:	argumentstype)r   r      )retvalr   F)callablecallable_retained)r      c                 R    t        | t        t        t        f      st        |       } | S )z,Return *anArray* as a list, tuple or NSArray)
isinstancer   listtuple)anArrays    c/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/objc/_convenience_nsarray.py_ensure_arrayr   -   s!    gu56w-N    c                 t    d}t        |       dz
  }||k  r#| j                  ||       |dz  }|dz  }||k  r"yy)zReverse an arrayr   r   N)len(exchangeObjectAtIndex_withObjectAtIndex_)selfbeginends      r   nsarray_reverser%   4   sF    E
d)a-C
#+55eSA
q #+r   c                 F    |D ]  }| j                  t        |              y N
addObject_r   )r"   r   items      r   nsarray_extendr+   >   s    t,- r   c                    |dk(  rN|t         u rF| j                  t        |            }|t        k(  r!t	        t        |       j                   d      |S | j                         }|dk  r||z   }|dk  rd}|t         ur|dk  r||z   }|dk  rd}n|}|dk(  r!t	        t        |       j                   d      ||k\  r!t	        t        |       j                   d      ||k\  r|dz
  }||k  rd}n||z
  }|dk(  r!t	        t        |       j                   d      |t        j                  kD  rt        j                  }| j                  |||f      }|t        k(  r!t	        t        |       j                   d      |S )Nr   z.index(x): x not in listr   )_index_sentinelindexOfObject_r   
NSNotFound
ValueErrorr   __name__countsysmaxsizeindexOfObject_inRange_)r"   r*   startstopres	itemcountlns          r   nsarray_indexr;   F   s   zdo-!!."67*T
 3 344LMNNT JO JJL	19%Eqy&ax 4'!8DD>T
 3 344LMNNIT
 3 344LMNN9q=D5=B B7T
 3 344LMNNB))$<*T
 3 344LMNNJr   c                     |dk  r|| j                         z  }|dk  rd}|| j                         k\  r| j                  |       y | j                  t        |      |       y )Nr   )r2   r)   insertObject_atIndex_r   )r"   idxr*   s      r   nsarray_insertr?   w   sW    
Qwtzz|7C
djjl~d3S9r   c                 ^   t        |t              r<|j                  t        |             \  }}}t	        |||      D cg c]  }| |   	 c}S t        |t
              st        d      |dk  r|t        |       z  }|dk  rt        d      t        | j                  |      t              S c c}w )N'list indices must be integers or slicesr   list index out of range)r   sliceindicesr    rangeint	TypeError
IndexErrorr   objectAtIndex_RuntimeError)r"   r>   r6   r7   stepis         r   nsarray__getitem__rM      s    #uKKD	2tT!&udD!9:!9AQ!9::S!ABB
Qws4y7677D//4lCC ;s   B*c                 |   t        |t              rs|j                  | j                               \  }}}|dk(  r||kD  ry | j	                  |||z
  f      S t        t        |||            }|D ]  }| j                  |        y |dk  r#|| j                         z  }|dk  rt        d      | j                  |       y )Nr   r   rB   )	r   rC   rD   r2   removeObjectsInRange_reversedrE   removeObjectAtIndex_rH   )r"   r>   r6   r7   rK   rrL   s          r   nsarray__delitem__rS      s    #uKK

5tT19t|--udUl.CDDU5$-.A%%a( 
Qwtzz|7677c"r   c                     | j                         }|dk  rt        d      ||k\  s||z   dk  rt        d      |dk  r|t        |       z  }| j                  |      }| j	                  |       |S )Nr   zpop from empty listzpop index out of range)r2   rH   r    rI   rQ   )r"   r>   lengthrvals       r   nsarray_poprW      sv    ZZ\F{.//	3<1,122	qs4ys#Dc"Kr   c                     | j                  |      }|t        k(  r!t        t        |       j                   d      | j                  |       y )Nz.remove(x): x not in list)r.   r/   r0   r   r1   rQ   )r"   objr>   s      r   nsarray_removerZ      sF    


c
"C
jDJ//00IJKKc"r   rA   c                     t        |t              r|j                  | j                               \  }}}|dk\  r||k  r|}t	        |      }|dk(  r| j                  |||z
  f|      S t        t        |||            }|t        |      k7  rt        d|t        |      fz        |dkD  r6|}t        t        |||            D ]  \  }}	| j                  |	||           y || u rt        |      }n|}t        t        |||            D ]  \  }}	| j                  |	||           y t        |t              st        t              |dk  r#|| j                         z  }|dk  rt        d      | j                  ||       y )Nr   r   z8Replacing extended slice with %d elements by %d elementsrB   )r   rC   rD   r2   r   +replaceObjectsInRange_withObjectsFromArray_r    rE   r0   	enumerate replaceObjectAtIndex_withObject_r   rF   rG   index_error_messagerH   )
r"   r>   anObjectr6   r7   rK   	slice_lentoAssigninIdxoutIdxs
             r   nsarray__setitem__re      s   #uKK

5tT19u} *19CCu%x  eT401	H%Jc(m,- 
 !8  H!*5d+C!Dv55fhuoN "E 4>#!*5d+C!Dv55fhuoN "E S!+,, 74::<CQw !:;;--c8<r   c                 P    t        |       }|j                  t        |             |S r'   )r   addObjectsFromArray_r   r"   otherresults      r   nsarray_addrk      s$    D!F
e 45Mr   c                 >    t        |      }|j                  |        |S r'   )r   rg   rh   s      r   nsarray_raddrm      s    E"F
%Mr   c                     t         j                         }|dk  r|S d}| }|r9||z  dk7  r|j                  |       ||z  }|r|dz  }|j                  |      }|r9|S )z
    This tries to implement anNSArray * N
    somewhat efficiently (and definitely more
    efficient that repeated appending).
    r   r   )r   arrayrg   arrayByAddingObjectsFromArray_)r"   ri   rj   ntmps        r   nsarray_mulrs     sv     !!#Fz	A
C
AI!'',QJE!GA44S9C  Mr   c                    |st         j                         S t        |t              rt         j	                  t        |            S t        |t
        t        f      st         j	                  t        |            S t         j	                  |      S r'   )r   ro   r   strarrayWithArray_r   r   clssequences     r   nsarray_newrz     sf    }}	Hc	"&&tH~66 (T5M2**4>::&&x00r   )r   
__NSArrayI
__NSArrayM
__NSArray0c                    |st         j                         S t        |t              rt         j	                  t        |            S t        |      t
        t        fvrt         j	                  t        |            S t         j	                  |      S r'   )r   ro   r   ru   rv   r   r   r   rw   s     r   nsmutablearray_newr   1  sm    ##%%	Hc	"--d8n== >$.!11$x.AA
 --h77r   )r   c                 H    t        | j                  t        |                  S r'   )boolcontainsObject_r   )r"   elems     r   nsarray__contains__r   G  s    $$^D%9:;;r   c                 8    | j                  t        |             y r'   r(   )r"   r`   s     r   nsarray_appendr   K  s    OON8,-r   c                 $    | j                          y r'   )removeAllObjectsr"   s    r   nsarray_clearr   O  s    r   c                     | S r'   r   )xs    r   <lambda>r   S  s    Qr   c                 D    |rfd}nfd}| j                  |d        y )Nc                 >     |       }  |      }| |k  ry|| k  ryy)Nr   r   r   ab_keys      r   	sort_funcznsarray_sort.<locals>.sort_funcV  s.    AAAA1uQ r   c                 >     |       }  |      }| |k  ry|| k  ryy)Nr   r   r   r   r   s      r   r   znsarray_sort.<locals>.sort_funcd  s,    AAAA1uQr   )sortUsingFunction_context_)r"   r   reverser   s    `  r   nsarray_sortr   S  s"    
			 	##It4r   c                 "    | j                         S r'   )r2   r   s    r   nsarray__len__r   r  s    ::<r   c                 "    | j                         S r'   )copyr   s    r   nsarray__copy__r   x  s    99;r   c                 4    t        | j                               S r'   )iterobjectEnumeratorr   s    r   nsarray__iter__r   |  s    %%'((r   __add____radd____mul____rmul____len____contains____getitem____copy____iter__indexremovepop)r{   r|   r}   c                 "    | j                         S r'   )mutableCopyr   s    r   nsmutablearray__copy__r     s    r   __setitem____delitem__extendappendsortinsertr   clear)r   r'   )5__doc____all__collections.abccollectionsr3   objc._conveniencer   r   r   
objc._objcr   r   r	   r/   r
   r   _newr   r   r   abcSequenceregisterMutableSequencer   r%   r+   objectr-   r;   r?   rM   rS   rW   rZ   r_   re   rk   rm   rs   rz   rx   
setdefaultr   dr   r   r   r   r   r   r   r   r   r   r   <module>r      s     
 V V * 0 ? 
i
 -.    ! !' *    ( ( 8 !  &|4"E?"E?"E?" &+
 
,.
 ( %&O .b:D #. # @ 4=n21 AC&1GsB# A8" C3#AAbE 
<. ' 5>) 	K 	\"	K 	[!	N#	,-	*+	_%	_%	- 	>"	,C
 
	 	+,	*+	*+	>"	>"		>"	O$	- 
r   