
    MZdN                     x   d Z ddlZddlZddlmZmZ ddlZdad Zddl	m
Z
 ddlmZ ddlmZ g d	Zd
addZd Zd Zd Zd Z ee      Zdeej1                  d      <   eD  ci c]  } |  e|        c} Zej5                  d eD               ed   ed<   ed   ed<   ded<   d Zd ZeD ci c]  }| e|       c}Zej5                  d eD               d Zd Z ee      Z de e j1                  d      <   e D  ci c]  } |  e|        c} Z!e!j5                  d e D               ed   e!d<   ed   e!d<   de!d<   ddd d!d"d#d$d%d&d'd(
Z"d)d*d+d,d-d.d/d0d1d2d3d4d5Z#d6 Z$d7 Z%d8 Z&d9 Z'd: Z(d; Z)d< Z*i Z+i Z,d=D ]  Z- e$e-      e+e-<    d>D ]  Z- e(e-      e,e-<    d?D ]  Z. e%e.      e+e.<     e/d@      D cg c]
  } e0|       c}D ]  Z1 e&e1      e+e1<    e)e1      e,e1<    dAD ]  Z2 e'e2      e+e2<    e*e2      e,e2<    i dBdC dDdE dFdG dHdI dJdK dLdM dNdO dPdQ dRdS dTdU dVdW dXdY dZd[ d\d] d^d_ d`da dbdc dd de dfZ3dg Z4dh Z5di Z6dj Z7dk Z8dl Z9dm Z:dn Z;i do e7do       e4do       e8do      fdofdp e7dp       e4dp       e8dp      fdpfdq e7dq       e5dq       e9dq      fdqfdr e7dr       e5dr       e9dr      fdrfds e7dt       e4ds       e8ds       e6ds      fdsfdu e7dt       e4du       e8du       e6du      fdufdv edw      dx edw       edy       edz      fdxfd{ edw       edz       edy      fd{fd| e7dq       e7dq       e9dq      f ed}      fd~ e7dr       e7dr       e9dr      f ed      fd e7dq       e5dq       e7dq      f ed      fd e7dr       e5dr       e7dr      f ed      fd e7d       ed       ed      f ed4      fd edz      d ed       edy      f ed      fd ed      d ed       edy       edz      dZ<dddddddvddddddddZ=d Z>d Z?d Z@ ed       ed       ed      dZAd ZB eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd       eBd      dZCi dddxdd{ddd ed      fdd ed      fdd ed      fddddddddēddƓddȓdd edʫ      fdd ed̫      r" edͫ      r ed̫       ed̫      z    edͫ      z   ndfdd edϫ      r* edϫ      r" edͫ      r edϫ       edϫ      z    edͫ      z   ndfdd edѫ      fZDd҄ ZEi d edԫ      d ed֫      d edث      d edث      xr d edث      z   d ed۫      d edݫ      d ed߫      d ed߫      xr  ed߫       ed      z   d ed      d ed      d ed      d ed      d ed      d ed      d ed      d edѫ      d ed      ddiZFddZGddZHd ZIeJj                   e e/ eLd       eLd                   e e/ eLd       eLd                  z         ZMd ZNd ZOd ZPyc c} w c c}w c c} w c c}w (   z=Symbolic primitives + unicode/ASCII abstraction for pretty.py    N)ascii_lowercaseascii_uppercase c                 d    	 t        j                  |       S # t        $ r t        d| z  z  aY yw xY w)z
    Get a unicode character by name or, None if not found.

    This exists because older versions of Python use older unicode databases.
    zNo '%s' in unicodedata
