
    Q?h             
       N   S r SrSSKrSSKJrJrJ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JrJrJrJrJrJrJrJrJr  SSKJrJr  SSK 7  SS	K!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SS
K-J.r.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  SSSSSSSSSS.	r8SSSSSSSSSS.	r9Sr:S\:-
  r; " S S\55      r< " S S\/5      r=SPS jr>S r? " S  S!\15      r@S" rAS# rBSQS% jrCSRS& jrDS' rES( rFS) rG\R                  " \G5      rGS* rISPS+ jrJS, rK\R                  " \K5      rKS- rLSPS. jrMS/ rN " S0 S1\O5      rP " S2 S3\@5      rQ " S4 S5\Q5      rRSS6KSJTrTJUrUJVrVJWrW   " S7 S8\/5      rX " S9 S:5      rYS; rZ\R                  " \Z5      rZ\U" S<5      r[ " S= S>\Q5      r\S? r]S@ r^SA r_SB r`SC raSD rbSE rcSF rdSG reSH rfSI rg\hSJ:X  ap   SSKiriSSKKjJkrk  \iR                  S$S =(       d    SL/rl\l HE  rm\mR                  SM5      (       a  \mOSN\m-  ro\p" 5       \o   " 5       rq\kR                  " \qSO\o-  5        MG     gg)Sz3.3.0z|Basic Pie Chart class.

This permits you to customize and pop out individual wedges;
supports elliptical and circular pies.
    N)sincospi)colors)isNumberisListOfNumbersOrNoneisListOfNumbersisColorOrNoneisStringisListOfStringsOrNoneOneOf	isBooleanisListOfColorsisNumberOrNoneisNoneOrListOfNoneOrStringsisTextAnchorisNoneOrListOfNoneOrNumbersisBoxAnchorisStringOrNoneNoneOrEitherOrisNumberInRange
isCallable)uSymbol2SymbolisSymbol)*)GroupDrawingEllipseWedgeStringSTATE_DEFAULTSArcPathPolygonRectPolyLineLine)TypedPropertyCollection
PropHolder)PlotArea)_objStr)Labelcmpwswsseenennw)	r   -   Z              i;  gHz>g     v@c                        \ rS rSrS rS rSrg)
WedgeLabel+   c                     g N selfbas     U/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/charts/piecharts.py	_checkDXYWedgeLabel._checkDXY,   s        c                 j   U R                   nUS;   a  [        U R                  S-  S-  5      S-  S-  nUS-  (       d:  U R                  U-
  S-  n[        U5      S:  a  X#S:  =(       a    S=(       d    S-  n[	        U S	S 5      =(       a    [
        =(       d    [        U   nU R                  U5        U$ )
N)autoxautoyh  g     F@r7   r8      r   r=   _anti)	boxAnchorint_pmvabsgetattr_ANGLE2RBOXANCHOR_ANGLE2BOXANCHORrH   )rE   rF   nadas       rG   _getBoxAnchorWedgeLabel._getBoxAnchor.   s    ^^""tyy}c)*2-s2BGii"n+r719a4;B-#.B$wt,B1BVFVXZ[BNN2	rJ   rC   N)__name__
__module____qualname____firstlineno__rH   rZ   __static_attributes__rC   rJ   rG   r?   r?   +   s    
rJ   r?   c                   N   \ rS rSrSr\" Sg0 S\" \SS9_S\" \SS9_S\" \S	S9_S
\" \	SS9_S\" \
" SSS5      SS9_S\" \
" SSS5      SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \S S9_S!\" \S"S9_S#\" \S$S9_S%\" \S&S9_S'\" \S(S9_S)\" \S*S9_S+\" \S,S9_S-\" \S.S9_S/\" \S0S9_S1\" \S2S9_S3\" \S4S9_S5\" \S6S9_S7\" \S8S9_S9\" \S:S9_S;\" \S<S9_S=\" \S>S9_S?\" \S@5      _SA\" \SB5      _SC\" \SD5      _SE\" \SF5      _SG\" \SH5      _SI\" \SJS9_SK\" \SLS9_SM\" \SNS9_SO\" \SPS9_SQ\" \SRS9_SS\" \" \5      STSSU9_SV\" \SW5      _SX\" \SYS9_SZ\" \S[S9_S\\" \
" S]S^5      S_S9_S`\" \
" SaSbSc5      SdS9_6rSe rSfrga)hWedgeProperties:     This holds descriptive information about the wedges in a pie chart.

It is not to be confused with the 'wedge itself'; this just holds
a recipe for how to format one, and does not allow you to hack the
angles.  It can format a genuine Wedge object for you with its
format method.
strokeWidthzWidth of the wedge borderdesc	fillColorzFilling color of the wedgestrokeColorzColor of the wedge borderstrokeDashArrayzZStyle of the wedge border, expressed as a list of lengths of alternating dashes and blanksstrokeLineCapr         z#Line cap 0=butt, 1=round & 2=squarestrokeLineJoinz$Line join 0=miter, 1=round & 2=bevelstrokeMiterLimitz$Miter limit control miter line joinspopoutz How far of centre a wedge to popfontNamez"Name of the font of the label textfontSizez,Size of the font of the label text in points	fontColorz#Color of the font of the label textlabelRadiuszpDistance between the center of the label box and the center of the pie, expressed in times the radius of the pielabel_dxzX Offset of the labellabel_dyzY Offset of the labellabel_anglezQAngle of the label, default (0) is horizontal, 90 is vertical, 180 is upside downlabel_boxAnchorzAnchoring point of the labellabel_boxStrokeColorzBorder color for the label boxlabel_boxStrokeWidthzBorder width for the label boxlabel_boxFillColorzFilling color of the label boxlabel_strokeColorzBorder color for the label textlabel_strokeWidthzBorder width for the label text
label_textzText of the labellabel_leading label_widthzWidth of the labellabel_maxWidthz#Maximum width the label can grow tolabel_heightzHeight of the labellabel_textAnchorz$Maximum height the label can grow tolabel_visible True if the label is to be drawnlabel_topPaddingzPadding at top of boxlabel_leftPaddingzPadding at left of boxlabel_rightPaddingzPadding at right of boxlabel_bottomPaddingzPadding at bottom of boxlabel_simple_pointerzSet to True for simple pointerslabel_pointer_strokeColorzColor of indicator linelabel_pointer_strokeWidthzStrokeWidth of indicator linelabel_pointer_elbowLengthz&Length of final indicator line segmentlabel_pointer_edgePadz!pad between pointer label and boxlabel_pointer_piePadz!pad between pointer label and pieswatchMarkerz!None or makeMarker('Diamond') ...rg   advancedUsagevisiblezSet to false to skip displayingshadingAmountz"amount by which to shade fillColorshadingAnglez6shading changes at multiple of this angle (in degrees)shadingDirectionnormalantiz2Whether shading is at start or end of wedge/sectorshadingKindNlightendarkenzuse colors.Whiter or Blackerc                    SU l         S U l        [        S   U l        [        S   U l        SU l        SU l        SU l        SU l        [        S   U l	        [        S   U l
        [        S   U l        SU l        S=U l        =U l        U l        S U l        S=U l        =U l        =U l        U l        S	U l        S U l        S
U l        S U l        S U l        SU l        S =U l        =U l        =U l        U l        SU l        SU l         SU l!        [D        RF                  U l$        S
U l%        SU l&        SU l'        SU l(        SU l)        S U l*        S
U l+        SU l,        SU l-        g )Nr   ri   rj   rl   rq   rr   rh   333333?rL         ?皙?start   rm   g@߾ @r   ).re   rh   r"   ri   rj   rn   rk   ro   rp   rq   rr   rs   rt   ru   rv   rw   r~   r   r   r   r   rx   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   blackr   r   r   r   r   r   r   r   r   r   rE   s    rG   __init__WedgeProperties.__init__q   sp   )-8-.?@ !&z2&z2'4;<<<(8nooo 6o9PSWSk&$(!$'!"&!%!$]aaa 0a43FIZ '$%!)/&),&)*&%&"$%! " (rJ   )+rh   rs   rq   rr   rt   rw   r   rx   r{   ry   rz   ru   rv   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   r   r   r   rp   r   r   r   r   ri   rj   rk   rn   ro   re   r   rC   )r\   r]   r^   r_   __doc__AttrMapAttrMapValuer   r
   r   r   r   r   r   r   r   r   r   r   _attrMapr   r`   rC   rJ   rG   rb   rb   :   s     -
"81LM-
 4PQ-
 #=6QR-
 ''<  C_  `	-

 %U1Qq\7\]-
 &eAal8^_-
 (6\]-
 h,NO-
  .RS-
  .\]-
 !4YZ-
 #8  2d  e-
  .EF-
  .EF-
 #8  2E  F-
  '{8VW!-
