
    1yi                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ  G d de      Zd	 Zd
 Zd Zej"                  eej$                  eej&                   e
eej"                        ej(                   e
eej"                        ej*                   e
eej$                        iZd Zej"                  fdZej"                  ddedededefdZy)    )Counter)Mapping)deepcopy)Enum)reducepartial)MutableMappingc                        e Zd ZdZdZdZdZdZy)Strategyr               N)__name__
__module____qualname__REPLACEADDITIVETYPESAFETYPESAFE_REPLACETYPESAFE_ADDITIVE     U/var/www/html/content_weaver/venv/lib/python3.12/site-packages/mergedeep/mergedeep.pyr   r   	   s    GHHr   r   c                     t        | |   t              r&t        ||   t              rt        | |   ||          y t        ||         | |<   y N)
isinstancer   
_deepmerger   destinationsourcekeys      r   _handle_merge_replacer#      sF    +c"G,F3K1Q;s#VC[1 $F3K0Cr   c                 f   t        | |   t              r4t        ||   t              r!| |   j                  t        ||                y t        | |   t              r4t        ||   t              r!| |   j                  t        ||                y t        | |   t              r+t        ||   t              r| |   t        ||         z   | |<   y t        | |   t              r4t        ||   t              r!| |   j                  t        ||                y t        t        j                     | ||       y r   )r   listextendr   setupdatetupler   _handle_merger   r   r   s      r   _handle_merge_additiver+      s    +c"D)jd.KC 56	K$c	*z&+s/KC 56	K$e	,F3K1O&s+hvc{.CCC	K$g	.:fSk73SC 56h&&'VSAr   c           	          t        | |         t        ||         ur-t        dt        | |          dt        ||          d| d      t        |   | ||       y )Nzdestination type: z differs from source type: z for key: "")type	TypeErrorr*   )r    r!   r"   strategys       r   _handle_merge_typesafer1   1   ss    KT&+%66 k#&6!7 88STXY_`cYdTeSffqruqvvwx
 	
 	hVS9r   r0   c                     t        | t              xr t        |t              }t        | t              xr t        |t              }|xr | S r   )r   r   r   )abboth_mappingboth_counters       r   _is_recursive_merger8   D   s@    a)DjG.DLa)DjG.DL,,,r   c                     |D ]e  }|| v rNt        | |   ||         rt        | |   ||   |       -| |   ||   u r8t        j                  |      | ||       Ut	        ||         | |<   g | S r   )r8   r   r*   getr   )dstsrcr0   r"   s       r   r   r   J   s     *#:"3s8SX63s8SXx8SSX%!!(+Cc:  C)CH* Jr   r    sourcesr0   returnc                :    t        t        t        |      ||       S )u   
    A deep merge function for 🐍.

    :param destination: The destination mapping.
    :param sources: The source mappings.
    :param strategy: The merge strategy.
    :return:
    r2   )r   r   r   )r    r0   r=   s      r   merger@   [   s     '*x8';OOr   N)collectionsr   collections.abcr   copyr   enumr   	functoolsr   r   typingr	   r   r#   r+   r1   r   r   r   r   r   r*   r8   r   r@   r   r   r   <module>rG      s     #   % !
t 
1B$: +-w5@P@PQw'=HXHXY(>IZIZ [- #+"2"2 " PXO_O_ 	P~ 	P 	PH 	Pdr 	Pr   