o
    /wi?                     @  s6  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 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ erid dlZd dlmZ d dlmZ ne
dZe
dZe
dZeeZdZ G dd dej!Z"d&ddZ#d'ddZ$d(d"d#Z%d)d$d%Z&dS )*    )annotations)datetimeN)TYPE_CHECKING)logging)_LazyImportdistribution_to_jsonjson_to_distribution)DuplicatedStudyError)UpdateFinishedTrialError)BaseStorage)StudyDirection)FrozenTrial)
TrialState)api_pb2)api_pb2_grpcz,optuna.storages._grpc.auto_generated.api_pb2z1optuna.storages._grpc.auto_generated.api_pb2_grpcgrpcz%Y-%m-%d %H:%M:%S.%fc                   @  s   e Zd ZdWddZdXddZdYddZdZddZd[ddZd\ddZd]d d!Z	d^d$d%Z
d_d(d)Zd`d,d-Zdad0d1Zdbd4d5Zdcd8d9Zddd<d=Zded@dAZdfdDdEZdgdHdIZdhdLdMZdidPdQZdjdTdUZdVS )kOptunaStorageProxyServicestorager   returnNonec                 C  s   || _ t | _d S )N)_backend	threadingLock_lock)selfr    r   [/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/optuna/storages/_grpc/servicer.py__init__$   s   z"OptunaStorageProxyService.__init__requestapi_pb2.CreateNewStudyRequestcontextgrpc.ServicerContextapi_pb2.CreateNewStudyReplyc              
   C  sr   dd |j D }|j}z
| jj||d}W n ty2 } z|jtjjt	|d W Y d }~nd }~ww t
j|dS )Nc                 S  "   g | ]}|t jkrtjntjqS r   )r   MINIMIZEr   MAXIMIZE.0dr   r   r   
<listcomp>-       z<OptunaStorageProxyService.CreateNewStudy.<locals>.<listcomp>)
directions
study_namecodedetailsstudy_id)r-   r.   r   create_new_studyr   abortr   
StatusCodeALREADY_EXISTSstrr   CreateNewStudyReply)r   r    r"   r-   r.   r3   er   r   r   CreateNewStudy(   s   "z(OptunaStorageProxyService.CreateNewStudyapi_pb2.DeleteStudyRequestapi_pb2.DeleteStudyReplyc              
   C  s^   |j }z| j| W t	
 S  ty. } z|jtjjt|d W Y d }~t	
 S d }~ww Nr/   )r3   r   delete_studyKeyErrorr5   r   r6   	NOT_FOUNDr8   r   DeleteStudyReplyr   r    r"   r3   r:   r   r   r   DeleteStudy9   s    z%OptunaStorageProxyService.DeleteStudy$api_pb2.SetStudyUserAttributeRequest"api_pb2.SetStudyUserAttributeReplyc              
   C  h   z| j |j|jt|j W t S  ty3 } z|jt	j
jt|d W Y d }~t S d }~ww r>   )r   set_study_user_attrr3   keyjsonloadsvaluer@   r5   r   r6   rA   r8   r   SetStudyUserAttributeReplyr   r    r"   r:   r   r   r   SetStudyUserAttributeE       z/OptunaStorageProxyService.SetStudyUserAttribute&api_pb2.SetStudySystemAttributeRequest$api_pb2.SetStudySystemAttributeReplyc              
   C  rG   r>   )r   set_study_system_attrr3   rI   rJ   rK   rL   r@   r5   r   r6   rA   r8   r   SetStudySystemAttributeReplyrN   r   r   r   SetStudySystemAttributeR   rP   z1OptunaStorageProxyService.SetStudySystemAttribute!api_pb2.GetStudyIdFromNameRequestapi_pb2.GetStudyIdFromNameReplyc              
   C  sZ   z	| j |j}W n ty& } z|jtjjt|d W Y d }~nd }~ww t	j
|dS )Nr/   r2   )r   get_study_id_from_namer.   r@   r5   r   r6   rA   r8   r   GetStudyIdFromNameReplyrC   r   r   r   GetStudyIdFromName_   s   "z,OptunaStorageProxyService.GetStudyIdFromName!api_pb2.GetStudyNameFromIdRequestapi_pb2.GetStudyNameFromIdReplyc              
   C  sj   |j }z| j|}W n ty( } z|jtjjt|d W Y d }~nd }~ww |d us/J t	j
|dS )Nr/   )r.   )r3   r   get_study_name_from_idr@   r5   r   r6   rA   r8   r   GetStudyNameFromIdReply)r   r    r"   r3   namer:   r   r   r   GetStudyNameFromIdj   s   "z,OptunaStorageProxyService.GetStudyNameFromId!api_pb2.GetStudyDirectionsRequestapi_pb2.GetStudyDirectionsReplyc              
   C  st   |j }z| j|}W n ty( } z|jtjjt|d W Y d }~nd }~ww |d us/J t	j
dd |D dS )Nr/   c                 S  r%   r   r   r&   r   r'   r(   r   r   r   r+      r,   z@OptunaStorageProxyService.GetStudyDirections.<locals>.<listcomp>)r-   )r3   r   get_study_directionsr@   r5   r   r6   rA   r8   r   GetStudyDirectionsReply)r   r    r"   r3   r-   r:   r   r   r   GetStudyDirectionsx   s   "z,OptunaStorageProxyService.GetStudyDirections%api_pb2.GetStudyUserAttributesRequest#api_pb2.GetStudyUserAttributesReplyc              
   C  h   z	| j |j}W n ty& } z|jtjjt|d W Y d }~nd }~ww t	j
dd | D dS )Nr/   c                 S     i | ]
\}}|t |qS r   rJ   dumpsr)   rI   rL   r   r   r   
<dictcomp>       zDOptunaStorageProxyService.GetStudyUserAttributes.<locals>.<dictcomp>)user_attributes)r   get_study_user_attrsr3   r@   r5   r   r6   rA   r8   r   GetStudyUserAttributesReplyitemsr   r    r"   
attributesr:   r   r   r   GetStudyUserAttributes      "z0OptunaStorageProxyService.GetStudyUserAttributes'api_pb2.GetStudySystemAttributesRequest%api_pb2.GetStudySystemAttributesReplyc              
   C  ri   )Nr/   c                 S  rj   r   rk   rm   r   r   r   rn      ro   zFOptunaStorageProxyService.GetStudySystemAttributes.<locals>.<dictcomp>)system_attributes)r   get_study_system_attrsr3   r@   r5   r   r6   rA   r8   r   GetStudySystemAttributesReplyrs   rt   r   r   r   GetStudySystemAttributes   rw   z2OptunaStorageProxyService.GetStudySystemAttributesapi_pb2.GetAllStudiesRequestapi_pb2.GetAllStudiesReplyc                 C  s    | j  }tjdd |D dS )Nc              
   S  sP   g | ]$}t j|j|jd d |jD dd |j D dd |j D dqS )c                 S  r%   r   rc   r(   r   r   r   r+      r,   zFOptunaStorageProxyService.GetAllStudies.<locals>.<listcomp>.<listcomp>c                 S  rj   r   rk   rm   r   r   r   rn          zFOptunaStorageProxyService.GetAllStudies.<locals>.<listcomp>.<dictcomp>c                 S  rj   r   rk   rm   r   r   r   rn      r   )r3   r.   r-   rp   rz   )r   Study	_study_idr.   r-   
user_attrsrs   system_attrs)r)   studyr   r   r   r+      s     z;OptunaStorageProxyService.GetAllStudies.<locals>.<listcomp>)studies)r   get_all_studiesr   GetAllStudiesReply)r   r    r"   r   r   r   r   GetAllStudies   s   
z'OptunaStorageProxyService.GetAllStudiesapi_pb2.CreateNewTrialRequestapi_pb2.CreateNewTrialReplyc              
   C  st   |j }d }|jst|j}z	| j||}W n ty3 } z|jtj	j
t|d W Y d }~nd }~ww tj|dS Nr/   )trial_id)r3   template_trial_is_none_from_proto_trialtemplate_trialr   create_new_trialr@   r5   r   r6   rA   r8   r   CreateNewTrialReply)r   r    r"   r3   r   r   r:   r   r   r   CreateNewTrial   s   
"z(OptunaStorageProxyService.CreateNewTrial api_pb2.SetTrialParameterRequestapi_pb2.SetTrialParameterReplyc              
   C  s   |j }|j}|j}t|j}z| j|||| W t S  ty< } z|jt	j
jt|d W Y d }~t S d }~w ty[ } z|jt	j
jt|d W Y d }~t S d }~w tyz } z|jt	j
jt|d W Y d }~t S d }~ww r>   )r   
param_nameparam_value_internalr
   distributionr   set_trial_paramr@   r5   r   r6   rA   r8   r   FAILED_PRECONDITION
ValueErrorINVALID_ARGUMENTr   SetTrialParameterReply)r   r    r"   r   r   r   r   r:   r   r   r   SetTrialParameter   s(   
   z+OptunaStorageProxyService.SetTrialParameter/api_pb2.GetTrialIdFromStudyIdTrialNumberRequest-api_pb2.GetTrialIdFromStudyIdTrialNumberReplyc              
   C  sf   |j }|j}z	| j||}W n ty, } z|jtjjt	|d W Y d }~nd }~ww t
j|dS r   )r3   trial_numberr   'get_trial_id_from_study_id_trial_numberr@   r5   r   r6   rA   r8   r   %GetTrialIdFromStudyIdTrialNumberReply)r   r    r"   r3   r   r   r:   r   r   r    GetTrialIdFromStudyIdTrialNumber   s   "z:OptunaStorageProxyService.GetTrialIdFromStudyIdTrialNumber"api_pb2.SetTrialStateValuesRequest api_pb2.SetTrialStateValuesReplyc              
   C  s   |j }|j}|jrt|jnd }z| j|t||}W n9 ty9 } z|jt	j
jt|d W Y d }~n!d }~w tyU } z|jt	j
jt|d W Y d }~nd }~ww tj|dS )Nr/   )trial_updated)r   statevalueslistr   set_trial_state_values_from_proto_trial_stater@   r5   r   r6   rA   r8   r   r   r   SetTrialStateValuesReply)r   r    r"   r   r   r   r   r:   r   r   r   SetTrialStateValues   s   
""z-OptunaStorageProxyService.SetTrialStateValues(api_pb2.SetTrialIntermediateValueRequest&api_pb2.SetTrialIntermediateValueReplyc              
   C  s   |j }|j}|j}z| j||| W t S  ty6 } z|jtjj	t
|d W Y d }~t S d }~w tyU } z|jtjjt
|d W Y d }~t S d }~ww r>   )r   stepintermediate_valuer   set_trial_intermediate_valuer@   r5   r   r6   rA   r8   r   r   r   SetTrialIntermediateValueReply)r   r    r"   r   r   r   r:   r   r   r   SetTrialIntermediateValue  s     z3OptunaStorageProxyService.SetTrialIntermediateValue$api_pb2.SetTrialUserAttributeRequest"api_pb2.SetTrialUserAttributeReplyc              
   C     |j }|j}t|j}z| j||| W t S  ty9 } z|jt	j
jt|d W Y d }~t S d }~w tyX } z|jt	j
jt|d W Y d }~t S d }~ww r>   )r   rI   rJ   rK   rL   r   set_trial_user_attrr@   r5   r   r6   rA   r8   r   r   r   SetTrialUserAttributeReplyr   r    r"   r   rI   rL   r:   r   r   r   SetTrialUserAttribute       z/OptunaStorageProxyService.SetTrialUserAttribute&api_pb2.SetTrialSystemAttributeRequest$api_pb2.SetTrialSystemAttributeReplyc              
   C  r   r>   )r   rI   rJ   rK   rL   r   set_trial_system_attrr@   r5   r   r6   rA   r8   r   r   r   SetTrialSystemAttributeReplyr   r   r   r   SetTrialSystemAttribute'  r   z1OptunaStorageProxyService.SetTrialSystemAttributeapi_pb2.GetTrialRequestapi_pb2.GetTrialReplyc              
   C  sb   |j }z| j|}W n ty( } z|jtjjt|d W Y d }~nd }~ww t	j
t|dS )Nr/   )trial)r   r   	get_trialr@   r5   r   r6   rA   r8   r   GetTrialReply_to_proto_trial)r   r    r"   r   r   r:   r   r   r   GetTrial7  s   "z"OptunaStorageProxyService.GetTrialapi_pb2.GetTrialsRequestapi_pb2.GetTrialsReplyc              
     s   |j }t|j |jz
| jj|dd}W n ty2 } z|jtj	j
t|d W Y d }~nd }~ww  fdd|D }tj|dS )NF)deepcopyr/   c                   s(   g | ]}|j ks|j  v rt|qS r   )	_trial_idr   )r)   tincluded_trial_idstrial_id_greater_thanr   r   r+   Q  s
    z7OptunaStorageProxyService.GetTrials.<locals>.<listcomp>)trials)r3   setr   r   r   get_all_trialsr@   r5   r   r6   rA   r8   r   GetTrialsReply)r   r    r"   r3   r   r:   filtered_trialsr   r   r   	GetTrialsD  s   
"z#OptunaStorageProxyService.GetTrialsN)r   r   r   r   )r    r!   r"   r#   r   r$   )r    r<   r"   r#   r   r=   )r    rE   r"   r#   r   rF   )r    rQ   r"   r#   r   rR   )r    rV   r"   r#   r   rW   )r    r[   r"   r#   r   r\   )r    ra   r"   r#   r   rb   )r    rg   r"   r#   r   rh   )r    rx   r"   r#   r   ry   )r    r~   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )r    r   r"   r#   r   r   )__name__
__module____qualname__r   r;   rD   rO   rU   rZ   r`   rf   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   #   s*    


















