o
    پi                     @   s  U d Z ddlZddlZddlmZ ddlmZ eeZ	da
G dd dZejG dd dZi Zeeef ed	< d)dedefddZdedefddZdefddZdedefddZdedededefddZeeddddejd  eed!d"d#d$ejd  eed%d&d'd(ejd  dS )*zCompletion templates.    N)auto)CompletionRequestc                   @   s   e Zd ZdZe Ze ZdS )FimPositionzPosition of fim middle token.N)__name__
__module____qualname____doc__r   MIDDLEEND r   r   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/parser/code_completion_parser.pyr      s    
r   c                   @   s:   e Zd ZU dZeed< eed< eed< eed< eed< dS )CompletionTemplatezUA class that manages completion prompt templates. only for code completion currently.namefim_begin_tokenfim_middle_tokenfim_end_tokenfim_positionN)r   r   r   r   str__annotations__r   r   r   r   r   r   !   s   
 r   completion_templatesFtemplateoverridec                 C   s,   |s| j tvsJ | j  d| t| j < dS )z#Register a new completion template.z has been registered.N)r   r   )r   r   r   r   r   register_completion_template9   s
   
r   template_namereturnc                 C   s   | t v S N)r   )r   r   r   r   completion_template_existsC   s   r   c                   C   s   t d uS r   )completion_template_namer   r   r   r   is_completion_template_definedG   s   r   requestc                 C   s    | j dkr| jS t| j| j tS )N )suffixpromptgenerate_completion_promptr   )r   r   r   r   'generate_completion_prompt_from_requestL   s
   

r$   r"   r!   c                 C   sl   t | }|j}|j}|j}|j}|tjkr#| |  | | | } | S |tjkr4| |  | | | } | S r   )r   r   r   r   r   r   r	   r
   )r"   r!   r   completion_templater   r   r   r   r   r   r   r#   V   s   

r#   deepseek_coderu   <｜fim▁begin｜>u   <｜fim▁hole｜>u   <｜fim▁end｜>)r   r   r   r   r   
star_coderz<fim_prefix>z<fim_middle>z<fim_suffix>
qwen_coderz<|fim_prefix|>z<|fim_middle|>z<|fim_suffix|>)F)r   dataclassesloggingenumr   &sglang.srt.entrypoints.openai.protocolr   	getLoggerr   loggerr   r   	dataclassr   r   dictr   r   boolr   r   r   r$   r#   r	   r
   r   r   r   r   <module>   sV   



