
    %jț                       U d dl mZ d dlZd dlmZ d dlmZ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"m#Z#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+ erd dlm,Z, d d	lm-Z-m.Z. d d
l/m0Z0 d dl1m2Z2 i de*j3        de*j3        de*j3        de*j3        de*j4        de*j4        de*j4        de*j4        de*j4        de*j4        de*j5        de*j5        de*j5        de*j5        de*j6        de*j6        de*j7        e*j8        e*j9        e*j:        e*j;        e*j<        e*j<        e*j=        e*j>        e*j?        e*j@        e*j@        dZAeBeCeDeE         f         ZFeDeF         ZGeBeGeCf         ZH ejI        dejJ                  ZKdeLd <    ejI        d!          ZMdeLd"<    ejI        d#          ZNdeLd$<    ejI        d%          ZOdeLd&<   d'd(d|d3ZPd}d5ZQd'd'd'd6d~d:ZRdd<ZSd'd=dd?ZTd'd=ddAZUd'd(ddCZVd'd(ddEZWd'd(ddGZXddIZYd'd(ddKZZd'd(ddMZ[d'd(ddOZ\d'dPddRZ]d'd'dSddYZ^dZd d[dd`Z_d'd'd'd'daddeZ`d'd'd'd'daddgZad'd'd'd'dhddlZbd'dmddpZcddsZde*j3        eSe*j4        eTe*j5        eUe*j6        e[e*j@        e\e*j:        ece*j;        eVe*j<        eWe*j=        eXe*j>        eYe*j?        eZe*j7        e`e*j8        eae*j9        ebiZe G dt duedZv          ZfdZd'd'd'dZd'd'd'd'd'dw
dd{ZgdS )    )annotationsN)suppress)TYPE_CHECKING	TypedDict)DocstringAttributeDocstringClassDocstringFunctionDocstringModuleDocstringParameterDocstringRaiseDocstringReceiveDocstringReturnDocstringSectionDocstringSectionAdmonitionDocstringSectionAttributesDocstringSectionClassesDocstringSectionExamplesDocstringSectionFunctionsDocstringSectionModulesDocstringSectionOtherParametersDocstringSectionParametersDocstringSectionRaisesDocstringSectionReceivesDocstringSectionReturnsDocstringSectionTextDocstringSectionTypeAliasesDocstringSectionTypeParametersDocstringSectionWarnsDocstringSectionYieldsDocstringTypeAliasDocstringTypeParameterDocstringWarnDocstringYield)docstring_warningparse_docstring_annotation)DocstringSectionKindLogLevel)Pattern)AnyLiteral)Expr)	Docstringargs	argumentsparams
parameterszkeyword argszkeyword argumentsz
other argszother argumentszother paramszother parametersz	type argsztype argumentsztype paramsztype parametersraises
exceptionsreturns)yieldsreceivesexamples
attributes	functionsmethodsclassesztype aliasesmoduleswarnswarningsz4^(?P<type>[\w][\s\w-]*):(\s+(?P<title>[^\s].*))?\s*$r(   _RE_ADMONITIONz=^(?:(?P<name>\w+)?\s*(?:\((?P<type>.+)\))?:\s*)?(?P<desc>.*)$_RE_NAME_ANNOTATION_DESCRIPTIONz^\s*<BLANKLINE>\s*$_RE_DOCTEST_BLANKLINEz(\s*#\s*doctest:.+)$_RE_DOCTEST_FLAGST)r=   	docstringr,   offsetintr=   booloptionsr)   return_ItemsBlockc                  | j         }|t          |          k    rg |fS |}g }t          ||                   r|dz  }t          ||                   t          ||                   t          ||                                                   z
  }|dk    rg |dz
  fS |||         |d          gf}|dz  }|t          |          k     r`||         }	t          |	          r|d                             d           n|	                    |dz  dz            r'|d                             |	|dz  d                     n|	                    |dz   dz            rzt          |	          t          |	                                          z
  }
|d                             |	|
d                     |r#t          | |d|dz    d| d|dz   d	|
            n<|	                    |dz            r#|                    |           ||	|d          gf}nn|dz  }|t          |          k     `|r|                    |           ||dz
  fS )
