o
    öÑÐbƒï ã                   @   s’   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	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ G dd„ dejƒZdS )é    N©Úwarné   )ÚShape)Ú	xmlwriter)Úget_rgb_color)Úxl_rowcol_to_cell)Úxl_range_formula)Úsupported_datetime)Údatetime_to_excel_datetime)Úquote_sheetnamec                       sþ  e Zd ZdZdœ‡ fdd„	Zdœdd„Zdd„ Zd	d
„ Z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d„Zdœdd „Zdœd!d"„Zdœd#d$„Zdœd%d&„Zdœd'd(„Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dœdCdD„Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6didj„ Z7dkdl„ Z8dmdn„ Z9dodp„ Z:dqdr„ Z;dsdt„ Z<dudv„ Z=dwdx„ Z>dydz„ Z?d{d|„ Z@d}d~„ ZAdd€„ ZBdd‚„ ZCdƒd„„ ZDd…d†„ ZEd‡dˆ„ ZFd‰dŠ„ ZGd‹dŒ„ ZHddŽ„ ZIdd„ ZJd‘d’„ ZKd“d”„ ZLd•d–„ ZMd—d˜„ ZNd™dš„ ZOd›dœ„ ZPddž„ ZQdŸd „ ZRd¡d¢„ ZSd£d¤„ ZTdœd¥d¦„ZUd§d¨„ ZVdœd©dª„ZWd«d¬„ ZXd­d®„ ZYdœd¯d°„ZZd±d²„ Z[d³d´„ Z\dµd¶„ Z]d·d¸„ Z^d¹dº„ Z_d»d¼„ Z`d½d¾„ Zad¿dÀ„ ZbdœdÁdÂ„ZcdœdÃdÄ„ZddÅdÆ„ ZedÇdÈ„ ZfdÉdÊ„ ZgdËdÌ„ ZhdÍdÎ„ ZidÏdÐ„ ZjdÑdÒ„ ZkdÓdÔ„ ZldÕdÖ„ Zmd×dØ„ ZnddÚdÛ„Zo	ÙddÜdÝ„ZpdÞdß„ Zqdàdá„ Zrdâdã„ Zsdädå„ Ztdædç„ Zudèdé„ Zvdêdë„ Zwdìdí„ Zxdîdï„ Zydðdñ„ Zzdòdó„ Z{dôdõ„ Z|död÷„ Z}dødù„ Z~dúdû„ Zddü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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(d)„ Z–d*d+„ Z—d,d-„ Z˜d.d/„ Z™d0d1„ Zšd2d3„ Z›d4d5„ Zœd6d7„ Zd8d9„ Zžd:d;„ ZŸd<d=„ Z d>d?„ Z¡d@dA„ Z¢dBdC„ Z£dDdE„ Z¤dFdG„ Z¥dHdI„ Z¦dJdK„ Z§dLdM„ Z¨dNdO„ Z©dPdQ„ ZªdRdS„ Z«dTdU„ Z¬dVdW„ Z­dXdY„ Z®dZd[„ Z¯d\d]„ Z°d^d_„ Z±d`da„ Z²dbdc„ Z³ddde„ Z´dfdg„ Zµdhdi„ Z¶djdk„ Z·dldm„ Z¸dndo„ Z¹dpdq„ Zºdrds„ Z»dtdu„ Z¼dvdw„ Z½dxdy„ Z¾dz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–d—„ ZÍd˜d™„ ZÎdšd›„ ZÏ‡  ZÐS (ž  ÚChartz:
    A class for writing the Excel XLSX Chart file.


    Nc                    s”  t t| ƒ ¡  d| _d| _d| _g | _d| _d| _d| _	d| _
g | _g | _d| _d| _i | _d| _d| _i | _g | _d| _d	| _d| _i | _i | _i | _i | _i | _i | _d
| _d| _d| _d	| _ d| _!d| _"d	| _#d	| _$d| _%d| _&d| _'d| _(d| _)d| _*d| _+d| _,d| _-d| _.d| _/d| _0d| _1d| _2d| _3d| _4d| _5d| _6d| _7d| _8d| _9d| _:d| _;i | _<d
| _=d| _>d| _?d| _@d| _A|  B¡  dS )z
        Constructor.

        Ni   r   éÿÿÿÿé   FÚbÚlr   Ú Úgapià  i   ÚbetweenT)CÚsuperr   Ú__init__ÚsubtypeZ
sheet_typeZorientationÚseriesÚembeddedÚidÚseries_indexÚstyle_idÚaxis_idsÚ	axis2_idsÚcat_has_num_fmtÚrequires_categoryÚlegendÚcat_axis_positionÚval_axis_positionÚformula_idsÚformula_dataÚhoriz_cat_axisÚhoriz_val_axisÚ
protectionÚ	chartareaÚplotareaÚx_axisÚy_axisÚy2_axisÚx2_axisZ
chart_nameÚshow_blanksÚshow_hiddenÚshow_crossesÚwidthÚheightÚx_scaleÚy_scaleÚx_offsetÚy_offsetÚtableÚcross_betweenÚdefault_markerÚseries_gap_1Úseries_gap_2Úseries_overlap_1Úseries_overlap_2Ú
drop_linesÚhi_low_linesÚup_down_barsÚsmooth_allowedÚ
title_fontÚ
title_nameÚtitle_formulaÚtitle_data_idÚtitle_layoutÚtitle_overlayÚ
title_noneÚdate_categoryÚ	date_1904Úremove_timezoneÚlabel_positionsÚlabel_position_defaultZalready_insertedÚcombinedÚis_secondaryÚwarn_sheetnameÚ_set_default_properties©ÚselfÚoptions©Ú	__class__© úO/var/www/secure340b-portal/env/lib/python3.10/site-packages/xlsxwriter/chart.pyr   "   s‚   zChart.__init__c                 C   s¬  |du ri }d|vrt dƒ dS | jrd|vrt dƒ dS t| jƒdkr*t dƒ dS |  | d¡¡}|  | d¡¡}|  | d¡| d	¡¡\}}|  || d
¡¡}|  || d¡¡}|  || d¡¡}t 	| d¡¡}	| d¡rwt 	|d ¡}	t 
| d¡¡}
t | d¡¡}t | d¡¡}|r”d| _|ršd}d}
|  | d¡¡}|  | d¡¡}| d¡}|  | d¡¡}|  | d¡¡}||dœ}|  | d¡¡}|  | d¡¡}| dd¡}| d¡}| d¡}|sè|rëd| _| d¡durÿ|rú|d | _n|d | _| d ¡r|r|d  | _n|d  | _i d|“d|“d|“d	|“d!|“d"|“d#|“d|	“d|
“d|“d|“d|“d|“d$|“d%|“d|“d|“|||d&œ¥}| j |¡ dS )'z¢
        Add a data series to a chart.

        Args:
            options:  A dictionary of chart series options.

        Returns:
            Nothing.

        NÚvaluesz%Must specify 'values' in add_series()Ú
categoriesz=Must specify 'categories' in add_series() for this chart typeéÿ   zGThe maximum number of series that can be added to an Excel Chart is 255ÚnameÚname_formulaZcategories_dataZvalues_dataZ	name_dataÚlineÚborderÚfillÚpatternÚgradientÚmarkerÚ	trendlineÚsmoothÚy_error_barsÚx_error_bars)rh   rg   ÚpointsZdata_labelsZinvert_if_negativeFr.   r-   Tr   ÚoverlapÚname_idÚval_data_idÚcat_data_idÚlabelsÚinvert_if_neg)ri   Ú
error_barsrf   )r   r    Úlenr   Ú_list_to_formulaÚgetÚ_process_namesÚ_get_data_idr   Ú_get_line_propertiesÚ_get_fill_propertiesÚ_get_pattern_propertiesÚ_get_gradient_propertiesra   Ú_get_marker_propertiesÚ_get_trendline_propertiesÚ_get_error_bars_propsÚ_get_points_propertiesÚ_get_labels_propertiesrP   r<   r;   r>   r=   Úappend)rT   rU   rZ   r[   r]   r^   Zcat_idZval_idrk   r_   ra   rb   rc   rd   re   rf   rg   rh   rp   ri   rn   ro   r.   r-   r   rX   rX   rY   Ú
add_seriesk   sº   ÿ

ÿ



ÿþýüûúùø	÷
öõôóòñðïìzChart.add_seriesc                 C   ó   |   | j|¡}|| _dS )zš
        Set the chart X axis options.

        Args:
            options:  A dictionary of axis options.

        Returns:
            Nothing.

        N)Ú_convert_axis_argsr+   ©rT   rU   ÚaxisrX   rX   rY   Ú
set_x_axisø   ó   
zChart.set_x_axisc                 C   r   )z™
        Set the chart Y axis options.

        Args:
            options: A dictionary of axis options.

        Returns:
            Nothing.

        N)r‚   r,   rƒ   rX   rX   rY   Ú
set_y_axis  r†   zChart.set_y_axisc                 C   r   )z£
        Set the chart secondary X axis options.

        Args:
            options: A dictionary of axis options.

        Returns:
            Nothing.

        N)r‚   r.   rƒ   rX   rX   rY   Úset_x2_axis  r†   zChart.set_x2_axisc                 C   r   )z£
        Set the chart secondary Y axis options.

        Args:
            options: A dictionary of axis options.

        Returns:
            Nothing.

        N)r‚   r-   rƒ   rX   rX   rY   Úset_y2_axis%  r†   zChart.set_y2_axisc                 C   sŽ   |du ri }|   | d¡| d¡¡\}}|  || d¡¡}|| _|| _|| _|  | d¡¡| _|  | d¡d¡| _	| d¡| _
| d	¡| _dS )
zŸ
        Set the chart title options.

        Args:
            options: A dictionary of chart title options.

        Returns:
            Nothing.

        Nr]   r^   ÚdataÚ	name_fontÚlayoutTÚoverlayÚnone)rt   rs   ru   rD   rE   rF   Ú_convert_font_argsrC   Ú_get_layout_propertiesrG   rH   rI   )rT   rU   r]   r^   Údata_idrX   rX   rY   Ú	set_title4  s   ÿÿzChart.set_titlec                 C   ó   |   |¡| _dS )z 
        Set the chart legend options.

        Args:
            options: A dictionary of chart legend options.

        Returns:
            Nothing.
        N)Ú_get_legend_propertiesr!   rS   rX   rX   rY   Ú
