
    >wg                        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j                  dh      Z ej                  di      Z ej                  dj      ZddkZdl ZddmZdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Z d{ Z!d| Z"d} Z#d~ Z$d Z%d Z&d Z'd Z(y)    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+)c                     | dk  rt        d| z         y|dk  rt        d|z         y| dz  } |rdnd}t        ||      }||z   t        |       z   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_strs        I/var/www/horilla/myenv/lib/python3.12/site-packages/xlsxwriter/utility.pyxl_rowcol_to_cellr~   {   sf     Qw)C/0
Qw)C/01HCc"GS'*GWs3x''    c                 p    |t         v r
t         |   }nt        |      }|t         |<   |t        | dz         z   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_NAMESrv   rw   )rx   ry   r|   s      r}   xl_rowcol_to_cell_fastr      s;     iC. % 	#Sq\!!r   c                     | }|dk  rt        d|z         y|dz  }d}|rdnd}|r?|dz  }|dk(  rd}t        t        d      |z   dz
        }||z   }t        |dz
  dz        }|r?||z   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   rt   Nr   ru   r      r2   )r   chrordint)ry   r{   col_numr|   	remainder
col_letters         r}   rv   rv      s     G{)G34qLGGc"G
bL	>I SI-12
 w& w{b()   Wr   c                    | syt         j                  |       }|j                  d      }|j                  d      }d}d}t        |      D ]*  }|t	        |      t	        d      z
  dz   d|z  z  z  }|dz  }, t        |      dz
  }|dz  }||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   r2   r   r   re_range_partsmatchgroupreversedr   r   )cell_strr   r|   row_strexpnry   charrx   s           r}   xl_cell_to_rowcolr      s       *Ekk!nGkk!nG D
C! D	CH$q(RX66	
 g,
C1HC8Or   c                    | syt         j                  |       }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|rd}nd}|rd}nd}d}d}t        |      D ]*  }|t	        |      t	        d	      z
  dz   d
|z  z  z  }|dz  }, t        |      dz
  }	|dz  }|	|||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   r2   r   r   )
r   r   r{   r|   rz   r   r   ry   r   rx   s
             r}   xl_cell_to_rowcol_absr      s     !  *Ekk!nGkk!nGkk!nGkk!nG D
C! D	CH$q(RX66	
 g,
C1HCWg%%r   c                 p    t        | |      }t        ||      }||t        d       y||k(  r|S |dz   |z   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_colrange1range2s         r}   xl_ranger   $  sM     y)4Fx2F~23|f$$r   c                 x    t        | |dd      }t        ||dd      }||t        d       y||k(  r|S |dz   |z   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   s         r}   xl_range_absr   ?  sU     y)T4@Fx4>F~23|f$$r   c                 D    t        ||||      }t        |       } | dz   |z   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   
cell_ranges         r}   xl_range_formular   [  s-      iHhGJ	*Is?Z''r   c                 v    | j                         s(| j                  d      s| j                  dd      } d| z  } | 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   s    r}   r   r   q  sA     y';';C'@%%c40	 Y&	r   c                 J    d}| D ]  }|t         j                  |d      z  } |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   r5   )CHAR_WIDTHSget)stringlengthr   s      r}   xl_pixel_widthr     s4     F ++//$**+ Mr   c                    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        j                  d |       st        d!| z         d"| j                  d#      j	                         z   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FFr   )rer   r   lstripupper)colornamed_colorss     r}   xl_colorr     s   	 	 			
 		 	 		 	9 		 	) 		 	) 	y 	) 	  	)!L& U#88%u-3e;< %,,s#))+++r   c                 J    t        |       }t        j                  dd|      }|S )Nz^FFru   )r   r   sub)r   	rgb_colors     r}   get_rgb_colorr     s%    I vr9-Ir   c           
      ,   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)themetintr   r%   z0.39997558519241921)seriesnegativemarkersfirstlasthighlowr&   r'   r(   r)   z-0.249977111117893r    z0.79998168889431442r!   z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FFFFC000r#    )style_idstyless     r}   get_sparkline_styler     s
   N #-AB #!$.BC",AB!+@AcNS>	