N   r        z,Confusing indentation for continuation line z in docstring, should be z * 2 = z spaces, not )lineslen_is_empty_linelstripappend
startswithr$   )rB   rC   r=   rF   rN   
new_offsetitemsindentcurrent_itemlinecont_indents              j/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/docstrings/google.py_read_block_itemsr[   \   s   OEU6zJE z*
+
+ a
 z*
+
+  z"##c%
*;*B*B*D*D&E&EEF{{:>!! z!2677!; <=L!OJ s5zz
!
!Z $ 	O""2&&&&__VaZ#-.. 	O""4
#56666__fqjC/00 	d))c$++--&8&88KO""4#5666 !W:PQ> W W!'W W06
W WITW W   __Vc\** 	LL&&&&fgg8LL a
A s5zz
!
!D  #\"""*q.      tuple[str, int]c               d   | j         }|t          |          k    rd|dz
  fS |}g }t          ||                   r|dz  }t          ||                   t          ||                   t          ||                                                   z
  }|dk    rd|dz
  fS |                    ||                                                    |dz  }|t          |          k     r||                             |dz            st          ||                   rn|                    ||         |d                     |dz  }|t          |          k     r3||                             |dz            Yt          ||                   nd                    |                              d          |dz
  fS )NrK   rJ   r   rM   
)rN   rO   rP   rQ   rR   rS   joinrstrip)rB   rC   rF   rN   rT   blockrV   s          rZ   _read_blockrc      s   OEU6A:~JE z*
+
+ a
 z*
+
+  z"##c%
*;*B*B*D*D&E&EEF{{6A:~ 
LLz"))++,,,!OJ s5zz
!
!uZ'8'C'CFSL'Q'Q
!UcdijtduUvUv
!U:&vww/000a
 s5zz
!
!uZ'8'C'CFSL'Q'Q
!UcdijtduUvUv
! 99U""4((*q.88r\   )warn_unknown_paramswarn_missing_typesr=   rd   re   $tuple[list[DocstringParameter], int]c          	        g }t          | f||d|\  }}|D ]D\  }	}
	 |
d                             dd          \  }}n-# t          $ r  |rt          | |	d|
d          d           Y Pw xY wd                    |                                g|
dd                                        d          }d|v r|                    d	          rx|                    dd          \  }}|                                }|	                    d	          	                    d
                                          }t          ||           }n4|}	 | j        j        |         j        }n# t          t          f$ r d }Y nw xY w	 | j        j        |         j        }n# t          t          f$ r d }Y nw xY w|r|r|t          | |	d| d           |rq|rot#          t                    5  | j        j        }||vr3d| d}d| d| fD ]}||v r|d| dz  } nt          | |	|           d d d            n# 1 swxY w Y   |                    t'          ||||                     F||fS )NrC   r=   r   :rJ   -Failed to get 'name: description' pair from ''r_   ()
, optionalz%No type or annotation for parameter 'zParameter 'z+' does not appear in the function signature***. Did you mean ''?namevalue
annotationdescription)r[   split
ValueErrorr$   r`   rQ   ra   endswithstripremovesuffixr%   parentr0   rv   AttributeErrorKeyErrordefaultr   rR   r   )rB   rC   rd   re   r=   rF   r0   rb   rT   line_numberparam_linesname_with_typerw   rt   rv   r   r/   messagestarred_names                      rZ   _read_parametersr      s    J *)aFXaaY`aaE: %* 1x 1x [		*5a.*>*>sA*F*F'NKK 	 	 	 !UKPQNUUU  
 H	 ii!3!3!5!5 HABB HIIPPQUVV .  ^%<%<S%A%A -33C;;D*::<<D#0055BB<PPVVXXJ3J	JJJJ!D"&-8>I

"H- " " "!


"	&1$7?GG) 	 	 	GGG	  	g* 	gz/Ai6e^b6e6e6efff 		G+ 		G.)) G G")4v%%]D]]]G)3T[$[[(A " "'611#'J,'J'J'JJG!E 2 &igFFFG G G G G G G G G G G G G G G 	,$gR\juvvvwwwwz!!sF   ?'A)(A)EE32E37FF%$F%AH++H/	2H/	-tuple[DocstringSectionParameters | None, int]c               H    t          | fd|i|\  }}t          |          |fS NrC   )r   r   )rB   rC   rF   r0   rT   s        rZ   _read_parameters_sectionr      s6     .iRRR'RRJ
%j11:==r\   )rd   2tuple[DocstringSectionOtherParameters | None, int]c               J    t          | f|dd|\  }}t          |          |fS )NF)rC   rd   )r   r   )rB   rC   rd   rF   r0   rT   s         rZ   _read_other_parameters_sectionr   
  s:     .im\ammelmmJ
