Ë
    ÚÍ:j#  ã                   óð  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZmZmZ d dlmZ ddlmZ d	ed
ededeee      deee      dedededeeeeeeef   fd„Zd	ed
edeeeeef   fd„Zdededededeee      deee      deddfd„Zdededeee      deee      def
d„Zed	ed
edeee      deee      dedededeeeeeeeef      fd„«       Zd	ed
edeee      deee      dedededeeeeeeegee   f   dee   fd„Z	 	 	 	 	 	 d$d	ed
ededeee      deee      dedededee   fd „Z	 	 	 	 	 d%d!ed"ee   d	ed
edeee      deee      dedededee   fd#„Z y)&é    N)Úcontextmanager)Úunified_diff)ÚPoolÚ	cpu_count)ÚAnyÚCallableÚIterableÚIteratorÚListÚOptionalÚTextÚTuple)ÚTTFonté   )Úget_file_modtimeÚ
filepath_aÚ
filepath_bÚ
tmpdirpathÚinclude_tablesÚexclude_tablesÚfont_number_aÚfont_number_bÚuse_multiprocessÚreturnc           	      ó
  — t        | |«      \  }}	}
}t        ||¬«      }t        |	|¬«      }t        j                  j	                  |d«      }t        j                  j	                  |d«      }t        |||||||«       |||
|||	fS )N)Ú
fontNumberzleft.ttxz	right.ttx)Ú_get_pre_post_pathsr   ÚosÚpathÚjoinÚ_mp_save_ttx_xml)r   r   r   r   r   r   r   r   Úpost_pathnameÚpostpathÚpre_pathnameÚprepathÚtt_leftÚtt_rightÚleft_ttxpathÚright_ttxpaths                   úh/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/diff/diff.pyÚ_get_fonts_and_save_xmlr+      s‘   € ô 6IØ�Jó6Ñ2€M�8˜\¨7ô �W¨Ô7€GÜ�h¨=Ô9€HÜ—7‘7—<‘< 
¨JÓ7€LÜ—G‘G—L‘L ¨[Ó9€MÜØØØØØØØôð ˜¨°g¸}ÈhÐVÐVó    c                 ó   — | }|}| }|}||||fS ©N© )r   r   r%   r#   r$   r"   s         r*   r   r   2   s'   € ð €GØ€HØ€LØ€MØ˜( L°'Ð9Ð9r,   r&   r'   r(   r)   c                 óâ   — |rEt        «       dkD  r8| |||f||||fg}t        d¬«      5 }|j                  t        |«       d d d «       y t        | |||«       t        ||||«       y # 1 sw Y   y xY w)Nr   é   )Ú	processes)r   r   ÚstarmapÚ_ttfont_save_xml)	r&   r'   r(   r)   r   r   r   Úmp_args_listÚpools	            r*   r!   r!   =   sƒ   € ñ œI›K¨!šOð �l N°NÐCØ�} n°nÐEð
ˆô ˜AÔð 	9 $Ø�L‰LÔ)¨<Ô8÷	9ð 	9ô 	˜ ,°ÀÔOÜ˜ =°.À.ÕQ÷	9ð 	9ús   ¨A%Á%A.ÚttfÚfilepathc                 ó,   — | j                  |||¬«       y)z;Writes TTX specification formatted XML to disk on filepath.)ÚtablesÚ
skipTablesT)ÚsaveXML)r7   r8   r   r   s       r*   r4   r4   Y   s   € ð ‡K�K� ¸N€KÔKØr,   c              #   ó†   K  — t        j                  «       5 }t        | |||||||«      –— d d d «       y # 1 sw Y   y xY w­wr.   )ÚtempfileÚTemporaryDirectoryr+   )r   r   r   r   r   r   r   r   s           r*   Ú_saved_ttx_filesr@   d   sO   è ø€ ô 
×	$Ñ	$Ó	&ð 

¨*Ü%ØØØØØØØØó	
ò 		
÷

