o
    )i                     @  s   d dl mZ 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
mZmZ d dlmZ d dlmZmZmZ ejG dd	 d	ZdddZdS )    )annotationsN)Future)TimeoutError)OptionalUnioncast)SamplingParams)StructuredOutputGrammarStructuredOutputKeyStructuredOutputOptionsc                   @  st   e Zd ZU ded< dZded< dZded< dd
dZedddZedddZ	e	j
dddZ	ejdddZdS )StructuredOutputRequestr   sampling_paramsNzIOptional[Union[Future[StructuredOutputGrammar], StructuredOutputGrammar]]_grammarzOptional[bool]reasoning_endedreturnboolc                 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)	Zvllm.v1.requestr   
isinstancer   r   resultZWAITINGstatusr   )selfr    r   m/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/v1/structured_output/request.py_check_grammar_completion   s   
z1StructuredOutputRequest._check_grammar_completionc                 C  s   |   S N)r   r   r   r   r   is_grammar_ready'   s   z(StructuredOutputRequest.is_grammar_ready!Optional[StructuredOutputGrammar]c                 C  s    |   }|rttt | jS d S r   )r   r   r   r	   r   )r   	completedr   r   r   grammar+   s   
zStructuredOutputRequest.grammarr    ?Union[StructuredOutputGrammar, Future[StructuredOutputGrammar]]Nonec                 C  s
   || _ d S r   )r   )r   r    r   r   r   r    1   s   
r
   c                 C  s
   t | jS r   )get_structured_output_keyr   r   r   r   r   structured_output_key8   s   
z-StructuredOutputRequest.structured_output_key)r   r   )r   r   )r    r!   r   r"   )r   r
   )__name__
__module____qualname____annotations__r   r   r   propertyr   r    setter	functoolscached_propertyr$   r   r   r   r   r      s   
 

r   r   r   r   r
   c                 C  s   | j }|d usJ d|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r8tj
|j	fS |jd urRt|jtsJt|j}n|j}tj|fS |jd ur]tj|jfS |jd urhtj|jfS td)Nzparams can't be None. z*No valid structured output parameter found)Zguided_decodingjsonr   strdumpsr   JSONZjson_objectZJSON_OBJECTregexZREGEXchoiceZCHOICEr    ZGRAMMARZstructural_tagZSTRUCTURAL_TAG
ValueError)r   paramsZjson_strr   r   r   r#   =   s*   







r#   )r   r   r   r
   )
__future__r   dataclassesr+   r.   concurrent.futuresr   concurrent.futures._baser   typingr   r   r   Zvllm.sampling_paramsr   Z'vllm.v1.structured_output.backend_typesr	   r
   r   	dataclassr   r#   r   r   r   r   <module>   s   *