U
    7hŉ                  `   @   s  U d dl Z d dlZd dlmZmZmZmZ d dlmZ i Z	ee
ef ed< dddddd	d
dddddddddddddddddddddddddddddddddddddddd
d
dd
dddddddddddddddddddddddddddddddddddddd	dddddddd_ZdZedZedZedZede dZede dZedZedZedZdMe
e
eeedddZe
e
edd d!ZdNe
eed"d#d$Zeee
e
f d%d&d'Zeee
e
eef d%d(d)Ze
e
e
e
ed*d+d,Ze
e
e
e
ed*d-d.Zee
e
e
e
ed/d0d1Z eed2d3d4Z!ee
d5d6d7Z"ee
d5d8d9Z#eed:d;d<Z$eed:d=d>Z%e
eeeeef f d?d@dAZ&ee j e j'e j(f edBdCdDZ)e j ee j dEdFdGZ*ee j'e j e j+e j(f eee,dHdIdJZ-eeej. d5dKdLZ/dS )O    N)DictOptionalTupleUnion)warn	COL_NAMES               
         	         )_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uC  ©®‼⁉™ℹ↔-↙↩↪⌚⌛⌨⏏⏩-⏳⏸-⏺Ⓜ▪▫▶◀◻-◾☀-☄☎☑☔☕☘☝☠☢☣☦☪☮☯☸-☺♀♂♈-♓♟♠♣♥♦♨♻♾♿⚒-⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱⚽⚾⛄⛅⛈⛎⛏⛑⛓⛔⛩⛪⛰-⛵⛷-⛺⛽✂✅✈-✍✏✒✔✖✝✡✨✳✴❄❇❌❎❓-❕❗❣❤➕-➗➡➰➿⤴⤵⬅-⬇⬛⬜⭐⭕〰〽㊗㊙🀄🃏🅰🅱🅾🅿🆎🆑-🆚🇦-🇿🈁🈂🈚🈯🈲-🈺🉐🉑🌀-🌡🌤-🎓🎖🎗🎙-🎛🎞-🏰🏳-🏵🏷-📽📿-🔽🕉-🕎🕐-🕧🕯🕰🕳-🕺🖇🖊-🖍🖐🖕🖖🖤🖥🖨🖱🖲🖼🗂-🗄🗑-🗓🗜-🗞🗡🗣🗨🗯🗳🗺-🙏🚀-🛅🛋-🛒🛕-🛗🛜-🛥🛩🛫🛬🛰🛳-🛼🟠-🟫🟰🤌-🤺🤼-🥅🥇-🧿🩰-🩼🪀-🪈🪐-🪽🪿-🫅🫎-🫛🫠-🫨🫰-🫸z^\sz\s$z(\$?)([A-Z]{1,3})(\$?)(\d+)z[^\w\.rP   z^[\d\.z^([A-Z]{1,3}\d+)$z^R(\d+)z	^R?C(\d+)F)rowcolrow_abscol_absreturnc                 C   sf   | dk rt d|  d dS |dk r8t d| d dS | d7 } |rHdnd}t||}|| t|  S )aU  
    Convert a zero indexed row and column cell reference to a A1 style string.

    Args:
       row:     The cell row.    Int.
       col:     The cell column. Int.
       row_abs: Optional flag to make the row absolute.    Bool.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        A1 style string.

    r   zRow number '' must be >= 0 Col number '   r   )r   xl_col_to_namestr)rr   rs   rt   ru   Zrow_abs_strcol_str r~   L/var/www/formularioweb/env/lib/python3.8/site-packages/xlsxwriter/utility.pyxl_rowcol_to_cell   s    
r   )rr   rs   rv   c                 C   s2   |t krt | }nt|}|t |< |t| d  S )z
    Optimized version of the xl_rowcol_to_cell function. Only used internally.

    Args:
       row: The cell row.    Int.
       col: The cell column. Int.

    Returns:
        A1 style string.

    rz   )r   r{   r|   )rr   rs   r}   r~   r~   r   xl_rowcol_to_cell_fast   s
    
r   )rs   ru   rv   c                 C   s   | }|dk r t d| d dS |d7 }d}|r4dnd}|r~|d }|dkrPd}ttd| d }|| }t|d d }q8|| S )	z
    Convert a zero indexed column cell reference to a string.

    Args:
       col:     The cell column. Int.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        Column style string.

    r   ry   rw   rx   rz   r      r4   )r   chrordint)rs   ru   Zcol_numr}   Zcol_abs_str	remainderZ
col_letterr~   r~   r   r{      s    r{   )cell_strrv   c                 C   s   | sdS t | }|dkr.td|  d dS |d}|d}d}d}t|D ],}|t|td d	 d
|  7 }|d	7 }qRt|d	 }|d	8 }||fS )z
    Convert a cell reference in A1 notation to a zero indexed row and column.

    Args:
       cell_str:  A1 style string.

    Returns:
        row, col: Zero indexed cell row and column indices.

    )r   r   NInvalid cell reference 'r      r   r   r4   rz   r   )RE_RANGE_PARTSmatchr   groupreversedr   r   )r   r   r}   row_strexpnrs   charrr   r~   r~   r   xl_cell_to_rowcol   s     


 
r   c           
      C   s   | sdS t | }|dkr.td|  d dS t|d}|d}t|d}|d}d	}d	}t|D ],}|t|td
 d d|  7 }|d7 }qnt|d }	|d8 }|	|||fS )a!  
    Convert an absolute cell reference in A1 notation to a zero indexed
    row and column, with True/False values for absolute rows or columns.

    Args:
       cell_str: A1 style string.

    Returns:
        row, col, row_abs, col_abs:  Zero indexed cell row and column indices.

    )r   r   FFNr   r   rz   r   r   r   r   r4   r   )r   r   r   boolr   r   r   r   )
r   r   ru   r}   rt   r   r   rs   r   rr   r~   r~   r   xl_cell_to_rowcol_abs  s$    


 
r   )	first_row	first_collast_rowlast_colrv   c                 C   sH   t | |}t ||}|dks$|dkr0td dS ||kr<|S |d | S )aG  
    Convert zero indexed row and col cell references to a A1:B1 range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    rx   #Row and column numbers must be >= 0r-   r   r   r   r   r   r   Zrange1Zrange2r~   r~   r   xl_range3  s    

r   c                 C   sP   t | |dd}t ||dd}|dks,|dkr8td dS ||krD|S |d | S )a\  
    Convert zero indexed row and col cell references to a $A$1:$B$1 absolute
    range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        $A$1:$B$1 style range string.

    Trx   r   r-   r   r   r~   r~   r   xl_range_absN  s    r   )	sheetnamer   r   r   r   rv   c                 C   s"   t ||||}t| } | d | S )a  
    Convert worksheet name and zero indexed row and col cell references to
    a Sheet1!A1:B1 range formula string.

    Args:
       sheetname: The worksheet name.    String.
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    r   )r   quote_sheetname)r   r   r   r   r   Z
cell_ranger~   r~   r   xl_range_formulaj  s    r   )r   rv   c                 C   sD  |   }d}d}d}| ds"t|}t|}t|}t| rNd}nt| r^d}n|r|	d}t
|\}	}
d|	  kr|k rn nd|
  kr|k rn nd}nt|rt|	d}	d|	  k r|krn nd}nD|rt|	d}
d|
  k r
|kr"n nd}n|dkr"d}|r@| dd	} d|  d} | S )
a,  
    Sheetnames used in references should be quoted if they contain any spaces,
    special characters or if they look like a A1 or RC cell reference. The rules
    are shown inline below.

    Args:
       sheetname: The worksheet name. String.

    Returns:
        A quoted worksheet string.

    Fi @  i   r   Trz   r   )rE   r6   RCz'')upper
startswithRE_QUOTE_RULE3r   RE_QUOTE_RULE4_ROWRE_QUOTE_RULE4_COLUMNRE_QUOTE_RULE1searchRE_QUOTE_RULE2r   r   r   replace)r   Zuppercase_sheetnameZrequires_quotingZcol_maxZrow_maxZmatch_rule3Zmatch_rule4_rowZmatch_rule4_columncellrr   rs   r~   r~   r   r     s>    





0
r   )stringrv   c                 C   s    | rt | dkrdS t| d S )z
    Calculate the width required to auto-fit a string in a cell.

    Args:
       string: The string to calculate the cell width for. String.

    Returns:
        The string autofit width in pixels. Returns 0 if the string is empty.

    r   r   )lenxl_pixel_widthr   r~   r~   r   cell_autofit_width  s    r   c                 C   s"   d}| D ]}|t |d7 }q|S )a}  
    Get the pixel width of a string based on individual character widths taken
    from Excel. UTF8 characters, and other unhandled characters, are given a
    default width of 8.

    Args:
       string: The string to calculate the width for. String.

    Returns:
        The string width in pixels. Note, Excel adds an additional 7 pixels of
        padding in the cell.

    r   r   )CHAR_WIDTHSget)r   lengthr   r~   r~   r   r     s    r   )colorrv   c                 C   s`   ddddddddd	d
