Ë
    ôU.j  ã                   óh  — d dl Z d dlZd dlZd dlZd dlmZ dZ ej                  d«      j                  Z	 ej                  d«      j                  Z
 ej                  d«      j                  Z ej                  d«      j                  Zd„ Zd„ Zdd„Z G d	„ d
«      Zdededee   dee   dedefd„Zy)é    N)ÚListi   ó   is   ddc                 ó(   — t        ||«      | ||dz    y )Né   )Ú_pack_two_doubles_func)ÚdataÚposÚvalueÚ	timestamps       ú]C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prometheus_client/mmap_dict.pyÚ_pack_two_doublesr      s   € Ü/°°yÓA€DˆˆS�2‰XÑó    c                 ó&   — t        |«      | ||dz    y )Né   )Ú_pack_integer_func)r   r	   r
   s      r   Ú_pack_integerr      s   € Ü*¨5Ó1€DˆˆS�1‰WÑr   c              #   ó*  K  — |dk  rt        | d«      d   }d}||k  rtt        | |«      d   }||z   |kD  rt        d«      ‚|dz  }| |||z    }|d|dz   dz  z
  z   }||z  }t        | |«      \  }}|j                  d«      |||f–— |dz  }||k  rŒsyy­w)z<Yield (key, value, timestamp, pos). No locking is performed.r   é   z2Read beyond file size detected, file is corrupted.r   úutf-8r   N)Ú_unpack_integerÚRuntimeErrorÚ_unpack_two_doublesÚdecode)r   Úusedr	   Úencoded_lenÚencoded_keyÚ
padded_lenr
   r   s           r   Ú_read_all_valuesr      sÏ   è ø€ ð ˆq‚yä˜t QÓ'¨Ñ*ˆà
€Cà
�Š*Ü% d¨CÓ0°Ñ3ˆà˜Ñ˜tÒ#ÜÐSÓTÐTØˆq‰ˆØ˜3˜s [Ñ0Ð1ˆØ  A¨°q©¸AÑ(=Ñ$=Ñ>ˆ
ØˆzÑˆÜ.¨t°SÓ9ÑˆˆyØ× Ñ  Ó)¨5°)¸SÐ@Ò@Øˆr‰	ˆð ��*ùs   ‚BBÂBc                   óL   — e Zd ZdZdd„Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)Ú
MmapedDictaÁ  A dict of doubles, backed by an mmapped file.

    The file starts with a 4 byte int, indicating how much of it is used.
    Then 4 bytes of padding.
    There's then a number of entries, consisting of a 4 byte int which is the
    size of the next field, a utf-8 encoded string key, padding to a 8 byte
    alignment, and then a 8 byte float which is the value and a 8 byte float
    which is a UNIX timestamp in seconds.

    Not thread safe.
    c                 óÜ  — t        ||rdnd«      | _        || _        t        j                  | j                  j                  «       «      j                  }|dk(  r%| j                  j                  t        «       t        }|| _	        t        j                  | j                  j                  «       | j                  |rt        j                  nt        j                  ¬«      | _        i | _        t        | j                  d«      d   | _        | j                   dk(  r)d| _        t#        | j                  d| j                   «       y |s*| j%                  «       D ]  \  }}}}|| j                  |<   Œ y y )NÚrbza+br   )Úaccessr   )ÚopenÚ_fÚ_fnameÚosÚfstatÚfilenoÚst_sizeÚtruncateÚ_INITIAL_MMAP_SIZEÚ	_capacityÚmmapÚACCESS_READÚACCESS_WRITEÚ_mÚ
_positionsr   Ú_usedr   r   )ÚselfÚfilenameÚ	read_modeÚcapacityÚkeyÚ_r	   s          r   Ú__init__zMmapedDict.__init__?   s  € Ü�x©¡¸Ó>ˆŒØˆŒÜ—8‘8˜DŸG™GŸN™NÓ,Ó-×5Ñ5ˆØ�qŠ=Ø�G‰G×ÑÔ/Ô0Ü)ˆHØ!ˆŒÜ—)‘)˜DŸG™GŸN™NÓ,¨d¯n©nÙ7@¤4×#3Ò#3Äd×FWÑFWôYˆŒð ˆŒÜ$ T§W¡W¨aÓ0°Ñ3ˆŒ
Ø�:‰:˜Š?ØˆDŒJÜ˜$Ÿ'™' 1 d§j¡jÕ1áØ&*×&;Ñ&;Ö&=‘N�C˜˜A˜sØ+.�D—O‘O CÒ(ñ '>ð r   c                 ó  — t        | d«      5 }|j                  t        j                  «      }t	        |d«      d   }|t        |«      kD  r ||j                  |t        |«      z
  «      z  }d d d «       t        «      S # 1 sw Y   ŒxY w)Nr"   r   )r$   Úreadr.   ÚPAGESIZEr   Úlenr   )r5   Úinfpr   r   s       r   Úread_all_values_from_filez$MmapedDict.read_all_values_from_fileT   sx   € ä�(˜DÔ! Tð —9‘9œTŸ]™]Ó+ˆDÜ" 4¨Ó+¨AÑ.ˆDØ”c˜$“iÒØ˜Ÿ	™	 $¬¨T«Ñ"2Ó3Ñ3�÷ "ô    dÓ+Ð+÷ "Ð!ús   �AA>Á>Bc                 ól  — |j                  d«      }|ddt        |«      dz   dz  z
  z  z   }t        j                  dt        |«      › d�j                  «       t        |«      |dd«      }| j                  t        |«      z   | j
                  kD  r�| xj
                  dz  c_        | j                  j                  | j
                  «       t        j                  | j                  j                  «       | j
                  «      | _
        | j                  t        |«      z   | j
                  kD  rŒ�|| j                  | j                  | j                  t        |«      z    | xj                  t        |«      z  c_        t        | j                  d	| j                  «       | j                  d