N !$-AB #!$.BC",AB!+@AcNS>	
N( !$-AB #!$.BC",AB!+@AcNS>	
'N: !$-AB #!$.BC",AB!+@AcNS>	
9NL !$-AB #!$.BC",AB!+@AcNS>	
KN^ !$-AB #!$.BC",AB!+@AcNS>	
]Np !$-AB #!$.BC",AB!+@AcNS>	
oNB !$-AB #!$.BC",@A!+?@!+?@ *>?	
ANT !$-AB #!$.BC",@A!+?@!+?@ *>?	
SNf !$-AB #!$.BC",@A!+?@!+?@ *>?	
eNx !$-AB #!$.BC",@A!+?@!+?@ *>?	
wNJ !$-AB #!$.BC",@A!+?@!+?@ *>?	
IN\ !$-AB #!$.BC",@A!+?@!+?@ *>?	
[Nn n #!$.BC",@A!+?@!+?@ *>?	
mN@ n #!$.BC",@A!+?@!+?@ *>?	
NR n #!$.BC",@A!+?@!+?@ *>?	
QNd n #!$.BC",@A!+?@!+?@ *>?	
cNv n #!$.BC",@A!+?@!+?@ *>?	
uNH n #!$.BC",@A!+?@!+?@ *>?	
GNZ !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
YNl !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
kN~ !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
}NP !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
ONb !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
aNt !$-BC"%/CD!$.CD",@A!+?@!+?@ *>?	
sNF !$-@A"%/BC!$.AB",?@!+>?!+>? *=>	
ENX !$-BC"%/CD!$.BC",@A!+?@!+?@ *>?	
WNj j)
+z*Z(J'J':&	
iN| j)
+z*Z(J'J':&	
{NN j)
+z*Z(J'J':&	
MN` j)
+z*Z(J'J':&	
_Nr j)
+z*Z(J'J':&	
qND	 j)
+z*Z(J'J':&	
C	NV	 j)
+z*Z(J'J':&	
U	Nh	 j)
+z*Z(J'J':&	
g	Nz	 n #~s^cNcNS>	
y	NL
 n #~s^cNcNS>	
K
NF`
 (r   c                     t        | t        j                  t        j                  t        j                  t        j                  f      S )N)
isinstancedatetimedatetime	timedelta)dts    r}   supported_datetimer     s1    
Xx}}h>P>PQ r   c                 `    |r| j                  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_timezones     r}   remove_datetime_timezoner  #  s@     t, M ==>  Mr   c                 J   | }d}|rt        j                   ddd      }nt        j                   ddd      }t        | t         j                         rt        | |      } | |z
  }nt        | t         j                        r3t         j                   j	                  | j                               } | |z
  }nvt        | t         j                        r2t         j                   j                  ||       } t        | |      } | |z
  }n*t        | t         j                        rd}| }nt        d      |j                  t        |j                        t        |j                        d	z  z   d
z  z   }t        |t         j                         r| j                         dk(  r|dz  }|s|s
|dkD  r|dz  }|S )NFip  r   ik  rA      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_times           r}   datetime_to_excel_datetimer  4  s    IL!!$1- !!$B/ &(++,)&/B	FHMM	*""..v/?/?/AB	FHMM	*""**5&9)&/B	FH..	/>?? emmuU%7%783>>	 J )X../F4F4F4H M 5
 	a
 \j2oa
r   c                 Z    t         j                  |       st        j                  |       ryy)NTF)
re_leadingsearchre_trailing)r   s    r}   preserve_whitespacer  j  s%      K$6$6v$>r   c                    d}d}d}d}|st        | d      }|j                         }n|j                         }t        j                  |      j                         }t        j                  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        |      \  }}}}}n|dk(  rt        |      \  }}}}}nm||k(  rt        |      \  }}}nX|dk(  rt        |      \  }}}}}nA|dk(  r||k(  rt        |      \  }}}}}n%||k(  rt        |      \  }}}}}nt!        d| z        |r|st#        d| z        |sj%                          |dk(  rd}|dk(  rd}||||	|||fS )Nr   `   rb3sr   r   >Hr   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)filename
image_dataheightwidthx_dpiy_dpifhdatadigest
image_namemarker1marker2marker3marker4marker5marker6
png_marker
bmp_marker
emf_marker
gif_marker
image_types                        r}   get_image_propertiesrK  s  s'   FEEE(D!wwy ""$^^D!++-F !!(+J T4!9%a(GT48$Q'GT48$Q'GT48$Q'GdDBK(!,GT48$Q'GJJJJ*4@4F1UFE5	F	4@4F1UFE5	J	&24&8#UF	J	4@4F1UFE5	A'Z/4@4F1UFE5	J	4@4F1UFE5 %;hF
 	

  !H8!STT

 zzufj%FFr   c                    d}t        |       }d}d}d}d}d}|s||k  rt        d| |dz   |dz          d   }t        d| |dz   |dz          d   }	|	dk(  r0t        d| |dz   |d	z          d   }t        d| |d	z   |d
