
    -hl_                    *   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j"        ej         f          Z# eej        ej"        f          Z$ eej%        ej&        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(          Z4dDd-Z5dEd2Z6dFd6Z7dGd:Z8dd;dHd=Z9dId@Z:dJdBZ; e<            Z=dKdCZ>dS )L    )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<   	 d2d3dZd4dZd4dZddd5dZe	j
        fd6dZed7d            Zed7d            Zed7d            Zed7d            Zed4d             Zed4d!            Zed4d"            Zed8d$            Zd%d&d9d(Zd%d&d9d)Zd%d&d9d*Zd%d&d9d+Zd%d&d9d,Zd4d-Zd4d.Zd4d/Zd4d0Zd1S ):Breakagez;Breakages can explain what broke from a version to another.r	   kind objr   	old_valuer   	new_valuedetailsstrreturnNonec                D    || _         	 || _        	 || _        	 || _        dS )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)r   r   r   r   )selfr   r   r   r   s        I/var/www/FlaskApp/flask-venv/lib/python3.11/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    yr%   c                    | j         j        S r'   )r   namer)   s    r#   __repr__zBreakage.__repr__<   s    y~r%   F)fullr.   boolkwargsdict[str, Any]c               B    | 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.   r0   s      r#   as_dictzBreakage.as_dict?   s)     I8=	
 
 	
r%   styler
   c                B     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"   r6   s     r#   explainzBreakage.explainP   s'     8wt66677999r%   r   c                T    | j         j        r| j         j        j        S | j         j        S r'   )r   is_aliasparentfilepathr)   s    r#   	_filepathzBreakage._filepath[   s'    8 	,8?++x  r%   c                T    | j         j        r| j         j        j        S | j         j        S r'   )r   r<   r=   relative_filepathr)   s    r#   _relative_filepathzBreakage._relative_filepatha   s'    8 	58?44x))r%   c                T    | j         j        r| j         j        j        S | j         j        S r'   )r   r<   r=   relative_package_filepathr)   s    r#   _relative_package_filepathz#Breakage._relative_package_filepathg   s'    8 	=8?<<x11r%   c                    | j                                         rQ| j         j        }t          |          D ]5\  }}|                    t
                    rt          ||dz   d           c S 6| j         S )N   )rB   is_absoluteparts	enumerate
