
    h
                        d dl mZ d dlZd dlZ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 ej"                  rddlmZ  e       Zej+                  d      Z	 ej+                  d	      Z	 dd
ZddZddZddZddZy)    )annotationsN)current_app)has_app_context)	Namespace   )Sessionzmodels-committedzbefore-models-committedc                   t        j                  | dt        d       t        j                  | dt        d       t        j                  | dt               t        j                  | dt               t        j                  | dt
               y )Nbefore_flushT)namedbefore_commitafter_commitafter_rollback)sa_eventlisten_record_ops_before_commit_after_commit_after_rollbacksessions    MD:\EasyAligner\venv\Lib\site-packages\flask_sqlalchemy/track_modifications.py_listenr       sW    OOG^[EOOG_kFOOG_n=OOG^];OOG-?    c                D   t               sy t        j                  d   sy | j                  df| j                  df| j
                  dffD ]U  \  }}|D ]K  }t        j                  |      }|j                  r|j                  n
t        |      }||f| j                  |<   M W y )NSQLALCHEMY_TRACK_MODIFICATIONSinsertupdatedelete)r   r   confignewdirtydeletedsainspecthas_identityidentity_keyid_model_changes)r   kwargstargets	operationtargetstatekeys          r   r   r   (   s    >? 
h	!	(#
 FJJv&E(-(:(:%$$6
C+19*=G""3' r   c                    t               sy t        j                         }|j                  d   sy | j                  r;t        | j                  j                               }t        j                  ||       y y Nr   )changes)	r   r   _get_current_objectr   r(   listvaluesbefore_models_committedsendr   appr1   s      r   r   r   :   sc    

)
)
+C::67w--4467$$S'$: r   c                $   t               sy t        j                         }|j                  d   sy | j                  rUt        | j                  j                               }t        j                  ||       | j                  j                          y y r0   )
r   r   r2   r   r(   r3   r4   models_committedr6   clearr7   s      r   r   r   H   su    

)
)
+C::67w--4467c73$$& r   c                8    | j                   j                          y )N)r(   r;   r   s    r   r   r   W   s      "r   )r   zsa_orm.scoped_session[Session]returnNone)r   r   r)   zt.Anyr=   r>   )r   r   r=   r>   )
__future__r   typingt
sqlalchemyr#   sqlalchemy.eventeventr   sqlalchemy.ormormsa_ormflaskr   r   flask.signalsr   TYPE_CHECKINGr   r   _signalssignalr:   r5   r   r   r   r   r    r   r   <module>rN      st    "   #   ! #?? ;??#56  #//*CD 
@>$;'#r   