
    gV                    V   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
 d dlmZmZmZ d dlmZ d dlmZ d d	lmZ erd d
lmZmZ d dlmZmZmZmZmZ  eej>                  ej@                  f      Z! eejD                  ej@                  f      Z# eej>                  ejD                  f      Z$ eejJ                  ejL                  f      Z' G d d      Z( G d de(      Z) G d de(      Z* G d de(      Z+ G d de(      Z, G d de(      Z- G d de(      Z. G d de(      Z/ G d de(      Z0 G d de(      Z1 G d  d!e(      Z2 G d" d#e(      Z3 G d$ d%e(      Z4	 	 	 	 	 	 	 	 d/d&Z5d0d'Z6d1d(Z7	 	 	 	 	 	 	 	 d2d)Z8dd*	 	 	 	 	 	 	 d3d+Z9	 	 	 	 	 	 	 	 d4d,Z:d5d-Z; e<       Z=	 	 	 	 	 	 d6d.Z>y)7    )annotationsN)Path)TYPE_CHECKINGAny)ForeStyle)BreakageKindExplanationStyleParameterKind)AliasResolutionError)_WORKTREE_PREFIX)logger)IterableIterator)Alias	AttributeClassFunctionObjectc                  >   e Zd ZU dZded<   	 dddZddZddZddd d	Ze	j                  f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ddZddZddZddZddZddZddZddZddZy)$Breakagez;Breakages can explain what broke from a version to another.r	   kindc                B    || _         	 || _        	 || _        	 || _        y)zInitialize the breakage.

        Parameters:
            obj: The object related to the breakage.
            old_value: The old value.
            new_value: The new, incompatible value.
            details: Some details about the breakage.
        N)obj	old_value	new_valuedetails)selfr   r   r   r   s        A/var/www/openai/venv/lib/python3.12/site-packages/_griffe/diff.py__init__zBreakage.__init__'   s,     1""*.    c                .    | j                   j                  S N)r   valuer   s    r   __str__zBreakage.__str__9   s    yyr!   c                .    | j                   j                  S r#   )r   namer%   s    r   __repr__zBreakage.__repr__<   s    yy~~r!   F)fullc               t    | j                   | j                  j                  | j                  | j                  dS )zReturn this object's data as a dictionary.

        Parameters:
            full: Whether to return full info, or just base info.
            **kwargs: Additional serialization options.

        Returns:
            A dictionary.
        )r   object_pathr   r   )r   r   pathr   r   )r   r*   kwargss      r   as_dictzBreakage.as_dict?   s.     II88==	
 	
r!   c                >     t        | d|j                                S )zExplain the breakage by showing old and new value.

        Parameters:
            style: The explanation style to use.

        Returns:
            An explanation.
        	_explain_)getattrr$   )r   styles     r   explainzBreakage.explainP   s!     8wty6799r!   c                    | j                   j                  r | j                   j                  j                  S | j                   j                  S r#   )r   is_aliasparentfilepathr%   s    r   	_filepathzBreakage._filepath[   s3    8888??+++xx   r!   c                    | j                   j                  r | j                   j                  j                  S | j                   j                  S r#   )r   r6   r7   relative_filepathr%   s    r   _relative_filepathzBreakage._relative_filepatha   s3    8888??444xx)))r!   c                    | j                   j                  r | j                   j                  j                  S | j                   j                  S r#   )r   r6   r7   relative_package_filepathr%   s    r   _relative_package_filepathz#Breakage._relative_package_filepathg   s3    8888??<<<xx111r!   c                    | j                   j                         rN| j                   j                  }t        |      D ]*  \  }}|j	                  t
              st        ||dz   d   c S  | j                   S )N   )r<   is_absoluteparts	enumerate