startswithr   r   )r"   rI   indexparts       r#   	_locationzBreakage._locationm   s    
 "..00 	5+1E(// 5 5t??#344 5uqy{{!344445&&r%   c                J    | j         j        r| j         j        S | j         j        S r'   )r   r<   r4   canonical_pathr)   s    r#   _canonical_pathzBreakage._canonical_pathy   s$    8 	!8= x&&r%   c                h    | j         j        r| j         j        j        j        S | j         j        j        S r'   )r   r<   r=   moduler4   r)   s    r#   _module_pathzBreakage._module_path   s,    8 	/8?)..x##r%   c                N    | j         t          | j                  dz   d          pdS )N   z<module>)rQ   lenrT   r)   s    r#   _relative_pathzBreakage._relative_path   s+    #C(9$:$:Q$>$@$@AOZOr%   intc                    | j         t          j        u r| j        | j        k    rdS | j        j        r| j        j        pdS | j        j        pdS )Nr   )	r   r	   OBJECT_REMOVEDrB   rN   r   r<   alias_linenolinenor)   s    r#   _linenozBreakage._lineno   sV    
 93338OSWSa8a8a18 	.8(-A-x#!#r%   Tcolorsr`   c               l    |rt           j        nd}|rt           j        nd}| | j         | d| j         S )Nr   :)r   BRIGHT	RESET_ALLrN   r^   )r"   r`   brightresets       r#   _format_locationzBreakage._format_location   sD    !'/R#)1r@$.@%@@$,@@@r%   c                   | j         S r'   )rX   r"   r`   s     r#   _format_titlezBreakage._format_title   s    ""r%   c               f    |rt           j        nd}|rt           j        nd}| | j        j         | S Nr   )r   YELLOWRESETr   r(   )r"   r`   yellowrf   s       r#   _format_kindzBreakage._format_kind   s<     &.B$,

"2$)/25222r%   c               *    t          | j                  S r'   )r   r   ri   s     r#   _format_old_valuezBreakage._format_old_value       4>"""r%   c               *    t          | j                  S r'   )r   r   ri   s     r#   _format_new_valuezBreakage._format_new_value   rs   r%   c                   |                                   d|                                  d|                                  }|                                 }|                                 }|r
|r| d| }n|r|}n|r|}nd}|r| d| S |S )N:  -> r   )rg   rj   rp   rr   ru   r"   explanationoldnewchanges        r#   _explain_onelinezBreakage._explain_oneline   s    ..00aaD4F4F4H4HaaDL]L]L_L_aa$$&&$$&& 	3 	&&&&FF 	FF 	FFF 	.!--V---r%   c                <   |                                   d|                                  dg}|                                 }|                                 }|                                 }|s|r|                    | d           n|                    |           |r|                    d|            |r|                    d|            | j        r|                    d| j                    |                    d           d                    |          S )Nrw   rb   z  Old: z  New: z  Details: r   
)rg   rj   rp   rr   ru   appendr   join)r"   linesr   r{   r|   s        r#   _explain_verbosezBreakage._explain_verbose   s-   ))++FFt/A/A/C/CFFFG  ""$$&&$$&& 	# 	LLD$$$$LL 	*LL3))) 	*LL3)))< 	7LL5t|55666Ryyr%   c                   d| j          d| j        j         d}|                     d          }|r|dk    rd| d}|                     d          }|r|dk    rd| d}|r
|r| d| }n|r|}n|r|}nd	}|r| d
| S |S )Nz- `z`: **Fr_   unset`rx   r   rw   )rX   r   r(   rr   ru   ry   s        r#   _explain_markdownzBreakage._explain_markdown   s    GD/GGTY_GGG$$E$22 	3'>>c***C$$E$22 	3'>>c***C 	3 	&&&&FF 	FF 	FFF 	.!--V---r%   c                X   d| j          d| j         }d|                     d           }d| d| d| j        j         }|                     d          }|r|d	k    rd
| d
}|                     d          }|r|d	k    rd
| d
}|r
|r| d| }n|r|}n|r|}nd}|r| d| S |S )Nzfile=z,line=ztitle=Fr_   z
::warning ,z::r   r   rx   r   rw   )rN   r^   rj   r   r(   rr   ru   )r"   locationtitlerz   r{   r|   r}   s          r#   _explain_githubzBreakage._explain_github   s)   ?4>????;++5+99;;H8HHeHHtyHH$$E$22 	3'>>c***C$$E$22 	3'>>c***C 	3 	&&&&FF 	FF 	FFF 	.!--V---r%   N)r   )
r   r   r   r   r   r   r   r   r   r    r   r   )r.   r/   r0   r   r   r1   )r6   r
   r   r   )r   r   )r   rY   r`   r/   r   r   )__name__
__module____qualname____doc____annotations__r$   r*   r-   r5   r
   ONE_LINEr:   propertyr?   rB   rE   rN   rQ   rT   rX   r^   rg   rj   rp   rr   ru   r~   r   r   r    r%   r#   r   r   !   s        EE/ / / / /$       ', 
 
 
 
 
 
" 1A0I 	: 	: 	: 	: 	: ! ! ! X!
 * * * X*
 2 2 2 X2
 	' 	' 	' X	' ' ' ' X'
 $ $ $ X$
 P P P XP $ $ $ X$ 26 A A A A A A
 /3 # # # # # # .2 3 3 3 3 3 3
 37 # # # # # # 37 # # # # # #           $   (     r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS )ParameterMovedBreakagez-Specific breakage class for moved parameters.r	   r   r   r   c                J    t                      j         d| j        j         dS N()superrX   r   r,   r"   	__class__s    r#   rX   z%ParameterMovedBreakage._relative_path   &    ''(AA4>+>AAAAr%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS Nr   r   r   r   BLUErn   r   rX   r   r,   r"   r`   bluerf   r   s       r#   rj   z$ParameterMovedBreakage._format_title   P    "*tyy$,

