Ë
    ¡ëiJL  ã                   ór  — d Z dZddlmZmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZ ddl­ ddlmZmZmZ ddlmZ dd	lmZmZmZmZ dd
lm Z  ddl!m"Z"  G d„ de«      Z# G d„ de«      Z$d„ Z%d„ Z&d„ Z'd„ Z(e)dk(  r7ddl*m+Z+  e%«       Z, e+e,d«        e&«       Z, e+e,d«        e'«       Z, e+e,d«       yy)z3.3.0z£Doughnut chart

Produces a circular chart like the doughnut charts produced by Excel.
Can handle multiple series (which produce concentric 'rings' in the chart).

é    )ÚsinÚcosÚpi)Úcolors)
ÚisNumberÚisListOfStringsOrNoneÚOneOfÚ	isBooleanÚisNumberOrNoneÚisListOfNoneOrNumberÚisListOfListOfNoneOrNumberÚEitherOrÚNoneOrÚ
isCallable)Ú*)ÚGroupÚDrawingÚWedge)ÚTypedPropertyCollection)ÚAbstractPieChartÚWedgePropertiesÚ_addWedgeLabelÚfixLabelOverlaps)ÚPlotArea)Úreducec                   ó"   — e Zd ZdZ ee¬«      Zy)ÚSectorPropertiesa4  This holds descriptive information about the sectors in a doughnut chart.

    It is not to be confused with the 'sector 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 Sector object for you with its
    format method.
    )ÚBASEN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚAttrMapr   Ú_attrMap© ó    úb/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/charts/doughnut.pyr   r      s   „ ññ ˜Oô �Hr&   r   c                   ó¶  — e Zd Z ed+i de“d eed¬«      “d eed¬«      “d eed¬«      “d	 eed
¬«      “d e eee	f«      d¬«      “d ee
d¬«      “d eed¬«      “d e edd«      d¬«      “d edd¬«      “d eed¬«      “d eedd¬«      “d eedd¬«      “d  eed!¬«      “d" e ee«      d#¬«      “d$ eed%¬«      “ŽZd&„ Zd'„ Zd,d(„Zd)„ Zd*„ Zy)-ÚDoughnutr   Úxz-X position of the chart within its container.)ÚdescÚyz-Y position of the chart within its container.Úwidthz:width of doughnut bounding box. Need not be same as width.Úheightz=height of doughnut bounding box.  Need not be same as height.Údataz8list of numbers defining sector sizes; need not sum to 1Úlabelsz2optional list of labels to use for each data pointÚ
startAnglez6angle of first slice; like the compass, 0 is due NorthÚ	directionÚ	clockwiseÚanticlockwisez'clockwise' or 'anticlockwise'ÚslicesNz'collection of sector descriptor objectsÚsimpleLabelsz6If true(default) use String not super duper WedgeLabelÚcheckLabelOverlapzFIf true check and attempt to fix
 standard label overlaps(default off)é   )r+   ÚadvancedUsageÚ
sideLabelszAIf true attempt to make chart with labels along side and pointersÚinnerRadiusFractionzhNone or the fraction of the radius to be used as the inner hole.
If not a suitable default will be used.Ú
labelClassz,A class factory to use for non simple labelsÚ
angleRangez3total degree range for the doughnut defaults to 360c           
      óT  — t        j                  | «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dddg«      «       t        | d	|j                  d	d «      «       t        | d
|j                  d
d«      «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dd«      «       t        | d|j                  dd «      «       t        | d|j                  dt	        t
        «      «      «       t        | d|j                  dd«      «       t        j                  | j                  d   _	        t        j                  | j                  d   _	        t        j                  | j                  d   _	        t        j                  | j                  d   _	        t        j                  | j                  d   _	        t        j                  | j                  d   _	        t        j                  | j                  d   _	        y )Nr*   r   r,   r-   éd   r.   r/   r8   r0   r1   éZ   r2   r3   r6   r7   r:   r;   r5   r=   éh  é   é   é   é   é   )r   Ú__init__ÚsetattrÚpopr   r   r   Údarkcyanr5   Ú	fillColorÚ
