o
    * i                     @  s  d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
 G dd deeeee f  Ze	ddZe	d	d Zed
dZeddZe
ddZeddZeddZeddZeddZeddZeddZedi ZeddZeddZe
ddZeddZeddZeddZ e
ddZ!dd  Z"e"  ed9d#d$Z#ed:d&d'Z$ed9d(d)Z%ed;d+d,Z&ed9d-d.Z'ed9d/d0Z(ed9d1d2Z)ed9d3d4Z*ed;d5d6Z+ed9d7d8Z,dS )<    )annotationsN)contextmanager)BooleanEnvironmentVariableEnvironmentVariableEnvironmentVariableGuardIntegerEnvironmentVariableStringEnvironmentVariablec                      sR   e Zd ZdZd fddZdd	d
ZdddZedddZedddZ	  Z
S )PEP508LikeEnvironmentVariablea2  
    Environment variable parser following PEP 508 extras specification syntax.
    https://peps.python.org/pep-0508/

    Processes strings using PEP 508-style bracket notation for optional components:
    "feat1[opt1,opt2], feat2[opt3,opt4]" -> {'feat1': ['opt1', 'opt2'], 'feat2': ['opt3', 'opt4']}
    namestrdefaultdict[str, list[str]]c                   s$   t  || t|tsJ dd S )Nzdefault must be a dict)super__init__
isinstancedict)selfr
   r   	__class__ e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/jit/sot/utils/envs.pyr   &   s   z&PEP508LikeEnvironmentVariable.__init__returnc                 C  sN   t | j}|d u s|dkr| jS | |}i }|D ]
}|| | q|S )N )osgetenvr
   r   split_by_unbracketed_commasupdateparse_parameterized_key)r   env_varitemsretitemr   r   r   parse_from_string*   s   
z/PEP508LikeEnvironmentVariable.parse_from_stringvaluec                 C  s   t |ts	J dtdd | D sJ dtdd | D s'J dg }| D ]\}}|| t|rBdd| d	nd
  q-d|S )NzThe input must be a dictc                 s      | ]}t |tV  qd S N)r   r   .0xr   r   r   	<genexpr>6       zBPEP508LikeEnvironmentVariable.convert_to_string.<locals>.<genexpr>zKeys must be a stringc                 s  r$   r%   )r   listr&   r   r   r   r)   9   r*   zValues must be a list[,]r   )	r   r   allkeysvaluesr   appendlenjoin)r   r#   env_listkvr   r   r   convert_to_string4   s   ,
z/PEP508LikeEnvironmentVariable.convert_to_string	input_str	list[str]c                 C  s   d}g }d}t | D ]/\}}|dkr|d7 }n|dkr"td|d }|dkr9|dkr9|| ||   |d }q
| |d   }rI|| |S )z?Split string by commas that are not enclosed in square bracketsr   r,      r.   r-   N)	enumeratemaxr2   strip)r9   Zbracket_depthZsplit_parts_start_currentchar	remainingr   r   r   r   C   s"   

z9PEP508LikeEnvironmentVariable.split_by_unbracketed_commasc                 C  sh   |  d}| d}|dks|dkr| g iS | d|  }| |d | }dd |dD }||iS )	z8Parse key with parameters in brackets into a dictionary.r,   r.   Nr;   c                 S  s   g | ]
}|  r|  qS r   )r>   )r'   r7   r   r   r   
<listcomp>k   s
    zIPEP508LikeEnvironmentVariable.parse_parameterized_key.<locals>.<listcomp>r-   )findrfindr>   split)r9   Zstart_bracketZend_bracketZparameter_keyZparameters_strZparameter_valuesr   r   r   r   ]   s   

z5PEP508LikeEnvironmentVariable.parse_parameterized_key)r
   r   r   r   )r   r   )r#   r   r   r   )r9   r   r   r:   )r9   r   r   r   )__name__
__module____qualname____doc__r   r"   r8   staticmethodr   r   __classcell__r   r   r   r   r	      s    


r	   ZMIN_GRAPH_SIZE
   ZSOT_LOG_LEVELZSTRICT_MODEFZSOT_WITH_CONTROL_FLOWTZ
SOT_EXPORTr   ZSOT_ALLOW_DYNAMIC_SHAPEZSOT_ENABLE_FASTER_GUARDZSOT_ENABLE_STRICT_GUARD_CHECKZSOT_ENABLE_GUARD_TREEZENABLE_SOT_STEP_PROFILERZ%SOT_BREAK_GRAPH_ON_GET_SYMBOLIC_VALUEZSOT_COLLECT_INFOZSOT_SERIALIZE_INFOZSOT_CE_DEBUG_MODEZSOT_FORCE_FALLBACK_SIR_IDSENV_SOT_TRACE_NUMPYZSOT_UNSAFE_CACHE_FASTPATHZSOT_ENABLE_0_SIZE_FALLBACKZSOT_SPECIALIZED_DIM_NUMBERS0c                  C  sD   t  sd S t } | dg  | dg  t|  td d S )NZbreakgraph_reasonZsubgraph_infoT)ENV_SOT_CE_DEBUG_MODEgetENV_SOT_COLLECT_INFO
setdefaultsetENV_SOT_SERIALIZE_INFO)Zcollected_info_itemr   r   r   update_ce_flags   s   
rW   r#   boolc                 c  8    t t|  d V  W d    d S 1 sw   Y  d S r%   )r   ENV_STRICT_MODEr#   r   r   r   strict_mode_guard      "r\   intc                 c  rY   r%   )r   ENV_MIN_GRAPH_SIZEr[   r   r   r   min_graph_size_guard   r]   r`   c                 c  rY   r%   )r   ENV_SOT_WITH_CONTROL_FLOWr[   r   r   r   with_control_flow_guard   r]   rb   r   c                 c  rY   r%   )r   ENV_SOT_EXPORTr[   r   r   r   export_guard   r]   rd   c                 c  rY   r%   )r   ENV_SOT_ALLOW_DYNAMIC_SHAPEr[   r   r   r   allow_dynamic_shape_guard   r]   rf   c                 c  rY   r%   )r   ENV_SOT_ENABLE_FASTER_GUARDr[   r   r   r   faster_guard_guard   r]   rh   c                 c  rY   r%   )r   ENV_SOT_ENABLE_GUARD_TREEr[   r   r   r   guard_tree_guard   r]   rj   c                 c  rY   r%   )r   ENV_ENABLE_SOT_STEP_PROFILERr[   r   r   r   sot_step_profiler_guard   r]   rl   c                 c  rY   r%   )r   ENV_SOT_SPECIALIZED_DIM_NUMBERSr[   r   r   r   specialized_dim_numbers_guard   r]   rn   c                 c  rY   r%   )r   ENV_SOT_ENABLE_0_SIZE_FALLBACKr[   r   r   r   enable_0_size_fallback_guard   r]   rp   )r#   rX   )r#   r^   )r#   r   )-
__future__r   r   
contextlibr   Zpaddle.utils.environmentsr   r   r   r   r   r   r   r+   r	   r_   ZENV_SOT_LOG_LEVELrZ   ra   rc   re   rg   Z!ENV_SOT_ENABLE_STRICT_GUARD_CHECKri   rk   Z)ENV_SOT_BREAK_GRAPH_ON_GET_SYMBOLIC_VALUErS   rV   rQ   ZENV_SOT_FORCE_FALLBACK_SIR_IDSrO   ZENV_SOT_UNSAFE_CACHE_FASTPATHro   rm   rW   r\   r`   rb   rd   rf   rh   rj   rl   rn   rp   r   r   r   r   <module>   s    	
U






