U
    ZÊ¹j:^  ã                0   @   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 d
dddddddddg
Zda�dd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%< d0e!d'< d1d2d3d4d5d6d7d8d9d:d;œ
Z"d<d=d>d?d@dAdBdCdDdEdFdGdHœZ#dId„ Z$dJd„ Z%dKd„ Z&dLd„ Z'dMd„ Z(dNd„ Z)dOd„ Z*i Z+i Z,dPD ]Z-e$e-ƒe+e-< �qdQD ]Z-e(e-ƒe,e-< �q*dRD ]Z.e%e.ƒe+e.< �qBdSdT„ e/dUƒD ƒD ]Z0e&e0ƒe+e0< e)e0ƒe,e0< �qhdVD ]Z1e'e1ƒe+e1< e*e1ƒe,e1< �qŒdWd„ dXd„ dYd„ dZd„ d[d„ d\d„ d]d„ d^d„ d_d„ d`d„ dad„ dbd„ dcd„ ddd„ ded„ dfd„ dgd„ dhd„ did„ djœZ2dkd„ Z3dld„ Z4dmd„ Z5dnd„ Z6dod„ Z7dpd„ Z8dqd„ Z9drd„ Z:e6dsƒe3dsƒe7dsƒfdsfe6dtƒe3dtƒe7dtƒfdtfe6duƒe4duƒe8duƒfdufe6dvƒe4dvƒe8dvƒfdvfe6dwƒe3dxƒe7dxƒe5dxƒfdxfe6dwƒe3dyƒe7dyƒe5dyƒfdyfedzƒed{ƒed|ƒed}ƒed~ƒedƒed€ƒed�ƒed‚ƒedzƒedƒƒed„ƒfd…fedzƒed„ƒedƒƒfd†fe6duƒe6duƒe8duƒfed‡ƒfe6dvƒe6dvƒe8dvƒfedˆƒfe6duƒe4duƒe6duƒfed‰ƒfe6dvƒe4dvƒe6dvƒfedŠƒfe6d‹ƒedŒƒed�ƒfedGƒfed„ƒdŽed�ƒedƒƒfed�ƒfed‘ƒed’ƒedƒƒed„ƒd“œZ;d”d•d–d—d˜d™dšd›dœd�dždŽdŸd d¡œZ<d¢d£„ Z=d¤d„ Z>d¥d„ Z?ed¦ƒed§ƒed¨ƒd©œZ@dªd„ ZAeAd«ƒeAd¬ƒeAd­ƒeAd®ƒeAd¯ƒeAd°ƒeAd±ƒeAd²ƒeAd³ƒeAd´ƒeAdµƒeAd¶ƒeAd·ƒeAd¸ƒeAd¹ƒdºœZBd»d¼d½d¾ed¿ƒfdÀedÁƒfdÂedÃƒfdÄdÅdÆdÇdÈdÉdÊedËƒfdÌedÍƒ�rPedÎƒ�rPedÍƒedÍƒ edÎƒ ndfdÏedÐƒ�rŒedÐƒ�rŒedÎƒ�rŒedÐƒedÐƒ edÎƒ ndfdÊedÑƒfdÒœZCdÓd„ ZDedÔƒedÕƒedÖƒedÖƒ�oÎdžedÖƒ ed×ƒedØƒedÙƒedÙƒ�oøedÙƒedÚƒ edÛƒedÜƒedÝƒedÞƒedßƒedàƒedáƒedâƒedãƒedäƒedåƒedæƒedçƒedèƒedÑƒedéƒedêƒedëƒedìƒdíedîƒedïƒedðƒedñƒedòƒedóƒedôƒedõƒedöƒed÷ƒedøƒedùƒedøƒedùƒedúƒedûƒedüƒed{ƒed|ƒdýœ/ZE�ddþdÿ„ZF�d�d d„ZG�dd„ ZHeI Jee/eK�dƒeK�dƒƒƒee/eK�dƒeK�dƒƒƒ ¡ZL�d�d„ ZM�d�d	„ ZN�d
�d„ ZO�d�d„ ZP�d�dd„ZQ�d�dd„ZRdS (  z=Symbolic primitives + unicode/ASCII abstraction for pretty.pyé    N)Úascii_lowercaseÚascii_uppercaseÚ c                 C   s4   zt  | ¡W S  tk
r.   td|  7 aY dS X 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
   úe/var/www/html/bwave/python/venv/lib/python3.8/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k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krdS g }|t ¡ 7 }|t ¡ 7 }|D ]:}|dkrL dS z| | ¡ W q: tk
