o
    ڷi4                     @   s  U d dl Z d dlZd dlZd dlZd dl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 d dlmZmZmZmZmZmZmZmZmZ d dlZddlmZmZmZmZmZmZ ddl m!Z!m"Z" zd dl#Z#W n e$yv   dZ#Y nw zd dl%Z%W n e$y   dZ%Y nw e&dZ'ed e(d	< e)e*e+e,e-e'fZ.eee d
f e(d< e/dZ0e/dZ1g dZ2G dd dZ3e3dZ4ee(d< G dd dej5Z6dee6 fddZ7de,de+fddZ8defddZ9de,de&fddZ:dede+fd d!Z;dedee+ef fd"d#Z<dd$ed%eee)e,f  de+fd&d'Z=dee d(e,dee fd)d*Z>d$ed+edeee,ef  fd,d-Z?d$eded. fd/d0Z@dd$ed1ee+ dee,ef fd2d3ZAd$eded4 fd5d6ZB	dd$ed1ee+ dee,ef fd7d8ZCd$ede+fd9d:ZDd$ede+fd;d<ZEd$ede+fd=d>ZFdede+fd?d@ZGde&de+fdAdBZHdCedee fdDdEZId$ede+fdFdGZJd$edee, fdHdIZK	dd$ed1ee+ dee,ef fdJdKZLG dLdM dMeZMdNede+fdOdPZNdNede+fdQdRZO	TddNedUe+dVe+de+fdWdXZP	SddNedYe+deMfdZd[ZQdd\edYe+de+fd]d^ZRdNe,dYe+de+fd_d`ZSdNede+fdadbZTdce,de+fdddeZUdce,de+fdfdgZVd$ede+fdhdiZWd$ede+fdjdkZXdede+fdldmZYdede+fdndoZZdede+fdpdqZ[d$ede+fdrdsZ\dede+fdtduZ]d$ede+fdvdwZ^d$ede+fdxdyZ_dzeee  defd{d|Z`dzee deed
f fd}d~Zadzedeeef fddZbdede+fddZcdede+fddZddede+fddZedNedefddZfdd$ed%edeee  fddZgdehdehddfddZi	dded%edNede,dehdeddfddZjddede+de,fddZkddedeee,e+f  defddZldede+fddZmdede+fddZndede+fddZod%e,dee, fddZpe	ddedee fddZqdS )    N)contextmanager)Enum)dedent)	AnyDictIteratorListOptionalTupleTypeUnionget_type_hints   )ConfigIndexErrorConfigTypeErrorConfigValueErrorGrammarParseErrorOmegaConfBaseExceptionValidationError)SIMPLE_INTERPOLATION_PATTERNparseNoneType.BUILTIN_VALUE_TYPESz(\.)*[^.[]*z\.([^.[]*)|\[(.*?)\])yYyesYesYESnNnoNoNOtrueTrueTRUEfalseFalseFALSEonOnONoffOffOFFc                   @   s(   e Zd ZdefddZdefddZdS )Markerdescc                 C   s
   || _ d S Nr0   )selfr0    r4   F/home/ubuntu/vllm_env/lib/python3.10/site-packages/omegaconf/_utils.py__init__e   s   
zMarker.__init__returnc                 C   s   | j S r1   r2   )r3   r4   r4   r5   __repr__h   s   zMarker.__repr__N)__name__
__module____qualname__strr6   r8   r4   r4   r4   r5   r/   d   s    r/   _DEFAULT_MARKER_c                   @   s.   e Zd ZdZedejdedejfddZ	dS )OmegaConfDumperFdumperdatar7   c                 C   s:   t |pt|pt|}| jtjjj||rddS d dS )N')style)yaml_is_boolis_intis_floatrepresent_scalaryamlresolverBaseResolverDEFAULT_SCALAR_TAG)r?   r@   with_quotesr4   r4   r5   str_representers   s   zOmegaConfDumper.str_representerN)
r9   r:   r;   str_representer_addedstaticmethodrG   Dumperr<   
ScalarNoderL   r4   r4   r4   r5   r>   p   s     r>   r7   c                   C   s   t jst tt j dt _t S )NT)r>   rM   add_representerr<   rL   r4   r4   r4   r5   get_omega_conf_dumper}   s   rR   bc                 C   s   | t v S r1   )YAML_BOOL_TYPES)rS   r4   r4   r5   rC         rC   c                  C   s|   G dd dt j} | }|dtdtjtd dd |j D |_|	dd	d
  |	ddd
  |	ddd
  |S )Nc                       s.   e Zd Zddejdedef fddZ  ZS )z(get_yaml_loader.<locals>.OmegaConfLoaderFnodedeepr7   c                    sl   t  }|jD ]'\}}|jtjjjkrq|j|v r'tjd|j	d|j |j	|
