
    j5j                    H   d Z ddlmZ ddlZddlZddlmZm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 dd
lmZ ddlmZ ddlmZ ddlmZmZ erddlmZ ddlmZ  ej>                         Z da!ddZ"e	dd       Z#	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ$	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ%y)z&PDF page info worker process handling.    )annotationsN)	ContainerSequence)contextmanager)partial)Path)TYPE_CHECKING)Pdf)Executor)ProgressBar)InputFileError)available_cpu_countpikepdf_enable_mmapPageInfo)PdfMinerStatec                    t                t        j                  d      j                  |       | .t	        j
                  |      ad }t        j                  |       y y )Npdfminerc                 ,    t         j                          y N)
worker_pdfclose     N/var/www/html/qr/venv/lib/python3.12/site-packages/ocrmypdf/pdfinfo/_worker.pyon_process_closez1_pdf_pageinfo_sync_init.<locals>.on_process_close)   s    r   )	r   logging	getLoggersetLevelr
   openr   atexitregister)pdfinfilepdfminer_loglevelr   s       r   _pdf_pageinfo_sync_initr&      sP    j!**+<= {XXf%
	 	() r   c              #     K   | |  y t         	t          y t        j                  |      5 }| d d d        y # 1 sw Y   y xY wwr   )r   r
   r    )
thread_pdfr$   r#   s      r   _pdf_pageinfo_sync_pdfr)   0   sE     		XXf 	I	 	 	s   ,A<	AAAc           	     l    ddl m} t        ||      5 } ||| ||||      cd d d        S # 1 sw Y   y xY w)Nr   r   )ocrmypdf.pdfinfo.infor   r)   )pagenor(   r$   check_pagesdetailed_analysisminer_stater   r#   s           r   _pdf_pageinfo_syncr0   ;   s>     /	
F	3 
s.?

 
 
s   *3c	                :   d gt        | j                        z  dfd}	|
t               }t        | j                        }
t        dt              dz  z   |      }|dk(  rd}|r|dkD  rd}|r| nd fdt	        |
      D        }|r|dk(  sJ d       |dk\  sJ d       t
        j                  d| d	|rd
ndz   dz           |||t        |
dd|       t        t        t        j                  d      j                        t        ||	       S )Npagec                ^    | st        d      | | j                  <   |j                          y )NzCould read a page in the PDF)r   r,   update)r2   pbarpagess     r   update_pageinfoz1_pdf_pageinfo_concurrent.<locals>.update_pageinfoZ   s)     !?@@!dkkr         Tc              3  .   K   | ]  }|f  y wr   r   ).0nr-   r.   r$   initial_pdfr/   s     r   	<genexpr>z+_pdf_pageinfo_concurrent.<locals>.<genexpr>u   s'       
K.?Ms   zNot multithreadablezGathering info with  threadprocessz workerszScanning contents)totaldescunitdisabler   )use_threadsmax_workersprogress_kwargsworker_initializertasktask_argumentstask_finished)r2   r   r5   r   )lenr6   r   minrangeloggerdebugdictr   r&   r   r   levelr0   )r#   executorrG   rF   r$   progbarr-   r.   r/   r7   rB   	n_workerscontextsr=   r6   s       ` ```    @@r   _pdf_pageinfo_concurrentrX   M   sB    %)6C		N#:E )+		NEAE
a'5IA~ y1} 	
 %#$KuH )9>S>SS<i1nS>SS<
LL
yk+"8		3
	
 1G
 ##j)//	
  %  Lr   )r#   r
   r$   r   )r(   
Pdf | Noner$   r   )r,   intr(   rY   r$   r   r-   zContainer[int]r.   boolr/   PdfMinerState | Nonereturnr   )FN)rT   r   rG   rZ   rF   r[   r.   r[   r/   r\   r]   zSequence[PageInfo | None])&__doc__
__future__r   r!   r   collections.abcr   r   
contextlibr   	functoolsr   pathlibr   typingr	   pikepdfr
   ocrmypdf._concurrentr   ocrmypdf._progressbarr   ocrmypdf.exceptionsr   ocrmypdf.helpersr   r   r+   r   ocrmypdf.pdfinfo.layoutr   r   rP   r   r&   r)   r0   rX   r   r   r   <module>rk      s    - "   / %      ) - . E.5				
*"  


 
  	

 
 &
 
4 $(,BB B 	B B &B Br   