"''(NN4N1DNeNNNNr%   c                   dS rl   r   ri   s     r#   rr   z(ParameterMovedBreakage._format_old_value      rr%   c                   dS rl   r   ri   s     r#   ru   z(ParameterMovedBreakage._format_new_value  r   r%   r   r   )r   r   r   r   r	   PARAMETER_MOVEDr   r   r   rX   rj   rr   ru   __classcell__r   s   @r#   r   r      s         77%5D5555B B B B B XB /3 O O O O O O O O
 37       37          r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS )ParameterRemovedBreakagez/Specific breakage class for removed parameters.r	   r   r   r   c                J    t                      j         d| j        j         dS r   r   r   s    r#   rX   z'ParameterRemovedBreakage._relative_path  r   r%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       r#   rj   z&ParameterRemovedBreakage._format_title  r   r%   c                   dS rl   r   ri   s     r#   rr   z*ParameterRemovedBreakage._format_old_value  r   r%   c                   dS rl   r   ri   s     r#   ru   z*ParameterRemovedBreakage._format_new_value  r   r%   r   r   )r   r   r   r   r	   PARAMETER_REMOVEDr   r   r   rX   rj   rr   ru   r   r   s   @r#   r   r   	  s         99%7D7777B B B B B XB /3 O O O O O O O O
 37       37          r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS )ParameterChangedKindBreakagez:Specific breakage class for parameters whose kind changed.r	   r   r   r   c                J    t                      j         d| j        j         dS r   r   r   s    r#   rX   z+ParameterChangedKindBreakage._relative_path#  r   r%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       r#   rj   z*ParameterChangedKindBreakage._format_title'  r   r%   c               >    t          | j        j        j                  S r'   )r   r   r   r(   ri   s     r#   rr   z.ParameterChangedKindBreakage._format_old_value,      4>&,---r%   c               >    t          | j        j        j                  S r'   )r   r   r   r(   ri   s     r#   ru   z.ParameterChangedKindBreakage._format_new_value/  r   r%   r   r   )r   r   r   r   r	   PARAMETER_CHANGED_KINDr   r   r   rX   rj   rr   ru   r   r   s   @r#   r   r     s         DD%<D<<<<B B B B B XB /3 O O O O O O O O
 37 . . . . . . 37 . . . . . . . . . .r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS )ParameterChangedDefaultBreakagezCSpecific breakage class for parameters whose default value changed.r	   r   r   r   c                J    t                      j         d| j        j         dS r   r   r   s    r#   rX   z.ParameterChangedDefaultBreakage._relative_path8  r   r%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       r#   rj   z-ParameterChangedDefaultBreakage._format_title<  r   r%   c               4    t          | j        j                  S r'   )r   r   defaultri   s     r#   rr   z1ParameterChangedDefaultBreakage._format_old_valueA      4>)***r%   c               4    t          | j        j                  S r'   )r   r   r   ri   s     r#   ru   z1ParameterChangedDefaultBreakage._format_new_valueD  r   r%   r   r   )r   r   r   r   r	   PARAMETER_CHANGED_DEFAULTr   r   r   rX   rj   rr   ru   r   r   s   @r#   r   r   3  s         MM%?D????B B B B B XB /3 O O O O O O O O
 37 + + + + + + 37 + + + + + + + + + +r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS ) ParameterChangedRequiredBreakagez=Specific breakage class for parameters which became required.r	   r   r   r   c                J    t                      j         d| j        j         dS r   r   r   s    r#   rX   z/ParameterChangedRequiredBreakage._relative_pathM  r   r%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       r#   rj   z.ParameterChangedRequiredBreakage._format_titleQ  r   r%   c                   dS rl   r   ri   s     r#   rr   z2ParameterChangedRequiredBreakage._format_old_valueV  r   r%   c                   dS rl   r   ri   s     r#   ru   z2ParameterChangedRequiredBreakage._format_new_valueY  r   r%   r   r   )r   r   r   r   r	   PARAMETER_CHANGED_REQUIREDr   r   r   rX   rj   rr   ru   r   r   s   @r#   r   r   H  s         GG%@D@@@@B B B B B XB /3 O O O O O O O O
 37       37          r%   r   c                  |     e Zd ZU dZej        Zded<   ed fd            Z	ddd fdZ
