
    ؄_                     d    d Z ddlmZ ddlmZ ddlmZ ddlmZ d Zd Zd Zd	 Z	d
 Z
d Zd ZdS )zgprivate module containing functions used for copying data
between instances based on join conditions.

   )
attributes)exc)util   c           
      \   | j         }|j         }|D ]\  }	}
	 |j        |	         }| j        |j                 j                            | |t          j                  }n0# t          j	        $ r}t          d||	||
|           Y d }~nd }~ww xY w	 |j        |
         }|j        |j                 j                            |||d            n0# t          j	        $ r}t          d||	||
|           Y d }~nd }~ww xY w|r0|	j        r)|
j        r"|
                    |	          rd|j        d||
f<   d S )NFTpk_cascaded)dict_columntopropertymanagerkeyimplgetr   PASSIVE_OFFr   UnmappedColumnError_raise_col_to_propsetprimary_key
references)sourcesource_mapperdestdest_mappersynchronize_pairs	uowcommitflag_cascaded_pkssource_dict	dest_dictlrpropvalueerrs                 X/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/orm/sync.pypopulater$      s    +K	I! B B1	M 215DN48,155Z%; EE & 	M 	M 	MumQQLLLLLLLL	M	L03DL"'++D)UDIIII& 	L 	L 	Lt]A{AsKKKKKKKK	L 	B	B 	B Q		B >BI -q!9:9B Bs0   AAB	+BB	:CC5C00C5c           
      .   |D ]\  }}	 |j         |         }| |j                 }n0# t          j        $ r}t	          d|||||           Y d }~nd }~ww xY w	 |j         |         }|| |j        <   j# t          j        $ r t	          d||||           Y w xY wd S )NFT)r
   r   r   r   r   )r   r   r   r   r   r    r!   r"   s           r#   bulk_populate_inherit_keysr&   >   s    ! I I1	O 215D)EE& 	O 	O 	OumQq#NNNNNNNN	O	I 215D$)K!!& 	I 	I 	It]A}aHHHHH	II Is&   $AAAA--"BBc           
      `   |D ]\  }}|j         rP|                    | | j        |          t          j        vr(t          d|dt          j        |           d          	 |                    | | j        |d            {# t          j	        $ r}t          dd ||||           Y d }~d }~ww xY wd S )Nz7Dependency rule tried to blank-out primary key column 'z' on instance ''T)r   _get_state_attr_by_columnr	   orm_util	_none_setAssertionError	state_str_set_state_attr_by_columnr   r   r   )r   r   r   r   r   r"   s         r#   clearr/   N   s    ! C C1M		55dDIqII%& & !.23!!X5G5M5M5M5MO  	C11$	1dKKKK& 	C 	C 	CtT1k1cBBBBBBBB	CC Cs    A>>B+B&&B+c           
      H   |D ]\  }}	 |                     |                                 |          }|                    | | j        |t          j                  }n0# t          j        $ r}	t          d||d ||	           Y d }	~	nd }	~	ww xY w|||j	        <   ||||j	        z   <   d S N)passiveF)
_get_committed_attr_by_columnobjr)   r	   r   r   r   r   r   r   )
r   r   r   
old_prefixr   r   r   oldvaluer!   r"   s
             r#   updater7   `   s    ! , ,1	F$BB

a H ";;Q
0F <  EE & 	F 	F 	FumQaEEEEEEEE	FQU#+Z!%  , ,s   AAB)BBc           
          |D ]i\  }}	 |                     | | j        |t          j                  }n0# t          j        $ r}t          d||d ||           Y d }~nd }~ww xY w|||j        <   jd S r1   )r)   r	   r   r   r   r   r   r   )r   r   dict_r   r   r   r!   r"   s           r#   populate_dictr:   o   s    !  1	F!;;Q
0F <  EE & 	F 	F 	FumQaEEEEEEEE	F ae s   (2AAAc           
         |D ]\  }}	 |j         |         }n0# t          j        $ r}t          d||d||           Y d}~nd}~ww xY w|                     ||j        t          j                  }t          |j	                  r dS dS )zpreturn true if the source object has changes from an old to a
    new value on the given synchronize pairs

    FNT)
r
   r   r   r   get_attribute_historyr   r   PASSIVE_NO_INITIALIZEbooldeleted)	r   r   r   r   r   r   r    r"   historys	            r#   source_modifiedrA   {   s    
 "  1	F 215DD& 	F 	F 	FumQaEEEEEEEE	F11DHj>
 
    	44	 us   A?Ac                     | r1t          j        t          j        d|d|d          |           d S t          j        t          j        d|d|d|d          |           d S )Nz0Can't execute sync rule for destination column 'z'; mapper 'z' does not map this column.  Try using an explicit `foreign_keys` collection which does not include this column (or use a viewonly=True relation).)replace_contextz+Can't execute sync rule for source column 'zx' does not map this column.  Try using an explicit `foreign_keys` collection which does not include destination column 'z$' (or use a viewonly=True relation).)r   raise_r   r   )isdestr   source_columnr   dest_columnr"   s         r#   r   r      s      
##
 1<[[[	J   		
 		
 		
 		
 		
 		
 	## !==--->   
	
 
	
 
	
 
	
 
	
 
	
    N)__doc__ r   r   r   r*   r$   r&   r/   r7   r:   rA   r    rH   r#   <module>rL      s    
                        (B (B (BVI I I C C C$, , ,	 	 	  &
 
 
 
 
rH   