set_legendW  ó   zChart.set_legendc                 C   r“   )z¦
        Set the chart plot area options.

        Args:
            options: A dictionary of chart plot area options.

        Returns:
            Nothing.
        N)Ú_get_area_propertiesr*   rS   rX   rX   rY   Úset_plotaread  r–   zChart.set_plotareac                 C   r“   )zœ
        Set the chart area options.

        Args:
            options: A dictionary of chart area options.

        Returns:
            Nothing.
        N)r—   r)   rS   rX   rX   rY   Úset_chartareaq  r–   zChart.set_chartareac                 C   s*   |du rd}|dk s|dkrd}|| _ dS )zœ
        Set the chart style type.

        Args:
            style_id: An int representing the chart style.

        Returns:
            Nothing.
        Nr   r   é0   )r   )rT   r   rX   rX   rY   Ú	set_style~  s
   
zChart.set_stylec                 C   s6   |sdS ddddœ}||vrt d| ƒ dS || _dS )zº
        Set the option for displaying blank data in a chart.

        Args:
            option: A string representing the display option.

        Returns:
            Nothing.
        Nr   )r   ÚzeroÚspanz$Unknown show_blanks_as() option '%s')r   r/   )rT   ÚoptionZvalid_optionsrX   rX   rY   Úshow_blanks_as‘  s   
ý
zChart.show_blanks_asc                 C   s
   d| _ dS )z¹
        Display data on charts from hidden rows or columns.

        Args:
            option: A string representing the display option.

        Returns:
            Nothing.
        r   N)r0   ©rT   rX   rX   rY   Úshow_hidden_dataª  s   

zChart.show_hidden_datac                 C   sh   |du ri }|  d| j¡| _|  d| j¡| _|  dd¡| _|  dd¡| _|  dd¡| _|  d	d¡| _dS )
z 
        Set size or scale of the chart.

        Args:
            options: A dictionary of chart size options.

        Returns:
            Nothing.
        Nr2   r3   r4   r   r5   r6   r   r7   )rs   r2   r3   r4   r5   r6   r7   rS   rX   rX   rY   Úset_size¶  s   
zChart.set_sizec                 C   sn   |du ri }i }|  dd¡|d< |  dd¡|d< |  dd¡|d< |  dd¡|d< |  |  d¡¡|d< || _dS )	z¨
        Set properties for an axis data table.

        Args:
            options: A dictionary of axis table options.

        Returns:
            Nothing.

        NÚ
horizontalr   ÚverticalÚoutlineÚ	show_keysr   Úfont)rs   r   r8   )rT   rU   r8   rX   rX   rY   Ú	set_tableË  s   
zChart.set_tablec                 C   s   |du ri }d}d}d}d}|  d¡r@d|d v r"t |d d ¡}d|d v r1t |d d ¡}d|d v r@t |d d ¡}|  d¡rrd|d v rTt |d d ¡}d|d v rct |d d ¡}d|d v rrt |d d ¡}||dœ||dœdœ| _dS )	z¡
        Set properties for the chart up-down bars.

        Args:
            options: A dictionary of options.

        Returns:
            Nothing.

        NÚupr`   r_   ra   Údown)r_   ra   )r©   rª   )rs   r   rv   rw   rA   )rT   rU   Zup_lineZup_fillZ	down_lineZ	down_fillrX   rX   rY   Úset_up_down_barsã  s8   

ÿÿÿýzChart.set_up_down_barsc                 C   óv   |du ri }t  | d¡¡}t  | d¡¡}t  | d¡¡}t  | d¡¡}|r+d| _|r1d}d}||||dœ| _dS )zŸ
        Set properties for the chart drop lines.

        Args:
            options: A dictionary of options.

        Returns:
            Nothing.

        Nr_   ra   rb   rc   ©r_   ra   rb   rc   )r   rv   rs   rw   rx   ry   ra   r?   ©rT   rU   r_   ra   rb   rc   rX   rX   rY   Úset_drop_lines  ó    ýzChart.set_drop_linesc                 C   r¬   )z£
        Set properties for the chart high-low lines.

        Args:
            options: A dictionary of options.

        Returns:
            Nothing.

        Nr_   ra   rb   rc   r­   )r   rv   rs   rw   rx   ry   ra   r@   r®   rX   rX   rY   Úset_high_low_lines=  r°   zChart.set_high_low_linesc                 C   s   |du rdS || _ dS )zÅ
        Create a combination chart with a secondary chart.

        Args:
            chart: The secondary chart to combine with the primary chart.

        Returns:
            Nothing.

        N)rO   )rT   ÚchartrX   rX   rY   Úcombineb  s   
zChart.combinec                 C   s`   |   ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  | j¡ | jr%|  	¡  |  
d¡ |  ¡  d S )Núc:chartSpace)Z_xml_declarationÚ_write_chart_spaceÚ_write_langÚ_write_styleÚ_write_protectionÚ_write_chartÚ_write_sp_prr)   r   Ú_write_print_settingsÚ_xml_end_tagZ
_xml_closer    rX   rX   rY   Ú_assemble_xml_filex  s   
zChart._assemble_xml_filec                 C   sÈ  |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¡| d¡| d¡| d¡ddœ¥}d|v r¤| d¡|d< nd|d< |  |d ¡|d< | dd¡|d< | d¡rÍ|d d rÍ|  |d ¡|d< | d ¡rá|d  d rá|  |d  ¡|d < | d¡rð|d  ¡ d! |d< | d¡r|d d"krd#|d< n|d d$kr
nd |d< | d%¡rd| _| d&¡r$d| _d|d&< | d¡r=t	|d ƒr=t
|d | j| jƒ|d< | d	¡rVt	|d	 ƒrVt
|d	 | j| jƒ|d	< | d¡rot	|d ƒrot
|d | j| jƒ|d< |  | d'¡¡|d'< |  | d(¡¡|d(< |  | d)¡d¡|d)< t | d*¡¡|d*< t | d+¡¡|d+< t | d,¡¡|d,< t | d-¡¡|d-< | d,¡rÀd |d+< | d-¡rÎd |d,< d |d+< |  | d.¡¡|d.< |  | d/¡¡|d/< |S )0NÚdefaultsr]   r^   rŠ   Úformular‘   ÚreverseÚminÚmaxÚ
minor_unitÚ
major_unitÚminor_unit_typeÚmajor_unit_typeÚdisplay_unitsÚlog_baseÚcrossingÚposition_axisÚpositionÚlabel_positionÚlabel_alignÚ
num_formatÚnum_format_linkedÚinterval_unitÚinterval_tickF)rÍ   rÎ   rÏ   rÐ   rÑ   Ú	text_axisÚvisibler   Údisplay_units_visibleTÚmajor_gridlinesÚminor_gridlinesr   Zon_tickZmidCatr   Z	date_axisrÒ   Únum_fontr‹   Úname_layoutr_   ra   rb   rc   Úminor_tick_markÚmajor_tick_mark)ÚcopyÚupdatert   rs   ru   Ú_get_display_unitsÚ_get_gridline_propertiesÚlowerrJ   r
   r   rK   rL   r   r   r   rv   rw   rx   ry   Ú_get_tick_type)rT   r„   Úuser_optionsrU   r]   r^   r‘   rX   rX   rY   r‚   ™  sÞ   
ÿÿþýü
û
ú
ù
ø
	÷

ö
õ
ô
ó
ò
ñ
ð
ïé
ÿ

ÿÿ

ÿÿ

þþþÿÿÿÿzChart._convert_axis_argsc                 C   sœ   |sd S |  d¡|  d¡|  d¡|  d¡|  d¡|  d¡|  d¡|  d¡|  d	d
¡|  d¡dœ
}|d r>t|d d ƒ|d< |d rLdt|d ƒ |d< |S )Nr]   ÚcolorÚsizeÚboldÚitalicÚ	underlineÚpitch_familyÚcharsetÚbaseliner   Úrotation)
r]   râ   rã   rä   rå   ræ   rç   rè   ré   rê   éd   é`ê  )rs   Úint)rT   rU   r§   rX   rX   rY   r     s$   
özChart._convert_font_argsc                 C   sB   t |ƒtur|rd|v rd|vr| jrtd| ƒ |S t|Ž }|S )Nú ú'zSSheetname in '%s' contains spaces but isn't quoted. This may cause errors in Excel.)ÚtypeÚlistrQ   r   r	   )rT   rŠ   r¿   rX   rX   rY   rr   ;  s   ÿÿzChart._list_to_formulac                 C   sd   |d ur.t |tƒr$t|d |d ddƒ}t|d ƒd | }d}||fS t d|¡r.|}d}||fS )Nr   r   Tr   ú!r   ú^=?[^!]+!\$?[A-Z]+\$?[0-9]+)Ú
isinstancerñ   r   r   ÚreÚmatch)rT   r]   r^   ÚcellrX   rX   rY   rt   K  s   
ûzChart._process_namesc              	   C   sd   |d u s
t |ƒdkrdS t|d tƒrdS |D ]}|d u rqzt|ƒ W q ty/   Y  dS w dS )Nr   rŽ   Ú	multi_strÚstrÚnum)rq   rô   rñ   ÚfloatÚ
ValueError)rT   rŠ   ÚtokenrX   rX   rY   Ú_get_data_type[  s   þzChart._get_data_typec                 C   sp   |sd S |  d¡r| d¡}|| jvr%t| jƒ}| j |¡ || j|< |S | j| }| j| d u r6|| j|< |S )Nú=)Ú
startswithÚlstripr$   rq   r%   r   )rT   r¿   rŠ   Z
formula_idrX   rX   rY   ru   s  s   	




	
ú
zChart._get_data_idc                 C   sü   |sd S t  |¡}dddddddddd	d	d
dddœ}| d¡}|d ur6||v r.|| |d< ntd| ƒ d S t | d¡¡}d|v rIt |d ¡}t | d¡¡}t | d¡¡}t | d¡¡}|rfd | _	|rld }d }||d< ||d< ||d< ||d< |S )NÚ	automaticrŽ   ÚsquareÚdiamondÚtriangleÚxÚstarÚdotÚdashÚcircleÚplusÚpicture)r  rŽ   r  r  r  r  r  r  Z
short_dashr	  Z	long_dashr
  r  r  rð   zUnknown marker type '%sr_   r`   ra   rb   rc   ©
