
    }f                         d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZmZ d	d
lmZmZmZmZ ddgZdZ e jB                  jE                         rdndZ# e jH                  d        edd      Z% G d d      Z&edfdZ'd Z(d Z)d Z*d Z+e+Z,d Z-d Z.dddZ/d Z0d  Z1d! Z2d" Z3y)#    N)
namedtuple)ProcessPoolExecutorThreadPoolExecutoras_completed)partial)Pool	cpu_count)Path)	BarColumnProgressTaskProgressColumn
TextColumnTimeElapsedColumnTimeRemainingColumn)U_CHECK_MARKU_CROSSED_SWORDS   )identity
memory_useprogram_nametry_readparallel_procprocessing_loopz	ERROR.log
i   __Taskzpayload args kwargsc                   (    e Zd Zd Zed        Zd Zy)ParprocResultc                 X    || _         d | _        d | _        d| _        d| _        d| _        y )Nr   )payloadoutcome	exception	linecounttimememory)selfr    s     Q/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/util/parproc.py__init__zParprocResult.__init__%   s,    	    c                     | j                   d u S N)r"   r&   s    r'   successzParprocResult.success-   s    ~~%%r)   c                 ,    t        | j                        S r+   )str__dict__r,   s    r'   __str__zParprocResult.__str__1   s    4==!!r)   N)__name__
__module____qualname__r(   propertyr-   r1    r)   r'   r   r   $   s      & &"r)   r   Fc                    t        j                         }t        |j                        }	  | |j                  g|j                  i |j
                  }t               |_        t        |d      r|j                  |_	        n1t        t        |j                        j                               |_	         ||      |_        t        j                         |z
  |_         |S # t        $ r Y t        j                         |z
  |_         y t        $ r}||_        Y d }~Yd }~ww xY w# t        j                         |z
  |_         w xY w)Nr#   )r$   process_timer   r    argskwargsr   r%   hasattrr#   lenr   
splitlinesr!   KeyboardInterrupt	Exceptionr"   )processtaskpickablereraise
start_timeresultr!   es           r'   process_payloadrG   5   s   ""$J4<<(F7$,,BBdkkB"7K(&00F"8DLL#9#D#D#FGF!'* '')J6M   '')J6   '')J6s6   BC 	D'D! DDD! DD! !D?c           	   #   r  K   t        dt                     }|dz  }t        dt        |      |      D cg c]
  }||||z     }}|D ]V  } | |      5 }|D 	cg c]  }	|j	                  ||	       }
}	t        |
      D ]  }|j                           	 d d d        X y c c}w c c}	w # 1 sw Y   mxY ww)N      r   )max_workers)maxr	   ranger<   submitr   rE   )executorr@   tasksnworkersnichunkschunkexrA   futuresfutures               r'   _executor_pmaprY   J   s     1ik"H1A&+As5z1&=>eAa!en>F> &(+ 	&r<ABDryy$/BGB&w/ &mmo%&	& 	&& ? C	& 	&s:   2B7B!B7B+B&1$B+B7&B++B4	0B7c              #   B   K   t        t        | |      E d {    y 7 wr+   )rY   r   r@   rP   s     r'   _thread_pmapr\   U   s     0'5AAA   c              #   B   K   t        t        | |      E d {    y 7 wr+   )rY   r   r[   s     r'   _process_pmapr_   Y   s     17EBBBr]   c              #     K   t        dt                     }|dz  }t        dt        |      |      D cg c]
  }||||z     }}t	        d |D              }t        |      |k7  rt        dt        |      |fz        |D ]1  }t        |      5 }|j                  | |      E d {    d d d        3 y c c}w 7 # 1 sw Y   ExY ww)NrI      r   c              3   2   K   | ]  }t        |        y wr+   )r<   ).0cs     r'   	<genexpr>z_imap_pmap.<locals>.<genexpr>c   s     '1A's   z*number of chunked tasks different %d != %d)	processes)rL   r	   rM   r<   sumRuntimeErrorr   imap_unordered)	r@   rP   rQ   rR   rS   rT   countrU   pools	            r'   
_imap_pmaprl   ]   s     1ik"H1A&+As5z1&=>eAa!en>F>'''E
5zUG3u:W\J]]^^ ;H% 	;**7E:::	; 	;; ? ;	; 	;s;   2CB5ACB<%B:&B<*C:B<<C	Cc              /     K   |j                  dt              }|j                  dd      }|j                  dd      }t        t        |||      }| D cg c]  }t	        |||       }}	 t        |      dk(  r ||d          y |rt        nt        }	 |	||      E d {    y c c}w 7 
# t        $ r g cY S w xY ww)	NrB   parallelTrC   F)rB   rC   rI   r   )	popr   r   rG   r   r<   _pmapmapr>   )
payloadsr@   r9   r:   rB   rn   rC   r    rP   pmaps
             r'   r   r   n   s     zz*h/Hzz*d+HjjE*Gow7SG:BCwVGT6*CECu:?%(##$5#DGU+++ D , 	sT   AB?B'(B?+B. B?B. !B,"B. &B?,B. .B<9B?;B<<B?c           
          t        t        dt                      t               t	               t               t               t        d      dd      }|j                  d|       }||fS )Nz[progress.description]z([progress.description]{task.description}rI   g      >@)refresh_per_secondspeed_estimate_period )total)r   r   r   r   r   r   r   add_task)rx   progressrA   s      r'   _build_progressbarr{      sf    +LN+;<==>"
