
    gu                       U d dl m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mZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z) d d	l*m+Z+ erd d
lm,Z, d dlm-Z-m.Z. d dl*m/Z/ d dl0m1Z1 e(jd                  e(jf                  e(jh                  e(jj                  e(jl                  e(jn                  e(jp                  e(jr                  e(jt                  e(jv                  e(jx                  e(jx                  e(jz                  e(j|                  dZ?dEdZ@dEdZA	 	 	 	 	 	 	 	 dFdZBdGdZCdZDdeEd<   dZFdeEd<   dZGdeEd<   dZHdeEd<    ej                  deG deH deG deH d 	ej                  ej                  z        ZLd!eEd"<   eLZMd!eEd#<   eLZNd!eEd$<    ej                  d%eG d&eG d'eD d(eF d)eH d*ej                  ej                  z        ZOd!eEd+<    ej                  d,      ZPd!eEd-<    ej                  d.      ZQd!eEd/<   d0d1	 	 	 	 	 	 	 	 	 dHd2ZR	 	 	 	 	 	 	 	 dId3ZSd0d1	 	 	 	 	 	 	 	 	 dJd4ZT	 	 	 	 	 	 	 	 dKd5ZU	 	 	 	 	 	 	 	 dLd6ZV	 	 	 	 	 	 	 	 dMd7ZW	 	 	 	 	 	 	 	 dNd8ZX	 	 	 	 	 	 	 	 dOd9ZY	 	 	 	 	 	 	 	 dPd:ZZ	 	 	 	 	 	 	 	 dQd;Z[	 	 	 	 	 	 	 	 dRd<Z\	 	 	 	 	 	 	 	 dSd=Z]	 	 	 	 	 	 	 	 dTd>Z^d0d?	 	 	 	 	 	 	 	 	 dUd@Z_dVdAZ`e(jf                  eSe(jh                  eTe(jd                  eUe(jp                  eYe(jr                  eZe(jt                  e_e(jv                  e[e(jx                  e\e(jz                  e]e(j|                  e^e(jj                  eVe(jl                  eWe(jn                  eXiZadBd0d0dC	 	 	 	 	 	 	 	 	 	 	 dWdDZby)X    )annotationsN)suppress)dedent)TYPE_CHECKING)DocstringAttributeDocstringClassDocstringFunctionDocstringModuleDocstringParameterDocstringRaiseDocstringReceiveDocstringReturnDocstringSectionDocstringSectionAdmonitionDocstringSectionAttributesDocstringSectionClassesDocstringSectionDeprecatedDocstringSectionExamplesDocstringSectionFunctionsDocstringSectionModulesDocstringSectionOtherParametersDocstringSectionParametersDocstringSectionRaisesDocstringSectionReceivesDocstringSectionReturnsDocstringSectionTextDocstringSectionWarnsDocstringSectionYieldsDocstringWarnDocstringYield)docstring_warningparse_docstring_annotation)DocstringSectionKindLogLevel)ExprName)Pattern)AnyLiteral)Expr)	Docstring)
deprecated
parameterszother parametersreturnsyieldsreceivesraiseswarnsexamples
attributes	functionsmethodsclassesmodulesstrc                $    | j                          S )N)striplines    M/var/www/openai/venv/lib/python3.12/site-packages/_griffe/docstrings/numpy.py_is_empty_liner>   U   s    zz|    c                T    t        |        xr t        | j                  dd            S )N- )r>   replacer;   s    r=   _is_dash_linerD   Y   s%    d##Mt||C7L(MMr?   c                  | j                   }|t        |      k\  rg |fS |}g }t        ||         r|dz  }t        ||         r||   g}|dz  }|t        |      k  r||   }t        |      r|j                  d       n|j	                  d      r|j                  |dd         n|j	                  d      rPt        |      t        |j                               z
  }|j                  ||d         t        | |d|dz    d|        n7|dz   t        |      k  rt        ||dz            rn(|j                  |       |g}|dz  }|t        |      k  r|r|j                  |       ||dz
  fS )N   rB   z        z,Confusing indentation for continuation line z' in docstring, should be 4 spaces, not )lineslenr>   append
startswithlstripr!   rD   )		docstringoffsetoptionsrI   
new_offsetitemscurrent_itemr<   cont_indents	            r=   _read_block_itemsrU   ]   s    OOEU6zJE z*
+a
 z*
+ *%&L!OJ s5z
!Z $#__W%QR)__S!d)c$++-&88K[\ 23>z!|n M++6-9 !^c%j(]5a;P-Q LL& 6La
= s5z
!@ \"*q.  r?   c                  | j                   }|t        |      k\  rd|fS |}g }t        ||         r|dz  }t        ||         r|t        |      k  rt        ||         }|r#|t        |      dz
  k  rt        ||dz            rnM|r#|t        |      dz
  k  rt        ||dz            rn(|j	                  ||          |dz  }|t        |      k  rdj                  |      j                  d      |dz
  fS )NrB   rF      
)rI   rJ   r>   rD   rK   joinrstrip)rN   rO   rP   rI   rQ   blockis_emptys          r=   _read_blockr]      s   OOEU6zJE z*
+a
 z*
+
s5z
!!%
"34
SZ!^3eJYZNF[8\
SZ!^3eJYZNF[8\U:&'a
 s5z
! 99U""4(*q.88r?   z\{_RE_OBz\}_RE_CBz\*{0,2}[_a-z][_a-z0-9]*_RE_NAMEz.+_RE_TYPEz
    (?:
        (?P<nt_name>z)\s*:\s*(?P<nt_type>z4)  # name and type
        |  # or
        (?P<name>zu)\s*:\s*  # just name
        |  # or
        \s*:\s*$  # no name, no type
        |  # or
        (?::\s*)?(?P<type>z)\s*  # just type
    )
    r&   _RE_RETURNS
_RE_YIELDS_RE_RECEIVESz
    (?P<names>z(?:,\sz5)*)
    (?:
        \s:\s
        (?:
            (?:z(?P<choices>.+)z)|
            (?P<type>z)
        )?
    )?
    _RE_PARAMETERz^\s*<BLANKLINE>\s*$_RE_DOCTEST_BLANKLINEz(\s*#\s*doctest:.+)$_RE_DOCTEST_FLAGST)warn_unknown_paramsc               Z   g }t        | fd|i|\  }}|D ]g  }t        j                  |d         }|st        | |d|d    d       3|j	                  d      j                  d      }	|j	                  d      xs d |j	                  d      }
d |
r|
|
j                  dd	      d   n<r:t        j                  d
      }|r"|j	                  d      |j	                  d      rj                  d      rd d t        |      d	kD  r"dj                  |d	d        j                         ndZ|	D ]D  }t        t        t              5  | j                  j                  |   j                   	 d d d         n. t        | |d|	        nt#        | t$        j&                        I|	D ]D  }t        t        t              5  | j                  j                  |   j(                  	 d d d         n |rlt        t              5  | j                  j                  }|	D ]8  }||vsd| d}d| d| fD ]  }||v s|d| dz  } n t        | ||       : 	 d d d        |j+                  fd|	D               j ||fS # 1 sw Y   ZxY w# 1 sw Y   xY w# 1 sw Y   ExY w)NrO   r   Could not parse line ''namesz, typechoicesrF   z8^(?P<annotation>.+),\s+default(?: |: |=)(?P<default>.+)$default
annotationz
, optionalirX   rB   z'No types or annotations for parameters 	log_levelzParameter 'z+' does not appear in the function signature*z**z. Did you mean 'z'?c              3  <   K   | ]  }t        |         yw))valuerp   descriptionN)r   ).0namerp   ro   rv   s     r=   	<genexpr>z#_read_parameters.<locals>.<genexpr>  s'      
puhlt7zWbccpus   )rU   re   matchr!   groupsplitreendswithrJ   rY   rZ   r   AttributeErrorKeyErrorparentr,   rp   r"   r$   debugro   extend)rN   rO   rh   rP   r,   rR   rQ   itemrz   rl   rn   rx   paramsmessagestarred_namerp   ro   rv   s                  @@@r=   _read_parametersr      s    ,.J *)NFNgNE:##DG,i7MdSTgYVW5XYG$**40[[(0D
++i( JmmD!,Q/GHHXZdeE++i0"[[6
*--l;#DS)J69$i!mdiiQR)002nh7!*!1!1!<!<T!B!M!MJ 87 
 ")Z;bchbi9jk3J	U]UcUcdJ?nh7'..99$?GGG 87 
 .)"))44!D6)$/v5`"a/0Z2dV,EL+v5 '-=l^2+N N % -F *)ZI " * 	 
pu
 	
g n z!!= 87 87
 *)s0   %J%J J!)J!J!JJ!J*	c               j    t        | fd|i|\  }}|rt        |      |fS t        | |d|        d |fS )NrO   z!Empty parameters section at line )r   r   r!   )rN   rO   rP   r,   rQ   s        r=   _read_parameters_sectionr     sQ     .iRR'RJ
)*5zAAi/PQWPX-YZr?   c               l    t        | f|dd|\  }}|rt        |      |fS t        | |d|        d |fS )NF)rO   rh   z'Empty other parameters section at line )r   r   r!   )rN   rO   rh   rP   r,   rQ   s         r=   _read_other_parameters_sectionr   ,  sU     .im\amelmJ
.z:JFFi/VW]V^-_`r?   c                   t        | fd|i|\  }}|st        | |d|        d |fS t        |      dkD  rt        | |d|        |d   }|d   }t        dj	                  |dd              }t        ||      |fS )NrO   z!Empty deprecated section at line rF   zToo many deprecated items at r   rX   )versiontext)rU   r!   rJ   r   rY   r   )rN   rO   rP   rR   rQ   r   r   r   s           r=   _read_deprecated_sectionr   <  s     *)NFNgNE:)Z3TU[T\1]^Z
5zA~)Z3PQWPX1YZ8D1gG$))DH%&D%gDA:MMr?   c                  t        | fd|i|\  }}|st        | |d|        d |fS g }t        |      D ]  \  }}t        j	                  |d         }|st        | |d|d    d       6|j                         }	|	d   xs |	d   }
|	d   xs |	d	   }t        d
j                  |dd              }|7t        t        t        t              5  | j                  j                  r| j                  j                  }n3| j                  j                  r| j                  j                   }nt        t#        |      dkD  r|j$                  r|j&                  j(                  |   }n|j*                  r|j&                  }n,|j,                  r|j&                  j(                  d   }nt        t/        |t0              r|}n(|j$                  r|j&                  j(                  |   }n|}d d d        nt3        || t4        j6                        }|j9                  t;        |
xs d||              t=        |      |fS # 1 sw Y   :xY w)NrO   zEmpty returns section at line r   rj   rk   nt_namerx   nt_typerm   rX   rF   rW   rq   rB   rx   rp   rv   )rU   r!   	enumeraterb   rz   	groupdictr   rY   r   r   r   
ValueErrorr   is_functionr-   is_attributerp   rJ   is_tuplesliceelementsis_iteratoris_generator
isinstancer%   r"   r$   r   rK   r   r   )rN   rO   rP   rR   rQ   r-   indexr   rz   groupsrx   rp   r   return_items                 r=   _read_returns_sectionr   T  s     *)NFNgNE:)Z3QRXQY1Z[ZG 't!!$q'*i7MdSTgYVW5XY"i 2F6NI&8&.
diiQR)*.(J?##//!*!1!1!9!9J%%22!*!1!1!<!<J$$u:>!**%/%5%5%>%>u%E
%11*4*:*:K'44*4*:*:*C*CA*FK",,%k8<)4J(11)4):):)C)CE)JJ)4J- @?0 4J	U]UcUcdJDJB:[_`aK (L #7+Z775 @?s   DH77I 	c                  t        | fd|i|\  }}|st        | |d|        d |fS g }t        |      D ]w  \  }}t        j	                  |d         }|st        | |d|d    d       6|j                         }	|	d   xs |	d   }
|	d   xs |	d	   }t        d
j                  |dd              }|t        t        t        t        t              5  | j                  j                  }|j                  r|j                   }n,|j"                  r|j                   j$                  d   }nt        t'        |t(              r|}n(|j*                  r|j                   j$                  |   }n|}d d d        nt-        || t.        j0                        }|j3                  t5        |
xs d||             z t7        |      |fS # 1 sw Y   :xY w)NrO   zEmpty yields section at line r   rj   rk   r   rx   r   rm   rX   rF   rq   rB   r   )rU   r!   r   rc   rz   r   r   rY   r   r   
IndexErrorr   r   r   rp   r   r   r   r   r   r%   r   r"   r$   r   rK   r    r   )rN   rO   rP   rR   rQ   r.   r   r   rz   r   rx   rp   r   
yield_items                 r=   _read_yields_sectionr     s    *)NFNgNE:)Z3PQWPX1YZZF 't  a)i7MdSTgYVW5XY"i 2F6NI&8&.
diiQR)*.*h
K&--88
))!+!1!1J,,!+!1!1!:!:1!=J$$j(3!+J((!+!1!1!:!:5!AJ!+J LK 4J	U]UcUcdJn$*"Y]^_9 (: "&):55# LKs   BF==G	c               >   t        | fd|i|\  }}|st        | |d|        d |fS g }t        |      D ]M  \  }}t        j	                  |d         }|st        | |d|d    d       6|j                         }	|	d   xs |	d   }
|	d   xs |	d	   }t        d
j                  |dd              }|t        t        t              5  | j                  j                  }|j                  rT|j                  j                  d   }t!        |t"              r|}n(|j$                  r|j                  j                  |   }n|}d d d        nt'        || t(        j*                        }|j-                  t/        |
xs d||             P t1        |      |fS # 1 sw Y   :xY w)NrO   zEmpty receives section at line r   rj   rk   r   rx   r   rm   rX   rF   rq   rB   r   )rU   r!   r   rd   rz   r   r   rY   r   r   r   r   r-   r   r   r   r   r%   r   r"   r$   r   rK   r   r   )rN   rO   rP   rR   rQ   r/   r   r   rz   r   rx   rp   r   receives_items                 r=   _read_receives_sectionr     s    *)NFNgNE:)Z3RSYRZ1[\ZH 't""47+i7MdSTgYVW5XY"i 2F6NI&8&.
diiQR)*.(3&--55
**$.$4$4$=$=a$@M!-:%2
&//%2%8%8%A%A%%H
%2
 43 4J	U]UcUcdJ(djbZ]abc1 (2 $H-z99 43s   A7FF	c                  t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]J  }t        |d   |       }t        dj	                  |dd              }|j                  t        ||             L t        |      |fS )NrO   zEmpty raises section at line r   rX   rF   rp   rv   )rU   r!   r"   r   rY   rK   r   r   )	rN   rO   rP   rR   rQ   r0   r   rp   r   s	            r=   _read_raises_sectionr     s     *)NFNgNE:)Z3PQWPX1YZZF/QC
