o
    i                     @   s   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ eG dd	 d	ZeG d
d deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd dZG dd deZdS )    )Sequence)	dataclassfield)AnySupportsFloat)override)AsyncKeyValue)DEFAULT_COLLECTION_NAME)BaseWrapperc                   @   s>   e Zd ZU dZeddZeed< 	 dddedd	fd
dZd	S )BaseStatisticsz2Base statistics container with operation counting.r   defaultcount   	incrementr   returnNc                C   s   |  j |7  _ d S N)r   selfr    r   o/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/key_value/aio/wrappers/statistics/wrapper.pyr      s   zBaseStatistics.increment)	__name__
__module____qualname____doc__r   r   int__annotations__r   r   r   r   r   r      s
   
 r   c                   @   sj   e Zd ZU dZeddZeed< 	 eddZeed< 	 ddded	d
fddZ	ddded	d
fddZ
d
S )BaseHitMissStatisticszFStatistics container with hit/miss tracking for cache-like operations.r   r   hitmissr   r   r   r   Nc                C      | j |d |  j|7  _d S Nr   )r   r   r   r   r   r   increment_hit       z#BaseHitMissStatistics.increment_hitc                C   r!   r"   )r   r    r   r   r   r   increment_miss$   r$   z$BaseHitMissStatistics.increment_miss)r   r   r   r   r   r   r   r   r    r#   r%   r   r   r   r   r      s   
 r   c                   @      e Zd ZdZdS )GetStatistics3A class for statistics about a KV Store collection.Nr   r   r   r   r   r   r   r   r'   )       r'   c                   @   r&   )PutStatisticsr(   Nr)   r   r   r   r   r+   .   r*   r+   c                   @   r&   )DeleteStatisticsr(   Nr)   r   r   r   r   r,   3   r*   r,   c                   @   r&   )ExistsStatisticsr(   Nr)   r   r   r   r   r-   8   r*   r-   c                   @   r&   )TTLStatisticsr(   Nr)   r   r   r   r   r.   =   r*   r.   c                   @   st   e Zd ZU dZeedZeed< 	 eedZ	eed< 	 ee
dZe
ed< 	 eedZeed< 	 eedZeed< dS )	KVStoreCollectionStatisticsr(   default_factorygetttlputdeleteexistsN)r   r   r   r   r   r'   r2   r   r.   r3   r+   r4   r,   r5   r-   r6   r   r   r   r   r/   B   s   
 r/   c                   @   s>   e Zd ZU dZeedZeeef e	d< dedefddZ
dS )	KVStoreStatisticsz$Statistics container for a KV Store.r0   collections
collectionr   c                 C   s    || j vrt | j |< | j | S r   )r8   r/   )r   r9   r   r   r   get_collection\   s   

z KVStoreStatistics.get_collectionN)r   r   r   r   r   dictr8   strr/   r   r:   r   r   r   r   r7   V   s   
 r7   c                   @   s  e Zd ZdZdeddfddZedefddZe	dd	d
e
de
dB dee
ef dB fddZe	dd	d
e
de
dB deee
ef dB edB f fddZe	dddd
e
dee
ef de
dB dedB ddf
ddZe	dd	d
e
de
dB defddZe	dd	dee
 de
dB deee
ef dB  fddZe	ddddee
 deee
ef  de
dB deedB  dB ddf
ddZe	dd	dee
 de
dB defddZe	dd	dee
 de
dB deeee
ef dB edB f  fdd ZdS )!StatisticsWrapperzStatistics wrapper around a KV Store that tracks operation statistics.

    Note: enumeration and destroy operations are not tracked by this wrapper.
    	key_valuer   Nc                 C   s   || _ t | _d S r   )r>   r7   _statistics)r   r>   r   r   r   __init__h   s   zStatisticsWrapper.__init__c                 C   s   | j S r   )r?   )r   r   r   r   
statisticsl   s   zStatisticsWrapper.statisticsr9   keyr9   c                   sT   |pt }| jj||dI d H  }r| jj|dj  |S | jj|dj  d S )Nr9   rC   rB   )r	   r>   r2   rA   r:   r#   r%   )r   rC   r9   valuer   r   r   r2   p   s   zStatisticsWrapper.getc                   s\   |pt }| jj||dI d H \}}|r"| jj|dj  ||fS | jj|dj  dS )NrD   rB   )NN)r	   r>   r3   rA   r:   r#   r%   )r   rC   r9   rE   r3   r   r   r   r3   |   s   zStatisticsWrapper.ttl)r9   r3   rE   r3   c                   s<   |pt }| jj||||dI d H  | jj|dj  d S )N)r9   rC   rE   r3   rB   )r	   r>   r4   rA   r:   r   )r   rC   rE   r9   r3   r   r   r   r4      s   zStatisticsWrapper.putc                   sP   |pt }| jj||dI d H r| jj|dj  dS | jj|dj  dS )NrD   rB   TF)r	   r>   r5   rA   r:   r#   r%   )r   rC   r9   r   r   r   r5      s   zStatisticsWrapper.deletekeysc                   x   |pt }| jj||dI d H }tdd |D }tdd |D }| jj|djj|d | jj|djj|d |S )NrF   r9   c                 S   s   g | ]}|d ur|qS r   r   .0resultr   r   r   
<listcomp>       z.StatisticsWrapper.get_many.<locals>.<listcomp>c                 S   s   g | ]}|d u r|qS r   r   rI   r   r   r   rL      rM   rB   r   )	r	   r>   get_manylenrA   r:   r2   r#   r%   r   rF   r9   resultshitsmissesr   r   r   rN         zStatisticsWrapper.get_manyvaluesc                   sD   |pt }| jj||||dI d H  | jj|djjt|d d S )N)rF   rU   r9   r3   rB   r   )r	   r>   put_manyrA   r:   r4   r   rO   )r   rF   rU   r9   r3   r   r   r   rV      s   	 zStatisticsWrapper.put_manyc                   sd   |pt }| jj||dI d H }|}t|| }| jj|djj|d | jj|djj|d |S )NrH   rB   r   )	r	   r>   delete_manyrO   rA   r:   r5   r#   r%   )r   rF   r9   deleted_countrR   rS   r   r   r   rW      s   zStatisticsWrapper.delete_manyc                   rG   )NrH   c                 S   s   g | ]
}|d  dur|qS r   Nr   rI   r   r   r   rL          z.StatisticsWrapper.ttl_many.<locals>.<listcomp>c                 S   s   g | ]
}|d  du r|qS rY   r   rI   r   r   r   rL      rZ   rB   r   )	r	   r>   ttl_manyrO   rA   r:   r3   r#   r%   rP   r   r   r   r[      rT   zStatisticsWrapper.ttl_many)r   r   r   r   r   r@   propertyr7   rA   r   r<   r;   r   r2   tuplefloatr3   r   r4   boolr5   listrN   r   rV   r   rW   r[   r   r   r   r   r=   b   sB    .:8"6&Fr=   N)collections.abcr   dataclassesr   r   typingr   r   typing_extensionsr   !key_value.aio.protocols.key_valuer   key_value.aio.stores.baser	   key_value.aio.wrappers.baser
   r   r   r'   r+   r,   r-   r.   r/   r7   r=   r   r   r   r   <module>   s4    
