o
    ȷeg                     @   s   d dl Z d dlZd dlmZ i Ze dZe dZe dZd'ddZ	d	d
 Z
d(ddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdS ))    N)warnz^\sz\s$z(\$?)([A-Z]{1,3})(\$?)(\d+)Fc                 C   s^   | dk rt d|   dS |dk rt d|  dS | d7 } |r d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 %d must be >= 0NCol number %d must be >= 0   $ )r   xl_col_to_namestr)rowcolrow_abscol_abscol_str r   I/var/www/ideatree/venv/lib/python3.10/site-packages/xlsxwriter/utility.pyxl_rowcol_to_cell   s   
r   c                 C   s2   |t v 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.

    r   )	COL_NAMESr   r   )r	   r
   r   r   r   r   xl_rowcol_to_cell_fast2   s
   
r   c                 C   s   | }|dk rt d|  dS |d7 }d}|rdnd}|r>|d }|dkr&d}ttd| d }|| }t|d d }|s|| 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   r   Nr   r   r      A)r   chrordint)r
   r   col_numr   	remainder
col_letterr   r   r   r   G   s    r   c                 C   s   | sdS t | }|d}|d}d}d}t|D ]}|t|td d d|  7 }|d7 }qt|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         r   r   r   r   re_range_partsmatchgroupreversedr   r   )cell_strr   r   row_strexpnr
   charr	   r   r   r   xl_cell_to_rowcolo   s   


 
r&   c           
      C   s   | sdS t | }|d}|d}|d}|d}|r"d}nd}|r)d}nd}d}d}t|D ]}|t|td	 d d
|  7 }|d7 }q3t|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   FFr   r      r   TFr   r   r   r   )
r"   r   r   r   r   r#   r$   r
   r%   r	   r   r   r   xl_cell_to_rowcol_abs   s*   




 
r(   c                 C   sH   t | |}t ||}|du s|du rt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.

    N#Row and column numbers must be >= 0:r   r   	first_row	first_collast_rowlast_colrange1range2r   r   r   xl_range   s   

r3   c                 C   sP   t | |dd}t ||dd}|du s|du rtd dS ||kr"|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.

    TNr)   r*   r+   r,   r   r   r   xl_range_abs   s   r4   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.

    !)r4   quote_sheetname)	sheetnamer-   r.   r/   r0   
cell_ranger   r   r   xl_range_formula   s   r9   c                 C   s*   |   s| ds| dd} d|  } | S )z
    Convert a worksheet name to a quoted  name if it contains spaces or
    special characters.

    Args:
       sheetname: The worksheet name. String.

    Returns:
        A quoted worksheet string.

    'z''z'%s')isalnum
startswithreplace)r7   r   r   r   r6   
  s   r6   c                 C   s   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}| |v r:||  } t d | sFtd!|   d"| d#  S )$Nblackz#000000bluez#0000FFbrownz#800000cyanz#00FFFFgrayz#808080greenz#008000limez#00FF00magentaz#FF00FFnavyz#000080orangez#FF6600pinkpurplez#800080redz#FF0000silverz#C0C0C0whitez#FFFFFFyellowz#FFFF00z#[0-9a-fA-F]{6}z$Color '%s' isn't a valid Excel colorFF#)rer   r   lstripupper)colornamed_colorsr   r   r   xl_color"  sL   	
rU   c                 C   s   t | }tdd|}|S )Nz^FFr   )rU   rP   sub)rS   	rgb_colorr   r   r   get_rgb_colorC  s   rX   c              
   C   s(  g 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}||  S ),N4z-0.499984740745262)themetintrZ   5z0.39997558519241921)seriesnegativemarkersfirstlasthighlow6789z-0.2499771111178930z0.799981688894314421z0.499984740745262z0.249977111117893z0.34998626667073579rgbFF323232FFD00000FF000000FF0070C0FF376092FF5F5F5FFFFFB620FFD70077FF5687C2FF359CEBFF56BE79FFFF5055FF777777FFC6EFCEFFFFC7CEFF8CADD6FFFFDC47FFFFEB9CFF60D276FFFF5367FF00B050FFFF0000FFFFC0003r   )style_idstylesr   r   r   get_sparkline_styleM  s
  	!)19AIQYaiqy   
      "  *  2  :  B  J  R  Z  b  j  r  z                   #    -r   c                 C   s   t | tjtjtjtjfS )N)
isinstancedatetimedatetime	timedelta)dtr   r   r   supported_datetime|  s
   r   c                 C   s&   |r
| j d d} | S | 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)dt_objremove_timezoner   r   r   remove_datetime_timezone  s   r   c                 C   s  | }d}|rt  ddd}nt  ddd}t| t j r%t| |} | | }n9t| t jr8t j |  } | | }n&t| t jrOt j || } t| |} | | }nt| t jrZd}| }nt	d|j
t|jt|jd	  d
  }t|t j r|  dkr|d8 }|s|s|dkr|d7 }|S )NFip  r   ik        Tz$Unknown or unsupported datetime typeg    .AiQ )il  r   r   ;   )r   r   r   r   fromordinal	toordinalr   combiner   r   daysfloatsecondsmicrosecondsisocalendar)r   	date_1904r   	date_typeis_timedeltaepochdelta
excel_timer   r   r   datetime_to_excel_datetime  s@   




r   c                 C   s   t | s
t| rdS dS )NTF)
re_leadingsearchre_trailing)stringr   r   r   preserve_whitespace  s   r   )FF)F)rP   r   warningsr   r   compiler   r   r   r   r   r   r&   r(   r3   r4   r9   r6   rU   rX   r   r   r   r   r   r   r   r   r   <module>   s2   




( .!
  14