rÛ   Údeepcopyrs   r   r   rv   rw   rx   ry   ra   )rT   rd   ÚtypesZmarker_typer_   ra   rb   rc   rX   rX   rY   rz   •  sP   
ò
zChart._get_marker_propertiesc                 C   sä   |sd S t  |¡}dddddddœ}| d¡}||v r"|| |d< ntd	| ƒ d S t | d
¡¡}d|v r=t |d ¡}t | d¡¡}t | d¡¡}t | d¡¡}|rZd | _	|r`d }d }||d
< ||d< ||d< ||d< |S )NÚexpÚlinearÚlogÚ	movingAvgÚpolyÚpower)Zexponentialr  r  Zmoving_averageZ
polynomialr  rð   zUnknown trendline type '%s'r_   r`   ra   rb   rc   r  )rT   re   r  Z
trend_typer_   ra   rb   rc   rX   rX   rY   r{   Ú  s>   
ú

zChart._get_trendline_propertiesc                 C   s  |sd S dddddœ}dddddd	œ}|d
 }||v r"|| |d
< nt d| ƒ d S d|v r4|d |d< d|v r>|d |d< d|v rY|d dkrMd|d< n|d dkrXd|d< n	 | d¡|d< | d¡|d< | d¡|d< | d¡|d< t | d¡¡|d< |S )NZfixedValr   Zboth)rð   ÚvalueÚendcapÚ	directionÚ
percentageZstdDevÚstdErrÚcust)Úfixedr  Zstandard_deviationZstandard_errorÚcustomrð   zUnknown error bars type '%sr  Z	end_styler  r  Úminusr  Úplus_valuesÚminus_valuesÚ	plus_dataÚ
minus_datar_   )r   rs   r   rv   )rT   rU   rp   r  Z
error_typerX   rX   rY   r|     sD   üû	

zChart._get_error_bars_propsc                 C   s&   d|  d¡i}t |  d¡¡|d< |S )NrÓ   r_   )rs   r   rv   )rT   rU   ZgridlinerX   rX   rY   rÞ   P  s   zChart._get_gridline_propertiesc                 C   sr  |sd S t  |¡}| d¡}|r/|| jv r'|| jkrd |d< n| j| |d< ntd| ƒ d S | d¡}dddddd	œ}|rO||v rI|| |d< ntd
ƒ d S |  | d¡¡|d< t | d¡¡}d|v rlt |d ¡}t 	| d¡¡}t 
| d¡¡}t | d¡¡}|r‰d | _|rd }d }||d< ||d< ||d< ||d< | d¡r7|d D ]}	|	d u r°q©|	 d¡}
|
rÃt dt|
ƒ¡rÃ|
|	d< |	 d¡}|rÖ| d¡rÖ| d¡|	d< |  ||	 d¡¡}||	d< |  |	 d¡¡|	d< t |	 d¡¡}d|	v rt |	d ¡}t 	|	 d¡¡}t 
|	 d¡¡}t |	 d¡¡}|rd | _|r&d }d }||	d< ||	d< ||	d< ||	d< q©|S )NrË   z3Unsupported label position '%s' for this chart typeÚ	separatorz, z; z. Ú
rî   )ú,ú;Ú.r$  rî   zUnsupported label separatorr§   r_   r`   ra   rb   rc   r  r  ró   r¿   rÿ   rŠ   r‘   )rÛ   r  rs   rM   rN   r   r   r   rv   rw   rx   ry   ra   rõ   rö   rù   r   r  ru   )rT   rn   rË   r#  Ú
separatorsr_   ra   rb   rc   Úlabelr  r¿   r‘   rX   rX   rY   r~   [  s”   




ÿ
û

ÿ

ÿ
zChart._get_labels_propertiesc                 C   s°   i }t  | d¡¡}| d¡rt  |d ¡}t  | d¡¡}t  | d¡¡}t  | d¡¡}|r3d | _|r9d }d }|  | d¡d¡}||d< ||d< ||d< ||d< ||d< |S )Nr_   r`   ra   rb   rc   rŒ   F)r   rv   rs   rw   rx   ry   ra   r   )rT   rU   Úarear_   ra   rb   rc   rŒ   rX   rX   rY   r—   Ù  s&   
zChart._get_area_propertiesc                 C   s  i }|d u ri }|  dd¡|d< |  d¡|d< |  |  d¡¡|d< |  |  d¡d¡|d< |  d¡r5d|d< t |  d¡¡}|  d	¡rIt |d	 ¡}t |  d
¡¡}t |  d¡¡}t |  d¡¡}|rfd | _|rld }d }|  |  d¡d¡}||d< ||d
< ||d< ||d< ||d< |S )NrË   ÚrightÚdelete_seriesr§   rŒ   FrŽ   r_   r`   ra   rb   rc   )	rs   r   r   r   rv   rw   rx   ry   ra   )rT   rU   r!   r_   ra   rb   rc   rŒ   rX   rX   rY   r”     s:   ÿ

zChart._get_legend_propertiesc              	   C   sÜ   i }|sd S |rd}nd}|  ¡ D ]}||vr td| ƒ  d S q|D ]H}||  ¡ vr4td| ƒ  d S || }zt|ƒ W n tyQ   td||f ƒ Y  d S w |dk sZ|dkretd||f ƒ  d S d	| ||< q#|S )
N)r  Úy)r  r-  r2   r3   z+Property '%s' allowed not in layout optionsz1Property '%s' must be specified in layout optionsz2Property '%s' value '%s' must be numeric in layoutr   r   zFProperty '%s' value '%s' must be in range 0 < x <= 1 in layout optionsz%.17g)Úkeysr   rû   rü   )rT   ÚargsZis_textrŒ   Ú
propertiesÚkeyÚpropr  rX   rX   rY   r   6  sB   þÿÿýÿzChart._get_layout_propertiesc           	      C   s¼   g }|sd S |D ]S}i }|d urVt  | d¡¡}d|v r#t  |d ¡}t  | d¡¡}t  | d¡¡}t  | d¡¡}|r@d | _|rFd }d }||d< ||d< ||d< ||d< | |¡ q|S )Nr_   r`   ra   rb   rc   )r   rv   rs   rw   rx   ry   ra   r   )	rT   Zuser_pointsri   Z
user_pointÚpointr_   ra   rb   rc   rX   rX   rY   r}   b  s2   ÿÿzChart._get_points_propertiesc                 C   sh   d}d}|  d¡}|  d¡}|  d¡r|d d rd}|  d¡r(|d d r(d}|s2|s2|s2|s2dS dS )NFrb   rc   ra   ÚdefinedTr_   )rs   )rT   ÚelementZhas_fillZhas_lineZhas_patternZhas_gradientrX   rX   rY   Ú_has_fill_formatting’  s   

ÿzChart._has_fill_formattingc              
   C   sD   |sd S ddddddddd	d
œ	}||v r|| }|S t d| ƒ d S )NÚhundredsÚ	thousandsZtenThousandsZhundredThousandsÚmillionsZtenMillionsZhundredMillionsÚbillionsÚ	trillions)	r7  r8  Zten_thousandsZhundred_thousandsr9  Zten_millionsZhundred_millionsr:  r;  zUnknown display_units type '%s'r   )rT   rÇ   r  rX   rX   rY   rÝ   ¥  s"   ÷ýzChart._get_display_unitsc                 C   s:   |sd S dddddœ}||v r|| }|S t d| ƒ d S )NÚoutÚinrŽ   Úcross)ZoutsideZinsiderŽ   r>  zUnknown tick_type  '%s'r   )rT   Z	tick_typer  rX   rX   rY   rà   ¾  s   üýzChart._get_tick_typec                 C   s&   g }| j D ]}|d s| |¡ q|S ©Nr-   ©r   r   )rT   Zprimary_axes_seriesr   rX   rX   rY   Ú_get_primary_axes_seriesÒ  ó   

€zChart._get_primary_axes_seriesc                 C   s&   g }| j D ]}|d r| |¡ q|S r?  r@  )rT   Zsecondary_axes_seriesr   rX   rX   rY   Ú_get_secondary_axes_seriesÜ  rB  z Chart._get_secondary_axes_seriesc                 C   sŠ   dt | jƒ }dt| jƒ t| jƒ }d||f }d||d f }|d r1| j |¡ | j |¡ |d sC| j |¡ | j |¡ d S d S )Ni‰  r   z%04d%04dÚprimary_axes)rí   r   rq   r   r   r   )rT   r/  Zchart_idZ
axis_countZid1Zid2rX   rX   rY   Ú_add_axis_idsæ  s   þzChart._add_axis_idsc                 C   s€   dddidœ| j d< dddidœ| jd< ddddd	œ| jd< dddid
ddœ| jd< |  i ¡ |  i ¡ |  i ¡ |  i ¡ d S )NÚGeneralrÓ   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    rX   rX   rY   rR   ö  s(   þþüü


zChart._set_default_propertiesc                 C   sB   d}|d }|d }|d }d|fd|fd|fg}|   d|¡ d S )	Nz"http://schemas.openxmlformats.org/zdrawingml/2006/chartzdrawingml/2006/mainz!officeDocument/2006/relationshipszxmlns:czxmlns:azxmlns:rr´   )Ú_xml_start_tag)rT   ZschemaZxmlns_cZxmlns_aZxmlns_rÚ
attributesrX   rX   rY   rµ     s   ýzChart._write_chart_spacec                 C   ó   d}d|fg}|   d|¡ d S )Núen-USÚvalzc:lang©Ú_xml_empty_tag©rT   rK  rH  rX   rX   rY   r¶   ,  ó   
zChart._write_langc                 C   ó,   | j }|dkr	d S d|fg}|  d|¡ d S )Nr   rK  zc:style)r   rM  )rT   r   rH  rX   rX   rY   r·   4  ó
   