r   r   r   r   api_pb2.TrialState.ValueTypec                 C  ^   | t jkrtjS | t jkrtjS | t jkrtjS | t jkr tjS | t jkr(tjS td|  )NzUnknown TrialState: )r   RUNNINGr   COMPLETEPRUNEDFAILWAITINGr   r   r   r   r   _to_proto_trial_stateY     




r   c                 C  r   )NzUnknown api_pb2.TrialState: )r   r   r   r   r   r   r   r   r   r   r   r   r   g  r   r   r   r   api_pb2.Trialc                 C  s   i }| j  D ]\}}| j| |||< qtj| j| jt| j	| j
| jr+| jtnd| jr5| jtnddd | j D |dd | j D dd | j D dd | j D dS )N c                 S     i | ]	\}}|t |qS r   r   )r)   rI   r   r   r   r   rn     s    z#_to_proto_trial.<locals>.<dictcomp>c                 S  rj   r   rk   rm   r   r   r   rn     ro   c                 S  rj   r   rk   rm   r   r   r   rn     ro   c                 S     i | ]\}}||qS r   r   r)   r   rL   r   r   r   rn         )r   numberr   r   datetime_startdatetime_completedistributionsparamsrp   rz   intermediate_values)r   rs   r   to_internal_reprr   Trialr   r   r   r   r   r   strftimeDATETIME_FORMATr   r   r   r   )r   r   rI   rL   r   r   r   r   u  s$   r   c                 C  s   | j r
t| j tnd }| jrt| jtnd }dd | j D }i }| j D ]\}}|| |||< q)t	| j
| jt| jd | jrG| jnd ||||dd | j D dd | j D dd | j D dS )Nc                 S  r   r   r	   rm   r   r   r   rn     s    z%_from_proto_trial.<locals>.<dictcomp>c                 S  rj   r   rJ   rK   rm   r   r   r   rn     ro   c                 S  rj   r   r   rm   r   r   r   rn     ro   c                 S  r   r   r   r   r   r   r   rn     r   )r   r   r   rL   r   r   r   r   r   r   r   r   )r   r   strptimer   r   r   rs   r   to_external_reprr   r   r   r   r   r   rp   rz   r   )r   r   r   r   r   rI   rL   r   r   r   r     s4   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )'
__future__r   r   rJ   r   typingr   optunar   optuna._importsr   optuna.distributionsr   r
   optuna.exceptionsr   r   optuna.storagesr   optuna.study._study_directionr   optuna.trial._frozenr   optuna.trial._stater   r   $optuna.storages._grpc.auto_generatedr   r   
get_loggerr   _loggerr   StorageServiceServicerr   r   r   r   r   r   r   r   r   <module>   s>    
  
8