*:66
BBr\   1tuple[DocstringSectionTypeParameters | None, int]c          	     d   g }t          | fd|i|\  }}|D ]\  }}	 |d                             dd          \  }	}
n+# t          $ r t          | |d|d          d           Y Nw xY wd                    |
                                g|dd                                        d          }
d|	v r^|	                    dd          \  }}|                    d	          r|                    d
          r
|dd         }t          ||           }n4|	}	 | j
        j        |         j        }n# t          t          f$ r d }Y nw xY w	 | j
        j        |         j        }n# t          t          f$ r d }Y nw xY w|rt!          t                    5  | j
        j        }||vrEd| d| j
        j        j         d}d| d| fD ]}||v r|d| dz  } nt          | ||           d d d            n# 1 swxY w Y   |                    t)          ||||
                     
t+          |          |fS )NrC   r   ri   rJ   rj   rk   r_   rM   rl   rm   zType parameter 'z' does not appear in the z
 signaturero   rp   rq   rr   rs   )r[   rx   ry   r$   r`   rQ   ra   rS   rz   r%   r}   type_parametersrv   r~   r   r   r   kindru   rR   r!   r   )rB   rC   rd   rF   r   rb   rT   r   type_param_linesname_with_boundrw   rt   boundr   type_paramsr   r   s                    rZ   _read_type_parameters_sectionr     sT    O *)NNFNgNNE:). 4
 4
%%	+;A+>+D+DS!+L+L(O[[ 	 	 	V@PQR@SVVV  
 H	 ii!3!3!5!5 M8H8L MNNUUVZ[[ /!!)//Q77KD%$$ $)<)< $ad.ui@@EE"D!(8>I"H-   	&6t<DGG) 	 	 	GGG	  		G.)) G G'.>{**wwwPYP`PePkwwwG)3T[$[[(A " "';66#'J,'J'J'JJG!E 7 &igFFFG G G G G G G G G G G G G G G 	" '	  	
 	
 	
 	
 */::JFFsF   >%A&%A&D++E EEE32E3AG..G2	5G2	-tuple[DocstringSectionAttributes | None, int]c          	        g }t          | f||d|\  }}d }|D ]b\  }}		 |	d                             dd          \  }
}n-# t          $ r  |rt          | |d|	d          d           Y Pw xY wd                    |                                g|	dd                                        d          }d|
v rT|
                    dd          \  }}|                    d	          }|                    d
          }t          ||           }nL|
}t          t          t          t                    5  | j        |         j        }d d d            n# 1 swxY w Y   |                    t#          |||                     dt%          |          |fS )Nrh   r   ri   rJ   rj   rk   r_   rM   z()rn   rt   rv   rw   )r[   rx   ry   r$   r`   rQ   ra   r{   r|   r%   r   r~   r   	TypeErrorr}   rv   rR   r   r   )rB   rC   r=   rF   r7   rb   rT   rv   r   
attr_linesr   rw   rt   s                rZ   _read_attributes_sectionr   Z  s    J))aFXaaY`aaE:$(J#( i iZ		*4Q-*=*=c1*E*E'NKK 	 	 	 !TJqMTTT  
 H	 ii!3!3!5!5 G
122 GHHOOPTUU.  -33C;;D*#))$//J#00>>J3J	JJJJ!D.(I>> ? ?&-d3>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 	,$:[fggghhhh%j11:==s#   A'A+*A+-EE	E	,tuple[DocstringSectionFunctions | None, int]c          	         g }t          | f||d|\  }}d }|D ]\  }}		 |	d                             dd          \  }
}n-# t          $ r  |rt          | |d|	d          d           Y Ow xY wd                    |                                g|	dd                                        d          }d|
v r|
                    dd          d         }|
}n|
}d }|                    t          |||	                     t          |          |fS 
Nrh   r   ri   rJ   z2Failed to get 'signature: description' pair from 'rk   r_   rl   r   )
r[   rx   ry   r$   r`   rQ   ra   rR   r	   r   )rB   rC   r=   rF   r8   rb   rT   	signaturer   
func_linesname_with_signaturerw   rt   s                rZ   _read_functions_sectionr     sq    I))aFXaaY`aaE:#'I#( f fZ		/9!}/B/B3/J/J, 	 	 	 !YTUYYY  
 H	 ii!3!3!5!5 G
122 GHHOOPTUU%%%&,,S!44Q7D+II&DI*Xcdddeeee$Y//;;   A  'A*)A**tuple[DocstringSectionClasses | None, int]c          	         g }t          | f||d|\  }}d }|D ]\  }}		 |	d                             dd          \  }
}n-# t          $ r  |rt          | |d|	d          d           Y Ow xY wd                    |                                g|	dd                                        d          }d|
v r|
                    dd          d         }|
}n|
}d }|                    t          |||	                     t          |          |fS r   )
r[   rx   ry   r$   r`   rQ   ra   rR   r   r   )rB   rC   r=   rF   r:   rb   rT   r   r   class_linesr   rw   rt   s                rZ   _read_classes_sectionr     sn    G))aFXaaY`aaE:#'I$) a a [		/:1~/C/CC/K/K, 	 	 	 !ZUVZZZ  
 H	 ii!3!3!5!5 HABB HIIPPQUVV%%%&,,S!44Q7D+II&DI~4IS^___````"7++Z77r   .tuple[DocstringSectionTypeAliases | None, int]c          	        g }t          | fd|i|\  }}|D ]\  }}	 |d                             dd          \  }}	n+# t          $ r t          | |d|d          d           Y Mw xY wd                    |	                                g|dd                                        d          }	|                    t          ||	                     t          |          |fS )	NrC   r   ri   rJ   rj   rk   r_   rt   rw   )
r[   rx   ry   r$   r`   rQ   ra   rR   r    r   )
rB   rC   rF   type_aliasesrb   rT   r   type_alias_linesrt   rw   s
             rZ   _read_type_aliases_sectionr     s,    L))NNFNgNNE:). T T%%	 0 3 9 9#q A AD++ 	 	 	V@PQR@SVVV  
 H	 ii!3!3!5!5 M8H8L MNNUUVZ[[.DkRRRSSSS&|44j@@s   =%A%$A%*tuple[DocstringSectionModules | None, int]c          	        g }t          | f||d|\  }}|D ]\  }}	 |d                             dd          \  }	}