N)unicodedatalookupKeyErrorunicode_warnings)names    H/usr/lib/python3/dist-packages/sympy/printing/pretty/pretty_symbology.pyUr   
   s;    !!$'' 84??s    //)split_super_sub)greeks)sympy_deprecation_warning)greek_unicodesubsupxsymvobjhobjpretty_symbol	annotatedFc                 l    | t         S | r!t        rt        j                  t               dat         }| a |S )z8Set whether pretty-printer should use unicode by defaultr   )_use_unicoder
   warningswarn)flaguse_unicode_prevs     r   pretty_use_unicoder   )   s9     | &'#L    c                     t        t        j                  dd      } | yg }|t        j	                         z  }|t
        j	                         z  }|D ]  }| y	 |j                  |         t        d       y# t        $ r Y  yw xY w)z>See if unicode output is available and leverage it if possibleencodingNT)	getattrsysstdoutr   valuesatoms_tableencodeUnicodeEncodeErrorr   )r"   symbolsss      r   pretty_try_use_unicoder,   :   s     szz:t4H G }##%%G {!!##G 9	HHX t	 " 		s   A88	BBc                  .    t        ddd       t        |  S )Nzv
        The sympy.printing.pretty.pretty_symbology.xstr() function is
        deprecated. Use str() instead.
        z1.7z$deprecated-pretty-printing-functions)deprecated_since_versionactive_deprecations_target)r   str)argss    r   xstrr2   Y   s#    	 "'#I :r    c                 :    t        d| j                         z        S )NzGREEK SMALL LETTER %sr   upperls    r   <lambda>r8   e   s    a'!'')34 r    c                 :    t        d| j                         z        S )NzGREEK CAPITAL LETTER %sr4   r6   s    r   r8   r8   f   s    a)AGGI56 r    lamdalambdac              #   d   K   | ](  }|d    j                         |dd z   t        |      f * ywr      Nr5   G.0Ls     r   	<genexpr>rD   n   s.     IaadjjlQqrU*AaD1I   .0LamdaLambdau   ςvarsigmac                 :    t        d| j                         z        S NzMATHEMATICAL BOLD SMALL %sr4   r6   s    r   r8   r8   v   s    a,qwwy89 r    c                 :    t        d| j                         z        S )NzMATHEMATICAL BOLD CAPITAL %sr4   r6   s    r   r8   r8   w   s    a.:; r    c              #   6   K   | ]  }|t        |      f  y wN)BrA   s     r   rD   rD   z   s     7!Q!I7s   c                 :    t        d| j                         z        S rJ   r4   r6   s    r   r8   r8   }   s    q-	9: r    c                 :    t        d| j                         z        S )NzMATHEMATICAL BOLD CAPITAL  %sr4   r6   s    r   r8   r8   ~   s    q01779<= r    c              #   d   K   | ](  }|d    j                         |dd z   t        |      f * ywr=   r?   rA   s     r   rD   rD      s.     S11Q4::<!AB%/16SrE   u   𝛓ZEROONETWOTHREEFOURFIVESIXSEVENEIGHTNINE)
