o
    -im                     @   s~  d dl mZ d dlmZmZmZmZ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mZmZmZ d d	lmZ d d
lmZ d dlmZ eeZdedefddZe Z e j!deegej"j#deiej$j#deiej%j#deiej&j#deiidededefddZ'e j!deegej"j#deiej$j#deiej%j#deiidededefddZ(defddZ)dS )    )
HTTPStatus)	APIRouterDependsFastAPIHTTPExceptionRequest)RequestValidationError)JSONResponse)assert_never)ErrorResponse)validate_json_request)DetokenizeRequestDetokenizeResponseTokenizeRequestTokenizeResponse)OpenAIServingTokenization)with_cancellation)init_loggerrequestreturnc                 C   s
   | j jjS )N)appstateopenai_serving_tokenization)r    r   g/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/entrypoints/serve/tokenize/api_router.pytokenization   s   
r   z	/tokenizemodel)dependencies	responsesraw_requestc              
      s   t |}z|| |I d H }W n ty' } z||W  Y d }~S d }~ww t|tr7t| |jj	dS t|t
rCt| dS t| d S )Ncontentstatus_coder!   )r   create_tokenize	Exceptioncreate_error_response
isinstancer   r	   
model_dumperrorcoder   r
   r   r   handler	generatorer   r   r   tokenize&   s   

r/   z/detokenizec              
      s   t |}z|| |I d H }W n+ ty% } z	tt|gd|d }~w ty; } zttjj	t|d|d }~ww t
|trKt| |jjdS t
|trWt| dS t| d S )N)errors)r"   detailr    r#   )r   create_detokenizeOverflowErrorr   strr%   r   r   INTERNAL_SERVER_ERRORvaluer'   r   r	   r(   r)   r*   r   r
   r+   r   r   r   
detokenizeC   s,   

r7   r   c                 C   s8   t | jjddr	 tddtfdd}| t d S )Nenable_tokenizer_info_endpointFz/tokenizer_infor   c                    s:   t |  I dH }t| t|tr|jjdS ddS )z(Get comprehensive tokenizer information.N   r    )r   get_tokenizer_infor	   r(   r'   r   r)   r*   )r   resultr   r   r   r:   g   s   z)attach_router.<locals>.get_tokenizer_info)getattrr   argsroutergetr   include_router)r   r:   r   r   r   attach_routerc   s
   
rA   N)*httpr   fastapir   r   r   r   r   fastapi.exceptionsr   fastapi.responsesr	   typing_extensionsr
   'vllm.entrypoints.openai.engine.protocolr   vllm.entrypoints.openai.utilsr   (vllm.entrypoints.serve.tokenize.protocolr   r   r   r   'vllm.entrypoints.serve.tokenize.servingr   vllm.entrypoints.utilsr   vllm.loggerr   __name__loggerr   r>   postBAD_REQUESTr6   	NOT_FOUNDr5   NOT_IMPLEMENTEDr/   r7   rA   r   r   r   r   <module>   sH   
	