
    "dip                        d Z dZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ddlT ddlmZ ddlmZmZmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/  G d de          Z0 G d de+          Z1 G d de1          Z2 G d de2          Z3d Z4 G d d          Z5 G d de3          Z6 G d de3          Z7d  Z8 G d! d"e3          Z9d# Z:d$ Z;d% Z<d& Z=d'S )(z3.3.0z;This modules defines a very preliminary Line Chart example.    )colors)
isNumberisNumberOrNoneisColorOrNoneisListOfStringsOrNone	isBooleanNoneOrisListOfNumbersOrNoneisStringOrNoneOneOf
Percentage)*)flatten)TypedPropertyCollection
PropHolder
tpcGetItem)LineRectGroupDrawingPolygonPolyLine)NoEntry)XCategoryAxis
YValueAxisYCategoryAxis
XValueAxis)Label)uSymbol2SymbolisSymbol
makeMarker)PlotArea)_objStr   )FillPairedDatac                   r   e Zd Z e eed           eed           eed           eed           e ee	          dd           ed	d
d           ed	dd           ee
d           e e eddd                    dd           eedd           eedd                    Zd	S )LineChartPropertieszWidth of a line.desczColor of a line or border.zfill color of a bar.zDash array of a line.zWidget placed at data points.r$   r)   advancedUsageNzShader Class.zFiller Class.zName of the line.line
joinedLinebarzWhat kind of plot this line isz2Percentage of available width to be used for a barzIf true flood fill to x axis)strokeWidthstrokeColor	fillColorstrokeDashArraysymbolshaderfillername	lineStylebarWidthinFill)__name__
__module____qualname__AttrMapAttrMapValuer   r   r
   r	   r    r   r   r   r   _attrMap     c/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/reportlab/graphics/charts/linecharts.pyr'   r'      s3       w"l82DEEE"l=7STTT L5KLLL&,'<CZ[[[ffX..5TcdeeedqIIIdqIII|N1DEEE Lf\%(H(H!I!IPp  @A  B  B  B<4hwxyyyi.L[\]]]
 
 
HHHrA   r'   c                       e Zd Zd ZddZdS )AbstractLineChartc                 p   | j         }|t          |          z  }||         }|j        }	||dz  z   }
t          |dd           }|dk    rht          |dt          |dd                     }t          |dt          |dd                     }t	          ||||||	d|t          |d|	          	  	        }nz| j        s|d	k    rkt          |dt          |dd                     }t          |dt          |dd                     }t          ||
||z   |
|	d
          }|r||_        |r||_        nd }t          |d          r|j
        }nt          |d          r|j
        }nd }|rt          |||dz  z   |