startswithr   r   )r   rC   indexparts       r   	_locationzBreakage._locationm   sk    
 ""..0++11E(/t??#34uqy{!344  0 &&&r!   c                    | j                   j                  r| j                   j                  S | j                   j                  S r#   )r   r6   r-   canonical_pathr%   s    r   _canonical_pathzBreakage._canonical_pathy   s-    8888== xx&&&r!   c                    | j                   j                  r*| j                   j                  j                  j                  S | j                   j                  j                  S r#   )r   r6   r7   moduler-   r%   s    r   _module_pathzBreakage._module_path   s=    8888??))...xx###r!   c                T    | j                   t        | j                        dz   d  xs dS )N   z<module>)rK   lenrN   r%   s    r   _relative_pathzBreakage._relative_path   s+    ##C(9(9$:Q$>$@AOZOr!   c                   | j                   t        j                  u r| j                  | j                  k7  ry| j
                  j                  r| j
                  j                  xs dS | j
                  j                  xs dS )Nr   )	r   r	   OBJECT_REMOVEDr<   rH   r   r6   alias_linenolinenor%   s    r   _linenozBreakage._lineno   sb    
 993338O8OSWSaSa8a8888((-A-xx#!#r!   c                x    t         j                   | j                   t         j                   d| j                   S )N:)r   BRIGHTrH   	RESET_ALLrW   r%   s    r   _format_locationzBreakage._format_location   s-    ,,//@$,,PPr!   c                    | j                   S r#   )rR   r%   s    r   _format_titlezBreakage._format_title   s    """r!   c                r    t         j                   | j                  j                   t         j                   S r#   )r   YELLOWr   r$   RESETr%   s    r   _format_kindzBreakage._format_kind   s&    ++tyy/

|<<r!   c                ,    t        | j                        S r#   )strr   r%   s    r   _format_old_valuezBreakage._format_old_value       4>>""r!   c                ,    t        | j                        S r#   )rd   r   r%   s    r   _format_new_valuezBreakage._format_new_value   rf   r!   c                    | j                          d| j                          d| j                          }| j                         }| j	                         }|r
|r| d| }n|r|}n|r|}nd}|r| d| S |S )N:  ->  )r\   r^   rb   re   rh   r   explanationoldnewchanges        r   _explain_onelinezBreakage._explain_oneline   s    ..01D4F4F4H3IDL]L]L_K`a$$&$$&3uD&FFFF!]"VH--r!   c                   | j                          d| j                          dg}| j                         }| j                         }| j	                         }|s|r|j                  | d       n|j                  |       |r|j                  d|        |r|j                  d|        | j                  r|j                  d| j                          |j                  d       dj                  |      S )Nrj   rY   z  Old: z  New: z  Details: rl   
)r\   r^   rb   re   rh   appendr   join)r   linesr   ro   rp   s        r   _explain_verbosezBreakage._explain_verbose   s    ))+,Bt/A/A/C.DAFG  "$$&$$&#LLD6$LLLL73%)LL73%)<<LL;t||n56Ryyr!   c                   d| j                    d| j                  j                   d}| j                         }|dk7  rd| d}| j	                         }|dk7  rd| d}|r
|r| d| }n|r|}n|r|}nd}|r| d| S |S )	Nz- `z`: **unset`rk   rl   rj   )rK   r   r$   re   rh   rm   s        r   _explain_markdownzBreakage._explain_markdown   s    D001diioo5FaH$$&'>cU!*C$$&'>cU!*C3uD&FFFF!]"VH--r!   c                P   d| j                    d| j                   }d| j                          }d| d| d| j                  j                   }| j                         }|dk7  rd| d}| j                         }|dk7  rd| d}|r
|r| d	| }n|r|}n|r|}nd
}|r| d| S |S )Nzfile=z,line=ztitle=z
::warning ,z::r{   r|   rk   rl   rj   )rH   rW   r^   r   r$   re   rh   )r   locationtitlern   ro   rp   rq   s          r   _explain_githubzBreakage._explain_github   s    4>>*&?++-./"8*AeWBtyy6GH$$&'>cU!*C$$&'>cU!*C3uD&FFFF!]"VH--r!   N)rl   )
r   r   r   r   r   r   r   rd   returnNoner   rd   )r*   boolr.   r   r   zdict[str, Any])r3   r
   r   rd   )r   r   )r   int)__name__