ddddddd}| | | } td| sNtd|  d d| d  S )Nz#000000z#0000FFz#800000z#00FFFFz#808080z#008000z#00FF00z#FF00FFz#000080z#FF6600z#800080z#FF0000z#C0C0C0z#FFFFFFz#FFFF00)blackblueZbrowncyangraygreenZlimemagentaZnavyZorangeZpinkpurpleredsilverwhiteyellowz#[0-9a-fA-F]{6}zColor 'z' isn't a valid Excel colorZFFr   )r   rer   r   lstripr   )r   Znamed_colorsr~   r~   r   	_xl_color  s*    r   c                 C   s   t | }tdd|}|S )Nz^FFrx   )r   r   sub)r   Z	rgb_colorr~   r~   r   _get_rgb_color"  s    r   )style_idrv   c              ,   C   s  dddddidddddddddddiddiddddddidddddddddddiddiddddddidddddddddddiddidddddd	idddddddddddiddidd	dddd
id	ddd	ddd	dddd	idd	idd
ddddid
ddd
ddd
dddd
idd
iddddddidddddddddddiddiddddddidddddddddddddddddddddiddddddddddddddddddddd	id	ddd	ddd	ddd	ddd	dddd	dddd
id
ddd
ddd
ddd
ddd
dddd
ddddidddddddddddddddddddddiddddddddddddddddddiddiddddddddddddddddddiddiddddddddddddddddddidd	idddddddddddddddddd	idd
id	ddd	ddd	ddd	ddd	ddddd
iddid
ddd
ddd
ddd
ddd
dddddiddiddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	dddddd	ddd	ddd	ddd	ddd	dddd
dddddd
ddd
ddd
ddd
ddd
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddidd iddiddiddiddd!idd"idd#idd$idd%idd&idd'iddd(idd)iddidd*idd*idd(idd)iddd+iddidd
iddiddiddidd	idddiddidd
iddiddiddidd	idg%}||  S ),Nr'   z-0.499984740745262)themeZtintr   r(   z0.39997558519241921)Zseriesnegativemarkersfirstlasthighlowr)   r*   r+   r,   z-0.249977111117893r#   z0.79998168889431442r$   z0.499984740745262z0.249977111117893z0.34998626667073579rgbZFF323232ZFFD00000ZFF000000ZFF0070C0ZFF376092ZFF5F5F5FZFFFFB620ZFFD70077ZFF5687C2ZFF359CEBZFF56BE79ZFFFF5055ZFF777777ZFFC6EFCEZFFFFC7CEZFF8CADD6ZFFFFDC47ZFFFFEB9CZFF60D276ZFFFF5367ZFF00B050ZFFFF0000ZFFFFC000r&   r~   )r   stylesr~   r~   r   _get_sparkline_style,  s\   



































    Rr   )dtrv   c                 C   s   t | tjtjtjtjfS N)
