o
    i                     @   s   d dl 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
mZ d dlmZmZmZ e jG dd dZd	ed
efddZdS )    N)Future)TimeoutError)cast)SamplingParamsStructuredOutputsParams)StructuredOutputGrammarStructuredOutputKeyStructuredOutputOptionsc                   @   s   e Zd ZU eed< dZee eB dB ed< dZe	dB ed< e
dedB ddfdd	Zde	fd
dZede	fddZededB fddZejdeee B ddfddZejdefddZdS )StructuredOutputRequestparamsN_grammarreasoning_endedsampling_paramsreturnzStructuredOutputRequest | Nonec                 C   s,   | d u rd S | j }|r| rd S t|dS )N)r   )structured_outputsall_constraints_noner
   )r   r    r   W/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/v1/structured_output/request.pyfrom_sampling_params   s   
z,StructuredOutputRequest.from_sampling_paramsc                 C   sP   ddl m} t| jtr&z| jjdd| _|j| _W dS  ty%   Y dS w dS )Nr   )RequestStatusg-C6?)timeoutFT)	vllm.v1.requestr   
isinstancer   r   resultWAITINGstatusr   )selfr   r   r   r   _check_grammar_completion#   s   
z1StructuredOutputRequest._check_grammar_completionc                 C   s   |   S N)r   r   r   r   r   is_grammar_ready0   s   z(StructuredOutputRequest.is_grammar_readyc                 C   s    |   }|rttd B | jS d S r   )r   r   r   r   )r   	completedr   r   r   grammar4   s
   zStructuredOutputRequest.grammarr"   c                 C   s
   || _ d S r   )r   )r   r"   r   r   r   r"   ;   s   
c                 C   s
   t | jS r   )get_structured_output_keyr   r   r   r   r   structured_output_keyA   s   
z-StructuredOutputRequest.structured_output_key)__name__
__module____qualname__r   __annotations__r   r   r   r   boolstaticmethodr   r   r   propertyr    r"   setter	functoolscached_propertyr   r$   r   r   r   r   r
      s.   
 

r
   r   r   c                 C   s   | j d urt| j tst | j }n| j }tj|fS | jr"tjdfS | jd ur-tj	| jfS | j
d urGt| j
ts?t | j
}n| j
}tj|fS | jd urRtj| jfS | jd ur]tj| jfS td)N z*No valid structured output parameter found)jsonr   strdumpsr	   JSONjson_objectJSON_OBJECTregexREGEXchoiceCHOICEr"   GRAMMARstructural_tagSTRUCTURAL_TAG
ValueError)r   json_strr   r   r   r#   F   s&   







r#   )dataclassesr-   r0   concurrent.futuresr   concurrent.futures._baser   typingr   vllm.sampling_paramsr   r   'vllm.v1.structured_output.backend_typesr   r   r	   	dataclassr
   r#   r   r   r   r   <module>   s   3