"  ,M?_`#-
$  ,H:Z[%-
& *-=]^'-
( )<]^)-
* )7XY+-
, ".6IJ--
. %^</-
0 #>7KL1-
2 &n:_`3-
4 $N8MN5-
6 (:`a7-
8 %Y4VW9-
: (1HI;-
< )2JK=-
> *(3LM?-
@ +84NOA-
B  ,I6WXC-
D %1D]$^E-
F %1?^$_G-
H %1?g$hI-
J !-X;^ _K-
L  ,H:]^M-
N $F8$4;^mnoO-
P y)JKQ-
R %^9]^S-
T $H2jkU-
V (hv(>DxyW-
X #5i#AGefY-
H^#)rJ   rb   c                    U R                   (       an  [        X4U5      nU R                  (       d  SUl        O:[	        U5      S:  d  US:  a  US:  d  SUs=:  a  S:  a  O  OSUl        OSUl        X'l        S	Ul        GO8Uc  [        U S
[        5      nU" 5       nX'l        X7l	        XGl
        UR                  Ul        U R                  (       d#  UR                  Ul        UR                  Ul        OUR"                  c  U R"                  S-  nOUR"                  S-  nUR                  c  Xl        OUR                  U-   Ul        [	        U5      S:  d  US:  a  US:  d  SUs=:  a  S:  a  O  OSUl        OSUl        UR$                  Ul        UR(                  Ul        UR,                  Ul        UR0                  Ul        UR4                  Ul        UR8                  Ul        UR<                  n	U	c  Un	Xl        UR@                  Ul!        URD                  Ul#        URH                  Ul%        URL                  Ul'        URP                  Ul        URR                  Ul*        URV                  Ul,        URZ                  Ul.        UR^                  Ul0        URb                  Ul2        URf                  Ul        UR"                  Ul        URh                  Ul4        URj                  Ul6        U$ )Nmiddler8   r<     >r   endr   
labelClassg      @r/   r3   )7simpleLabelsr!   
sideLabels
textAnchorrT   rS   _simple_pointerrU   r?   xyru   dxrv   dyrx   rQ   rr   rw   anglery   boxStrokeColorrz   boxStrokeWidthr{   boxFillColorr|   ri   r}   re   r~   _textr   leadingr   widthr   maxWidthr   heightr   r   r   r   
topPaddingr   leftPaddingr   rightPaddingr   bottomPaddingr   rq   rs   rh   )
rE   textr   labelXlabelY
wedgeStyler   theLabelsideLabels_dyr   s
             rG   _addWedgeLabelr      st   &$/"*HE
ReSjU3YD%DUQUDU&-#&+##$  l:>J<

 ))$--HK!+!;!;H""* $ 3 * 3 3c 9""*+(11MAE
ReSjU3YD%DUQUDU%("%("#//","A"A","A"A * = =);;);;%%=$%%33#//&55$11(99%33(99);; * = =!+!?!?#-#B#B "++H"++H#--HOrJ   c                 h    U c  S/U-  n U $ U[        U 5      -
  nUS:  a  [        U 5      S/U-  -   n U $ )Nr   r   )lenlist)labelsr5   is      rG   