isinstancedatetimedatetime	timedelta)r   r~   r~   r   _supported_datetime  s     r   )dt_objremove_timezonerv   c                 C   s$   |r| j d d} n| jr td| S )N)tzinfozExcel doesn't support timezones in datetimes. Set the tzinfo in the datetime/time object to None or use the 'remove_timezone' Workbook() option)r   r   	TypeError)r   r   r~   r~   r   _remove_datetime_timezone  s    r   )r   	date_1904r   rv   c                 C   s2  | }d}|rt  ddd}nt  ddd}t| t j rJt| |} | | }nrt| t jrpt j |  } | | }nLt| t jrt j || } t| |} | | }nt| t jrd}| }nt	d|j
t|jt|jd	  d
  }t|t j rt| t js|  dkr|d8 }|s.|s.|dkr.|d7 }|S )NFip  rz   ik  r      Tz$Unknown or unsupported datetime typeg    .AiQ )il  rz   rz   ;   )r   r   r   r   fromordinal	toordinalr   combiner   r   daysfloatsecondsmicrosecondsisocalendar)r   r   r   Z	date_typeZis_timedeltaepochdeltaZ
excel_timer~   r~   r   _datetime_to_excel_datetime  sF    







r   c                 C   s   t | pt| S r   )RE_LEADING_WHITESPACEr   RE_TRAILING_WHITESPACEr   r~   r~   r   _preserve_whitespace  s    r   )FF)F)0r   r   typingr   r   r   r   warningsr   r   r   r|   __annotations__r   ZEMOJIScompiler   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   r   r   r   Matchr   r~   r~   r~   r   <module>	   s2   k





  #($'    Y 
   W
 ?