__module____qualname____doc____annotations__r    r&   r)   r/   r
   ONE_LINEr4   propertyr9   r<   r?   rH   rK   rN   rR   rW   r\   r^   rb   re   rh   rr   rx   r}   r    r!   r   r   r   !   s   E
/$ ', 
" 1A0I0I 	: ! !
 * *
 2 2
 	' 	' ' '
 $ $
 P P $ $Q#=##  $(r!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	ParameterMovedBreakagez-Specific breakage class for moved parameters.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS N()rR   r   BLUEr   r(   ra   r%   s    r   r^   z$ParameterMovedBreakage._format_title   8    %%&a		{4>>3F3F2G

|STUUr!   c                     yNrl   r   r%   s    r   re   z(ParameterMovedBreakage._format_old_value       r!   c                     yr   r   r%   s    r   rh   z(ParameterMovedBreakage._format_new_value   r   r!   Nr   )r   r   r   r   r	   PARAMETER_MOVEDr   r   r^   re   rh   r   r!   r   r   r      s%    7%55D,5Vr!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	ParameterRemovedBreakagez/Specific breakage class for removed parameters.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS r   r   r%   s    r   r^   z&ParameterRemovedBreakage._format_title  r   r!   c                     yr   r   r%   s    r   re   z*ParameterRemovedBreakage._format_old_value  r   r!   c                     yr   r   r%   s    r   rh   z*ParameterRemovedBreakage._format_new_value
  r   r!   Nr   )r   r   r   r   r	   PARAMETER_REMOVEDr   r   r^   re   rh   r   r!   r   r   r      s%    9%77D,7Vr!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	ParameterChangedKindBreakagez:Specific breakage class for parameters whose kind changed.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS r   r   r%   s    r   r^   z*ParameterChangedKindBreakage._format_title  r   r!   c                T    t        | j                  j                  j                        S r#   )rd   r   r   r$   r%   s    r   re   z.ParameterChangedKindBreakage._format_old_value      4>>&&,,--r!   c                T    t        | j                  j                  j                        S r#   )rd   r   r   r$   r%   s    r   rh   z.ParameterChangedKindBreakage._format_new_value  r   r!   Nr   )r   r   r   r   r	   PARAMETER_CHANGED_KINDr   r   r^   re   rh   r   r!   r   r   r     s%    D%<<D,<V..r!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	ParameterChangedDefaultBreakagezCSpecific breakage class for parameters whose default value changed.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS r   r   r%   s    r   r^   z-ParameterChangedDefaultBreakage._format_title"  r   r!   c                @    t        | j                  j                        S r#   )rd   r   defaultr%   s    r   re   z1ParameterChangedDefaultBreakage._format_old_value%      4>>))**r!   c                @    t        | j                  j                        S r#   )rd   r   r   r%   s    r   rh   z1ParameterChangedDefaultBreakage._format_new_value(  r   r!   Nr   )r   r   r   r   r	   PARAMETER_CHANGED_DEFAULTr   r   r^   re   rh   r   r!   r   r   r     s%    M%??D,?V++r!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	 ParameterChangedRequiredBreakagez=Specific breakage class for parameters which became required.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS r   r   r%   s    r   r^   z.ParameterChangedRequiredBreakage._format_title1  r   r!   c                     yr   r   r%   s    r   re   z2ParameterChangedRequiredBreakage._format_old_value4  r   r!   c                     yr   r   r%   s    r   rh   z2ParameterChangedRequiredBreakage._format_new_value7  r   r!   Nr   )r   r   r   r   r	   PARAMETER_CHANGED_REQUIREDr   r   r^   re   rh   r   r!   r   r   r   ,  s%    G%@@D,@Vr!   r   c                  L    e Zd ZU dZej
                  Zded<   ddZddZ	ddZ