|j qt j||dS )Nzwhile constructing a mappingzfound duplicate key )rW   )setvaluetagrG   rH   rI   rJ   constructorConstructorError
start_markaddsuperconstruct_mapping)r3   rV   rW   keyskey_node
value_node	__class__r4   r5   r`      s   

z:get_yaml_loader.<locals>.OmegaConfLoader.construct_mappingF)	r9   r:   r;   rG   Nodeboolr   r`   __classcell__r4   r4   rd   r5   OmegaConfLoader   s    &rj   ztag:yaml.org,2002:floata  ^(?:
         [-+]?[0-9]+(?:_[0-9]+)*\.[0-9_]*(?:[eE][-+]?[0-9]+)?
        |[-+]?[0-9]+(?:_[0-9]+)*(?:[eE][-+]?[0-9]+)
        |\.[0-9]+(?:_[0-9]+)*(?:[eE][-+][0-9]+)?
        |[-+]?[0-9]+(?:_[0-9]+)*(?::[0-5]?[0-9])+\.[0-9_]*
        |[-+]?\.(?:inf|Inf|INF)
        |\.(?:nan|NaN|NAN))$z-+0123456789.c                 S   s    i | ]\}}|d d |D qS )c                 S   s    g | ]\}}|d kr||fqS )ztag:yaml.org,2002:timestampr4   ).0rZ   regexpr4   r4   r5   
<listcomp>   s
    z.get_yaml_loader.<locals>.<dictcomp>.<listcomp>r4   )rk   key	resolversr4   r4   r5   
<dictcomp>   s    z#get_yaml_loader.<locals>.<dictcomp>z2tag:yaml.org,2002:python/object/apply:pathlib.Pathc                 S      t j| | S r1   )pathlibPathconstruct_sequenceloaderrV   r4   r4   r5   <lambda>       z!get_yaml_loader.<locals>.<lambda>z7tag:yaml.org,2002:python/object/apply:pathlib.PosixPathc                 S   rq   r1   )rr   	PosixPathrt   ru   r4   r4   r5   rw      rx   z9tag:yaml.org,2002:python/object/apply:pathlib.WindowsPathc                 S   rq   r1   )rr   WindowsPathrt   ru   r4   r4   r5   rw      rx   )
rG   
SafeLoaderadd_implicit_resolverrecompileXlistyaml_implicit_resolversitemsadd_constructor)rj   rv   r4   r4   r5   get_yaml_loader   s4   
	r   pathc                 C   sX   ddl m} | d\}}}||}zt||}W |S  ty+   td| d| w )Nr   )import_module.zClass z is not in module )	importlibr   
rpartitiongetattrAttributeErrorImportError)r   r   module_path_
class_namemodklassr4   r4   r5   
_get_class   s   r   type_c                 C   s*   t jdkrt| tjrdS t| dd tu S )N)   
   T
__origin__)sysversion_info
isinstancetypes	UnionTyper   r   r   r4   r4   r5   is_union_annotation   s   
r   c                 C   s   t | r3| j}t|v rd}tdd |D }nd}t|dkr%||d fS t|dkr1|t| fS J | tu r;dtfS | dtfv rEdtfS d| fS )	zGCheck whether `type_` is equivalent to `typing.Optional[T]` for some T.Tc                 s   s    | ]	}|t ur|V  qd S r1   )r   )rk   ar4   r4   r5   	<genexpr>       z$_resolve_optional.<locals>.<genexpr>Fr   r      N)r   __args__r   tuplelenr   r   )r   argsoptionalr4   r4   r5   _resolve_optional   s    r   objrn   c                 C   sF   ddl m}m} |durt| |sJ | |} t| |sJ |  S )z:Check `obj` metadata to see if the given node is optional.r   	Containerrg   N)baser   rg   r   	_get_node_is_optional)r   rn   r   rg   r4   r4   r5   r      s   
r   modulec                    s   dd l }t|dr|jn|j}t| |u rt  d| j S t| rCt| \}}|d ur3t	| d}|d ur=t	| d}t
||f S t| rYt| }|d urUt	| d}t| S t| rpt| }t fdd|D }t| S | S )Nr   
ForwardRefr   r   c                 3   s    | ]	}t | d V  qdS )r   N)_resolve_forward)rk   itr   r4   r5   r     r   z#_resolve_forward.<locals>.<genexpr>)typinghasattrr   _ForwardReftyper   __forward_arg__is_dict_annotationget_dict_key_value_typesr   r   is_list_annotationget_list_element_typer   is_tuple_annotationget_tuple_item_typesr   r
   )r   r   r   forwardktvtetitsr4   r   r5   r      s*   r   parentc                 C   s   ddl m} t| t}|r| nt| }t|}|r*tjd|j dd d tdd |r.d	S |ryi }t	|\}}| 
 D ]:\}	}