zChart._write_stylec                 C   s–   |   d¡ | jr|  ¡  n'| jd ur"|  | j| jd | j| j| j¡ n| j	d ur4|  
| j	d | j| j| j¡ |  ¡  |  ¡  |  ¡  |  ¡  |  d¡ d S )Nzc:chart)rG  rI   Ú_write_c_auto_title_deletedrE   Ú_write_title_formularF   rC   rG   rH   rD   Ú_write_title_richÚ_write_plot_areaÚ_write_legendÚ_write_plot_vis_onlyÚ_write_disp_blanks_asr¼   r    rX   rX   rY   r¹   @  s.   


û
üzChart._write_chartc                 C   rP  )Nr   rK  zc:dispBlanksAs)r/   rM  rN  rX   rX   rY   rX  e  rQ  zChart._write_disp_blanks_asc                 C   sD  |   d¡ |  | j d¡d¡ |  ddi¡ |  ddi¡ | j}|rF|jr,d| j |_n| j|_| j|_| j	|_	| ddi¡ | ddi¡ | j
| j| jdœ}| jrX|  |¡ n|  |¡ |  |¡ | j| j| jdœ}|  |¡ |rƒ|jrƒ|j|j|jdœ}| |¡ | jrŒ|  |¡ n|  |¡ |  ¡  |  | j¡ |  d¡ d S )	Nz
c:plotArearŒ   ÚplotrD  TFéè  )r+   r,   r   )rG  Ú_write_layoutr*   rs   Ú_write_chart_typerO   rP   r   Úfhr   r+   r,   r   rJ   Ú_write_date_axisÚ_write_cat_axisÚ_write_val_axisr.   r-   r   Ú_write_d_tablerº   r¼   )rT   Zsecond_chartr/  rX   rX   rY   rU  q  sL   
þ

þ

þ

zChart._write_plot_areac                 C   s6   |s	|   d¡ d S |  d¡ |  ||¡ |  d¡ d S )Núc:layout)rM  rG  Ú_write_manual_layoutr¼   ©rT   rŒ   Zlayout_typerX   rX   rY   r[  ·  s
   
zChart._write_layoutc                 C   sª   |   d¡ |dkr|  ddg¡ |  ddg¡ |  ddg¡ |  dd	|d
 fg¡ |  dd	|d fg¡ |dkrN|  dd	|d fg¡ |  dd	|d fg¡ |  d¡ d S )Nzc:manualLayoutrY  zc:layoutTarget)rK  Úinnerzc:xMode)rK  Úedgezc:yModezc:xrK  r  zc:yr-  Útextzc:wr2   zc:hr3   ©rG  rM  r¼   rd  rX   rX   rY   rc  Ã  s   
zChart._write_manual_layoutc                 C   s   d S ©NrX   rS   rX   rX   rY   r\  Ø  s   zChart._write_chart_typec                 C   ó   d|fg}|   d|¡ d S )NrK  z
c:groupingrL  rN  rX   rX   rY   Ú_write_groupingÝ  ó   
zChart._write_groupingc                 C   s   |   |¡ d S ri  )Ú
_write_ser©rT   r   rX   rX   rY   Ú_write_seriesã  ó   zChart._write_seriesc                 C   sÐ   | j }|  j d7  _ |  d¡ |  |¡ |  |¡ |  |¡ |  |¡ |  |d ¡ |  |d ¡ |  |d ¡ |  	|d ¡ |  
|d ¡ |  |d ¡ |  |¡ |  |¡ | jra|  |d	 ¡ |  d¡ d S )
Nr   zc:serrd   ro   ri   rn   re   rp   rf   )r   rG  Ú
_write_idxÚ_write_orderÚ_write_series_namerº   Ú_write_markerÚ_write_c_invert_if_negativeÚ_write_d_ptÚ_write_d_lblsÚ_write_trendlineÚ_write_error_barsÚ
_write_catÚ
_write_valrB   Ú_write_c_smoothr¼   )rT   r   ÚindexrX   rX   rY   rm  ç  s$   






zChart._write_serc                 C   rj  )NrK  zc:idxrL  rN  rX   rX   rY   rq    ó   
zChart._write_idxc                 C   rj  )NrK  úc:orderrL  rN  rX   rX   rY   rr    r~  zChart._write_orderc                 C   sF   |d d ur|   |d |d ¡ d S |d d ur!|  |d ¡ d S d S )Nr^   rk   r]   )Ú_write_tx_formulaÚ_write_tx_valuern  rX   rX   rY   rs  &  s
   ÿzChart._write_series_namec                 C   s   |r|   ddg¡ d S d S )Nzc:smooth)rK  Ú1rL  )rT   rf   rX   rX   rY   r|  .  s   ÿzChart._write_c_smoothc                 C   sž   |d }|d }d }|d ur| j | }|sd S |  d¡ |  |¡}|dkr0d| _|  |||¡ n|dkr>d| _|  ||¡ n
d| _|  |||¡ |  d¡ d S )Nr[   rm   zc:catrù   r   rø   r   )r%   rG  rþ   r   Ú_write_str_refÚ_write_multi_lvl_str_refÚ_write_num_refr¼   )rT   r   r¿   r‘   rŠ   Zcat_typerX   rX   rY   rz  4  s$   


zChart._write_catc                 C   s@   |d }|d }| j | }|  d¡ |  ||d¡ |  d¡ d S )NrZ   rl   úc:valrú   )r%   rG  r…  r¼   )rT   r   r¿   r‘   rŠ   rX   rX   rY   r{  W  s   

zChart._write_valc                 C   óH   |   d¡ |  |¡ |dkr|  |¡ n	|dkr|  |¡ |  d¡ d S )Nzc:numRefrú   rù   ©rG  Ú_write_series_formulaÚ_write_num_cacheÚ_write_str_cacher¼   ©rT   r¿   rŠ   Zref_typerX   rX   rY   r…  e  s   


zChart._write_num_refc                 C   r‡  )Nzc:strRefrú   rù   rˆ  rŒ  rX   rX   rY   rƒ  u  s   


zChart._write_str_refc                 C   s˜   |sd S |   d¡ |  |¡ |   d¡ t|d ƒ}|  |¡ t|ƒD ]}|   d¡ t|ƒD ]\}}|  ||| ¡ q-|  d¡ q"|  d¡ |  d¡ d S )Nzc:multiLvlStrRefzc:multiLvlStrCacher   zc:lvl)rG  r‰  rq   Ú_write_pt_countÚreversedÚ	enumerateÚ	_write_ptr¼   )rT   r¿   rŠ   ÚcountZcat_dataÚir3  rX   rX   rY   r„  †  s   





zChart._write_multi_lvl_str_refc                 C   s$   |  d¡r
| d¡}|  d|¡ d S )Nrÿ   zc:f)r   r  Ú_xml_data_element)rT   r¿   rX   rX   rY   r‰  ¤  s   

zChart._write_series_formulac                 C   sZ   |   |¡ |d r|  | jd ¡ |  | jd ¡ d S |  | jd ¡ |  | jd ¡ d S )NrD  r   r   )rE  Ú_write_axis_idr   r   )rT   r/  rX   rX   rY   Ú_write_axis_ids­  s   
zChart._write_axis_idsc                 C   rj  )NrK  zc:axIdrL  rN  rX   rX   rY   r”  ¼  r~  zChart._write_axis_idc                 C   s.  |d }|d }|d }|d u st |ƒsd S | j}| j}| d¡r%|d }|  d¡ |  |d ¡ |  | d¡d d d ¡ | d¡sF|  d	¡ |  || d¡¡ |  	| d
¡¡ |  
| d¡¡ |d d urw|  |d |d ||d |d ¡ n|d d ur‹|  |d ||d |d ¡ |  |¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ |  |¡ |  | d¡¡ |  |d	 ¡ | jsÄ| d¡ré| d¡d u sØ| d¡dksØ|d dkrá|  | d¡¡ n|  | d¡¡ | d¡só|  d	¡ |  | d¡¡ |  d¡ |  | d¡¡ |  | d¡¡ |  d¡ d S )Nr+   r,   r   rË   zc:catAxr   rÀ   rÓ   r   rÕ   rÖ   r¿   r‘   r‹   rØ   r]   rÚ   rÙ   rÌ   r×   rÉ   rÂ   rÁ   rÒ   rÍ   rë   rÐ   rÑ   )rq   r"   r&   rs   rG  r”  Ú_write_scalingÚ_write_deleteÚ_write_axis_posÚ_write_major_gridlinesÚ_write_minor_gridlinesrS  rT  Ú_write_cat_number_formatÚ_write_major_tick_markÚ_write_minor_tick_markÚ_write_tick_label_posrº   Ú_write_axis_fontÚ_write_cross_axisr1   Ú_write_crossesÚ_write_c_crosses_atÚ_write_autoÚ_write_label_alignÚ_write_label_offsetÚ_write_c_tick_lbl_skipÚ_write_c_tick_mark_skipr¼   ©rT   r/  r+   r,   r   rË   Ú	is_y_axisrX   rX   rY   r_  Ã  sp   

ý


ü
ý

ÿ
þ


