grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i¢ã@s:ddlZddlZddlmZddlmZddlmZmZejZ gd¢Z ej ej ej ejejejejejejejejejejejdœZdd „Zd d „Zd d „Zdddœdd„Zdddœdd„Zdd„Zd'dd„Z dd„Z!dd„Z"dd„Z#dZ$iZ%e &¡Z'Gdd „d e(ƒZ)Gd!d"„d"e)ƒZ*Gd#d$„d$e)ƒZ+Gd%d&„d&e+ƒZ,dS)(é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ÚdcCs t |¡}t |¡}t||dƒS©N)ÚctypesÚsizeofrÚ BufferWrapperÚ rebuild_ctype)Útype_ÚsizeÚwrapper©r#ú4/usr/lib64/python3.9/multiprocessing/sharedctypes.pyÚ _new_value's  r%cGs<t ||¡}t|ƒ}t t |¡dt |¡¡|j|Ž|S)z> Returns a ctypes object allocated from shared memory r)Útypecode_to_typeÚgetr%rÚmemsetÚ addressofrÚ__init__)Útypecode_or_typeÚargsr Úobjr#r#r$r,s   rcCsjt ||¡}t|tƒrD||}t|ƒ}t t |¡dt |¡¡|S|t |ƒ}t|ƒ}|j |Ž|SdS)z= Returns a ctypes array allocated from shared memory rN) r&r'Ú isinstanceÚintr%rr(r)rÚlenr*)r+Úsize_or_initializerr r-Úresultr#r#r$r6s    rT)ÚlockÚctxcGsZt|g|¢RŽ}|dur|S|dvr6|p,tƒ}| ¡}t|dƒsLtd|ƒ‚t|||d�S)z6 Return a synchronization wrapper for a Value F©TNÚacquireú%r has no method 'acquire'©r4)rrÚRLockÚhasattrÚAttributeErrorr )r+r3r4r,r-r#r#r$r Fs   r cCsTt||ƒ}|dur|S|dvr0|p&tƒ}| ¡}t|dƒsFtd|ƒ‚t|||d�S)z9 Return a synchronization wrapper for a RawArray Fr5r6r7r8)rrr9r:r;r )r+r1r3r4r-r#r#r$r Ts    r cCstt|ƒƒ}|t |¡d<|S)Nr)r%ÚtyperZpointer)r-Znew_objr#r#r$r bs r cCsÈ|ptƒ}t|tjƒr"t|||ƒSt|tjƒrR|jtjurFt|||ƒSt |||ƒSt |ƒ}z t |}WnPt y¶dd„|j Dƒ}dd„|Dƒ}d|j}t |tf|ƒ}t |<Yn0||||ƒSdS)NcSsg|] }|d‘qS)rr#)Ú.0Zfieldr#r#r$Ú vóz synchronized..cSsi|]}|t|ƒ“qSr#)Ú make_property)r=Únamer#r#r$Ú wr?z synchronized..Ú Synchronized)rr.rZ _SimpleCDatarCr Ú_type_Úc_charÚSynchronizedStringÚSynchronizedArrayr<Ú class_cacheÚKeyErrorZ_fields_Ú__name__ÚSynchronizedBase)r-r3r4ÚclsZsclsÚnamesrZ classnamer#r#r$r gs           r cCs@t|ƒt|tjƒr(t|j|j|jffStt|ƒ|jdffSdSr) rr.rr rrDÚ_wrapperZ_length_r<)r-r#r#r$Ú reduce_ctype€s rOcCs8|dur||}t |t¡| ¡}| |¡}||_|Sr)Ú_ForkingPicklerÚregisterrOÚcreate_memoryviewZ from_bufferrN)r r"ÚlengthÚbufr-r#r#r$r‡s  rcCsNz t|WStyHi}tt|fd|ƒ||t|<||YS0dS)Né)Ú prop_cacherIÚexecÚtemplate)rArr#r#r$r@”s   r@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@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)rKNcCsB||_|r||_n|ptdd�}| ¡|_|jj|_|jj|_dS)NT)Úforce)Ú_objÚ_lockrr9r6Úrelease)Úselfr-r3r4r#r#r$r*¶s  zSynchronizedBase.__init__cCs |j ¡Sr)r[Ú __enter__©r]r#r#r$r^ÀszSynchronizedBase.__enter__cGs |jj|ŽSr)r[Ú__exit__)r]r,r#r#r$r`ÃszSynchronizedBase.__exit__cCst|ƒt|j|jffSr)rr rZr[r_r#r#r$Ú __reduce__ÆszSynchronizedBase.__reduce__cCs|jSr©rZr_r#r#r$Úget_objÊszSynchronizedBase.get_objcCs|jSr)r[r_r#r#r$Úget_lockÍszSynchronizedBase.get_lockcCsdt|ƒj|jfS)Nz<%s wrapper for %s>)r<rJrZr_r#r#r$Ú__repr__ÐszSynchronizedBase.__repr__)NN) rJÚ __module__Ú __qualname__r*r^r`rarcrdrer#r#r#r$rK´s rKc@seZdZedƒZdS)rCÚvalueN)rJrfrgr@rhr#r#r#r$rCÔsrCc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) rGcCs t|jƒSr)r0rZr_r#r#r$Ú__len__ÚszSynchronizedArray.__len__cCs2|�|j|WdƒS1s$0YdSrrb)r]rr#r#r$Ú __getitem__ÝszSynchronizedArray.__getitem__cCs2|�||j|<Wdƒn1s$0YdSrrb)r]rrhr#r#r$Ú __setitem__ászSynchronizedArray.__setitem__cCs6|�|j||…WdƒS1s(0YdSrrb)r]ÚstartÚstopr#r#r$Ú __getslice__åszSynchronizedArray.__getslice__cCs6|�||j||…<Wdƒn1s(0YdSrrb)r]rlrmÚvaluesr#r#r$Ú __setslice__észSynchronizedArray.__setslice__N)rJrfrgrirjrkrnrpr#r#r#r$rGØs rGc@seZdZedƒZedƒZdS)rFrhÚrawN)rJrfrgr@rhrqr#r#r#r$rFîsrF)NN)-rÚweakrefÚrrÚcontextrrÚForkingPicklerrPÚ__all__rEZc_wcharZc_byteZc_ubyteZc_shortZc_ushortZc_intZc_uintZc_longZc_ulongZ c_longlongZ c_ulonglongZc_floatZc_doubler&r%rrr r r r rOrr@rXrVÚWeakKeyDictionaryrHÚobjectrKrCrGrFr#r#r#r$Ú s>  ù