_fixLabelsr      sG    ~ M c&kMQ3frd1f,MrJ   c                   $    \ rS rSrS rSS jrSrg)AbstractPieChart   c                    U R                   nU[        U5      -  nXg   n[        US[        USS 5      5      n	[        US[        USS 5      5      n
[        US[        USS 5      5      n[        US[        USS 5      5      n[        US[        USS 5      5      nU(       a  [        XUS-  -   X5S-  -   U
5      $ [	        X#XEXXS9$ )Nri   rh   rj   re   r          @)re   ri   rj   rh   )slicesr   rU   r   r%   )rE   rowNor   r   r   r   	baseStylestyleIdxstyleri   rh   rj   re   r   s                 rG   makeSwatchSample!AbstractPieChart.makeSwatchSample   s    KK	3y>)#e]GImTX4YZE;	+d0ST	!%):GIN_`d<efe]GI}UY4Z[ungiX\6]^!,rz!2I+iPPA$3I 	IrJ   Nc                      [        U R                  U   5      nU R                  (       d  [        U R                  U   SS5      nUb  UnU$ !   Un N8= f)zreturn series name i or defaultr~   r   )r+   r   r   rU   r   )rE   r   defaultr   r   s        rG   getSeriesNameAbstractPieChart.getSeriesName   sU    	4;;q>*D   DKKN<;E $	Ds   A ArC   rB   )r\   r]   r^   r_   r   r   r`   rC   rJ   rG   r   r      s    I	rJ   r   c                     U S   US   S-
  :  =(       dJ    US   U S   S-
  :  =(       d5    U S   SUS   US   -   -  S-
  :  =(       d    US   SU S   U S   -   -  S-
  :  (       + $ )Nr   rm   g{Gz?rl   r   r   rC   )PQs     rG   boundsOverlapr      s    tAaDI~m1ad4im1Q4ad1Q4i$8N3NmRSTURVX[]^_`]abcdebf]fXgimWmRmnnrJ   c                    [        U 5      nU/n US   nUS-   U-  nXT;   d  [        X   X   5      (       d  OUR                  U5        M;   US   nUS-
  U-  nXT;   d  [        X   X   5      (       d   U$ UR                  SU5        M>  )z find overlap run containing B[i]rl   r   )r   r   appendinsert)Br   wrapr5   Rjs         rG   _findOverlapRunr      s    AA	
A
bEqS!G6qtAD115		 
 aDqS!G6qtAD115H 	
1	 rJ   rl   c                     [        U 5      nUS:  a4  [        US-
  5       H"  n[        XU5      n[        U5      S:  d  M   Us  $    g)z>determine a set of overlaps in bounding boxes B or return Nonerl   N)r   ranger   )r   r   r5   r   r   s        rG   findOverlapRunr   
  sD    AAsqsAD)A1vax  rJ   c           
         [        U 5      nUS:  a  g U  Vs/ s H  oDR                  S   PM     nnSn/ nSn[        US-   5      nUn	U(       Gd  US:  Ga  [        U5      n
U
(       d  g [        U
5      nX:X  a  g U Vs/ s H  oU
;   d  M
  UPM     sn(       d  Un	SnU
S   nU
S   nX^   n[	        X   R
                  5      =nnU
SS   HB  nX\   n[        U[        US   US   -
  US   US   -
  5      5      nUnUX   R
                  -  nMD     U[        U5      -  n[        X   R
                  U-
  5      n[	        U5      nXUS-
  -  U-  -  nU
 H  nX   nUR                  n[	        UR
                  U[	        UR
                  5      U-
  -  -   5      =nUl        U[        -  nUS   US   [        U5      -  -   Ul        US	   US
   [        U5      -  -   Ul        UR                  5       X\'   M     U
nU	S-  n	US-  nUS:  a  GM  g g US:  Ga/  [        U5      n
U
(       d  g [        U
5      nX:X  a  g U S   nUR                  nUS   n[        U
5       H  u  nnX   nUR                  nUS   nSnSnUUS-
  :X  a  M*  UU:X  d  US   US   :  a  US   US   :  a  US   US   -
  nUS   US   :  a  US   US   :  a  US   US   -
  nUU:  a"  U=R                  SUS   US   -
  -  -  sl        O'UU:  a!  U=R                  SUS   US   -
  -  -  sl        UR                  5       X\'   M     US-  nUS:  a  GM.  g g s  snf s  snf )Nrm   boundsrl   r      r   cxrxcyryg?r   r   )r   	_origdatafloatr   _360rS   maxminrT   _180_pir   r   r   r   	getBounds	enumerate) Lr   mult0nLlr   OKRPitermultr   nRrrY   r0rLbitaaaabutaantaaorigr   radl1orig1bounds1r   r   diff1diff2s                                    rG   fixLabelOverlapsr    s   	QB	!tV()*1X	A*	
B	BD%!)ED2gq!AeQBvu!,r!!VAr,B1B2BBAEJJ''C"qrUDC!RU
2a51:67adii	 
 E"IBquzz#~&D:D1+d""BD{{!%affRaffb-A&A!BBGm4j4:c#h#664j4:c#h#66{{}  BDLDAIDA 2ggF 2gq!AeQBx2BLLEHoG |!D{{hBqDy!W,!!9WQZ/GAJvay4H$*1Igaj$8E"1:fQi/F1Igaj4H$+AJvay$8E 5=CC#wqz'!*'<"==C"e^CC3
71:(=#>>C;;=AD! $" AID3 2ggW 	+ -s   M>	MMc                     [        [        U 5      [        U5      5      [        [        U 5      [        U5      5      p2X#:  a  g X#4$ rB   )r   r   )Ar   r   r   s       rG   intervalIntersectionr  \  s5    
c!fSV
SQA/atD3JrJ   c                 ~   U S-  n SU s=::  a  S:  a'  O  O$US:X  a  SSU 4SSSU -   S44nOfSU S4S	SS
SU -   44nOWU S:  =(       a    S=(       d    SnUS:X  a  SUS-
  U 4SUS-
  US-
  4SSU -   US-
  44nOSXS-   4SUS-   US-   4SUS-   SU -   44n[        U Vs/ s H  o"S   US   :  d  M  UPM     sn5      $ s  snf )NrN   r8   r<   	clockwiser   )rl   r8   ir"  )rl   r<   r   r   rl   rm   )tuple)sa	directionaoffss       rG   _makeSideArcDefsr(  a  s    #IB	2zczk!2b	*aR_4A2c
;#c"f~5A3w3#!k!472$s(473QtBwtCx4HHA22g$r'$s(3QtCxB4GGAQ,QA$qt)!Q,--,s   B:-B:c                 >    [        US   US   -
  U S   U S   -
  5      $ )Nrl   r   r-   )r   r   s     rG   _keyFLAr*  p  s'    qtAaDy1ad##rJ   c                     U  Vs/ s H  o"S   U:X  d  M  US   c  M  US   PM     snnU(       d  g [        U5      S:  a  UR                  [        S9  US   $ s  snf )Nr   rl   key)r   sortr*  )xArcssider&  s      rG   _findLargestArcr1  t  sX    @u!!d
qt1u@AT
1vaxG$Q4K 	As   AA	Ac                    U R                   nUc;  US   nUS   nUc  SnUnO)Uc  SnUnO!US   US   -
  US   US   -
  :  a  SnUnOSnUnUS   nUS   nU(       d  SU l        X-   U l        US   nOSU l        X-
  U-
  U l        US   nUS   US   -   S-  =oS	'   [        U	[        -  5      US
'   [        U	[        -  5      US'   X#S'   X'4$ )Nlirirl   r   r   edgePadr:   r   midsmidcmidr0  )r   rS   r   r   r   r   )
r  r   r0  datar3  r4  r   r/   r5  r6  s
             rG   _fPLSider:  z  s   ;;D|$Z$Z:DAZDAU2a5[Ar!u$DADAWA9oGiJi'!J1adC'Cu+s7{#DLs7{#DLL6MrJ   c                 N    [        UR                  S   U R                  S   5      $ )Nr7  )r.   r   r&  r  s     rG   _fPLCFr=    s!    q{{6"1;;v#677rJ   c                     U S   $ )Nrl   rC   )r&  s    rG   _arcCFr?    s    Q4KrJ   c                    / / 4nSS/nU H4  n	[        XU5      u  pXz   R                  U	5        [        XU
   5      X'   M6     SnU S /-  nSnUS-  nX?-   n[        U5      nS GHu  n
Xz   nU(       Gac  / nUR                  n/ nUR                  nUR                  [        S9  SnX5-   nU H  n	U	R
                  nX,UUS   -
  -  -   nU	=R                  U-  sl        XUS   '   UUS   U-  -   nUS	   nUS
   US   -
  S-  nUU-   U:  a  UU-
  nUU-
  U:  a  UU-   nUS   UU-
  US   UU-   4=US	'   nU" U5        UU	l        U" [        SUU-
  U-
  5      5        UU-
  n[        UUS   US   -   5      n[        U[        US   UUS   -   -  5      U-
  5      nM     U" UU-
  5        Sn[        U5      nUS:  Ga  [        USS9n U (       d  GO[        U 5      n!U!U:X  a  OU S   n"U S   n#U#S-   n$[        US U"S-    5      n%U%[        UU$S  5      -   n&[        UU"U$  Vs/ s H  nUS
   US   -
  PM     sn5      U$-   U"-
  UU"   S
   UU#   S   -
  -
  n'U'U&:  a  OwUU"   S
   U%U'-  U&-  -   nU  HW  n(UU(   n	U	R
                  nUS	   nUS
   US   -
  S-  nUS-  nUU-
  =nU	l        US   UU-
  US   U4=UU('   US	'   UU-
  S-
  nMY     US:  a  GM  UU-   X'   SnGMx     XS   US   U4$ s  snf )Nr   rl   r   )r   rl   r,  r   indexr7  r   r   rm   r5  piePadelbowLengthr   )r   r   )r:  r   r   r.  r=  r   r   r   rT   r   r   sum))r5   r  r   r   r   r   r0  LRmlrr  r   r/   mulGmelhhyhhmTr   aBSaSpyhr9  inclyr  b2r	  nTr   r  j0j1jlsAbovesFreesNeedr  s)                                            rG   _fixPointerLabelsr]    s   	BBQ%Cqt$
QQ1v  C	4&A
C	B
$CCAEABABFFvFAB{{QtG}_--s
#$$w- fb(Nd1Q4i_b58"R%Rb572B&'d2b51be%<<X13qBr?#U$y/$x.89#c$v,43F0F"GHKL! " r!tHDQBr'"1!,%Vr65qTrUTQu1Xs1RS6{*"R91QqT!A$Y9:2=b@!B%(1R5QR8BST;rU1XfUl500A!A;;DXAA$qt)SB#IB!"u$B-.qT"R%!R,@@AaD4>b3B  r', qSCFm n !fc!fc!! :s   K(
c                    S[         -  [        U 5      -  nU  Vs/ s H  o3U-  PM	     nnSn/ nU H  nUR                  XWS-  -   5        XW-  nM     [        U 5      S-  nSn	[         S-  n
[	        S5       HL  nX-  n[        U Vs/ s H  n[        [        X|-   5      5      PM     sn5      nX:  d  M>  US:X  a  U* n	OUn	UnMN     U	S-  [         -  $ s  snf s  snf )	Nrm   r   r   g    .Ag      B@$   r!  r:   )r   rD  r   r   r   rT   r   )r9  r%  facdradsr  hradsr  vstarrstardeltar   r&  vs                 rG   theta0rh    s    R4T
C 4acE4D 	
BER#X
  IcMEEtGE2YG.1SX./9K'bE  9R<) ! /s   C C
c                       \ rS rSrSrS rSrg)	AngleDatai  z/use this to carry the data along with the anglec                 <    [         R                  X5      nX#l        U$ rB   )r   __new___data)clsr   r9  rE   s       rG   rl  AngleData.__new__  s    }}S'
rJ   )rm  N)r\   r]   r^   r_   r   rl  r`   rC   rJ   rG   rj  rj    s
    9rJ   rj  c                      \ rS rSr\" S<0 S\_S\" \SS9_S\" \SS9_S\" \	S	S9_S
\" \
" SS5      SS9_S\" SSS9_S\" \SS9_S\" \	SSS9_S\" \" \" SS5      \45      SSS9_S\" \
" SSS5      SSS9_S\" \SSS9_S \" \
" S!S"5      SS#9_S$\" \S%S9_S&\" \S'S9_S(\" \S)S9_S*\" SS+SS9_S,\" \S-S9_S.\" \	S/S9_S0\" \" \5      S1S9_S2\" \	S3S9_6rSrS4 rS5 rS6 rS=S7 jrS8 rS9 rS: rS;rg)>Piei	  BASEr9  z7List of numbers defining wedge sizes; need not sum to 1rf   r   z2Optional list of labels to use for each data point
startAnglez#Angle of first slice; 0 is due Eastr%  r!  anticlockwisez'clockwise' or 'anticlockwise'r   Nz&Collection of wedge descriptor objectsr   zIf true(default) use a simple String not an advanced WedgeLabel. A WedgeLabel is customisable using the properties prefixed label_ in the collection slices.other_thresholdz.A value for doing threshholding, not used yet.rl   r   checkLabelOverlapg?zFIf true check and attempt to fix
 standard label overlaps(default off)pointerLabelMode	LeftRightLeftAndRightr   	sameRadiiz,If true make x/y radii the same(default off)	orderModefixed	alternate)r   xradiuszX direction RadiusyradiuszY direction RadiusinnerRadiusFractionz$fraction of radii to start wedges atwedgeRecordzcallable(wedge,*args,**kwds)r   zDIf true attempt to make piechart with labels along side and pointerssideLabelsOffsetzWThe fraction of the pie width that the labels are situated at from the edges of the pier   z,A class factory to use for non simple labels
angleRangez3total degree range for the doughnut defaults to 360c           
         [         R                  " U 5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  S/ SQ5      5        [        U S	UR                  S	S 5      5        [        U S
UR                  S
S5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  SS 5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  SS 5      5        [        U SUR                  SS 5      5        [        U SUR                  SS 5      5        [        U SUR                  SS5      5        [        U SUR                  SS5      5        [        U SUR                  S[	        [
        5      5      5        [        U SUR                  SS5      5        [        R                  U R                  S   l	        [        R                  U R                  S   l	        [        R                  U R                  S   l	        [        R                  U R                  S    l	        [        R                  U R                  S!   l	        [        R                  U R                  S"   l	        [        R                  U R                  S#   l	        g )$Nr   r   r   r   d   r   r9  )rl   gffffff@g333333?g@r   rs  r8   r%  r!  r   rl   rv  rw  rz  Fr{  r|  r~  r  r  r   r  r   r   r  rN   rm   r      rO      )r*   r   setattrpopr(   rb   r   darkcyanr   rh   
bluevioletbluecyanpinkmagentayellow)rE   kwdss     rG   r   Pie.__init__!  sv   $S#a)S#a)WTXXgc23Xdhhx45VDHHVO<=Xdhhx56\$((<";<[+k!BC^DHH^A$>?(2Ea)HI'1CD(IJ[+e!<=[+g!>?Ytxx	$78Ytxx	$78*4884I$+OP\$((<":;'1CC(HIXdhhx0G0XYZ\$((<"<=#)??A #)#4#4A #);;A #);;A #);;A #)>>A #)==A rJ   c                    [        SS5      n[        5       nSUl        SUl        SUl        SUl        / SQUl        / SQUl        SUR                  l	        SUR                  S	   l
        S
UR                  S	   l	        S
S
/UR                  S	   l        SUR                  S	   l        [        R                  UR                  S	   l        [        R                   UR                  S   l        [        R$                  UR                  S   l        [        R&                  UR                  S
   l        [        R(                  UR                  S	   l        [        R*                  UR                  S   l        [        R,                  UR                  S   l        [        R.                  UR                  S   l        UR1                  U5        U$ N   r  2   
   P   r     r   (   r  <   r&  r  cra  r3   fr   r   rm         ?r   rl   r  rO   r  )r   rq  r   r   r   r   r9  r   r   re   rp   rj   rt   r   redrs   r  rh   r  r  r  
aquamarine	cadetblue
lightcoraladdrE   ra  pcs      rG   demoPie.demo@  sG   CU	%-	!		 		!#$		! ()!u		!$#'		! !'		!!'		!!'!2!2		!!'		!!'		!!'!2!2		!!'!1!1		!!'!2!2		!	b	rJ   c                 :    " S S5      nU R                   S-
  nU R                  nS=n=n=n=p[        U R                  5      n/ nUR                  n[        U R                  U R                  5      nU GH  u  nnUS   c  M  U R                  US5      nU(       d  M*  U R                  X-     nUR                  (       a  UR                  (       d  M_  US-  n[        U USXEU5      nU" U5        UR                  5       nUS   US   -
  nUS   US   -
  nU Vs/ s H  nUS   [        UUS   US   45      4PM     nn[        US5      n[        US5      nU(       af  U(       a_  US	:X  a  US   US   -
  US   US   -
  :  a  S nO>S nO;US   US   -
  S
US   US   -
  -  :  a  S nOUS   US   -
  S
-  US   US   -
  :  a  S nU(       a  US-  nU(       a  US-  n[        UUUUUUUR                   UR"                  UR$                  S9	Ul        [)        UU	5      n	U
US-   -  n
GM     U(       d  U R                   S-  nU R                  S-  nU R*                  U-   nU R,                  U-   nU R.                  (       a  U R.                  nU R0                  (       a  U R0                  nU R2                  (       a  [5        UU5      =nnU" UUUU/ 5      $ Xv:H  nXR                  :  a  U(       d  X:X  a  [7        U5      nOS n[9        [        U5      XR*                  U R,                  U R                   U R                  US9u  n n!n"n#US	:X  a  [)        U!U"5      =n!n"U R*                  U!-   n$U R*                  U R                   -   U"-
  n%U%U$-
  S-  nU R                  S-  U#-
  nU$U-   nU R,                  U-   U#-   nU R.                  (       a  U R.                  nU R0                  (       a  U R0                  nU R2                  (       a  [5        UU5      =nnU" UUUUU U!U"5      $ s  snf )Nc                       \ rS rSrSS jrSrg)!Pie.makePointerLabels.<locals>.PLi]  c                 X    Xl         X l        X0l        X@l        XPl        X`l        Xpl        g rB   )centerxcenteryr~  r  r9  luru)rE   r  r  r~  r  r9  r  r  s           rG   r   *Pie.makePointerLabels.<locals>.PL.__init__^  s%    &&&& 	rJ   )r  r  r9  r  r  r~  r  N)r   r   )r\   r]   r^   r_   r   r`   rC   rJ   rG   PLr  ]  s    rJ   r  rm   r   rl   r   r:   r   ry  g{Gz?)	r   r   r   r3  r4  rA  r5  rB  rC  r   )r0  )r   r   r   r   r   r(  rs  r%  r   r   r   r   r  r  r1  dictr   r   r   r   r   r   r   r~  r  rz  r   rR   r]  )&rE   anglesplModer  r   r   r5   nrnlmaxWsumH
styleCountr  L_addrefArcsr   r  snr   r  r  r/   hr&  r4  r3  r~  r  r  r  aonRr0  rH  r  r  rI  x0x1s&                                         rG   makePointerLabelsPie.makePointerLabels\  s   	 	 A$%%%B%%d%

"4??4>>BDAqt|X##Ab)BxKK-E&&emmXFAT"Su=A!HA!QqT	A!QqT	AFMNg1Q4,Q!QqT{;<gBN A&B A&Bb>)!uRU{2a5A;.!!!uRU{4Ar!u#55!Q%1+t+BqE"Q%K7!272272aaqB"1UZUpUpx}  yS  yS  `e  `  `  @AKq;DAaCKD= @ jjnGkk#oGffWnGffWnG||t||W||t||W~~s77/CCwwggggb99uTDD'FAffTVVDJJt{{`de"R>!"Rj BVVBYVVDJJr!b5#+++c/#%W*&&.$<<4<<<<4<<>>3ww+??77''''!Br::_ Os   #Pc                 H   [        [        [        U R                  5      5      n[	        [        U5      5      =o0l        US:w  a  [        SU R                  5      U-  OSnU(       a  U Vs/ s H  n[        XE-  U5      PM     sn$ U Vs/ s H  oTU-  PM	     sn$ s  snf s  snf )Nr   rN   rl   )
r   maprT   r9  r   rD  _sumr   r  rj  )rE   keepDatar9  r1   r  r   s         rG   normalizeDataPie.normalizeData  s    CDII&'c$i((I*+Q$CDOO$Q&A.23dIac!$d33!%&AaC&& 4&s   *B	Bc                 X   [        U SS 5      nU R                  (       a2  [        U R                  U R                  5      nSU R
                  l        OU R                  S-  nU R                  S:H  =(       a    S=(       d    Sn[        U R                  US95       Vs/ s H  oDPM     nnU R                  S:X  a  U R                  (       d  U Vs/ s H  n[        US   5      S:  d  M  UPM     nnUR                  [        S	9  / / /nS
nU(       aR  US:  a  UR                  S
5      nOUR                  S5      nXxS-     R                  U5        US-  nUS-  nU(       a  MR  US   R!                  5         US
   US   -   U Vs/ s H  n[        US   5      S:  d  M  UPM     sn-   n/ n	U	R                  nU H`  u  pX*U-  -   n[        U
5      ["        :  a  X+:  a  X4nOX+4nOUS 4nU(       a  [%        US
   U
R&                  5      US   4nUnU" X45        Mb     U	$ s  snf s  snf s  snf )Nr  rl   rN   r!  r   )r  r}  gh㈵>r,  r   rm   r  )rU   r   rh  r9  r%  r   r   rs  r  r  r{  rT   r.  r?  r  r   reverse_ANGLELOrj  rm  )rE   wrrs  whichWayr&  DWrM  r   r  r   endAngler  s                rG   
makeAnglesPie.makeAngles  s   T--??		4>>:J()DKK%3.J>>[07R<1!$"4"4b"4"ABCB1QBC>>;&t1AqQqTDAA1FFvFBAAQ3aAb	AA#a QQ ! aDLLN!QqT	<1S1Yt^Q<<AHHHA"h&67H5z8#)!,B#,B%1ekk22a59!JqfI  ? D1 =s   HH"'H"H'H'c                   ^  T R                  5       n/ nU H&  u  nu  pEUc  UnOSXT-   -  nUR                  U5        M(     T R                  n[        U5      n[	        T R
                  U5      n	[        T SS 5      n
UT l        [        T R                  5      nT R                  nU(       a  S nU(       aS  SnT R                  X5      nUR                  nUR                  nUR                  nUR                  nUR                  nS nOT R                   S-  nT R"                  S-  nT R$                  U-   nT R&                  U-   nT R                  (       a  T R                  nT R                  (       a  T R                  nT R(                  (       a  [+        UU5      =nnT R,                  nU 4S jn[/        5       nUR0                  n/ nUR                  nT R2                  nU GHV  u  nu  pEUc  M  T R                  X;-     nUR4                  (       d  M2  [7        XT-
  5      nUUnnU" U5      nUR8                  nU(       d  U(       aG  XE-   S-  n U [:        -  n![=        U!5      n"[?        U!5      n#U(       a  U[@        :  a  UUU"-  -   nUUU#-  -   nU(       a  [C        UUXUUUU-  UU-  S9n$O&U[@        :  a  [E        UUUU5      n$O[C        UUXUUS9n$URF                  U$l#        URH                  U$l$        URJ                  U$l%        URL                  U$l&        URN                  U$l'        URP                  U$l(        URR                  U$l)        URT                  n%U%(       Ga?  U[W        URX                  5      -  n&U&S	:  Ga   U%S
:X  a  [Z        R\                  O[Z        R^                  n%S	[a        U&5      -   n&S	URb                  -
  n'URd                  S:X  a  S	U'-
  [W        U&S	-
  5      -  n(U'n)OU'S	-
  [W        U&S	-
  5      -  n(S	n)XT-
  [W        U&5      -  n*URF                  n+S U$l#        [g        U&5       Hn  n,UU,U*-  -   n-UU,S	-   U*-  -   n.U%" U+U)U(U,-  -   5      n/U(       a  [C        UUUU-U.UUU-  UU-  S9n0O[C        UUUU-U.US9n0U/U0l#        S U0l$        SU0l%        U" U05        Mp     U" U$5        U
(       a  U
" U$URh                  US9  URj                  (       d  GM  U(       GdS  U(       a  URl                  n1UU1-  n2UU1-  n3UU2W"-  -   n4UU3W#-  -   n5[o        T UW U4U5U5      n6U" U65        U(       d+  U6Rp                  (       a  UUU"-  -   U6l9        UUU#-  -   U6l:        U(       a#  U4U5U U2U3UUU6Rw                  5       XE4S.	U6l<        GM  GM  U(       a  W(       a  UU   n6U6(       a  U6Rx                  n7U7S   n8U7S   n9UUU9-  -   n:UUU8-  -   n;URz                  n<U:U<U9-  -   n=U;U<U8-  -   n>U" [}        U:U;U=U>U6R$                  U6R&                  4UR~                  UR                  S95        U" U65        GM@  GMC  GMF  GMI  U(       d  GMS  T R                  R8                  n?Sn@U H  u  nnAT R                  U   RF                  (       a  W@S	-  n@M+  UW@-  nBT R                  UB   RF                  T R                  U   l#        T R                  UB   R8                  T R                  U   l        M     [g        SW@S	-
  5       H;  nCT R                  UC   R8                  U?:  d  M"  T R                  WC   R8                  n?M=     URl                  n1UU1-  n3[7        W 5      S:  d  U S:  a  U S:  d  SU s=:  a  S:  a2  O  O/S	T R                  -   T R                   -  T R$                  -   U?-   n4Sn2O+T R$                  T R                  T R                   -  -
  U?-
  n4Sn2UU3W#-  -   n5[o        T UU U4U5U5      n6U" U65        U(       d  UUW"-  -   U6l9        UUU#-  -   U6l:        U(       a  U4U5U U2U3UUU6Rw                  5       S.U6l<        U6Rw                  5       u  nDnEnFnGGMY     U(       a  U(       a
  [        UX}S9  U H  n6U" U65        M     U(       Gd  U GH|  n6U6Rp                  (       aY  U(       dR  U" [        U6R$                  U6R&                  U6Rr                  U6Rt                  WR~                  UR                  S95        Mn  U(       d  Mw  U6Rw                  5       u  nDnEnFnGU6R$                  S	T R                  -   T R                   -  T R$                  -   :X  a  U" [        U6Rr                  U6Rt                  SU6Rr                  U6R$                  -   -  U6R&                  SWGWE-
  -  -   WR~                  UR                  S95        U" [        SU6Rr                  U6R$                  -   -  U6R&                  SUGUE-
  -  -   U6R$                  U6R&                  SUGUE-
  -  -   UR~                  UR                  S95        GM  U" [        U6Rr                  U6Rt                  SU6Rr                  U6R$                  -   -  U6R&                  SWGWE-
  -  -   WR~                  UR                  S95        U" [        SU6Rr                  U6R$                  -   -  U6R&                  SUGUE-
  -  -   U6R$                  U6R&                  SUGUE-
  -  -   UR~                  UR                  S95        GM     U$ )Nr   r  Fc                     gNr   rC   )r   s    rG   <lambda> Pie.makeWedges.<locals>.<lambda>  s    BrJ   c                 (   > TR                  U S5      $ r  )r   )r   rE   s    rG   r  r    s    D..q4rJ   r   )r  radius1yradius1)r  rl   r   r   r   )valuelabel)	r   r   r   r   r   r   r   r   r  r7  r8  )re   ri   r8   r<   r   r   r   r   r   r   r   r   r   r   r   )r  g      ?)Dr  r   r   r   r   r   rU   _seriesCountr   rw  r  r~  r  r  r  r9  r   r   r   r   rz  r   rv  r   r  r  r   rT   rp   r   r   r   _ANGLEHIr    r   rh   ri   re   rn   rk   ro   rj   r   r   r   r   WhiterBlackerrR   r   r   r   rm  r   rt   r   r   _aax_aayr  r   r   r&   r   r   r  r  r'   )HrE   r  
halfAnglesr   a1a2	halfAngler   r5   r   r  r  r  rv  r  r~  r  r  r  PL_datagSNgg_addr  r  r  r   r  r   r   r   rp   averageAngleaveAngleRadianscosAAsinAAtheWedgeshadernshadesr   dshshf1shdashscishsha1sha2shcshWedgert   r   r   r   r   r  r9  sinMcosMlXlYlpellXilYislices_popoutrL  r   r  r   r  y1x2y2sH   `                                                                       rG   
makeWedgesPie.makeWedges  s)
   "
IAgrz	K	i(   __
KDKK*T--%
&&F %%%f4BjjGjjGjjGjjGggGCjjnGkk#oGffw&Gffw&G||t||W||t||W~~s77/CCww $ 6 64CG"66  IAgrz8 Q\2J%%xRUB gBq6D&&Fv "s{".w"6O,O,bk 6%</B 6%</B" Rb' '(; ;WM`E`b x<&r2w@H$RW"gNH ",!5!5H#-#9#9H #-#9#9H &0&?&?H#%/%=%=H"(2(C(CH%'1'A'AH$++FuZ%<%<==Q;.4i.?V]]V^^FGnG$%j&>&>$>M!22H< gai0@@,,Qgai0@@ E5>1D%//D)-H&$W~!CH}!SUDL0$T$S.9.&+BGT4QX,34G,GQXYlQl'nG ',BGT4QX&YG,/).2+./+g  . (O8"((6'''!&0&<&<$[0$[0!#bh!#bh*4\&PZ[a%!*;*;%'%5AF%'%5AF,17Vl242BR67kkmrg+.AK -
  G#AJ#$;;D#'<D#'<D!#gdl!2B!#gdl!2B#-#G#GD"$tDy.C"$tDy.C!(Br#c!##acc+B0:0T0T0:0T0T#V W "!H  %,  t(,(:(:(.HAu#{{1~77 !Q$%aC;?;;q>;S;SA 88<A8M8MA 5 )/ "'q1A#{{1~44}D04A0E0E ". '1&<&<$[0-2s9J|]`O`fj ,g3.2g3&'(=(=&=tzz%IDFF%RUb%bF!"B%)VVt/D/Ddjj.P%PS`%`F!"B!#bh*4\&PZ[a%%'%5AF%'%5AF,17Vl242BR67kkm+.AK '(kkm2bY  \ Q
DAE!H$$Z$qss133qvvaff$.$H$H$.$H$HJ K  Z"#++-KBr"Rssq!6!66

BTVVKKd166!&&affQSSj1A!##tRPRU|BT(2(L(L(2(L(LN O d3qss
#3ACCr"u4Fqss133PTVXY[V[P\K](2(L(L(2(L(LN O d166!&&affQSSj1A!##tRPRU|BT(2(L(L(2(L(LN O d3qss
#3ACCr"u4Fqss133PTVXY[V[P\K](2(L(L(2(L(LN O' . rJ   c                 j    U R                  5       nU R                  5       nU(       a  [        X5      $ U$ rB   )makeBackgroundr	  r   )rE   rH  r/   s      rG   drawPie.draw  s-    !OOU1ZrJ   )r  r  rC   )F)r\   r]   r^   r_   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   ru  r   r  r  r  r  r	  r  r`   rC   rJ   rG   rq  rq  	  s    
, 
O2kl
3:no
 "(1VW
 !{O!DKkl	

 d)QR
 $I  5S  T
 'x6fuvw
 )?43J92U)V  ^g  vw  x
 (d;~(NUWfgh
 !1_nop
 !w{!;!L
 ~4HI
 ~4HI
 +>@fg
 #4.L[\]
  ")2xy!
" (  8Q  R#
$  z 29gh%
& "(1fg'
H* O1>8M;^''R[zrJ   rq  c                       \ rS rSrSr\" \\" \SS9\" SSS9\" SSS9\" \	SS9\" \
S	S9\" \S
S9\" \SS9\" \	SS9\" \	SS9\" \	SS9\" \	SS9S9rS rS rS rSS jrSrg)LegendedPiei  zUPie with a two part legend (one editable with swatches, one hidden without swatches).z#If true then create and draw legendrf   NzHandle to legend for piez;Formatting routine for number on right hand side of legend.z:Horizontal space between legend and numbers on r/hand sidez&Colours used for both swatches and piezNames used in legend (or None)z/Numbers used on r/hand side of legend (or None)zPadding on left of drawingzPadding on right of drawingzPadding at top of drawingzPadding at bottom of drawing)rr  
drawLegendlegend1legendNumberFormatlegendNumberOffsetpieAndLegend_colorslegend_nameslegend_datar   r   r   r   c                 z   [        U SUR                  S/ SQ5      5        [        R                  " U 40 UD6  [        R
                  [        R                  p2U" SSSSSS9U" SS	SS
SS9U" SSSSSSS9U" SS	SS
SSS9U" SSSSSSS9U" SS	SS
SSS9/U l        U R                  S   U R                  S   l	        U R                  S   U R                  S   l	        U R                  S   U R                  S   l	        U R                  S   U R                  S   l	        U R                  S   U R                  S   l	        U R                  S   U R                  S   l	        SU R                  l
        X0R                  l        SnSU l        SU l        U R                  U l        SSKJn  U" 5       U l        U R&                  U-   U R$                  l        U R*                  U R$                  l        SU R$                  l        SU R$                  l        SU R$                  l        SU R$                  l        SU R$                  l        SU R$                  l        SU R$                  l        / SQU l        [?        [A        U R                  5      5       HD  nU R$                  RB                  RE                  U R                  U   U R<                  U   45        MF     SU R$                  l#        S U R$                  l$        X0R$                  l        S!U R$                  l
        U" 5       U l%        SU RJ                  l        SU RJ                  l        SU RJ                  l        S"U RJ                  l#        S U RJ                  l$        U R$                  R                  U RJ                  l        SU l&        SU l'        SU l(        SU l)        SU l*        g )#Nr9  )g333333C@g333334@gfffff2@g.@gffffff@   H   r   zPANTONE 458 CV)spotNamer  A   r   zPANTONE 288 CVK   )r  densityr  rl   rm   r   r  rO   g      ?   3   z%.1f%%)LegendgGz@gףp=
W,@gHz&@   right)zAAA:zAA:zA:zBBB:zNR:zHelvetica-Boldr  r   zHelvetica-Oblique)+r  r  rq  r   r   
PCMYKColorr   r  r   rh   re   ri   r  r  r9  r  !reportlab.graphics.charts.legendsr!  r  r   r   r   r   deltaxdeltaydxTextSpacer   r   columnMaximum	alignmentr  r   r   colorNamePairsr   rq   rr   _legend2r   r   r   r   r  )rE   r  r$  r   legendOffsetr!  r  s          rG   r   LegendedPie.__init__  s   VDHHV,IJKT!D!"--v||E$.r"RCS$T$.s2aDT$U$.r"RCS\^$_$.s2aDT]_$`$.r"RCS\^$_$.s2aDT]_$`$b  "&!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A "&"'"$"*99 	=xL0"##( %&"!(<s499~&ALL''..0H0H0KTM^M^_`Ma/bc ' 0 !#( #& $%!")!4!"$(LL$<$<!rJ   c           	         U R                   (       a"  / U R                  l        / U R                  l        [	        [        U R                  5      5       GH}  nU R                  S :X  aV  U R                  U   U R                  U   l
        U R                  R                  R                  U R                  U   S 45        Oc U R                  U   U R                  U   l
        U R                  R                  R                  U R                  U   U R                  U   45        U R                  S :w  d  M  U R                  U   nU R                  nUb  Uc  OU[        U[         5      (       a  X2-  nO;[#        US5      (       a	  U" U5      nO![%        S['        U R                  5      -  5      eU R                  R                  R                  S U45        GM     [(        R+                  U 5      nU R                   (       Ga!  UR-                  U R                  5        U R                  R.                  U R0                  -   U R                  l        U R                  R2                  U R                  l        U R                  R4                  U R                  l        U R                  R6                  U R                  l        U R                  R8                  U R                  l        U R                  R:                  U R                  l        UR-                  U R                  5        UR=                  U R>                  U R@                  5        U$ ! [         a    U R                  U[        U R                  5      -     U R                  U   l
        U R                  R                  R                  U R                  U[        U R                  5      -     U R                  U   45         GNf = f)N__call__z6Unknown formatter type %s, expected string or function)!r  r  r+  r,  r   r   r9  r  r  r   rh   r   
IndexErrorr  r  
isinstancestrhasattr
ValueErrorasciirq  r  r  r   r  r   r&  r'  r   r)  shiftr   r   )rE   r  ldflNFrQ  s        rG   r  LegendedPie.draw  s   ??*,DLL'+-DMM(s499~&A  D(+/+C+CA+FA(++22D4L4LQ4OQU3VWJ/3/G/G/JDKKN,LL//668P8PQR8SUYUfUfghUi7jk 4'&&q)--;#+C(()CS,,c(C$%]`efjf}f}`~%~,,33T#J?- '. HHTN???EE$,,"llnnT-D-DDDMMO"llnnDMMO#'<<#6#6DMM #'<<#6#6DMM #||DMM*.,,*D*DDMM'EE$-- 	  $"4"457 " J/3/G/G#dNfNfJgHg/hDKKN,LL//668P8PQRSVW[WoWoSpQp8qsw  tE  tE  FG  tH  8I  JJs   =A"MBO O c                 :   U R                   nU R                  (       aV  XR                  R                  U R                  -   -  nXR
                  R                  U R
                  R                  5      -  nU R                  U R                  -   U R                  -   nX4$ rB   )r   r  r  r   r  r,  _calculateMaxWidthr+  r   r   r   )rE   txtys      rG   _getDrawingDimensions!LegendedPie._getDrawingDimensions7  st    ??,,..!8!888B--224==3O3OPPB+DOO;wrJ   c                     U(       d  U R                  5       u  p#[        X#5      nUR                  U R                  5       5        U$ rB   )r?  r   r  r  )rE   drawingr=  r>  s       rG   r  LegendedPie.demo?  s5    ..0EBboGDIIK rJ   )r,  r   r  r   r  r  r  r  r  r  r   r   rB   )r\   r]   r^   r_   r   r   rq  r   r   r   r   r   r   r   r   r  r?  r  r`   rC   rJ   rG   r  r    s    _C!)2WXt*DE)$5rs)(9uv*>@hi#$?Ffg"#>Evw"82NO#H3PQ!(1LM$X4RS
H;z'RrJ   r  )
_getShaded_2radr   r   c            
       b   \ rS rSrSr\" S10 S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S	\" \	SS9_S
\" \	SS9_S\" \	S5      _S\" \
SS9_S\" \SS9_S\" \SS9_S\" \	SS9_S\" \	SS9_S\" \	SS9_S\" \SS9_S\" \SS9_S\" \	S5      _S\" \SS9_S\" \	S5      _S\" \S5      _S\" \SS9_S\" \	SS9_S\" \SS9_S\" \SS9_S \" \	S!5      _S"\" \S#S9_S$\" \SS9_S%\" \	SS9_S&\" \	SS9_S'\" \	SS9_S(\" \SS9_S)\" \SS9_S*\" \SS9_S+\" \	SS9_S,\" \S-5      _6rS. rS/rg0)2Wedge3dPropertiesiG  rd   rh   r   rf   fillColorShadedrs   rq   rr   rw   r   zpadding at bottom of boxrx   r{   ry   rz   ru   rv   r   r   r   zpadding at left of boxr   r   zpadding at right of boxr   zset to True for simple pointersr|   r}   r~   r   r   zpadding at top of boxr   r   r   rt   rp   shadingri   strokeColorShadedrj   re   r   zset to false to skip displayingc                 &   SU l         SU l        SU l        S =U l        =U l        U l        [        S   U l        [        S   U l        SU l	        [        S   U l
        [        S   U l        [        S   U l        S	U l        S=U l        =U l        U l        S U l        S=U l        =U l        =U l        U l        S
U l        S U l        SU l        S U l        S U l        SU l        S =U l        =U l        =U l        U l        SU l         SU l!        SU l"        g )Nr   g333333?rl   ri   rj   rq   rr   rh   r   rL   r   r   r   )#re   rI  r   rJ  rH  rh   r"   ri   rj   rp   rq   rr   rs   rt   ru   rv   rw   r~   r   r   r   r   rx   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   s    rG   r   Wedge3dProperties.__init__t  s#   IMMM!5)-8-.?@&z2&z2'4;<<<(8nooo 6o9PSWSk&$(!$'!"&!%!$]aaa 0a43FIZ '$%!rJ   )"rh   rH  rs   rq   rr   rt   rw   r   rx   r{   ry   rz   ru   rv   r   r   r   r   r   r   r|   r}   r~   r   r   r   r   rp   rI  ri   rJ  rj   re   r   NrC   )r\   r]   r^   r_   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r`   rC   rJ   rG   rG  rG  G  se     #
 B7#
&}"=#
 !B7#
  b1	#

  b1#
 #84#
 +84NO#
 '{;#
 *-R@#
  ,MrB#
  ,H"=#
  b1#
  b1#
 $N;#
 %^<#
  )2JK!#
" &n"=##
$ *(3LM%#
&  ,I6WX'#
( )B?)#
* )r:+#
, ".b9-#
. ("=/#
0 (1HI1#
2 %Y4VW3#
4 #>r:5#
6 #847#
8 hB/9#
: xR0;#
< #=b9=#
> )B??#
@ ''<"EA#
B #84C#
D y)JKE#
HJ&rJ   rG  c                        \ rS rSrS rS rSrg)_SL3Di  c                     US:  a
  US-  nUS-  nXl         X l        X-   S-  U l        [        X!-
  5      [        :  U l        g )Nr   rN   r   )lohir6  rT   r  not360)rE   rP  rQ  s      rG   r   _SL3D.__init__  sD    a4#IB#IBE3;"%j8+rJ   c                 8    SU R                   U R                  4-  $ )Nz_SL3D(%.2f,%.2f))rP  rQ  r   s    rG   __str___SL3D.__str__  s    !TWWTWW$555rJ   )rQ  rP  r6  rR  N)r\   r]   r^   r_   r   rU  r`   rC   rJ   rG   rN  rN    s    ,6rJ   rN  c                 (    [        U S   US   5      * $ Nr   r-   r<  s     rG   _keyS3DrY    s    !QqTN?rJ   r<   c            
           \ rS rSr\" \\" \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S rS rS rS rSrg)Pie3di  zA flattening parameter.rf   zdepth of the pie.zThe view angle.)rr  perspectivedepth_3dangle_3dF      r:   c                     U R                   U   R                  =(       a    U R                  U   R                  =(       d    S$ rX  )_sl3drR  r   rp   )rE   r   s     rG   _popoutPie3d._popout  s.    zz!}##=A(=(=BBrJ   c                     U R                   U=(       a    U R                  =(       d    S-   U R                  U5      [        [	        U R
                  U   R                  5      5      -  -   $ rX  )_cx
_xdepth_3drc  r   rE  rb  r6  rE   r   ra  s      rG   CXPie3d.CX  J    xx.t3!4T\\!_StzzZ[}O`O`IaEb5bbbrJ   c                     U R                   U=(       a    U R                  =(       d    S-   U R                  U5      [        [	        U R
                  U   R                  5      5      -  -   $ rX  )_cy
_ydepth_3drc  r   rE  rb  r6  rh  s      rG   CYPie3d.CY  rk  rJ   c                 h    U R                  X5      U R                  [        [        U5      5      -  -   $ rB   )ri  _radiusxr   rE  rE   r   ora  s       rG   OXPie3d.OX  &    wwq|DMM#eAh-777rJ   c                 h    U R                  X5      U R                  [        [        U5      5      -  -   $ rB   )ro  _radiusyr   rE  rs  s       rG   OYPie3d.OY  rw  rJ   c                 d    U R                   n[        [        X-
  5      [        X-
  S-   5      5      $ )NrN   )_3dvar   rT   )rE   r&  r}  s      rG   rad_distPie3d.rad_dist  s)    

3qw<AGCK 011rJ   c                 |   [         R                  U 5        [        [        5      U l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        [
        R                  U R                  S   l        S =U l        U l        SU l        S	U l        / S
QU l        g )Nr   rl   rm   r   r  rO   r  i,  r  )g      )@g4@r   g      6@g      @g      2@g      *@)rq  r   r(   rG  r   r   r  rh   r  r  r  azurecrimson
darkvioletr~  r  r   r   r9  r   s    rG   r   Pie3d.__init__  s    T-.?@#)??A #)#4#4A #);;A #);;A #)<<A #)>>A #)#4#4A &**t|
=	rJ   c                    U R                  U5      nXpR                  U R                  U   R                  5      :  a  U R                  US5      U R	                  US5      U R                  US5      U R	                  US5      U R                  X#S5      U R                  X#S5      U R                  X#S5      U R                  X#S5      /nUR                  U[        XXeSS945        g g )Nr   rl   ri   rh   re   rn   )	r~  rb  r6  ri  ro  ru  rz  r   r$   )	rE   r  r   r   ri   re   rh   rdrQ  s	            rG   	_fillSidePie3d._fillSide  s    ]]5!mmDJJqM--..1dggal!TWWQq\"47711#5"47711#57A HHbyxyz{| /rJ   c                   ^  T R                   nT R                  n[        US-   5      =nT l        [	        U5      nT R
                  n[        U5      U-  T l        [        U5      U-  T l	        T R                  T R                  S-  -   T l        T R                  T R                  T R                  -
  S-  -   T l        T R                  T R                  -
  =pgT R                   (       a  T R                   nT R"                  (       a  T R"                  nUT l        ST R&                  S-  -
  U-  =T l        nT R+                  5       nT R,                  n	T R.                  n
T R0                  nT R2                  nT R4                  nT R6                  nT R8                  n[;        U5      =T l        n/ =nT l        [A        5       n[        T RB                  5      nT RD                  S:H  =(       a    S=(       d    SnU H6  nUU-  nUUU-   nnUnUS:  a  UUnnURG                  [I        UU5      5        M8     [K        T RL                  U5      nUnUS	-   n/ n/ n/ n " U 4S
 jS[N        5      nT RP                  n[S        U5       GH\  nUU   nURT                  (       d  M  UU   n U RV                  =n!nU RX                  =n"n[[        U"U!-
  5      n#U#[\        :  a  MW  [_        UR`                  URb                  URd                  5      n$[_        URf                  URh                  URd                  5      =(       d    U$n%URj                  n&U
" US5      n'U" US5      n(U
" US5      n)U" US5      n*U(       Ga  URm                  [o        U)U*UU!U"UU%U&U$SS9
5        U!Us=:  a  U":  a  O  OUnU!Us=:  a  U":  a  O  OUn[q        U%U$U&SS9n+U+Rs                  U)U*UUUUSS9  U+Ru                  U" UUS5      U" UUS5      5        U+Rs                  U'U(UUUUSS9  U+Rw                  5         UU::  a	  UU:  a  Sn,O[y        U" U5      U" U5      5      n,URG                  U,U+45        U" UUU!U%U&U$5        U" UUU"U%U&U$5        UR`                  n$URf                  =(       d    U$n%URG                  [o        U'U(UU!U"UU%U&U$SS9
5        U#[z        :  a  [}        U'U(XgU%U&U$SS9n-O[o        U'U(UU!U"UU%U&U$SS9
n-URG                  U-5        UU   n.UR~                  (       d  GM  U.(       d  GM  UR                  n/T =R$                  U/-  sl        T =R(                  U/-  sl        U R                  n0U" UU0S5      n1U" UU0S5      n2[        T U.U0U1U2UUS9n3URG                  U35        U(       a@  U1U2U0T R$                  T R(                  U
" US5      U" US5      U3R                  5       S.U3lD        UT l        UT l        GM_     UR                  [        S9  U(       a  U(       a  [        UT R                  5        U V4s/ s H  n4U4S   PM
     sn4U-   U-    H  n5URm                  U55        M     U$ s  sn4f )Nr8   r         ?g      Y@r!  r   rl   r   r:   c                   6   > \ rS rSr Y R                  rS rSrg) Pie3d.draw.<locals>.WedgeLabel3di  c                     US   S:X  aC  [        U S5      (       d1  U R                  U l        U R                  * U R                  -   U l        g g g )Nr   r5   _ody)r4  r   r  rn  rD   s     rG   rH   *Pie3d.draw.<locals>.WedgeLabel3d._checkDXY  sE    a5#:"4//$(GG	#'99*t"> 0 rJ   )r  r   N)r\   r]   r^   r_   rn  rH   r`   r   s   rG   WedgeLabel3dr    s    J?rJ   r  )r  ri   re   rh   rn   r  )r  moveTo)r  r  )ri   re   rh   rn   )r   r  r,  )Ir   r^  r   r}  rE  r]  r   rg  r   rn  r   r   rf  r   r   rm  r~  r  rr  r\  ry  r  r  ri  ro  ru  rz  r~  r  r   r  rb  r   rs  r%  r   rN  r   r   r?   rv  r   r   rP  rQ  rT   r  rD  rh   rH  rI  ri   rJ  re   r  r    r#   addArclineTo	closePathr   r  r   r   rt   r6  r   r  r   r.  rY  r  r   )6rE   r   	_3d_angler}  a0r]  radiusxradiusyr9  rD  ri  ro  ru  rz  r~  r  r5   rb  r  lastrg  angle1angle0r   r  rM  rO  r  r  rv  r   r   slrP  rQ  r  rh   ri   re   cx0cy0cx1cy1rQ  r  r  r   ratr6  r   r   r  r1   r   s6   `                                                     rG   r  
Pie3d.draw  s   MM	!)B,//
5\==b'(*b'(*66$**S.(664;;8#== HHTVVO+<<4<<<<4<<#&)9)9%)?#?"HH!!#iiWWWWWWWW==NN	 #D	)A
GDOO$^^[(/R41AGA!1T6FFD!tffVVLLvf-.  DKK*s]	?: 	? !22qA1IE==(qB%%B%%BRUB({H"5??53H3HWI$U%6%6u7N7Nu}}]jajK++KQq'CQq'CQq'CQq'CeCGRG,7KZc/02 3 <R<"<R<"yU`pqrSwaPAfQ1VA7SwqQ5=VU]BXf-hv.>?B"Q !Ab[C!Ab[C I++8yKHHU3s72b(3V_opr s8|"3W(3V_opr !SBw(3V_oprHHX!9D"""tt''$$ffAc!Ac! d3vfUl[$)/Vc*.--dmmRTUVWXRY`bcdef`g./kkm#&AK !( 'C F 	
7Qt/!"#A1Q4#A%a'AEE!H ( $s   Yc                 ^   [        SS5      n[        5       nSUl        SUl        SUl        SUl        / SQUl        / SQUl        SUR                  l	        SUR                  S	   l
        S
UR                  S	   l	        S
S
/UR                  S	   l        SUR                  S	   l        [        R                  UR                  S	   l        [        R                   UR                  S   l        [        R$                  UR                  S   l        [        R&                  UR                  S
   l        [        R(                  UR                  S	   l        [        R*                  UR                  S   l        [        R,                  UR                  S   l        [        R.                  UR                  S   l        SU R                  S   l        SU R                  S	   l        SU R                  S   l        SU R                  S   l        SU R                  S   l        UR3                  U5        U$ r  )r   rq  r   r   r   r   r9  r   r   re   rp   rj   rt   r   r  rs   r  rh   r  r  r  r  r  r  r   r  r  s      rG   r  
Pie3d.demoQ  s   CU	%-	!		 		!#$		! ()!u		!$#'		! !'		!!'		!!'!2!2		!!'		!!'		!!'!2!2		!!'!1!1		!!'!2!2		!!"A!"A!"A!"A!"A	b	rJ   )r}  rf  rm  rr  ry  r  rb  rg  rn  r9  r   r   r   r~  r  N)r\   r]   r^   r_   r   rq  r   r   r   r\  r]  r^  rc  ri  ro  ru  rz  r~  r   r  r  r  r`   rC   rJ   rG   r[  r[    sx    C"82KL/BC/@A
H
 KHHCcc882>}}~rJ   r[  c                      [        SS5      n [        5       nSUl        SUl        S/Ul        S/Ul        SUR                  l        U R                  U5        U $ )1Make a degenerated pie chart with only one slice.  r     r  r  r&  rl   )	r   rq  r   r   r9  r   r   re   r  ra  r  s     rG   sample0ar  s  sS     	SA	BBDBDdBGBIBIIEE"IHrJ   c                      [        SS5      n [        5       nSUl        SUl        SUl        SUl        S/Ul        S/Ul        S	UR                  l	        U R                  U5        U $ )
r  r  r  r  r  x   r  r  r&  rl   )r   rq  r   r   r   r   r9  r   r   re   r  r  s     rG   sample0br    sa     	SA	BBDBDBHBIdBGBIBIIEE"IHrJ   c                     [        SS5      n [        5       nSUl        SUl        / SQUl        / SQUl        SUR                  l        SUR                  S	   l        S
UR                  S	   l        S
S
/UR                  S	   l	        SUR                  S	   l
        [        R                  UR                  S	   l        U R                  U5        U $ )zFMake a typical pie chart with with one slice treated in a special way.r  r  r  r  r  r  rl   r  r   rm   r  )r   rq  r   r   r9  r   r   re   rp   rj   rt   r   r  rs   r  r  s     rG   sample1r    s     	SA	BBDBD&BG.BIBIIBIIaL BIIaL$%a5BIIaL #BIIaL#ZZBIIaLEE"IHrJ   c                  6   [        SS5      n [        5       nSUl        SUl        / SQUl        / SQUl        SUl        SUl        SUR                  l	        [        R                  UR                  S	   l        [        R                  UR                  S   l        [        R                  UR                  S
   l        [        R                  UR                  S   l        [        R                   UR                  S   l        [        R"                  UR                  S   l        [        R$                  UR                  S   l        [        R&                  UR                  S   l        [        R(                  UR                  S   l        U R+                  U5        U $ )z"Make a pie chart with nine slices.r  r  }   r`  )	gףp=
?gl?gS㥻?g~jt?gL7A`?gQ?g~jt?gT㥛 ?g333333?)	12345678Xr  rl   r   rm   r   r  rO   r  r"     )r   rq  r   r   r9  r   r   r   r   re   r   	steelbluerh   thistle
cornflowerlightsteelbluer  r  r  tandarkseagreenr  r  s     rG   sample2r    s#    	SA	BBDBD#BG >BIBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaL#..BIIaL#ZZBIIaL#00BIIaLEE"IHrJ   c                     [        SS5      n [        5       nSUl        SUl        / SQUl        SUl        SUl        SUR                  l        [        R                  UR                  S   l        [        R                  UR                  S   l        [        R                  UR                  S	   l        U R                  U5        U $ )
z(Make a pie chart with a very slim slice.r  r  r  r`  )J   rl   r`  r  rl   r   rm   )r   rq  r   r   r9  r   r   r   re   r   r  rh   r  r  r  r  s     rG   sample3r    s     	SA	BBDBDBGBHBIBII#--BIIaL#^^BIIaL#..BIIaLEE"IHrJ   c                  X   [        SS5      n [        5       nSUl        SUl        / SQUl        SUl        SUl        SUR                  l        [        R                  UR                  S   l        [        R                  UR                  S   l        [        R                  UR                  S	   l        [        R                  UR                  S
   l        [        R                  UR                  S   l        [        R                   UR                  S   l        U R#                  U5        U $ )z/Make a pie chart with several very slim slices.r  r  r  r`  r  rl   rl   rl   rl      r  rl   r   rm   r   r  rO   )r   rq  r   r   r9  r   r   r   re   r   r  rh   r  r  r  r  r  r  r  s     rG   sample4r    s     	SA	BBDBD"BGBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrJ   c                  x   [        SS5      n [        5       nSUl        SUl        / SQUl        / SQUl        SUl        SUl        SUl        SUR                  l
        [        R                  UR                  S	   l        [        R                  UR                  S   l        [        R                  UR                  S
   l        [        R                   UR                  S   l        [        R"                  UR                  S   l        [        R$                  UR                  S   l        U R'                  U5        U $ )zMake a pie with side labels.r  r  r  r`  )r"  rl   rl   rl   rl   rm   example1example2example3example4example5example6rl   r  r   rm   r   r  rO   )r   rq  r   r   r9  r   r   r   r   r   re   r   r  rh   r  r  r  r  r  r  r  s     rG   sample5r    s     	SA	BBDBD BGXBIBMBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrJ   c                     [        SS5      n [        5       n SUl        SUl        / SQUl        / SQUl        SUl        SUl        SUl        SUR                  l
        [        R                  UR                  S   l        [        R                  UR                  S   l        [        R                  UR                  S	   l        [        R                   UR                  S
   l        [        R"                  UR                  S   l        [        R$                  UR                  S   l        ['        SSSS5      nU R)                  U5        U R)                  U5        U $ )z=Illustrates the pie moving to leave space for the left labelsr  r  r   r`  r  r  rl   r  rm   r   r  rO   )r   rq  r   r   r9  r   r   r   r   r   re   r   r  rh   r  r  r  r  r  r'   r  )ra  r  r  s      rG   sample6r    s    	SA	B'BDBD"BGXBIBMBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLQq3AEE"IEE!HHrJ   c                     [        SS5      n [        5       nSUl        SUl        SUl        SUl        / SQUl        / SQUl        SUl        SUl	        S	Ul
        SUR                  l        [        R                  UR                  S	   l        [        R                   UR                  S   l        [        R"                  UR                  S
   l        [        R$                  UR                  S   l        [        R&                  UR                  S   l        [        R(                  UR                  S   l        U R+                  U5        U $ )zCase with overlapping pointersr  r  r  r  r  )rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   )r  r  r  r  r  r  example7example8example9	example10	example11	example12	example13	example14	example15	example16	example17	example18	example19	example20	example21	example22	example23	example24	example25	example26	example27	example28rl   r   rm   r   r  rO   )r   rq  r   r   r   r   r9  r   r   rv  r   r   re   r   r  rh   r  r  r  r  r  r  r  s     rG   sample7r  9  s     	SA	BBDBDBHBIbBGkBI BMBBO BII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrJ   c                      [        SS5      n [        5       nSUl        SUl        SUl        SUl        / SQUl        / SQUl        SUl        SUl	        SUR                  l        [        R                  UR                  S	   l        [        R                  UR                  S   l        [        R                   UR                  S
   l        [        R"                  UR                  S   l        [        R$                  UR                  S   l        [        R&                  UR                  S   l        U R)                  U5        U $ )Case with overlapping labelsr  r  r  r  r  )rl   rl   rl   rl   rl   r   r  rl   rl   rl   rl   rl   rl   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rl   r   rm   r   r  rO   )r   rq  r   r   r   r   r9  r   r   rv  r   re   r   r  rh   r  r  r  r  r  r  r  s     rG   sample8r  [  s     eSA	BBDBDBHBIABG*BI BMBBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrJ   c                      [        SS5      n [        5       nSUl        SUl        / SQUl        / SQUl        SUl        SUl        SUl        SUl	        SUR                  l        [        R                  UR                  S	   l        [        R                  UR                  S   l        [        R                   UR                  S
   l        [        R"                  UR                  S   l        [        R$                  UR                  S   l        [        R&                  UR                  S   l        U R)                  U5        U $ )r  r  r  r  r  ))   r  r     r  r   r  r  r`  #   r`  r  r   r  r  r   r  rl   r  r   rm   r   r  rO   )r   rq  r   r   r9  r   r   rv  r   r   r   re   r   r  rh   r  r  r  r  r  r  r  s     rG   sample9r  {  s     _SA	BBDBDNBG*BI BMBBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrJ   __main__)	renderPDFr  samplezsample%sz%s.pdfrB   )rl   )Fr  )s__version__r   	functoolsmathr   r   r   reportlab.libr   reportlab.lib.validatorsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   "reportlab.graphics.widgets.markersr   r   reportlab.lib.attrmapreportlab.graphics.shapesr   r   r   r    r!   r"   r#   r$   r%   r&   r'   reportlab.graphics.widgetbaser(   r)   reportlab.graphics.charts.areasr*   r%  r+   $reportlab.graphics.charts.textlabelsr,   	reportlabr.   rW   rV   r  r  r?   rb   r   r   r   r   r   r   r  r  r(  r*  
cmp_to_keyr1  r:  r=  r?  r]  rh  r   rj  rq  r  !reportlab.graphics.charts.utils3drD  rE  r   r   rG  rN  rY  _270rr[  r  r  r  r  r  r  r  r  r  r  r  r\   sysreportlab.graphicsr  argvr&  
startswithnameglobalsrB  
drawToFilerC   rJ   rG   <module>r     s   	     @ @ @ @ @ @ H # E  E  E  E M 4 5 6 DSd3UY`de Tct$CVZaef h Z)j Z)x<|x 6o GR
.$


w
'D8			f	%D"L2 u
 unD# DL O NE&
 E&N6 6


w
'c
PC Pf"&.@.26@ D@@ Z
 ,88AB< C5DLL**q
Q)D/#Who6  rJ   