zChart._write_cat_axisc                 C   s0  |d }|d }|d }|  d| j¡}| j}|d u st|ƒs d S |  d¡p&|}|  d¡ |  |d ¡ |  |  d¡|  d¡|  d	¡|  d
¡¡ |  d¡sQ|  d¡ |  ||  d¡¡ |  	|  d¡¡ |  
|  d¡¡ |d d ur‚|  |d |d ||d |d ¡ n|d d ur˜|  |d ||  d¡|  d¡¡ |  |¡ |  |  d¡¡ |  |  d¡¡ |  |  d¡¡ |  |¡ |  |  d¡¡ |  |d ¡ |  d¡d u sÜ|d d	ksÜ|d dkrå|  |  d¡¡ n|  |  d¡¡ |  |  d¡¡ |  |  d¡¡ |  |  d¡¡ |  |  d¡|  d¡¡ |  d¡ d S )Nr+   r,   r   rË   úc:valAxr   rÀ   rÁ   rÂ   rÈ   rÓ   rÕ   rÖ   r¿   r‘   r‹   rØ   r]   rÚ   rÙ   rÌ   r×   r   rÉ   rÊ   rÄ   rÃ   rÇ   rÔ   )rs   r#   r'   rq   rG  r”  r–  r—  r˜  r™  rš  rS  rT  Ú_write_number_formatrœ  r  rž  rº   rŸ  r   r¡  r¢  Ú_write_cross_betweenÚ_write_c_major_unitÚ_write_c_minor_unitÚ_write_disp_unitsr¼   r¨  rX   rX   rY   r`  ,  sl   
ý


ü
ý


ÿ
þÿzChart._write_val_axisc                 C   s,  |d }|d }|d }|d p| j }| j}|d u st|ƒs d S | d¡p&|}|  d¡ |  |d ¡ |  | d¡| d¡| d	¡| d
¡¡ | d¡sQ|  d¡ |  || d¡¡ |  	| d¡¡ |  
| d¡¡ |d d ur‚|  |d |d ||d |d ¡ n|d d ur–|  |d ||d |d ¡ |  |¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ |  |¡ |  | d¡¡ |  |d ¡ | d¡d u sÚ|d d	ksÚ|d dkrã|  | d¡¡ n|  | d¡¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ |  | d¡| d¡¡ |  d¡ d S )Nr+   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Ç   rÔ   )r#   r'   rq   rs   rG  r”  r–  r—  r˜  r™  rš  rS  rT  r«  rœ  r  rž  rº   rŸ  r   r¡  r¢  r¬  r­  r®  r¯  r¼   r¨  rX   rX   rY   Ú_write_cat_val_axisŽ  sl   
ý


ü
ý


ÿ
þÿzChart._write_cat_val_axisc                 C   sp  |d }|d }|d }|d u st |ƒsd S | j}| d¡p|}|  d¡ |  |d ¡ |  | d¡| d¡| d	¡| d
¡¡ | d¡sJ|  d¡ |  || d¡¡ |  | d¡¡ |  	| d¡¡ |d d ur{|  
|d |d d |d |d ¡ n|d d ur|  |d d |d |d ¡ |  |¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ |  |¡ |  | d¡¡ |  |d ¡ | jsÈ| d¡rí| d¡d u sÜ| d¡d	ksÜ|d dkrå|  | d¡¡ n|  | d¡¡ |  d¡ |  d¡ |  | d¡¡ |  | d¡¡ |  | d¡¡ | d¡r|  |d ¡ |  | d¡¡ | d¡r1|  |d ¡ |  d¡ d S ) Nr+   r,   r   rË   zc:dateAxr   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Å   )rq   r"   rs   rG  r”  r–  r—  r˜  r™  rš  rS  rT  r«  rœ  r  rž  rº   rŸ  r   r1   r¡  r¢  r£  r¥  r¦  r§  r­  Ú_write_c_major_time_unitr®  Ú_write_c_minor_time_unitr¼   )rT   r/  r+   r,   r   rË   rX   rX   rY   r^  ñ  st   
ý


ü
ý

ÿ
þ

zChart._write_date_axisc                 C   s@   |   d¡ |  |¡ |  |¡ |  |¡ |  |¡ |  d¡ d S )Nz	c:scaling)rG  Ú_write_c_log_baseÚ_write_orientationÚ_write_c_maxÚ_write_c_minr¼   )rT   rÀ   Úmin_valÚmax_valrÈ   rX   rX   rY   r–  b	  s   




zChart._write_scalingc                 C   ó"   |sd S d|fg}|   d|¡ d S )NrK  z	c:logBaserL  rN  rX   rX   rY   r³  u	  ó   
zChart._write_c_log_basec                 C   s&   d}|rd}d|fg}|   d|¡ d S )NZminMaxZmaxMinrK  zc:orientationrL  )rT   rÀ   rK  rH  rX   rX   rY   r´  	  ó
   
zChart._write_orientationc                 C   ó&   |d u rd S d|fg}|   d|¡ d S )NrK  zc:maxrL  )rT   r¸  rH  rX   rX   rY   rµ  Š	  ó   
zChart._write_c_maxc                 C   r¼  )NrK  zc:minrL  )rT   r·  rH  rX   rX   rY   r¶  ”	  r½  zChart._write_c_minc                 C   s6   |r|dkrd}|dkrd}d|fg}|   d|¡ d S )Nr   Úrr   ÚtrK  zc:axPosrL  )rT   rK  rÀ   rH  rX   rX   rY   r˜  ž	  s   
zChart._write_axis_posc                 C   sX   |  d¡}d}|d ur||d d krd}|  d¡rd}d|fd|fg}|  d|¡ d S ©	NrÎ   r   r¾   r   rÏ   Ú
formatCodeÚsourceLinkedúc:numFmt)rs   rM  )rT   r„   Úformat_codeÚsource_linkedrH  rX   rX   rY   r«  «	  s   
ÿ
þzChart._write_number_formatc                 C   sn   |  d¡}d}d}|d ur||d d krd}d}|  d¡r d}| js'|r'd S d|fd|fg}|  d|¡ d S rÀ  )rs   r   rM  )rT   r„   rÄ  rÅ  Údefault_formatrH  rX   rX   rY   r›  Ã	  s    
ÿ

þzChart._write_cat_number_formatc                 C   s$   d}d|fd|fg}|   d|¡ d S )Nr   rÁ  rÂ  rÃ  rL  )rT   rÄ  rÅ  rH  rX   rX   rY   Ú_write_data_label_number_formatß	  s
   þz%Chart._write_data_label_number_formatc                 C   r¹  )NrK  zc:majorTickMarkrL  rN  rX   rX   rY   rœ  ê	  rº  zChart._write_major_tick_markc                 C   r¹  )NrK  zc:minorTickMarkrL  rN  rX   rX   rY   r  ô	  rº  zChart._write_minor_tick_markc                 C   s.   |d u s|dkr
d}d|fg}|   d|¡ d S )NZnext_toZnextTorK  zc:tickLblPosrL  rN  rX   rX   rY   rž  þ	  s   
zChart._write_tick_label_posc                 C   rj  )NrK  z	c:crossAxrL  rN  rX   rX   rY   r   
  r~  zChart._write_cross_axisc                 C   ó&   |d u rd}d|fg}|   d|¡ d S )NZautoZerorK  z	c:crossesrL  rN  rX   rX   rY   r¡  
  ó   
zChart._write_crossesc                 C   rj  )NrK  zc:crossesAtrL  rN  rX   rX   rY   r¢  
  r~  zChart._write_c_crosses_atc                 C   rj  )NrK  zc:autorL  rN  rX   rX   rY   r£  
  r~  zChart._write_autoc                 C   s>   |d u rd}|dkrd}|dkrd}d|fg}|   d|¡ d S )NZctrr+  r¾  Úleftr   rK  z	c:lblAlgnrL  rN  rX   rX   rY   r¤  %
  s   
zChart._write_label_alignc                 C   rj  )NrK  zc:lblOffsetrL  rN  rX   rX   rY   r¥  5
  r~  zChart._write_label_offsetc                 C   r¼  )NrK  zc:tickLblSkiprL  rN  rX   rX   rY   r¦  <
  rÉ  zChart._write_c_tick_lbl_skipc                 C   r¼  )NrK  zc:tickMarkSkiprL  rN  rX   rX   rY   r§  E
  rÉ  zChart._write_c_tick_mark_skipc                 C   óP   |sd S |d s
d S |d d r!|   d¡ |  |¡ |  d¡ d S |  d¡ d S )NrÓ   r_   r4  zc:majorGridlines©rG  rº   r¼   rM  ©rT   Z	gridlinesrX   rX   rY   r™  N
  ó   

zChart._write_major_gridlinesc                 C   rË  )NrÓ   r_   r4  zc:minorGridlinesrÌ  rÍ  rX   rX   rY   rš  a
  rÎ  zChart._write_minor_gridlinesc                 C   s(   |d u r| j }d|fg}|  d|¡ d S )NrK  zc:crossBetween)r9   rM  rN  rX   rX   rY   r¬  t
  s   
zChart._write_cross_betweenc                 C   r¹  )NrK  zc:majorUnitrL  rN  rX   rX   rY   r­  }
  rº  zChart._write_c_major_unitc                 C   r¹  )NrK  zc:minorUnitrL  rN  rX   rX   rY   r®  ‡
  rº  zChart._write_c_minor_unitc                 C   rÈ  )NÚdaysrK  zc:majorTimeUnitrL  rN  rX   rX   rY   r±  ‘
  rÉ  zChart._write_c_major_time_unitc                 C   rÈ  )NrÏ  rK  zc:minorTimeUnitrL  rN  rX   rX   rY   r²  š
  rÉ  zChart._write_c_minor_time_unitc                 C   sü   | j }| dd¡}| d¡}g }d}| d¡r#t|d ƒtu r#|d }| d¡r0| dd¡}d}d	d
ddddœ}|dkr>d S ||vrDd S || }|  d¡ |  |¡ |D ]}|  |¡ qT|  	| d¡d¡ |rk|  
¡  |rr|  |¡ |  |¡ |  d¡ d S )NrË   r+  r§   r   r,  Zoverlay_r   r   r¾  r   r¿  r   Útr)r+  rÊ  ÚtopÚbottomÚ	top_rightrŽ   zc:legendrŒ   r!   )r!   rs   rð   rñ   r   ÚreplacerG  Ú_write_legend_posÚ_write_legend_entryr[  Ú_write_overlayÚ_write_tx_prrº   r¼   )rT   r!   rË   r§   r,  r   Úallowedr}  rX   rX   rY   rV  £
  sD   

