o
    ]’iŸ-  ã                   @   sh   d dl mZmZmZmZ d dlmZ ddlmZ ddl	m
Z
mZmZ G dd„ dƒZG dd	„ d	ejƒZd
S )é    )ÚDictÚListÚOptionalÚUnion)ÚColoré   )Ú	xmlwriter)Ú_preserve_whitespaceÚxl_cell_to_rowcolÚxl_rowcol_to_cellc                   @   sŠ   e Zd ZdZ	ddedededeeeeeee	f f  ddf
dd	„Z
	ddeeeeeee	f f  ddfd
d„Zdededdfdd„ZdS )ÚCommentTypez@
    A class to represent a comment in an Excel worksheet.

    NÚrowÚcolÚtextÚoptionsÚreturnc                 C   sŽ   || _ || _|| _d| _tdƒ| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _d	| _g | _|  | j | j¡ |  |¡ dS )
a  
        Initialize a Comment instance.

        Args:
            row (int): The row number of the comment.
            col (int): The column number of the comment.
            text (str): The text of the comment.
            options (dict): Additional options for the comment.
        Nz#ffffe1r   é€   éJ   r   é   ÚTahomaé   )r   r   r   Úauthorr   ÚcolorÚ	start_rowÚ	start_colÚ
is_visibleÚwidthÚheightÚx_scaleÚy_scaleÚx_offsetÚy_offsetÚ	font_sizeÚ	font_nameÚfont_familyÚverticesÚset_offsetsÚ_set_user_options)Úselfr   r   r   r   © r)   úX/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/xlsxwriter/comments.pyÚ__init__   s(   
zCommentType.__init__c                 C   s(  |du rdS |  d¡}|rt|ttfƒr|| _|  d¡}|r(t|ttfƒr(|| _|  d¡}|r7t|tƒr7|| _|  d¡}|rFt|tƒrF|| _|  d¡}|rUt|tƒrU|| _|  d¡}|rdt|tƒrd|| _	|  d¡}|rut|ttfƒru|| _
|  d	¡}	|	r„t|	tƒr„|	| _|  d
¡}
|
r“t|
tƒr“|
| _|  d¡}|r¢t|tƒr¢|| _|  d¡}|dur³t|tƒr³|| _|  d¡rÀt |d ¡| _|  d¡}|rØt|tƒrØt|ƒ\}}|| _	|| _|  d¡}|rìt|ttfƒrì| j| | _|  d¡}|rt|ttfƒr| j| | _td| j ƒ| _td| j ƒ| _dS )zh
        This method handles the additional optional parameters to
        ``write_comment()``.
        Nr   r   r    r!   r   r   r"   r#   r$   r   Úvisibler   Ú
start_cellr   r   g      à?)ÚgetÚ
isinstanceÚintÚfloatr   r   r    r!   r   r   r"   Ústrr#   r$   r   Úboolr   r   Ú_from_valuer   r
   )r(   r   r   r   r    r!   r   r   r"   r#   r$   r   r,   r-   r   r   r)   r)   r*   r'   M   sd   














zCommentType._set_user_optionsc                 C   s
  d}d}| j dkrd| _d| _n8| j |d kr d| _|d | _n(| j |d kr0d| _|d | _n| j |d	 kr@d
| _|d | _nd| _|d	 | _| j|d krYd| _|d | _dS | j|d krjd| _|d | _dS | j|d	 kr{d| _|d | _dS d| _|d	 | _dS )zÚ
        Set the default start cell and offsets for the comment. These are
        generally a fixed offset relative to the parent cell. However there are
        some edge cases for cells at the, well, edges.
        i   i @  r   r   é   é   é   é   r   é   é   é
   é1   é   é   N)r   r!   r   r   r    r   )r(   r   r   Úrow_maxÚcol_maxr)   r)   r*   r&      s6   

zCommentType.set_offsets©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r2   r   r   r   r1   r+   r'   r&   r)   r)   r)   r*   r      s*    
ûþýüû
ú1ÿÿ
þPr   c                       s&  e Zd ZdZd+‡ fdd„Z	d,deee  ddfdd„Zd+d	d
„Z	dee ddfdd„Z
deddfdd„Zdee ddfdd„Zdededdfdd„Zdeddfdd„Zdeddfdd„Zdeddfdd„Zdeddfdd„Zd eddfd!d"„Zd+d#d$„Zd%eddfd&d'„Zd(eddfd)d*„Z‡  ZS )-ÚCommentsz=
    A class for writing the Excel XLSX Comments file.


    r   Nc                    s   t ƒ  ¡  i | _dS )z
        Constructor.

        N)Úsuperr+   Ú
