o
    tBhQ                     @   s  d dl mZ d dlmZmZmZmZmZmZm	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& ddl'm(Z( dd	l)m)Z) g d
Z*G dd deZ+G dd deZ,G dd deZ-G dd deZ.ee-e.f Z/dededee- fddZ0dededee. fddZ1dededee/ fddZ2dededee/ fddZ3dededee/ fddZ4d eeef d!eeef dee/ fd"d#Z5d ed!edee/ fd$d%Z6d ed!edee/ fd&d'Z7d eeef d!eeef dee/ fd(d)Z8d eeef d!eeef dee/ fd*d+Z9d eeef d,e:d-ed.edee/ f
d/d0Z;d ed!ede<fd1d2Z=d ed!ede<fd3d4Z>d5ede:fd6d7Z?d8ed5ede:fd9d:Z@G d;d< d<eZAd=ed>edeAfd?d@ZBG dAdB dBeZCdCedDedeCfdEdFZDdGS )H    )Enum)Any
CollectionDictList
NamedTupleUnioncast   )	print_ast)inspect	Undefined)GraphQLEnumTypeGraphQLFieldGraphQLListGraphQLNamedTypeGraphQLNonNullGraphQLInputTypeGraphQLInterfaceTypeGraphQLObjectTypeGraphQLSchemaGraphQLTypeGraphQLUnionTypeis_enum_typeis_input_object_typeis_interface_typeis_list_typeis_named_typeis_non_null_typeis_object_typeis_required_argumentis_required_input_fieldis_scalar_typeis_specified_scalar_typeis_union_type)sort_value_node   )ast_from_value)BreakingChangeBreakingChangeTypeDangerousChangeDangerousChangeTypefind_breaking_changesfind_dangerous_changesc                   @   sL   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S )r)   
                        (   )   *   2   3   4   5   6   N)__name__
