a
    {dN                     @   s^  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dd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.< q0dJdK e/dLD D ]Z0e&e0e+e0< e)e0e,e0< qVdMD ]Z1e'e1e+e1< e*e1e,e1< qzdNd dOd dPd dQd dRd dSd dTd dUd dVd dWd dXd dYd dZd d[d d\d d]d d^d d_d d`d daZ2dbd Z3dcd Z4ddd Z5ded Z6dfd Z7dgd Z8dhd Z9did Z:e6dje3dje7djfdjfe6dke3dke7dkfdkfe6dle4dle8dlfdlfe6dme4dme8dmfdmfe6dne3doe7doe5dofdofe6dne3dpe7dpe5dpfdpfedqedqedredsfdtfedqedsedrfdufe6dle6dle8dlfedvfe6dme6dme8dmfedwfe6dle4dle6dlfedxfe6dme4dme6dmfedyfe6dzed{ed|fed>fedsd}ed~edrfedfedededredsdZ;dddddddddddd}ddd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ZBddddedfdedfdedfdddddddedfdedredreded ed ndfdedrJedrJedrJeded ed ndfdedfdÜZCddń ZDedƃedǃedȃedȃodedȃ edɃedʃed˃ed˃oed˃ed̃ ed̓ed΃edσedЃedуed҃edӃededԃdd֜ZEddd؄ZFdddڄZGdd܄ ZHeIJee/eKd݃eKdރee/eKd߃eKd ZLdd ZMdd ZNdd ZOdS )z=Symbolic primitives + unicode/ASCII abstraction for pretty.py    N)ascii_lowercaseascii_uppercase c                 C   s2   zt | W S  ty,   td|  7 aY dS 0 dS )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
   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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	annotatedFc                 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 ]8}|du rL dS z||  W q: typ   Y  dS 0 q: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_unicode:   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   xstrY   s    r*   c                 C   s   t d|   S )NzGREEK SMALL LETTER %sr   upperlr
   r
   r   <lambda>e       r/   c                 C   s   t d|   S )NzGREEK CAPITAL LETTER %sr+   r-   r
   r
   r   r/   f   r0   Zlamdalambdac                 C   s   i | ]}|t |qS r
   g.0Lr
   r
   r   
<dictcomp>m   r0   r7   c                 c   s.   | ]&}|d    |dd  t|fV  qdS r      Nr,   Gr4   r
   r
   r   	<genexpr>n   r0   r<   ZLamdaLambdau   ςZvarsigmac                 C   s   t d|   S NzMATHEMATICAL BOLD SMALL %sr+   r-   r
   r
   r   r/   v   r0   c                 C   s   t d|   S )NzMATHEMATICAL BOLD CAPITAL %sr+   r-   r
   r
   r   r/   w   r0   c                 C   s   i | ]}|t |qS r
   )b)r5   r.   r
   r
   r   r7   y   r0   c                 c   s   | ]}|t |fV  qd S N)Br4   r
   r
   r   r<   z   r0   c                 C   s   t d|   S r>   r+   r-   r
   r
   r   r/   }   r0   c                 C   s   t d|   S )NzMATHEMATICAL BOLD CAPITAL  %sr+   r-   r
   r
   r   r/   ~   r0   c                 C   s   i | ]}|t |qS r
   r2   r4   r
   r
   r   r7      r0   c                 c   s.   | ]&}|d    |dd  t|fV  qdS r8   r:   r4   r
   r
   r   r<      r0   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   s   t d|   S )NzLATIN SUBSCRIPT SMALL LETTER %sr+   letterr
   r
   r   r/      r0   c                 C   s   t d|   S )NzGREEK SUBSCRIPT SMALL LETTER %sr+   rY   r
   r
   r   r/      r0   c                 C   s   t dt|   S NzSUBSCRIPT %sr   
