o
    GZh0^                     @   sd
  d Z ddlZddlZddlmZmZ ddlZdadd Zddl	m
Z
 ddlmZ dd	lmZ g d
ZdadOddZdd Zdd Zdd Zdd ZeeZdeed< dd eD Zedd eD  ed ed< ed ed< ded< dd Zd d Zd!d eD Zed"d eD  d#d Zd$d ZeeZ de e d< d%d e D Z!e!d&d e D  ed e!d< ed e!d< d'e!d< d(d)d*d+d,d-d.d/d0d1d2
Z"d3d4d5d6d7d8d9d:d;d<d=d>d?Z#d@d Z$dAd Z%dBd Z&dCd Z'dDd Z(dEd Z)dFd Z*i Z+i Z,dGD ]	Z-e$e-e+e-< qdHD ]	Z-e(e-e,e-< qdID ]	Z.e%e.e+e.< qdJdK e/dLD D ]Z0e&e0e+e0< e)e0e,e0< q,dMD ]Z1e'e1e+e1< e*e1e,e1< q>i dNdOd dPdQd dRdSd dTdUd dVdWd dXdYd dZd[d d\d]d d^d_d d`dad dbdcd ddded dfdgd dhdid djdkd dldmd dndod dpd dqd drZ2dsd Z3dtd Z4dud Z5dvd Z6dwd Z7dxd Z8dyd Z9dzd Z:i d{e6d{e3d{e7d{fd{fd|e6d|e3d|e7d|fd|fd}e6d}e4d}e8d}fd}fd~e6d~e4d~e8d~fd~fde6de3de7de5dfdfde6de3de7de5dfdfdeddeddeddeddeddeddeddeddeddedededfdfdedededfdfe6d}e6d}e8d}fedfe6d~e6d~e8d~fedfe6d}e4d}e6d}fedfe6d~e4d~e6d~fedfe6dededfed>feddededfedfededededd
Z;dddddddddddddddZ<dd Z=dd Z>dd Z?edededdZ@dd ZAeAdeAdeAdeAdeAdeAdeAdÃeAdăeAdŃeAdƃeAdǃeAdȃeAdɃeAdʃeAd˃d̜ZBi ddΓddϓddГdded҃fddedԃfddedփfddؓddړddܓddޓddddddedfddedredreded ed ndfddedredredreded ed ndfddedfZCdd ZDi deddeddeddedoded deddeddeddedoeded dedded deddeddeddedd	ed
deddedi 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d ed d!d!d"ed#d$ed%d&ed'd(ed)d*ed+d,ed-ed.ed/ed0ed1ed2ed3ed2ed3ed4ed5ed6ededd7ZEdPd8d9ZFdQd:d;ZGd<d= ZHeIJee/eKd>eKd?ee/eKd@eKdA ZLdBdC ZMdDdE ZNdFdG ZOdHdI ZPdRdKdLZQdRdMdNZRdS (S  z=Symbolic primitives + unicode/ASCII abstraction for pretty.py    N)ascii_lowercaseascii_uppercase c                 C   s.   zt | W S  ty   td|  7 aY dS 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)name r
   U/var/www/auris/lib/python3.10/site-packages/sympy/printing/pretty/pretty_symbology.pyU
   s   r   )split_super_sub)greeks)sympy_deprecation_warning)
greek_unicodesubsupxsymvobjhobjpretty_symbol	annotated
center_padcenterFc                 C   s.   | du rt S | rtrtt dat }| a |S )z8Set whether pretty-printer should use unicode by defaultNr   )_use_unicoder   warningswarn)flagZuse_unicode_prevr
   r
   r   pretty_use_unicode)   s   
