
    F\h                     l   S SK r S SKrSSKJr  SSKJr  SSKJrJr  \R                  r	/ SQr
\ R                  \ R                  \ R                  \ R                  \ R                  \ R                   \ R"                  \ R$                  \ R&                  \ R(                  \ R*                  \ R,                  \ R.                  \ R0                  S.rS rS	 rS
 rSSS.S jrSSS.S jrS rSS jr S r!S r"S r#Sr$0 r%\RL                  " 5       r' " S S\(5      r) " S S\)5      r* " S S\)5      r+ " S S\+5      r,g)    N   )heap)get_context)	reductionassert_spawning)RawValueRawArrayValueArraycopysynchronized)cubBhHiIlLqQfdc                 r    [         R                  " U 5      n[        R                  " U5      n[	        XS 5      $ N)ctypessizeofr   BufferWrapperrebuild_ctype)type_sizewrappers      3/usr/lib/python3.13/multiprocessing/sharedctypes.py
_new_valuer&   '   s-    ==D  &G..    c                     [         R                  X 5      n[        U5      n[        R                  " [        R
                  " U5      S[        R                  " U5      5        UR                  " U6   U$ )z6
Returns a ctypes object allocated from shared memory
r   )typecode_to_typegetr&   r   memset	addressofr   __init__)typecode_or_typeargsr"   objs       r%   r   r   ,   sT       !1DE
U
C
MM&""3'FMM#,>?LL$Jr'   c                 L   [         R                  X 5      n[        U[        5      (       aQ  X!-  n[	        U5      n[
        R                  " [
        R                  " U5      S[
        R                  " U5      5        U$ U[        U5      -  n[	        U5      nUR                  " U6   U$ )z5
Returns a ctypes array allocated from shared memory
r   )r)   r*   
isinstanceintr&   r   r+   r,   r   lenr-   )r.   size_or_initializerr"   r0   results        r%   r	   r	   6   s       !1DE%s+++f&&s+Qc0BC
/00E",-r'   T)lockctxc                    [        U /UQ76 nUSL a  U$ US;   a#  U=(       d
    [        5       nUR                  5       n[        US5      (       d  [	        SU-  5      e[        XAUS9$ )z.
Return a synchronization wrapper for a Value
FTNacquire%r has no method 'acquire'r8   )r   r   RLockhasattrAttributeErrorr   )r.   r7   r8   r/   r0   s        r%   r
   r
   F   sj     #
+d
+Cu}
|"[]yy{4##9D@AAs++r'   c                    [        X5      nUSL a  U$ US;   a#  U=(       d
    [        5       nUR                  5       n[        US5      (       d  [	        SU-  5      e[        XBUS9$ )z1
Return a synchronization wrapper for a RawArray
Fr:   r;   r<   r=   )r	   r   r>   r?   r@   r   )r.   r5   r7   r8   r0   s        r%   r   r   T   se     #
9Cu}
|"[]yy{4##9D@AAs++r'   c                 `    [        [        U 5      5      nU [        R                  " U5      S'   U$ )Nr   )r&   typer   pointer)r0   new_objs     r%   r   r   b   s(    c#G!$FNN7ANr'   c                    [        U [        5      (       a   S5       eU=(       d
    [        5       n[        U [        R                  5      (       a  [        XU5      $ [        U [        R                  5      (       a5  U R                  [        R                  L a  [        XU5      $ [        XU5      $ [        U 5      n [        U   nU" XU5      $ ! [         ar    UR                   Vs/ s H  oUS   PM	     Os  snf nnU Vs0 s H  ow[        U5      _M     Os  snf nnSUR                   -   n	[        U	[        4U5      =n[        U'    Nf = f)Nzobject already synchronizedr   Synchronized)r2   SynchronizedBaser   r   _SimpleCDatarG   r   _type_c_charSynchronizedStringSynchronizedArrayrC   class_cacheKeyError_fields_make_property__name__)
r0   r7   r8   clssclsfieldnamesnamer   	classnames
             r%   r   r   g   s$   #/00O2OO0

C#v**++Cs++	C	&	&::&%c55 C003i	Ns#D Cs##  	N+.<<8<%1X<8E87<=ut}T**u=A=&5I&*97G6I1&MMD;s#		Ns*   ;	C E	%C43E	?D2E	E	c                     [        U 5        [        U [        R                  5      (       a)  [        U R
                  U R                  U R                  44$ [        [        U 5      U R                  S 44$ r   )	r   r2   r   r   r!   rJ   _wrapper_length_rC   )r0   s    r%   reduce_ctyper\      sS    C#v||$$szz3<<FFFtCy#,,===r'   c                     Ub  X-  n [         R                  U [        5        UR                  5       nU R	                  U5      nXl        U$ r   )_ForkingPicklerregisterr\   create_memoryviewfrom_bufferrZ   )r"   r$   lengthbufr0   s        r%   r!   r!      sG    UL1

#
#
%C


C
 CLJr'   c                      [         U    $ ! [         a+    0 n[        [        U 4S-  -  U5        X   [         U '   X   s $ f = f)N   )
prop_cacherO   exectemplate)rW   r   s     r%   rQ   rQ      sN    $ X$#Q'7
4w	s    2A A z
def get%s(self):
    self.acquire()
    try:
        return self._obj.%s
    finally:
        self.release()
def set%s(self, value):
    self.acquire()
    try:
        self._obj.%s = value
    finally:
        self.release()
%s = property(get%s, set%s)
c                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)rH      Nc                     Xl         U(       a  X l        O'U=(       d	    [        SS9nUR                  5       U l        U R                  R                  U l        U R                  R
                  U l        g )NT)force)_obj_lockr   r>   r;   release)selfr0   r7   r8   s       r%   r-   SynchronizedBase.__init__   sM    	J040CDJzz))zz))r'   c                 6    U R                   R                  5       $ r   )rn   	__enter__rp   s    r%   rs   SynchronizedBase.__enter__   s    zz##%%r'   c                 4    U R                   R                  " U6 $ r   )rn   __exit__)rp   r/   s     r%   rw   SynchronizedBase.__exit__   s    zz""D))r'   c                 T    [        U 5        [        U R                  U R                  44$ r   )r   r   rm   rn   rt   s    r%   
__reduce__SynchronizedBase.__reduce__   s"    dii444r'   c                     U R                   $ r   rm   rt   s    r%   get_objSynchronizedBase.get_obj   s    yyr'   c                     U R                   $ r   )rn   rt   s    r%   get_lockSynchronizedBase.get_lock   s    zzr'   c                 R    S[        U 5      R                  < SU R                  < S3$ )N<z wrapper for >)rC   rR   rm   rt   s    r%   __repr__SynchronizedBase.__repr__   s    (,T
(;(;TYYGGr'   )rn   rm   r;   ro   NN)rR   
__module____qualname____firstlineno__r-   rs   rw   rz   r~   r   r   __static_attributes__ r'   r%   rH   rH      s&    *&*5Hr'   rH   c                   $    \ rS rSr\" S5      rSrg)rG      valuer   N)rR   r   r   r   rQ   r   r   r   r'   r%   rG   rG      s    '"Er'   rG   c                   2    \ rS rSrS rS rS rS rS rSr	g)	rM      c                 ,    [        U R                  5      $ r   )r4   rm   rt   s    r%   __len__SynchronizedArray.__len__   s    499~r'   c                 Z    U    U R                   U   sS S S 5        $ ! , (       d  f       g = fr   r}   )rp   r   s     r%   __getitem__SynchronizedArray.__getitem__   s    99Q< TTs   
*c                 X    U    X R                   U'   S S S 5        g ! , (       d  f       g = fr   r}   )rp   r   r   s      r%   __setitem__SynchronizedArray.__setitem__   s     IIaL TTs   
)c                 X    U    U R                   X sS S S 5        $ ! , (       d  f       g = fr   r}   )rp   startstops      r%   __getslice__SynchronizedArray.__getslice__   s    99U( TTs   
)c                 V    U    X0R                   X& S S S 5        g ! , (       d  f       g = fr   r}   )rp   r   r   valuess       r%   __setslice__SynchronizedArray.__setslice__   s    $*IIe! TTs   
(r   N)
rR   r   r   r   r   r   r   r   r   r   r   r'   r%   rM   rM      s     !)+r'   rM   c                   4    \ rS rSr\" S5      r\" S5      rSrg)rL      r   rawr   N)rR   r   r   r   rQ   r   r   r   r   r'   r%   rL   rL      s    '"E

Cr'   rL   r   )-r   weakref r   r   contextr   r   ForkingPicklerr^   __all__rK   c_wcharc_bytec_ubytec_shortc_ushortc_intc_uintc_longc_ulong
c_longlongc_ulonglongc_floatc_doubler)   r&   r   r	   r
   r   r   r   r\   r!   rQ   rh   rf   WeakKeyDictionaryrN   objectrH   rG   rM   rL   r   r'   r%   <module>r      s!       /**
L 
							!3!3	 /
  )-$ , :>4 ,
$2>  
'')Hv H@## #+( +,* r'   