t|\}}t|| j}z||||	|
|d
||	< W q< tyv } ztd	|	|
|t|d W Y d	}~q<d	}~ww |S d	S )zWCheck if obj is an instance of a subclass of Dict. If so, extract the Dict keys/values.r   )_maybe_wrapzClass `z` subclasses `Dict`.z? Subclassing `Dict` in Structured Config classes is deprecated,z) see github.com/omry/omegaconf/issues/663	   )
stacklevelNref_typeis_optionalrn   rY   r   rV   rn   rY   causemsg)omegaconf.omegaconfr   r   r   is_dict_subclasswarningswarnr9   UserWarningr   r   r   r   r:   r   format_and_raiser<   )r   r   r   is_typeobj_typesubclasses_dictdict_subclass_datakey_typeelement_typenamerY   r   r   exr4   r4   r5   extract_dict_subclass_data  sL   
r   zattr.Attribute[Any]c                 C   s6   t | t}|r	| nt| }t| }dd |D S )Nc                 S       g | ]}|j d dur|qS omegaconf_ignoreTmetadatagetrk   fr4   r4   r5   rm   A       z)get_attr_class_fields.<locals>.<listcomp>)r   r   attrfields_dictvalues)r   r   r   fieldsr4   r4   r5   get_attr_class_fields=  s   
r   allow_objectsc                 C   s  ddl m}m} |d urd|ini }ddlm} i }t| t}|r#| nt| }|ji |d}	||	j_	t
|}
t| D ]x}|j}t|
| \}}t|| j}|sUt| |}n
|j}|tjkr_|}t|r~t|s~td| dt| }td d ||t|d z||||||	d	||< W n ttfy } zt|	|||t|d W Y d }~nd }~ww || d  q:t| |	d
}|d ur|| |S )Nr   )	OmegaConfr   r   )MISSINGflags(Unions of containers are not supported:
: r   r   r   r   )r   r   r   	omegaconfr   r   r   create	_metadataobject_typer   r   r   r   r   r:   r   defaultr   NOTHINGr   is_supported_union_annotationr   type_strr   r<   r   r   _set_parentr   update)r   r   r   r   r   r   dr   r   dummy_parentresolved_hintsattribr   r   r   rY   er   r   r4   r4   r5   get_attr_dataD  sT   


