
    !#h                        U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZ d d	lmZ d d
lmZ e	rd dlZnd dlmZ  ed      Zg dZded<   ddgZdZ G d d      ZddZy)    )annotationsN)TracebackType)Any)IO)TYPE_CHECKING)BaseStorage)GrpcStorageProxy)JournalFileBackend)NamedTemporaryFilePool)_LazyImportgrpc)inmemorysqlitecached_sqlitejournaljournal_redisgrpc_rdbgrpc_journal_filez	list[Any]STORAGE_MODESr   r   i,  c                  @    e Zd ZddZ	 	 ddZddZ	 	 	 	 	 	 	 	 d	dZy)
StorageSupplierc                X    || _         || _        d | _        d | _        d | _        d | _        y )N)storage_specifier
extra_argstempfileserverthreadproxy)selfr   kwargss      T/var/www/html/sandstorm/venv/lib/python3.12/site-packages/optuna/testing/storages.py__init__zStorageSupplier.__init__/   s-    !2 (,*./3.2
    c                   | j                   dk(  rAt        | j                        dkD  rt        d      t        j
                  j                         S d| j                   v rt               j                         | _        dj                  | j                  j                        }t	        j
                  j                  |fdddt        iii| j                  }d	| j                   v rt        j
                  j                  |      S |S | j                   d
k(  r{t        j
                  j                  j                  d      }| j                  j!                  dt#        j$                               |_        t        j
                  j)                  |      S | j                   dk(  r| j                  j!                  dt               j                               | _        | j                  J t        j
                  j)                  t        j
                  j                  j+                  | j                  j                              }| j-                  |      S d| j                   v r| j                  j!                  dt               j                               | _        | j                  J t+        | j                  j                        }t        j
                  j)                  |      S | j                   dk(  rpt               j                         | _        dj                  | j                  j                        }| j-                  t        j
                  j                  |            S J )Nr   r   z.InMemoryStorage does not accept any arguments!r   zsqlite:///{}engine_kwargsconnect_argstimeoutcachedr   zredis://localhostredisr   filer   r   )r   lenr   
ValueErroroptunastoragesInMemoryStorager   r   formatname
RDBStorageSQLITE3_TIMEOUT_CachedStorager   JournalRedisBackendget	fakeredisFakeStrictRedis_redisJournalStorager
   _create_proxy)r   urlrdb_storagejournal_redis_storagestoragefile_storages         r!   	__enter__zStorageSupplier.__enter__7   s    !!Z/4??#a' !QRR??2244///24==?DM ''(:(:;C //44-	?/KL //K t555 ..{; !
 ##6$*OO$;$;$O$O#%! ,0??+>+>224,!( ??112GHH##':: OO//8N8P8Y8Y8[\DM==,,,oo44''::4==;M;MNG %%g..$000 OO//8N8P8Y8Y8[\DM==,,,-dmm.@.@AL??11,??##z124==?DM ''(:(:;C%%foo&@&@&EFF5r#   c                   t               }t        j                  j                  j                  j                  |d|      | _        t        j                  | j                  j                        | _	        | j                  j                          t        d|      | _        | j                  j                  d       | j                  S )N	localhost)target)hostport<   )r'   )_find_free_portr-   r.   _grpcr   make_server	threadingThreadstartr   r	   r   wait_server_ready)r   r?   rF   s      r!   r;   zStorageSupplier._create_proxyl   s     oo++22>>wUYZ&&dkk.?.?@%;TB


$$R$0zzr#   c                   | j                   r| j                   j                          | j                  r!| j                  j                          d | _        | j                  r`| j                  J | j                  j                  d      j                          | j                  j                          d | _        d | _        y y )N   )r   closer   r   r   stopwaitjoin)r   exc_typeexc_valexc_tbs       r!   __exit__zStorageSupplier.__exit__u   s     ==MM!::JJDJ;;;;***KKQ$$&KKDKDK r#   N)r   strr    r   returnNone)rZ   zoptuna.storages.InMemoryStorage | optuna.storages._CachedStorage | optuna.storages.RDBStorage | optuna.storages.JournalStorage | optuna.storages.GrpcStorageProxy)r?   r   rZ   r	   )rU   ztype[BaseException]rV   BaseExceptionrW   r   rZ   r[   )__name__
__module____qualname__r"   rA   r;   rX    r#   r!   r   r   .   sA    33	+3j+6CMZ	r#   r   c                     t        j                   t         j                  t         j                        } t        dd      D ]  }	 | j	                  d|f       |c S  J d       # t
        $ r Y .w xY w)Ni2  i,3  rC   zmust not reach here)socketAF_INETSOCK_STREAMrangebindOSError)sockrF   s     r!   rH   rH      sn    ==););<DeU# 	II{D)*K (''5  		s   A""	A.-A.)rZ   int)
__future__r   rb   rK   typesr   typingr   r   r   r7   r-   optuna.storagesr   r	   optuna.storages.journalr
   optuna.testing.tempfile_poolr   r   optuna._importsr   r   __annotations__STORAGE_MODES_HEARTBEATr3   r   rH   r`   r#   r!   <module>rs      sx    "          ' , 6 ? +vDy   
 V Vr(r#   