fddlZddlZddlmZddlmZddlmZmZejZ gdZ ej ej ej ejejejejejejejejejejejdZdZd Zd Zd dd d Zd dd dZdZddZ dZ!dZ"dZ#dZ$iZ%ej&Z'Gdde(Z)Gdde)Z*Gdde)Z+Gdde+Z,dS)N)heap) get_context) reductionassert_spawning)RawValueRawArrayValueArraycopy synchronized)cubBhHiIlLqQfdcttj|}tj|}t ||dSN)ctypessizeofr BufferWrapper rebuild_ctype)type_sizewrappers C/opt/alt/python311/lib64/python3.11/multiprocessing/sharedctypes.py _new_valuer&'s3 =  D &&G  . ..ct||}t|}tjtj|dtj||j||S)z> Returns a ctypes object allocated from shared memory r)typecode_to_typegetr&rmemset addressofr__init__)typecode_or_typeargsr"objs r%rr,se  !13C D DE U  C M&"3''FM#,>,>???CL$ Jr'c\t||}t|trP||z}t |}t jt j|dt j||S|t|z}t |}|j ||S)z= Returns a ctypes array allocated from shared memory r) r)r* isinstanceintr&rr+r,rlenr-)r.size_or_initializerr"r0results r%r r 6s  !13C D DE%s++ ++ f&s++Q c0B0BCCC /000E"",-- r'T)lockctxct|g|R}|dur|S|dvr$|p t}|}t|dst d|zt |||S)z6 Return a synchronization wrapper for a Value FTNacquire%r has no method 'acquire'r8)rrRLockhasattrAttributeErrorr )r.r7r8r/r0s r%r r Fs # +d + + +C u}}  |"[]]yy{{ 4 # #B9D@AAA Ts + + ++r'ct||}|dur|S|dvr$|p t}|}t|dst d|zt |||S)z9 Return a synchronization wrapper for a RawArray Fr:r;r<r=)r rr>r?r@r )r.r5r7r8r0s r%r r Ts #%8 9 9C u}}  |"[]]yy{{ 4 # #B9D@AAA Ts + + ++r'cltt|}|tj|d<|S)Nr)r&typerpointer)r0new_objs r%r r bs.c##G!$FN7A Nr'cZt|tr Jd|p t}t|tjrt |||St|tjr5|jtjurt|||St|||St|} t|}nX#t$rKd|jD}d|D}d|jz}t|tf|x}t|<YnwxYw||||S)Nzobject already synchronizedcg|] }|d S)r).0fields r% z synchronized..vs888%U1X888r'c.i|]}|t|SrH) make_property)rInames r% z synchronized..ws"===t}T**===r' Synchronized)r2SynchronizedBaserr _SimpleCDatarPr _type_c_charSynchronizedStringSynchronizedArrayrC class_cacheKeyError_fields___name__)r0r7r8clssclsnamesr classnames r%r r gsI#/00OO2OOO 0 C#v*++$Cs+++ C & & $ : & &%c455 5 dC0003ii Ns#DD N N N883<888E==u===A&5I&*97G6I1&M&M MD;s###  N tCs###s: CADDct|t|tjrt|j|j|jffStt||jdffSr) rr2rr r!rS_wrapper_length_rC)r0s r% reduce_ctyperbsVC#v|$$>sz3<FFFtCyy#,===r'c|||z}t|t|}||}||_|Sr)_ForkingPicklerregisterrbcreate_memoryview from_bufferr`)r"r$lengthbufr0s r%r!r!sW UL111  # # % %C   C CCL Jr'c t|S#t$r9i}tt|fdzz|||t|<||cYSwxYw)N) prop_cacherXexectemplate)rNrs r%rMrMsh$   X$ #Q'''T7 4w s AAAz 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:eZdZd dZdZdZdZdZdZdZ dS) rQNc||_|r||_n+|ptd}||_|jj|_|jj|_dS)NT)force)_obj_lockrr>r;release)selfr0r7r8s r%r-zSynchronizedBase.__init__sZ  %DJJ04000CDJz) z) r'c4|jSr)rs __enter__rus r%rwzSynchronizedBase.__enter__sz##%%%r'c |jj|Sr)rs__exit__)rur/s r%rzzSynchronizedBase.__exit__s"tz"D))r'cJt|t|j|jffSr)rr rrrsrxs r% __reduce__zSynchronizedBase.__reduce__s$di444r'c|jSrrrrxs r%get_objzSynchronizedBase.get_objs yr'c|jSr)rsrxs r%get_lockzSynchronizedBase.get_locks zr'cBdt|jd|jdS)N)rCrZrrrxs r%__repr__zSynchronizedBase.__repr__s$(,T (;(;(;TYYYGGr'NN) rZ __module__ __qualname__r-rwrzr|rrrrHr'r%rQrQs****&&&***555HHHHHr'rQc$eZdZedZdS)rPvalueN)rZrrrMrrHr'r%rPrPs M' " "EEEr'rPc,eZdZdZdZdZdZdZdS)rVc*t|jSr)r4rrrxs r%__len__zSynchronizedArray.__len__s49~~r'cT|5|j|cdddS#1swxYwYdSrr~)rurs r% __getitem__zSynchronizedArray.__getitem__su   9Q<                  !!cP|5||j|<ddddS#1swxYwYdSrr~)rurrs r% __setitem__zSynchronizedArray.__setitem__sw  ! ! DIaL ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s cX|5|j||cdddS#1swxYwYdSrr~)rustartstops r% __getslice__zSynchronizedArray.__getslice__sz  ) )9U4Z( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s ##cT|5||j||<ddddS#1swxYwYdSrr~)rurrvaluess r% __setslice__zSynchronizedArray.__setslice__s|  + +$*DIeDj ! + + + + + + + + + + + + + + + + + +rN)rZrrrrrrrrHr'r%rVrVs_   !!!)))+++++r'rVc:eZdZedZedZdS)rUrrawN)rZrrrMrrrHr'r%rUrUs, M' " "E -  CCCr'rUr)-rweakrefrrcontextrrForkingPicklerrd__all__rTc_wcharc_bytec_ubytec_shortc_ushortc_intc_uintc_longc_ulong c_longlong c_ulonglongc_floatc_doubler)r&rr r r r r rbr!rMrnrlWeakKeyDictionaryrWobjectrQrPrVrUrHr'r%rsQ ////////* L L L       !3 ///  )-$ , , , , ,:>4 , , , , , $$$$2>>>   'g')) HHHHHvHHH@#########+++++(+++,*r'