ddddZddddZ xZS )ParameterAddedRequiredBreakagez=Specific breakage class for new parameters added as required.r	   r   r   r   c                J    t                      j         d| j        j         dS r   )r   rX   r   r,   r   s    r#   rX   z-ParameterAddedRequiredBreakage._relative_pathb  r   r%   Tr_   r`   r/   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   )r   r   rn   r   rX   r   r,   r   s       r#   rj   z,ParameterAddedRequiredBreakage._format_titlef  r   r%   c                   dS rl   r   ri   s     r#   rr   z0ParameterAddedRequiredBreakage._format_old_valuek  r   r%   c                   dS rl   r   ri   s     r#   ru   z0ParameterAddedRequiredBreakage._format_new_valuen  r   r%   r   r   )r   r   r   r   r	   PARAMETER_ADDED_REQUIREDr   r   r   rX   rj   rr   ru   r   r   s   @r#   r   r   ]  s         GG%>D>>>>B B B B B XB /3 O O O O O O O O
 37       37          r%   r   c                  ,    e Zd ZU dZej        Zded<   dS )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   r  s,         GG%9D999999r%   r   c                  H    e Zd ZU dZej        Zded<   dddd
ZddddZ	dS )ObjectRemovedBreakagez,Specific breakage class for removed objects.r	   r   Tr_   r`   r/   r   r   c                   dS rl   r   ri   s     r#   rr   z'ObjectRemovedBreakage._format_old_value}  r   r%   c                   dS rl   r   ri   s     r#   ru   z'ObjectRemovedBreakage._format_new_value  r   r%   Nr   )
r   r   r   r   r	   r[   r   r   rr   ru   r   r%   r#   r   r   x  st         66%4D444426       37        r%   r   c                  H    e Zd ZU dZej        Zded<   dddd
ZddddZ	dS )ObjectChangedKindBreakagez7Specific breakage class for objects whose kind changed.r	   r   Tr_   r`   r/   r   r   c                   | j         j        S r'   )r   r(   ri   s     r#   rr   z+ObjectChangedKindBreakage._format_old_value      ~##r%   c                   | j         j        S r'   )r   r(   ri   s     r#   ru   z+ObjectChangedKindBreakage._format_new_value  r   r%   Nr   )
r   r   r   r   r	   OBJECT_CHANGED_KINDr   r   rr   ru   r   r%   r#   r   r     st         AA%9D999926 $ $ $ $ $ $ 37 $ $ $ $ $ $ $ $r%   r   c                  ,    e Zd ZU dZej        Zded<   dS )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     s,         DD%<D<<<<<<r%   r   c                  ,    e Zd ZU dZej        Zded<   dS )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     s,         EE%=D======r%   r   c                  H    e Zd ZU dZej        Zded<   dddd
ZddddZ	dS )ClassRemovedBaseBreakagez1Specific breakage class for removed base classes.r	   r   Tr_   r`   r/   r   r   c               V    dd                     d | j        D                       z   dz   S )N[, c              3  $   K   | ]}|j         V  d S r'   rP   .0bases     r#   	<genexpr>z=ClassRemovedBaseBreakage._format_old_value.<locals>.<genexpr>  %      NNtt2NNNNNNr%   ])r   r   ri   s     r#   rr   z*ClassRemovedBaseBreakage._format_old_value  0    TYYNNt~NNNNNNQTTTr%   c               V    dd                     d | j        D                       z   dz   S )Nr   r   c              3  $   K   | ]}|j         V  d S r'   r   r   s     r#   r   z=ClassRemovedBaseBreakage._format_new_value.<locals>.<genexpr>  r   r%   r   )r   r   ri   s     r#   ru   z*ClassRemovedBaseBreakage._format_new_value  r   r%   Nr   )
r   r   r   r   r	   CLASS_REMOVED_BASEr   r   rr   ru   r   r%   r#   r   r     s         ;;%8D888826 U U U U U U 37 U U U U U U U Ur%   r   	old_classr   	new_class
seen_pathsset[str]r   Iterable[Breakage]c             #     K   dE d {V  |j         | j         k    rGt          |j                   t          | j                   k     rt          || j         |j                   V  t          | ||          E d {V  d S )Nr   r   )basesrW   r   _member_incompatibilities)r   r   r   s      r#   _class_incompatibilitiesr    s       MMMMMMM)/))c)/.B.BSEYEY.Y.Y&y)/9?SSSSS(I*UUUUUUUUUUUUr%   old_functionr   new_functionIterator[Breakage]c           	   #  $  K   d |j         D             }d |j         D             }t          j        |v }t          j        |v }t	          | j                   D ]X\  }}|j        |j         vrW|j        t          j        u r|p+|j        t          j        u o|p|j        t          j	        u o|o|}|st          ||d           V  k|j         |j                 }	|	j        r|j        st          |||	          V  |j        t          v rS|	j        t          v rE|                    |j                  }
|
|k    r%d| d|
 d|
|z
  dd}t          |||	|          V  |j        |	j        urt!          |j        t          j        u o|	j        t          j        u |j        t          j        u o|	j        t          j        u |j        t          j	        u o|	j        t"          v |	j        t          j        u o|j        t          j        uo| |	j        t          j        u o|j        t          j        uo| f          }|rt%          |||	          V  t'          |||	          }|j         o|	j         }|j        t(          vo|	j        t(          v}|r.|r,	 |j        |	j        k    r|V  C# t,          $ r |V  Y Tw xY wZ|j         D ]*}	|	j        | j         vr|	j        rt/          |d |	          V  +t1          | |          st3          || j        |j                  V  d S d S )	Nc                    g | ]	}|j         
S r   )r,   r   params     r#   
<listcomp>z/_function_incompatibilities.<locals>.<listcomp>  s    GGGeuzGGGr%   c                    h | ]	}|j         
S r   )r   r
  s     r#   	<setcomp>z._function_incompatibilities.<locals>.<setcomp>  s    CCC%5:CCCr%   zposition: from z to z (+r   )r   )
parametersr   var_positionalvar_keywordrJ   r,   r   keyword_onlypositional_onlypositional_or_keywordr   requiredr   _POSITIONALrL   r   any_POSITIONAL_KEYWORD_ONLYr   r   	_VARIADICr   	Exceptionr   _returns_are_compatibler   returns)r  r  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     GG|/FGGGOCC<+BCCCK%4C'3{B ),*A B B : :	9>!888=#==UBU yNm&CCYHYyNm&IIwN_wdw 
  N.|YMMMMM !+IN;	 	Wi&8 	W2<IVVVVV >[((Y^{-J-J'--in==II%%bIbb9bb	T]H]bbbb,\9iY`aaaaaa >// # Nm&CCt	ZgZtHtNm&@@tY^WdWtEtNm&II C!*BBNm&?? .!m.HH.--Nm&BB 0!m.KK0//! !& ! W2<IVVVVV 3<IVV$--Hi6H2H ~Y6Z9>QZ;Z 	L 	$	(999"NNN   
 ", P P	>!888Y=O80tYOOOOO"<>> b'l6JLL`aaaaaaab bs   JJ*)J*old_attributer   new_attributec              #     K   | j         |j         k    r@|j         t          || j         d          V  d S t          || j         |j                   V  d S d S )Nr   )r(   r   )r,  r-  s     r#   _attribute_incompatibilitiesr/    so      m111&/}?RT[\\\\\\\/}?RTaTghhhhhhh	 21r%   old_objObject | Aliasnew_objc             #     K   	 | j         r| j        n| }|j         r|j        n|}n1# t          $ r$ t          j        d| j        |j                   Y d S w xY wt          |||          E d {V  d S )Nz2API check: %s | %s: skip alias with unknown targetr  )r<   targetr   r   debugr4   _type_based_yield)r0  r2  r   