__module____qualname__TYPE_REMOVEDTYPE_CHANGED_KINDTYPE_REMOVED_FROM_UNIONVALUE_REMOVED_FROM_ENUMREQUIRED_INPUT_FIELD_ADDEDIMPLEMENTED_INTERFACE_REMOVEDFIELD_REMOVEDFIELD_CHANGED_KINDREQUIRED_ARG_ADDEDARG_REMOVEDARG_CHANGED_KINDDIRECTIVE_REMOVEDDIRECTIVE_ARG_REMOVEDREQUIRED_DIRECTIVE_ARG_ADDEDDIRECTIVE_REPEATABLE_REMOVEDDIRECTIVE_LOCATION_REMOVED rQ   rQ   ~/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/utilities/find_breaking_changes.pyr)   ,   s"    r)   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )r+   <   =   >   ?   @   A   N)	r>   r?   r@   VALUE_ADDED_TO_ENUMTYPE_ADDED_TO_UNIONOPTIONAL_INPUT_FIELD_ADDEDOPTIONAL_ARG_ADDEDIMPLEMENTED_INTERFACE_ADDEDARG_DEFAULT_VALUE_CHANGErQ   rQ   rQ   rR   r+   ?   s    r+   c                   @      e Zd ZU eed< eed< dS )r(   typedescriptionN)r>   r?   r@   r)   __annotations__strrQ   rQ   rQ   rR   r(   H      
 r(   c                   @   r_   )r*   r`   ra   N)r>   r?   r@   r+   rb   rc   rQ   rQ   rQ   rR   r*   M   rd   r*   
old_schema
new_schemareturnc                 C      dd t | |D S )zFind breaking changes.

    Given two schemas, returns a list containing descriptions of all the types of
    breaking changes covered by the other functions down below.
    c                 S      g | ]
}t |jtr|qS rQ   )
isinstancer`   r)   .0changerQ   rQ   rR   
<listcomp>]       
z)find_breaking_changes.<locals>.<listcomp>find_schema_changesre   rf   rQ   rQ   rR   r,   U      r,   c                 C   rh   )zFind dangerous changes.

    Given two schemas, returns a list containing descriptions of all the types of
    potentially dangerous changes covered by the other functions down below.
    c                 S   ri   rQ   )rj   r`   r+   rk   rQ   rQ   rR   rn   l   ro   z*find_dangerous_changes.<locals>.<listcomp>rp   rr   rQ   rQ   rR   r-   d   rs   r-   c                 C   s   t | |t| | S N)find_type_changesfind_directive_changesrr   rQ   rQ   rR   rq   s   s   
rq   c                 C   s$  g }t | j|j}|jD ]}|ttj|j d q|jD ]p\}}t	|j
|j
}|j D ]\}}	t|	rH|ttjd| d|j d q/|jD ]}|ttj| d|j d qL|jrs|jss|ttjd|j d |jD ]}
|
|jvr|ttj|
j d|j d qvq|S )N was removed.A required arg z on directive  was added.z was removed from .z!Repeatable flag was removed from )	list_diff
directivesremovedappendr(   r)   rL   name	persisted	dict_diffargsaddeditemsr    rN   rM   is_repeatablerO   	locationsrP   )re   rf   schema_changesdirectives_diff	directiveold_directivenew_directive	args_diffarg_namenew_arglocationrQ   rQ   rR   rv   {   s\   



	rv   c                 C   sp  g }t | j|j}|j D ]\}}|ttjt|r!d| dn| d q|j	 D ]\}\}}t
|rEt
|rE|t|| q.t|rVt|rV|t|| q.t|rgt|rg|t|| q.t|rt|r|t|| |t|| q.t|rt|r|t|| |t|| q.|j|jur|ttj| dt| dt| d q.|S )NzStandard scalar z2 was removed because it is not referenced anymore.rw   z changed from  to rz   )r   type_mapr}   r   r~   r(   r)   rA   r#   r   r   extendfind_enum_type_changesr$   find_union_type_changesr   find_input_object_type_changesr   find_field_changes#find_implemented_interfaces_changesr   	__class__rB   type_kind_name)re   rf   r   
types_diff	type_nameold_typenew_typerQ   rQ   rR   ru      sN   ru   r   r   c                 C   s   g }t | j|j}|j D ]+\}}t|r(|ttjd| d| j	 d q|t
tjd| d| j	 d q|jD ]}|ttj| j	 d| d q=|j D ]'\}\}}t|j|j}|s||ttj| j	 d| d|j d|j d qU|S )	NzA required field z on input type ry   zAn optional field rz   rw    changed type from r   )r   fieldsr   r   r!   r~   r(   r)   rE   r   r*   r+   r[   r}   rG   r   2is_change_safe_for_input_object_field_or_field_argr`   rH   )r   r   r   fields_diff
field_name	new_field	old_fieldis_saferQ   rQ   rR   r      sX   
r   c              	   C   sr   g }t | j|j}|jD ]}|ttj|j d| j d q|jD ]}|t	t
j|j d| j d q#|S )Nz was added to union type rz   z was removed from union type )r{   typesr   r~   r*   r+   rZ   r   r}   r(   r)   rC   )r   r   r   possible_types_diffpossible_typerQ   rQ   rR   r     s"   

r   c              	   C   sn   g }t | j|j}|jD ]}|ttj| d| j d q|jD ]}|t	t
j| d| j d q"|S )Nz was added to enum type rz   z was removed from enum type )r   valuesr   r~   r*   r+   rY   r   r}   r(   r)   rD   )r   r   r   values_diff
value_namerQ   rQ   rR   r   ,  s"   

r   c              	   C   sr   g }t | j|j}|jD ]}|ttj|j d| j d q|jD ]}|t	t
j| j d|j d q#|S )Nz$ added to interfaces implemented by rz   z  no longer implements interface )r{   
interfacesr   r~   r*   r+   r]   r   r}   r(   r)   rF   )r   r   r   interfaces_diff	interfacerQ   rQ   rR   r   E  s"   