|	          }|r<|r:t                      }|                    |           |                    |           |S |p|S )Ng       @r7   r.   r2   r/   r   r1   )r/   r0   strokeLineCapr2   r1   r-   )r0   rF   r3   )lineslenr0   getattrr   joinedLinesr   r/   r2   hasattrr3   r   r   add)selfrowNoxywidthheight	baseStylestyleIdxstylecoloryh2r7   dashr/   LSgs                    rB   makeSwatchSamplez"AbstractLineChart.makeSwatchSample)   s   J	3y>>)(#!r	kE+d33	e5"3WYGXY]5^5^__D wumTX7Y7YZZKQqv+%^_pt  @G  HM  NY  Z_  @`  @`  a  a  aAA 	L!8!85"3WYGXY]5^5^__D wumTX7Y7YZZKQs1U735qIIIA7KAM-Q&A5(## 	AAY)) 	 AAA8.1U2X:c%88a 	 	AEE!HHHEE!HHHHvArA   Nc                 T    t          t          | j        |         d|                    S )zreturn series name i or defaultr6   )r#   rI   rG   )rM   idefaults      rB   getSeriesNamezAbstractLineChart.getSeriesNameL   s"    wtz!}VG<<===rA   N)r:   r;   r<   r\   r`   r@   rA   rB   rD   rD   '   s8        ! ! !F> > > > > >rA   rD   c                       e Zd ZdS )	LineChartN)r:   r;   r<   r@   rA   rB   rc   rc   P   s        DrA   rc   c            
           e Zd ZdZdZ ed-i ded eedd          d eed	d          d
 edd          d edd          d edd          d eed          d eed          d edd          d edd          d edd          d ee	d          d edd          d  ee
d!d          d" ee
d#d          d$ edd%d          Zd& Zd' Zd( Zd) Zd* Zd+ Zd, ZdS ).HorizontalLineCharta  Line chart with multiple lines.

    A line chart is assumed to have one category and one value axis.
    Despite its generic name this particular line chart class has
    a vertical value axis and a horizontal category one. It may
    evolve into individual horizontal and vertical variants (like
    with the existing bar charts).

    Available attributes are:

        x: x-position of lower-left chart origin
        y: y-position of lower-left chart origin
        width: chart width
        height: chart height

        useAbsolute: disables auto-scaling of chart elements (?)
        lineLabelNudge: distance of data labels to data points
        lineLabels: labels associated with data values
        lineLabelFormat: format string or callback function
        groupSpacing: space between categories

        joinedLines: enables drawing of lines

        strokeColor: color of chart lines (?)
        fillColor: color for chart background (?)
        lines: style list, used cyclically for data series

        valueAxis: value axis object
        categoryAxis: category axis object
        categoryNames: category names

        data: chart data, a list of data series of equal length
    r   BASEuseAbsolutez$Flag to use absolute spacing values.r$   r*   lineLabelNudgez,Distance between a data point and its label.
lineLabelsNz(Handle to the list of data point labels.r(   lineLabelFormatz9Formatting string or function used for data point labels.lineLabelArrayzHexplicit array of line label values, must match size of data if present.groupSpacingz? - Likely to disappear.rJ   z.Display data points joined with lines if true.rG   zHandle of the lines.	valueAxiszHandle of the value axis.categoryAxiszHandle of the category axis.categoryNameszList of category names.dataz/Data to be plotted, list of (lists of) numbers.r9   z!Whether infilling should be done.reversePlotOrderzIf true reverse plot order.annotationsz<list of callables, will be called with self, xscale, yscale.c                    t                               |            d | _        d | _        | j        r't                      | _        t                      | _        n&t                      | _        t                      | _        ddg| _        d| _        t          t                    | _        d| j        _        t"          j        | j        d         _        t"          j        | j        d         _        t"          j        | j        d         _        d| _        d| _        t          t.                    | _        d | _        d | _        d| _        d| _        d| _        d| _        d S )Nd   n   x      )F   P   rz   Z   )NorthSouthEastWestr$   r      
   )rc   __init__r0   r1   _flipXYr   rn   r   rm   r   r   rp   ro   r   r'   rG   r/   r   redgreenbluerg   rl   r   ri   rj   rk   rh   rJ   r9   rq   rM   s    rB   r   zHorizontalLineChart.__init__   s    4      < 	* -D'\\DNN -D'\\DN '%'	<,-@AA
!"
$*J
1!$*L
1!$*K
1! 1%88#" !
  !rA   c                     t          dd          }ddg}t                      }d|_        d|_        d|_        d|_        ||_        t          d	          |j        _	        |
                    |           |S )
 Shows basic use of a line chart.   ru               %   -            r         &   .      r   r   r   U      Circle)r   re   rO   rP   rR   rQ   rp   r!   rG   r3   rL   rM   drawingrp   lcs       rB   demozHorizontalLineChart.demo   sw     #s## //
 !""	$X..BrA   c                    t          | j                  | _        t          t	          t          t           | j                                      | _        | j        rd}n,| j        }| j	        
                    d          d         }||z  }|| _        | j        
                    d          x| _        }d| j        z  |z  x| _        }t                      }g j        }| j	        j
        }| j        j
        }	| j        }
| j        }t          |
          }t%          |
          D ]\  }}t'          |t(                    rz|j        }d|cxk    r|k     rQn nN||k    rt-          d|z            ||f}|                    t1          |          t          |          f           nt-          d|d|          g j        }t%          |          D ]9\  }}|2 ||          \  }} |	|          } ||r|||z   fn||z   |f           : ||j                   |j        }|D ]\  }}t)          ||         |          ||<   t          |          | _        || _        dS )	zWorks out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        g      ?r   r$         ?z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row N)rH   rp   _seriesCountmaxlistmap
_rowLengthrg   rl   rn   scale_normFactorrm   _vzero_hngssetappendr   	enumerate
isinstancer%   other
ValueErrorrL   min__self___pairInFills
_positions)rM   
normFactor	normWidth
availWidthvzerohngspairsPcscalevscalerp   flipXYnrN   rowr   tr,   colNodatumcr[   vs                          rB   calcPositionsz!HorizontalLineChart.calcPositions   s~     	NNd3s49#5#56677 	0JJ )I*0033A6J#i/J%"n221555e$"33j@@
TI"(%yII"4 	 	IE##~.. h	e::::A:::::e||()TW\)\]]]uAIIs1vvc!ffo....$*Y^Y^Y^`e`e%fggg9D(~~ A Ae$!6%==DAquAD?!QtVQtVQK@@@AdmJ " 	6 	6LE5%ahu55AeHHJJrA   c                 
   | j         }| j        |         |         }|d}nnt          |          t          u r*|dk    r	 | j        |         |         }n=#  d}Y n7xY w||z  }n.t          |d          r ||          }nt          d|z            |rq| j        ||f         }|j        sdS |dk    r|	                    ||| j
        z              n|	                    ||| j
        z
             |                    |           nd}|S )z*Draw a label for a given item in the list.Nvalues__call__z6Unknown formatter type %s, expected string or functionr   )rj   rp   typestrrk   rK   r   ri   visible	setOriginrh   setText)	rM   rN   r   rO   rP   labelFmt
labelValue	labelTextlabels	            rB   _innerDrawLabelz#HorizontalLineChart._innerDrawLabel  s=    'Yu%e,
II(^^s""8##% $ 3E :5 AII% $III$z1		Xj)) 	` ,,IIUV^^___ 
	OUEN3E=(&&1uu1t':#:;;;;1t':#:;;;MM)$$$$Es   A Ac                 \    |                     |                     ||||                     dS )zLDraw a label for a given item in the list.
        G must have an add methodN)rL   r   )rM   GrN   r   rO   rP   s         rB   	drawLabelzHorizontalLineChart.drawLabel/  s0     	
