
    %jd                    4   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 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          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&          Z. G d d e&          Z/ G d! d"e&          Z0 G d# d$e&          Z1 G d% d&e&          Z2dEd.Z3dFd3Z4dGd7Z5dHd;Z6dd<dId>Z7dJdAZ8dKdCZ9 e:            Z;dLdDZ<dS )M    )annotationsN)Path)TYPE_CHECKINGAny)BreakageKindExplanationStyleParameterKind)AliasResolutionError)_WORKTREE_PREFIX)logger)IterableIterator)Alias	AttributeClassFunctionObjectc                      e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'S )(_ANSIz[30mz[31mz[32mz[33mz[34mz[35mz[36mz[37mz[39mz[90mz[91mz[92mz[93mz[94mz[95mz[96mz[97mz[40mz[41mz[42mz[43mz[44mz[45mz[46mz[47mz[49mz[100mz[101mz[102mz[103mz[104mz[105mz[106mz[107mz[1mz[2mz[22mz[0mN))__name__
__module____qualname__FG_BLACKFG_REDFG_GREEN	FG_YELLOWFG_BLUE
FG_MAGENTAFG_CYANFG_WHITEFG_RESETFG_LIGHTBLACK_EXFG_LIGHTRED_EXFG_LIGHTGREEN_EXFG_LIGHTYELLOW_EXFG_LIGHTBLUE_EXFG_LIGHTMAGENTA_EXFG_LIGHTCYAN_EXFG_LIGHTWHITE_EXBG_BLACKBG_REDBG_GREEN	BG_YELLOWBG_BLUE
BG_MAGENTABG_CYANBG_WHITEBG_RESETBG_LIGHTBLACK_EXBG_LIGHTRED_EXBG_LIGHTGREEN_EXBG_LIGHTYELLOW_EXBG_LIGHTBLUE_EXBG_LIGHTMAGENTA_EXBG_LIGHTCYAN_EXBG_LIGHTWHITE_EXBRIGHTDIMNORMAL	RESET_ALL     ]/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/diff.pyr   r       s        HFHIGJGHH!N!" O# O!HFHIGJGHH" N"#!O$!O"F
CFIIIr@   r   c                     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)rF   rG   rH   rI   )selfrF   rG   rH   rI   s        rA   __init__zBreakage.__init__O   s/     1""*..r@   c                    | j         j        S N)rD   valuerN   s    rA   __str__zBreakage.__str__a   s    yr@   c                    | j         j        S rQ   )rD   namerS   s    rA   __repr__zBreakage.__repr__d   s    y~r@   F)fullrX   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.
        )rD   object_pathrG   rH   )rD   rF   pathrG   rH   )rN   rX   rZ   s      rA   as_dictzBreakage.as_dictg   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_)getattrrR   )rN   r`   s     rA   explainzBreakage.explainx   s'     8wt66677999r@   r   c                T    | j         j        r| j         j        j        S | j         j        S rQ   )rF   is_aliasparentfilepathrS   s    rA   	_filepathzBreakage._filepath   s'    8 	,8?++x  r@   c                T    | j         j        r| j         j        j        S | j         j        S rQ   )rF   rf   rg   relative_filepathrS   s    rA   _relative_filepathzBreakage._relative_filepath   s'    8 	58?44x))r@   c                T    | j         j        r| j         j        j        S | j         j        S rQ   )rF   rf   rg   relative_package_filepathrS   s    rA   _relative_package_filepathz#Breakage._relative_package_filepath   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   )rl   is_absoluteparts	enumerate
startswithr   r   )rN   rs   indexparts       rA   	_locationzBreakage._location   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 rQ   )rF   rf   r^   canonical_pathrS   s    rA   _canonical_pathzBreakage._canonical_path   s$    8 	!8= x&&r@   c                h    | j         j        r| j         j        j        j        S | j         j        j        S rQ   )rF   rf   rg   moduler^   rS   s    rA   _module_pathzBreakage._module_path   s,    8 	/8?)..x##r@   c                N    | j         t          | j                  dz   d          pdS )N   z<module>)r{   lenr~   rS   s    rA   _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   )	rD   r   OBJECT_REMOVEDrl   rx   rF   rf   alias_linenolinenorS   s    rA   _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 )NrE   :)r   r;   r>   rx   r   )rN   r   brightresets       rA   _format_locationzBreakage._format_location   sD    !'/R#)1r@$.@%@@$,@@@r@   c                   | j         S rQ   )r   rN   r   s     rA   _format_titlezBreakage._format_title   s    ""r@   c               f    |rt           j        nd}|rt           j        nd}| | j        j         | S NrE   )r   r   r!   rD   rR   )rN   r   yellowr   s       rA   _format_kindzBreakage._format_kind   s<    $*2"(0b2$)/25222r@   c               *    t          | j                  S rQ   )rJ   rG   r   s     rA   _format_old_valuezBreakage._format_old_value       4>"""r@   c               *    t          | j                  S rQ   )rJ   rH   r   s     rA   _format_new_valuezBreakage._format_new_value   r   r@   c                   |                                   d|                                  d|                                  }|                                 }|                                 }|r
|r| d| }n|r|}n|r|}nd}|r| d| S |S )N:  -> rE   )r   r   r   r   r   rN   explanationoldnewchanges        rA   _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 )Nr   r   z  Old: z  New: z  Details: rE   
)r   r   r   r   r   appendrI   join)rN   linesrD   r   r   s        rA   _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`r   rE   r   )r   rD   rR   r   r   r   s        rA   _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   r   rE   r   )rx   r   r   rD   rR   r   r   )rN   locationtitler   r   r   r   s          rA   _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)rE   )
rF   r   rG   r   rH   r   rI   rJ   rK   rL   rK   rJ   )rX   rY   rZ   r   rK   r[   )r`   r   rK   rJ   )rK   r   )rK   r   r   rY   rK   rJ   )r   r   r   __doc____annotations__rO   rT   rW   r_   r   ONE_LINErd   propertyri   rl   ro   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r?   r@   rA   rC   rC   I   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@   rC   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   rD   rK   rJ   c                J    t                      j         d| j        j         dS N()superr   rG   rV   rN   	__class__s    rA   r   z%ParameterMovedBreakage._relative_path!  &    ''(AA4>+>AAAAr@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS NrE   r   r   r   r   r!   r   r   rG   rV   rN   r   bluer   r   s       rA   r   z$ParameterMovedBreakage._format_title%  P     &.u}}B"(0b''(NN4N1DNeNNNNr@   c                   dS r   r?   r   s     rA   r   z(ParameterMovedBreakage._format_old_value*      rr@   c                   dS r   r?   r   s     rA   r   z(ParameterMovedBreakage._format_new_value-  r   r@   r   r   )r   r   r   r   r   PARAMETER_MOVEDrD   r   r   r   r   r   r   __classcell__r   s   @rA   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   rD   rK   rJ   c                J    t                      j         d| j        j         dS r   r   r   s    rA   r   z'ParameterRemovedBreakage._relative_path6  r   r@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       rA   r   z&ParameterRemovedBreakage._format_title:  r   r@   c                   dS r   r?   r   s     rA   r   z*ParameterRemovedBreakage._format_old_value?  r   r@   c                   dS r   r?   r   s     rA   r   z*ParameterRemovedBreakage._format_new_valueB  r   r@   r   r   )r   r   r   r   r   PARAMETER_REMOVEDrD   r   r   r   r   r   r   r   r   s   @rA   r   r   1  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   rD   rK   rJ   c                J    t                      j         d| j        j         dS r   r   r   s    rA   r   z+ParameterChangedKindBreakage._relative_pathK  r   r@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       rA   r   z*ParameterChangedKindBreakage._format_titleO  r   r@   c               >    t          | j        j        j                  S rQ   )rJ   rG   rD   rR   r   s     rA   r   z.ParameterChangedKindBreakage._format_old_valueT      4>&,---r@   c               >    t          | j        j        j                  S rQ   )rJ   rH   rD   rR   r   s     rA   r   z.ParameterChangedKindBreakage._format_new_valueW  r   r@   r   r   )r   r   r   r   r   PARAMETER_CHANGED_KINDrD   r   r   r   r   r   r   r   r   s   @rA   r   r   F  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   rD   rK   rJ   c                J    t                      j         d| j        j         dS r   r   r   s    rA   r   z.ParameterChangedDefaultBreakage._relative_path`  r   r@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       rA   r   z-ParameterChangedDefaultBreakage._format_titled  r   r@   c               4    t          | j        j                  S rQ   )rJ   rG   defaultr   s     rA   r   z1ParameterChangedDefaultBreakage._format_old_valuei      4>)***r@   c               4    t          | j        j                  S rQ   )rJ   rH   r   r   s     rA   r   z1ParameterChangedDefaultBreakage._format_new_valuel  r   r@   r   r   )r   r   r   r   r   PARAMETER_CHANGED_DEFAULTrD   r   r   r   r   r   r   r   r   s   @rA   r   r   [  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   rD   rK   rJ   c                J    t                      j         d| j        j         dS r   r   r   s    rA   r   z/ParameterChangedRequiredBreakage._relative_pathu  r   r@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   r   r   s       rA   r   z.ParameterChangedRequiredBreakage._format_titley  r   r@   c                   dS r   r?   r   s     rA   r   z2ParameterChangedRequiredBreakage._format_old_value~  r   r@   c                   dS r   r?   r   s     rA   r   z2ParameterChangedRequiredBreakage._format_new_value  r   r@   r   r   )r   r   r   r   r   PARAMETER_CHANGED_REQUIREDrD   r   r   r   r   r   r   r   r   s   @rA   r   r   p  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   rD   rK   rJ   c                J    t                      j         d| j        j         dS r   )r   r   rH   rV   r   s    rA   r   z-ParameterAddedRequiredBreakage._relative_path  r   r@   Tr   r   rY   c                   |rt           j        nd}|rt           j        nd}t                      j         d| | j        j         | dS r   )r   r   r!   r   r   rH   rV   r   s       rA   r   z,ParameterAddedRequiredBreakage._format_title  r   r@   c                   dS r   r?   r   s     rA   r   z0ParameterAddedRequiredBreakage._format_old_value  r   r@   c                   dS r   r?   r   s     rA   r   z0ParameterAddedRequiredBreakage._format_new_value  r   r@   r   r   )r   r   r   r   r   PARAMETER_ADDED_REQUIREDrD   r   r   r   r   r   r   r   r   s   @rA   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   rD   N)r   r   r   r   r   RETURN_CHANGED_TYPErD   r   r?   r@   rA   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   rD   Tr   r   rY   rK   rJ   c                   dS r   r?   r   s     rA   r   z'ObjectRemovedBreakage._format_old_value  r   r@   c                   dS r   r?   r   s     rA   r   z'ObjectRemovedBreakage._format_new_value  r   r@   Nr   )
r   r   r   r   r   r   rD   r   r   r   r?   r@   rA   r   r     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   rD   Tr   r   rY   rK   rJ   c                   | j         j        S rQ   )rG   rR   r   s     rA   r   z+ObjectChangedKindBreakage._format_old_value      ~##r@   c                   | j         j        S rQ   )rH   rR   r   s     rA   r   z+ObjectChangedKindBreakage._format_new_value  r  r@   Nr   )
r   r   r   r   r   OBJECT_CHANGED_KINDrD   r   r   r   r?   r@   rA   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   rD   N)r   r   r   r   r   ATTRIBUTE_CHANGED_TYPErD   r   r?   r@   rA   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   rD   N)r   r   r   r   r   ATTRIBUTE_CHANGED_VALUErD   r   r?   r@   rA   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   rD   Tr   r   rY   rK   rJ   c               V    dd                     d | j        D                       z   dz   S )N[, c              3  $   K   | ]}|j         V  d S rQ   rz   .0bases     rA   	<genexpr>z=ClassRemovedBaseBreakage._format_old_value.<locals>.<genexpr>  %      NNtt2NNNNNNr@   ])r   rG   r   s     rA   r   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 rQ   r  r  s     rA   r  z=ClassRemovedBaseBreakage._format_new_value.<locals>.<genexpr>  r  r@   r  )r   rH   r   s     rA   r   z*ClassRemovedBaseBreakage._format_new_value  r  r@   Nr   )
r   r   r   r   r   CLASS_REMOVED_BASErD   r   r   r   r?   r@   rA   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]rK   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  )basesr   r  _member_incompatibilities)r  r  r  s      rA   _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?   )rV   r  params     rA   
<listcomp>z/_function_incompatibilities.<locals>.<listcomp>  s    GGGeuzGGGr@   c                    h | ]	}|j         
S r?   )rD   r+  s     rA   	<setcomp>z._function_incompatibilities.<locals>.<setcomp>  s    CCC%5:CCCr@   zposition: from z to z (+r   )rI   )
parametersr	   var_positionalvar_keywordrt   rV   rD   keyword_onlypositional_onlypositional_or_keywordr   requiredr   _POSITIONALrv   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_indexrI   incompatible_kindbreakagenon_requirednon_variadics                   rA   _function_incompatibilitiesrL    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   )rR   r	  )rM  rN  s     rA   _attribute_incompatibilitiesrP  )  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"  )rf   targetr
   r   debugr^   _type_based_yield)rQ  rS  r  