r   c                 C   s   g }t | j|j}|jD ]}|ttj| j d| d q|j	 D ]1\}\}}|
t| ||| t|j|j}|sU|ttj| j d| d|j d|j d q$|S )Nrz   rw   r   r   )r   r   r}   r~   r(   r)   rG   r   r   r   r   find_arg_changes,is_change_safe_for_object_or_interface_fieldr`   rH   )r   r   r   r   r   r   r   r   rQ   rQ   rR   r   _  s:   
r   r   r   r   c                 C   s  g }t |j|j}|jD ]}|ttj| j d| d| d q|j	 D ]t\}\}}t
|j|j}	|	sR|ttj| j d| d| d|j d|j d
 q'|jtur|jtu rp|ttj| j d| d| d q't|j|j}
t|j|j}|
|kr|ttj| j d| d| d|
 d| d
 q'|j	 D ]1\}}t|r|ttjd| d	| j d| d
 q|ttjd| d	| j d| d
 q|S )Nrz   z arg rw   z has changed type from r   z defaultValue was removed.z has changed defaultValue from rx   z on ry   zAn optional arg )r   r   r}   r~   r(   r)   rJ   r   r   r   r   r`   rK   default_valuer   r*   r+   r^   stringify_valuer   r    rI   r\   )r   r   r   r   r   r   r   old_argr   r   old_value_strnew_value_strrQ   rQ   rR   r     s   


	r   c                 C   s   t | r"t |ottt| jtt|jp!t|o!t| tt|jS t| r7t|o6ttt| jtt|jS t|oFtt| j	tt|j	kpSt|oSt| tt|jS rt   )
r   r   r	   r   of_typer   r   r   r   r   r   r   rQ   rQ   rR   r     s<   

	

r   c                 C   s   t | rt |ottt| jtt|jS t| r8t|o)ttt| jtt|jp7t| o7ttt| j|S t|oGtt| j	tt|j	kS rt   )
r   r   r	   r   r   r   r   r   r   r   r   rQ   rQ   rR   r     s2   


	

r   type_c                 C   sZ   t | rdS t| rdS t| rdS t| rdS t| rdS t| r$dS tdtt )Nza Scalar typezan Object typezan Interface typeza Union typezan Enum typezan Input typezUnexpected type )	r"   r   r   r$   r   r   	TypeErrorr   r`   )r   rQ   rQ   rR   r     s   r   valuec                 C   s0   t | |}|d u rtdt|  tt|S )NzInvalid value: )r'   r   r   r   r%   )r   r   astrQ   rQ   rR   r   -  s   
r   c                   @   *   e Zd ZU dZeed< eed< eed< dS )ListDiffz3Tuple with added, removed and persisted list items.r   r}   r   N)r>   r?   r@   __doc__r   rb   rQ   rQ   rQ   rR   r   4  
   
 r   old_listnew_listc           	      C   s   g }g }g }dd | D }dd |D }| D ]}| |j}|r(|||g q|| q|D ]}|j|vr<|| q0t|||S )z1Get differences between two lists of named items.c                 S   s   h | ]}|j qS rQ   r   rl   itemrQ   rQ   rR   	<setcomp>B  s    zlist_diff.<locals>.<setcomp>c                 S   s   i | ]}|j |qS rQ   r   r   rQ   rQ   rR   
<dictcomp>C  s    zlist_diff.<locals>.<dictcomp>)getr   r~   r   )	r   r   r   r   r}   old_setnew_mapold_itemnew_itemrQ   rQ   rR   r{   <  s   

r{   c                   @   r   )DictDiffz5Tuple with added, removed and persisted dict entries.r   r}   r   N)r>   r?   r@   r   r   rb   rQ   rQ   rQ   rR   r   S  r   r   old_dictnew_dictc           	      C   sp   i }i }i }|   D ]\}}||}|r||g||< q
|||< q
|  D ]\}}|| vr1|||< q%t|||S )z"Get differences between two dicts.)r   r   r   )	r   r   r   r}   r   old_namer   r   new_namerQ   rQ   rR   r   [  s   

r   N)Eenumr   typingr   r   r   r   r   r   r	   languager   pyutilsr   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$   utilities.sort_value_noder%   r'   __all__r)   r+   r(   r*   Changer,   r-   rq   rv   ru   r   r   r   r   r   rc   r   boolr   r   r   r   r   r{   r   r   rQ   rQ   rQ   rR   <module>   s    $d
	



7
0


1







"

M
)
$