÷ 

ñ 

üs   ‚A—5¬	Aµ>ºAÚcreate_differc           	   #   ó”   K  — t        | ||||||«      5 \  }}	}
}}} |||	|
|||«      E d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wr.   )r@   )r   r   r   r   r   r   r   rA   r(   r)   r$   r%   r"   r#   s                 r*   Ú_diff_with_saved_ttx_filesrC   {   s   è ø€ ô 
ØØØØØØØó
ð 
ñ
ØØØØØØá ØØØØØØó
÷ 	
ð 	
÷!
ð 
ð 	
ø÷!
ð 
üs%   ‚A”<¬:­<±	Aº<¼AÁAÚcontext_linesc              #   ó´   ‡K  — dt         dt         dt         dt         dt         dt         dt        t            fˆfd„}t        | |||||||«      E d	{  –—†  y	7 Œ­w)
aª  Performs a unified diff on a TTX serialized data format dump of font binary data using
    a modified version of the Python standard libary difflib module.

    filepath_a: (string) pre-file local file path
    filepath_b: (string) post-file local file path
    context_lines: (int) number of context lines to include in the diff (default=3)
    include_tables: (list of str) Python list of OpenType tables to include in the diff
    exclude_tables: (list of str) Python list of OpentType tables to exclude from the diff
    use_multiprocess: (bool) use multi-processor optimizations (default=True)

    include_tables and exclude_tables are mutually exclusive arguments.  Only one should
    be defined

    :returns: Generator of ordered diff line strings that include newline line endings
    :raises: KeyError if include_tables or exclude_tables includes a mis-specified table
    that is not included in filepath_a OR filepath_b
    r(   r)   r$   r%   r"   r#   r   c           	   3   ó2  •K  — t        | «      5 }|j                  «       }d d d «       t        |«      5 }|j                  «       }	d d d «       t        |«      }
