<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hG                     @   s   d dgZ ddlmZ ddlZddlZddlZddlZddlZddlZej	dkr\ddl
Z
dZnddlZdZejejB ZdZerd	Znd
Zdd ZG dd  d ZdZG dd dZdS )SharedMemoryShareableList    )partialNntFT   z/psm_Zwnsm_c                  C   s"   t tt d } tt|  }|S )N   )_SHM_SAFE_NAME_LENGTHlen_SHM_NAME_PREFIXsecretsZ	token_hex)nbytesname r   B/opt/alt/python39/lib64/python3.9/multiprocessing/shared_memory.py_make_filename'   s    r   c                   @   s   e Zd ZdZdZdZdZejZ	dZ
er*dndZdddZd	d
 Zdd Zdd Zedd Zedd Zedd Zdd Zdd ZdS )r   Ni  TFr   c           
   	   C   s  |dkst d|r0ttjB | _|dkr0t d|d u rL| jtj@ sLt dtrD|d u rt }ztj	|| j| j
d| _W n ty   Y qZY n0 || _qqZn.| jrd| n|}tj	|| j| j
d| _|| _z<|r|rt| j| t| j}|j}t| j|| _W n ty&   |    Y n0 ddlm} || jd	 n*|r|d u rZt n|}ttjtjtj|d
? d@ |d@ |}zjt }|tjkr|d urttj t!tj |tjnW t"| qJtjd||d| _W t"| nt"| 0 || _qnqJnb|| _t#tj$d|}z"t%|tj$ddd}	W t"| nt"| 0 t&|	}tjd||d| _|| _'t(| j| _)d S )Nr   z!'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   )ZtagnameF)*
ValueError_O_CREXosO_RDWR_flagsO_EXCL
_USE_POSIXr   _posixshmemZshm_open_mode_fdFileExistsError_name_prepend_leading_slash	ftruncatefstatst_sizemmap_mmapOSErrorunlinkresource_trackerr   _winapiZCreateFileMappingZINVALID_HANDLE_VALUEZNULLZPAGE_READWRITEZGetLastErrorZERROR_ALREADY_EXISTSerrnoZEEXISTstrerrorZCloseHandleZOpenFileMappingZFILE_MAP_READZMapViewOfFileZVirtualQuerySize_size
memoryview_buf)
selfr   createsizeZstatsr   Z	temp_nameZh_mapZlast_error_codeZp_bufr   r   r   __init__J   s    






zSharedMemory.__init__c                 C   s$   z|    W n ty   Y n0 d S N)closer*   r3   r   r   r   __del__   s    zSharedMemory.__del__c                 C   s   | j | jd| jffS )NF)	__class__r   r5   r9   r   r   r   
__reduce__   s    zSharedMemory.__reduce__c                 C   s   | j j d| jd| j dS )N(z, size=))r;   __name__r   r5   r9   r   r   r   __repr__   s    zSharedMemory.__repr__c                 C   s   | j S r7   )r2   r9   r   r   r   buf   s    zSharedMemory.bufc                 C   s.   | j }tr*| jr*| j dr*| j dd  }|S )Nr   r   )r#   r   r$   
startswith)r3   Zreported_namer   r   r   r      s
    
zSharedMemory.namec                 C   s   | j S r7   )r0   r9   r   r   r   r5      s    zSharedMemory.sizec                 C   sX   | j d ur| j   d | _ | jd ur4| j  d | _trT| jdkrTt| j d| _d S )Nr   r   )r2   releaser)   r8   r   r!   r   r9   r   r   r   r8      s    



zSharedMemory.closec                 C   s2   t r.| jr.ddlm} t| j || jd d S )Nr   )
unregisterr   )r   r#   r,   rD   r   Z
shm_unlink)r3   rD   r   r   r   r+      s    
zSharedMemory.unlink)NFr   )r?   
__module____qualname__r#   r!   r)   r2   r   r   r   r    r   r$   r6   r:   r<   r@   propertyrA   r   r5   r8   r+   r   r   r   r   r   1   s&   
l



utf8c                   @   s  e Zd ZedededededdjdiZ	dZ
dd	 d
d	 dd	 dd	 dZedd Zd5ddddZdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zd1d2 Zd3d4 Z e!e"j#Z$dS )6r   qdzxxxxxxx?z%dsNzxxxxxx?x   c                 C   s   | S r7   r   valuer   r   r   <lambda>      zShareableList.<lambda>c                 C   s   |  dtS N    )rstripdecode	_encodingrL   r   r   r   rN     rO   c                 C   s
   |  dS rP   )rR   rL   r   r   r   rN     rO   c                 C   s   d S r7   r   )Z_valuer   r   r   rN     rO   )r   r   r      c                 C   s:   t | ttd jfsdS t | tr$dS t | tr2dS dS d S )Nr   r   r   rU   )
isinstancestrbytesr;   rL   r   r   r   _extract_recreation_code  s    

z&ShareableList._extract_recreation_coder   c                   s  |d u s|d ur|pd}fdd|D }t |_d}dg_|D ]6}||d dkr\jnt|d d 7 }j| qDfdd|D }tdj d		| j
 j }t|d