ÿ
û



zChart._write_legendc                 C   rj  )NrK  zc:legendPosrL  rN  rX   rX   rY   rÕ  Ü
  r~  zChart._write_legend_posc                 C   s,   |   d¡ |  |¡ |  d¡ |  d¡ d S )Nzc:legendEntryr   )rG  rq  r—  r¼   )rT   r}  rX   rX   rY   rÖ  ã
  ó   


zChart._write_legend_entryc                 C   rI  )Nr   rK  z	c:overlayrL  rN  rX   rX   rY   r×  ð
  rO  zChart._write_overlayc                 C   s(   d}| j rd S d|fg}|  d|¡ d S )Nr   rK  zc:plotVisOnly)r0   rM  rN  rX   rX   rY   rW  ø
  s
   
zChart._write_plot_vis_onlyc                 C   s0   |   d¡ |  ¡  |  ¡  |  ¡  |  d¡ d S )Nzc:printSettings)rG  Ú_write_header_footerÚ_write_page_marginsÚ_write_page_setupr¼   r    rX   rX   rY   r»     s
   
zChart._write_print_settingsc                 C   ó   |   d¡ d S )Nzc:headerFooterrL  r    rX   rX   rY   rÛ    rp  zChart._write_header_footerc                 C   sP   d}d}d}d}d}d}d|fd|fd|fd|fd|fd	|fg}|   d
|¡ d S )Ng      è?gffffffæ?g333333Ó?r   r   r¾  r¿  ÚheaderÚfooterzc:pageMarginsrL  )rT   rÒ  rÊ  r+  rÑ  rß  rà  rH  rX   rX   rY   rÜ    s   ú	zChart._write_page_marginsc                 C   rÞ  )Nzc:pageSetuprL  r    rX   rX   rY   rÝ  +  rp  zChart._write_page_setupc                 C   s   |   ddg¡ d S )Nzc:autoTitleDeleted©rK  r   rL  r    rX   rX   rY   rR  /  s   z!Chart._write_c_auto_title_deletedFc                 C   s>   |   d¡ |  |||¡ |  |d¡ |r|  ¡  |  d¡ d S ©Nzc:titlerg  )rG  Ú_write_tx_richr[  r×  r¼   )rT   Útitler©  r§   rŒ   r   rX   rX   rY   rT  3  s   
zChart._write_title_richc                 C   sH   |   d¡ |  ||¡ |  |d¡ |r|  ¡  |  ||¡ |  d¡ d S râ  )rG  r€  r[  r×  rØ  r¼   )rT   rä  r‘   r©  r§   rŒ   r   rX   rX   rY   rS  D  s   
zChart._write_title_formulac                 C   s*   |   d¡ | j|||dd |  d¡ d S )Núc:txF)Úignore_rich_pr)rG  Ú_write_richr¼   )rT   rä  r©  r§   rX   rX   rY   rã  Y  s   
zChart._write_tx_richc                 C   ó"   |   d¡ |  |¡ |  d¡ d S )Nrå  ©rG  Ú_write_vr¼   ©rT   rä  rX   rX   rY   r  c  ó   

zChart._write_tx_valuec                 C   s<   d }|d ur| j | }|  d¡ |  ||d¡ |  d¡ d S )Nrå  rù   )r%   rG  rƒ  r¼   )rT   rä  r‘   rŠ   rX   rX   rY   r€  m  s   

zChart._write_tx_formulac                 C   sZ   |r|  d¡d ur|d }nd }|  d¡ |  ||¡ |  ¡  |  |||¡ |  d¡ d S )Nrê   zc:rich)rs   rG  Ú_write_a_body_prÚ_write_a_lst_styleÚ_write_a_p_richr¼   )rT   rä  r§   r©  ræ  rê   rX   rX   rY   rç  {  s   

zChart._write_richc                 C   s€   g }|d u r
|r
d}|d ur8|dkr|  d¡ |  d¡ n|dkr,|  d¡ |  d¡ n|  d|f¡ |  d¡ |  d	|¡ d S )
Ni@š­ÿi@1÷ )Úrotr   )ÚvertZwordArtVerti ø )rñ  ZeaVertrð  )rñ  Zhorzza:bodyPr)r   rM  )rT   rê   r©  rH  rX   rX   rY   rí    s   


zChart._write_a_body_prc                 C   rÞ  )Nz
a:lstStylerL  r    rX   rX   rY   rî  ¦  rp  zChart._write_a_lst_stylec                 C   s2   |   d¡ |s|  |¡ |  ||¡ |  d¡ d S ©Núa:p)rG  Ú_write_a_p_pr_richÚ
_write_a_rr¼   )rT   rä  r§   ræ  rX   rX   rY   rï  ª  s
   

zChart._write_a_p_richc                 C   s*   |   d¡ |  |¡ |  ¡  |  d¡ d S rò  )rG  Ú_write_a_p_pr_formulaÚ_write_a_end_para_rprr¼   ©rT   r§   rX   rX   rY   Ú_write_a_p_formula¸  s   

zChart._write_a_p_formulac                 C   rè  ©Nza:pPr©rG  Ú_write_a_def_rprr¼   rø  rX   rX   rY   rô  Å  rì  zChart._write_a_p_pr_richc                 C   rè  rú  rû  rø  rX   rX   rY   rö  Ï  rì  zChart._write_a_p_pr_formulac                 C   s„   d}t  |¡}t  |¡}|r| d¡d urd}|s|r:|  d|¡ |r,|  d|d i¡ |r3|  |¡ |  d¡ d S |  d|¡ d S )Nr   râ   r   za:defRPr)	r   Ú_get_font_style_attributesÚ_get_font_latin_attributesrs   rG  Ú_write_a_solid_fillÚ_write_a_latinr¼   rM  )rT   r§   Ú	has_colorÚstyle_attributesÚlatin_attributesrX   rX   rY   rü  Ù  s   


zChart._write_a_def_rprc                 C   rI  )NrJ  Úlangza:endParaRPrrL  )rT   r  rH  rX   rX   rY   r÷  ð  rO  zChart._write_a_end_para_rprc                 C   s,   |   d¡ |  |¡ |  |¡ |  d¡ d S )Nza:r)rG  Ú_write_a_r_prÚ
_write_a_tr¼   )rT   rä  r§   rX   rX   rY   rõ  ø  rÚ  zChart._write_a_rc                 C   s–   d}d}t  |¡}t  |¡}|r|d d urd}| dd|f¡ |s$|rC|  d|¡ |r5|  d|d i¡ |r<|  |¡ |  d¡ d S |  d|¡ d S )Nr   rJ  râ   r   r  za:rPr)	r   rý  rþ  ÚinsertrG  rÿ  r   r¼   rM  )rT   r§   r  r  r  r  rX   rX   rY   r    s   


zChart._write_a_r_prc                 C   ó   |   d|¡ d S )Nza:t©r“  rë  rX   rX   rY   r     ó   zChart._write_a_tc                 C   sV   |r|  d¡d ur|d }nd }|  d¡ |  ||¡ |  ¡  |  |¡ |  d¡ d S )Nrê   úc:txPr)rs   rG  rí  rî  rù  r¼   )rT   r§   r©  rê   rX   rX   rY   rØ  %  s   


zChart._write_tx_prc                 C   sn   |d u r| j }|sd S |d dkrd S |  d¡ |  |d ¡ | d¡r+|  |d ¡ |  |¡ |  d¡ d S )Nrð   r  zc:markerrã   )r:   rG  Ú_write_symbolrs   Ú_write_marker_sizerº   r¼   )rT   rd   rX   rX   rY   rt  :  s   


zChart._write_markerc                 C   rj  )NrK  zc:sizerL  rN  rX   rX   rY   r  S  r~  zChart._write_marker_sizec                 C   rj  )NrK  zc:symbolrL  rN  rX   rX   rY   r  Z  r~  zChart._write_symbolc                 C   s´   |   |¡sd S |  d¡ | d¡r)|d d r)d|d v r"|  ¡  n|  |d ¡ | d¡r5|  |d ¡ | d¡rA|  |d ¡ | d¡rS|d d rS|  |d ¡ |  d¡ d S )Núc:spPrra   r4  rŽ   rb   rc   r_   )	r6  rG  rs   Ú_write_a_no_fillrÿ  Ú_write_a_patt_fillÚ_write_a_grad_fillÚ_write_a_lnr¼   rn  rX   rX   rY   rº   a  s   




zChart._write_sp_prc                 C   s–   g }|  d¡}|r t|d d ƒd }tdd|  ƒ}d|fg}|  d|¡ d	|v r/|  ¡  n	d
|v r8|  |¡ |  d¡}|rD|  |¡ |  d¡ d S )Nr2   g      À?é   g      @g      à?iœ1  Úwza:lnrŽ   râ   Z	dash_type)rs   rí   rG  r  rÿ  Ú_write_a_prst_dashr¼   )rT   r_   rH  r2   Ú	line_typerX   rX   rY   r  €  s   





zChart._write_a_lnc                 C   rÞ  )Nza:noFillrL  r    rX   rX   rY   r  ¢  rp  zChart._write_a_no_fillc                 C   sB   |   d¡ d|v rt|d ƒ}| d¡}|  ||¡ |  d¡ d S )Nza:solidFillrâ   Útransparency)rG  r   rs   Ú_write_a_srgb_clrr¼   )rT   ra   râ   r  rX   rX   rY   rÿ  ¦  s   

zChart._write_a_solid_fillc                 C   sB   d|fg}|r|   d|¡ |  |¡ |  d¡ d S |  d|¡ d S )NrK  z	a:srgbClr)rG  Ú_write_a_alphar¼   rM  )rT   rK  r  rH  rX   rX   rY   r  ³  s   

