
    	ivu                        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 d dl	m
Z
 i Zeeef         e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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/d0i d1d2d3d2d4d0d5dd6dd7d0d8d0d9dd:d	d;d2d<dd=d>d?dd@ddAd2dBddCd2i dDddEddFd0dGd0dHd.dId2dJddKddLd	dMddNd	dOddPddQddRddSd2dTdi dUd2dVd2dWd	dXddYd2dZdd[dd\dd]dd^d>d_d2d`d2dad2dbd2dcd	dddded	d2dddddd	dd	ddf
ZdgZ ej        dh          Z ej        di          Z ej        dj          Z ej        dke dN          Z ej        dle dN          Z ej        dm          Z ej        dn          Z ej        do          Z	 	 ddqedredsedteduef
dvZdqedreduefdwZddredteduefdxZdyedueeef         fdzZdyedueeeeef         fd{Zd|ed}ed~ededuef
dZ d|ed}ed~ededuef
dZ!ded|ed}ed~ededuefdZ"deduefdZ#deduefdZ$deduefdZ%dedueeeeef         f         fdZ&dee j         e j'        e j(        f         duefdZ)de j         dedue j         fdZ*dee j'        e j         e j+        e j(        f         dededue,fdZ-dedueej.                 fdZ/dS )    N)DictOptionalTupleUnion)warn)Color	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\.z^[\d\.z^([A-Z]{1,3}\d+)$z^R(\d+)z	^R?C(\d+)Frowcolrow_abscol_absreturnc                     | dk     rt          d|  d           dS |dk     rt          d| d           dS | 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 '' must be >= 0 Col number '   r   )r   xl_col_to_namestr)rt   ru   rv   rw   row_abs_strcol_strs         J/srv/django_bis/venv311/lib/python3.11/site-packages/xlsxwriter/utility.pyxl_rowcol_to_cellr      s    & Qww/C///000r
Qww/C///000r1HC (##bKS'**G[ 3s88++    c                     |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}   )r	   r~   r   )rt   ru   r   s      r   xl_rowcol_to_cell_fastr      sE     iC. %% 	#Sq\\!!r   c                     | }|dk     rt          d| d           dS |dz  }d}|rdnd}|rK|dz  }|dk    rd}t          t          d          |z   dz
            }||z   }t          |dz
  dz            }|K||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   r|   rz   r{   r}   r      r3   )r   chrordint)ru   rw   col_numr   col_abs_str	remainder
col_letters          r   r~   r~      s     G{{3G333444rqLGG (##bK
 *bL	>>I SI-122
 w& w{b())  *    r   cell_strc                    | sdS t                               |           }|t          d|  d           dS |                    d          }|                    d          }d}d}t	          |          D ]2}|t          |          t          d          z
  d	z   d
|z  z  z  }|d	z  }3t          |          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   NInvalid cell reference 'r      r   r   r3   r}   r   )RE_RANGE_PARTSmatchr   groupreversedr   r   )r   r   r   row_strexpnru   charrt   s           r   xl_cell_to_rowcolr      s      t  **E}3333444tkk!nnGkk!nnG D
C!!  D		CHH$q(RX66	 g,,
C1HC8Or   c                    | sdS t                               |           }|t          d|  d           dS t          |                    d                    }|                    d          }t          |                    d                    }|                    d          }d	}d	}t          |          D ]2}|t          |          t          d
          z
  dz   d|z  z  z  }|dz  }3t          |          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   FFNr   r   r}   r   r   r   r   r3   r   )r   r   r   boolr   r   r   r   )
r   r   rw   r   rv   r   r   ru   r   rt   s
             r   xl_cell_to_rowcol_absr     s     "!!  **E}3333444!!5;;q>>""Gkk!nnG5;;q>>""Gkk!nnG D
C!!  D		CHH$q(RX66	 g,,
C1HCWg%%r   	first_row	first_collast_rowlast_colc                     t          | |          }t          ||          }|dk    s|dk    rt          d           dS ||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.

    r{   #Row and column numbers must be >= 0r+   r   r   r   r   r   r   range1range2s         r   xl_ranger   5  sf     y)44Fx22F||v||2333rC<&  r   c                     t          | |dd          }t          ||dd          }|dk    s|dk    rt          d           dS ||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.

    Tr{   r   r+   r   r   s         r   xl_range_absr   P  sn     y)T4@@Fx4>>F||v||2333rC<&  r   	sheetnamec                 T    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)r   r   r   r   r   
cell_ranges         r   xl_range_formular   l  s3    $ iHhGGJ	**Is?Z''r   c                 2   |                                  }d}d}d}|                     d          sHt                              |          }t                              |          }t
                              |          }t                              |           rd}nt                              |           rd}n|rJ|	                    d          }t          |          \  }	}
d|	cxk    r|k     rn nd|
cxk    r|k     rn nwd}nt|r5t          |	                    d                    }	d|	cxk     r|k    rn n@d}n=|r5t          |	                    d                    }
d|
cxk     r|k    rn n	d}n|dv 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   Tr}   r   )rG   r7   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   uppercase_sheetnamerequires_quotingcol_maxrow_maxmatch_rule3match_rule4_rowmatch_rule4_columncellrt   ru   s              r   r   r     s    $//++GG $$ :$$**+>??,223FGG2889LMM   ++ 0	$#
 ""9-- *	$#  "	$$$Q''D*400JS#C!!!!'!!!!!a3&8&8&8&8&8&8&8&8&8#'   	$o++A..//C3!!!!'!!!!!#'    	$(..q1122C3!!!!'!!!!!#'  !$444# %%%c400	 %	$$$	r   stringc                 T    | rt          |           dk    rdS t          |           dz   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   s    r   cell_autofit_widthr     s6      S[[A%%q &!!A%%r   c                 P    d}| D ] }|t                               |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   r6   )CHAR_WIDTHSget)r   lengthr   s      r   r   r     s7     F + ++//$***Mr   style_idc                 &   g t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d	d          dt          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        dd          t          j        d	d          t          j        d	d          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d	d          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d	d          dt          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd
          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd
          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd
          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd
          t          j        dd          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd
          t          j        dd          dt          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d          t          j        d	d
          t          j        dd          dt          j        d
d          t          j        d
d          t          j        d
d          t          j        d
d          t          j        d
d
          t          j        d
d          t          j        d
d          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d
d          t          j        dd          t          j        dd          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d          t          d          t          d          t          d          t          d          t          d          t          d          dt          d           t          d!          t          d"          t          d"          t          d!          t          d          t          d           dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d	d          dt          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        d
d          t          j        dd          t          j        d	d          d}||          S )#z-
    Get the numbered sparkline styles.

    r   r   r   r   )lowhighlastfirstseriesmarkersnegativer   r   r6   r4   r}   r   z#D00000z#323232z#0070C0z#000000z#376092z#FF5055z#56BE79z#359CEBz#5687C2z#5F5F5Fz#D70077z#FFB620z#777777z#FF5367z#60D276z#FFEB9Cz#FFDC47z#C6EFCEz#8CADD6z#FFC7CEz#FF0000z#00B050z#FFC000)r   theme)r   styless     r   _get_sparkline_styler     s?   
N;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
N ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
N( ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
'N: ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
9NL ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
KN^ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
]Np ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
oNB ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
ANT ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
SNf ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
eNx ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
wNJ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
IN\ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
[Nn ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
mN@ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
NR ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
QNd ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
cNv ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
uNH ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
GNZ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
YNl ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
kN~ ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
}NP ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
ONb ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
aNt ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
sNF ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
ENX ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
WNj ##)$$)$$9%%I&&Y''i((	
 	
iN| ##)$$)$$9%%I&&Y''i((	
 	
{NN ##)$$)$$9%%I&&Y''i((	
 	
MN` ##)$$)$$9%%I&&Y''i((	
 	