old_member
new_members        rA   _alias_incompatibilitiesrZ  2  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   rV  r^   rW  KeyErrorrf   	is_moduler   )rQ  rS  r  rV   rX  rY  s         rA   r$  r$  B  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rX  rY  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"  )r^   addrf   rZ  rD   r   rb  r$  is_classr%  is_functionrL  is_attributerP  )rX  rY  r  s      rA   rW  rW  W  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@   rY   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     rA   r=  r=  |  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$  )rQ  rS  s     rA   find_breaking_changesrm    s0      . )':::::::::::r@   )r  r   r  r   r  r  rK   r   )r&  r   r'  r   rK   r(  )rM  r   rN  r   rK   r   )rQ  rR  rS  rR  r  r  rK   r   )rQ  rR  rS  rR  r  r[  rK   r(  )rX  rR  rY  rR  r  r  rK   r(  )r&  r   r'  r   rK   rY   )rQ  rR  rS  rR  rK   r(  )=
__future__r   ri  pathlibr   typingr   r   griffe._internal.enumerationsr   r   r	   griffe._internal.exceptionsr
   griffe._internal.gitr   griffe._internal.loggerr   collections.abcr   r   griffe._internal.modelsr   r   r   r   r   	frozensetr5  r6  r8  r4  _KEYWORDr:  r2  r3  r;  r   rC   r   r   r   r   r   r   r   r   r   r  r	  r  r%  rL  rP  rZ  r$  rW  r=  object	_sentinelrm  r?   r@   rA   <module>r{     s   # " " " " "           % % % % % % % % W W W W W W W W W W < < < < < < 1 1 1 1 1 1 * * * * * * R22222222QQQQQQQQQQQQQQi68[\]]9m0-2UVWW$9m&C]E_%`aa I}3]5NOPP	& & & & & & & &R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@   