n-# t          $ r  |rt          | |d|d          d           Y Ow xY wd                    |
                                g|dd                                        d          }
|                    t          |	|
                     t          |          |fS )	Nrh   r   ri   rJ   rj   rk   r_   r   )
r[   rx   ry   r$   r`   rQ   ra   rR   r
   r   )rB   rC   r=   rF   r;   rb   rT   r   module_linesrt   rw   s              rZ   _read_modules_sectionr     s/    G))aFXaaY`aaE:%* L L!\		 ,Q 5 5c1 = =D++ 	 	 	 !VLQROVVV  
 H	 ii!3!3!5!5 IQRR8H IJJQQRVWWDkJJJKKKK"7++Z77   >'A('A()tuple[DocstringSectionRaises | None, int]c          	        g }t          | f||d|\  }}|D ]\  }}	 |d                             dd          \  }	}
n-# t          $ r  |rt          | |d|d          d           Y Ow xY wd                    |
                                g|dd                                        d          }
t          |	|           }	|                    t          |	|
                     t          |          |fS )	Nrh   r   ri   rJ   z2Failed to get 'exception: description' pair from 'rk   r_   rv   rw   )r[   rx   ry   r$   r`   rQ   ra   r%   rR   r   r   )rB   rC   r=   rF   r2   rb   rT   r   exception_linesrv   rw   s              rZ   _read_raises_sectionr     sD    J))aFXaaY`aaE: ). Z Z$_		&5a&8&>&>sA&F&F#J 	 	 	 !^YZI[^^^  
 H	 ii!3!3!5!5 L8K LMMTTUYZZ/