|d_n
t|_|d urt tjdj jjdjgjR   tjd		|jjjg fdd|D R   tjj
jjjg fdd|D R   tjjjjjg|R   n$t _ttjjjd_d S )Nr   c                    sP   g | ]H}t |ttfs$ jt| n& jt|  jt| j d   f qS )r   )rV   rW   rX   _types_mappingtype
_alignmentr	   .0itemr9   r   r   
<listcomp>+  s   z*ShareableList.__init__.<locals>.<listcomp>r   r   sc                    s   g | ]}  |qS r   )rY   r^   r9   r   r   ra   =  s   rI    T)r4   r5   c                 3   s&   | ]}t |tr| n|V  qd S r7   )rV   rW   encoder_   v_encr   r   	<genexpr>X  rO   z)ShareableList.__init__.<locals>.<genexpr>c                 3   s   | ]}|  V  qd S r7   )rd   re   rg   r   r   ri   ^  rO   rK   )r	   	_list_len_allocated_offsetsr]   intappendstructZcalcsize_format_size_metainfojoin_format_packing_metainfo_format_back_transform_codesr   shmrT   	pack_intorA   _offset_data_start_offset_packing_formats_offset_back_transform_codeslistunpack_from)r3   Zsequencer   Z_formatsoffsetfmtZ_recreation_codesZrequested_sizer   )rh   r3   r   r6   (  s    

&




zShareableList.__init__c                 C   sj   |dkr|n|| j  }|| j ks*| j dk r2tdtd| jj| j|d  d }|d}|t	}|S )Nr    Requested position out of range.8srK   rQ   )
rj   
IndexErrorrn   ry   rs   rA   rv   rR   rS   rT   )r3   positionrf   r{   
fmt_as_strr   r   r   _get_packing_formatq  s    

z!ShareableList._get_packing_formatc                 C   sF   || j ks| j dk rtdtd| jj| j| d }| j| }|S )Nr   r|   b)rj   r~   rn   ry   rs   rA   rw   _back_transforms_mapping)r3   r   transform_codeZtransform_functionr   r   r   _get_back_transform  s    
z!ShareableList._get_back_transformc                 C   sh   || j ks| j dk rtdtd| jj| j|d  |t | 	|}td| jj| j
| | d S )Nr   r|   r}   rK   r   )rj   r~   rn   rt   rs   rA   rv   rd   rT   rY   rw   )r3   r   r   rM   r   r   r   r   !_set_packing_format_and_transform  s    
z/ShareableList._set_packing_format_and_transformc                 C   sv   |dkr|n|| j  }z.| j| j|  }t| || jj|\}W n ty^   tdY n0 | 	|}||}|S )Nr   zindex out of range)
rj   ru   rk   rn   ry   r   rs   rA   r~   r   )r3   r   rz   rf   Zback_transformr   r   r   __getitem__  s    

zShareableList.__getitem__c           	      C   s   |dkr|n|| j  }z"| j| }| j| }| |}W n tyR   tdY n0 t|ttfsv| jt	| }|}n`| j|d  | }t|tr|
tn|}t||krtd|d dkr|}n| jt |f }| ||| t|| jj|| d S )Nr   zassignment index out of ranger   z(bytes/str item exceeds available storager   rb   )rj   rk   ru   r   r~   rV   rW   rX   r[   r\   rd   rT   r	   r   r   rn   rt   rs   rA   )	r3   r   rM   Zitem_offsetrz   Zcurrent_formatZ
new_formatZencoded_valueZallocated_lengthr   r   r   __setitem__  s8    

zShareableList.__setitem__c                 C   s   t | j| jjddfS )NrZ   r   )r   r;   rs   r   r9   r   r   r   r<     s    zShareableList.__reduce__c                 C   s   t d| jjdd S )NrI   r   )rn   ry   rs   rA   r9   r   r   r   __len__  s    zShareableList.__len__c                 C   s"   | j j dt|  d| jjdS )Nr=   z, name=r>   )r;   r?   rx   rs   r   r9   r   r   r   r@     s    zShareableList.__repr__c                    s   d  fddt jD S )Nrc   c                 3   s   | ]}  |V  qd S r7   )r   )r_   ir9   r   r   ri     s   z'ShareableList.format.<locals>.<genexpr>)rp   rangerj   r9   r   r9   r   format  s    zShareableList.formatc                 C   s   d| j d  S )NrI   r   rj   r9   r   r   r   ro     s    z#ShareableList._format_size_metainfoc                 C   s
   d| j  S )Nr}   r   r9   r   r   r   rq     s    z&ShareableList._format_packing_metainfoc                 C   s
   d| j  S )Nr   r   r9   r   r   r   rr     s    z*ShareableList._format_back_transform_codesc                 C   s   | j d d S )Nr   rK   r   r9   r   r   r   ru     s    z ShareableList._offset_data_startc                 C   s   | j | jd  S )Nr   )ru   rk   r9   r   r   r   rv     s    z%ShareableList._offset_packing_formatsc                 C   s   | j | jd  S )NrK   )rv   rj   r9   r   r   r   rw     s    z*ShareableList._offset_back_transform_codesc                    s   t  fdd| D S )Nc                 3   s   | ]} |kV  qd S r7   r   )r_   entryrL   r   r   ri     rO   z&ShareableList.count.<locals>.<genexpr>)sum)r3   rM   r   rL   r   count  s    zShareableList.countc                 C   s4   t | D ]\}}||kr|  S qt|dd S )Nz not in this container)	enumerater   )r3   rM   r   r   r   r   r   index
  s    
zShareableList.index)N)%r?   rE   rF   rl   floatboolrW   rX   r;   r[   r]   r   staticmethodrY   r6   r   r   r   r   r   r<   r   r@   rG   r   ro   rq   rr   ru   rv   rw   r   r   classmethodtypesGenericAlias__class_getitem__r   r   r   r   r      sR   
I!







)__all__	functoolsr   r(   r   r.   rn   r   r   r   r-   r   r   O_CREATr   r   r   r
   r   r   rT   r   r   r   r   r   <module>   s,   

 E