0123456789z	PLUS SIGNMINUSzEQUALS SIGNzLEFT PARENTHESISzRIGHT PARENTHESISzLEFT SQUARE BRACKETzRIGHT SQUARE BRACKETzLEFT CURLY BRACKETzRIGHT CURLY BRACKETzCURLY BRACKET	SUMMATIONINTEGRAL)+-=()[]{}{}sumintc                 :    t        d| j                         z        S )NzLATIN SUBSCRIPT SMALL LETTER %sr4   letters    r   r8   r8          a9FLLNJK r    c                 :    t        d| j                         z        S )NzGREEK SUBSCRIPT SMALL LETTER %sr4   rv   s    r   r8   r8      rx   r    c                 ,    t        dt        |    z        S NzSUBSCRIPT %sr   
digit_2txtdigits    r   r8   r8      s    aE)::; r    c                 ,    t        dt        |    z        S r{   r   	symb_2txtsymbs    r   r8   r8      s    a489 r    c                 :    t        d| j                         z        S )Nz!SUPERSCRIPT LATIN SMALL LETTER %sr4   rv   s    r   r8   r8      s    a;fllnLM r    c                 ,    t        dt        |    z        S NzSUPERSCRIPT %sr|   r~   s    r   r8   r8      s    a(:e+<<= r    c                 ,    t        dt        |    z        S r   r   r   s    r   r8   r8      s    a(9T?:; r    aeioruvxhklmnpstin)betagammarhophichi
   z+-=()mathringc                     t        | d      S )Nu   ̊center_accentr+   s    r   r8   r8      s    -+EF r    ddddotc                     t        | d      S )Nu   ⃜r   r   s    r   r8   r8      s    a)HI r    dddotc                     t        | d      S )Nu   ⃛r   r   s    r   r8   r8      s    }Q(HI r    ddotc                     t        | d      S )Nu   ̈r   r   s    r   r8   r8      s    mA'@A r    dotc                     t        | d      S )Nu   ̇r   r   s    r   r8   r8      s    ]1&?@ r    checkc                     t        | d      S )Nu   ̌r   r   s    r   r8   r8          }Q(=> r    brevec                     t        | d      S )Nu   ̆r   r   s    r   r8   r8      r   r    acutec                     t        | d      S )Nu   ́r   r   s    r   r8   r8          }Q(DE r    gravec                     t        | d      S )N   ̀r   r   s    r   r8   r8      r   r    tildec                     t        | d      S )Nu   ̃r   r   s    r   r8   r8      r   r    hatc                     t        | d      S )Nu   ̂r   r   s    r   r8   r8          ]1&GH r    barc                     t        | d      S )Nu   ̅r   r   s    r   r8   r8      s    ]1&>? r    vecc                     t        | d      S )Nu   ⃗r   r   s    r   r8   r8      r   r    primec                     | dz   S Nu   ′ r   s    r   r8   r8      s
    q} r    prmc                     | dz   S r   r   r   s    r   r8   r8      s
    Q{] r    normc                     d| z   dz   S )Nu   ‖r   r   s    r   r8   r8      s    023MM r    avgc                     d| z   dz   S )Nu   ⟨u   ⟩r   r   s    r   r8   r8      s    :1<=cc r    c                     d| z   dz   S N|r   r   s    r   r8   r8          (*+>> r    c                     d| z   dz   S r   r   r   s    r   r8   r8      r   r    )absmagc                 ,    t        dt        |    z        S )Nz%s UPPER HOOKr   r   s    r   r8   r8          1_y67 r    c                 ,    t        dt        |    z        S )Nz%s UPPER CORNERr   r   s    r   r8   r8          1&489 r    c                 ,    t        dt        |    z        S )Nz%s MIDDLE PIECEr   r   s    r   r8   r8      r   r    c                 ,    t        dt        |    z        S )Nz%s EXTENSIONr   r   s    r   r8   r8      s    1^io56 r    c                 ,    t        dt        |    z        S )Nz%s LOWER HOOKr   r   s    r   r8   r8      r   r    c                 ,    t        dt        |    z        S )Nz%s LOWER CORNERr   r   s    r   r8   r8      r   r    c                 ,    t        dt        |    z        S )Nz%s TOPr   r   s    r   r8   r8      s    1X	$/0 r    c                 ,    t        dt        |    z        S )Nz	%s BOTTOMr   r   s    r   r8   r8      s    1[9T?23 r    rl   rm   rn   ro   rp   rr   rq   r   zBOX DRAWINGS LIGHT VERTICAL<z5BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTz5BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT>lfloorz
LEFT FLOORrfloorzRIGHT FLOORlceilzLEFT CEILINGrceilzRIGHT CEILINGrt   zTOP HALF INTEGRALzBOTTOM HALF INTEGRALrs   _OVERLINEzN-ARY SUMMATIONrj   zBOX DRAWINGS LIGHT HORIZONTALzLOW LINE)/\)r   r   r   rl   )r   r   r   rm   ))rn   rn   rn   rn   ))ro   ro   ro   ro   ))r   r   r   r   rp   ))r   r   r   r   rq   )r   r   )r   r   )z | z  /z/  r   r   )rl   rm   rn   ro   rp   rq   r   r   r   rt   rj   r   r   r   c                    |dk  rt        d      t        rt        }nt        }||    }dx}x}x}}t	        |t
              s|}n5t	        |d   t
              r|d   }	|d   }n|}	|	d   }	 |	d   }|	d   }|	d   }||}||}||}||dz  dk(  r|dz  }n|}|dk(  r|S g }
|dz
  dz  }|dz
  |dz  z
  }|
|gz  }
|
|g|z  z  }
|
|g|z  z  }
|
|g|z  z  }
|
|gz  }
|
S # t        $ r Y nw xY w)zVConstruct spatial object of given length.

    return: [] of equal-length strings
    r   zLength should be greater than 0Nr>         )
ValueErrorr   _xobj_unicode_xobj_ascii
isinstancetuple
IndexError)r   length_xobjvinfoc1topbotmidextvlongresnextnmids                r   xobjr   =  sr    {:;; $KEBsSeU#eAh&!HEqBEAh	(C(C(C 
z
{
{
QJ1 aKF {	
CQJ?DQJ$q& DC5LCC5:CC5:CC5:CC5LCJ?  		s   *C 	C('C(c                 8    dj                  t        | |            S )zBConstruct vertical object of a given height

       see: xobj
    
joinr   )r   heights     r   r   r     s    
 99d4(**r    c                 8    dj                  t        | |            S )zCConstruct horizontal object of a given width

       see: xobj
    r   r   )r   widths     r   r   r     s    
 77Du%''r    zSQUARE ROOTz	CUBE ROOTzFOURTH ROOT)r   r      c                     t        d| z        S )NzVULGAR FRACTION %s)r   )txts    r   r8   r8     s    '#-. r    zONE HALFz	ONE THIRDz
