
    j5j                    z   d Z 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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Ze
ez  Z ej:                  e      Z G d de       Z! edd      Z"e"jF                  Z#e"jH                  Z$edd       Z%	 	 	 	 	 	 	 	 	 	 ddZ&dd	 	 	 	 	 	 	 	 	 ddZ'y)z Interface to unpaper executable.    )annotationsN)Iterator)contextmanager)Decimal)Path)PIPESTDOUT)TemporaryDirectory)Image)	ToolProbe)SubprocessOutputError)runi   c                  &     e Zd ZdZ	 d fd	Z xZS )UnpaperImageTooLargeErrorz:To capture details when an image is too large for unpaper.c                    || _         || _        |j                  ||      | _        t        |   | j                         y )N)whformatmessagesuper__init__)selfr   r   r   	__class__s       L/var/www/html/qr/venv/lib/python3.12/site-packages/ocrmypdf/_exec/unpaper.pyr   z"UnpaperImageTooLargeError.__init__%   s6     ~~a+&    )z?Image with size {}x{} is too large for cleaning with 'unpaper'.)__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r   "   s    D R		' 	'r   r   unpaperz(?m).*?(\d+(\.\d+)(\.\d+)?))programversion_regexc              #  X  K   t        j                  |       5 }|j                  |j                  z  t        k\  r!t        |j                  |j                        	 d d d        t        d      5 }t        |      }| }|dz  }|||f d d d        y # 1 sw Y   8xY w# 1 sw Y   y xY ww)N)r   r   T)ignore_cleanup_errorsz
output.pnm)r   openwidthheightUNPAPER_IMAGE_PIXEL_LIMITr   r
   r   )
input_fileimtmpdirtmppath	input_png
output_pnms         r   _setup_unpaper_ior0   6   s     	J	 E288bii#<<+bhh"))DD =E 
$	7 -6v,	 |+
W,,- -	E E- -s5   B*ABB*/B		B*BB*B'#B*c          
        dddt        t        |d            g|z   }t        |       5 \  }}}|j                  t	        j
                  |      t	        j
                  |      g       t        |ddt        t        |d       	 t        j                  |      5 }|j                  |||f       d d d        d d d        y # 1 sw Y   xY w# t        $ r}	t        dt        |      z         |	d }	~	ww xY w# 1 sw Y   y xY w)	Nr!   z-vz--dpi   T)	close_fdscheckstderrstdoutcwdlogs_errors_to_stdout)dpizCunpaper: failed to produce the expected output file.  Called with: )strroundr0   extendosfspathr   r	   r   r   r&   saveOSErrorr   )
r*   output_filer9   	mode_argsargs_unpaperr.   r/   r,   imoutes
             r   run_unpaperrF   F   s     tWc%Q-.@AIML	:	& *I9j& 	RYYy1299Z3HIJ"&	
	J' 85

;S#J
78' &8 8 	'#l#$ 		+ sB   AC2C	B=,C	=C	C			C/C**C//C22C;)unpaper_argsc                   g d}|s|}	 t        | |||       |S # t        $ r*}t        j                  t	        |             | cY d }~S d }~ww xY w)N)	z--layoutnonez--mask-scan-size100z--no-border-alignz--no-mask-centerz--no-grayfilterz--no-blackfilterz--no-deskew)r9   rB   )rF   r   logwarningr:   )r*   rA   r9   rG   default_argsrE   s         r   cleanrN   h   sR    
L #JM$ CFs    	AA	A	A)r*   r   returnz!Iterator[tuple[Path, Path, Path]])
r*   r   rA   r   r9   DecFloatrB   z	list[str]rO   None)
r*   r   rA   r   r9   rP   rG   zlist[str] | NonerO   r   )(r   
__future__r   loggingr=   collections.abcr   
contextlibr   decimalr   pathlibr   
subprocessr   r	   tempfiler
   PILr   ocrmypdf._exec._prober   ocrmypdf.exceptionsr   ocrmypdf.subprocessr   r)   floatrP   	getLoggerr   rK   	Exceptionr   PROBEversion	availabler0   rF   rN    r   r   <module>re      s    ' "  	 $ %   # '  + 5 # . U?g!'	 ' 	)3QR
--OO	 - -#'19FO	N &* 
	
 # 
r   