
    q&fY                        d dl Z d dl mZmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
 e j                  rddlmZ eeef   Z	 	 	 	 ddd	d
ee   dededede	j"                  fdZ	 	 	 	 	 	 	 ddd	d
ee   dedededededede	j"                  fdZd Zy)    N)AnyDictOptional   )_)nullrev)mdiffpycompat)uir   zuimod.uiopts	untrustedsectionconfigprefixreturnc           
      (    t        | |||ddd|      S )z6return diffopts with all features supported and parsedT)r   r   r   git
whitespaceformatchangingr   )difffeatureopts)r   r   r   r   r   s        4/usr/lib/python3/dist-packages/mercurial/diffutil.pydiffalloptsr   !   s)     
!	 	    r   r   r   c           	          d j                   dfdt        dt        t           dt        t           dt        f fd} |d       |dd	       |d
 j
                        d}	 j                  dd      |	d<   |rp |d      |	d<    j                  dd      |	d<    j                  dd      }
|
<d}	 t        |
      }|dk  s|dkD  rt        d      } j                  ||z         ||	d<   |r0 |dd      |	d<    |dd       |	d <    |d!d"      |	d"<    |d#d$      |	d$<   |rZdnj                  d%      |	d%<   dnj                  d&      }|| n	 |d'd()      |	d'<    |d*d()      |	d*<    |d+d,d()      |	d-<   t        j                  d.i t        j                  |	      S # t        $ r< |
dk(  s|
dk(  rd}n,|
dk(  rd}n$|
dk7  rt        d      } j                  ||
z         Y w xY w# ||	d<   w xY w)/a  return diffopts with only opted-in features parsed

    Features:
    - git: git-style diffs
    - whitespace: whitespace options like ignoreblanklines and ignorews
    - formatchanging: options that will likely break or cause correctness issues
      with most diff parsers
    Nkeyname
forceplainr   c                     r%j                  |       }|st        |t              r|S |j                         r|S  ||xs | z   	      S )N)r   )get
isinstanceboolplain)
r   r   getterr   vr   r   r   r   r   s
        r   r   zdifffeatureopts.<locals>.getH   sY     A Jq$'!bhhj\T[S1Y
 	
r      nodatess   show_function   showfuncs   unified)r"   )r$   r%   s   contexts   experimentals   xdiffs   gits   extendedheader.similaritys   showsimilaritys   extendedheader.indexr   (   s.   invalid length for extendedheader.index: '%d'
s   shortr      s   fulls   nones-   invalid value for extendedheader.index: '%s'
s   indexs   ignore_all_spaces   ignorewss   ignore_space_changes   ignorewsamounts   ignore_blank_liness   ignoreblankliness   ignore_space_at_eols   ignorewseols   texts   binarys   nobinaryF)r   s   noprefixs	   word_diffs	   word-diffs   worddiff )
configboolbytesr   r    r   configintr   warn
ValueErrorr   r	   diffoptsr
   	strkwargs)r   r   r   r   r   r   r   r   r   	buildoptshconfhlenmsgbinarys   ````   `      r   r   r   5   sl   * !%}}%)	

uo
 TN	

 

 
2 
O);7
2995I
 --BIh
K	& (*}}9(
	#$ 		/+BCD+ 5z!8tbyNOCGGC$J' '+	(#!$%8+!F	+'*"$5(
	#$ *-!#6*
	%& %((>$O	.!%)\Ttxx7H	'488I+> ! J[U3 	+
 "%[U!C	+!$,5"
	+ >>:H..y9::E  )H$Dg%Dg%MNCGGC%K() '+	(#s%   74F& &AG+(G. *G++G. .G5c                 @   | j                         }|j                  j                  dd      r| j                         j	                         t
        k7  rddlm}m} |j                  |      }|j                  | j                                |j                  j                  ddid      5  |j                  j                         5  |j                  | j                         |       d	d	d	       d	d	d	       |S | j                         S # 1 sw Y   #xY w# 1 sw Y   |S xY w)
zget the context object to use as parent when diffing


    If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned.
       diffs   merger   )contextmerge)s   uis
   forcemerges#   internal:merge3-lie-about-conflictss
   merge-diff)wcN)repor   r)   p2revr    r8   r9   overlayworkingctxsetbasep1configoverridesilent)ctxr;   r8   r9   wctxs        r   diff_parentrF      s     88:Dww'8,71J	

 ((.SVVXWW## :	 
 
	/ ! /CFFH./
	/ vvx	/ /
	/ s$   (D"D%DD	DD)NFr7   r   )NFr7   FFFr   )typingr   r   r   i18nr   noder   r>   r	   r
   TYPE_CHECKINGr   uimodr*   _Optsr    r/   r   r   rF   r(   r   r   <module>rM      s      
 
 	UCZ
 !
5/  	
  ^^, ! i;i;
5/i; i; 	i;
 
i; i; i; i; ^^i;Xr   