d""5q3344444rA   c                 N	  &' t                      }| j        }| j        }| j        r|                                 | j        &t          &          '| j        }| j        }| j	        }| j
        }|s0| j        s)&'fdt          t          |                    D             rD|r|j        }|j        }	|	|j        z   }
n|j        }|j        }	|	|j        z   }
t!          | d|          }| j        }d }t%          | j        rt'          |          n|          D ]\  }}|'z  }&|         }|j        }t!          |d|          }t!          |d|          }t!          |dd           }t!          |dd           }t+          |d          r|j        }nt+          &d          r&j        }nd }|dk    r|g|r3t/          |j        |          }t1          |j        |j        z   |          }n2t/          |j        |          }t1          |j        |j        z   |          }t!          |d	t3          d
                    }t5          |t2                    r| j        |z  dz  }n|dz  }|D ][\  }}|r||k     r|n|}|||z
  ||z
  d|z  f}n||k     r|n|}||z
  |d|z  ||z
  f}|                    t;          ||||d           \n4| j        s|dk    r&t?          |          }|st5          |t@                    rt!          |dd           } t5          |t@                    r+|t?          t'          ||j!                                     z   }!n|r||	g|z   ||
gz   }!n|	|g|z   |
|gz   }!| r| "                    | ||||!           n0|                    tG          |!|||k    r|nd |pd                     |r|dk    s||k    r:tI          ||dd          }"|r||"_        |r||"_%        |                    |"           t+          |d          r|j&        }#nt+          &d          r&j&        }#nd }#|#rTt%          |          D ]D\  }$\  }}tO          tQ          |#|$          |||j                  }%|%r|                    |%           Et%          |          D ]!\  }$\  }}| )                    |||$||           "|S )Nc                 H    g | ]}t          |z           d d          |S )r9   F)rI   ).0rN   rG   
styleCounts     rB   
<listcomp>z1HorizontalLineChart.makeLines.<locals>.<listcomp>A  sJ     L L L5"5z)9#:8EJJL L L LrA   _inFillGr1   r9   r2   r7   r/   r.   r8   2   g{Gz?r   r   )r/   r0   r1   r-   r5   皙?)r1   r0   r/   r   r$   )r0   rF   strokeLineJoinr3   )*r   rj   r   rq   reverserG   rH   r   rn   rm   r9   r   range_x_y_lengthrI   r   r   reversedr0   rK   r/   r   r   r   r   r   rL   r   rJ   r   r%   r   fillr   r   r2   r3   r   r   r   )(rM   r[   r   r   r   cAvA_inFillinfillCinfillV0infillV1inFillGr   byposrN   r   rT   rowStyler0   r1   r9   rX   r7   r/   bynegr8   hbwrO   rP   v0r   pointsr5   fpointsr,   uSymbolr   r3   rG   r   s(                                         @@rB   	makeLineszHorizontalLineChart.makeLines4  s   GG'O -!))+++
ZZ
^+ 	1t( 	1L L L L LE#a&&MM L L L	1  1%5#bj0%5#bj0d:a00G $43H$OHQKKKaPP K	6 K	6JE3z)HXH".K[AAIXhw77F8%6==DT::Ix// #&2.. ##/" %= < #BE% 0 0 #BE"*$4U ; ; #BE% 0 0 #BE"*$4U ; ;"8Jz"~~FFhz22 '*X-d2CC"3,C h hDAq 0&'ggUU5#qtQsU2&'ggUU5cE"QsU1R4/EE$kk\efffggggh !  Y%<%<  eZN;; e$Xx>>F!#n55 W"(78AciL3I3I+J+J"J! W'.x&86&AWXDV&VGG'/&86&AXgDV&VG eDyIIIIGGicnpycycyT_T_  @D  Q\  Qc  `c  %d  %d  %d  e  e  e  k9.D.D#F{QRbcdddD" 7+6( 4/3,EE$KKKx** "/)) , -#,S>> - -KE%1Q+Jwu,E,Ea(J^__F,quuV}}} "+3 6 6v1q%155556 rA   c                    | j         | j        }}| j        r'|                    | j        | j        | j                   n&|                    | j        | j        | j                   |r||_        |r||_        |	                    | j
                   | j        }| j        }| j        rH|                    d          }||| j        z   k    s||k     s|}|                    ||| j                   nG|                    d          }||| j        z   k    s||k     s|}|                    ||| j                   |	                    | j
                   |                                  t                      }|                    |                                            | j        r-t                      | _        |                    | j                   |                    |           |                    |           t%          |dd          }t%          |dd          }|s|                    || |j                   |s|                    || |j                   |                    |                                            |r|                    || |j                   |r|                    || |j                   t%          | dd          D ],}	|                     |	| |j        |j                             -|S )zDraws itself.r   drawGridLastF)parentdimrr   r@   )rm   rn   r   setPositionrO   rP   rQ   rR   joinAxis	configurerp   r   r   r   rL   makeBackgroundr9   r   rI   makeGridgetGridDimsr   )