IFF
.JKXXXYYYY!*--z99r   (tuple[DocstringSectionWarns | None, int]c          	        g }t          | f||d|\  }}|D ]\  }}	 |d                             dd          \  }	}
n-# t          $ r  |rt          | |d|d          d           Y Ow xY wd                    |
                                g|dd                                        d          }
|                    t          |	|
                     t          |          |fS )	Nrh   r   ri   rJ   z0Failed to get 'warning: description' pair from 'rk   r_   r   )
r[   rx   ry   r$   r`   rQ   ra   rR   r"   r   )rB   rC   r=   rF   r<   rb   rT   r   warning_linesrv   rw   s              rZ   _read_warns_sectionr   "  s1    E))aFXaaY`aaE:&+ T T"]		&3A&6&<&<S!&D&D#J 	 	 	 !Z}UVGWZZZ  
 H	 ii!3!3!5!5 Jabb8I JKKRRSWXX]jkRRRSSSS ''33r   )multipler   c               z    |rt          | fd|i|S t          | fd|i|\  }}||                                fg|fS r   )r[   rc   
splitlines)rB   rC   r   rF   	one_blockrT   s         rZ   _read_block_items_mayber   >  sf      F EE6EWEEE'	LL&LGLLIz--//01:==r\   )namedr=   r   rN   	list[str]r   tuple[str | None, Any, str]c                  |r_t                               |d                   }|s$|rt          | |d|d          d           t          |                                \  }}}n^d }d|d         v rH|d                             dd          \  }}|                    d                              d          }n
d }|d         }d                    |                                g|dd                                        d          }|||fS )	Nr   z4Failed to get name, annotation or description from 'rk   ri   rJ   rl   rm   r_   )	r?   matchr$   ry   groupsrx   rQ   ra   r`   )	rB   r   rN   r   r=   r   rt   rv   rw   s	            rZ    _get_name_annotation_descriptionr   K  s#     #/55eAh?? 	 !V5QR8VVV  
 (-%j++%(??&+AhnnS!&<&<#J#**3//66s;;JJJ(K))[//11>E!""I>??FFtLLK[((r\   F)r   index	gen_indexLiteral[0, 1, 2]r   str | Expr | Nonec                  d }t          t                    5  | j        j        }|j        r|j        j        |         }n|j        r|dk    r|j        }|r|j        r|j        j        |         }d d d            n# 1 swxY w Y   |S )Nr   )	r   	Exceptionr}   rv   is_generatorsliceelementsis_iteratoris_tuple)rB   r   r   r   rv   s        rZ   _annotation_from_parentr   j  s     J	)		 : :%0
" 	*#)29=JJ# 	*	Q#)J 	:
+ 	:#)259J: : : : : : : : : : : : : : : s   AA99A= A=)returns_multiple_itemsreturns_named_valuere   r=   r   r   *tuple[DocstringSectionReturns | None, int]c                  g }t          | f||d|\  }}	t          |          D ]\  }
\  }}	 t          | |||          \  }}}n# t          $ r Y -w xY w|rt	          ||           }nTt          | dt          |          dk    |
          }|r.|r,|*|rt          |          n|
dz   }t          | |d|            |	                    t          |pd||                     t          |          |	fS )	NrC   r   r   rL   rJ   r   r   r   z)No type or annotation for returned value rK   r   )r   	enumerater   ry   r%   r   rO   reprr$   rR   r   r   )rB   rC   r   r   re   r=   rF   r3   rb   rT   r   r   return_linesrt   rv   rw   returned_values                    rZ   _read_returns_sectionr   }  s{    G/'  	 E: /8.>.> i i**\	,L)	- - -)D*kk  	 	 	H	  		x3J	JJJJ 1aRUV[R\R\_`R`hmnnnJ x. x:3E/3!Bd!)[:vft:v:vwwwDJB:[fggghhhh"7++Z77   A
AA)tuple[DocstringSectionYields | None, int]c                  g }t          | f||d|\  }}	t          |          D ]\  }
\  }}	 t          | |||          \  }}}n# t          $ r Y -w xY w|rt	          ||           }nTt          | dt          |          dk    |
          }|r.|r,|*|rt          |          n|