old_member
new_members        r#   _alias_incompatibilitiesr9  
  s      '.'7DW^^W
'.'7DW^^W

   I7<Y`Yefff !ZJOOOOOOOOOOOOs    % *AAr  set[str] | Nonec             #    K   |t                      n|}| j                                        D ]\  }}|j        st	          j        d| j        |           (t	          j        d| j        |           	 |j        |         }t          |||          E d {V  j# t          $ r+ |j	        s|j
        s|j        rt          ||d           V  Y w xY wd S )Nz(API check: %s.%s: skip non-public objectzAPI check: %s.%sr  )setall_membersitems	is_publicr   r5  r4   r6  KeyErrorr<   	is_moduler   )r0  r2  r   r,   r7  r8  s         r#   r  r    s$      %,*J#/5577 X Xj# 	LCW\SWXXX't<<<	X ,T2J
 )ZJWWWWWWWWWWW	  	J 	J 	J' JJ,@ JZEY J+J
DIIIII	JX Xs   2B2CCr7  r8  c             #    K   | j         |v rd S |                    | j                    | j        s|j        rt          | ||          E d {V  d S |j        | j        k    rt          || j        |j                  V  d S | j        rt          | ||          E d {V  d S | j        rt          | ||          E d {V  d S | j
        rt          | |          E d {V  d S | j        rt          | |          E d {V  d S d S )Nr  )r4   addr<   r9  r   r   rA  r  is_classr  is_functionr+  is_attributer/  )r7  r8  r   s      r#   r6  r6  /  s      *$$NN:?### Hj1 H ,!
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	

 
JO	+	+'
JOZ_UUUUUUU		 H,!
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	

 
	 	H+!
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	

 
	 H.z:FFFFFFFFFFF		  H/
JGGGGGGGGGGGH Hr%   r/   c                    | j         dS |j         dS t          j        t                    5  |j         | j         k    r	 d d d            dS 	 d d d            n# 1 swxY w Y   dS )NTF)r  
contextlibsuppressAttributeError)r  r  s     r#   r  r  T  s     #t#u		^	,	,  <#777       7              
 4s   AAAc              #  6   K   t          | |          E d{V  dS )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  )r0  r2  s     r#   find_breaking_changesrL  l  s0      . )':::::::::::r%   )r   r   r   r   r   r   r   r   )r  r   r  r   r   r  )r,  r   r-  r   r   r   )r0  r1  r2  r1  r   r   r   r   )r0  r1  r2  r1  r   r:  r   r  )r7  r1  r8  r1  r   r   r   r  )r  r   r  r   r   r/   )r0  r1  r2  r1  r   r  )?
__future__r   rH  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/  r9  r  r6  r  object	_sentinelrL  r   r%   r#   <module>r[     s   # " " " " "           % % % % % % % %                 N N N N N N N N N N 3 3 3 3 3 3 ( ( ( ( ( ( ! ! ! ! ! ! I22222222HHHHHHHHHHHHHHi68[\]]9m0-2UVWW$9m&C]E_%`aa I}3]5NOPP	P P P P P P P Pf    X   *    x   *. . . . .8 . . .*+ + + + +h + + +*    x   *    X   *: : : : : : : :	 	 	 	 	H 	 	 		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$= = = = =8 = = => > > > >H > > >	U 	U 	U 	U 	Ux 	U 	U 	U	V 	V 	V 	VHb Hb Hb HbVi i i iP P P P( #'	X X X X X X*"H "H "H "HJ   * FHH	; ; ; ; ; ;r%   