r  zdataclasses.Field[Any]c                 C   s   t | }dd |D S )Nc                 S   r   r   r   r   r4   r4   r5   rm   w  r   z(get_dataclass_fields.<locals>.<listcomp>)dataclassesr   r   r   r4   r4   r5   get_dataclass_fieldsu  s   
r  c                 C   s  ddl m}m}m} |d urd|ini }i }t| t}t| }|ji |d}	||	j_	t
|}
t| D ]}|j}t|
|j \}}t|| j}|jtjk}|jtjk}|sZt| |}n|r`|j}n	|rg| }n|}t|rt|std| dt| }td d ||t|d z||||||	d||< W n ttfy } zt|	|||t|d W Y d }~nd }~ww || d  q2t| |	d	}|d ur|| |S )
Nr   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   get_type_ofr   r   r   r   r  r   r   r   r:   r   r  default_factoryr   r   r   r   r   r   r<   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   fieldr   r   r   has_defaulthas_default_factoryrY   r   r   r   r4   r4   r5   get_dataclass_dataz  sZ   


r
  c                 C   ,   ddl m} td u st| |rdS t| S Nr   rg   F)omegaconf.baserg   r  r   is_dataclassr   rg   r4   r4   r5   r       
r  c                 C   r  r  )r  rg   r   r   hasr  r4   r4   r5   is_attr_class  r  r  c                 C      t | pt| S r1   )r  r  r   r4   r4   r5   is_structured_config     r  c                 C   s   | j jS r1   )__dataclass_params__frozenr   r4   r4   r5   is_dataclass_frozen  rU   r  c                 C   s   | j tjjkS r1   )__setattr__r   _make_frozen_setattrsr   r4   r4   r5   is_attr_frozen  s   r  class_or_objectc                 C   s(   | }t |tst| }t |tsJ |S r1   )r   r   )r  r   r4   r4   r5   r    s
   
r  c                 C   s,   t | }t|rt|S t|rt|S dS )NF)r  r  r  r  r  )r   r   r4   r4   r5   is_structured_config_frozen  s   r   c                 C   sF   t | r	t| }nt| rt| }n
tdt| j dd |D S )NUnsupported type: c                 S   s   g | ]}|j r|jqS r4   )initr   r   r4   r4   r5   rm         z:get_structured_config_init_field_names.<locals>.<listcomp>)r  r  r  r   
ValueErrorr   r9   r  r4   r4   r5   &get_structured_config_init_field_names  s   

r%  c                 C   s<   t | r
t| |dS t| rt| |dS tdt| j )N)r   r!  )r  r
  r  r  r$  r   r9   )r   r   r4   r4   r5   get_structured_config_data  s
   r&  c                   @   s   e Zd ZdZdZdZdS )	ValueKindr   r   r   N)r9   r:   r;   VALUEMANDATORY_MISSINGINTERPOLATIONr4   r4   r4   r5   r'    s    r'  rY   c                 C   s&   ddl m} t| |r|  } t| S )Nr   r  )r   rg   r   _value_is_missing_literal)rY   rg   r4   r4   r5   _is_missing_value  s   
r-  c                 C   s   t | to| dkS )Nz???)r   r<   rY   r4   r4   r5   r,    s   r,  FTresolvethrow_on_resolution_failurec                 C   sT   ddl m} t| |s| d u S |r&| j|d} |s| d u rdS t| |s&J |  S )Nr   r  )r0  F)r   rg   r   _maybe_dereference_node_is_none)rY   r/  r0  rg   r4   r4   r5   r2  	  s   
r2  strict_interpolation_validationc                 C   s$   t | rtjS t| |rtjS tjS )aA  
    Determine the kind of a value
    Examples:
    VALUE: "10", "20", True
    MANDATORY_MISSING: "???"
    INTERPOLATION: "${foo.bar}", "${foo.${bar}}", "${foo:bar}", "[${foo}, ${bar}]",
                   "ftp://${host}/path", "${foo:${bar}, [true], {'baz': ${baz}}}"

    :param value: Input to classify.
    :param strict_interpolation_validation: If `True`, then when `value` is a string
        containing "${", it is parsed to validate the interpolation syntax. If `False`,
        this parsing step is skipped: this is more efficient, but will not detect errors.
    )r-  r'  r)  _is_interpolationr*  r(  rY   r3  r4   r4   r5   get_value_kind  s
   
r6  vc                 C   s:   ddl m} t| |r|  } t| trt| |rdS dS )Nr   r  TF)r   rg   r   r+  r<   _is_interpolation_string)r7  r3  rg   r4   r4   r5   r4  7  s   
r4  c                 C   s*   d| v r|rt | d u rt|  dS dS )Nz${TF)r   matchr   r5  r4   r4   r5   r8  D  s   r8  c                 C   s   t | pt| tjtjfv S )z4Special values are None, MISSING, and interpolation.)r2  r6  r'  r)  r*  r.  r4   r4   r5   _is_specialU  s   r:  stc                 C   $   zt |  W dS  ty   Y dS w NTF)floatr$  r;  r4   r4   r5   rE   ]     rE   c                 C   r<  r=  )intr$  r?  r4   r4   r5   rD   e  r@  rD   c                 C   s   t | ttfS r1   )r   r   r   r  r4   r4   r5   is_primitive_listm  s   rB  c                 C   s   t | }|tu S r1   )r  dict)r   tr4   r4   r5   is_primitive_dictq  s   rE  c                 C   sn   | t tfv rdS t| dd }tjdk r't| do| jtk}|tu p&| tu p&|S t| do0| jt k}|t u p6|S )NTr   r      r   __base__)rC  r   r   r   r   r   rH  )r   origin
typed_dictr4   r4   r5   r   v  s   
r   c                 C   >   | t tfv rdS t| dd }tjdk r|tu p| tu S |t u S NTr   rF  )r   r   r   r   r   r   rI  r4   r4   r5   r        
r   c                 C   rK  rL  )r   r
   r   r   r   rM  r4   r4   r5   r     rN  r   c                 C   s$   t | sdS | j}tdd |D S )zLCurrently only primitive types are supported in Unions, e.g. Union[int, str]Fc                 s   s    | ]}t |V  qd S r1   )is_primitive_type_annotation)rk   argr4   r4   r5   r     s    z0is_supported_union_annotation.<locals>.<genexpr>)r   r   all)r   r   r4   r4   r5   r     s   r   c                 C   s   | d uot | tot| tS r1   )r   r   
issubclassr   r   r4   r4   r5   r     s   r   c                 C   s   t | pt| pt| S r1   )rE  r   r   r  r4   r4   r5   is_dict  s   rS  c                 C   r  r1   )rB  rE  r  r4   r4   r5   is_primitive_container  r  rT  r   c                 C   s8   t | dd }| tur|d ur|d r|d }|S t}|S )Nr   r   )r   r   r   )r   r   r   r4   r4   r5   r     s   r   c                 C   s.   t | dd }|dv rtdf}t|tsJ |S )Nr   )Nr4   .)r   r   r   r   )r   r   r4   r4   r5   r     s
   r   c                 C   s   t | dd }|d u r"t | dd }|d ur"t|dkr"t |d dd }| d u s*| tkr2t}t}||fS |d urB|d }|d }||fS t}t}||fS )Nr   __orig_bases__r   r   )r   r   r   r   )r   r   basesr   r   r4   r4   r5   r     s    	r   c                 C   s4   t | \}} | tu pt| pt| pt| pt| S r1   )r   r   rO  r  is_container_annotationr   )r   r   r4   r4   r5   is_valid_value_annotation  s   rX  c                 C   s(   ddl m} | d u p| tu pt| |jS )Nr   )DictKeyType)r   rY  r   rR  r   )r   rY  r4   r4   r5   _valid_dict_key_annotation_type  s   rZ  c                 C   s    t | } t| ttjfp| tv S r1   )r  rR  r   rr   rs   r   r   r4   r4   r5   rO    s   rO  c                 C   s   ddl m}m} ddlm} t| |r|  S t| |r0|  }|d u s,t|s,t|r.|S | S t| |rK|  }|d u sEt|sEt|rG|S t	|S | S )Nr   )r   	UnionNode)	ValueNode)
r   r   r[  nodesr\  r   r+  r,  r4  
_get_value)rY   r   r[  r\  boxedr4   r4   r5   r^    s   

	
r^  c                 C   sp   ddl m}m} t| |r|d ur| |} n|d urtdt| |r6| jj}|  r4|t	ur4t
| S |S t	S )Nr   r   z1Key must only be provided when obj is a container)r   r   rg   r   r   r$  r   r   r   r   r	   )r   rn   r   rg   r   r4   r4   r5   get_type_hint  s   


r`  r   r   c                 C   s^   dt jv r
t jd nd }t d u}|r|dk p|dk}|r#|| _nd | _| t d )NOC_CAUSE01r   )osenvironr   gettrace	__cause__with_tracebackexc_info)r   r   env_var	debuggingfull_backtracer4   r4   r5   _raise  s   rm  rV   r   type_overridec              
   C   s"  ddl m} ddlm} t|tr t|tr2|jr2|}|d ur-|t|}t	