dz   }t          | |d|            |	                    t          |pd||                     t          |          |	fS )	Nr   r   r   rJ   r   z(No type or annotation for yielded value rK   r   )r   r   r   ry   r%   r   rO   r   r$   rR   r#   r   )rB   rC   r   r   re   r=   rF   r4   rb   rT   r   r   yield_linesrt   rv   rw   yielded_values                    rZ   _read_yields_sectionr     s{    F/'  	 E: .7u-=-= g g))[	,L)	- - -)D*kk  	 	 	H	  		v3J	JJJJ 1aRUV[R\R\_`R`hmnnnJ v. v:3E.2 AT


	!)[:ter:t:tuuun$*"Ydeeeffff!&)):55r   )receives_multiple_itemsreceives_named_valuere   r=   r   r   +tuple[DocstringSectionReceives | None, int]c                  g }t          | f||d|\  }}	t          |          D ]\  }
\  }}	 t          | |||          \  }}}n# t          $ r Y -w xY w|rt	          ||           }n$t          | dt          |          dk    |
          }|r.|r,|*|rt          |          n|
dz   }t          | |d|            |	                    t          |pd||                     t          |          |	fS )Nr   r   rJ   r   z)No type or annotation for received value rK   r   )r   r   r   ry   r%   r   rO   r   r$   rR   r   r   )rB   rC   r   r   re   r=   rF   r5   rb   rT   r   r   receive_linesrt   rv   rw   received_values                    rZ   _read_receives_sectionr     s|    H/(  	 E: 09/?/? k k++]	,L*	- - -)D*kk  	 	 	H	  	o3J	JJJJ 1aRUV[R\R\_`R`hmnnnJ 	t* 	tz/A+/>T$ZZZUQYNi6rbp6r6rsss(djbZ]hiiijjjj#H--z99r   )trim_doctest_flagsr   +tuple[DocstringSectionExamples | None, int]c                  t          | fd|i|\  }}g }d}d}g }	g }
|                    d          D ]}t          |          rS|r;|
r6|                    t          j        d                    |
          f           g }
d}O|	                    |           e|rN|r6t                              d|          }t                              d|          }|
                    |           |
                    d          r| }|	                    |           |r|	                    |           |
                    d          r|	rI|                    t          j        d                    |	                              d          f           g }	d}|rt                              d|          }|
                    |           |	                    |           |	rH|                    t          j        d                    |	                              d          f           n6|
r4|                    t          j        d                    |
          f           t          |          |fS )NrC   Fr_   rK   ```z>>>T)rc   rx   rP   rR   r&   r6   r`   rA   subr@   rS   textra   r   )rB   rC   r   rF   r   rT   sub_sectionsin_code_examplein_code_blockcurrent_textcurrent_examplerX   s               rZ   _read_examples_sectionr     s    #9GGVGwGGD*hjLOM L!#O

4   "& "&$ !	& *" ) '')=)F		RaHbHb(cddd&(O"'##D)))) 	&! ;(,,R66,00T::""4((((__U## 	& --M%%%% 	&%%%%__U## 	& "##%9%>		,@W@W@^@^_c@d@d$efff!"O! 7(,,R66""4(((( %%%% Y16		,8O8O8V8VW[8\8\]^^^^	 Y1:DIIo<V<VWXXX#L11:==r\   rX   strc                ,    |                                   S )N)r{   )rX   s    rZ   rP   rP   B  s    zz||r\   c                      e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 ded
<   	 ded<   	 ded<   dS )GoogleOptionsz,Options for parsing Google-style docstrings.rE   ignore_init_summaryr   r   r    returns_type_in_property_summaryr   r   rd   re   r=   N)__name__
__module____qualname____doc____annotations__ r\   rZ   r   r   X  s         66JE    Mz****[!!!!An3]NNN77r\   r   )total
r   r   r   r   r   r   r   rd   re   r=   r   r   list[DocstringSection]c       
           g }g }d}| j         }|||||||||	|
