
    9ik                     H    S SK Jr  S SKJr  S SKJr  SSKJr   " S S5      rg)	    )wraps)TrainerStages)is_method_overridden   )Priorityc                   *   \ rS rSrSr\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R$                  4r\R*                  rS rS rS rS rS rS rS	 rS
 rS rS r	S rS rS rS r
S rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!S r"S r#S r$Sr%g)Hook
   zg
The Hook base class of any modelscope trainer. You can build your own hook inherited from this class.
c                     g)z>
Will be called at the end of the trainer's `__init__` method
N selftrainers     ^/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/trainers/hooks/hook.py
after_initHook.after_init   s     	    c                     g)ze
Will be called before trainer loop begins.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   
before_runHook.before_run        	r   c                     g)za
Will be called after trainer loop end.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   	after_runHook.after_run*   r   r   c                     g)zb
Will be called before eval loop begins.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   
before_valHook.before_val5   r   r   c                     g)z^
Will be called after eval loop end.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   	after_valHook.after_val@   r   r   c                     g)zd
Will be called before every epoch begins.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   before_epochHook.before_epochK   r   r   c                     g)za
Will be called after every epoch ends.
Args:
    trainer: The trainer instance.

Returns: None

Nr   r   s     r   after_epochHook.after_epochV   r   r   c                     g)zb
Will be called before every loop begins.
Args:
    trainer: The trainer instance.

Returns: None
Nr   r   s     r   before_iterHook.before_itera        	r   c                     g)z_
Will be called after every loop ends.
Args:
    trainer: The trainer instance.

Returns: None
Nr   r   s     r   
after_iterHook.after_iterk   r*   r   c                 &    U R                  U5        g)z
Will be called before every train epoch begins. Default call ``self.before_epoch``
Args:
    trainer: The trainer instance.

Returns: None

Nr"   r   s     r   before_train_epochHook.before_train_epochu        	'"r   c                 &    U R                  U5        g)z
Will be called before every validation epoch begins. Default call ``self.before_epoch``
Args:
    trainer: The trainer instance.

Returns: None

Nr/   r   s     r   before_val_epochHook.before_val_epoch   r2   r   c                 &    U R                  U5        g)z
Will be called after every train epoch ends. Default call ``self.after_epoch``
Args:
    trainer: The trainer instance.

Returns: None

Nr%   r   s     r   after_train_epochHook.after_train_epoch        	!r   c                 &    U R                  U5        g)z
Will be called after every validation epoch ends. Default call ``self.after_epoch``
Args:
    trainer: The trainer instance.

Returns: None

Nr7   r   s     r   after_val_epochHook.after_val_epoch   r:   r   c                 &    U R                  U5        g)z
Will be called before every train loop begins. Default call ``self.before_iter``
Args:
    trainer: The trainer instance.

Returns: None
Nr(   r   s     r   before_train_iterHook.before_train_iter        	!r   c                 &    U R                  U5        g)z
Will be called before every validation loop begins. Default call ``self.before_iter``
Args:
    trainer: The trainer instance.

Returns: None
Nr?   r   s     r   before_val_iterHook.before_val_iter   rB   r   c                 &    U R                  U5        g)z
Will be called after every train loop ends. Default call ``self.after_iter``
Args:
    trainer: The trainer instance.

Returns: None
Nr,   r   s     r   after_train_iterHook.after_train_iter        	 r   c                 &    U R                  U5        g)z
Will be called after every validation loop ends. Default call ``self.after_iter``
Args:
    trainer: The trainer instance.

Returns: None
NrG   r   s     r   after_val_iterHook.after_val_iter   rJ   r   c                 <    US:  a  U R                   S-   U-  S:H  $ S$ )z3
Whether to reach every ``n`` epochs
Returns: bool
r   r   F)epochr   ns     r   every_n_epochsHook.every_n_epochs   s(     011u!Q&!+?%?r   c                 <    US:  a  U R                   S-   U-  S:H  $ S$ )zF
Whether to reach every ``n`` iterations at every epoch
Returns: bool
r   r   F)
inner_iter)runnerrQ   s     r   every_n_inner_itersHook.every_n_inner_iters   s*     45q5!!A%*a/CeCr   c                 <    US:  a  U R                   S-   U-  S:H  $ S$ )z7
Whether to reach every ``n`` iterations
Returns: bool
r   r   F)iterrP   s     r   every_n_itersHook.every_n_iters   s(     /0!eq A%*>>r   c                 :    U R                   S-   U R                  :H  $ )z7
Whether to reach the end of every epoch
Returns: bool
r   )rU   iters_per_epochr   s    r   end_of_epochHook.end_of_epoch   s      !!A%)@)@@@r   c                 :    U R                   S-   U R                  :H  $ )z/
Whether to reach the last epoch
Returns: bool
r   )rO   
max_epochsr_   s    r   is_last_epochHook.is_last_epoch   s     }}q G$6$666r   c                 :    U R                   S-   U R                  :H  $ )zR
Whether to reach the last iteration in the entire training process
Returns: bool
r   )rZ   	max_itersr_   s    r   is_last_iterHook.is_last_iter   s     ||a7#4#444r   c                     [        5       n[        R                   H,  n[        U[        U 5      (       d  M  UR	                  U5        M.     [        R                   Vs/ s H  o"U;   d  M
  UPM     sn$ s  snf N)setr	   stagesr   add)r   trigger_stagesstages      r   get_triggered_stagesHook.get_triggered_stages   sW    [[E#E466""5) ! $(;;J;%>2I;JJJs   	A3*A3c                     0 $ rk   r   )r   s    r   
state_dictHook.state_dict  s    	r   c                     g rk   r   )r   rt   s     r   load_state_dictHook.load_state_dict  s    r   r   N)&__name__
__module____qualname____firstlineno____doc__r   r   r   r   r0   r@   rH   r8   r4   rD   rL   r<   r   r   rm   r   NORMALPRIORITYr"   r%   r(   r,   staticmethodrR   rW   r[   r`   rd   rh   rq   rt   rw   __static_attributes__r   r   r   r	   r	   
   sm    &&(@(@&&(H(H--}/M/M--}/M/M++]-I-I++]-D-D%%'F H							#	#	"	"""!! @ @ D D ? ? A A 7 7 5 5Kr   r	   N)		functoolsr   modelscope.utils.constantr   modelscope.utils.import_utilsr   priorityr   r	   r   r   r   <module>r      s     3 > { {r   