bluevioletÚblueÚcyanÚpinkÚmagentaÚyellow)ÚselfÚkwdss     r'   rG   zDoughnut.__init__;   sí  € Ü×Ñ˜$ÔÜ��S˜Ÿ™ # a›Ô)Ü��S˜Ÿ™ # a›Ô)Ü��W˜TŸX™X g¨cÓ2Ô3Ü��X˜dŸh™h x°Ó4Ô5Ü��V˜DŸH™H V¨Q¨q¨EÓ2Ô3Ü��X˜dŸh™h x°Ó5Ô6Ü��\ $§(¡(¨<¸Ó";Ô<Ü��[ §¡¨+°kÓ!BÔCÜ��^ D§H¡H¨^¸AÓ$>Ô?Ü�Ð(¨¯©Ð2EÀaÓ)HÔIÜ��\ $§(¡(¨<¸Ó":Ô;Ü�Ð*¨4¯8©8Ð4IÈ$Ó+OÔPÜ��X˜dŸh™h xÔ0GÔHXÓ0YÓZÔ[Ü��\ $§(¡(¨<¸Ó"<Ô=ä#)§?¡?ˆ�‰�A‰Ô Ü#)×#4Ñ#4ˆ�‰�A‰Ô Ü#)§;¡;ˆ�‰�A‰Ô Ü#)§;¡;ˆ�‰�A‰Ô Ü#)§;¡;ˆ�‰�A‰Ô Ü#)§>¡>ˆ�‰�A‰Ô Ü#)§=¡=ˆ�‰�A‰Õ r&   c                 ó–  — t        dd«      }t        «       }d|_        d|_        d|_        d|_        g d¢|_        g d¢|_        d|j                  _	        d|j                  d	   _
        d
|j                  d	   _	        d
d
g|j                  d	   _        d|j                  d	   _        t        j                  |j                  d	   _        t        j                   |j                  d   _        t        j$                  |j                  d   _        t        j&                  |j                  d
   _        t        j(                  |j                  d	   _        t        j*                  |j                  d   _        t        j,                  |j                  d   _        t        j.                  |j                  d   _        |j1                  |«       |S )NéÈ   r?   é2   é
   éP   ©rW   é   é   é(   rV   é<   ©ÚaÚbÚcÚdÚeÚfç      à?rC   rB   g      ü?r   r8   rD   rE   rF   )r   r)   r*   r,   r-   r.   r/   r0   r5   ÚstrokeWidthÚpopoutÚstrokeDashArrayÚlabelRadiusr   ÚredÚ	fontColorrJ   rK   rL   rM   rN   Ú
aquamarineÚ	cadetblueÚ
lightcoralÚadd)rR   rb   Údns      r'   ÚdemozDoughnut.demoU   sG  € Ü�C˜Óˆä‹ZˆØˆŒØˆŒØˆŒØˆŒ	Ú%ˆŒÚ-ˆŒ	à!ˆ�	‰	ÔØ ˆ�	‰	�!‰ÔØ#$ˆ�	‰	�!‰Ô Ø()¨! uˆ�	‰	�!‰Ô$Ø#'ˆ�	‰	�!‰Ô Ü!'§¡ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰ÔÜ!'×!1Ñ!1ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰Ôà	�‰ˆbŒ	Øˆr&   c                 óˆ   — t        |«      }|dk7  rt        d| j                  «      |z  nd}|D �cg c]  }||z  ‘Œ	 c}S c c}w )Nr   rA   r8   )ÚsumÚminr=   )rR   r/   Úsrd   rb   s        r'   ÚnormalizeDatazDoughnut.normalizeDataq   s@   € Ü�‹IˆØ*+¨Qª$ŒC��D—O‘OÓ$ QÒ&°AˆØ!Ö"˜��!“Ò"Ð"ùÒ"s   °?c                 óx  — | j                   }t        |«      }|rXg }g }|D ]>  }| j                  |«      }|j                  |«       |j                  t	        |«      «       Œ@ t        |«      | _        n#| j                  |«      }t	        |«      }|| _        | j                  }g }|j                  }	| j                  }
|
€%g }
|sdg|z  }
nu|D ]  }t        |
«      dg|z  z   }
Œ n[|s&|t	        |
«      z
  }|dkD  rFt        |