d
}|d         oC| j        duo:| j        j        dk    o*| j        j        o| j        j        duo| j        j        j        }|rdnd}|t          |          k     r||                                         }|rG|                    d                              d	          rd}|	                    ||                    n|                    d                              d	          rd
}|	                    ||                    nt                              ||                   x}r|                                }|d         }|d         }|                                t          v }|dk    }| pt          ||dz
                     }|t          |          dz
  k     }|t          |          dz
  k     }|ot          ||dz                      }|ot          ||dz                      }|o | o||dz                                d          }|o | o||dz                                d          }|s$|s"|	                    ||                    |dz  }g } |rdnd}!|s|r|s| 	                    d|!            |r|r| 	                    d|! d           | r[|
r7d                    |           }"t!          | |d|! d|" t"          j                   |	                    ||                    |dz  }|r|rYt'          |          rH|	                    t)          d                    |                              d                               g }t,          t          |                                                  }# |#| fd|dz   i|\  }$}|$r||$_        |	                    |$           n)t1          | |dz             \  }%}|%r|rYt'          |          rH|	                    t)          d                    |                              d                               g }||}|                                                    dd          }|	                    t5          ||%|                     nct7          t8                    5  |	                    ||                    ddd           n# 1 swxY w Y   n|	                    ||                    |dz  }|t          |          k     |rWt'          |          rH|	                    t)          d                    |                              d                               |r|r| j        r| j        j        rd| j        j        v r|d         j                                                             d          }d|d         v r|d                              dd          \  }&}'|'g|dd         }d                    |          |d         _        |	                    tC          tE          ddtG          |&|                     g                     |S )a  Parse a Google-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.
        returns_multiple_items: Whether to parse multiple items in `Yields` and `Returns` sections.
            When true, each item's continuation lines must be indented.
            When false (single item), no further indentation is required.
        returns_named_value: Whether to parse `Yields` and `Returns` section items as name and description, rather than type and description.
            When true, type must be wrapped in parentheses: `(int): Description.`. Names are optional: `name (int): Description.`.
            When false, parentheses are optional but the items cannot be named: `int: Description`.
        receives_multiple_items: Whether to parse multiple items in `Receives` sections.
            When true, each item's continuation lines must be indented.
            When false (single item), no further indentation is required.
        receives_named_value: Whether to parse `Receives` section items as name and description, rather than type and description.
            When true, type must be wrapped in parentheses: `(int): Description.`. Names are optional: `name (int): Description.`.
            When false, parentheses are optional but the items cannot be named: `int: Description`.
        returns_type_in_property_summary: Whether to parse the return type of properties
            at the beginning of their summary: `str: Summary of the property`.
        warn_unknown_params: Warn about documented parameters not appearing in the signature.
        warn_missing_types: Warn about missing types/annotations for parameters, return values, etc.
        warnings: Whether to log warnings at all.

    Returns:
        A list of docstring sections.
    Fr  r   N__init__rL   r   rM   r   TtitletyperJ   section