y)	ParameterAddedRequiredBreakagez=Specific breakage class for new parameters added as required.r	   r   c                    | j                    dt        j                   | j                  j                   t        j
                   dS r   )rR   r   r   r   r(   ra   r%   s    r   r^   z,ParameterAddedRequiredBreakage._format_title@  r   r!   c                     yr   r   r%   s    r   re   z0ParameterAddedRequiredBreakage._format_old_valueC  r   r!   c                     yr   r   r%   s    r   rh   z0ParameterAddedRequiredBreakage._format_new_valueF  r   r!   Nr   )r   r   r   r   r	   PARAMETER_ADDED_REQUIREDr   r   r^   re   rh   r   r!   r   r   r   ;  s%    G%>>D,>Vr!   r   c                  4    e Zd ZU dZej
                  Zded<   y)ReturnChangedTypeBreakagez=Specific breakage class for return values which changed type.r	   r   N)r   r   r   r   r	   RETURN_CHANGED_TYPEr   r   r   r!   r   r   r   J  s    G%99D,9r!   r   c                  D    e Zd ZU dZej
                  Zded<   ddZddZ	y)ObjectRemovedBreakagez,Specific breakage class for removed objects.r	   r   c                     yr   r   r%   s    r   re   z'ObjectRemovedBreakage._format_old_valueU  r   r!   c                     yr   r   r%   s    r   rh   z'ObjectRemovedBreakage._format_new_valueX  r   r!   Nr   )
r   r   r   r   r	   rT   r   r   re   rh   r   r!   r   r   r   P  s    6%44D,4r!   r   c                  D    e Zd ZU dZej
                  Zded<   ddZddZ	y)ObjectChangedKindBreakagez7Specific breakage class for objects whose kind changed.r	   r   c                .    | j                   j                  S r#   )r   r$   r%   s    r   re   z+ObjectChangedKindBreakage._format_old_valuea      ~~###r!   c                .    | j                   j                  S r#   )r   r$   r%   s    r   rh   z+ObjectChangedKindBreakage._format_new_valued  r   r!   Nr   )
r   r   r   r   r	   OBJECT_CHANGED_KINDr   r   re   rh   r   r!   r   r   r   \  s    A%99D,9$$r!   r   c                  4    e Zd ZU dZej
                  Zded<   y)AttributeChangedTypeBreakagez:Specific breakage class for attributes whose type changed.r	   r   N)r   r   r   r   r	   ATTRIBUTE_CHANGED_TYPEr   r   r   r!   r   r   r   h  s    D%<<D,<r!   r   c                  4    e Zd ZU dZej
                  Zded<   y)AttributeChangedValueBreakagez;Specific breakage class for attributes whose value changed.r	   r   N)r   r   r   r   r	   ATTRIBUTE_CHANGED_VALUEr   r   r   r!   r   r   r   n  s    E%==D,=r!   r   c                  D    e Zd ZU dZej
                  Zded<   ddZddZ	y)ClassRemovedBaseBreakagez1Specific breakage class for removed base classes.r	   r   c                R    ddj                  d | j                  D              z   dz   S )N[, c              3  4   K   | ]  }|j                     y wr#   rJ   .0bases     r   	<genexpr>z=ClassRemovedBaseBreakage._format_old_value.<locals>.<genexpr>z       N~tt22~   ])rv   r   r%   s    r   re   z*ClassRemovedBaseBreakage._format_old_valuey  &    TYYNt~~NNNQTTTr!   c                R    ddj                  d | j                  D              z   dz   S )Nr   r   c              3  4   K   | ]  }|j                     y wr#   r   r   s     r   r   z=ClassRemovedBaseBreakage._format_new_value.<locals>.<genexpr>}  r   r   r   )rv   r   r%   s    r   rh   z*ClassRemovedBaseBreakage._format_new_value|  r   r!   Nr   )