_Nr ##)$$)$$9%%I&&Y''i((	
 	
qND	 ##)$$)$$9%%I&&Y''i((	
 	
C	NV	 ##)$$)$$9%%I&&Y''i((	
 	
U	Nh	 ##)$$)$$9%%I&&Y''i((	
 	
g	Nz	 ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
y	NL
 ;q!$$K1%%K1%%[A&&k!Q''{1a((Aq))	
 	
K
NF`
 (r   dtc                 z    t          | t          j        t          j        t          j        t          j        f          S N)
isinstancedatetimedatetime	timedelta)r   s    r   _supported_datetimer   \  s.     
Xx}h>PQ  r   dt_objremove_timezonec                 d    |r|                      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   s     r   _remove_datetime_timezoner   e  sI      t,,= 	>   Mr   	date_1904c                    | }d}|rt          j         ddd          }nt          j         ddd          }t          | t           j                   rt          | |          } | |z
  }nt          | t           j                  r7t           j                             |                                           } | |z
  }n~t          | t           j                  r6t           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                   r7t          | t           j                  s|                                 dk    r|dz  }|s|s|dk    r|dz  }|S )NFip  r}   ik  rB      Tz$Unknown or unsupported datetime typeg    .AiQ )il  r}   r}   ;   )r   r   r   r   fromordinal	toordinalr   combiner   r   daysfloatsecondsmicrosecondsisocalendar)r   r   r   	date_typeis_timedeltaepochdelta
excel_times           r   _datetime_to_excel_datetimer   x  s    IL 0!$1-- !$B// &(+,, @*6?CC	FHM	*	* @"..v/?/?/A/ABB	FHM	*	* @"**5&99*6?CC	FH.	/	/ @>??? emuU%7883>>	 J 	9h/00
68#566
   

 
 	a
  \ j2ooa
r   c                 j    t                               |           pt                              |           S r   )RE_LEADING_WHITESPACEr   RE_TRAILING_WHITESPACEr   s    r   _preserve_whitespacer     s-     !''//X3I3P3PQW3X3XXr   )FF)F)0r   retypingr   r   r   r   warningsr   xlsxwriter.colorr   r	   r   r   __annotations__r   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   Matchr    r   r   <module>r     s	    				 / / / / / / / / / / / /       " " " " " "	4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 
	
		
	
	
	
	
	
	
` ` `V 
x #
6** #F++ :;;/f///00/f///00011RZ
++ "
<00  	 ,  ,	 ,	 ,  , 	 ,
 	 ,  ,  ,  ,F" "# "# " " " "*%! %! %!d %!s %! %! %! %!P! !c3h ! ! ! !H$&C $&E#sD$2F,G $& $& $& $&N! ! !s !c !c ! ! ! !6!C !C !3 !# !RU ! ! ! !8(("(/2(>A(MP(( ( ( (0Vs Vs V V V Vr&s &s & & & &$3 3    *U3 U4T#s(^0C+D U U U Up
h=>	   04   &<(-!2H4FUV<< < 	< < < <~Y Y"(); Y Y Y Y Y Yr   