r   c               	   C   s~   t tjdd} | du rdS g }|t 7 }|t 7 }|D ]}|du r& dS z||  W q ty8   Y  dS w td dS )z>See if unicode output is available and leverage it if possibleencodingNT)	getattrsysstdoutr   valuesatoms_tableencodeUnicodeEncodeErrorr   )r   symbolssr
   r
   r   pretty_try_use_unicode9   s   r)   c                  G   s   t d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)Zdeprecated_since_versionZactive_deprecations_target)r   str)argsr
   r
   r   xstrX   s   r,   c                 C      t d|   S )NzGREEK SMALL LETTER %sr   upperlr
   r
   r   <lambda>d       r2   c                 C   r-   )NzGREEK CAPITAL LETTER %sr.   r0   r
   r
   r   r2   e   r3   Zlamdalambdac                 C      i | ]}|t |qS r
   g.0Lr
   r
   r   
<dictcomp>l       r;   c                 c   0    | ]}|d    |dd  t|fV  qdS r      Nr/   Gr8   r
   r
   r   	<genexpr>m      . rB   ZLamdaLambdau   ςZvarsigmac                 C   r-   NzMATHEMATICAL BOLD SMALL %sr.   r0   r
   r
   r   r2   u   r3   c                 C   r-   )NzMATHEMATICAL BOLD CAPITAL %sr.   r0   r
   r
   r   r2   v   r3   c                 C   r5   r
   )b)r9   r1   r
   r
   r   r;   x   r<   c                 c   s    | ]	}|t |fV  qd S N)Br8   r
   r
   r   rB   y   s    c                 C   r-   rE   r.   r0   r
   r
   r   r2   |   r3   c                 C   r-   )NzMATHEMATICAL BOLD CAPITAL  %sr.   r0   r
   r
   r   r2   }   r3   c                 C   r5   r
   r6   r8   r
   r
   r   r;      r<   c                 c   r=   r>   r@   r8   r
   r
   r   rB      rC   u   𝛓ZZEROZONEZTWOZTHREEZFOURZFIVEZSIXZSEVENZEIGHTZ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 BRACKETZ	SUMMATIONZINTEGRAL)+-=()[]{}{}sumintc                 C   r-   )NzLATIN SUBSCRIPT SMALL LETTER %sr.   letterr
   r
   r   r2      r3   c                 C   r-   )NzGREEK SUBSCRIPT SMALL LETTER %sr.   r`   r
   r
   r   r2      r3   c                 C      t dt|   S NzSUBSCRIPT %sr   
digit_2txtdigitr
   r
   r   r2      r3   c                 C   rb   rc   r   	symb_2txtsymbr
   r
   r   r2      r3   c                 C   r-   )Nz!SUPERSCRIPT LATIN SMALL LETTER %sr.   r`   r
   r
   r   r2      r3   c                 C   rb   NzSUPERSCRIPT %srd   rf   r
   r
   r   r2      r3   c                 C   rb   rl   rh   rj   r
   r
   r   r2      r3   Zaeioruvxhklmnpstin)betagammarhophichic                 C   s   g | ]}t |qS r
   )r*   )r9   ir
   r
   r   