r   r   r   r   r	   CLASS_REMOVED_BASEr   r   re   rh   r   r!   r   r   r   t  s!    ;%88D,8UUr!   r   c             #  "  K   dE d {    |j                   | j                   k7  rNt        |j                         t        | j                         k  r#t        || j                   |j                          t        | ||      E d {    y 7 7 w)Nr   
seen_paths)basesrQ   r   _member_incompatibilities)	old_class	new_classr   s      r   _class_incompatibilitiesr     sm      MM)//)c)//.BSEY.Y&y)//9??SS(I*UUU  Vs"   BBA<BBBBc           	   #  B  K   |j                   D cg c]  }|j                   }}|j                   D ch c]  }|j                   }}t        j                  |v }t        j
                  |v }t        | j                         D ]  \  }}|j                  |j                   vrz|j                  t        j                  u xr |xsF |j                  t        j                  u xr |xs$ |j                  t        j                  u xr |xr |}	|	st        ||d        |j                   |j                     }
|
j                  r|j                  st        |||
       |j                  t        v rS|
j                  t        v rA|j                  |j                        }||k7  r!d| d| d||z
  dd}t        |||
|       |j                  |
j                  ur9t!        |j                  t        j                  u xr |
j                  t        j                  u |j                  t        j                  u xr |
j                  t        j                  u |j                  t        j                  u xr |
j                  t"        v |
j                  t        j
                  u xr! |j                  t        j                  uxr | |
j                  t        j                  u xr! |j                  t        j                  uxr | f      }|rt%        |||
       t'        |||
      }|j                   xr |
j                   }|j                  t(        vxr |
j                  t(        v}|s|s	 |j*                  |
j*                  k7  r|  |j                   D ]7  }
|
j                  | j                   vs|
j                  s)t/        |d |
       9 t1        | |      s$t3        || j4                  |j4                         y y c c}w c c}w # t,        $ r | Y w xY ww)Nzposition: from z to z (+r   )r   )
parametersr(   r   r   var_positionalvar_keywordrD   keyword_onlypositional_onlypositional_or_keywordr   requiredr   _POSITIONALrF   r   any_POSITIONAL_KEYWORD_ONLYr   r   	_VARIADICr   	Exceptionr   _returns_are_compatibler   returns)old_functionnew_functionparamnew_param_namesparam_kindshas_variadic_argshas_variadic_kwargs	old_index	old_param	swallowed	new_param	new_indexr   incompatible_kindbreakagenon_requirednon_variadics                    r   _function_incompatibilitiesr    s    /;/F/FG/Feuzz/FOG+7+B+BC+B%5::+BKC%44C'33{B ),*A*A B	9>>!8!88=#=#==UBU yNNm&C&CCYHYyNNm&I&IIwN_wdw 
 .|YMM !++INN;	i&8&82<IVV >>[(Y^^{-J'--inn=II%+I;d9+R	T]H]^_G``ab,\9iY`aa >>/ # NNm&C&CCt	ZgZtZtHtNNm&@&@@tY^^WdWtWtEtNNm&I&II C!*BBNNm&?&?? .!m.H.HH.--NNm&B&BB 0!m.K.KK0//!& !2<IVV 3<IV$---Hi6H6H2H ~~Y6Z9>>QZ;ZL$$	(9(99"No !Cz ",,	>>!8!88Y=O=O0tYOO - #<>'l6J6JLL`L`aa ?M HCx  sR   PPPPLP%P*P*P2P?APPPPPc              #     K   | j                   |j                   k7  rJ|j                   t        || j                   d       y t        || j                   |j                          y y w)Nr{   )r$   r   )old_attributenew_attributes     r   _attribute_incompatibilitiesr    s_      m111&/}?R?RT[\\/}?R?RTaTgTghh	 2s   A%A'c             #    K   	 | j                   r| j                  n| }|j                   r|j                  n|}t        |||      E d {    y # t        $ r. t        j                  d| j
                  |j
                         Y y w xY w7 ?w)Nz2API check: %s | %s: skip alias with unknown targetr   )r6   targetr   r   debugr-   _type_based_yield)old_objnew_objr   
