
    9i                         S SK r S SKJr  S SKrS SKJr  S SKJr  SSK	J
r
  SS jrSS jr " S S	5      rS
\R                  4S jrg)    N)Iterableget_terminal_size   )Timerc                 n    [         R                  " U 5      (       d  [        UR                  U 5      5      eg N)ospisfileFileNotFoundErrorformat)filenamemsg_tmpls     `/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/preprocessors/cv/util.pycheck_file_existr      s*    ::h 9::      c                 h    U S:X  a  g [         R                  " U 5      n [        R                  " XSS9  g )N T)modeexist_ok)r
   
expanduserosmakedirs)dir_namer   s     r   mkdir_or_existr      s(    2~~~h'HKKd3r   c                   ^    \ rS rSrSrSSS\R                  4S jr\S 5       r	S r
SS	 jrS
rg)ProgressBar   z,A progress bar which can print the progress.r   2   Tc                 f    Xl         X l        SU l        X@l        U(       a  U R	                  5         g g )Nr   )task_num	bar_width	completedfilestart)selfr!   r"   r%   r$   s        r   __init__ProgressBar.__init__   s)     "	JJL r   c                     [        5       u  pU$ r	   r   )r&   width_s      r   terminal_widthProgressBar.terminal_width$   s    $&r   c                     U R                   S:  a:  U R                  R                  SSU R                  -   SU R                    S35        OU R                  R                  S5        U R                  R	                  5         [        5       U l        g )Nr   [ z] 0/z, elapsed: 0s, ETA:zcompleted: 0, elapsed: 0s)r!   r$   writer"   flushr   timer)r&   s    r   r%   ProgressBar.start)   sm    ==1IIOOadnn 45T$-- I0 0 1 IIOO78		W
r   c                    US:  d   eU =R                   U-  sl         U R                  R                  5       nUS:  a  U R                   U-  nO[        S5      nU R                  S:  Ga  U R                   [        U R                  5      -  n[        USU-
  -  U-  S-   5      nSU R                    SU R                   SUS S	[        US-   5       S
US S3n[        U R                  [        U R                  [        U5      -
  5      S-   [        U R                  S-  5      5      n[        SU5      n[        Xt-  5      nSU-  SXx-
  -  -   n	U R                  R                  UR                  U	5      5        O<U R                  R                  SU R                    S[        US-   5       SUS S35        U R                  R                  5         g )Nr   infr   g      ?z[{}] /z, z.1fz task/s, elapsed: zs, ETA: 5s   g333333?>r0   zcompleted: z, elapsed: zs, z tasks/s)r#   r3   since_startfloatr!   intminr"   r,   lenmaxr$   r1   r   r2   )
r&   	num_taskselapsedfps
percentageetamsgr"   
mark_width	bar_charss
             r   updateProgressBar.update2   s   1}})#**((*Q;..7*C,C==1%*>>JgZ0:=CDCdnn-Qt}}oRI/GcM0B/C Da#C DNN 3 3c#h >?!C 3 3c 9:<I Ay)IY34Jj(3)2H+IIIIIOOCJJy12IIOOdnn-[Ws]9K8L M9H&' 			r   )r"   r#   r$   r!   r3   N)r   )__name__
__module____qualname____firstlineno____doc__sysstdoutr'   propertyr,   r%   rJ   __static_attributes__ r   r   r   r      s5    6 !Rt#**   r   r   r   c                    [        U[        5      (       aP  [        U5      S:X  d   e[        US   [        5      (       d   e[        US   [        5      (       d   eUS   nUS   nO,[        U[        5      (       a  [        U5      nO[        S5      e[        XRUS9n/ nU H+  nUR                  U " U40 UD65        UR                  5         M-     UR                  R                  S5        U$ )aP  Track the progress of tasks execution with a progress bar.
Tasks are done with a simple for-loop.
Args:
    func (callable): The function to be applied to each task.
    tasks (list or tuple[Iterable, int]): A list of tasks or
        (tasks, total num).
    bar_width (int): Width of progress bar.
Returns:
    list: The task results.
r:   r   r   z="tasks" must be an iterable object or a (iterator, int) tuple)r$   
)
isinstancetupler@   r   r>   	TypeErrorr   appendrJ   r$   r1   )	functasksr"   r$   kwargsr!   prog_barresultstasks	            r   track_progressrb   O   s     %5zQ%(H----%(C((((8a	E8	$	$u:KM 	M8T:HGtD+F+,  MMNr   )zfile "{}" does not exist)i  )r   os.pathpathr
   rQ   collections.abcr   shutilr   r3   r   r   r   r   rR   rb   rU   r   r   <module>rg      s>    
  
 $ $ ;
43 3l +-3:: r   