diiQR)*n
MN  "&):55r?   c                  t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]J  }t        |d   |       }t        dj	                  |dd              }|j                  t        ||             L t        |      |fS )NrO   zEmpty warns section at line r   rX   rF   r   )rU   r!   r"   r   rY   rK   r   r   )	rN   rO   rP   rR   rQ   r1   r   rp   r   s	            r=   _read_warns_sectionr     s     *)NFNgNE:)Z3OPVx1XYZE/QC
diiQR)*]jdKL  !'33r?   c               J   t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]  }|d   }d|v r:|j                  dd      \  }}	|j                         }|	j                         xs d }	n|}d }	|	<t	        t
        t        t              5  | j                  |   j                  }	d d d        nt        |	| t        j                        }	t        dj                  |dd              }
|j                  t!        ||	|
              t#        |      |fS # 1 sw Y   RxY w)	NrO   z!Empty attributes section at line r   :rF   rq   rX   r   )rU   r!   r|   r:   r   r   r   	TypeErrorr   rp   r"   r$   r   r   rY   rK   r   r   )rN   rO   rP   rR   rQ   r3   r   	name_typerx   rp   r   s              r=   _read_attributes_sectionr     s4    *)NFNgNE:)Z3TU[T\1]^Z JG	)(sA6D*::<D#))+3tJDJ.(I>&--d3>>
 ?> 4J	U]UcUcdJdiiQR)*,$:[_`a! " &j1:== ?>s   DD"	c                  t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]  }|d   }d|v r6|j                  dd      d   }|j                         }|j                         }	n|}d }	t	        dj                  |dd              j                         }
|j                  t        ||	|
              t        |      |fS )NrO   z(Empty functions/methods section at line r   (rF   rX   r   )	rU   r!   r|   r:   r   rY   rK   r	   r   )rN   rO   rP   rR   rQ   r4   r   name_signaturerx   	signaturer   s              r=   _read_functions_sectionr   ;  s     *)NFNgNE:)Z3[\b[c1deZIa. !''Q/2D::<D&,,.I!DIdiiQR)*002*X\]^  %Y/;;r?   c                  t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]  }|d   }d|v r6|j                  dd      d   }|j                         }|j                         }	n|}d }	t	        dj                  |dd              j                         }
|j                  t        ||	|
              t        |      |fS )NrO   zEmpty classes section at line r   r   rF   rX   r   )	rU   r!   r|   r:   r   rY   rK   r   r   )rN   rO   rP   rR   rQ   r6   r   r   rx   r   r   s              r=   _read_classes_sectionr   Y  s     *)NFNgNE:)Z3QRXQY1Z[ZGa. !''Q/2D::<D&,,.I!DIdiiQR)*002~4ISWXY  #7+Z77r?   c                  t        | fd|i|\  }}|st        | |d|        d |fS g }|D ]  }|d   }d|v r6|j                  dd      d   }|j                         }|j                         }	n|}d }	t	        dj                  |dd              j                         }
|j                  t        ||	|
              t        |      |fS )NrO   zEmpty modules section at line r   r   rF   rX   r   )	rU   r!   r|   r:   r   rY   rK   r
   r   )rN   rO   rP   rR   rQ   r7   r   r   rx   r   r   s              r=   _read_modules_sectionr   w  s     *)NFNgNE:)Z3QRXQY1Z[ZGa. !''Q/2D::<D&,,.I!DIdiiQR)*002DYTXYZ  #7+Z77r?   )trim_doctest_flagsc               ^   t        | fd|i|\  }}g }d}d}g }	g }
|j                  d      D ]g  }t        |      rK|r7|
r2|j                  t        j
                  dj                  |
      f       g }
d}H|	j                  |       Z|r@|r,t        j                  d|      }t        j                  d|      }|
j                  |       |j                  d      r| }|	j                  |       |r|	j                  |       |j                  d      rp|	rA|j                  t        j                  dj                  |	      j                  d      f       g }	d}|rt        j                  d|      }|
j                  |       W|	j                  |       j |	r@|j                  t        j                  dj                  |	      j                  d      f       n2|
r0|j                  t        j
                  dj                  |
      f       |rt        |      |fS t        | |d|        d |fS )	NrO   FrX   rB   ```z>>>TzEmpty examples section at line )r]   r|   r>   rK   r#   r2   rY   rg   subrf   rL   r   rZ   r   r!   )rN   rO   r   rP   r   rQ   sub_sectionsin_code_examplein_code_blockcurrent_textcurrent_exampler<   s               r=   _read_examples_sectionr     s    #9GVGwGD*hjLOM L!#O