zChart._write_a_srgb_clrc                 C   s.   t dt |ƒ d ƒ}d|fg}|  d|¡ d S )Nrë   rZ  rK  za:alpha©rí   rM  rN  rX   rX   rY   r  Á  s   
zChart._write_a_alphac                 C   rj  )NrK  z
a:prstDashrL  rN  rX   rX   rY   r  Ê  r~  zChart._write_a_prst_dashc                 C   sâ   |sd S |   d¡ |  | d¡¡ |  |¡ |  |d ¡ |d dkr+|  | d¡¡ |d dkr9|  | d¡¡ |  | d¡¡ |  | d	¡¡ d
|v rT|  	|d
 ¡ | d¡r]|  
¡  | d¡rj|  ¡  |  ¡  |  d¡ d S )Nzc:trendliner]   rð   r  Úorderr  ZperiodÚforwardZbackwardZ	interceptZdisplay_r_squaredZdisplay_equation)rG  Ú_write_namers   rº   Ú_write_trendline_typeÚ_write_trendline_orderÚ_write_periodÚ_write_forwardÚ_write_backwardÚ_write_c_interceptÚ_write_c_disp_rsqrÚ_write_c_disp_eqÚ_write_c_trendline_lblr¼   )rT   re   rX   rX   rY   rx  Ñ  s(   



zChart._write_trendlinec                 C   rj  )NrK  zc:trendlineTyperL  rN  rX   rX   rY   r    r~  zChart._write_trendline_typec                 C   s   |d u rd S |   d|¡ d S )Nzc:namer	  ©rT   rŠ   rX   rX   rY   r    s   zChart._write_namec                 C   ó&   |dk rd}d|fg}|   d|¡ d S )Nr   rK  r  rL  rN  rX   rX   rY   r    rÉ  zChart._write_trendline_orderc                 C   r(  )Nr   rK  zc:periodrL  rN  rX   rX   rY   r     rÉ  zChart._write_periodc                 C   r¹  )NrK  z	c:forwardrL  rN  rX   rX   rY   r!  "  rº  zChart._write_forwardc                 C   r¹  )NrK  z
c:backwardrL  rN  rX   rX   rY   r"  ,  rº  zChart._write_backwardc                 C   rj  )NrK  zc:interceptrL  rN  rX   rX   rY   r#  6  rl  zChart._write_c_interceptc                 C   ó   dg}|   d|¡ d S )Nrá  zc:dispEqrL  ©rT   rH  rX   rX   rY   r%  <  ó   zChart._write_c_disp_eqc                 C   r)  )Nrá  z
c:dispRSqrrL  r*  rX   rX   rY   r$  B  r+  zChart._write_c_disp_rsqrc                 C   s,   |   d¡ |  d d ¡ |  ¡  |  d¡ d S )Nzc:trendlineLbl)rG  r[  Ú_write_trendline_num_fmtr¼   r    rX   rX   rY   r&  H  s   
zChart._write_c_trendline_lblc                 C   s   ddg}|   d|¡ d S )N)rÁ  rF  )rÂ  r   rÃ  rL  r*  rX   rX   rY   r,  T  s   þzChart._write_trendline_num_fmtc                 C   sV   | j }|d u r	d S d|v r$|d d r$|  d¡ |  |¡ |  d¡ d S |  d¡ d S )Nr_   r4  zc:hiLowLines)r@   rG  rº   r¼   rM  )rT   r@   rX   rX   rY   Ú_write_hi_low_lines]  s   

zChart._write_hi_low_linesc                 C   sN   | j }|d u r	d S |d d r |  d¡ |  |¡ |  d¡ d S |  d¡ d S )Nr_   r4  zc:dropLines)r?   rG  rº   r¼   rM  )rT   r?   rX   rX   rY   Ú_write_drop_lineso  s   

zChart._write_drop_linesc                 C   r¼  )NrK  z	c:overlaprL  rN  rX   rX   rY   Ú_write_overlap  r½  zChart._write_overlapc              	   C   sŽ   |rt |ƒ}nd}|  d¡ |  d¡ |  |¡ t|ƒD ]#}|| }|d u r'qzt|ƒ W n ty8   d}Y nw |  ||¡ q|  d¡ d S )Nr   z
c:numCacherF  ©	rq   rG  Ú_write_format_coder  Úrangerû   rü   r  r¼   ©rT   rŠ   r‘  r’  rý   rX   rX   rY   rŠ  ‹  s"   



þzChart._write_num_cachec                 C   sH   t |ƒ}|  d¡ |  |¡ t|ƒD ]
}|  ||| ¡ q|  d¡ d S )Nz
c:strCache)rq   rG  r  r2  r  r¼   )rT   rŠ   r‘  r’  rX   rX   rY   r‹  «  s   

zChart._write_str_cachec                 C   r  )Nzc:formatCoder	  r'  rX   rX   rY   r1  º  r
  zChart._write_format_codec                 C   rj  )NrK  z	c:ptCountrL  rN  rX   rX   rY   r  ¿  r~  zChart._write_pt_countc                 C   s:   |d u rd S d|fg}|   d|¡ |  |¡ |  d¡ d S )NÚidxzc:ptré  )rT   r4  r  rH  rX   rX   rY   r  Æ  s   

zChart._write_ptc                 C   r  )Nzc:vr	  r'  rX   rX   rY   rê  Õ  r
  zChart._write_vc                 C   s   | j sd S |  d¡ d S )Nzc:protection)r(   rM  r    rX   rX   rY   r¸   Ú  s   zChart._write_protectionc                 C   s4   d}|sd S |D ]}|d7 }|sq|   ||¡ qd S )Nr   r   )Ú_write_d_pt_point)rT   ri   r}  r3  rX   rX   rY   rv  á  s   ûzChart._write_d_ptc                 C   s,   |   d¡ |  |¡ |  |¡ |  d¡ d S )Nzc:dPt)rG  rq  rº   r¼   )rT   r}  r3  rX   rX   rY   r5  ï  rÚ  zChart._write_d_pt_pointc                 C   s  |sd S |   d¡ | d¡r|  ||d ¡ | d¡r"|  |d ¡ |  |¡ | d¡r3|  |d ¡ | d¡r?|  |d ¡ | d¡rH|  ¡  | d¡rQ|  ¡  | d¡rZ|  	¡  | d	¡rc|  
¡  | d
¡rl|  ¡  | d¡rx|  |d ¡ | d¡r|  ¡  |  d¡ d S )Nzc:dLblsr  rÎ   r§   rË   Z
legend_keyr  ÚcategoryÚseries_namer  r#  Zleader_lines)rG  rs   Ú_write_custom_labelsrÇ  rº   rŸ  Ú_write_d_lbl_posÚ_write_show_legend_keyÚ_write_show_valÚ_write_show_cat_nameÚ_write_show_ser_nameÚ_write_show_percentÚ_write_separatorÚ_write_show_leader_linesr¼   )rT   rn   rX   rX   rY   rw  ü  s6   












zChart._write_d_lblsc                 C   s2  d}|D ]’}|d7 }|d u rq|   d¡ |  |d ¡ | d¡}|r(|  d¡ ni| d¡rZ|  |¡ | d¡r>|  |d ¡ | d¡rG|  ¡  | d¡rP|  ¡  | d	¡rY|  ¡  n7| d¡rŒ|  	|¡ | d¡rp|  |d ¡ | d¡ry|  ¡  | d¡r‚|  ¡  | d	¡r‹|  ¡  n|  
|¡ |  d¡ qd S )
Nr   r   zc:dLblÚdeleter¿   rË   r  r6  r7  )rG  rq  rs   r—  Ú_write_custom_label_formular9  r;  r<  r=  Ú_write_custom_label_strÚ_write_custom_label_format_onlyr¼   )rT   Úparentrn   r}  r)  Zdelete_labelrX   rX   rY   r8  5  sF   







€





€
ÔzChart._write_custom_labelsc                 C   s^   |  d¡}|  d¡}|  |¡}|  d d ¡ |  d¡ |  ||d| ¡ |  d¡ |  |¡ d S )Nr  r§   rå  F)rs   r6  r[  rG  rç  r¼   rº   )rT   r)  rä  r§   Úhas_formattingrX   rX   rY   rC  g  s   




zChart._write_custom_label_strc                 C   sz   |  d¡}|  d¡}|  d¡}|  |¡}d }|d ur| j| }|  d d ¡ |  d¡ |  ||d¡ |  d¡ |  |¡ d S )Nr§   r¿   r‘   rå  rù   )rs   r6  r%   r[  rG  rƒ  r¼   rD  )rT   r)  r§   r¿   r‘   rF  rŠ   rX   rX   rY   rB  z  s   






z!Chart._write_custom_label_formulac                 C   sP   |  d¡}|  |¡}|r|  |¡ |  |¡ d S |r&|  d¡ |  |¡ d S d S )Nr§   r  )rs   r6  rº   rØ  rM  )rT   r)  r§   rF  rX   rX   rY   rD  ’  s   



þz%Chart._write_custom_label_format_onlyc                 C   rI  )Nr‚  rK  zc:showLegendKeyrL  rN  rX   rX   rY   r:  ž  rO  zChart._write_show_legend_keyc                 C   rI  )Nr   rK  z	c:showValrL  rN  rX   rX   rY   r;  ¦  rO  zChart._write_show_valc                 C   rI  )Nr   rK  zc:showCatNamerL  rN  rX   rX   rY   r<  ®  rO  zChart._write_show_cat_namec                 C   rI  )Nr   rK  zc:showSerNamerL  rN  rX   rX   rY   r=  ¶  rO  zChart._write_show_ser_namec                 C   rI  )Nr   rK  zc:showPercentrL  rN  rX   rX   rY   r>  ¾  rO  zChart._write_show_percentc                 C   r  )Nzc:separatorr	  r'  rX   rX   rY   r?  Æ  ó   zChart._write_separatorc                 C   rI  )Nr   rK  zc:showLeaderLinesrL  rN  rX   rX   rY   r@  Ê  rO  zChart._write_show_leader_linesc                 C   rj  )NrK  z	c:dLblPosrL  rN  rX   rX   rY   r9  Ò  r~  zChart._write_d_lbl_posc                 C   rj  )NrK  zc:deleterL  rN  rX   rX   rY   r—  Ù  r~  zChart._write_deletec                 C   s&   d}|sd S d|fg}|   d|¡ d S )Nr   rK  zc:invertIfNegativerL  )rT   ÚinvertrK  rH  rX   rX   rY   ru  à  r»  z!Chart._write_c_invert_if_negativec                 C   s`   |sd S |   d¡ |  | d¡d ¡ |  ¡  |   d¡ |  |¡ |  ¡  |  d¡ |  d¡ d S )Nr  rê   ró  )rG  rí  rs   rî  rô  r÷  r¼   rø  rX   rX   rY   rŸ  ë  s   