TWO THIRDSzONE QUARTERzTHREE QUARTERSz	ONE FIFTHz
TWO FIFTHSzTHREE FIFTHSzFOUR FIFTHSz	ONE SIXTHzFIVE SIXTHSz
ONE EIGHTHzTHREE EIGHTHSzFIVE EIGHTHSzSEVEN EIGHTHS))r>   r   )r>   r   )r   r   )r>   r   )r   r   )r>      )r   r   )r   r   )r   r   )r>      )r   r   )r>      )r   r   )r   r   )   r   z==)rk   rk   )r   r   )r   r   z<=zLESS-THAN OR EQUAL TOz>=zGREATER-THAN OR EQUAL TOz!=zNOT EQUAL TO:=)r   r   +=)r   r   -=)r   r   *=)r   r   /=)r  r  %=)r  r  *zDOT OPERATORz-->zEM DASHzBLACK RIGHT-POINTING TRIANGLEz==>zBOX DRAWINGS DOUBLE HORIZONTAL.zRING OPERATORc                 4    t         |    }t        r|d   S |d   S )zget symbology for a 'character'r>   r   )_xsymr   )symops     r   r   r     s     	sB!u!ur    Exp1zSCRIPT SMALL EPizGREEK SMALL LETTER PIInfinityINFINITYNegativeInfinityImaginaryUnitzDOUBLE-STRUCK ITALIC SMALL IEmptySetz	EMPTY SETNaturalszDOUBLE-STRUCK CAPITAL N	Naturals0zSUBSCRIPT ZEROIntegerszDOUBLE-STRUCK CAPITAL Z	RationalszDOUBLE-STRUCK CAPITAL QRealszDOUBLE-STRUCK CAPITAL R	ComplexeszDOUBLE-STRUCK CAPITAL CUnionUNIONSymmetricDifference	INCREMENTIntersectionINTERSECTIONRingzModifier Letter Low RingEmptySequencec                     t         r-|"| dk(  r|j                  d   dk(  rt        d      S t        |    S ||S t	        d      )z'return pretty representation of an atomr  imaginary_unitjzDOUBLE-STRUCK ITALIC SMALL Jzonly unicode)r   	_settingsr   r'   r	   )	atom_namedefaultprinters      r   pretty_atomr%    sS    9#?GDUDUVfDgknDn344y))N~&&r    c                    t         s| S t        |       \  }}}fd ||      }d } ||t              }| ||t              }nd}|^|r,|ddj	                  |D cg c]  } ||       c}      z   z  }|r,|ddj	                  |D cg c]  } ||       c}      z   z  }|S dj	                  |      }	dj	                  |      }
dj	                  ||	|
g      S c c}w c c}w )z(return pretty representation of a symbolc           
         |rt         j                  |       }nt        j                  |       }||S t        t        j                         d d      D ]]  }| j                         j                  |      s#t        |       t        |      kD  s;t	        |    | d t        |        |            c S  |r&dj                  | D cg c]  }t        |    c}      S | S c c}w )Nc                     t        |       S rM   len)ks    r   r8   z2pretty_symbol.<locals>.translate.<locals>.<lambda>  s
    SV r    T)keyreverser   )greek_bold_unicodegetr   sortedmodifier_dictkeyslowerendswithr*  r   bold_unicode)r+   	bold_namegGr,  c	translates        r   r9  z pretty_symbol.<locals>.translate  s    #''*B""1%B>I-,,.OTR 	OCwwy!!#&3q6#c(?$S))AjCyM9*MNN	O 77Q7LO788 8s   Cc                     g }| D ]I  }|j                  |      }|#	 dj                  |D cg c]  }||   	 c}      }|j	                  |       K |S c c}w # t        t        f$ r Y  y w xY w)Nr   )r/  r   	TypeErrorr	   append)r7   mappingresultr+   prettyr8  s         r   pretty_listz"pretty_symbol.<locals>.pretty_list  s{     	"A[[^F~ WW!%<Qgaj%<=F MM&!	" 	 &=!8,   s!   AA
