
    ̆h                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  S SKJr   " S S\5      rS	 rS
 rS r\R"                  \\R$                  \\R&                  \
" \\R"                  S9\R(                  \
" \\R"                  S9\R*                  \
" \\R$                  S90rS r\R"                  4S jr\R"                  S.S\S\S\S\4S jjrg)    )Counter)Mapping)deepcopy)Enum)reducepartial)MutableMappingc                   (    \ rS rSrSrSrSrSrSrSr	g)	Strategy	   r                N)
__name__
__module____qualname____firstlineno__REPLACEADDITIVETYPESAFETYPESAFE_REPLACETYPESAFE_ADDITIVE__static_attributes__r       K/opt/services/DDDS/venv/lib/python3.13/site-packages/mergedeep/mergedeep.pyr   r   	   s    GHHr   r   c                     [        X   [        5      (       a(  [        X   [        5      (       a  [        X   X   5        g [        X   5      X'   g N)
isinstancer   
_deepmerger   destinationsourcekeys      r   _handle_merge_replacer&      s@    +"G,,FK1Q1Q;#V[1 $FK0r   c                    [        X   [        5      (       a6  [        X   [        5      (       a  X   R                  [        X   5      5        g [        X   [        5      (       a6  [        X   [        5      (       a  X   R                  [        X   5      5        g [        X   [        5      (       a,  [        X   [        5      (       a  X   [        X   5      -   X'   g [        X   [        5      (       a6  [        X   [        5      (       a  X   R                  [        X   5      5        g [        [        R                     " XU5        g r   )r    listextendr   setupdatetupler   _handle_merger   r   r"   s      r   _handle_merge_additiver.      s    +"D))jd.K.K 56	K$c	*	*z&+s/K/K 56	K$e	,	,FK1O1O&+hv{.CC	K$g	.	.:fk73S3S 56h&&'SAr   c           	          [        X   5      [        X   5      La+  [        S[        X   5       S[        X   5       SU S35      e[        U   " XU5        g )Nzdestination type: z differs from source type: z for key: "")type	TypeErrorr-   )r#   r$   r%   strategys       r   _handle_merge_typesafer4   1   sh    KT&+%66 k&6!7 88STXY_YdTeSffqruqvvwx
 	
 	hS9r   r3   c                     [        U [        5      =(       a    [        U[        5      n[        U [        5      =(       a    [        U[        5      nU=(       a    U(       + $ r   )r    r   r   )abboth_mappingboth_counters       r   _is_recursive_merger;   D   s@    a)DjG.DLa)DjG.DL,,,r   c                     U Hh  nX0;   aQ  [        X   X   5      (       a  [        X   X   U5        M0  X   X   L a  M;  [        R                  U5      " XU5        MY  [	        X   5      X'   Mj     U $ r   )r;   r!   r-   getr   )dstsrcr3   r%   s       r   r!   r!   J   sm    :"38SX6638SXx8SX%!!(+Cc:  )CH  Jr   r#   sourcesr3   returnc                2    [        [        [        US9X 5      $ )u   
A deep merge function for 🐍.

:param destination: The destination mapping.
:param sources: The source mappings.
:param strategy: The merge strategy.
:return:
r5   )r   r   r!   )r#   r3   r@   s      r   mergerC   [   s     '*x8'OOr   N)collectionsr   collections.abcr   copyr   enumr   	functoolsr   r   typingr	   r   r&   r.   r4   r   r   r   r   r   r-   r;   r!   rC   r   r   r   <module>rJ      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   