admonitionzMissing blank line above zExtraneous blank line below z titlez; z	Possible z skipped, reasons: r_   rC   )rC   -)r   r   r  propertyri   rK   )rw   rv   )$rN   r}   rt   is_functionis_classrO   lowerrQ   rS   rR   r>   r   	groupdict_section_kindrP   r`   r$   r'   debuganyr   ra   _section_readerr  rc   replacer   r   
IndexErroris_attributelabelsru   rx   r   r   r%   )(rB   r   r   r   r   r   r   r   rd   re   r=   sectionscurrent_sectionr   rN   rF   ignore_summaryrC   
line_lowerr   r   r  admonition_type
is_sectionhas_previous_lineblank_line_abovehas_next_linehas_next_linesblank_line_belowblank_lines_belowindented_line_belowindented_lines_belowreasonsr   reasons_stringreaderr  contentsrv   rX   s(                                           rZ   parse_googler0  q  sw   X (*HOMOE  30"82,L#: 420 G 	%& 	-D(	-!Z/	- (	- #4/		-
 #,  !'QQaF
3u::

6]((**
 J	2  %%0077 & %""5=1111s##..u55 E	2 M""5=1111$**5=999U A	2__&&F7OE$VnO(..00MAJ &
#44YuVVWZGX8Y8Y"SZZ!^3M#c%jj1n4N,Rfqj@Q1R1R . T>%QR
BS3T3T"/"n8H4H"nUSY\]S]M^MiMijmMnMn#1#q:K6K#qPUV\_`V`PaPlPlmpPqPq ' +?   &&uV}555!G *<99D# C'; CEU CA4AABBB# L(8 LJdJJJKKK  %)YYw%7%7N%!MDMM^MM 	    &&uV}555! >" )?++ g (<TYY=W=W=^=^_c=d=d(e(efff&(O(7L7L7N7N)OP"(&"Q"Q6A:"Q"Q"Q -$)GMOOG,,, $/y!#L#L#L & >& -// k$OO,@?A[A[AbAbcgAhAh,i,ijjj*,} /&5&;&;&=&=&E&Ec3&O&OOOO$>OZbjo$p$p$pqqqq!*-- > >'..uV}===> > > > > > > > > > > > > > > ""5=111!_ 3u::

b  W3// W,TYY-G-G-N-Nt-T-TUUVVV 	)  )	
 )*111!((**0066%(??$Qx~~c155J&E!""I&E $		% 0 0HQKOO'$RRD^_iktDuDuvvvw    Os   ,SSS)
rB   r,   rC   rD   r=   rE   rF   r)   rG   rH   )rB   r,   rC   rD   rF   r)   rG   r]   )rB   r,   rC   rD   rd   rE   re   rE   r=   rE   rF   r)   rG   rf   )rB   r,   rC   rD   rF   r)   rG   r   )
rB   r,   rC   rD   rd   rE   rF   r)   rG   r   )
rB   r,   rC   rD   rd   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )rB   r,   rC   rD   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r   rE   rF   r)   rG   rH   )rB   r,   r   rD   rN   r   r   rE   r=   rE   rG   r   )
rB   r,   r   r   r   rE   r   rD   rG   r   )rB   r,   rC   rD   r   rE   r   rE   re   rE   r=   rE   rF   r)   rG   r   )rB   r,   rC   rD   r   rE   r   rE   re   rE   r=   rE   rF   r)   rG   r   )rB   r,   rC   rD   r   rE   r   rE   re   rE   r=   rE   rF   r)   rG   r   )
rB   r,   rC   rD   r   rE   rF   r)   rG   r   )rX   r   rG   rE   )rB   r,   r   rE   r   rE   r   rE   r   rE   r   rE   r   rE   r   rE   rd   rE   re   rE   r=   rE   rG   r	  )h
__future__r   re
contextlibr   typingr   r   "griffe._internal.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    r!   r"   r#   !griffe._internal.docstrings.utilsr$   r%   griffe._internal.enumerationsr&   r'   r(   r)   r*   griffe._internal.expressionsr+   griffe._internal.modelsr,   r0   other_parametersr   r1   r3   r4   r5   r6   r7   r8   r:   r   r;   r<   r  tuplerD   listr   
_BlockItem_BlockItemsrH   compile
IGNORECASEr>   r  r?   r@   rA   r[   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   r  r   r0  r  r\   rZ   <module>rA     s!   # " " " " " " 				       + + + + + + + +                                                             > \ [ [ [ [ [ [ [ H H H H H H H H 2########111111111111
 +%0 "- &1	
 (9 -> &7 +< (9 ,= %5 *: '7 +; ")  &-!" #+#$ #)$-$-&1%/#-#+(5#+!'$*9  > 3S	>"
:K$%$"*%\^`^kll l l l l+52:6v+w+w  w w w w!+,B!C!C  C C C C'RZ(?@@  @ @ @ @ NR =! =! =! =! =! =!@9 9 9 9F !%#B" B" B" B" B" B"J> > > > !%	C C C C C C !%	BG BG BG BG BG BGR 	'> '> '> '> '> '>\ 	"< "< "< "< "< "<R 	"8 "8 "8 "8 "8 "8JA A A A: 	8 8 8 8 8 8@ 	: : : : : :F 	4 4 4 4 4 4@ 	
> 
> 
> 
> 
> 
>$ ) ) ) ) ) )F      . $( $#+8 +8 +8 +8 +8 +8d $( $#+6 +6 +6 +6 +6 +6d %)!%#+: +: +: +: +: +:d  $	8> 8> 8> 8> 8> 8>v   
 #%=)+I(*G!5 3!#9#%="$; "7%'A "7 "7!5!#9$8 8 8 8 8IU 8 8 8 88 !&##' $-2$(!% $#p p p p p p p pr\   