H Ru-DT>r)   )rC   c          	   /   h  K   	 t        |       }d}d}t        j                         }t        | |g|i |}	|	xs g }	d}
d}d}t        |      \  }}|dk(  rt        j
                  }nt        t              j                  d      }|5  |	D ]  }||
dz  }
t        j                         |z
  }t        |j                        j                  }|j                  r
dt         }n	dt         }|j                  |d| d|        |j                  rJt        |       	 t        d	|j                  |       t        |j                  |       |r?|j                  |j&                  '|dz  }||j(                  z  }||j                  z  }| |j+                           |j                  |dd       |j-                          d d d        t/        | |||||       y # t         $ r. t        d
t#        |j                        j$                  |       Y w xY w# 1 sw Y   TxY w# t0        $ r Y y w xY ww)Nr   rI   wz[red]z[green] )advancedescriptionfilezERROR:	EXCEPTIONrw   )r<   r$   r   r{   sysstderrr
   ERROR_LOG_FILENAMEopenr    namer"   r   r   updateprintr?   typer2   r!   r#   flushstopfile_process_summaryr>   )	filenamesr@   rC   r9   r:   rx   
total_timerun_timerD   resultsrj   success_countsuccess_linecountrz   progress_tasklogrE   filenameicons                      r'   r   r      s8    <I
YY[
	7DTDVD-R"4U";-A:**C)*//4C &	! ">
!YY[:5
/44##"#3"45D$\N3D!#'&( 4    ##sOVhSAf..S9 $...^^/!Q&M%)9)99%+H L		E"H OOM1"OEMMOM&	N 	z8]<Ms	
 % Vk40@0@+A+J+JQTUV1&	 &	T  sg   H2BH# BH/GA8HH# H24HHHHH H# #	H/,H2.H//H2c                 p   | j                   }||z  }| j                  t               z   dz  }||z
  dz  |z  d|z  z  }ddt        d|z        z  z  }t	        d||fz  |dd	|z  z  t        |       d
t        |       |rd|z  ndt        |      j                  dz   d d t        j                  t        	       y )Ni   g?g?z[%-24s]#   z%3d/%-3dz%3d%%d   ETAz%3dMiBrw   P                                                                                (   )r   end)r    r%   r   roundr   format_hoursformat_minutesr
   r   r   r   EOLCH)	latest_resultrj   rx   r   r   percent	mb_memoryetabars	            r'   file_process_progressr      s    $$HemG%%
4+FI5=C
*
,e
<C
sU2<00
1C	eU^#3=!
S!}% )9r	h		x	'"-ZZ
r)   c                 H    | j                   dz  dd| j                   dz  dS )N<   z3.0f:z04.1fr$   )rE   s    r'   r   r      s+    kkBt$AfkkB&6u%=>>r)   c                 4    | dz  dd| dz  dz  dd| dz  dS )Ni  z2.0fr   r   z02.0fr6   r   s    r'   r   r      s3    dl4 42:"3E!:!D2Ie;LMMr)   c                    d}d}| D ].  }|dz  }t        t        |      j                               }	||	z  }0 ||z
  }
d}dj                  d |j                         D              }|j	                  |||||
|dk7  rd|z  |z  ndt        |      t        |            }t        t        dz   |       t        ||       t        t        dz   t        j                         |
r=t        j                  d	|j                   d
       t        t        j                         |t        j                  k7  rt        |t        j                         |
rt        j                  d       y y )Nr   rI   aH          -----------------------------------------------------------------------
        {:12,d}   files input
        {:12,d}   source lines input
        {:12,d}   total lines processed
        {:12,d}   successes
        {:12,d}   failures
        {:12.1f}%  success rate
         {:>13s}  time
         {:>13s}  run time
    r   c              3   <   K   | ]  }|j                           y wr+   )strip)rc   ss     r'   re   z'file_process_summary.<locals>.<genexpr>  s     J1QWWYJs   r   r   r   z$[red bold]FAILURES logged to [green]!)r<   r   r=   joinformatr   r   r   r   r   richr   exit)r   r   r   r   r   r   	filecountr#   fnamenlinesfailuressummary_textsummarys                r'   r   r      sA    II Q	Xe_//12V		 =(H
L 99J0G0G0IJJL!!+4>mi'qZ X	G 
%(
%	'	%(
,

9#((1EF3::
cjjgCJJ' r)   )4r   r$   collectionsr   concurrent.futuresr   r   r   	functoolsr   multiprocessingr   r	   pathlibr
   r   rich.progressr   r   r   r   r   r   tatsu.util.unicode_charactersr   r   utilr   r   r   r   __all__r   r   isattyr   setrecursionlimitr   r   rG   rY   r\   r_   rl   rp   r   r{   r   r   r   r   r   r6   r)   r'   <module>r      s    
  " T T  +   
 @ ?-
. ! 

!!#   e 	H3	4" "" -5e *&BC; 	$  8= =@,?N.r)   