<listcomp>       rt   
   z+-=()Zmathringc                 C   
   t | dS )Nu   ̊center_accentr(   r
   r
   r   r2         
 Zddddotc                 C   rw   )Nu   ⃜rx   rz   r
   r
   r   r2      r{   Zdddotc                 C   rw   )Nu   ⃛rx   rz   r
   r
   r   r2      r{   Zddotc                 C   rw   )Nu   ̈rx   rz   r
   r
   r   r2      r{   dotc                 C   rw   )Nu   ̇rx   rz   r
   r
   r   r2      r{   checkc                 C   rw   )Nu   ̌rx   rz   r
   r
   r   r2      r{   Zbrevec                 C   rw   )Nu   ̆rx   rz   r
   r
   r   r2      r{   acutec                 C   rw   )Nu   ́rx   rz   r
   r
   r   r2      r{   Zgravec                 C   rw   )N   ̀rx   rz   r
   r
   r   r2      r{   tildec                 C   rw   )Nu   ̃rx   rz   r
   r
   r   r2      r{   Zhatc                 C   rw   )Nu   ̂rx   rz   r
   r
   r   r2      r{   barc                 C   rw   )Nu   ̅rx   rz   r
   r
   r   r2      r{   Zvecc                 C   rw   )Nu   ⃗rx   rz   r
   r
   r   r2      r{   primec                 C      | d S Nu   ′r
   rz   r
   r
   r   r2          Zprmc                 C   r   r   r
   rz   r
   r
   r   r2      r   Znormc                 C      d|  d S )Nu   ‖r
   rz   r
   r
   r   r2          Zavgc                 C   s   d|  d S )Nu   ⟨u   ⟩r
   rz   r
   r
   r   r2      r   c                 C   r   N|r
   rz   r
   r
   r   r2      r   c                 C   r   r   r
   rz   r
   r
   r   r2      r   )absmagc                 C   rb   )Nz%s UPPER HOOKrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s UPPER CORNERrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s MIDDLE PIECErh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s EXTENSIONrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s LOWER HOOKrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s LOWER CORNERrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz%s TOPrh   rj   r
   r
   r   r2      r3   c                 C   rb   )Nz	%s BOTTOMrh   rj   r
   r
   r   r2      r3   rW   rX   rY   rZ   r[   r]   r\   r   zBOX DRAWINGS LIGHT VERTICALZTeez$BOX DRAWINGS LIGHT UP AND HORIZONTALZUpTackz&BOX DRAWINGS LIGHT DOWN AND HORIZONTALzcorner_up_centre(_extzLEFT PARENTHESIS EXTENSIONz)_extzRIGHT PARENTHESIS EXTENSIONz(_lower_hookzLEFT PARENTHESIS LOWER HOOKz)_lower_hookzRIGHT PARENTHESIS LOWER HOOKz(_upper_hookzLEFT PARENTHESIS UPPER HOOKz)_upper_hookzRIGHT PARENTHESIS UPPER HOOK<z5BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTz5BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT>z
LEFT FLOORzRIGHT FLOORzLEFT CEILINGzRIGHT CEILINGr_   zTOP HALF INTEGRALzBOTTOM HALF INTEGRAL_ZOVERLINEzN-ARY SUMMATIONzBOX DRAWINGS LIGHT HORIZONTALzLOW LINE)
lfloorrfloorlceilrceilr_   r^   rU   r   /\)r   r   r   rW   )r   r   r   rX   ))rY   rY   rY   rY   ))rZ   rZ   rZ   rZ   ))r   r   r   r   r[   ))r   r   r   r   r\   )r   r   )r   r   )z | z  /z/  rU   r   r   )rW   rX   rY   rZ   r[   r\   r   r   r   r_   rU   r   r   r   c                 C   sV  |dkrt dtrt}nt}||  }d } } }}t|ts#|}n.t|d tr3|d }	|d }n|}	|	d }z|	d }|	d }|	d }W n	 tyP   Y nw |du rW|}|du r]|}|du rc|}|durr|d dkrq|d7 }n|}|dkrz|S g }
|d d }|d |d  }|
|g7 }
|
|g| 7 }
|
|g| 7 }
|
|g| 7 }
|
|g7 }
|
S )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)rk   lengthZ_xobjZvinfoc1topZbotmidextZvlongresnextZnmidr
   r
   r   xobjD  sV   



r   c                 C      d t| |S )zBConstruct vertical object of a given height

       see: xobj
    
joinr   )rk   heightr
   r
   r   r        r   c                 C   r   )zCConstruct horizontal object of a given width

       see: xobj
    r   r   )rk   widthr
   r
   r   r     r   r   zSQUARE ROOTz	CUBE ROOTzFOURTH ROOT)r   r      c                 C   s   t d|  S )NzVULGAR FRACTION %s)r   )txtr
   r
   r   r2     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==)rV   rV   )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                 C   s   t |  }tr
