
    ޺i:5                        S SK r S SKrS SKrS SKrS SKrS SKJrJrJrJ	r	J
r
Jr  SSKJr  SSKJrJr  SSKJrJr  S\SS4S	 jrS
\S\4S jr  SS\\   S\	\\      S\	\\      S\\   4S jjr    SS\S\S\	\\      S\	\\      S\S\S\\\4   4S jjr    SS\S\S\	\\      S\	\\      S\S\S\\\4   4S jjrS rS\\
   4S jrg)    N)IterableIteratorListOptionalTextTuple   )color_unified_diff_line)run_external_diffu_diff)file_existsget_tables_argument_listoutputreturnc                    U (       d  g[         R                  R                  5       (       d   [         R                  R                  U 5        g[        R
                  " S5      =(       d    [        R                  " S5      nU(       d   [         R                  R                  U 5        gU/nS[        R                  R                  U5      ;   a  UR                  S5        [        R                  " U[        R                  SS9n UR                  R                  U 5        UR                  R                  5         UR!                  5         g! ["        [$        4 a0    UR                  (       a  UR                  R                  5          g g[&         a-    UR                  (       a  UR                  R                  5         e f = f)zDPipes output to a pager if stdout is a TTY and a pager is available.NPAGERlessz-RT)stdintext)sysstdoutisattywriteosgetenvshutilwhichpathbasenameappend
subprocessPopenPIPEr   closewaitBrokenPipeErrorKeyboardInterrupt	Exception)r   pager	pager_cmdprocs       V/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/fontTools/diff/__init__.pypipe_outputr-      s1    ::

 IIg6&,,v"6E

 I!!%((IZ__4HD

 

		./  ::JJ   ::JJs   AE ;F=6F=	diff_toolc                      [         R                  " U S/[         R                  [         R                  SS9nUR                  =(       d    SUR
                  =(       d    S-   nSU;   $ ! [         a     gf = f)z9Returns True if the provided diff executable is GNU diff.z	--versionT)r   stderrr   F zGNU diffutils)r!   runr#   OSErrorr   r0   )r.   r+   version_outputs      r,   _is_gnu_diffr5   3   sk    ~~$????	
 kk'RDKK,=2>Nn,,	  s   5A' '
A43A4tagsinclude_tablesexclude_tablesc              #   ^   #    U  H#  nU(       a  X2;   a  M  U(       a  X1;  a  M  Uv   M%     g 7f)N )r6   r7   r8   tags       r,   _iter_filtered_table_tagsr<   C   s,     
 c3c7	 s   +-file1file2font_number_1font_number_2c                 T   SSK Jn  U" U SUS9 nU" USUS9 nUR                  R                  5        V	s1 s H  n	[	        U	5      iM     n
n	UR                  R                  5        V	s1 s H  n	[	        U	5      iM     nn	[        [        [        X-  UUS95      5      nU V	s/ s H  oU
;   d  M
  X;  d  M  U	PM     nn	U V	s/ s H  oU;   d  M
  X;  d  M  U	PM     nn	U V	s/ s H  oU
;   d  M
  X;   d  M  U	PM     nn	Sn/ nUR                  S5        UR                  SU  S35        UR                  S	U S35        U(       aW  S
nUR                  S[        U5       S35        U H1  n	UR                  SU	 S[        UR                  U	   5       S35        M3     U(       aW  S
nUR                  S[        U5       S35        U H1  n	UR                  SU	 S[        UR                  U	   5       S35        M3     UR                  S[        U5       S35        U Hy  n	UR                  U	   nUR                  U	   nUU:X  a#  UR                  SU	 S[        U5       S35        MJ  S
nUR                  SU	 S[        U5       S[        U5       S35        M{     U(       a  UR                  S5        OUR                  S5        USR                  U5      4sS S S 5        sS S S 5        $ s  sn	f s  sn	f s  sn	f s  sn	f s  sn	f ! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)Nr   TTFontTlazy
fontNumberr7   r8   zBinary table summary:
z	  file1: 
z	  file2: Fz
Tables only in file1 (z):
z- z (z bytes)
z
Tables only in file2 (z+ z
Tables in both (z  z: SAME (z* z: DIFF (z vs z
Result: SAME
z
Result: DIFFERENT
r1   )fontTools.ttLibrC   readerkeysstrsortedsetr<   r    lenjoin)r=   r>   r7   r8   r?   r@   rC   font1font2r;   tags1tags2all_tagsonly1only2both	identicallinesdata1data2s                       r,   	summarizer]   P   s    ' 	u4M:eu4M:e%*\\%6%6%89%8cS%89%*\\%6%6%89%8cS%89)M#1#1
 !)N5LS=MN (N5LS=MN'Ix%<CLxI	.0yr*+yr*+ILL3CJ<tDEr#bU\\#->)?(@	JK ILL3CJ<tDEr#bU\\#->)?(@	JK  	)#d)D9:CLL%ELL%E~r#hs5zl)DE!	r#hs5zl$s5zl)TU  LL+,LL01"''%.(i 	;: 	;: :9 ONI# 	;:: 	;::s   	LK>K%
K>(K*=%K>"	K//K/6K/<K>	K4K4K4K>"	K9/K96K9<GK>	L%K>>
L	L
L'c                    SSK Jn  U" U SUS9 nU" USUS9 nUR                  R                  5        V	s1 s H  n	[	        U	5      iM     n
n	UR                  R                  5        V	s1 s H  n	[	        U	5      iM     nn	[        [        [        X-  UUS95      5      nU V	s/ s H  oU
;   d  M
  X;   d  M  U	PM     nn	[        5       nU H:  n	UR                  U	   nUR                  U	   nUU:X  d  M)  UR                  U	5        M<     UsS S S 5        sS S S 5        $ s  sn	f s  sn	f s  sn	f ! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)Nr   rB   TrD   rG   )	rI   rC   rJ   rK   rL   rM   rN   r<   add)r=   r>   r7   r8   r?   r@   rC   rQ   rR   r;   rS   rT   rU   rX   outr[   r\   s                    r,   get_binary_exclude_tablesra      s2    ' 	u4M:eu4M:e%*\\%6%6%89%8cS%89%*\\%6%6%89%8cS%89)M#1#1
  (Ix%<CLxIeCLL%ELL%E~	  1 	;: 	;: :9 J 	;:: 	;::s]   	ED+D
D+(D!=%D+"	D&/D&6D&<3D+3D+		ED++
D9	5E
Ec                  J   Sn  [        [        R                  SS 5      n U $ ! [         a     U $ [         aj    [
        R                  " [
        R                  [
        R                  5      n[
        R                  " U[        R                  R                  5       5         U $ f = f)z!Compare two fonts for differencesr   r	   N)r2   r   argvr'   r&   r   opendevnullO_WRONLYdup2r   fileno)retre   s     r,   mainrj      s     C.#((12, J   J  . ''"**bkk2
**,-J.s   " 
B"A/B"!B"rc   c                 T   [         R                  " SS9nUR                  SSSSS9  UR                  SS	[        S
SS9  UR                  SS[        SS SS9  UR                  SS[        SS SS9  UR                  S[        SS9  UR                  S[        S SS9  UR                  S/ SQSSS9  UR                  S[        S S!S"S#9  UR                  S$[        S S!S%S#9  UR                  S&S'SS(S9  UR                  S)S*SS+S9  UR                  S,S-SS.S9  UR                  S/S0S19  UR                  S2S3S19  UR                  U 5      nUR                  (       aS  UR                  (       aB  UR                  (       d0  [        R                  R                  S4[        R                   35        g5UR                  (       d  S6Ul        [        UR                  5      (       dO  UR                  (       d=  [        R                  R                  S7UR                   S8[        R                   35        g5[        UR                   5      (       dO  UR                  (       d=  [        R                  R                  S7UR                    S8[        R                   35        g5[#        UR$                  5      n[#        UR&                  5      nUR(                  (       at   [+        UR                  UR                   UUUR,                  UR.                  S99u  pVUR                  (       d  [        R0                  R                  U5        U(       a  S:$ S;$ UR                  (       ar  [5        UR                  UR                   UUUR,                  UR.                  S99nUb  U V	s/ s H  oU;  d  M
  U	PM     nn	OUc  / nUR7                  [9        U5      5        UR:                  n
UR<                  S=:H  =(       d0    UR<                  S:H  =(       a    [        R0                  R>                  nU
c  [@        RB                  " S>5      n
OoU
(       ah  [@        RB                  " U
5      n
U
cO  UR                  (       d=  [        R                  R                  S?UR:                   S@[        R                   35        g5 U
(       a  URD                  nUcR  URF                  S
:X  a  SA/nOSBRI                  URF                  5      /n[K        U
5      (       a  URM                  SC5        OURO                  5       n[Q        U
UUR                  UR                   UUUR,                  UR.                  S6SD9	nOB[S        UR                  UR                   URF                  UUUR,                  UR.                  S6SE9nU(       a  U Vs/ s H  n[U        U5      PM     nnSFRW                  U5      nUR                  (       d  [Y        U5        U(       a  S;$ S:$ ! [2         aM  nUR                  (       d2  [        R                  R                  S<U [        R                   35         S nAg5S nAff = fs  sn	f s  snf ! [2         aM  nUR                  (       d2  [        R                  R                  S<U [        R                   35         S nAg5S nAff = f)GNz&An OpenType table diff tool for fonts.)descriptionz-lz	--summary
store_truez.Report table presence and binary equality only)actionhelpz-Uz--lines   z5Number of context lines for unified diff (default: 3))typedefaultro   z-tz	--include+z5Font tables to include. Multiple options are allowed.)rq   nargsrr   ro   z-xz	--excludez5Font tables to exclude. Multiple options are allowed.z--diffz.Run external diff tool command (default: diff))rq   ro   z
--diff-argz*External diff tool arguments (default: -u)z--color)autoneveralwaysru   z*Whether to colorize output (default: auto))choicesrr   ro   z--y1NUMBERzMSelect font number for TrueType Collection (.ttc/.otc) FILE1, starting from 0)rq   rr   metavarro   z--y2zMSelect font number for TrueType Collection (.ttc/.otc) FILE2, starting from 0z-az--alwaysz'Compare tables even if binary identicalz-bz--binaryz0Compare tables only if binaries differ (default)z-qz--quietzSuppress all outputFILE1zFont file path 1)ro   FILE2zFont file path 2zv[*] Error: --always and --binary are mutually exclusive options. Please use ONLY one of these options in your command.   Tz[*] ERROR: The file path 'z' can not be found.)r7   r8   r?   r@   r   r	   z[*] ERROR: rw   diffz.[*] ERROR: The external diff tool executable 'z' was not found.z-uz-u{}z-F^\s\s<)r7   r8   font_number_afont_number_buse_multiprocess)context_linesr7   r8   r   r   r   r1   )-argparseArgumentParseradd_argumentintrL   
parse_argsrw   binaryquietr   r0   r   r   linesepr   r|   r}   r   includeexcludesummaryr]   y1y2r   r(   ra   extendrM   r   colorr   r   r   diff_argrZ   formatr5   r    splitr   r   r
   rP   r-   )rc   parserargsinclude_listexclude_listrY   r   eexcluded_binary_tablesr;   r.   color_outputr   lines                 r,   r2   r2      s    $$<F =	   D   D   D   s!Q   9	   +9	   \   \   6	   ?	   i3H   &89
&89%006D {{t{{zzJJHHJ

|U ;; tzz""zzJJ,TZZL8KBJJ<X tzz""zzJJ,TZZL8KBJJ<X  *B$,,)OL)A$,,)OL||	 )



++"gg"gg!I ::

  (!1(q( {{!:JJJJ''''''"
 #++:P/P|  L #!'= >?		I::) 

f2!2!2  LL(		LL+	::

  		{"22::,@ /}}H::? $vH &djj 9:H	**OOK0#>>+&



++"gg"gg!%
F 



"jj++"gg"gg!%	F @FG-d3FGzzq!!e  	::

  ;qc"**!>?	| H  zzJJ{1#bjj\:;s^   A0W, =W, 	YYC?Y Y27Y *Y ,
Y6AX>>YY 
Z'AZ""Z')NN)NNry   ry   )r   r   r   r   r!   typingr   r   r   r   r   r   r   r
   r   r   r   utilsr   r   rL   r-   boolr5   r<   r   r]   ra   rj   r2   r:       r,   <module>r      s    	 
   B B * + 8# # #L-C -D -$ +/*.

3-
T#Y'
 T#Y'
 c]	
  +/*.@)@)@) T#Y'@) T#Y'	@)
 @) @) 49@)L +/*.$$$ T#Y'$ T#Y'	$
 $ $ 49$N(kd4j kr   