old_member
new_members        r   _alias_incompatibilitiesr    s{     '.'7'7W^^W
'.'7'7W^^W

 !ZJOOO	   I7<<Y`YeYef Ps3   B4A B	B	
B4BBBBr   c             #    K   |
t               n|}| j                  j                         D ]z  \  }}|j                  s"t	        j
                  d| j                  |       4t	        j
                  d| j                  |       	 |j                  |   }t        |||      E d {    | y 7 # t        $ r6 |j                  s|j                  s|j                  rt        ||d        Y w xY ww)Nz(API check: %s.%s: skip non-public objectzAPI check: %s.%sr   )setall_membersitems	is_publicr   r  r-   r  KeyErrorr6   	is_moduler   )r  r  r   r(   r  r  s         r   r   r     s      %,*J#//557j##LLCW\\SWX't<	X ,,T2J
 )ZJWWW 8 X	  	J''J,@,@ZEYEY+J
DII	Js6   A>C-B+C-!B)"C-+<C*'C-)C**C-c             #  \  K   | j                   |v ry |j                  | j                          | j                  s|j                  rt        | ||      E d {    y |j                  | j                  k7  r$t        || j                  |j                         y | j                  rt        | ||      E d {    y | j                  rt        | ||      E d {    y | j                  rt        | |      E d {    y | j                  rt        | |      E d {    y y 7 7 m7 L7 -7 w)Nr   )r-   addr6   r  r   r   r   r   is_classr   is_functionr  is_attributer  )r  r  r   s      r   r  r  	  s     *$NN:??#j11 ,!
 	
 	

 
JOO	+'
JOOZ__UU			,!
 	
 	

 
		+!
 	
 	

 
		.z:FFF		 	 /
JGGG 
!+	
	
	
 	GGs[   AD,D"AD,6D$7"D,D& D,:D(; D,D*D,$D,&D,(D,*D,c                    | j                   y|j                   yt        j                  t              5  |j                   | j                   k(  r
	 d d d        y	 d d d        y# 1 sw Y   yxY w)NTF)r   
contextlibsuppressAttributeError)r   r   s     r   r   r   .  sg     ##			^	,<#7#77 
-	,7 
-
  
-
 s   A""A+c              #  8   K   t        | |      E d{    y7 w)aX  Find breaking changes between two versions of the same API.

    The function will iterate recursively on all objects
    and yield breaking changes with detailed information.

    Parameters:
        old_obj: The old version of an object.
        new_obj: The new version of an object.

    Yields:
        Breaking changes.

    Examples:
        >>> import sys, griffe
        >>> new = griffe.load("pkg")
        >>> old = griffe.load_git("pkg", "1.2.3")
        >>> for breakage in griffe.find_breaking_changes(old, new)
        ...     print(breakage.explain(style=style), file=sys.stderr)
    N)r   )r  r  s     r   find_breaking_changesr+  F  s     . )':::s   )r   r   r   r   r   set[str]r   Iterable[Breakage])r   r   r   r   r   Iterator[Breakage])r  r   r  r   r   r-  )r  Object | Aliasr  r/  r   r,  r   r-  )r  r/  r  r/  r   zset[str] | Noner   r.  )r  r/  r  r/  r   r,  r   r.  )r   r   r   r   r   r   )r  r/  r  r/  r   r.  )?
__future__r   r'  pathlibr   typingr   r   coloramar   r   _griffe.enumerationsr	   r
   r   _griffe.exceptionsr   _griffe.gitr   _griffe.loggerr   collections.abcr   r   _griffe.modelsr   r   r   r   r   	frozensetr   r   r   r   _KEYWORDr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r   object	_sentinelr+  r   r!   r   <module>r>     s6   #   %   N N 3 ( !2HH668[8[\]m00-2U2UVW$m&C&C]E_E_%`a }33]5N5NOP	L L^X x .8 .+h +x X : :	H 		$ 	$=8 =>H >	Ux 	U	V	V	V 		V
 	VHbViPPP 	P
 P( #'	XXX  	X
 X*"H"H"H 	"H
 "HJ* H	;;; ;r!   