
    i
                     N    S r SSKJr  SSKJrJrJrJr  SSKr " S S\5      r	\	r
g)	zHCompare versions of the same file and replace/enumerate them on mismatch   )PostProcessor   )textutiloutput	exception    Nc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)	ComparePP   c                 8   [         R                  " X5        UR                  S5      (       a  U R                  U l        S=U l        U l        UR                  S5      =n(       ax  UR                  S5      u  p4n[        R                  " U5      U l
        US:X  a  [        R                  U l        O-US:X  a  [        R                  U l        OUS:X  a  [        U l        UR                  SUR                  S	5      S
:X  a  U R                   OU R"                  0U5        g )Nshallowr	   equal:abort	terminateexitfileaction	enumerate)r   __init__get_compare_size_compare
_equal_exc
_equal_cnt	partitionr   	parse_int
_equal_maxr   StopExtractionTerminateExtraction
SystemExitregister_hooksr   replace)selfjoboptionsr   _emaxs         M/app/mltbenv/lib/python3.13/site-packages/gallery_dl/postprocessor/compare.pyr   ComparePP.__init__   s    t);;y!! ..DM,--$/KK((5("__S1NEd"nnT2DO"+":":+%"+"?"?&",F{{8$3 NNLL 		    c                      U R                  UR                  UR                  5      (       a  U R                  U5      $  SU l        g ! [         a     Nf = f)Nr	   )r   realpathtemppath_equalOSErrorr   r%   pathfmts     r*   r$   ComparePP.replace(   sV    	}}W--w/?/?@@{{7++ A   		s   ;A 
AAc                    Sn U R                  UR                  UR                  5      (       dr  [        U5      S-   =Ul        nX1R
                  -   UR                  S'   UR                  5         US-  nU R                  UR                  UR                  5      (       d  Mr  U R                  U5      $ ! [         a     Of = fSU l
        g )Nr   .	extensionr	   )r   r.   r/   formatprefixr7   kwdict
build_pathr0   r1   r   )r%   r3   numr9   s       r*   r   ComparePP.enumerate0   s    	mmG$4$4g6F6FGG*0+*;;.47H7H.H{+""$q	 mmG$4$4g6F6FGG
 ;;w'' 		s   BB2 !B2 2
B?>B?c                 T    U R                  X5      =(       a    U R                  X5      $ N)r   _compare_contentr%   f1f2s      r*   r   ComparePP._compare=   s#    !!")Kd.C.CB.KKr,   c                     [         R                  " U5      R                  [         R                  " U5      R                  :H  $ r?   )osstatst_sizerA   s      r*   r   ComparePP._compare_size@   s)    wwr{""bggbk&9&999r,   c                 :   Sn[        US5       n[        US5       n UR                  U5      nUR                  U5      nXg:w  a   S S S 5        S S S 5        gU(       d   S S S 5        S S S 5        gMT  ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Ni @  rbTF)openread)r%   rB   rC   sizefp1fp2buf1buf2s           r*   r@   ComparePP._compare_contentC   sm    "d^sDTNcxx~xx~<  %3^^  %3^^ %3N^^^s4   B*A2BA2B0A22
B 	<B
Bc                    U R                   (       au  U =R                  S-  sl        U R                  U R                  :  aF  [        R                  " UR
                  5        [        R                  " S5        U R                  5       eSUl        g )Nr   
T)	r   r   r   r   remove_filer/   r   stderr_writedeleter2   s     r*   r0   ComparePP._equalN   s]    ??OOq O$//1  !1!12##D)oo''r,   )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   r$   r   r   r   r@   r0   __static_attributes__ r,   r*   r   r      s&    ,L:	 r,   r   )__doc__commonr    r   r   r   r   rF   r   __postprocessor__r_   r,   r*   <module>rd      s.    O ! , , 	E EP  r,   