z          d   }|	dk(  rWt        d| |dz   |d	z          d   }
t        d| |d	z   |d
z          d   }t        d| |d
z   |dz          d   }|dk(  r
|
dz  }|dz  }|	dk(  rd}||z   d	z   }|s||k  rd||||fS )Nr5   Fr   r  z>Ir   r#  s   IHDRrA      s   pHYsrV      r   g
F%u?s   IENDTpnglenr   )r=  offsetdata_length
end_markerr9  r8  r:  r;  r   marker	x_density	y_densityunitss                r}   r/  r/    s   Fd)KJEFEE Vk1d6A:
;<Q?d6A:
;<Q? W4fqj6B;!?@CED$v{Vb["AB1EF WtT&1*v{%CDQGItT&2+%DEaHI3Vb[6B; ?@CEz!F*!F*WJ&2%/ Vk12 %--r   c                 V   d}t        |       }d}d}d}d}d}|s	||k  rt        d| |dz   |dz          d   }t        d| |dz   |dz          d   }	|dz  dk(  r?|d	k7  r:|d
k7  r5|dk7  r0t        d| |dz   |dz          d   }t        d| |dz   |dz          d   }|dk(  rnt        d| |dz   |dz          d   }
t        d| |dz   |dz          d   }t        d| |dz   |dz          d   }|
dk(  r|}|}|
dk(  r
|dz  }|dz  }|dk(  rd}|dk(  rd}|dk(  rd}||	z   dz   }|s||k  rd||||fS )Nr   Fr   r  r   r   i  i  i  i  i  r   r   r3   i  rV   r   rA      rM  r   gRQ@i  TjpegrP  )r=  rR  rS  rT  r9  r8  r:  r;  rU  r   rX  rV  rW  s                r}   r0  r0    s   Fd)KJEFEE Vk1d6A:
;<Q?d6A:
;<Q?
 f_'& & & D$vzFQJ"?@CF4fqj6A:!>?BE V3Vb[6B; ?@CEtT&2+%DEaHItT&2+%DEaHIz!!z!D(!D( zzVJ&1$O Vk1R 5&%..r   c                 `    d}d}t        d| dd       d   }t        d| dd       d   }d||||fS )Nr  <hr   r5   r   r   gifr   )r=  r:  r;  r9  r8  s        r}   r4  r4    sK    EE4a#A&ED$q*%a(F%--r   c                 T    t        d| dd       d   }t        d| dd       d   }d||fS )Nr"        r   r   bmpr   )r=  r9  r8  s      r}   r1  r1  %  s=    4b%a(ED$r"+&q)F%r   c                    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        ||z
  |z        |z  }t        ||z
  |z        |z  }	d||	||fS )Nr  r]  r   r5   r   r   rA   rZ  z<HrM  wmf)r   r  )
r=  r:  r;  x1y1x2y2inchr9  r8  s
             r}   r2  r2  ,  s    EE 
d1Qi	 	#B	d1Rj	!!	$B	d2bk	"1	%B	d2bk	"1	%B $R$Q'D 27e#$t+EBGu$%,F%--r   c                    t        d| dd       d   }t        d| dd       d   }t        d| dd       d   }t        d| dd       d   }||z
  }||z
  }t        d| dd       d   }t        d| dd	       d   }t        d| d	d
       d   }	t        d| d
d       d   }
d|	|z
  z  }d|
|z
  z  }|dz  |z  }|dz  |z  }|dz  }|dz  }d||||fS )Nz<lr5   rA   r   rM               $   r$  g{Gz?gffffff9@r   emfr   )r=  bound_x1bound_y1bound_x2bound_y2r9  r8  frame_x1frame_y1frame_x2frame_y2width_mm	height_mmr:  r;  s                  r}   r3  r3  A  s7    dD2J'*HdDBK(+HdDBK(+HdDBK(+H xE F dDBK(+HdDBK(+HdDBK(+HdDBK(+H x(*+H8+,I DL8#ETMI%E 
QJE
aKF%--r   )FF)F))r   r)  r,  r   structr   warningsr   
exceptionsr   r   r   r   compiler  r  r   r~   r   rv   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rK  r/  r0  r4  r1  r2  r3  r   r   r}   <module>r     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 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 	!{`| }`~ `@ 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 
	
		
	
	
	
	
	
	
`F RZZ
bjj :;(<"*%P@+&\%6%8(,.*,BQh
"3lEGP%.P4/n. .* .r   