«      dg|z  z   }
n3d}|D ]  }||z  }Œ	 |t	        |
«      z
  }|dkD  rt        |
«      dg|z  z   }
|
| _        | j                  dz  }| j                  dz  }| j                  |z   }| j                  |z   }| j                  dk(  rd}nd}t        «       }| j                   }t	        | j"                  «      }| j$                  }|�rÚt	        |«      }|€|dz  |z  }|dz  |z  }n
||z  }||z  }||z
  |z  }||z
  |z  }t'        |«      D �]‘  \  }}t'        |«      D �]|  \  }}|||z  z   }t)        ||z
  «      } | dk  r|}Œ%||k  r|}!|}"n|}!|}"|}| j"                  |||z  f   }#||}%}$|#j*                  dk7  rB|!|"z   dz  }&|&t,        z  d	z  }'|#j*                  }(||(t/        |'«      z  z   }$||(t1        |'«      z  z   }%|||z  z   })|)|z   }*|||z  z   }+|+|z   },t	        |«      dkD  rt3        |$|%|,|!|"|*|+|)¬
«      }-nt3        |$|%|,|!|"|*|+|)d¬«	      }-|#j4                  |-_        |#j6                  |-_        |#j8                  |-_        |#j:                  |-_        |#j<                  }.|.�rN| t?        |#j@                  «      z  }/|/dkD  �r0|.dk(  rtB        jD                  ntB        jF                  }.dtI        |/«      z   }/d|#jJ                  z
  }0|#jL                  dk(  rd|0z
  t?        |/dz
  «      z  }1|0}2n|0dz
  t?        |/dz
  «      z  }1d}2|"|!z
  t?        |/«      z  }3|#j4                  }4d |-_        tO        |/«      D ]€  }5|!|5|3z  z   }6|!|5dz   |3z  z   }7 |.|4|2|1|5z  z   «      }8t	        |«      dkD  rt3        |$|%|,|6|7|*|+|)¬
«      }9nt3        |$|%|,|6|7|*|+|)d¬«	      }9|8|9_        d |9_        d|9_        |jQ                  |9«       Œ‚ |jQ                  |-«       |dk(  s�Œ§|#jR                  s�Œµ|#jT                  s�ŒÃ| jW                  |d«      }:|:s�ŒÙ|!|"z   dz  }&|&t,        z  d	z  }'|#jX                  };||;z  }<||;z  }=|d| j                  z  t/        |'«      z  |;z  z   }>|d| j                  z  t1        |'«      z  |;z  z   }?t[        | |:|&|>|?|#«      }|r|>|?|&|<|=|$|%|j]                  «       dœ|_/         |	|«       �Œ �Œ” �nk|€|dz  }|dz  }n
||z  }||z  }t'        |«      D �]E  \  }}|||z  z   }t)        ||z
  «      } | dk  r|}Œ%||k  r|}!|}"n|}!|}"|}| j"                  ||z     }#||}%}$|#j*                  dk7  rB|!|"z   dz  }&|&t,        z  d	z  }'|#j*                  }(||(t/        |'«      z  z   }$||(t1        |'«      z  z   }%|dkD  rt3        |$|%||!|"|||¬
«      }-n|dk(  rt3        |$|%||!|"|||d¬«	      }-|#j4                  -_        |#j6                  |-_        |#j8                  |-_        |#j:                  |-_        |#j<                  }.|.�rJ| t?        |#j@                  «      z  }/|/dkD  �r,|.dk(  rtB        jD                  ntB        jF                  }.dtI        |/«      z   }/d|#jJ                  z
  }0|#jL                  dk(  rd|0z
  t?        |/dz
  «      z  }1|0}2n|0dz
  t?        |/dz
  «      z  }1d}2|"|!z
  t?        |/«      z  }3|#j4                  }4d |-_        tO        |/«      D ]|  }5|!|5|3z  z   }6|!|5dz   |3z  z   }7 |.|4|2|1|5z  z   «      }8|dkD  rt3        |$|%||6|7|||¬
