
    Q?hk                        S r SrSSKJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJr  SSK7  SSKJr  SSKJrJrJr  SSKJrJrJrJrJrJr  SS	KJr  SS
KJ r J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-   " S S\5      r. " S S\)5      r/ " S S\/5      r0 " S S\05      r1S r2 " S S5      r3 " S S\15      r4 " S S\05      r5S  r6 " S! S"\15      r7S# r8S$ r9S% r:S& r;g')(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)Label)uSymbol2SymbolisSymbol
makeMarker)PlotArea)_objStr   )FillPairedDatac                       \ rS rSr\" \" \SS9\" \SS9\" \SS9\" \SS9\" \	" \
5      SSS	9\" S
SSS	9\" S
SSS	9\" \SS9\" \	" \" SSS5      5      SSS	9\" \SSS	9\" \SSS	9S9rSrg
)LineChartProperties   z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____firstlineno__AttrMapAttrMapValuer   r   r
   r	   r   r   r   r   r   _attrMap__static_attributes__r9       V/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/charts/linecharts.pyr%   r%      s    "82DE"=7ST 5KL&'<CZ[fX.5TcdedqIdqIN1DE f\%(H!IPp  @A  B4hwxyi.L[\]
HrB   r%   c                   $    \ rS rSrS rSS jrSrg)AbstractLineChart'   c                 >   U R                   nU[        U5      -  nXg   nUR                  n	X5S-  -   n
[        USS 5      nUS:X  aJ  [        US[        USS 5      5      n[        US[        USS 5      5      n[	        X#XEXSU[        USU	5      S9	nOrU R
                  (       d  US	:X  aY  [        US[        USS 5      5      n[        US[        USS 5      5      n[        X*X$-   XSS
9nU(       a  Xl        U(       a  Xl        OS n[        US5      (       a  UR                  nO [        US5      (       a  UR                  nOS nU(       a  [        XUS-  -   X5      nU(       a5  U(       a.  [        5       nUR                  U5        UR                  U5        U$ U=(       d    U$ )Ng       @r6   r-   r1   r.   r   r0   )r.   r/   strokeLineCapr1   r0   r,   )r/   rH   r2   )lineslenr/   getattrr   joinedLinesr   r.   r1   hasattrr2   r   r   add)selfrowNoxywidthheight	baseStylestyleIdxstylecoloryh2r6   dashr.   LSgs                    rC   makeSwatchSample"AbstractLineChart.makeSwatchSample)   s   JJ	3y>)#!!r	kE+d3	e5"3WYGXY]5^_D wumTX7YZKQ+^_pt  @G  HM  NY  Z_  @`  aAL!85"3WYGXY]5^_D wumTX7YZKQ173qIAKM&A5(##AY))  AA.U2X:c8aAEE!HEE!HHvArB   Nc                 H    [        [        U R                  U   SU5      5      $ )zreturn series name i or defaultr5   )r!   rK   rI   )rO   idefaults      rC   getSeriesNameAbstractLineChart.getSeriesNameL   s    wtzz!}VG<==rB   r9   N)r:   r;   r<   r=   r^   rc   rA   r9   rB   rC   rE   rE   '   s    !F>rB   rE   c                       \ rS rSrSrg)	LineChartP   r9   Nr:   r;   r<   r=   rA   r9   rB   rC   rg   rg   P       rB   rg   c                   N   \ rS rSrSr\" S.0 S\_S\" \SSS9_S\" \S	SS9_S
\" SSS9_S\" SSS9_S\" SSS9_S\" \SS9_S\" \SS9_S\" SSS9_S\" SSS9_S\" SSS9_S\" \	SS9_S\" SSS9_S \" \
S!SS9_S"\" \
S#SS9_S$\" SS%SS9_6rS& rS' rS( rS) rS* rS+ rS, rS-rg)/HorizontalLineChartV   aQ  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
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.rL   z.Display data points joined with lines if true.rI   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.r8   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   [         R                  U 5        S U l        S U l        [	        5       U l        [        5       U l        SS/U l        SU l	        [        [        5      U l        SU R                  l        [        R                  U R                  S   l        [        R                   U R                  S   l        [        R"                  U R                  S   l        SU l        SU l        [        [(        5      U l        S U l        S U l        SU l        SU l        SU l        SU l        g )Nd   n   x      )F   rh   rh   Z   )NorthSouthEastWestr"   r      
   )rg   __init__r/   r0   r   rv   r   ru   rx   rw   r   r%   rI   r.   r   redgreenbluero   rt   r   rq   rr   rs   rp   rL   r8   ry   rO   s    rC   r   HorizontalLineChart.__init__   s    4    *O# '%'	<,-@A
!"

$*JJ

1!$*LL

1!$*KK

1! 1%8#" !
  !rB   c                     [        SS5      nSS/n[        5       nSUl        SUl        SUl        SUl        X#l        [        S	5      UR                  l	        UR                  U5        U$ )
 Shows basic use of a line chart.   r}               %   -            r         &   .      r   r   r   U      Circle)r   rl   rQ   rR   rT   rS   rx   r   rI   r2   rN   rO   drawingrx   lcs       rC   demoHorizontalLineChart.demo   sj     #s# //
 !"	$X.BrB   c                    [        U R                  5      U l        [        [	        [        [         U R                  5      5      5      U l        U R                  (       a  SnO.U R                  nU R                  R                  S5      S   nX2-  nXl        U R                  R                  S5      =U l        nSU R                  -  U-  =U l        n[        5       n/ R                   nU R                  R                  nU R                  R                  n	U R                  n
[        U
5      n[#        U
5       H  u  p[%        U[&        5      (       ak  UR(                  nSUs=::  a  U:  a?  O  O<X:X  a  [+        SU-  5      eX4nUR-                  [/        U5      [        U5      45        O[+        SU< SU< 35      e/ R                   n[#        U5       H5  u  nnUc  M  U" U5      u  nnUU-   nUnU	" U5      U-
  nU" UUU-   45        M7     U" UR0                  5        M     UR0                  nU H  u  p['        X|   U5      X|'   M     [        U5      U l        Xpl        g)	zmWorks 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)rJ   rx   _seriesCountmaxlistmap
_rowLengthro   rt   rv   scale_normFactorru   _yzero_hngssetappend	enumerate
isinstancer#   other
ValueErrorrN   min__self___pairInFills
_positions)rO   
normFactor	normWidth
availWidthyzerohngspairsPcscalevscalerx   nrP   rowr   tr+   colNodatumgroupX
groupWidthrQ   rR   rT   s                           rC   calcPositions!HorizontalLineChart.calcPositions   s	     		Nd3s499#567J ))I**003A6J#/J%"nn22155e$"3"33j@@
TII""((%%yyI"4IE#~..		e:A:|()TW\)\]]AIIs1vc!fo.$Y^`e%fgg99D(~e$)/&FJAA#E]Q.F!QvX'  . dmm% )& JJ "LE%ahu5AH "JrB   c                    U R                   nU R                  U   U   nUc  SnOY[        U5      [        L a  US:X  a   U R                  U   U   nO-XV-  nO([        US5      (       a	  U" U5      nO[        SU-  5      eU(       ax  U R                  X4   nUR                  (       d  gUS:  a  UR                  X4U R                  -   5        OUR                  X4U R                  -
  5        UR                  U5        U$ SnU$ !   Sn N= f)z*Draw a label for a given item in the list.Nvalues__call__z6Unknown formatter type %s, expected string or functionr   )rr   rx   typestrrs   rM   r   rq   visible	setOriginrp   setText)	rO   rP   r   rQ   rR   labelFmt
labelValue	labelTextlabels	            rC   _innerDrawLabel#HorizontalLineChart._innerDrawLabel	  s
    ''YYu%e,
I(^s"8#% $ 3 3E :5 AI %1	Xj)) ,IUV^^__OOUN3E==&1ut':':#:;t':':#:;MM)$  E)% $Is   D Dc                 F    UR                  U R                  X#XE5      5        g)zDDraw a label for a given item in the list.
G must have an add methodN)rN   r   )rO   GrP   r   rQ   rR   s         rC   	drawLabelHorizontalLineChart.drawLabel+  s     	
d""5q34rB   c                 6	   [        5       nU R                  nU R                  nU R                  (       a  UR	                  5         U R
                  n[        U5      nU R                  nU(       dT  U R                  (       dC  [        [        U5      5       Vs/ s H  n[        XGU-     SS5      (       d  M  UPM      sn(       aQ  U R                  R                  nU R                  R                  n	XR                  R                  -   n
[        U SU5      nU R                   nS n[#        U R                  (       a  [%        U5      OU5       GHG  u  p~Xu-  nXO   nUR&                  n[        USU5      n[        USU5      n[        USS 5      n[        USS 5      n[)        US5      (       a  UR*                  nO [)        US5      (       a  UR*                  nOS nUS:X  a  UcE  U R                  n[-        UR                  U5      n[/        UR                  UR                  -   U5      n[        US	[1        S
5      5      n[3        U[0        5      (       a  U R4                  U-  S-  nOUS-  nU H7  u  nnUU:  a  WOUnUR7                  [9        UU-
  USU-  UU-
  UUUS95        M9     GO&U R:                  (       d  US:X  Ga  [=        U5      nU(       d  [3        U[>        5      (       a  [        USS 5      n[3        U[>        5      (       a$  U[=        [%        X>R@                     5      5      -   nOW	W/U-   W
U/-   nU(       a  URC                  U WUUU5        O,WR7                  [E        UUUU:X  a  UOS U=(       d    SS95        U(       a  US:X  d  UU:w  a9  [G        UUSSS9n U(       a  UU l        U(       a  UU l$        UR7                  U 5        [)        US5      (       a  URJ                  n!O [)        US5      (       a  URJ                  n!OS n!U!(       aT  [#        U5       HE  u  n"u  nn[M        [O        U!U"5      UUUR&                  5      n#U#(       d  M4  UR7                  U#5        MG     [#        U5       H  u  n"u  nnU RQ                  XU"UU5        M     GMJ     U$ s  snf )Nr8   F_inFillGr0   r1   r6   r.   r-   r7   2   g{Gz?r   r   )r.   r/   r0   r,   r4   皙?)r0   r/   r.   r   r"   )r/   rH   strokeLineJoinr2   ))r   rr   r   ry   reverserI   rJ   r8   r   rangerK   rv   _yru   _x_lengthr   r   reversedr/   rM   r.   r   r   r   r   r   rN   r   rL   r   r#   r   fillr   r   r1   r2   r   r   r   )$rO   r]   r   r   rI   
styleCount_inFillrP   inFillYinFillX0inFillX1inFillGr   byposr   rV   rowStyler/   r0   r8   rZ   r6   r.   rQ   bynegr7   hbwrR   _y0pointsr4   fpointsr+   uSymbolr   r2   s$                                       rC   	makeLinesHorizontalLineChart.makeLines0  s
   G''OO  !))+

Z
++t(($)#a&M LM5"5z)9#:8EJ M L ''**G~~((H"3"3";";;Hd:a0G $43H3HHQKaPJE)HH"..K[AIXhw7F8%6=DT:Ix//&22..#//" %=AUOEQYYu5E"8Jz"~Fhz22**X-d2C"3,CDAq#$U7%CEE$quS3quYdoxyz   !!Y%< ZN;;$Xx>F!#n55"(78AiiL3I+J"J#+G"4v"='@R"RDyIGGicnpycyT_  @D  Q\  Qc  `c  %d  ek9.D#F{QRbcdD"+6(/3,EE$Kx**"//)),,#,S>KE%1Q+Jwu,Ea(J^J^_FvquuV} $2
 "+3v1q15 "0 QD [Ls   R4Rc                 <   U R                   U R                  p!UR                  U R                  U R                  U R
                  5        U(       a  X!l        U(       a  Xl        UR                  U R                  5        UR                  S5      nX0R                  U R
                  -   :  d  X0R                  :  a  U R                  nOUnUR                  U R                  X@R                  5        UR                  U R                  5        U R                  5         [        5       nUR                  U R                  5       5        U R                  (       a*  [        5       U l        UR                  U R                   5        UR                  U5        UR                  U5        [#        USS5      n[#        USS5      nU(       d  UR%                  XPUR&                  S9  U(       d  UR%                  XPUR&                  S9  UR                  U R)                  5       5        U(       a  UR%                  XPUR&                  S9  U(       a  UR%                  XPUR&                  S9  [#        U SS5       H.  oR                  U" XR                  UR                  5      5        M0     U$ )zDraws itself.r   drawGridLastF)parentdimrz   r9   )ru   rv   setPositionrQ   rR   rT   joinAxis	configurerx   r   rS   r   r   rN   makeBackgroundr8   r   rK   makeGridgetGridDimsr   )	rO   vAcAxAxisCrossesAtrR   r]   cAdglvAdglas	            rC   drawHorizontalLineChart.draw  s    !2!2B
tvvtvvt{{3R{R{
TYY !fft{{228OAA
tvvq**-
TYYG	d!!#$;;!GDMEE$-- 	b		b	>%0>%0bkk!BNNkCbkk!BNNkC	dnn"++a+?"++a+?mB/Aqhhrxx7P1Q/rB   )r   r   r   r   r   r   r   r   rv   rw   rx   r0   rt   r8   rL   rs   rr   rp   rq   rI   ry   r/   ro   ru   r9   )r:   r;   r<   r=   __doc__r>   rg   r?   r   r   r   r@   r   r   r   r   r   r   r  rA   r9   rB   rC   rl   rl   V   s]    D  
I 
"82Xghi
%h5crst
 "$-WX
 't2mn	

 &d1{|
 $H3MN
 #82bc
 T(>?
 !,GH
 $D/MN
 %%:AZ[
 D'XY
 i.Q`ab
 (	8Udef
 #4.l{|}
H$."`.5n D5
Wr&rB   rl   c                 *    U S   * U S   U S   U S   * 4$ )zt, z0, z1, x, y = a[:5]r"      r   r   r9   )r  s    rC   _fakeItemKeyr    s%    qTE!A$qtQqTE""rB   c                   ,    \ rS rSrS rS rS rS rSrg)
_FakeGroupi  c                     / U l         g re   _datar   s    rC   r   _FakeGroup.__init__  s	    
rB   c                 J    U(       a  U R                   R                  U5        g g re   )r  r   )rO   whats     rC   rN   _FakeGroup.add  s    ""4(4rB   c                     U R                   $ re   r  r   s    rC   value_FakeGroup.value  s    zzrB   c                 >    U R                   R                  [        S9  g )N)key)r  sortr  r   s    rC   r#  _FakeGroup.sort  s    

L)rB   r  N)	r:   r;   r<   r=   r   rN   r  r#  rA   r9   rB   rC   r  r    s    )*rB   r  c                   x    \ rS rSr\" \\" \SS9\" \SS9\" \SS9\" \SS9S9rSr	Sr
S	rS
rS rS rS rS rSrg)HorizontalLineChart3Di  zdx/dzr'   zdy/dzzdepth of an individual serieszz gap around series)rn   theta_xtheta_yzDepthzSpacer   r   r  c                 &   [         R                  U 5        U R                  nU R                  nU R                  nU R
                  R                  S:X  a  X-  US-   U-  -   nOUSU-  -   nU R                  U-  U l        U R                  U-  U l
        g )Nparallel_3dr"   r   )rl   r   r   r*  r)  rv   rW   r'  _3d_dxr(  _3d_dy)rO   nSeriesr*  r)  	_3d_depths        rC   r   #HorizontalLineChart3D.calcPositions  s    ))$/##""M1	6'99I6)Ill9,ll9,rB   c                     U R                   nU R                  R                  S:X  a  XR                  U-   -  U-   nU$ UnU$ )Nr,  )r*  rv   rW   r)  )rO   rP   r*  z0s       rC   _calc_z0HorizontalLineChart3D._calc_z0  sH    ""M1F*+F2B 	 B	rB   c                 F    XU R                   -  -   X#U R                  -  -   4$ re   )r'  r(  )rO   rQ   rR   zs       rC   _zadjustHorizontalLineChart3D._zadjust  s#    4<<T\\>!111rB   c                    U R                   n[        [        [        U R                  5      5      5      nU R
                  (       a  UR                  5         U R                  nU(       a   S5       eU R                  nU R                  nU R                  nU R                  n[        5       nSSKJn	  [        U SS 5      n
U
(       d  U R                   R"                  S:w  a  Sn
U GHW  nU R                  U   n[        U5      n[        U R$                  5      nX-  nU R$                  U   nUR&                  n[        USS 5      nU R)                  U5      nUU-   n[+        U R$                  U   S5      (       a  U R$                  U   R,                  nO4[+        U R$                  S5      (       a  U R$                  R,                  nOS nU R.                  (       aB  U(       a;  US   u  nn[        SU5       H#  nUU   u  nnU	" UUUUUUUXgUS U
S S S S	S
9  UUnnM%     [+        U R$                  U   S5      (       a  U R$                  U   R0                  nO4[+        U R$                  S5      (       a  U R$                  R0                  nOS nU(       aU  [        U5       HF  nUU   u  nnU" UUU5      u  nn[3        UUUU5      nU(       d  M/  UR5                  SUUUUU45        MH     [        U5       HL  nUU   u  nnU" UUU5      u  nnU R7                  UUUU5      nU(       d  M5  UR5                  SUUUUU45        MN     GMZ     UR9                  5         [;        5       nUR=                  5        H  nUR5                  US   5        M     U$ )NzinFill not supported for 3d yetr   )_make_3d_line_info_3d_tilewidthr,  r"   r1   r.   r   )fillColorShaded	tileWidthr/   r.   r1   shadingr2   r   )rr   r   r   rJ   r   ry   r   r8   r)  r8  r'  r(  r  !reportlab.graphics.charts.utils3dr;  rK   rv   rW   rI   r/   r4  rM   r.   rL   r2   r   rN   r   r#  r   r  ) rO   r   r   r8   r)  r8  r'  r(  Fr;  r>  rP   r   r   r   rV   r   rowColorrZ   r3  z1r.   x0y0r   x1y1r   r2   r[   r]   vs                                    rC   r   HorizontalLineChart3D.makeLines  s    ''s4??+,-  !))+<<<z ==,,,,LHD6	T..44mCQRY E//%(CCATZZJ)Hzz(+H++H8%6=Du%BfBtzz(+];;"jj2>>]33"jj44"  VFB!&q!$UB*Ar2r2r2 ' ($),0dTX(+	-
 "$RBB ", tzz(+X66**X.55X..**++"1XE ZFB%bB/FB+GBr(CFvquua2bF%;<	 & qUB!"R+B((r2>1aeeQr"R1-.	 "] h 	
GAAEE!B%LrB   )r-  r.  N)r:   r;   r<   r=   r>   rl   r?   r   r@   r'  r(  r)  r*  r   r4  r8  r   rA   r9   rB   rC   r&  r&    sd    /xg6xg6h-LMh-BC	
H GGFF
-2LrB   r&  c                       \ rS rSrSrg)VerticalLineCharti4  r9   Nri   r9   rB   rC   rL  rL  4  rj   rB   rL  c                     [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        S	5      UR                  l
        S
Ul        SR                  S5      nX2R                  l        SUR                  R                  l        SUR"                  l        SUR"                  l        SUR"                  l        U R+                  U5        U $ )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   rl   rQ   rR   rT   rS   rx   rL   r   rI   r2   rr   splitrv   rw   labels	boxAnchorru   valueMinvalueMax	valueSteprN   r   rx   r   catNamess       rC   sample1rb  7  s    c3G +*D
 
	BBDBDBIBHGBN 1BHHO B066s;H$,OO!'*BOO$BLLBLLBLLKKONrB   c                   $    \ rS rSrSrS rS rSrg)SampleHorizontalLineChartiV  zHSample class overwriting one method to draw additional horizontal lines.c                     [        SS5      nSS/n[        5       nSUl        SUl        SUl        SUl        X#l        [        R                  Ul	        [        R                  " S	5      Ul        UR                  U5        U$ )
r   r   r}   r   r   r   r   r   r    )r   rd  rQ   rR   rT   rS   rx   r   whiter/   HexColorr0   rN   r   s       rC   r   SampleHorizontalLineChart.demoY  su     #s# //
 '(	x0BrB   c                 R   [        5       nUR                  [        R                  U 5      5        U R                  nUR
                  nU HZ  nUR                  U5      nUR                  [        U R                  X@R                  U R                  -   UU R                  S95        M\     U$ )N)r/   )r   rN   rl   r  ru   _tickValuesr   r   rQ   rS   r/   )rO   r]   valAxisvalTickPositionsrR   s        rC   r  (SampleHorizontalLineChart.makeBackgroundq  s    G	!0067.."..!Aa AEE$tvvq&&"3Q%)%5%57 8 "
 rB   r9   N)r:   r;   r<   r=   r  r   r  rA   r9   rB   rC   rd  rd  V  s    N0rB   rd  c                  .   [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        R                  Ul
        [        R                  " S	5      Ul        [        S
5      UR                  l        SUl        SR#                  S5      nX2R$                  l        SUR$                  R(                  l        SUR,                  l        SUR,                  l        SUR,                  l        U R5                  U5        U $ )NrN  r   r   rO  r   rR  rS  r"   rf  rT  rU  rV  rW  r   r   rX  rY  )r   rd  rQ   rR   rT   rS   rx   rL   r   rg  r/   rh  r0   r   rI   r2   rr   rZ  rv   rw   r[  r\  ru   r]  r^  r_  rN   r`  s       rC   sample1arp    s    c3G +*D
 
#	$BBDBDBIBHGBN\\BN??8,BL 1BHHO B066s;H$,OO!'*BOO$BLLBLLBLLKKONrB   c                  "   [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        S	5      UR                  l
        S
Ul        [        R                  Ul        [        R                  Ul        SR#                  S5      nX2R$                  l        SUR$                  R(                  l        SUR,                  l        SUR,                  l        SUR,                  l        U R5                  U5        U $ )NrN  r   r   rO  r   rR  rS  r"   SmileyrU  rV  rW  r   r   rX  rY  )r   rl   rQ   rR   rT   rS   rx   rL   r   rI   r2   rr   r   blackr/   	lightbluer0   rZ  rv   rw   r[  r\  ru   r]  r^  r_  rN   r`  s       rC   sample2ru    s    c3G +*D
 
	BBDBDBIBHGBN *BHHO B\\BN##BL066s;H$,OO!'*BOO$BLLBLLBLLKKONrB   c                  ~   [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        S	Ul        [        R                  Ul        [        S
5      UR                  S   l        [        UR                  S   l        SUR                  S   l        SUR                  S   l        SR#                  S5      nX2R$                  l        SUR$                  R(                  l        SUR,                  l        SUR,                  l        SUR,                  l        U R5                  U5        U $ )NrN  r   r   rO  r   rR  rS  r"   rU  rr  r   r   r   rV  rW  r   rX  rY  )r   rl   rQ   rR   rT   rS   rx   rL   rr   r   rs  r/   r   rI   r2   r   r.   rZ  rv   rw   r[  r\  ru   r]  r^  r_  rN   r`  s       rC   sample3rw    s   c3G +*D
 
	BBDBDBIBHGBN B\\BN#H-BHHQK BHHQKBHHQKBHHQK066s;H$,OO!'*BOO$BLLBLLBLLKKONrB   c                     SSK Jn   [        SS5      n[        5       nUR	                  U5        SUl        SnU Vs/ s H  oDS-   PM	     nnU Vs/ s H  oDS-
  PM	     nnU Vs/ s H  oDS-   PM	     nnU Vs/ s H  oDS	-
  PM	     nn[        R                  n	Sn
SnS
n[        R                  nSUR                  l
        [        [        U5      [        U5      [        U5      [        U5      [        U5      5      UR                  l        [        [        U5      [        U5      [        U5      [        U5      [        U5      5      UR                  l        UR                  nS US   l        [#        [%        U5      5      nU/Ul        U " X)XXS9=US   l        nU H2  nUU   R+                  [-        UUU   UU   UU   UU   UU   S95        M4     U$ s  snf s  snf s  snf s  snf )Nr   )CandleSticksrN  r   r   r|   r   rQ  r   r   r   )chartboxFillColorboxWidth
crossWidthr.   r/   )positionboxMidcrossLocrossHiboxLoboxHi)reportlab.graphics.widgetbasery  r   rl   rN   rR   r   pinkrs  ru   avoidBoundSpacer   r]  r   r^  rI   r/   r   rJ   rx   r2   setPropertiesdict)ry  drz  r  mhilor  r  r{  r|  r}  candleStrokeWidthcandleStrokeColorrI   Icandlesra   s                     rC   sampleCandleStickr    s   :SA!EEE%LEG!F	1B$B		1B$B	 !&QqS&E! !&QqS&E!;;LHJ&'EOO#"3v;s2ws2ws5z#e*UEOO"3v;s2ws2ws5z#e*UEOOKKEE!Hc&kAEJ ,5^f  L]  !}  }E!HOg
((qq	RTUVRW`bcd`elqrslt  |A  BC  |D  *E  FQH' 
 	!!s   GG#G7G!N)<__version__r  reportlab.libr   reportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   reportlab.lib.attrmapreportlab.lib.utilsr   r  r   r   r   reportlab.graphics.shapesr   r   r   r   r   r   *reportlab.graphics.widgets.signsandsymbolsr   reportlab.graphics.charts.axesr   r   $reportlab.graphics.charts.textlabelsr   "reportlab.graphics.widgets.markersr   r   r   reportlab.graphics.charts.areasr    !reportlab.graphics.charts.legendsr!   utilsr#   r%   rE   rg   rl   r  r  r&  rL  rb  rd  rp  ru  rw  r  r9   rB   rC   <module>r     s   
 I  ] ] ] $ ' Y Y S S > D 6 S S 4 5 !
* 
'> '>R	! 	Y) Yv
#* *o/ ob		 	>( 3 (TBB"HrB   