4 $" '')=)F)F		RaHb(cd&(O"'##D)!(,,R6,00T:""4(__U# --M%%__U###%9%>%>		,@W@^@^_c@d$ef!"O!(,,R6""4( %E !H 166		,8O8V8VW[8\]^	1::DIIo<VWX'5zAAi/Nvh-WXr?   c                `   |re|j                         j                  dd      }|dv r|d d }| j                  t        |dj	                  |      j                  d      |             y |rEt        |      r9| j                  t        dj	                  |      j                  d                   y y y )NrH   rA   )warningsnotesrX   )kindr   title)lowerrC   rK   r   rY   rZ   anyr   )sectionscurrentadmonition_titler   s       r=   _append_sectionr     s    %%'//S9(( 9D&YYw'..t4&	
 
S\,TYYw-?-F-Ft-LMN "r?   F)ignore_init_summaryr   rh   c               f   g }g }d}d}| j                   }	|||d|}|d   xr} | j                  duxrm | j                  j                  dk(  xrR | j                  j                  xr: | j                  j                  duxr  | j                  j                  j                  }
|
rdnd}|t        |	      k  rn|	|   j                         }|r8|j                  d	      j                  d
      rd}|j                  |	|          n|j                  d	      j                  d
      rd}|j                  |	|          nt        |	|         r|j                  d       n|t        |	      dz
  k(  r&|j                  |	|          t        |||       d}g }n~t        |	|dz            rYt        |||       g }|t        v r7d}t        t        |      } || fd|dz   i|\  }}|r1|j                  |       n|	|   }|dz  }n|j                  |	|          |dz  }|t        |	      k  rnt        |||       |S )aK  Parse a Numpydoc-style docstring.

    This function iterates on lines of a docstring to build sections.
    It then returns this list of sections.

    Parameters:
        docstring: The docstring to parse.
        ignore_init_summary: Whether to ignore the summary in `__init__` methods' docstrings.
        trim_doctest_flags: Whether to remove doctest flags from Python example blocks.
        warn_unknown_params: Warn about documented parameters not appearing in the signature.
        **options: Additional parsing options.

    Returns:
        A list of docstring sections.
    rB   F)r   r   rh   r   N__init__rW   r   rH   r   TrF   rO   )rI   r   rx   r   is_classrJ   r   rM   rL   rK   r>   r   rD   _section_kind_section_reader)rN   r   r   rh   rP   r   current_sectionr   r   rI   ignore_summaryrO   
line_lowerreadersections                  r=   parse_numpyr     st   . (*HOMOOE 122 	G 	%& 	-D(	-!!Z/	- ((	- ##4/		-
 ##,,  !QaF
3u:
6]((*
   %007 %""5=1 s#..u5 M""5=1 E&M*""2& s5zA~%""5=1Ho7GH! O 5!,-Ho7GH O ]*#% (z)BC"("Q6A:"Q"QOOG, $)= ! ""5=1!e 3u:
j Ho/?@Or?   )r<   r8   returnbool)rN   r*   rO   intrP   r'   r   ztuple[list[list[str]], int])rN   r*   rO   r   rP   r'   r   ztuple[str, int])
rN   r*   rO   r   rh   r   rP   r'   r   z$tuple[list[DocstringParameter], int])rN   r*   rO   r   rP   r'   r   z-tuple[DocstringSectionParameters | None, int])
rN   r*   rO   r   rh   r   rP   r'   r   z2tuple[DocstringSectionOtherParameters | None, int])rN   r*   rO   r   rP   r'   r   z-tuple[DocstringSectionDeprecated | None, int])rN   r*   rO   r   rP   r'   r   z*tuple[DocstringSectionReturns | None, int])rN   r*   rO   r   rP   r'   r   z)tuple[DocstringSectionYields | None, int])rN   r*   rO   r   rP   r'   r   z+tuple[DocstringSectionReceives | None, int])rN   r*   rO   r   rP   r'   r   z)tuple[DocstringSectionRaises | None, int])rN   r*   rO   r   rP   r'   r   z(tuple[DocstringSectionWarns | None, int])rN   r*   rO   r   rP   r'   r   z-tuple[DocstringSectionAttributes | None, int])rN   r*   rO   r   rP   r'   r   z,tuple[DocstringSectionFunctions | None, int])rN   r*   rO   r   rP   r'   r   z*tuple[DocstringSectionClasses | None, int])rN   r*   rO   r   rP   r'   r   z*tuple[DocstringSectionModules | None, int])
rN   r*   rO   r   r   r   rP   r'   r   z+tuple[DocstringSectionExamples | None, int])r   listr   z	list[str]r   r8   r   None)rN   r*   r   r   r   r   rh   r   rP   r'   r   zlist[DocstringSection])c
__future__r   r}   
contextlibr   textwrapr   typingr   _griffe.docstrings.modelsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    _griffe.docstrings.utilsr!   r"   _griffe.enumerationsr#   r$   _griffe.expressionsr%   r&   r'   r(   r)   _griffe.modelsr*   r+   r,   other_parametersr-   r.   r/   r0   r1   r2   r3   r4   r6   r7   r   r>   rD   rU   r]   r^   __annotations__r_   r`   ra   compile
IGNORECASEVERBOSErb   rc   rd   re   rf   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r?   r=   <module>r      s  ( # 	          8 S ? (#(( '11&11,==#++"))$--"))!''$--&11%//#--#++#++$N9!9! 9! 	9!
 !9!x92   *# *# !rzz
J28* =  $* %
 MMBJJW  "
G !#g ##
jxj ) xvh /Z  	 MMBJJw  ",,B!C w C'RZZ(?@ 7 @ !%	C"C" C" 	C"
 C" *C"L  	
 3& !%	  	
  8 NN N 	N
 3N05858 58 	58
 058p-6-6 -6 	-6
 /-6`):): ): 	):
 1):X66 6 	6
 /6.44 4 	4
 .4.">"> "> 	">
 3">J<< < 	<
 2<<88 8 	8
 08<88 8 	8
 08D  $	<< < 	<
 < 1<~O( ##%=))+I##%=!5 3!!#9##%=""$;  "7  "7  "7!5!!#9( !&# $gg g 	g
 g g gr?   