rM   r   r   rP   rO   	crossesAtr[   cAdglvAdglas
             rB   drawzHorizontalLineChart.draw  s    !2B< 	8NN46464:6666NN46464;777Rr{Rr{
TYFF< 	- ITZ//Y]]NN1a---- IT[00i!mmNN1a,,,
TYGG	d!!##$$$; 	!!GGDMEE$-   	b				b			>%00>%00Cbkk!4BNkCCCCbkk!4BNkCCC	dnn?"++at+????"++at+???mB//QQAqqbhrx7P7P1Q1Q1Q1QrA   r@   )r:   r;   r<   __doc__r   r=   rc   r>   r   r   r   r?   r   r   r   r   r   r   r  r@   rA   rB   re   re   V   st          B Gw 
 
 
II 
"l82Xghiiii
%h5crstttt
 "\$-WXXXX
 ',t2mnnnn	

 &d1{||||
 $|H3MNNNN
 #l82bcccc
 T(>????
 !L,GHHHH
 $|D/MNNNN
 %%:AZ[[[[
 |D'XYYYY
 i.Q`abbbb
 (<	8Udeffff
 #l4.l{|}}}}
H$2" 2" 2"h  .4 4 4l     D5 5 5
j j jX0 0 0 0 0rA   re   c                 B    | d          | d         | d         | d          fS )zt, z0, z1, x, y = a[:5]r$      r   r   r@   )r  s    rB   _fakeItemKeyr    s%    qTE!A$qtQqTE""rA   c                   &    e Zd Zd Zd Zd Zd ZdS )
_FakeGroupc                     g | _         d S ra   _datar   s    rB   r   z_FakeGroup.__init__  s    


rA   c                 B    |r| j                             |           d S d S ra   )r  r   )rM   whats     rB   rL   z_FakeGroup.add  s)    (""4(((((((rA   c                     | j         S ra   r  r   s    rB   valuez_FakeGroup.value  s
    zrA   c                 F    | j                             t                     d S )N)key)r  sortr  r   s    rB   r  z_FakeGroup.sort  s    
L)))))rA   N)r:   r;   r<   r   rL   r  r  r@   rA   rB   r  r    sP          ) ) )  * * * * *rA   r  c            
           e Zd Z ee eed           eed           eed           eed                    ZdZdZ	dZ
d	Zd
 Zd Zd Zd ZdS )HorizontalLineChart3Dzdx/dzr(   zdy/dzzdepth of an individual serieszz gap around series)rf   theta_xtheta_yzDepthzSpacer   r   r
  c                     t                               |            | j        }| j        }| j        }| j        j        dk    r||z  |dz   |z  z   }n|d|z  z   }| j        |z  | _        | j	        |z  | _
        d S )Nparallel_3dr$   r   )re   r   r   r  r  rn   rU   r  _3d_dxr  _3d_dy)rM   nSeriesr  r  	_3d_depths        rB   r   z#HorizontalLineChart3D.calcPositions  s    ))$///#"M11	6'99II6)Il9,l9,rA   c                 Z    | j         }| j        j        dk    r|| j        |z   z  |z   }n|}|S )Nr  )r  rn   rU   r  )rM   rN   r  z0s       rB   _calc_z0zHorizontalLineChart3D._calc_z0  s<    "M11F*+F2BBB	rA   c                 6    ||| j         z  z   ||| j        z  z   fS ra   )r  r  )rM   rO   rP   zs       rB   _zadjustzHorizontalLineChart3D._zadjust  s#    4<1T\>!111rA   c                 ~   | j         }t          t          t          | j                                      }| j        r|                                 | j        }|r
J d            | j        }| j	        }| j
        }| j        }t                      }ddlm}	 t          | dd           }
|
s| j        j        dk    rd}
|D ],}| j        |         }t          |          }t          | j                  }||z  }| j        |         }|j        }t          |dd           }|                     |          }||z   }t+          | j        |         d          r| j        |         j        }n$t+          | j        d          r| j        j        }nd }| j        rJ|rH|d         \  }}t          d|          D ],}||         \  }} |	||||||||||d |
d d d d	
           ||}}-t+          | j        |         d          r| j        |         j        }n$t+          | j        d          r| j        j        }nd }|r\t          |          D ]L}||         \  }} ||||          \  }}t3          ||||          }|r|                    d|||||f           Mt          |          D ]R}||         \  }} ||||          \  }}|                     ||||          }|r|                    d|||||f           S.|                                 t;                      }|                                D ]}|                    |d                    |S )NzinFill not supported for 3d yetr   )_make_3d_line_info_3d_tilewidthr  r$   r2   r/   r   )fillColorShaded	tileWidthr0   r/   r2   shadingr3   r   )rj   r   r   rH   r   rq   r   r9   r  r)  r  r  r  !reportlab.graphics.charts.utils3dr+  rI   rn   rU   rG   r0   r&  rK   r/   rJ   r3   r   rL   r   r  r   r  ) rM   r   r   r9   r  r)  r  r  Fr+  r.  rN   r   r   r   rT   r   rowColorrX   r%  z1r/   x0y0r   x1y1r   r3   rY   r[   r   s                                    rB   r   zHorizontalLineChart3D.makeLines  s   's4?++,,-- -!))+++<<<<<< =,,LLHHHHHHD66	RT.4mCCQRY  2	/ 2	/E/%(CCATZJz)Hz(+H+H8%6==Du%%BfBtz(+];; #"j2>]33 #"j4"  
( 	( VFB!&q ( (!$UB**Ar2r2r2 ' ($),0dTX(+	- - - -
 "$RBtz(+X66 *X.5X.. *+ ="1XX = =E ZFB%XbB//FB+GBr(CCF<quua2bF%;<<< q / /UB!"R++B((r2>>.aeeQr"R1-...	/ 	
GG((AAEE!B%LLLLrA   N)r:   r;   r<   r=   re   r>   r   r?   r  r  r  r  r   r&  r)  r   r@   rA   rB   r  r    s        w/,xg666,xg666h-LMMMh-BCCC	
 
 
H GGFF
- 
- 
-  2 2 2L L L L LrA   r  c                       e Zd ZdZdS )VerticalLineChartr$   N)r:   r;   r<   r   r@   rA   rB   r:  r:  U  s        GGGrA   r:  c                     t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          d	          |j	        _
        d
|_        d                    d          }||j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )N  r   r   r   r   r   r      r      r   r   }   ,  r$   FilledDiamond%2.0fJan Feb Mar Apr May Jun Jul Aug r   r   <      )r   re   rO   rP   rR   rQ   rp   rJ   r!   rG   r3   rj   splitrn   ro   labels	boxAnchorrm   valueMinvalueMax	valueSteprL   r   rp   r   catNamess       rB   sample1rP  X  s    c3G +*D
 
		BBDBDBIBHBGBN 11BHO B066s;;H$,BO!'*BO$BLBLBLKKOOONrA   c                       e Zd ZdZd Zd ZdS )SampleHorizontalLineChartzHSample class overwriting one method to draw additional horizontal lines.c                    t          dd          }ddg}t                      }d|_        d|_        d|_        d|_        ||_        t          j        |_	        t          j
        d	          |_        |                    |           |S )
r   r   ru   r   r   r   r   r   r    )r   rR  rO   rP   rR   rQ   rp   r   whiter0   HexColorr1   rL   r   s       rB   r   zSampleHorizontalLineChart.demoz  s     #s## //
 '((	x00BrA   c           
      H   t                      }|                    t                              |                      | j        }|j        }|D ]U}|                    |          }|                    t          | j        || j        | j	        z   || j
                             V|S )N)r0   )r   rL   re   r   rm   _tickValuesr   r   rO   rQ   r0   )rM   r[   valAxisvalTickPositionsrP   s        rB   r   z(SampleHorizontalLineChart.makeBackground  s    GG	!0066777.".! 	8 	8Aa  AEE$tvq$&"3Q%)%57 7 7 8 8 8 8 rA   N)r:   r;   r<   r  r   r   r@   rA   rB   rR  rR  w  s8        NN  0    rA   rR  c                     t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          j	        |_
        t          j        d	          |_        t          d
          |j        _        d|_        d                    d          }||j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )Nr<  r   r   r=  r   r@  rA  r$   rT  rB  rC  rD  rE  r   r   rF  rG  )r   rR  rO   rP   rR   rQ   rp   rJ   r   rU  r0   rV  r1   r!   rG   r3   rj   rH  rn   ro   rI  rJ  rm   rK  rL  rM  rL   rN  s       rB   sample1ar\    s    c3G +*D
 
#	$	$BBDBDBIBHBGBN\BN?8,,BL 11BHO B066s;;H$,BO!'*BO$BLBLBLKKOOONrA   c                     t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          d	          |j	        _
        d
|_        t          j        |_        t          j        |_        d                    d          }||j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )Nr<  r   r   r=  r   r@  rA  r$   SmileyrC  rD  rE  r   r   rF  rG  )r   re   rO   rP   rR   rQ   rp   rJ   r!   rG   r3   rj   r   blackr0   	lightbluer1   rH  rn   ro   rI  rJ  rm   rK  rL  rM  rL   rN  s       rB   sample2ra    s    c3G +*D
 
		BBDBDBIBHBGBN **BHO B\BN#BL066s;;H$,BO!'*BO$BLBLBLKKOOONrA   c                  X   t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t          j
        |_        t          d
          |j        d         _        t          |j        d         _        d|j        d         _        d|j        d         _        d                    d          }||j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )Nr<  r   r   r=  r   r@  rA  r$   rC  r^  r   r   r   rD  rE  r   rF  rG  )r   re   rO   rP   rR   rQ   rp   rJ   rj   r   r_  r0   r!   rG   r3   r   r/   rH  rn   ro   rI  rJ  rm   rK  rL  rM  rL   rN  s       rB   sample3rc    s   c3G +*D
 
		BBDBDBIBHBGBN B\BN#H--BHQK BHQKBHQKBHQK066s;;H$,BO!'*BO$BLBLBLKKOOONrA   c                     ddl m}  t          dd          }t                      }|                    |           d|_        d}d |D             }d |D             }d	 |D             }d
 |D             }t          j        }d}	d}
d}t          j        }d|j	        _
        t          t          |          t          |          t          |          t          |          t          |                    |j	        _        t          t          |          t          |          t          |          t          |          t          |                    |j	        _        |j        }d |d         _        t#          t%          |                    }|g|_         | |||	|
||          x|d         _        }|D ]N}||                             t-          |||         ||         ||         ||         ||                              O|S )Nr   )CandleSticksr<  r   r   rt   c                     g | ]}|d z   S r   r@   r   ms     rB   r   z%sampleCandleStick.<locals>.<listcomp>      			1!B$			rA   c                     g | ]}|d z
  S rg  r@   rh  s     rB   r   z%sampleCandleStick.<locals>.<listcomp>  rj  rA   c                     g | ]}|d z   S )r?  r@   rh  s     rB   r   z%sampleCandleStick.<locals>.<listcomp>      !!!QQqS!!!rA   c                     g | ]}|d z
  S )r   r@   rh  s     rB   r   z%sampleCandleStick.<locals>.<listcomp>  rm  rA   r   r   r   )chartboxFillColorboxWidth
crossWidthr/   r0   )positionboxMidcrossLocrossHiboxLoboxHi)reportlab.graphics.widgetbasere  r   re   rL   rP   r   pinkr_  rm   avoidBoundSpacer   rK  r   rL  rG   r0   r   rH   rp   r3   setPropertiesdict)re  dro  rt  hilorx  rw  rp  rq  rr  candleStrokeWidthcandleStrokeColorrG   Icandlesr^   s                    rB   sampleCandleStickr    s"   ::::::SA!!EEE%LLLEG!F					B					B!!&!!!E!!&!!!E;LHJ&'EO#"3v;;s2wws2wws5zz#e**UUEO"3v;;s2wws2wws5zz#e**UUEOKEE!Hc&kkAEJ ,5|^fs}  L]  k|  !}  !}  !}  }E!HOg  F  F
((qq	RTUVRW`bcd`elqrslt  |A  BC  |D  *E  *E  *E  F  F  F  FHrA   N)>__version__r  reportlab.libr   reportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   reportlab.lib.attrmapreportlab.lib.utilsr   ry  r   r   r   reportlab.graphics.shapesr   r   r   r   r   r   *reportlab.graphics.widgets.signsandsymbolsr   reportlab.graphics.charts.axesr   r   r   r   $reportlab.graphics.charts.textlabelsr   "reportlab.graphics.widgets.markersr   r    r!   reportlab.graphics.charts.areasr"   !reportlab.graphics.charts.legendsr#   utilsr%   r'   rD   rc   re   r  r  r  r:  rP  rR  r\  ra  rc  r  r@   rA   rB   <module>r     s  
 I            ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] $ # # # ' ' ' ' ' ' Y Y Y Y Y Y Y Y Y Y S S S S S S S S S S S S S S S S > > > > > > _ _ _ _ _ _ _ _ _ _ _ _ 6 6 6 6 6 6 S S S S S S S S S S 4 4 4 4 4 4 5 5 5 5 5 5 ! ! ! ! ! !
 
 
 
 
* 
 
 
'> '> '> '> '> '> '> '>R	 	 	 	 	! 	 	 	z z z z z) z z zx# # #* * * * * * * *o o o o o/ o o ob    +     >( ( ( ( ( 3 ( ( (T  B  B" " "H    rA   