o
    ]oi                     @   sf  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddlm
Z
 i Z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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/d0d1i d2d3d4d3d5d1d6dd7dd8d1d9d1d:dd;d
d<d3d=dd>d?d@ddAddBd3dCddDd3i dEddFddGd1dHd1dId/dJd3dKddLddMd
dNddOd
dPddQddRddSddTd3dUdi dVd3dWd3dXd
dYddZd3d[dd\dd]dd^dd_d?d`d3dad3dbd3dcd3ddd
deddfd
d3dddddd
dd
ddg
ZedhZediZedjZddldmZdndo ZddpdqZdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dS )    Nunpack)warn   )UndefinedImageSize)UnsupportedImageFormat    !   "   #   $%   &
   '()*+,   -./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{|}~z^\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 >= 0r   r    )r   xl_col_to_namestr)rowcolrow_abscol_abscol_str r{   Z/var/www/html/kuke-dev/django-kuke/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_NAMESrt   ru   )rv   rw   rz   r{   r{   r|   xl_rowcol_to_cell_fast   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   rr   Nr   rs   r      r1   )r   chrordint)rw   ry   Zcol_numrz   	remainderZ
col_letterr{   r{   r|   rt      s    rt   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   r1   r   r   re_range_partsmatchgroupreversedr   r   )cell_strr   rz   row_strexpnrw   charrv   r{   r{   r|   xl_cell_to_rowcol   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	   r   TFr   r1   r   r   )
r   r   ry   rz   rx   r   r   rw   r   rv   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 >= 0r)   r}   r   	first_row	first_collast_rowlast_colZrange1Zrange2r{   r{   r|   xl_range$  s   

r   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   r   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)	sheetnamer   r   r   r   Z
cell_ranger{   r{   r|   xl_range_formula[  s   r   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.

    r   z''z'%s')isalnum
startswithreplace)r   r{   r{   r|   r   q  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   r4   )CHAR_WIDTHSget)stringlengthr   r{   r{   r|   xl_pixel_width  s   r   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#0000FFZbrownz#800000cyanz#00FFFFgrayz#808080greenz#008000Zlimez#00FF00magentaz#FF00FFZnavyz#000080Zorangez#FF6600Zpinkpurplez#800080redz#FF0000silverz#C0C0C0whitez#FFFFFFyellowz#FFFF00z#[0-9a-fA-F]{6}z$Color '%s' isn't a valid Excel colorZFFr   )rer   r   lstripupper)colorZnamed_colorsr{   r{   r|   xl_color  sL   	
r   c                 C   s   t | }tdd|}|S )Nz^FFrs   )r   r   sub)r   Z	rgb_colorr{   r{   r|   get_rgb_color  s   r   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 ),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{   )style_idstylesr{   r{   r|   get_sparkline_style  s  &/8AJS\enw  
      %  .  7  @  I  R  [  d  m  v     	            $    -    6    ?    H    Rr   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  r@      Tz$Unknown or unsupported datetime typeg    .AiQ )il  r   r   ;   )r   r   r   r   fromordinal	toordinalr   combiner   r   daysfloatsecondsmicrosecondsisocalendar)r   Z	date_1904r   Z	date_typeZis_timedeltaepochdeltaZ
excel_timer{   r{   r|   datetime_to_excel_datetime4  s8   




r   c                 C   s   t | s
t| rdS dS )NTF)
re_leadingsearchre_trailing)r   r{   r{   r|   preserve_whitespacej  s   r   c                 C   s  d}d}d}d}|st | d}| }n| }t| }tj| }	t	d|dd d }
t	d|d d d }t	d	|d d d }t	d
|d d d }t	d|dd d }t	d|d d d }d}d}d}d}|
|kr}t
|\}}}}}nN|dkrt|\}}}}}n@||krt|\}}}n4|dkrt|\}}}}}n&|dkr||krt|\}}}}}n||krt|\}}}}}ntd|  |r|std|  |s|  |dkrd}|dkrd}||||	|||fS )Nr   `   rbZ3sr   r   >Hr   Z2s<L4s(   ,   s   PNGs   BMs    EMFs   GIF8i  l   M5 z-%s: Unknown or unsupported image file format.z%%s: no size data found in image file.)openreadgetvaluehashlibsha256	hexdigestospathbasenamer   _process_png_process_jpg_process_bmp_process_wmf_process_emf_process_gifr   r   close)filenameZ
image_dataheightwidthx_dpiy_dpifhdatadigestZ
image_nameZmarker1Zmarker2Zmarker3Zmarker4Zmarker5Zmarker6Z
png_markerZ
bmp_markerZ
emf_markerZ
gif_markerZ
image_typer{   r{   r|   get_image_propertiess  sX   

r   c                 C   sZ  d}t | }d}d}d}d}d}|s||k rtd| |d |d  d }td| |d |d  d }	|	dkrVtd| |d |d	  d }td| |d	 |d
  d }|	dkrtd| |d |d	  d }
td| |d	 |d
  d }td| |d
 |d  d }|dkr|
d }|d }|	dkrd}q|| d	 }|s||k sd||||fS )Nr4   Fr   r   z>Ir   r   s   IHDRr@      s   pHYsrU      r   g
F%u?s   IENDTZpnglenr   )r   offsetdata_length
end_markerr   r   r   r   r   marker	x_density	y_densityunitsr{   r{   r|   r     s4   r   c                 C   s  d}t | }d}d}d}d}d}|s||k rtd| |d |d  d }td| |d |d  d }	|d@ dkrd|d	krd|d
krd|dkrdtd| |d |d  d }td| |d |d  d }|dkrtd| |d |d  d }
td| |d |d  d }td| |d |d  d }|
dkr|}|}|
dkr|d }|d }|dkrd}|dkrd}|dkrd}q||	 d }|s||k sd||||fS )Nr   Fr   r   r   r   i  i  i  i  i  r   r   r2   i  rU   r   r@      r   r   gRQ@i  TZjpegr  )r   r  r  r  r   r   r   r   r  r   r	  r  r  r{   r{   r|   r     sH   )r   c                 C   sB   d}d}t d| dd d }t d| dd d }d||||fS )Nr   <hr   r4   r   r   Zgifr   )r   r   r   r   r   r{   r{   r|   r     s
   r   c                 C   s6   t d| dd d }t d| dd d }d||fS )Nr         r   r   Zbmpr   )r   r   r   r{   r{   r|   r   %  s   
r   c           
      C   s   d}d}t d| dd d }t d| dd d }t d| dd d }t d| dd d }t d	| dd
 d }t|| | | }t|| | | }	d||	||fS )Nr   r  r   r4   r   r   r@   r
  z<Hr   Zwmf)r   r   )
r   r   r   x1y1Zx2y2Zinchr   r   r{   r{   r|   r   ,  s   r   c                 C   s  t d| dd d }t d| dd d }t d| dd d }t d| dd d }|| }|| }t d| dd d }t d| dd	 d }t d| d	d
 d }	t d| d
d d }
d|	|  }d|
|  }|d | }|d | }|d7 }|d7 }d||||fS )Nz<lr4   r@   r   r                $   r   g{Gz?gffffff9@r   Zemfr   )r   Zbound_x1Zbound_y1Zbound_x2Zbound_y2r   r   Zframe_x1Zframe_y1Zframe_x2Zframe_y2Zwidth_mmZ	height_mmr   r   r{   r{   r|   r   A  s"   r   )FF)F))r   r   r   r   structr   warningsr   
exceptionsr   r   r~   r   compiler   r   r   r}   r   rt   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|   <module>   s  	
 !"#$%&'()*+,-./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
c



( .!
  V6	H(7