z
  | j                  |<   y)z0Initialize a value. Lock must be held by caller.r   ó    r   r   ÚiÚsddg        é   r   r   N)Úencoder>   ÚstructÚpackr3   r-   r%   r+   r.   r)   r1   r   r2   )r4   r8   ÚencodedÚpaddedr
   s        r   Ú_init_valuezMmapedDict._init_value_   s>  € à—*‘*˜WÓ%ˆà˜D A¬¨W«¸Ñ)9¸QÑ(>Ñ$>Ñ?Ñ@ˆÜ—‘˜a¤ F£˜}¨CÐ0×7Ñ7Ó9¼3¸w»<ÈÐQTÐVYÓZˆØ�j‰jœ3˜u›:Ñ%¨¯©Ò6Ø�NŠN˜aÑ�NØ�G‰G×Ñ˜TŸ^™^Ô,Ü—i‘i §¡§¡Ó 0°$·.±.ÓAˆDŒGð �j‰jœ3˜u›:Ñ%¨¯©Ó6ð 7<ˆ�‰�—
‘
˜4Ÿ:™:¬¨E«
Ñ2Ð3ð 	�
Š
”c˜%“jÑ �
Ü�d—g‘g˜q $§*¡*Ô-Ø#Ÿz™z¨B™ˆ�‰˜Òr   c                 óD   — t        | j                  | j                  ¬«      S )z1Yield (key, value, pos). No locking is performed.)r   r   )r   r1   r3   ©r4   s    r   r   zMmapedDict._read_all_valuesp   s   € ä T§W¡W°4·:±:Ô>Ð>r   c              #   óN   K  — | j                  «       D ]  \  }}}}|||f–— Œ y­w)z7Yield (key, value, timestamp). No locking is performed.N)r   )r4   ÚkÚvÚtsr9   s        r   Úread_all_valueszMmapedDict.read_all_valuest   s,   è ø€ à×0Ñ0Ö2‰KˆAˆq�"�aØ�Q˜�(‹Nñ 3ùs   ‚#%c                 óŠ   — || j                   vr| j                  |«       | j                   |   }t        | j                  |«      S ©N)r2   rK   r   r1   )r4   r8   r	   s      r   Ú
read_valuezMmapedDict.read_valuey   s;   € Ø�d—o‘oÑ%Ø×Ñ˜SÔ!Ø�o‰o˜cÑ"ˆÜ" 4§7¡7¨CÓ0Ð0r   c                 ó�   — || j                   vr| j                  |«       | j                   |   }t        | j                  |||«       y rT   )r2   rK   r   r1   )r4   r8   r
   r   r	   s        r   Úwrite_valuezMmapedDict.write_value   s<   € Ø�d—o‘oÑ%Ø×Ñ˜SÔ!Ø�o‰o˜cÑ"ˆÜ˜$Ÿ'™' 3¨¨yÕ9r   c                 ó¢   — | j                   rC| j                  j                  «        d | _        | j                   j                  «        d | _         y y rT   )r%   r1   ÚcloserM   s    r   rY   zMmapedDict.close…   s6   € Ø�7Š7Ø�G‰G�M‰MŒOØˆDŒGØ�G‰G�M‰MŒOØˆD�Gð	 r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r:   Ústaticmethodr@   rK   r   rR   rU   rW   rY   © r   r   r    r    2   s>   „ ñ
ó/ð* ñ,ó ð,ò/ò"?òò
1ò:ór   r    Úmetric_nameÚnameÚ
labelnamesÚlabelvaluesÚ	help_textÚreturnc                 ób   — t        t        ||«      «      }t        j                  | |||gd¬«      S )z&Format a key for use in the mmap file.T)Ú	sort_keys)ÚdictÚzipÚjsonÚdumps)r`   ra   rb   rc   rd   Úlabelss         r   Úmmap_keyrm   �   s/   € ô ”#�j +Ó.Ó/€FÜ�:‰:�{ D¨&°)Ð<ÈÔMÐMr   )r   )rj   r.   r'   rG   Útypingr   r,   ÚStructrH   r   r   Úunpack_fromr   r   r   r   r   r    Ústrrm   r_   r   r   Ú<module>rr      sÓ   ðÛ Û Û 	Û Ý àÐ Ø"�V—]‘] 4Ó(×-Ñ-Ð Ø&˜Ÿ™ uÓ-×2Ñ2Ð Ø�&—-‘- Ó%×1Ñ1€Ø#�f—m‘m EÓ*×6Ñ6Ð òBò2ó÷.Xñ XðvN˜#ð N Sð N°d¸3±ið NÈdÐSVÉið NÐdgð NÐloô Nr   