rr   Y  dS X 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   ó    r1   c                 C   s   t d|  ¡  ƒS )NzGREEK CAPITAL LETTER %sr-   r/   r
   r
   r   r1   f   r2   ZlamdaÚlambdac                 C   s   i | ]}|t |ƒ“qS r
   ©Úg©Ú.0ÚLr
   r
   r   Ú
<dictcomp>m   s      r9   c                 c   s.   | ]&}|d    ¡ |dd…  t|ƒfV  qdS ©r   é   N©r.   ÚGr6   r
   r
   r   Ú	<genexpr>n   s     r>   ZLamdaÚLambdau   Ï‚Zvarsigmac                 C   s   t d|  ¡  ƒS ©NzMATHEMATICAL BOLD SMALL %sr-   r/   r
   r
   r   r1   v   r2   c                 C   s   t d|  ¡  ƒS )NzMATHEMATICAL BOLD CAPITAL %sr-   r/   r
   r
   r   r1   w   r2   c                 C   s   i | ]}|t |ƒ“qS r
   )Úb)r7   r0   r
   r
   r   r9   y   s      c                 c   s   | ]}|t |ƒfV  qd S ©N)ÚBr6   r
   r
   r   r>   z   s     c                 C   s   t d|  ¡  ƒS r@   r-   r/   r
   r
   r   r1   }   r2   c                 C   s   t d|  ¡  ƒS )NzMATHEMATICAL BOLD CAPITAL  %sr-   r/   r
   r
   r   r1   ~   r2   c                 C   s   i | ]}|t |ƒ“qS r
   r4   r6   r
   r
   r   r9   …   s      c                 c   s.   | ]&}|d    ¡ |dd…  t|ƒfV  qdS r:   r<   r6   r
   r
   r   r>   †   s     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   r1   ª   r2   c                 C   s   t d|  ¡  ƒS )NzGREEK SUBSCRIPT SMALL LETTER %sr-   r[   r
   r
   r   r1   «   r2   c                 C   s   t dt|   ƒS ©NzSUBSCRIPT %s©r   Ú
digit_2txt©Údigitr
   r
   r   r1   ¬   r2   c                 C   s   t dt|   ƒS r]   ©r   Ú	symb_2txt©Úsymbr
   r
   r   r1   ­   r2   c                 C   s   t d|  ¡  ƒS )Nz!SUPERSCRIPT LATIN SMALL LETTER %sr-   r[   r
   r
   r   r1   ¯   r2   c                 C   s   t dt|   ƒS ©NzSUPERSCRIPT %sr^   r`   r
   r
   r   r1   °   r2   c                 C   s   t dt|   ƒS rf   rb   rd   r
   r
   r   r1   ±   r2   ZaeioruvxhklmnpstÚin)ÚbetaÚgammaÚrhoÚphiÚchic                 C   s   g | ]}t |ƒ‘qS r
   )r*   )r7   Úir
   r
   r   Ú
<listcomp>À   s     rn   é
   z+-=()c                 C   s
   t | dƒS )Nu   ÌŠ©Úcenter_accent©r(   r
   r
   r   r1   Ì   r2   c                 C   s
   t | dƒS )Nu   âƒœrp   rr   r
   r
   r   r1   Í   r2   c                 C   s
   t | dƒS )Nu   âƒ›rp   rr   r
   r
   r   r1   Î   r2   c                 C   s
   t | dƒS )Nu   Ìˆrp   rr   r
   r
   r   r1   Ï   r2   c                 C   s
   t | dƒS )Nu   Ì‡rp   rr   r
   r
   r   r1   Ð   r2   c                 C   s
   t | dƒS )Nu   ÌŒrp   rr   r
   r
   r   r1   Ñ   r2   c                 C   s
   t | dƒS )Nu   Ì†rp   rr   r
   r
   r   r1   Ò   r2   c                 C   s
   t | dƒS )Nu   Ì�rp   rr   r
   r
   r   r1   Ó   r2   c                 C   s
   t | dƒS )Nõ   Ì€rp   rr   r
   r
   r   r1   Ô   r2   c                 C   s
   t | dƒS )Nu   Ìƒrp   rr   r
   r
   r   r1   Õ   r2   c                 C   s
   t | dƒS )Nu   Ì‚rp   rr   r
   r
   r   r1   Ö   r2   c                 C   s
   t | dƒS )Nu   Ì…rp   rr   r
   r
   r   r1   ×   r2   c                 C   s
   t | dƒS )Nu   âƒ—rp   rr   r
   r
   r   r1   Ø   r2   c                 C   s   | d S ©Nu   â€²r
   rr   r
   r
   r   r1   Ù   r2   c                 C   s   | d S rt   r
   rr   r
   r
   r   r1   Ú   r2   c                 C   s   d|  d S )Nu   â€–r
   rr   r
   r
   r   r1   â   r2   c                 C   s   d|  d S )Nu   âŸ¨u   âŸ©r
   rr   r
   r
   r   r1   ã   r2   c                 C   s   d|  d S ©Nú|r
   rr   r
   r
   r   r1   ä   r2   c                 C   s   d|  d S ru   r
   rr   r
   r
   r   r1   å   r2   )ZmathringZddddotZdddotZddotÚdotÚcheckZbreveÚacuteZgraveÚtildeZhatÚbarZvecÚprimeZprmZnormÚavgÚabsÚmagc                 C   s   t dt|   ƒS )Nz%s UPPER HOOKrb   rd   r
   r
   r   r1   é   r2   c                 C   s   t dt|   ƒS )Nz%s UPPER CORNERrb   rd   r
   r
   r   r1   ê   r2   c                 C   s   t dt|   ƒS )Nz%s MIDDLE PIECErb   rd   r
   r
   r   r1   ë   r2   c                 C   s   t dt|   ƒS )Nz%s EXTENSIONrb   rd   r
   r
   r   r1   ì   r2   c                 C   s   t dt|   ƒS )Nz%s LOWER HOOKrb   rd   r
   r
   r   r1   í   r2   c                 C   s   t dt|   ƒS )Nz%s LOWER CORNERrb   rd   r
   r
   r   r1   î   r2   c                 C   s   t dt|   ƒS )Nz%s TOPrb   rd   r
   r
   r   r1   ï   r2   c                 C   s   t dt|   ƒS )Nz	%s BOTTOMrb   rd   r
   r
   r   r1   ð   r2   rR   rS   rT   rU   rX   rV   rW   zBOX DRAWINGS LIGHT VERTICALz$BOX DRAWINGS LIGHT UP AND HORIZONTALz&BOX DRAWINGS LIGHT DOWN AND HORIZONTALzLEFT PARENTHESIS EXTENSIONzRIGHT PARENTHESIS EXTENSIONzLEFT PARENTHESIS LOWER HOOKzRIGHT PARENTHESIS LOWER HOOKzLEFT PARENTHESIS UPPER HOOKzRIGHT PARENTHESIS UPPER HOOKz5BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTz5BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHTú<ú>z
LEFT FLOORzRIGHT FLOORzLEFT CEILINGzRIGHT CEILINGrZ   zTOP HALF INTEGRALzBOTTOM HALF INTEGRALÚ_ZOVERLINEzN-ARY SUMMATIONzBOX DRAWINGS LIGHT HORIZONTALzLOW LINE)rR   rS   rT   rU   rV   rW   rv   ZTeeZUpTackzcorner_up_centre(_extz)_extz(_lower_hookz)_lower_hookz(_upper_hookz)_upper_hookr€   r�   ÚlfloorÚrfloorÚlceilÚrceilrZ   rY   rP   r‚   ú/ú\)©rv   r‡   rˆ   rR   )©rv   rˆ   r‡   rS   ))rT   rT   rT   rT   ))rU   rU   rU   rU   ))rv   r‡   rˆ   r€   rV   ))rv   rˆ   r‡   r�   rW   rv   )r‰   r€   )rŠ   r�   )z | z  /z/  rP   r‡   rˆ   )rR   rS   rT   rU   rV   rW   rv   r€   r�   rZ   rP   r‚   r‡   rˆ   c                 C   sX  |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k
r¢   Y nX |dkr°|}|dkr¼|}|dkrÈ|}|dk	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 0Nr;   é   é   )Ú
ValueErrorr   Ú_xobj_unicodeÚ_xobj_asciiÚ
isinstanceÚtupleÚ
IndexError)re   ÚlengthZ_xobjZvinfoÚc1ÚtopZbotÚmidÚextZvlongÚresÚnextZnmidr
   r
   r   ÚxobjE  sR    




rš   c                 C   s   d  t| |ƒ¡S )zBConstruct vertical object of a given height

       see: xobj
    Ú
©Újoinrš   )re   Úheightr
   r
   r   r   ‰  s    c                 C   s   d  t| |ƒ¡S )zCConstruct horizontal object of a given width

       see: xobj
    r   rœ   )re   Úwidthr
   r
   r   r   ‘  s    zSQUARE ROOTz	CUBE ROOTzFOURTH ROOT)r‹   rŒ   é   c                 C   s   t d|  ƒS )NzVULGAR FRACTION %s)r   )Útxtr
   r
   r   r1   ¢  r2   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¤   )rQ   rQ   )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'r;   r   N)Ú_xsymr   )ÚsymÚopr
   r
   r   r   Ô  s    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$MATHEMATICAL DOUBLE-STRUCK CAPITAL Uz$MATHEMATICAL DOUBLE-STRUCK CAPITAL Iz%MATHEMATICAL DOUBLE-STRUCK DIGIT ZEROz$MATHEMATICAL DOUBLE-STRUCK DIGIT ONEzDOUBLE-STRUCK ITALIC SMALL DZUNIONz
ELEMENT OFzSMALL ELEMENT OFZ	INCREMENTZINTERSECTIONzMULTIPLICATION SIGNzN-ARY CIRCLED TIMES OPERATORzHORIZONTAL ELLIPSISúModifier Letter Low RingÚEmptySequencezSUPERSCRIPT PLUS SIGNzSUPERSCRIPT MINUSZDAGGERzDEGREE SIGNzLOGICAL ANDz
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)/ZExp1ÚPiÚInfinityÚNegativeInfinityÚImaginaryUnitZEmptySetZNaturalsZ	Naturals0ZIntegersZ	RationalsZRealsZ	ComplexesZUniverseZIdentityMatrixZ
ZeroMatrixZ	OneMatrixZDifferentialÚUnionZ	ElementOfZSmallElementOfZSymmetricDifferenceZIntersectionZRingZMultiplicationZTensorProductZDotsr·   r¸   ZSuperscriptPlusZSuperscriptMinusÚDaggerZDegreeÚAndÚOrÚNotZNorZNandZXorZEquivZNotEquivZImpliesZ
NotImpliesÚArrowZArrowFromBarZNotArrowZ	TautologyZContradictionc                 C   sL   t r4|dk	r*| dkr*|jd dkr*tdƒS t|  S n|dk	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k	rR||tƒ}nd}|dk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 k	r&|S tt ¡ dd„ dd�D ]F}|  ¡  |¡r<t| ƒt|ƒkr<t| ˆ | d t|ƒ … |ƒƒ  S q<|rœd 	dd„ | D ƒ¡S | S )Nc                 S   s   t | ƒS rB   ©Úlen)Úkr
   r
   r   r1   9  r2   z2pretty_symbol.<locals>.translate.<locals>.<lambda>T)ÚkeyÚreverser   c                 S   s   g | ]}t | ‘qS r
   )Úbold_unicode©r7   Úcr
   r
   r   rn   =  s     z4pretty_symbol.<locals>.translate.<locals>.<listcomp>)
Úgreek_bold_unicodeÚgetr   ÚsortedÚmodifier_dictÚkeysÚlowerÚendswithrÈ   r�   )r(   Ú	bold_nameZgGrÊ   )Ú	translater
   r   r×   2  s    
&z pretty_symbol.<locals>.translatec              
      sh   g }| D ]Z}ˆ   |¡}|d krXzd ‡ fdd„|D ƒ¡}W n ttfk
rV   Y  d S X | |¡ q|S )Nr   c                    s   g | ]}ˆ | ‘qS r
   r
   rÍ   ©Úmappingr
   r   rn   J  s     z6pretty_symbol.<locals>.pretty_list.<locals>.<listcomp>)rÐ   r�   Ú	TypeErrorr   Úappend)r0   rÙ   Úresultr(   Úprettyr
   rØ   r   Úpretty_listD  s    

z"pretty_symbol.<locals>.pretty_listNr‚   c                    s   g | ]}ˆ|ˆ ƒ‘qS r
   r
   ©r7   r(   ©rÖ   r×   r
   r   rn   Y  s     z!pretty_symbol.<locals>.<listcomp>Ú__c                    s   g | ]}ˆ|ˆ ƒ‘qS r
   r
   rß   rà   r
   r   rn   [  s     ú 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&    

""

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Œ   r;   u   â•­â”€â•®
â”‚â•¶â”�
â•°â”€â•¯)ÚFr=   )rŒ   r   rŒ   r   z _
|_
|
)rŒ   r   rŒ   r;   z __
/__
\_|N)r   )r\   Z
ucode_picsZ
ascii_picsr
   r
   r   r   d  s    
ü	þrs   u   Í¯u   âƒ�u   âƒ°c                 C   s   t | ƒtk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   rq   ˆ  s    rq   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 kV  qd S rB   )r   )r7   Ú	characterr
   r
   r   r>   ¿  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    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    )N)NN)F)râ   )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,   r5   r=   ÚlistZgreek_lettersÚindexr   ÚupdaterA   rC   rÌ   ÚgbÚGBZgreek_bold_lettersrÏ   r_   rc   ZLSUBZGSUBZDSUBZSSUBZLSUPZDSUPZSSUPr   r   r0   Ú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ç   rq   rê   rí   r   r   r
   r
   r
   r   Ú<module>   sF  	  ÿöòåþþþþÑ5ä D
ýñ



ÿþÿþýüû
ÿþû
é
ÿË9=
ÿ