grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´iÜGã@s²ddgZddlmZddlZddlZddlZddlZddlZddlZej dkr\ddl Z dZ n ddl Z dZ ej ejBZdZe r‚d Znd Zd d „ZGd d„dƒZdZGdd„dƒZdS)Ú SharedMemoryÚ ShareableListé)ÚpartialNÚntFTéz/psm_Zwnsm_cCs"tttƒd}tt |¡}|S)Né)Ú_SHM_SAFE_NAME_LENGTHÚlenÚ_SHM_NAME_PREFIXÚsecretsZ token_hex)ÚnbytesÚname©rú5/usr/lib64/python3.9/multiprocessing/shared_memory.pyÚ_make_filename'src@sˆeZdZdZdZdZdZejZ dZ e r*dndZ ddd„Z d d „Zd d „Zd d„Zedd„ƒZedd„ƒZedd„ƒZdd„Zdd„ZdS)rNéÿÿÿÿi€TFrc Cs„|dkstdƒ‚|r0ttjB|_|dkr0tdƒ‚|durL|jtj@sLtdƒ‚t�rD|duržtƒ}ztj ||j|j d�|_ Wnt y�YqZYn0||_ qÌqZn.|jr¬d|n|}tj ||j|j d�|_ ||_ z<|rä|rät |j |¡t |j ¡}|j}t |j |¡|_Wnt�y&| ¡‚Yn0ddlm}||j d ƒ�n*|�r |du�rZtƒn|}t tjtjtj|d ?d @|d @|¡}zjt ¡}|tjk�rÐ|du�rÀt tj t !tj ¡|tjƒ‚nWt "|¡�qJtjd ||d �|_Wt "|¡n t "|¡0||_ �qn�qJnb||_ t #tj$d|¡}z"t %|tj$ddd¡} Wt "|¡n t "|¡0t &| ¡}tjd ||d �|_||_'t(|jƒ|_)dS)Nrz!'size' must be a positive integerz4'size' must be a positive number different from zeroz&'name' can only be None if create=True)Úmodeú/é)ÚregisterÚ shared_memoryé lÿÿr)ZtagnameF)*Ú ValueErrorÚ_O_CREXÚosÚO_RDWRÚ_flagsÚO_EXCLÚ _USE_POSIXrÚ _posixshmemZshm_openÚ_modeÚ_fdÚFileExistsErrorÚ_nameÚ_prepend_leading_slashÚ ftruncateÚfstatÚst_sizeÚmmapÚ_mmapÚOSErrorÚunlinkÚresource_trackerrÚ_winapiZCreateFileMappingZINVALID_HANDLE_VALUEZNULLZPAGE_READWRITEZ GetLastErrorZERROR_ALREADY_EXISTSÚerrnoÚEEXISTÚstrerrorZ CloseHandleZOpenFileMappingZ FILE_MAP_READZ MapViewOfFileZVirtualQuerySizeÚ_sizeÚ memoryviewÚ_buf) Úselfr ÚcreateÚsizeZstatsrZ temp_nameZh_mapZlast_error_codeZp_bufrrrÚ__init__Jsª ý   ý   ú   ü ý ýû zSharedMemory.__init__cCs$z | ¡WntyYn0dS©N)Úcloser*©r4rrrÚ__del__¶s  zSharedMemory.__del__cCs|j|jd|jffS)NF)Ú __class__r r6r:rrrÚ __reduce__¼s ýþzSharedMemory.__reduce__cCs|jj›d|j›d|j›d�S)Nú(z, size=ú))r<Ú__name__r r6r:rrrÚ__repr__ÆszSharedMemory.__repr__cCs|jSr8)r3r:rrrÚbufÉszSharedMemory.bufcCs.|j}tr*|jr*|j d¡r*|jdd…}|S)Nrr)r#rr$Ú startswith)r4Z reported_namerrrr Îs   zSharedMemory.namecCs|jSr8)r1r:rrrr6×szSharedMemory.sizecCsX|jdur|j ¡d|_|jdur4|j ¡d|_trT|jdkrTt |j¡d|_dS)Nrr)r3Úreleaser)r9rr!rr:rrrr9Üs     zSharedMemory.closecCs2tr.|jr.ddlm}t |j¡||jdƒdS)Nr)Ú unregisterr)rr#r,rErZ shm_unlink)r4rErrrr+és   zSharedMemory.unlink)NFr)r@Ú __module__Ú __qualname__r#r!r)r3rrrr rr$r7r;r=rAÚpropertyrBr r6r9r+rrrrr1s&  l     Úutf8c @seZdZedededededdjdiZ dZ dd „d d „d d „d d „d œZ e dd„ƒZ d5ddœdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zed#d$„ƒZed%d&„ƒZed'd(„ƒZed)d*„ƒZed+d,„ƒZed-d.„ƒZed/d0„ƒZd1d2„Zd3d4„Z e!e"j#ƒZ$dS)6rÚqÚdzxxxxxxx?z%dsNzxxxxxx?xécCs|Sr8r©ÚvaluerrrÚózShareableList.cCs| d¡ t¡S©Nó)ÚrstripÚdecodeÚ _encodingrMrrrrOrPcCs | d¡SrQ)rSrMrrrrOrPcCsdSr8r)Ú_valuerrrrOrP)rrrécCs:t|ttdjfƒsdSt|tƒr$dSt|tƒr2dSdSdS)NrrrrW)Ú isinstanceÚstrÚbytesr<rMrrrÚ_extract_recreation_codes  z&ShareableList._extract_recreation_code©r cs¨|dus|durÆ|pd}‡fdd„|Dƒ}t|ƒˆ_d}dgˆ_|D]6}||ddkr\ˆjnt|dd…ƒ7}ˆj |¡qD‡fdd„|Dƒ}t dˆjd   |¡ˆj ˆj ¡}t |d |d �ˆ_ n t |ƒˆ_ |du�r€t‰tjdˆjˆj jdˆjgˆj¢RŽtjd   |¡ˆj jˆjg‡fd d „|Dƒ¢RŽtjˆj ˆj jˆjg‡fdd „|Dƒ¢RŽtjˆj ˆj jˆjg|¢RŽn$tˆƒˆ_tt ˆjˆj jd¡ƒˆ_dS)NrcsPg|]H}t|ttfƒs$ˆjt|ƒn&ˆjt|ƒˆjt|ƒˆjdf‘qS)r)rXrYrZÚ_types_mappingÚtypeÚ _alignmentr ©Ú.0Úitemr:rrÚ +s ü ÿ ÿz*ShareableList.__init__..rrÚscsg|]}ˆ |¡‘qSr)r[r`r:rrrc=srJÚT)r5r6c3s&|]}t|tƒr| ˆ¡n|VqdSr8)rXrYÚencode©raÚv©Ú_encrrÚ XrPz)ShareableList.__init__..c3s|]}| ˆ¡VqdSr8)rfrgrirrrk^rPrL)r Ú _list_lenÚ_allocated_offsetsr_ÚintÚappendÚstructÚcalcsizeÚ_format_size_metainfoÚjoinÚ_format_packing_metainfoÚ_format_back_transform_codesrÚshmrUÚ pack_intorBÚ_offset_data_startÚ_offset_packing_formatsÚ_offset_back_transform_codesÚlistÚ unpack_from)r4Zsequencer Z_formatsÚoffsetÚfmtZ_recreation_codesZrequested_sizer)rjr4rr7(s€ ú & ÿÿþýÿ  üûýüýüýü  ýÿzShareableList.__init__cCsj|dkr |n||j}||jks*|jdkr2tdƒ‚t d|jj|j|d¡d}| d¡}| t ¡}|S)Nrú Requested position out of range.Ú8srLrR) rlÚ IndexErrorrpr|rvrBryrSrTrU)r4Úpositionrhr~Ú fmt_as_strrrrÚ_get_packing_formatqs ýü  z!ShareableList._get_packing_formatcCsF||jks|jdkrtdƒ‚t d|jj|j|¡d}|j|}|S)NrrÚb)rlr�rpr|rvrBrzÚ_back_transforms_mapping)r4r‚Útransform_codeZtransform_functionrrrÚ_get_back_transform�sýü z!ShareableList._get_back_transformcCsh||jks|jdkrtdƒ‚t d|jj|j|d| t¡¡|  |¡}t d|jj|j ||¡dS)Nrrr€rLr…) rlr�rprwrvrBryrfrUr[rz)r4r‚rƒrNr‡rrrÚ!_set_packing_format_and_transform�s ü üz/ShareableList._set_packing_format_and_transformcCsv|dkr |n||j}z.|j|j|}t | |¡|jj|¡\}Wnty^tdƒ‚Yn0|  |¡}||ƒ}|S)Nrzindex out of range) rlrxrmrpr|r„rvrBr�rˆ)r4r‚r}rhZback_transformrrrÚ __getitem__¦sý   zShareableList.__getitem__c Csü|dkr |n||j}z"|j|}|j|}| |¡}WntyRtdƒ‚Yn0t|ttfƒsv|jt |ƒ}|}n`|j|d|}t|tƒrœ|  t ¡n|}t |ƒ|kr´t dƒ‚|ddkrÆ|}n|jt|f}| |||¡t ||jj||¡dS)Nrzassignment index out of rangerz(bytes/str item exceeds available storagerrd)rlrmrxr„r�rXrYrZr]r^rfrUr rr‰rprwrvrB) r4r‚rNZ item_offsetr}Zcurrent_formatZ new_formatZ encoded_valueZallocated_lengthrrrÚ __setitem__·s8   ÿ ÿ  ÿýzShareableList.__setitem__cCst|j|jjd�dfS)Nr\r)rr<rvr r:rrrr=ØszShareableList.__reduce__cCst d|jjd¡dS)NrJr)rpr|rvrBr:rrrÚ__len__ÛszShareableList.__len__cCs"|jj›dt|ƒ›d|jj›d�S)Nr>z, name=r?)r<r@r{rvr r:rrrrAÞszShareableList.__repr__csd ‡fdd„tˆjƒDƒ¡S)Nrec3s|]}ˆ |¡VqdSr8)r„)raÚir:rrrkäsz'ShareableList.format..)rsÚrangerlr:rr:rÚformatásÿzShareableList.formatcCsd|jdS)NrJr©rlr:rrrrrèsz#ShareableList._format_size_metainfocCs d|jS)Nr€r�r:rrrrtísz&ShareableList._format_packing_metainfocCs d|jS)Nr…r�r:rrrruòsz*ShareableList._format_back_transform_codescCs|jddS)NrrLr�r:rrrrx÷sz ShareableList._offset_data_startcCs|j|jdS)Nr)rxrmr:rrrryýsz%ShareableList._offset_packing_formatscCs|j|jdS)NrL)ryrlr:rrrrzsz*ShareableList._offset_back_transform_codescst‡fdd„|DƒƒS)Nc3s|]}ˆ|kVqdSr8r)raÚentryrMrrrkrPz&ShareableList.count..)Úsum)r4rNrrMrÚcountszShareableList.countcCs4t|ƒD]\}}||kr|Sqt|›d�ƒ‚dS)Nz not in this container)Ú enumerater)r4rNr‚r‘rrrÚindex s zShareableList.index)N)%r@rFrGrnÚfloatÚboolrYrZr<r]r_r†Ú staticmethodr[r7r„rˆr‰rŠr‹r=rŒrArHr�rrrtrurxryrzr“r•Ú classmethodÚtypesÚ GenericAliasÚ__class_getitem__rrrrr÷sRúü I!        )Ú__all__Ú functoolsrr(rr.rpr ršr r-rrÚO_CREATrrrr rrrUrrrrrÚs,    E