digit_2txtdigitr
   r
   r   r/      r0   c                 C   s   t dt|   S r[   r   	symb_2txtsymbr
   r
   r   r/      r0   c                 C   s   t d|   S )Nz!SUPERSCRIPT LATIN SMALL LETTER %sr+   rY   r
   r
   r   r/      r0   c                 C   s   t dt|   S NzSUPERSCRIPT %sr\   r^   r
   r
   r   r/      r0   c                 C   s   t dt|   S rd   r`   rb   r
   r
   r   r/      r0   Zaeioruvxhklmnpstin)betagammarhophichic                 C   s   g | ]}t |qS r
   )r(   )r5   ir
   r
   r   
<listcomp>   r0   rl   
   z+-=()c                 C   s
   t | dS )Nu   ̊center_accentr&   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ⃜rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ⃛rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̈rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̇rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̌rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̆rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ́rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )N   ̀rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̃rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̂rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ̅rn   rp   r
   r
   r   r/      r0   c                 C   s
   t | dS )Nu   ⃗rn   rp   r
   r
   r   r/      r0   c                 C   s   | d S Nu   ′r
   rp   r
   r
   r   r/      r0   c                 C   s   | d S rr   r
   rp   r
   r
   r   r/      r0   c                 C   s   d|  d S )Nu   ‖r
   rp   r
   r
   r   r/      r0   c                 C   s   d|  d S )Nu   ⟨u   ⟩r
   rp   r
   r
   r   r/      r0   c                 C   s   d|  d S N|r
   rp   r
   r
   r   r/      r0   c                 C   s   d|  d S rs   r
   rp   r
   r
   r   r/      r0   )ZmathringZddddotZdddotZddotdotcheckZbreveacuteZgravetildeZhatbarZvecprimeZprmZnormavgabsZmagc                 C   s   t dt|   S )Nz%s UPPER HOOKr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s UPPER CORNERr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s MIDDLE PIECEr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s EXTENSIONr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s LOWER HOOKr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s LOWER CORNERr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz%s TOPr`   rb   r
   r
   r   r/      r0   c                 C   s   t dt|   S )Nz	%s BOTTOMr`   rb   r
   r
   r   r/      r0   rP   rQ   rR   rS   rV   rT   rU   zBOX DRAWINGS LIGHT VERTICALz5BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTz5BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT<>z
LEFT FLOORzRIGHT FLOORzLEFT CEILINGzRIGHT CEILINGrX   zTOP HALF INTEGRALzBOTTOM HALF INTEGRAL_ZOVERLINEzN-ARY SUMMATIONzBOX DRAWINGS LIGHT HORIZONTALzLOW LINE)rP   rQ   rR   rS   rT   rU   rt   r}   r~   lfloorrfloorlceilrceilrX   rW   rN   r   /\)rt   r   r   rP   )rt   r   r   rQ   ))rR   rR   rR   rR   ))rS   rS   rS   rS   ))rt   r   r   r}   rT   ))rt   r   r   r~   rU   rt   )r   r}   )r   r~   )z | z  /z/  rN   r   r   )rP   rQ   rR   rS   rT   rU   rt   r}   r~   rX   rN   r   r   r   c                 C   sV  |dkrt dtrt}nt}||  }d } } }}t|tsF|}n\t|d trf|d }	|d }n|}	|	d }z|	d }|	d }|	d }W n ty   Y n0 |du r|}|du r|}|du r|}|dur|d dkr|d7 }n|}|dkr|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 0Nr9         )
ValueErrorr   _xobj_unicode_xobj_ascii
isinstancetuple
IndexError)rc   lengthZ_xobjZvinfoZc1topZbotZmidextZvlongresnextZnmidr
   r
   r   xobj=  sR    




r   c                 C   s   d t| |S )zBConstruct vertical object of a given height

       see: xobj
    
joinr   )rc   heightr
   r
   r   r     s    r   c                 C   s   d t| |S )zCConstruct horizontal object of a given width

       see: xobj
    r   r   )rc   widthr
   r
   r   r     s    r   zSQUARE ROOTz	CUBE ROOTzFOURTH ROOT)r   r      c                 C   s   t d|  S )NzVULGAR FRACTION %s)r   )txtr
   r
   r   r/     r0   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))r9   r   )r9   r   )r   r   )r9   r   )r   r   )r9      )r   r   )r   r   )r   r   )r9      )r   r   )r9      )r   r   )r   r   )   r   )rO   rO   )r}   r}   )r~   r~   <=zLESS-THAN OR EQUAL TO>=zGREATER-THAN OR EQUAL TO!=zNOT EQUAL TO):=r   )+=r   )-=r   )*=r   )/=r   )%=r   *zDOT OPERATOR-->zEM DASHzBLACK RIGHT-POINTING TRIANGLE==>zBOX DRAWINGS DOUBLE HORIZONTALzRING OPERATOR)z==r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   .c                 C   s    t |  }tr|d S |d S dS )zget symbology for a 'character'r9   r   N)_xsymr   )symopr
   r
   r   r     s    r   zSCRIPT SMALL EzGREEK SMALL LETTER PIINFINITYzDOUBLE-STRUCK ITALIC SMALL Iz	EMPTY SETzDOUBLE-STRUCK CAPITAL NzSUBSCRIPT ZEROzDOUBLE-STRUCK CAPITAL ZzDOUBLE-STRUCK CAPITAL QzDOUBLE-STRUCK CAPITAL RzDOUBLE-STRUCK CAPITAL CZUNIONZ	INCREMENTZINTERSECTIONModifier Letter Low RingEmptySequence)ZExp1PiInfinityNegativeInfinityImaginaryUnitZEmptySetZNaturalsZ	Naturals0ZIntegersZ	RationalsZRealsZ	ComplexesUnionZSymmetricDifferenceZIntersectionZRingr   r   c                 C   sL   t r4|dur*| dkr*|jd dkr*tdS t|  S n|dur@|S tddS )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rR||t}nd}|du r|r|dd fdd|D  7 }|r|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 ]F}|  |r<t| t|kr<t|  | d t|  |  S q<|rd	dd | D S | S )Nc                 S   s   t | S r@   len)kr
   r
   r   r/     r0   z2pretty_symbol.<locals>.translate.<locals>.<lambda>T)keyreverser   c                 S   s   g | ]}t | qS r
   )bold_unicoder5   cr
   r
   r   rl     r0   z4pretty_symbol.<locals>.translate.<locals>.<listcomp>)
greek_bold_unicodegetr   sortedmodifier_dictkeyslowerendswithr   r   )r&   	bold_nameZgGr   )	translater
   r   r     s    
&z pretty_symbol.<locals>.translatec              
      sf   g }| D ]X}  |}|d u rVzd fdd|D }W n ttfyT   Y  d S 0 || q|S )Nr   c                    s   g | ]} | qS r
   r
   r   mappingr
   r   rl   $  r0   z6pretty_symbol.<locals>.pretty_list.<locals>.<listcomp>)r   r   	TypeErrorr   append)r.   r   resultr&   prettyr
   r   r   pretty_list  s    

z"pretty_symbol.<locals>.pretty_listNr   c                    s   g | ]}| qS r
   r
   r5   r&   r   r   r
   r   rl   3  r0   z!pretty_symbol.<locals>.<listcomp>__c                    s   g | ]}| qS r
   r
   r   r   r
   r   rl   5  r0    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 d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   r9   u   ╭─╮
│╶┐
╰─╯)Fr;   )r   r   r   r   z _
|_
|
)r   r   r   r9   z __
/__
\_|N)r   )rZ   Z
ucode_picsZ
ascii_picsr
   r
   r   r   >  s    
	r   rq   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   r9   Nr   )stringZaccentZmidpointZ	firstpartZ
secondpartr
   r
   r   ro   b  s    ro   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   )N)NN)F)P__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*   r3   r;   listZgreek_lettersindexr   updater?   rA   r   gbZGBZgreek_bold_lettersr   r]   ra   ZLSUBZGSUBZDSUBZSSUBZLSUPZDSUPZSSUPr   r   r.   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   ro   r   r
   r
   r
   r   <module>   s  	
- D









=