Ë
    ^ãjöI  ã                   óf  — 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   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)Ú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© ó    úd/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/reportlab/graphics/charts/doughnut.pyr   r      s   „ ññ ˜Oô �Hr%   r   c                   óf  — e Zd Z e eed¬«       eed¬«       eed¬«       eed¬«       e eeef«      d¬«       ee	d¬«       eed¬«       e e
d	d
«      d¬«       edd¬«       eed¬«       eedd¬«       eedd¬«       eed¬«       e ee«      d¬«      ¬«      Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚDoughnutz-X position of the chart within its container.)Údescz-Y position of the chart within its container.z:width of doughnut bounding box. Need not be same as width.z=height of doughnut bounding box.  Need not be same as height.z8list of numbers defining sector sizes; need not sum to 1z2optional list of labels to use for each data pointz6angle of first slice; like the compass, 0 is due NorthÚ	clockwiseÚanticlockwisez'clockwise' or 'anticlockwise'Nz'collection of sector descriptor objectsz6If true(default) use String not super duper WedgeLabelzFIf true check and attempt to fix
 standard label overlaps(default off)é   )r)   ÚadvancedUsagezAIf true attempt to make chart with labels along side and pointerszhNone or the fraction of the radius to be used as the inner hole.
If not a suitable default will be used.z,A class factory to use for non simple labels)ÚxÚyÚwidthÚheightÚdataÚlabelsÚ
startAngleÚ	directionÚslicesÚsimpleLabelsÚcheckLabelOverlapÚ
sideLabelsÚinnerRadiusFractionÚ
labelClassc                 ó´  — d| _         d| _        d| _        d| _        ddg| _        d | _        d| _        d| _        d| _        d| _	        d| _
        d | _        t        t        «      | _        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   éd   r,   éZ   r*   é   é   é   é   é   )r.   r/   r0   r1   r2   r3   r4   r5   r7   r8   r9   r:   r   r   r6   r   ÚdarkcyanÚ	fillColorÚ
bluevioletÚblueÚcyanÚpinkÚmagentaÚyellow)Úselfs    r&   Ú__init__zDoughnut.__init__9   sø   € ØˆŒØˆŒØˆŒ
ØˆŒØ�q�EˆŒ	ØˆŒØˆŒØ$ˆŒØˆÔØ!"ˆÔØˆŒØ#'ˆÔ ä-Ô.>Ó?ˆŒÜ#)§?¡?ˆ�‰�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   ©rQ   é   é   é(   rP   é<   ©ÚaÚbÚcÚdÚeÚfç      à?r@   r?   g      ü?r   r,   rA   rB   rC   )r   r(   r.   r/   r0   r1   r2   r3   r6   ÚstrokeWidthÚpopoutÚstrokeDashArrayÚlabelRadiusr   ÚredÚ	fontColorrD   rE   rF   rG   rH   Ú
aquamarineÚ	cadetblueÚ
lightcoralÚadd)rL   r\   Údns      r&   ÚdemozDoughnut.demoQ   sG  € Ü�C˜Óˆä‹ZˆØˆŒØˆŒØˆŒØˆŒ	Ú%ˆŒÚ-ˆŒ	à!ˆ�	‰	ÔØ ˆ�	‰	�!‰ÔØ#$ˆ�	‰	�!‰Ô Ø()¨! uˆ�	‰	�!‰Ô$Ø#'ˆ�	‰	�!‰Ô Ü!'§¡ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'§¡ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰ÔÜ!'×!1Ñ!1ˆ�	‰	�!‰ÔÜ!'×!2Ñ!2ˆ�	‰	�!‰Ôà	�‰ˆbŒ	Øˆr%   c                 ó²   — ddl m} t        t        ||d«      «      }t	        |«      dk\  xr t        t        d|z  fd„|«      «      xs t        |«      dgz  S )Nr   )ri   g:Œ0âŽyE>g     €v@c                 ó   — || z  S ©Nr$   )r.   r^   s     r&   ú<lambda>z(Doughnut.normalizeData.<locals>.<lambda>p   s
   € ÀÀ!Á€ r%   )Úoperatorri   Úfloatr   ÚabsÚlistÚmapÚlen)rL   r2   ri   Úsums       r&   ÚnormalizeDatazDoughnut.normalizeDatam   sP   € Ý Ü”F˜3˜t AÓ&Ó'ˆÜ�3‹x˜‰~ÒK¤$¤s°d¸3±hÒ+CÀTÓ'JÓ"KÒ\ÌsÐSWËyÐZ[ÐY\É}Ð\r%   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       @r+   r,   éÿÿÿÿg      @gñhãˆµøä>g     €f@)ÚyradiusÚradius1Úyradius1T)r{   r|   r}   ÚannularÚlightenÚnormalr_   )r.   r/   ÚangleÚrxÚryÚcxÚcyÚbounds)1r2   r   rw   Úappendru   ÚmaxÚ_seriesCountr8   r3   rs   r0   r1   r.   r/   r5   r   r4   r6   r:   Ú	enumeraterr   ra   r   r   r   r   rE   ÚstrokeColorr`   rb   ÚshadingKindrq   ÚshadingAngler   ÚWhiterÚBlackerÚintÚshadingAmountÚshadingDirectionÚrangeri   ÚvisibleÚlabel_visibleÚgetSeriesNamerc   r   Ú	getBoundsÚ	_origdatar   )@rL   r2   ÚmultiÚnormDataÚnÚlÚtr8   ÚLÚL_addr3   ÚmÚiÚtlabÚxradiusr{   ÚcenterxÚcenteryÚwhichWayÚgr4   Ú
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Útextrc   r‚   rƒ   ÚlabelXÚlabelYs@                                                                   r&   ÚmakeSectorszDoughnut.makeSectorsr   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 rn   )r   ri   rÌ   )rL   r§   s     r&   ÚdrawzDoughnut.draw}  s#   € Ü‹GˆØ	�‰ˆd×ÑÓ Ô!Øˆr%   rn   )r   r   r    r"   ÚAttrMapValuer   r   r   r   r   r	   r
   r   r   r   r#   rM   rk   rw   rÌ   rÎ   r$   r%   r&   r(   r(   %   sÿ   „ ÙÙ˜Ð(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ô!
€Hò&1ò0ó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é�  rO   é–   r   éx   r=   )r¤   r¥   ÚradiusÚstartangledegreesÚendangledegreesr|   Néð   i  ih  )r   r   r   r   rd   rE   r‹   ri   ÚgreenrG   Úgray)r\   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Ñ   rP   é,  rS   )r   r(   r.   r/   r0   r1   r2   ri   ©r\   rj   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Ñ   rP   rà   rS   ©rQ   rT   rU   rV   rX   )	r   r(   r.   r/   r0   r1   r2   r3   ri   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Ñ   rP   rà   rS   rä   rX   T)
r   r(   r.   r/   r0   r1   r2   r3   r8   ri   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   Ú	functoolsr   r   r(   rÞ   râ   rå   rç   r   Úreportlab.graphics.renderPDFré   r\   r$   r%   r&   ú<module>rô      s¹   ðð €ð	€÷ Ñ Ý  ÷/÷ /÷ /ô $ß ;Ñ ;Ý Aß sÓ sÝ ô	�ô 	ô[Ðô [ò|
ò2ò ò ð" ˆZÒå7Ù‹	€AÙˆq�/Ô"Ù‹	€AÙˆq�/Ô"Ù‹	€AÙˆq�/Õ"ð r%   