|d S |d S )zget symbology for a 'character'r?   r   )_xsymr   )symopr
   r
   r   r     s   r   ZExp1zSCRIPT SMALL EPizGREEK SMALL LETTER PIInfinityINFINITYNegativeInfinityImaginaryUnitzDOUBLE-STRUCK ITALIC SMALL IZEmptySetz	EMPTY SETZNaturalszDOUBLE-STRUCK CAPITAL NZ	Naturals0zSUBSCRIPT ZEROZIntegerszDOUBLE-STRUCK CAPITAL ZZ	RationalszDOUBLE-STRUCK CAPITAL QZRealszDOUBLE-STRUCK CAPITAL RZ	ComplexeszDOUBLE-STRUCK CAPITAL CZUniversez$MATHEMATICAL DOUBLE-STRUCK CAPITAL UZIdentityMatrixz$MATHEMATICAL DOUBLE-STRUCK CAPITAL IZ
ZeroMatrixz%MATHEMATICAL DOUBLE-STRUCK DIGIT ZEROZ	OneMatrixz$MATHEMATICAL DOUBLE-STRUCK DIGIT ONEZDifferentialzDOUBLE-STRUCK ITALIC SMALL DUnionZUNIONZ	ElementOfz
ELEMENT OFZSmallElementOfzSMALL ELEMENT OFZSymmetricDifferenceZ	INCREMENTZIntersectionZINTERSECTIONZRingZMultiplicationzMULTIPLICATION SIGNZTensorProductzN-ARY CIRCLED TIMES OPERATORZDotszHORIZONTAL ELLIPSISzModifier Letter Low RingZEmptySequenceZSuperscriptPluszSUPERSCRIPT PLUS SIGNZSuperscriptMinuszSUPERSCRIPT MINUSDaggerZDAGGERZDegreezDEGREE SIGNAndzLOGICAL ANDOrz
LOGICAL ORzNOT SIGNZNORZNANDZXORzLEFT RIGHT DOUBLE ARROWz#LEFT RIGHT DOUBLE ARROW WITH STROKEzRIGHTWARDS ARROWzRIGHTWARDS ARROW FROM BARzRIGHTWARDS ARROW WITH STROKE)NotZNorZNandZXorZEquivZNotEquivZImpliesZ
NotImpliesArrowZArrowFromBarZNotArrowZ	TautologyZContradictionc                 C   sF   t r|dur| dkr|jd dkrtdS t|  S |dur|S td)z'return pretty representation of an atomNr   Zimaginary_unitjzDOUBLE-STRUCK ITALIC SMALL Jzonly unicode)r   Z	_settingsr   r$   r   )Z	atom_namedefaultprinterr
   r
   r   pretty_atom  s   r   c           
         s   t s| S t| \}}}fdd| }dd }||t}|dur)||t}nd}|du rW|rB|dd fdd|D  7 }|rU|d	d	 fd
d|D  7 }|S d|}d|}	d|||	gS )z(return pretty representation of a symbolc                    s   |rt | }nt| }|d ur|S tt dd ddD ]#}|  |rAt| t|krAt|  | d t|  |  S q|rNd	dd | D S | S )Nc                 S   s   t | S rG   len)kr
   r
   r   r2   8  r   z2pretty_symbol.<locals>.translate.<locals>.<lambda>T)keyreverser   c                 S   s   g | ]}t | qS r
   )bold_unicoder9   cr
   r
   r   rt   <  ru   z4pretty_symbol.<locals>.translate.<locals>.<listcomp>)
greek_bold_unicodegetr   sortedmodifier_dictkeyslowerendswithr   r   )r(   	bold_nameZgGr   )	translater
   r   r   1  s   