t        |«      }t        	|||
|‰¬«      E d {  –—†  y # 1 sw Y   Œ^xY w# 1 sw Y   ŒFxY w7 Œ­w)N)Ún)ÚopenÚ	readlinesr   r   )r(   r)   r$   r%   r"   r#   ÚffÚ	fromlinesÚtfÚtolinesÚfromdateÚtodaterD   s               €r*   Ú_create_unified_diffz$u_diff.<locals>._create_unified_diffÂ   sŸ   øè ø€ ô �,Óð 	' 2ØŸ™›ˆI÷	'ä�-Ó ð 	% BØ—l‘l“nˆG÷	%ô $ GÓ,ˆÜ! (Ó+ˆäØØØØØØØô
÷ 	
ñ 	
÷	'ð 	'ú÷	%ð 	%úð	
ús>   ƒB�A= B³B	Á3BÁ7BÁ8BÁ=BÂBÂ	BÂBN©r   r	   rC   )	r   r   rD   r   r   r   r   r   rP   s	     `      r*   Úu_diffrR   ¦   s~   øè ø€ ð8
Üð
äð
ô ð
ô ð	
ô
 ð
ô ð
ô 
”$‰õ
ô4 *ØØØØØØØØó	÷ 	ò 	ús   ƒAAÁAÁAÚ	diff_toolÚ	diff_argsc	              #   ó¸   ‡ ‡K  — dt         dt         dt         dt         dt         dt         dt        t            fˆˆ fd„}	t        ||||||||	«      E d	{  –—†  y	7 Œ­w)
a'  Performs a unified diff on a TTX serialized data format dump of font binary data using
    an external diff executable that is requested by the caller via `command`

    diff_tool: (string) command line executable string
    diff_args: (list of strings) arguments for the diff tool
    filepath_a: (string) pre-file local file path
    filepath_b: (string) post-file local file path
    include_tables: (list of str) Python list of OpenType tables to include in the diff
    exclude_tables: (list of str) Python list of OpentType tables to exclude from the diff
    use_multiprocess: (bool) use multi-processor optimizations (default=True)

    include_tables and exclude_tables are mutually exclusive arguments.  Only one should
    be defined

    :returns: Generator of ordered diff line strings that include newline line endings
    :raises: KeyError if include_tables or exclude_tables includes a mis-specified table
    that is not included in filepath_a OR filepath_b
    :raises: IOError if exception raised during execution of `command` on TTX files
    r(   r)   Ú_pre_pathnameÚ_prepathÚ_post_pathnameÚ	_postpathr   c              3   ó  •K  — ‰g‰
z   | |gz   }t        j                  |t         j                  t         j                  d¬«      }|j                  D ]  }|–— Œ |j                  j                  «       }	|	rt        |	«      ‚y ­w)NÚutf8)ÚstdoutÚstderrÚencoding)Ú
subprocessÚPopenÚPIPEr\   r]   ÚreadÚIOError)r(   r)   rV   rW   rX   rY   ÚcommandÚprocessÚlineÚerrrT   rS   s             €€r*   Ú_create_external_diffz0run_external_diff.<locals>._create_external_diff  s�   øè ø€ ð �+ 	Ñ)¨\¸=Ð,IÑIˆÜ×"Ñ"ØÜ—?‘?Ü—?‘?Øô	
ˆð —N‘Nò 	ˆDØ‹Jð	à�n‰n×!Ñ!Ó#ˆÙÜ˜#“,Ðð ùs   ƒA>BNrQ   )
rS   rT   r   r   r   r   r   r   r   rh   s
   ``        r*   Úrun_external_diffri   è   s~   ùè ø€ ð>Üðäðô ðô ð	ô
 ðô ðô 
”$‰öô, *ØØØØØØØØó	÷ 	ò 	ús   „AAÁAÁA)é   NNéÿÿÿÿrk   T)NNrk   rk   T)!r   r_   r>   Ú
contextlibr   Údifflibr   Úmultiprocessingr   r   Útypingr   r   r	   r
   r   r   r   r   ÚfontTools.ttLibr   Úutilsr   ÚintÚboolr+   r   r!   r4   r@   rC   rR   ri   r/   r,   r*   ú<module>rt      s¹  ðÛ 	Û Û Ý %Ý  ß +ß Q× QÓ Qå "å #ðWØðWàðWð ðWð ˜T $™ZÑ(ð	Wð
 ˜T $™ZÑ(ðWð ðWð ðWð ðWð ˆ4��t˜T 4¨Ð-Ñ.óWð<:Øð:àð:ð ˆ4��t˜TÐ!Ñ"ó:ðRØðRàðRð ðRð ð	Rð
 ˜T $™ZÑ(ðRð ˜T $™ZÑ(ðRð ðRð 
óRð8Ø	ðàðð ˜T $™ZÑ(ðð ˜T $™ZÑ(ð	ð
 
óð ð
Øð
àð
ð ˜T $™ZÑ(ð
ð ˜T $™ZÑ(ð	
ð
 ð
ð ð
ð ð
ð ˆe�D˜$  d¨D°$Ð6Ñ7Ñ8ò
ó ð
ð,!
Øð!
àð!
ð ˜T $™ZÑ(ð!
ð ˜T $™ZÑ(ð	!
ð
 ð!
ð ð!
ð ð!
ð ˜T 4¨¨t°T¸4Ð@À(È4Á.ÐPÑQð!
ð ˆd�^ó!
ð\ Ø+/Ø+/ØØØ!ñ?Øð?àð?ð ð?ð ˜T $™ZÑ(ð	?ð
 ˜T $™ZÑ(ð?ð ð?ð ð?ð ð?ð ˆd�^ó?ðN ,0Ø+/ØØØ!ñ>Øð>à�D‰zð>ð ð>ð ð	>ð
 ˜T $™ZÑ(ð>ð ˜T $™ZÑ(ð>ð ð>ð ð>ð ð>ð ˆd�^ô>r,   