author_ids)r(   ©Ú	__class__r)   r*   r+   Ö   s   

zComments.__init__Úcomments_datac                 C   sF   |d u rg }|   ¡  |  ¡  |  |¡ |  |¡ |  d¡ |  ¡  d S )NÚcomments)Ú_xml_declarationÚ_write_commentsÚ_write_authorsÚ_write_comment_listÚ_xml_end_tagÚ
_xml_close)r(   rK   r)   r)   r*   Ú_assemble_xml_fileå   s   


zComments._assemble_xml_filec                 C   s   d}d|fg}|   d|¡ d S )Nz9http://schemas.openxmlformats.org/spreadsheetml/2006/mainÚxmlnsrL   )Ú_xml_start_tag)r(   rT   Ú
attributesr)   r)   r*   rN     s   
zComments._write_commentsÚcomment_datac                 C   sZ   d}|   d¡ |D ]}|j}|d ur%|| jvr%|| j|< |d7 }|  |¡ q	|  d¡ d S )Nr   Úauthorsr   )rU   r   rH   Ú_write_authorrQ   )r(   rW   Úauthor_countÚcommentr   r)   r)   r*   rO     s   


€zComments._write_authorsÚdatac                 C   s   |   d|¡ d S )Nr   )Ú_xml_data_element)r(   r\   r)   r)   r*   rY     s   zComments._write_authorc                 C   sH   |   d¡ |D ]}d}|jd ur| j|j }|  ||¡ q|  d¡ d S )NÚcommentListéÿÿÿÿ)rU   r   rH   Ú_write_commentrQ   )r(   rW   r[   Ú	author_idr)   r)   r*   rP   #  s   

zComments._write_comment_listr[   ra   c                 C   sT   t |j|jƒ}d|fg}|dkr| d|› f¡ |  d|¡ |  |¡ |  d¡ d S )NÚrefr_   ÚauthorIdr[   )r   r   r   ÚappendrU   Ú_write_textrQ   )r(   r[   ra   rb   rV   r)   r)   r*   r`   2  s   

zComments._write_commentc                 C   s"   |   d¡ |  |¡ |  d¡ d S )Nr   )rU   Ú_write_text_rrQ   ©r(   r[   r)   r)   r*   re   B  s   

zComments._write_textc                 C   s.   |   d¡ |  |¡ |  |j¡ |  d¡ d S )NÚr)rU   Ú_write_r_prÚ_write_text_tr   rQ   rg   r)   r)   r*   rf   K  s   

zComments._write_text_rr   c                 C   s(   g }t |ƒr| d¡ |  d||¡ d S )N)z	xml:spaceÚpreserveÚt)r	   rd   r]   )r(   r   rV   r)   r)   r*   rj   W  s   
zComments._write_text_tc                 C   sD   |   d¡ |  |j¡ |  ¡  |  |j¡ |  |j¡ |  d¡ d S )NÚrPr)	rU   Ú	_write_szr"   Ú_write_colorÚ_write_r_fontr#   Ú_write_familyr$   rQ   rg   r)   r)   r*   ri   `  s   
zComments._write_r_prr"   c                 C   ó   d|fg}|   d|¡ d S )NÚvalÚsz©Ú_xml_empty_tag)r(   r"   rV   r)   r)   r*   rn   r  ó   
zComments._write_szc                 C   s   dg}|   d|¡ d S )N)ÚindexedéQ   r   ru   )r(   rV   r)   r)   r*   ro   x  s   zComments._write_colorr#   c                 C   rr   )Nrs   ÚrFontru   )r(   r#   rV   r)   r)   r*   rp   ~  rw   zComments._write_r_fontr$   c                 C   rr   )Nrs   Úfamilyru   )r(   r$   rV   r)   r)   r*   rq   „  rw   zComments._write_family)r   NrA   )rB   rC   rD   rE   r+   r   r   r   rS   rN   rO   r2   rY   rP   r0   r`   re   rf   rj   ri   r1   rn   ro   rp   rq   Ú__classcell__r)   r)   rI   r*   rF   É   s,    ÿ
ÿ
þ
		
rF   N)Útypingr   r   r   r   Úxlsxwriter.colorr   Ú r   Úutilityr	   r
   r   r   Ú	XMLwriterrF   r)   r)   r)   r*   Ú<module>   s   	 3