$z pretty_symbol.<locals>.translatec              
      sf   g }| D ],}  |}|d u r+zd fdd|D }W n ttfy*   Y  d S w || q|S )Nr   c                    s   g | ]} | qS r
   r
   r   mappingr
   r   rt   I  ru   z6pretty_symbol.<locals>.pretty_list.<locals>.<listcomp>)r   r   	TypeErrorr   append)r1   r   resultr(   prettyr
   r   r   pretty_listC  s   
z"pretty_symbol.<locals>.pretty_listNr   c                       g | ]}| qS r
   r
   r9   r(   r   r   r
   r   rt   X  r<   z!pretty_symbol.<locals>.<listcomp>__c                    r   r
   r
   r   r   r
   r   rt   Z  r<    r   )r   r   r   r   r   )
Z	symb_namer   r	   Zsupssubsr   Zpretty_supsZpretty_subsZsups_resultZsubs_resultr
   r   r   r   &  s&   

""

r   c                 C   s(   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   ╭─╮
│╶┐
╰─╯)FrA   )r   r   r   r   z _
|_
|
)r   r   r   r?   z __
/__
\_|)r   )ra   Z
ucode_picsZ
ascii_picsr
   r
   r   r   c  s   
	r   r   u   ͯu   ⃐u   ⃰c                 C   s   t | tv S )z,Check whether symbol is a unicode modifier. )ord_remove_combining)r   r
   r
   r   is_combining  s   r   c                 C   s4   t | d d }| d| }| |d }|| | 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   )stringZaccentZmidpointZ	firstpartZ
secondpartr
   r
   r   ry     s   ry   c                 C   s   t | tS )zxUnicode combining symbols (modifiers) are not ever displayed as
    separate symbols and thus should not be counted
    )r   r   r   )liner
   r
   r   
line_width  s   r   c                 C   s   t dd | D S )av  
    Checks whether a string is subscriptable in unicode or not.

    Parameters
    ==========

    subscript: the string which needs to be checked

    Examples
    ========

    >>> from sympy.printing.pretty.pretty_symbology import is_subscriptable_in_unicode
    >>> is_subscriptable_in_unicode('abc')
    False
    >>> is_subscriptable_in_unicode('123')
    True

    c                 s   s    | ]}|t v V  qd S rG   )r   )r9   	characterr
   r
   r   rB     s    z.is_subscriptable_in_unicode.<locals>.<genexpr>)all)Z	subscriptr
   r
   r   is_subscriptable_in_unicode  s   r   r   c                 C   s@   | |krt d||  }|d }|| }|| }|| }||fS )z
    Return the padding strings necessary to center a string of
    wstring characters wide in a wtarget wide space.

    The line_width wstring should always be less or equal to wtarget
    or else a ValueError will be raised.
    znot enough space for stringr   )r   )ZwstringZwtargetfillcharZwdeltaZwleftZwrightleftrightr
   r
   r   r     s   r   c                 C   s$   t t| ||\}}d|| |gS )zhReturn a centered string of length determined by `line_width`
    that uses `fillchar` for padding.
    r   )r   r   r   )r   r   r   r   r   r
   r
   r   r     s   r   rG   )NN)F)r   )S__doc__r!   r   r   r   r   r   r   r   Zsympy.printing.conventionsr   Zsympy.core.alphabetsr   Zsympy.utilities.exceptionsr   __all__r   r   r)   r,   r7   rA   listZgreek_lettersindexr   updaterF   rH   r   gbGBZgreek_bold_lettersr   re   ri   ZLSUBZGSUBZDSUBZSSUBZLSUPZDSUPZSSUPr   r   r1   glrangedr(   r   ZHUPZCUPZMIDZEXTZHLOZCLOZTOPZBOTr   r   r   r   r   rootZVFfracr   r   r$   r   r   r   dictfromkeysr   r   r   ry   r   r   r   r   r
   r
   r
   r   <module>   s   		
  	
5 D
	

	


 !"#$%'()
9=