zChart._write_axis_fontc                 C   r  )Nza:latinrL  r*  rX   rX   rY   r   ü  rG  zChart._write_a_latinc                 C   s|   | j }|sd S |  d¡ |d r|  ¡  |d r|  ¡  |d r$|  ¡  |d r,|  ¡  |d r7|  |d ¡ |  d¡ d S )Nzc:dTabler£   r¤   r¥   r¦   r§   )r8   rG  Ú_write_show_horz_borderÚ_write_show_vert_borderÚ_write_show_outlineÚ_write_show_keysrØ  r¼   )rT   r8   rX   rX   rY   ra     s   
zChart._write_d_tablec                 C   r)  )Nrá  zc:showHorzBorderrL  r*  rX   rX   rY   rI    r+  zChart._write_show_horz_borderc                 C   r)  )Nrá  zc:showVertBorderrL  r*  rX   rX   rY   rJ  %  r+  zChart._write_show_vert_borderc                 C   r)  )Nrá  zc:showOutlinerL  r*  rX   rX   rY   rK  +  r+  zChart._write_show_outlinec                 C   r)  )Nrá  z
c:showKeysrL  r*  rX   rX   rY   rL  1  r+  zChart._write_show_keysc                 C   s@   |sd S |d r|   d|d ¡ |d r|   d|d ¡ d S d S )Nrh   r  rg   r-  )Ú_write_err_bars©rT   rp   rX   rX   rY   ry  7  s   ÿzChart._write_error_barsc                 C   s”   |sd S |   d¡ |  |¡ |  |d ¡ |  |d ¡ |d s$|  ¡  |d dkr+n|d dkr7|  |¡ n|  |d ¡ |  |¡ |  d¡ d S )Nz	c:errBarsr  rð   r  r  r  r  )	rG  Ú_write_err_dirÚ_write_err_bar_typeÚ_write_err_val_typeÚ_write_no_end_capÚ_write_custom_errorÚ_write_error_valrº   r¼   )rT   r  rp   rX   rX   rY   rM  C  s   


zChart._write_err_barsc                 C   rj  )NrK  zc:errDirrL  rN  rX   rX   rY   rO  g  r~  zChart._write_err_dirc                 C   rj  )NrK  zc:errBarTyperL  rN  rX   rX   rY   rP  n  r~  zChart._write_err_bar_typec                 C   rj  )NrK  zc:errValTyperL  rN  rX   rX   rY   rQ  u  r~  zChart._write_err_val_typec                 C   r)  )Nrá  z
c:noEndCaprL  r*  rX   rX   rY   rR  |  r+  zChart._write_no_end_capc                 C   rj  )NrK  r†  rL  rN  rX   rX   rY   rT  ‚  r~  zChart._write_error_valc                 C   s¨   |d r(|   d¡ t|d tƒr|  |d ¡ n|  |d |d d¡ |  d¡ |d rR|   d¡ t|d tƒr@|  |d ¡ n|  |d |d d¡ |  d¡ d S d S )Nr  zc:plusr!  rú   r   zc:minusr"  )rG  rô   rñ   Ú_write_num_litr…  r¼   rN  rX   rX   rY   rS  ‰  s&   

þ


þözChart._write_custom_errorc              	   C   s„   t |ƒ}|  d¡ |  d¡ |  |¡ t|ƒD ]#}|| }|d u r"qzt|ƒ W n ty3   d}Y nw |  ||¡ q|  d¡ d S )Nzc:numLitrF  r   r0  r3  rX   rX   rY   rU  ¤  s   


þzChart._write_num_litc                 C   sT   | j }|d u r	d S |  d¡ |  d¡ |  | d¡¡ |  | d¡¡ |  d¡ d S )Nzc:upDownBarsé–   r©   rª   )rA   rG  Ú_write_gap_widthÚ_write_up_barsrs   Ú_write_down_barsr¼   )rT   rA   rX   rX   rY   Ú_write_up_down_barsÂ  s   

zChart._write_up_down_barsc                 C   r¼  )NrK  z
c:gapWidthrL  rN  rX   rX   rY   rW  Ö  r½  zChart._write_gap_widthc                 C   óD   |d r|d d r|   d¡ |  |¡ |  d¡ d S |  d¡ d S )Nr_   r4  zc:upBarsrÌ  ©rT   Z
bar_formatrX   rX   rY   rX  à  ó
   

zChart._write_up_barsc                 C   r[  )Nr_   r4  z
c:downBarsrÌ  r\  rX   rX   rY   rY  í  r]  zChart._write_down_barsc                 C   sX   |sd S d|fg}|   d¡ |  d|¡ |r%|   d¡ |  d¡ |  d¡ |  d¡ d S )NrK  zc:dispUnitszc:builtInUnitzc:dispUnitsLblrb  rh  )rT   ZunitsÚdisplayrH  rX   rX   rY   r¯  ú  s   




zChart._write_disp_unitsc                 C   st   ddg}|d dkrg }|   d|¡ |  |¡ |d dkr%|  |d ¡ n|  |d ¡ |  |d ¡ |  d¡ d S )N)ÚfliprŽ   )ZrotWithShaper‚  rð   r  z
a:gradFillÚangle)rG  Ú_write_a_gs_lstÚ_write_a_linÚ_write_a_pathÚ_write_a_tile_rectr¼   )rT   rc   rH  rX   rX   rY   r    s   
zChart._write_a_grad_fillc                 C   s€   |d }|d }|   d¡ tt|ƒƒD ]%}t|| d ƒ}d|fg}|   d|¡ t|| ƒ}|  |¡ |  d¡ q|  d¡ d S )NÚ	positionsÚcolorsza:gsLstrZ  Úposza:gs)rG  r2  rq   rí   r   r  r¼   )rT   rc   re  rf  r’  rg  rH  râ   rX   rX   rY   ra  %  s   


zChart._write_a_gs_lstc                 C   s(   t d| ƒ}d|fdg}|  d|¡ d S )Nrì   Úang)ZscaledÚ0za:linr  )rT   r`  rH  rX   rX   rY   rb  :  s
   þzChart._write_a_linc                 C   s.   d|fg}|   d|¡ |  |¡ |  d¡ d S )NÚpathza:path)rG  Ú_write_a_fill_to_rectr¼   ©rT   Zgradient_typerH  rX   rX   rY   rc  F  s   

zChart._write_a_pathc                 C   s*   |dkr	g d¢}nddg}|   d|¡ d S )NÚshape))r   Ú50000)r¿  rn  )r¾  rn  )r   rn  )r   Ú100000)r¿  ro  za:fillToRectrL  rl  rX   rX   rY   rk  R  s   
þzChart._write_a_fill_to_rectc                 C   s&   |dkrg }nddg}|   d|¡ d S )Nrm  )r¾  ú-100000)r   rp  z
a:tileRectrL  rl  rX   rX   rY   rd  d  s   þzChart._write_a_tile_rectc                 C   sD   d|d fg}|   d|¡ |  |d ¡ |  |d ¡ |  d¡ d S )NZprstrb   z
a:pattFillZfg_colorZbg_color)rG  Ú_write_a_fg_clrÚ_write_a_bg_clrr¼   )rT   rb   rH  rX   rX   rY   r  q  s
   zChart._write_a_patt_fillc                 C   ó*   t |ƒ}|  d¡ |  |¡ |  d¡ d S )Nza:fgClr©r   rG  r  r¼   ©rT   râ   rX   rX   rY   rq  €  ó   

zChart._write_a_fg_clrc                 C   rs  )Nza:bgClrrt  ru  rX   rX   rY   rr  Œ  rv  zChart._write_a_bg_clrri  )F)ÑÚ__name__Ú
__module__Ú__qualname__Ú__doc__r   r€   r…   r‡   rˆ   r‰   r’   r•   r˜   r™   r›   rŸ   r¡   r¢   r¨   r«   r¯   r±   r³   r½   r‚   r   rr   rt   rþ   ru   rz   r{   r|   rÞ   r~   r—   r”   r   r}   r6  rÝ   rà   rA  rC  rE  rR   rµ   r¶   r·   r¹   rX  rU  r[  rc  r\  rk  ro  rm  rq  rr  rs  r|  rz  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£  r¤  r¥  r¦  r§  r™  rš  r¬  r­  r®  r±  r²  rV  rÕ  rÖ  r×  rW  r»   rÛ  rÜ  rÝ  rR  rT  rS  rã  r  r€  rç  rí  rî  rï  rù  rô  rö  rü  r÷  rõ  r  r  rØ  rt  r  r  rº   r  r  rÿ  r  r  r  rx  r  r  r  r   r!  r"  r#  r%  r$  r&  r,  r-  r.  r/  rŠ  r‹  r1  r  r  rê  r¸   rv  r5  rw  r8  rC  rB  rD  r:  r;  r<  r=  r>  r?  r@  r9  r—  ru  rŸ  r   ra  rI  rJ  rK  rL  ry  rM  rO  rP  rQ  rR  rT  rS  rU  rZ  rW  rX  rY  r¯  r  ra  rb  rc  rk  rd  r  rq  rr  Ú__classcell__rX   rX   rV   rY   r      s¢   I #5%%! "E;;~(5,0

'%F1#	ibcq




					

		9ÿ



"	0		

	
 92$
r   )rõ   rÛ   Úwarningsr   rm  r   r   r   Zutilityr   r   r	   r
   r   r   Z	XMLwriterr   rX   rX   rX   rY   Ú<module>   s   