o
    c²“i)  ã                   @   sž  d dl mZmZmZ d dlmZ d dlmZ dada	dd„ Z
dd	„ Zd
efdd„Zedd„ ƒZeddœdeeef deeeef  defdd„ƒZeddœdeeef deeeef  defdd„ƒZedededdfdd„ƒZe	d'ddœdeeef deeef dedeeeef  def
dd„ƒZeddd œdeeef d!edeeeef  defd"d#„ƒZeddœd$eeef deeeef  dee fd%d&„ƒZdS )(é    )ÚListÚOptionalÚUnion)Úclient_mode_hook)Ú	GcsClientFNc                   C   s   d a dad S )NF©Úglobal_gcs_clientÚ_initialized© r
   r
   úP/home/ubuntu/.local/lib/python3.10/site-packages/ray/experimental/internal_kv.pyÚ_internal_kv_reset
   s   r   c                   C   s   t S ©N©r   r
   r
   r
   r   Úinternal_kv_get_gcs_client   s   r   Ú
gcs_clientc                 C   s   | dusJ ‚| a dadS )z;Initialize the internal KV for use in other function calls.NTr   )r   r
   r
   r   Ú_initialize_internal_kv   s   r   c                   C   s   t d uS r   r   r
   r
   r
   r   Ú_internal_kv_initialized   s   r   )Ú	namespaceÚkeyr   Úreturnc                C   ó>   t | tƒr	|  ¡ } t |tƒr| ¡ }t | tƒsJ ‚t | |¡S )z Fetch the value of a binary key.)Ú
isinstanceÚstrÚencodeÚbytesr   Úinternal_kv_get©r   r   r
   r
   r   Ú_internal_kv_get!   ó   

r   c                C   r   )zCheck key exists or not.)r   r   r   r   r   Úinternal_kv_existsr   r
   r
   r   Ú_internal_kv_exists/   r   r    ÚuriÚexpiration_sc                C   s   t  | |¡S )z'Pin a runtime_env URI for expiration_s.)r   Úpin_runtime_env_uri)r!   r"   r
   r
   r   Ú_pin_runtime_env_uri=   s   r$   TÚvalueÚ	overwritec                C   sl   t | tƒr	|  ¡ } t |tƒr| ¡ }t |tƒr| ¡ }t | tƒr*t |tƒr*t |tƒs,J ‚t | |||¡dkS )zÈGlobally associates a value with a given binary key.

    This only has an effect if the key does not already have a value.

    Returns:
        already_exists: whether the value already exists.
    r   )r   r   r   r   Úboolr   Úinternal_kv_put)r   r%   r&   r   r
   r
   r   Ú_internal_kv_putC   s   


ÿþýr)   )Údel_by_prefixr   r*   c                C   s@   t | tƒr	|  ¡ } t |tƒr| ¡ }t | tƒsJ ‚t | ||¡S r   )r   r   r   r   r   Úinternal_kv_del)r   r*   r   r
   r
   r   Ú_internal_kv_dela   s   

r,   Úprefixc                C   s0   t | tƒr	|  ¡ } t |tƒr| ¡ }t | |¡S )zBList all keys in the internal KV store that start with the prefix.)r   r   r   r   Úinternal_kv_keys)r-   r   r
   r
   r   Ú_internal_kv_listp   s
   

r/   )T)Útypingr   r   r   Úray._private.client_mode_hookr   Úray._rayletr   r	   r   r   r   r   r   r   r   r   r'   r    Úintr$   r)   r,   r/   r
   r
   r
   r   Ú<module>   s„    
ÿ
ÿÿþÿ
ÿÿþýû
ÿ
þýûúü
ÿýüûÿ
ÿÿþ