|j|_t|| d }	d }
| d u rI|d ur@|nd}d }d }d }nG|d urX|  sX| j|dd}
z| j|d}W n ty~ } zdt|j d	| d
}W Y d }~nd }~ww || }t|}	t| }t|}t|j||	|||tt|ddt|j d}|d tfvrtd}ntd}tj|d}|j||	||d}|d u rt|n|}|tkrt}n|tkrt}|| }t |tr
d|_||_!| |_"|
|_#||_$||_%||_&||_'|	|_(||_)||_*t|| d S )Nr   r   r   F)validate_access)rn   z<unresolvable due to r   >Tinclude_module_name)REF_TYPEOBJECT_TYPEKEYFULL_KEYr(  
VALUE_TYPEKEY_TYPEz            $MSG
                full_key: $FULL_KEY
                reference_type=$REF_TYPE
                object_type=$OBJECT_TYPEz]            $MSG
                full_key: $FULL_KEY
                object_type=$OBJECT_TYPE)template)ru  rv  MSGrx  )+r   r   r  rg   r   AssertionErrorr   _initializedr<   copydeepcopy__dict__rm  r2  r   _get_full_key	Exceptionr   r9   get_typer   r`  stringTemplatesafe_substituter   r   
substitute	TypeErrorr   
IndexErrorr   rR  r   parent_node
child_nodern   full_keyrY   r   object_type_strr   ref_type_str)rV   rn   rY   r   r   rn  r   rg   r   r  r  r  r   r   r  excr{  smessageexception_typer4   r4   r5   r      s   

$




r   rD  rt  c                    sH  t | \}} | tu rt| jS | tu rdS | du rdS t| dr&t| j}n-t| dd d ur4t| j}nt| dd d urBt| j	}nt| }|
drS|tdd  }t| dd }|d ursd	 fd
d| jD }| d| d}n|} rt| dr| jdkr| jdkr| j
dst| jd }nd}|| }|rd| dS |S )Nr   .z...r9   _namer   ztyping.r   z, c                    s   g | ]}t | d qS )rs  )r   )rk   rD  rs  r4   r5   rm     r#  ztype_str.<locals>.<listcomp>[]r:   builtinsr   z
omegaconf.r   rp  z	Optional[)r   r   r<   r9   r   r   r   r  r   r   
startswithr   joinr   r:   )rD  rt  r   r   r   retmodule_prefixr4   rs  r5   r     sH   





r   targetr   c                 C   sh   ddl m} t| rt| ttfsJ |j| |d} | S t| r)|j| |d} | S |	| s2t
d| S )Nr   ro  r   z|Invalid input. Supports one of [dict,list,DictConfig,ListConfig,dataclass,dataclass instance,attr class,attr class instance])r   r   rT  r   r   rC  r   r  
structured	is_configr$  )r  r   r   r4   r4   r5   _ensure_container  s   	
r  c                 C   s   t | o	t| duS )z
    Checks if a type is a generic list, for example:
    list returns False
    typing.List returns False
    typing.List[T] returns True

    :param type_: variable type
    :return: bool
    N)r   r   r   r4   r4   r5   is_generic_list  s   
r  c                 C   s   t | ott| dkS )z
    Checks if a type is a generic dict, for example:
    list returns False
    typing.List returns False
    typing.List[T] returns True

    :param type_: variable type
    :return: bool
    r   )r   r   r   r   r4   r4   r5   is_generic_dict  s   
r  c                 C   r  r1   )r   r   r   r4   r4   r5   rW    r  rW  c                 C   s   t | }|dusJ | d }| d| d}|t| kr"|S | | dkr0|d s0|  t| |d }|dd |D 7 }|S )	a&  
    Split a full key path into its individual components.

    This is similar to `key.split(".")` but also works with the getitem syntax:
        "a.b"       -> ["a", "b"]
        "a[b]"      -> ["a", "b"]
        ".a.b[c].d" -> ["", "a", "b", "c", "d"]
        "[a].b"     -> ["a", "b"]
    Nr   r   r   r  c                 S   s   g | ]
\}}|r
|n|qS r4   r4   )rk   dot_keybracket_keyr4   r4   r5   rm     s    zsplit_key.<locals>.<listcomp>)KEY_PATH_HEADr9  spansplitr   popKEY_PATH_OTHERfindall)rn   first
first_stoptokensothersr4   r4   r5   	split_key  s   
r  enter_resultc                 c   s    | V  d S r1   r4   )r  r4   r4   r5   nullcontext  s   
r  r1   )FTrf   )rr  rd  rr   r}   r  r   r   r   
contextlibr   enumr   textwrapr   r   r   r   r   r   r	   r
   r   r   r   rG   errorsr   r   r   r   r   r   grammar_parserr   r   r  r   r   r   r   __annotations__rA  r>  rh   r<   bytesr   r~   r  r  rT   r/   r=   rO   r>   rR   rC   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r   r%  r&  r'  r-  r,  r2  r6  r4  r8  r:  rE   rD   rB  rE  r   r   r   r   r   rS  rT  r   r   r   rX  rZ  rO  r^  r`  r  rm  r   r   r  r  r  rW  r  r  r4   r4   r4   r5   <module>   s  
 , 

	9$"*$1

5






	 
f$-+