«      }9n|dk(  rt3        |$|%||6|7|||d¬«	      }9|89_        d |9_        d|9_        |jQ                  |9«       Œ~ |jQ                  |-«       |
|   s�Œƒ|#jR                  s�Œ‘|#jT                  s�ŒŸ|!|"z   dz  }&|&t,        z  d	z  }'|#jX                  };|d| j                  z  t/        |'«      z  |;z  z   }>|d| j                  z  t1        |'«      z  |;z  z   }?||;z  }<||;z  }=t[        | |
|   |&|>|?|#«      }|r|>|?|&|<|=|$|%|j]                  «       dœ|_/         |	|«       �ŒH |r|rta        |«       |D ]  }|jQ                  |«       Œ |S )NÚ r   g       @r4   r8   éÿÿÿÿg      @gñhãˆµøä>g     €f@)ÚyradiusÚradius1Úyradius1T)rz   r{   r|   ÚannularÚlightenÚnormalre   )r*   r,   ÚangleÚrxÚryÚcxÚcyÚbounds)1r/   r   rv   ÚappendÚlenÚmaxÚ_seriesCountr7   r0   Úlistr-   r.   r*   r,   r2   r   r1   r5   r;   Ú	enumerateÚabsrg   r   r   r   r   rK   ÚstrokeColorrf   rh   ÚshadingKindÚfloatÚshadingAngler   ÚWhiterÚBlackerÚintÚshadingAmountÚshadingDirectionÚrangero   ÚvisibleÚlabel_visibleÚgetSeriesNameri   r   Ú	getBoundsÚ	_origdatar   )@rR   r/   ÚmultiÚnormDataÚnÚlÚtr7   ÚLÚL_addr0   ÚmÚiÚtlabÚxradiusrz   ÚcenterxÚcenteryÚwhichWayÚgr1   Ú
styleCountÚirfÚndataÚyirÚxirÚydrÚxdrÚsnÚseriesr€   ÚendAngleÚaaÚa1Úa2ÚsectorStylerƒ   r„   ÚaverageAngleÚaveAngleRadiansÚpopdistanceÚyr1ÚyrÚxr1ÚxrÚ	theSectorÚshaderÚnshadesr”   ÚdshÚshf1ÚshdaÚshscÚishÚsha1Úsha2ÚshcÚshSectorÚtextri   r�   r‚   ÚlabelXÚlabelYs@                                                                   r'   ÚmakeSectorszDoughnut.makeSectorsv   s~
  € à�y‰yˆÜ*¨4Ó0ˆÙàˆHØˆAØò !�Ø×&Ñ& qÓ)�Ø—‘ Ô"Ø—‘œ˜Q›Õ ð!ô !$ A£ˆDÕà×)Ñ)¨$Ó/ˆHÜ�H“ˆAØ !ˆDÔð !×2Ñ2ÐØˆØ—‘ˆà—‘ˆØˆ>ØˆFÙØ˜ ™‘àò 5�AÜ! &›\¨R¨D°1©HÑ4‘Fñ5ñ
 Ø”c˜&“k‘M�Ø�Q’3Ü! &›\¨R¨D°1©HÑ4‘Fà�Øò �AØ˜A‘I‘Dðàœ˜V›Ñ$�Ø�Q’3Ü! &›\¨R¨D°1©HÑ4�FØˆŒà—*‘*˜S‘.ˆØ—+‘+˜c‘/ˆØ—&‘&˜7Ñ"ˆØ—&‘&˜7Ñ"ˆà�>‰>˜_Ò,Ø‰HàˆHä‹Wˆà—_‘_ˆ