AAA+*A+Nr   __ r   )r   r   r   r   r   )	symb_namer6  r   supssubsr@  pretty_supspretty_subsr+   sups_resultsubs_resultr9  s              @r   r   r     s     &y1D$ T9%D
 dC(K!$, C4!Ha)Ay"9!HIIIDDT#JIa$;#JKKKDhh{+hh{+77D+{344 "I#Js   CC$c                 6    ddd}ddd}t         r||    S ||    S )a  
    Return a stylised drawing of the letter ``letter``, together with
    information on how to put annotations (super- and subscripts to the
    left and to the right) on it.

    See pretty.py functions _print_meijerg, _print_hyper on how to use this
    information.
    )r   r   r   r   u   ┌─
├─
╵)r   r   r   r>   u   ╭─╮
│╶┐
╰─╯)Fr@   )r   r   r   r   z _
|_
|
)r   r   r   r>   z __
/__
\_|)r   )rw   
ucode_pics
ascii_picss      r   r   r   >  s>    7L	J )+J
 &!!&!!r    r   u   ͯu   ⃐u   ⃰c                 $    t        |       t        v S )z,Check whether symbol is a unicode modifier. )ord_remove_combining)r  s    r   is_combiningrQ  \  s     s8(((r    c                 H    t        |       dz  dz   }| d| }| |d }||z   |z   S )a  
    Returns a string with accent inserted on the middle character. Useful to
    put combining accents on symbol names, including multi-character names.

    Parameters
    ==========

    string : string
        The string to place the accent in.
    accent : string
        The combining accent to insert

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Combining_character
    .. [2] https://en.wikipedia.org/wiki/Combining_Diacritical_Marks

    r   r>   Nr)  )stringaccentmidpoint	firstpart
secondparts        r   r   r   b  s?    . 6{a!#Hy!I	"Jv
**r    c                 >    t        | j                  t                    S )zxUnicode combining symbols (modifiers) are not ever displayed as
    separate symbols and thus should not be counted
    )r*  r9  rP  )lines    r   
line_widthrZ    s     t~~/011r    rM   )NN)F)Q__doc__r$   r   rS  r   r   r   r
   r   sympy.printing.conventionsr   sympy.core.alphabetsr   sympy.utilities.exceptionsr   __all__r   r   r,   r2   gr@   listgreek_lettersindexr   updatebrN   r5  gbGBgreek_bold_lettersr.  r}   r   LSUBGSUBDSUBSSUBLSUPDSUPSSUPr   r   r7   glranger0   dr+   r1  HUPCUPMIDEXTHLOCLOTOPBOTr   r   r   r   r   rootVFfracr  r   r'   r%  r   r   dictfromkeysrO  rP  rQ  r   rZ  )rC   r7   is   000r   <module>r     s   C 
  3   7 ' @ ">	 56V/6m!!(+ , #00QAaD0   I=I I (0h '0h @j  :;!01A1Q41   77 7 ;=&\ 9@ %++H5 6 (::!a1g:    S@RS S,W5 8 ,W5 8 !J :  
 !" ! 	$ LK;9M=; 
 A!WCF 
 A!WCF 1 B2hCG  )	$Q#a&	$ A!WCF!WCF 
 A!WCF!WCFF I I	
 A 
@ > > E E > 
H 
? 
H $  
"!0 M12 
c34 ?>7> 89967903( s3xS3s8-s3	(
 s3xS3s8-s3( s3xS3s8-s3( s3xS3s8-s3( s4y#c(CHc#h8#>( s4y#c(CHc#h8#>( A+,( a-.GHGHJKNP(  a-.GHGHJKNP!(( S3s8SX/<A)(* S3s8SX/=1AB+(, S3s8SX/>1BC-(. S3s8SX/?1CD/(2 
s5z10115K3LNPQR\P]^3(4 
qHI3PQR\P]_`  bY  `Z  [  ]^  _p  ]q  r5(< A-.=(> AjM?(L EFEFO(Z &% %$**%%#  9@AH+( 	~ / zN{O|} {O|~}{O}|~(	:	:	 :	 	D!+,-		
 	D!./0	 	D!N#$	 	<	 	<	 	<	 	<	 	<	 	<	 C>"#	 
E23I,12 Y<!I,.-./8<>	" 
E ././-. 56./0-./
 59:#	. C?#$/	6
q!12 	q!89 q}	
 q}F#*2E q!?@ q~ q!:; "; < !6!"#<!=!"#3!4"5 q!:; q!:;  q!:;!" q!:;#$ qz%& q~'( q0)* q1+, q!;<-. /6':5z"6 MM$uS1M-NPSTxPy'z"{"5-O)PRUVtRu#vw#x y )+:2e 1 2 ;v 
%s   $Z(.Z-?Z24Z7