Ü˜Ÿ™Ó%ˆ
Ø×&Ñ&ˆâä˜“IˆEØˆ{Ø˜s‘{ EÑ)�Ø˜s‘{ EÑ)‘à˜c‘k�Ø˜c‘k�Ø˜3‘; Ñ%ˆCØ˜3‘; Ñ%ˆCÜ& xÓ0ó Z%‘	��6Ü(¨Ó0ó Y%‘G�A�eØ *¨e°hÑ.>Ñ ?�HÜ˜Z¨Ñ0Ó1�BØ˜$’wØ%-˜
Ø Ø! HÒ,Ø'˜Ø%™à%˜Ø'˜Ø!)�Jð #'§+¡+¨b°°:±¨oÑ">�Kð % g˜�BØ"×)Ñ)¨QÒ.à(*¨2©¨s¡{˜Ø*6¼Ñ*;¸EÑ*A˜Ø&1×&8Ñ&8˜Ø$ {´S¸Ó5IÑ'IÑI˜Ø$ {´S¸Ó5IÑ'IÑI˜à˜b ™f™*�CØ˜s™�BØ˜b ™f™*�CØ˜s™�BÜ˜6“{ Q’Ü$)¨"¨b°"°b¸"ÀbÐRUÐ`cÔ$d™	ä$)¨"¨b°"°b¸"ÀbÐRUÐ`cÐmqÔ$r˜	à*5×*?Ñ*?�IÔ'Ø,7×,CÑ,C�IÔ)Ø,7×,CÑ,C�IÔ)Ø0;×0KÑ0K�IÔ-à(×4Ñ4�FÚØ"$¤u¨[×-EÑ-EÓ'FÑ"F˜Ø" Q›;Ø6<¸iÒ6G¤V§]¢]ÌVÏ^É^˜FØ&'¬¨G«¡n˜GØ,-¨k×.GÑ.GÑ,G˜MØ*×;Ñ;¸XÒEØ'(¨¡¼¸gÀa¹iÓ8HÑ&H Ø'4¡à'4°Q¡¼¸gÀa¹iÓ8HÑ&H Ø'( Ø$& r¡E¬5°«>Ñ#9˜DØ#.×#8Ñ#8˜DØ26˜IÔ/Ü',¨W£~ò 0 Ø')¨C°©H¡} Ø')¨S°©U°D©LÑ'8 Ù&,¨T°$¸¸S¹±.Ó&A Ü#& v£;¨q¢=Ü/4°R¸¸RÀÀtÐUWÐadÐorÔ/s¡Hä/4°R¸¸RÀÀtÐUWÐadÐorð  }Aô  0B HØ58 Ô 2Ø7; Ô 4Ø78 Ô 4Ø !§¡ h¥ð0ð —E‘E˜)Ô$à˜Q”w ;×#6Ô#6¸;×;TÔ;TØ#×1Ñ1°!°BÓ7˜ÛØ,.¨r©E°3©;˜LØ.:¼2©o¸eÑ.C˜OØ*5×*AÑ*A˜KØ!(¨Ñ!4˜BØ!(¨Ñ!4˜BØ%,°°d·j±jÑ0@Ä3ÀÓCWÑ0WÐZeÑ0eÑ%f˜FØ%,°°d·k±kÑ0AÄCÈÓDXÑ0XÐ[fÑ0fÑ%g˜FÜ .¨t°D¸ÀfÈVÐT_Ó `˜AÙ0Ø5;ÀÐR^Ø24¸2ÀBÈRØ67·k±k³mñ/. ¤ñ " !žHòsY%òZ%ð| ˆ{Ø˜c‘k�Ø˜c‘k‘à˜c‘k�Ø˜c‘k�Ü$ XÓ.ó T‘��%Ø&¨%°(Ñ*:Ñ;�Ü˜ HÑ,Ó-�Ø�d’7Ø!)�JØØ Ò(Ø#�BØ!‘Bà!�BØ#�BØ%�
ð #Ÿk™k¨!¨J©,Ñ7�ð ! '�B�Ø×%Ñ%¨Ò*à$& r¡E¨3¡;�LØ&2´RÑ&7¸Ñ&=�OØ"-×"4Ñ"4�KØ  ;´°_Ó1EÑ#EÑE�BØ  ;´°_Ó1EÑ#EÑE�Bà�q’5Ü % b¨"¨g°r¸2ÀwÐX[ÐfiÔ j‘IØ˜’TÜ % b¨"¨g°r¸2ÀwÐX[ÐfiÐswÔ x�Ià&1×&;Ñ&;�	Ô#Ø(3×(?Ñ(?�	Ô%Ø(3×(?Ñ(?�	Ô%Ø,7×,GÑ,G�	Ô)à$×0Ñ0�ÚØ ¤5¨×)AÑ)AÓ#BÑB�GØ “{Ø28¸)Ò2C¤§¢ÌÏÉ˜Ø"#¤C¨£L¡.˜Ø()¨+×*CÑ*CÑ(C˜Ø&×7Ñ7¸ÒAØ#$ ]¡?´E¸'À!¹)Ó4DÑ"D˜CØ#0™Dà#0°¡?´E¸'À!¹)Ó4DÑ"D˜CØ#$˜DØ " 2¡¤u¨W£~Ñ5˜Ø*×4Ñ4˜Ø.2˜	Ô+Ü#(¨£>ò ,˜CØ#%¨¨D©¡=˜DØ#%¨¨Q©°©Ñ#4˜DÙ"(¨¨d°S¸±W©nÓ"=˜CØ  1šuÜ+0°°R¸À$ÈÐV]ÐgjÐuxÔ+y¡Ø!" A¢Ü+0°°R¸À$ÈÐV]ÐgjÐuxð  CGô  ,H Ø14˜HÔ.Ø37˜HÔ0Ø34˜HÔ0ØŸE™E (�Oð,ð —‘�iÔ ð ˜!”9 ×!4Ô!4¸×9RÔ9RØ$& r¡E¨3¡;�LØ&2´2¡o°eÑ&;�OØ"-×"9Ñ"9�KØ$¨¨d¯j©jÑ(8¼3¸Ó;OÑ(OÐR]Ñ(]Ñ^�FØ$¨¨d¯k©kÑ(9¼CÀÓ<PÑ(PÐS^Ñ(^Ñ_�FØ  Ñ,�BØ  Ñ,�BÜ& t¨F°1©I°lÀ6È&ÐQ\Ó]�AÙ(Ø-3¸È,Ø.0°rÀÈØ23·+±+³-ñ'*˜œñ ˜!–HðiTñl ¡Ü˜QÔàÒˆA�A—E‘E˜!•HÐàˆr&   c                 óX   — t        «       }|j                  | j                  «       «       |S ©N)r   ro   rÏ   )rR   rª   s     r'   ÚdrawzDoughnut.draw�  s#   € Ü‹GˆØ	�‰ˆd×ÑÓ Ô!Øˆr&   r%   rÑ   )r   r    r!   r#   r   ÚAttrMapValuer   r   r   r   r   r	   r
   r   r   r   r$   rG   rq   rv   rÏ   rÒ   r%   r&   r'   r)   r)   &   sv  „ Ùò 
Ñ,ð 
Ù˜Ð(WÕXð
á˜Ð(WÕXð
ñ ˜XÐ,hÕið
ñ ˜hÐ-lÕmð	
ñ
 ™HÐ&:Ð;UÐ%VÓWð  _Yõ  Zð
ñ Ð3Ð:nÕoð
ñ " (Ð1iÕjð
ñ !¡ {°OÓ!DÐKkÕlð
ñ ˜dÐ)RÕSð
ñ $ IÐ4lÕmð
ñ )¨ð  :Cð  RSõ  Tð
ñ " )Ð2uð  FGõ  Hð
ñ +¨>ð AõBð
ñ   ¡ zÓ 2Ð9gÕhð!
ñ" " (Ð1fÕgð#
€Hò(1ò4ó8#ò
IóVr&   r)   c                  ó"  — t        dd«      } t        «       }t        dddddd¬«      }t        j                  |_        d|_        | j                  |«       t        ddddd	d¬«      }t        j                  |_        d|_        | j                  |«       t        dddd	d
d¬«      }t        j                  |_        d|_        | j                  |«       t        dddd
dd¬«      }t        j                  |_        d|_        | j                  |«       | S )z-Make up something from the individual Sectorsé�  rU   é–   r   éx   r?   )r§   r¨   ÚradiusÚstartangledegreesÚendangledegreesr{   Néð   i  rA   )r   r   r   r   rj   rK   r�   ro   ÚgreenrM   Úgray)rb   rª   Ús1Ús2Ús3Ús4s         r'   Úsample1râ   ‡  sè   € ô 	��SÓ€AÜ‹€Aä	�s C°ÀqÐZ]ÐgjÔ	k€BÜ—‘€B„LØ€B„NØ‡E�Eˆ"„IÜ	�s C°ÀsÐ\_ÐilÔ	m€BÜ—‘€B„LØ€B„NØ‡E�Eˆ"„IÜ	�s C°ÀsÐ\_ÐilÔ	m€BÜ—‘€B„LØ€B„NØ‡E�Eˆ"„IÜ	�s C°ÀsÐ\_ÐilÔ	m€BÜ—‘€B„LØ€B„NØ‡E�Eˆ"„Ià€Hr&   c                  óž   — t        dd«      } t        «       }d|_        d|_        d|_        d|_        g d¢|_        | j                  |«       | S )zMake a simple demorÕ   rV   é,  rY   )r   r)   r*   r,   r-   r.   r/   ro   ©rb   rp   s     r'   Úsample2ræ      sJ   € ô 	��SÓ€Aä	‹€BØ€B„DØ€B„DØ€B„HØ€B„IÚ!€B„Gà‡E�Eˆ"„Ià€Hr&   c                  ó¸   — t        dd«      } t        «       }d|_        d|_        d|_        d|_        g d¢g d¢g|_        g d¢|_        | j                  |«       | S )zMake a more complex demorÕ   rV   rä   rY   ©rW   rZ   r[   r\   r^   )	r   r)   r*   r,   r-   r.   r/   r0   ro   rå   s     r'   Úsample3ré   °  sV   € ô 	��SÓ€AÜ	‹€BØ€B„DØ€B„DØ€B„HØ€B„IÚ"¢MÐ2€B„GÚ)€B„Ià‡E�Eˆ"„Ià€Hr&   c                  óÆ   — t        dd«      } t        «       }d|_        d|_        d|_        d|_        g d¢g d¢g|_        g d¢|_        d|_        | j                  |«       | S )z2Make a more complex demo with Label Overlap fixingrÕ   rV   rä   rY   rè   r^   T)
r   r)   r*   r,   r-   r.   r/   r0   r7   ro   rå   s     r'   Úsample4rë   À  s^   € ô 	��SÓ€AÜ	‹€BØ€B„DØ€B„DØ€B„HØ€B„IÚ"¢MÐ2€B„GÚ)€B„IØ€BÔà‡E�Eˆ"„Ià€Hr&   Ú__main__)Ú
drawToFilezdoughnut1.pdfzdoughnut2.pdfzdoughnut3.pdfN)-Ú__version__r"   Úmathr   r   r   Úreportlab.libr   Úreportlab.lib.validatorsr   r   r	   r
   r   r   r   r   r   r   Úreportlab.lib.attrmapÚreportlab.graphics.shapesr   r   r   Úreportlab.graphics.widgetbaser   Ú#reportlab.graphics.charts.piechartsr   r   r   r   Úreportlab.graphics.charts.areasr   Ú	functoolsr   r   r)   râ   ræ   ré   rë   r   Úreportlab.graphics.renderPDFrí   rb   r%   r&   r'   ú<module>rù      s¼   ðð €ð	€÷ Ñ Ý  ÷/÷ /÷ /ô $ß ;Ñ ;Ý Aß sÓ sÝ 4Ý ô	�ô 	ô^Ðô ^òBò2ò ò ð" ˆZÒå7Ù‹	€AÙˆq�/Ô"Ù‹	€AÙˆq�/Ô"Ù‹	€AÙˆq�/Õ"ð r&   