ó
    {ñ:i£U  ã                   ó¼   • S SK Jr  S SKrS SKrS SKrS SKJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr   " S S\R(                  5      r " S S5      r " S	 S
\5      rg)é    )ÚMutableMappingN)Ú_apiÚ
_docstring)Úallow_rasterizationc                   ó  ^ • \ rS rSrSrS r\R                  U 4S j5       rS r	S r
S rS rU 4S	 jrSU 4S
 jjrS rS rS rS rS rS r\U 4S j5       rS rS rS rSS jrS r\S 5       r\S 5       r\S 5       rS r Sr!U =r"$ )ÚSpineé   aM  
An axis spine -- the line noting the data area boundaries.

Spines are the lines connecting the axis tick marks and noting the
boundaries of the data area. They can be placed at arbitrary
positions. See `~.Spine.set_position` for more information.

The default position is ``('outward', 0)``.

Spines are subclasses of `.Patch`, and inherit much of their behavior.

Spines draw a line, a circle, or an arc depending on if
`~.Spine.set_patch_line`, `~.Spine.set_patch_circle`, or
`~.Spine.set_patch_arc` has been called. Line-like is the default.

For examples see :ref:`spines_examples`.
c                 ó   • g)Nr   © ©Úselfs    ÚT/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/matplotlib/spines.pyÚ__str__ÚSpine.__str__    s   € Øó    c                 ó„  >• [         TU ]  " S0 UD6  Xl        U R                  U R                  R	                  SS95        X l        U R                  S5        U R                  [        R                  S   5        U R                  [        R                  S   5        U R                  S5        SU l        U R                  S5        U R                  U R                  R                  5        SU l        SU l        [$        R&                  " [(        R*                  US	9  X0l        S
U l        [0        R2                  " 5       U l        g)aB  
Parameters
----------
axes : `~matplotlib.axes.Axes`
    The `~.axes.Axes` instance containing the spine.
spine_type : str
    The spine type.
path : `~matplotlib.path.Path`
    The `.Path` instance used to draw the spine.

Other Parameters
----------------
**kwargs
    Valid keyword arguments are:

    %(Patch:kwdoc)s
F©ÚrootÚnonezaxes.edgecolorzaxes.linewidthÚ
projectingNg      @)ÚpathÚliner   )ÚsuperÚ__init__ÚaxesÚ
set_figureÚ
get_figureÚ
spine_typeÚset_facecolorÚset_edgecolorÚmplÚrcParamsÚset_linewidthÚset_capstyleÚaxisÚ
set_zorderÚset_transformÚ	transDataÚ_boundsÚ	_positionr   Úcheck_isinstanceÚmpathÚPathÚ_pathÚ_patch_typeÚmtransformsÚIdentityTransformÚ_patch_transform)r   r   r   r   ÚkwargsÚ	__class__s        €r   r   ÚSpine.__init__#   sú   ø€ ô& 	‰ÒÑ"˜6Ò"ØŒ	Ø�‰˜Ÿ	™	×,Ñ,°%Ð,Ð8Ô9Ø$ŒØ×Ñ˜6Ô"Ø×Ñœ3Ÿ<™<Ð(8Ñ9Ô:Ø×Ñœ3Ÿ<™<Ð(8Ñ9Ô:Ø×Ñ˜,Ô'ØˆŒ	à�‰˜ÔØ×Ñ˜4Ÿ9™9×.Ñ.Ô/àˆŒð
 ˆŒÜ×ÒœeŸj™j¨tÒ4ØŒ
ð "ˆÔô !,× =Ò =Ó ?ˆÕr   c                 óþ   • SU l         Xl        US-  U l        US-  U l        X0l        X@l        [        R                  R                  X45      U l	        U R                  U R                  R                  5        SU l        g)zSet the spine to be arc-like.Úarcé   TN)r/   Ú_centerÚ_widthÚ_heightÚ_theta1Ú_theta2r,   r-   r7   r.   r'   r   Ú	transAxesÚstale)r   ÚcenterÚradiusÚtheta1Útheta2s        r   Úset_patch_arcÚSpine.set_patch_arcX   sb   € à ˆÔØŒØ˜q‘jˆŒØ ‘zˆŒØŒØŒÜ—Z‘Z—^‘^ FÓ3ˆŒ
à×Ñ˜4Ÿ9™9×.Ñ.Ô/Øˆ�
r   c                 óž   • SU l         Xl        US-  U l        US-  U l        U R	                  U R
                  R                  5        SU l        g)zSet the spine to be circular.Úcircler8   TN)r/   r9   r:   r;   r'   r   r>   r?   )r   r@   rA   s      r   Úset_patch_circleÚSpine.set_patch_circlee   sD   € à#ˆÔØŒØ˜q‘jˆŒØ ‘zˆŒà×Ñ˜4Ÿ9™9×.Ñ.Ô/Øˆ�
r   c                 ó    • SU l         SU l        g)zSet the spine to be linear.r   TN)r/   r?   r   s    r   Úset_patch_lineÚSpine.set_patch_lineo   s   € à!ˆÔØˆ�
r   c                 ó†  • U R                   S;   d   eU R                  U R                  S   5      U R                  U R                  S   5      4nU R                  U R                  5      nU R                  U R
                  5      n[        R                  " 5       R                  US-  US-  5      R                  " U6 U l
        g)zé
Notes
-----
This cannot be called until after this has been added to an Axes,
otherwise unit conversion will fail. This makes it very important to
call the accessor method and not directly access the transformation
member variable.
©r7   rG   r   é   ç      à?N)r/   Úconvert_xunitsr9   Úconvert_yunitsr:   r;   r0   ÚAffine2DÚscaleÚ	translater2   )r   r@   ÚwidthÚheights       r   Ú_recompute_transformÚSpine._recompute_transformu   s«   € ð ×ÑÐ#4Ó4Ð4Ð4Ø×%Ñ% d§l¡l°1¡oÓ6Ø×%Ñ% d§l¡l°1¡oÓ6ð8ˆà×#Ñ# D§K¡KÓ0ˆØ×$Ñ$ T§\¡\Ó2ˆÜ +× 4Ò 4Ó 6ß‰U�5˜3‘; ¨¡Ó-ß‰Yð!àð! ˆÕr   c                 óx   >• U R                   S;   a  U R                  5         U R                  $ [        TU ]  5       $ )NrN   )r/   rX   r2   r   Úget_patch_transform)r   r4   s    €r   r[   ÚSpine.get_patch_transform‡   s8   ø€ Ø×ÑÐ0Ó0Ø×%Ñ%Ô'Ø×(Ñ(Ð(ä‘7Ñ.Ó0Ð0r   c                 ó4  >• U R                  5         [        TU ]	  US9nU R                  b  U R                  R	                  5       (       d  U$ U/nU R                  R                  5       n[        [        1 Uk1 U R                  R                  k-  5      S5      n[        [        1 Uk1 U R                  R                  k-  5      S5      nXV4 GH©  nUc  M	  UR                  5       nUR                  n	UR                  n
U
S:X  a  SnSnOU
S:X  a  SnSnOSnSnU R                  SS	9R                  nX¹-  S
-  U-  nXÉ-  S
-  U-  nUR                  R	                  5       (       aq  U R                   S:X  a)  UR"                  U-
  Ul        UR$                  U-   Ul        O8U R                   S:X  a(  UR&                  U-
  Ul        UR(                  U-   Ul        UR*                  R	                  5       (       aq  U R                   S:X  a)  UR$                  U-   Ul        UR"                  U-
  Ul        O8U R                   S:X  a(  UR(                  U-   Ul        UR&                  U-
  Ul        UR-                  U5        GM¬     [.        R0                  R3                  U5      $ )zÊ
Return the window extent of the spines in display space, including
padding for ticks (but not their labels)

See Also
--------
matplotlib.axes.Axes.get_tightbbox
matplotlib.axes.Axes.get_window_extent
)ÚrendererNÚoutrO   r   ÚinrP   Tr   éH   ÚleftÚbottomÚrightÚtop)Ú_adjust_locationr   Úget_window_extentr%   Úget_visibleÚ_update_ticksÚnextÚiterÚ
majorTicksÚ
minorTicksÚfrozenÚ_sizeÚ_tickdirr   ÚdpiÚ	tick1liner   Úx0Úx1Úy0Úy1Ú	tick2lineÚappendr0   ÚBboxÚunion)r   r^   ÚbbÚbboxesÚdrawn_ticksÚ
major_tickÚ
minor_tickÚtickÚbb0ÚticklÚtickdirÚpadoutÚpadinrq   r4   s                 €r   rg   ÚSpine.get_window_extentŽ   s=  ø€ ð 	×ÑÔÜ‰WÑ&°Ð&Ð9ˆØ�9‰9Ñ D§I¡I×$9Ñ$9×$;Ñ$;ØˆIØ�ˆØ—i‘i×-Ñ-Ó/ˆäœ$˜~ ˜~Ð0G°$·)±)×2FÑ2FÐ0GÑGÓHÈ$ÓOˆ
Üœ$˜~ ˜~Ð0G°$·)±)×2FÑ2FÐ0GÑGÓHÈ$ÓOˆ
ØÔ,ˆDØ‰|ÙØ—)‘)“+ˆCØ—J‘JˆEØ—m‘mˆGØ˜%ÓØ�Ø‘Ø˜D“Ø�Ø‘à�Ø�Ø—/‘/ t�/Ð,×0Ñ0ˆCØ‘^ bÑ(¨3Ñ.ˆFØ‘M BÑ&¨Ñ,ˆEà�~‰~×)Ñ)×+Ñ+Ø—?‘? fÓ,Ø ŸV™V f™_�C”FØ ŸV™V e™^�C•FØ—_‘_¨Ó0Ø ŸV™V f™_�C”FØ ŸV™V e™^�C”Fà�~‰~×)Ñ)×+Ñ+Ø—?‘? gÓ-Ø ŸV™V f™_�C”FØ ŸV™V e™^�C•FØ—_‘_¨Ó-Ø ŸV™V f™_�C”FØ ŸV™V f™_�C”FØ�M‰M˜#×ñE -ôH ×Ñ×%Ñ% fÓ-Ð-r   c                 ó   • U R                   $ ©N)r.   r   s    r   Úget_pathÚSpine.get_pathÈ   ó   € Ø�z‰zÐr   c                 ód   • U R                   c#  SU l         U R                  U R                   5        g g )N)Úoutwardç        )r*   Úset_positionr   s    r   Ú_ensure_position_is_setÚSpine._ensure_position_is_setË   s*   € Ø�>‰>Ñ!à-ˆDŒNØ×Ñ˜dŸn™nÕ-ð "r   c                 ó   • Xl         SU l        g)z¦
Register an axis.

An axis should be registered with its corresponding spine from
the Axes instance. This allows the spine to clear any axis
properties when needed.
TN)r%   r?   )r   r%   s     r   Úregister_axisÚSpine.register_axisÑ   s   € ð Œ	Øˆ�
r   c                 ót   • U R                  5         U R                  b  U R                  R                  5         gg)zClear the current spine.N)Ú_clearr%   Úclearr   s    r   r—   ÚSpine.clearÜ   s(   € à�‰ŒØ�9‰9Ñ Ø�I‰I�O‰OÕð !r   c                 ó   • SU l         g)zÂ
Clear things directly related to the spine.

In this way it is possible to avoid clearing the Axis as well when calling
from library code where it is known that the Axis is cleared separately.
N)r*   r   s    r   r–   ÚSpine._clearâ   s   € ð ˆ�r   c                 óÜ  • U R                   S:X  a  gU R                  b  U R                  u  pO~U R                   S;   a#  U R                  R                  R                  u  pOKU R                   S;   a#  U R                  R                  R
                  u  pO[        SU R                    35      eU R                  S:X  Ga‚  U R                   S;   GaY   U R                  R                  5       n U R                  R                  5       nX-  U-   nX#-  U-   nX:”  a  X!p![        R                  R                  [        R                  " U5      [        R                  " U5      5      U l        U R                   S
:X  a°  U R"                  c  [$        R&                  " 5       nOU R"                  R)                  5       nUR+                  U R                  R                  R                  5      u  pg U R                  R-                  5       nUR+                  U5      nXh-
  Xx-
  -  n	X�l        X�l        gg[        SU R                   -  5      eU R                   R2                  n
U
R4                  S:X  d   S5       eU R                   S;   a	  XS'   X*S'   gU R                   S;   a	  XS'   X*S'   g[        SU R                   -  5      e! [         a    Sn GNÜf = f! [         a    S	n GNÔf = f! [         a    Un NÚf = f)z4Automatically set spine bounds to the view interval.rG   N©rb   rd   ©re   rc   úunknown spine spine_type: r7   ©rc   re   rO   r   rc   z#unable to set bounds for spine "%s")r8   r8   zunexpected vertices shape©r   rO   )rO   rO   )r   r   ©rO   r   )r   r)   r   ÚviewLimÚ	intervalyÚ	intervalxÚ
ValueErrorr/   Úget_theta_directionÚAttributeErrorÚget_theta_offsetr,   r-   r7   ÚnpÚrad2degr.   r%   r0   r1   Úget_transformÚ	transformÚget_roriginr;   r:   ÚverticesÚshape)r   ÚlowÚhighÚ	directionÚoffsetÚtrÚrminÚrmaxÚroriginÚscaled_diameterÚv1s              r   rf   ÚSpine._adjust_locationë   s—  € ð �?‰?˜hÓ&Øà�<‰<Ñ#ØŸ™‰IˆC�Ø�_‰_Ð 1Ó1ØŸ	™	×)Ñ)×3Ñ3‰IˆC�Ø�_‰_Ð 1Ó1ØŸ	™	×)Ñ)×3Ñ3‰IˆC�äÐ9¸$¿/¹/Ð9JÐKÓLÐLà×Ñ˜uÔ$Ø�‰Ð"3Ô3ð"Ø $§	¡	× =Ñ =Ó ?�IðØ!ŸY™Y×7Ñ7Ó9�Fð ‘o¨Ñ.�ØÑ'¨&Ñ0�Ø“:Ø $˜ä"ŸZ™ZŸ^™^¬B¯JªJ°s«O¼R¿ZºZÈÓ=MÓN�”
à—?‘? hÓ.Ø—y‘yÑ(Ü(×:Ò:Ó<™à!ŸY™Y×4Ñ4Ó6˜Ø!#§¡¨d¯i©i×.?Ñ.?×.IÑ.IÓ!J‘J�Dð8Ø"&§)¡)×"7Ñ"7Ó"9˜ð #%§,¡,¨wÓ"7˜Ø'+¡~¸$¹.Ñ&I�OØ#2”LØ"1•Kð /ô" !Ð!FØ!%§¡ñ"1ó 2ð 2ð —‘×$Ñ$ˆBØ—8‘8˜vÓ%ÐBÐ'BÓBÐ%Ø�‰Ð"3Ó3Ø�4‘Ø�4’Ø—‘Ð$5Ó5Ø�4‘Ø�4’ä Ð!FØ!%§¡ñ"1ó 2ð 2øôU &ó "Ø !“Ið"ûô &ó Ø“Fðûô" *ó 'Ø"&šð'ús6   ÃJ6 Ã*K	 Ç%K Ê6KËKË	KËKËK+Ë*K+c                 óT   >• U R                  5         [        TU ]	  U5      nSU l        U$ )NF)rf   r   Údrawr?   )r   r^   Úretr4   s      €r   r¼   Ú
Spine.draw+  s)   ø€ à×ÑÔÜ‰g‰l˜8Ó$ˆØˆŒ
Øˆ
r   c                 ó  • US;   a  O.[        U5      S:w  a  [        S5      eUS   S;  a  [        S5      eXl        U R                  U R	                  5       5        U R
                  b  U R
                  R                  5         SU l        g)	aA  
Set the position of the spine.

Spine position is specified by a 2 tuple of (position type,
amount). The position types are:

* 'outward': place the spine out from the data area by the specified
  number of points. (Negative values place the spine inwards.)
* 'axes': place the spine at the specified Axes coordinate (0 to 1).
* 'data': place the spine at the specified data coordinate.

Additionally, shorthand notations define a special positions:

* 'center' -> ``('axes', 0.5)``
* 'zero' -> ``('data', 0.0)``

Examples
--------
:doc:`/gallery/spines/spine_placement_demo`
)r@   Úzeror8   z&position should be 'center' or 2-tupler   )r�   r   Údataz:position[0] should be one of 'outward', 'axes', or 'data' NT)Úlenr¥   r*   r'   Úget_spine_transformr%   Úreset_ticksr?   )r   Úpositions     r   r�   ÚSpine.set_position2  s„   € ð* Ð)Ó)Øä�8‹} Ó!Ü Ð!IÓJÐJØ˜‰{Ð"=Ó=Ü ð "6ó 7ð 7à!ŒØ×Ñ˜4×3Ñ3Ó5Ô6Ø�9‰9Ñ Ø�I‰I×!Ñ!Ô#Øˆ�
r   c                 ó:   • U R                  5         U R                  $ )zReturn the spine position.)r�   r*   r   s    r   Úget_positionÚSpine.get_positionU  s   € à×$Ñ$Ô&Ø�~‰~Ðr   c                 óœ  • U R                  5         U R                  n[        U[        5      (       a  US:X  a  SnOUS:X  a  Sn[	        U5      S:X  d   S5       eUu  p#[
        R                  " / SQUS9  U R                  S	;   a  U R                  R                  S
S9nOCU R                  S;   a  U R                  R                  S
S9nO[        SU R                  < 35      eUS:X  aj  US:X  a  U$ SSSSS.U R                     nU[        R                  " U5      -  S-  nU[        R                  " / UQU R!                  SS9R"                  P76 -   $ US:X  ao  U R                  S	;   a'  [        R$                  R'                  SSSSUS5      U-   $ U R                  S;   a'  [        R$                  R'                  SSSSSU5      U-   $ gUS:X  Ga   U R                  S;   a  US-  nU R                  S	;   ae  [        R(                  " [        R$                  " 5       R+                  US5      U R                  R,                  -   U R                  R,                  5      $ U R                  S;   ae  [        R(                  " U R                  R,                  [        R$                  " 5       R+                  SU5      U R                  R,                  -   5      $ gg)zReturn the spine transform.r@   )r   rP   rÀ   )rÁ   r   r8   zposition should be 2-tuple)r   r�   rÁ   )Úposition_typerœ   Úgrid)Úwhichr�   rž   r�   r   )éÿÿÿÿr   r¡   )r   rÎ   r    )rb   rd   rc   re   ra   Fr   r   rO   rŸ   rÁ   )rd   re   N)r�   r*   Ú
isinstanceÚstrrÂ   r   Úcheck_in_listr   r   Úget_yaxis_transformÚget_xaxis_transformr¥   r©   Úarrayr0   ÚScaledTranslationr   Údpi_scale_transrS   Úfrom_valuesÚblended_transform_factoryrU   r(   )r   rÅ   rË   ÚamountÚbase_transformÚ
offset_vecÚoffset_dotss          r   rÃ   ÚSpine.get_spine_transformZ  s¼  € à×$Ñ$Ô&à—>‘>ˆÜ�h¤×$Ñ$Ø˜8Ó#Ø(‘Ø˜VÓ#Ø&�Ü�8‹} Ó!Ð?Ð#?Ó?Ð!Ø (ÑˆÜ×ÒÒ6Ø)6ò	8à�?‰?Ð/Ó/Ø!ŸY™Y×:Ñ:ÀÐ:ÐH‰NØ�_‰_Ð 1Ó1Ø!ŸY™Y×:Ñ:ÀÐ:ÐH‰NäÐ9¸$¿/¹/Ñ9LÐMÓNÐNà˜IÓ%Ø˜‹{Ø%Ð%à&-¸Ø(/¸ñ à $§¡ñ1�
ð %¤r§x¢x°
Ó';Ñ;¸bÑ@�Ø&Ü%×7Ò7ð WØ(ðWØ*.¯/©/¸u¨/Ð*E×*UÑ*UòWñWð Xð ˜fÓ$Ø�‰Ð"3Ó3ä#×,Ñ,×8Ñ8¸¸A¸qÀ!ÀVÈQÓOØ(ñ)ð *à—‘Ð$5Ó5ä#×,Ñ,×8Ñ8¸¸A¸qÀ!ÀQÈÓOØ(ñ)ð *ð 6ð ˜fÔ$Ø�‰Ð"2Ó2ð ˜!‘�Ø�‰Ð"3Ó3Ü"×<Ò<Ü×(Ò(Ó*×4Ñ4°V¸QÓ?Ø—i‘i×)Ñ)ñ*à—I‘I×'Ñ'ó)ð )ð —‘Ð$5Ó5Ü"×<Ò<Ø—I‘I×'Ñ'Ü×(Ò(Ó*×4Ñ4°Q¸Ó?Ø—i‘i×)Ñ)ñ*ó+ð +ð 6ð %r   c                 óæ   • U R                   S:X  a  [        S5      eUc  [        R                  " U5      (       a  Uu  pU R	                  5       =(       d    Su  p4Uc  UnUc  UnX4U l        SU l        g)aŠ  
Set the spine bounds.

Parameters
----------
low : float or None, optional
    The lower spine bound. Passing *None* leaves the limit unchanged.

    The bounds may also be passed as the tuple (*low*, *high*) as the
    first positional argument.

    .. ACCEPTS: (low: float, high: float)

high : float or None, optional
    The higher spine bound. Passing *None* leaves the limit unchanged.
rG   z5set_bounds() method incompatible with circular spinesN©NNT)r   r¥   r©   ÚiterableÚ
get_boundsr)   r?   )r   r°   r±   Úold_lowÚold_highs        r   Ú
set_boundsÚSpine.set_bounds•  st   € ð" �?‰?˜hÓ&ÜØGóIð Ià‰<œBŸKšK¨×,Ñ,Ø‰IˆCØ ŸO™OÓ-×=°ÑˆØ‰;ØˆCØ‰<ØˆDØ�{ˆŒØˆ�
r   c                 ó   • U R                   $ )zGet the bounds of the spine.)r)   r   s    r   rá   ÚSpine.get_bounds³  s   € à�|‰|Ðr   c                 óx  • US:X  a  [         R                  " SS/5      nOkUS:X  a  [         R                  " SS/5      nOLUS:X  a  [         R                  " SS/5      nO-US:X  a  [         R                  " SS/5      nO[        S	U-  5      eU " XU40 UD6nUR                  [        R
                  S
U 3   5        U$ )z#Create and return a linear `Spine`.rb   )rŽ   ç+‡ÙÎ÷ï?rd   )ç      ð?ré   rc   )ré   rŽ   re   )ré   rê   z"unable to make path for spine "%s"zaxes.spines.)r,   r-   r¥   Úset_visibler!   r"   )Úclsr   r   r3   r   Úresults         r   Úlinear_spineÚSpine.linear_spine·  sµ   € ð ˜ÓÜ—:’:˜|¨\Ð:Ó;‰DØ˜7Ó"Ü—:’:˜|¨\Ð:Ó;‰DØ˜8Ó#Ü—:’:˜|¨\Ð:Ó;‰DØ˜5Ó Ü—:’:˜|¨\Ð:Ó;‰DäÐAÀJÑNÓOÐOÙ�T tÑ6¨vÑ6ˆØ×Ñœ3Ÿ<™<¨,°z°lÐ(CÑDÔEàˆr   c                 ó|   • [         R                  R                  XV5      nU " XU40 UD6n	U	R                  X4XV5        U	$ )z!Create and return an arc `Spine`.)r,   r-   r7   rD   )
rì   r   r   r@   rA   rB   rC   r3   r   rí   s
             r   Ú	arc_spineÚSpine.arc_spineÊ  s<   € ô �z‰z�~‰~˜fÓ-ˆÙ�T tÑ6¨vÑ6ˆØ×Ñ˜V¨VÔ<Øˆr   c                 ó|   • [         R                  R                  5       nSnU " XU40 UD6nUR                  X#5        U$ )z%Create and return a circular `Spine`.rG   )r,   r-   Úunit_circlerH   )rì   r   r@   rA   r3   r   r   rí   s           r   Úcircular_spineÚSpine.circular_spineÓ  s?   € ô �z‰z×%Ñ%Ó'ˆØˆ
Ù�T tÑ6¨vÑ6ˆØ×Ñ Ô/Øˆr   c                 ó4   • U R                  U5        SU l        g)a  
Set the edgecolor.

Parameters
----------
c : :mpltype:`color`

Notes
-----
This method does not modify the facecolor (which defaults to "none"),
unlike the `.Patch.set_color` method defined in the parent class.  Use
`.Patch.set_facecolor` to set the facecolor.
TN)r    r?   )r   Úcs     r   Ú	set_colorÚSpine.set_colorÜ  s   € ð 	×Ñ˜1ÔØˆ�
r   )r)   r9   r;   r2   r/   r.   r*   r<   r=   r:   r   r%   r   r?   rˆ   rß   )#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Úinterpdr   rD   rH   rK   rX   r[   rg   r‰   r�   r“   r—   r–   rf   r   r¼   r�   rÈ   rÃ   rä   rá   Úclassmethodrî   rñ   rõ   rù   Ú__static_attributes__Ú__classcell__)r4   s   @r   r   r      sÝ   ø† ñò"ð ×Ñô2@ó ð2@òhòòò õ$1÷8.òtò.ò	òòò>2ð@ ôó ðò!òFò
9+ôvò<ð ñó ðð$ ñó ðð ñó ð÷ð r   r   c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚSpinesProxyiî  aO  
A proxy to broadcast ``set_*()`` and ``set()`` method calls to contained `.Spines`.

The proxy cannot be used for any other operations on its members.

The supported methods are determined dynamically based on the contained
spines. If not all spines support a given method, it's executed only on
the subset of spines that support it.
c                 ó   • Xl         g rˆ   ©Ú_spine_dict)r   Ú
spine_dicts     r   r   ÚSpinesProxy.__init__ø  s   € Ø%Õr   c                 óH  • U R                   R                  5        Vs/ s H  n[        X!5      (       d  M  UPM     nnUS:w  a  UR                  S5      (       a  U(       d  [	        SU S35      eS n[
        R                  " XCU5      nUS   R                  Ul        U$ s  snf )NÚsetÚset_z''SpinesProxy' object has no attribute 'Ú'c                 ó8   • U  H  n[        XA5      " U0 UD6  M     g rˆ   )Úgetattr)Ú_targetsÚ	_funcnameÚargsr3   Úspines        r   ÚxÚ"SpinesProxy.__getattr__.<locals>.x  s   € Û!�Ü˜Ô)¨4Ð:°6Ô:ò "r   r   )r  ÚvaluesÚhasattrÚ
startswithr§   Ú	functoolsÚpartialrÿ   )r   Únamer  Úbroadcast_targetsr  s        r   Ú__getattr__ÚSpinesProxy.__getattr__û  sŸ   € Ø04×0@Ñ0@×0GÑ0GÔ0Ió 6Ò0I uÜ '¨× 4÷ #Ñ0IÐð 6à�E‹M $§/¡/°&×"9Ñ"9ÖBSÜ Ø9¸$¸¸qÐAóCð Cò	;ô ×Ò˜a°DÓ9ˆØ% aÑ(×0Ñ0ˆŒ	Øˆùò6s
   �BµBc                 óÄ   • / nU R                   R                  5        H$  nUR                  S [        U5       5       5        M&     [	        [        [        U5      5      5      $ )Nc              3   óT   #   • U  H  oR                  S 5      (       d  M  Uv •  M      g7f)r  N)r  )Ú.0r  s     r   Ú	<genexpr>Ú&SpinesProxy.__dir__.<locals>.<genexpr>  s#   é € ð LÚ%/˜T·?±?À6×3J÷ ™Ú%/ùs   ‚(Ÿ	()r  r  ÚextendÚdirÚlistÚsortedr  )r   Únamesr  s      r   Ú__dir__ÚSpinesProxy.__dir__	  sV   € ØˆØ×%Ñ%×,Ñ,Ö.ˆEØ�L‰Lñ LÜ%(¨¤ZóLö Lñ /ô ”Fœ3˜u›:Ó&Ó'Ð'r   r  N)	rû   rü   rý   rþ   rÿ   r   r  r*  r  r   r   r   r  r  î  s   † ñò&òõ(r   r  c                   ó^   • \ rS rSrSrS r\S 5       rS rS r	S r
S rS	 rS
 rS rS rSrg)ÚSpinesi  a–  
The container of all `.Spine`\s in an Axes.

The interface is dict-like mapping names (e.g. 'left') to `.Spine` objects.
Additionally, it implements some pandas.Series-like features like accessing
elements by attribute::

    spines['top'].set_visible(False)
    spines.top.set_visible(False)

Multiple spines can be addressed simultaneously by passing a list::

    spines[['top', 'right']].set_visible(False)

Use an open slice to address all spines::

    spines[:].set_visible(False)

The latter two indexing methods will return a `SpinesProxy` that broadcasts all
``set_*()`` and ``set()`` calls to its members, but cannot be used for any other
operation.
c                 ó   • Xl         g rˆ   ©Ú_dict)r   r3   s     r   r   ÚSpines.__init__(  s   € Ø�
r   c                 ó   • U " S0 UD6$ ©Nr   r   )rì   Úds     r   Ú	from_dictÚSpines.from_dict+  s   € á‰x�Q‰xˆr   c                 ó   • U R                   $ rˆ   r/  r   s    r   Ú__getstate__ÚSpines.__getstate__/  r‹   r   c                 ó(   • U R                   " S0 UD6  g r3  )r   )r   Ústates     r   Ú__setstate__ÚSpines.__setstate__2  s   € Ø�ŠÑ˜Ór   c                 ó\   •  U R                   U   $ ! [         a    [        SU S35      ef = f)Nz$'Spines' object does not contain a 'z' spine)r0  ÚKeyErrorr§   )r   r  s     r   r  ÚSpines.__getattr__5  sC   € ð	FØ—:‘:˜dÑ#Ð#øÜó 	FÜ Ø6°t°f¸GÐDóFð Fð	Fús   ‚ ‘+c                 ó^  • [        U[        5      (       aƒ  U Vs/ s H  o"U R                  ;  d  M  UPM     nnU(       a  [        SR	                  U5      5      e[        U R                  R                  5        VVs0 s H  u  p$X!;   d  M  X$_M     snn5      $ [        U[        5      (       a  [        S5      e[        U[        5      (       aG  UR                  c/  UR                  c"  UR                  c  [        U R                  5      $ [        S5      eU R                  U   $ s  snf s  snnf )Nz, z/Multiple spines must be passed as a single listzYSpines does not support slicing except for the fully open slice [:] to access all spines.)rÏ   r'  r0  r?  Újoinr  ÚitemsÚtupler¥   ÚsliceÚstartÚstopÚstep)r   ÚkeyÚkÚunknown_keysÚvs        r   Ú__getitem__ÚSpines.__getitem__<  s   € Ü�cœ4× Ñ Ù'*ÓB¢s !°t·z±zÑ.AŸA¡sˆLÐBÞÜ˜tŸy™y¨Ó6Ó7Ð7Ü°·±×1AÑ1AÔ1Cô  -Ò1C©¨Ø#$¡8ó !% ¢Ñ1Cò  -ó .ð .ä�cœ5×!Ñ!ÜÐNÓOÐOÜ�cœ5×!Ñ!Ø�y‰yÑ  S§X¡XÑ%5¸#¿(¹(Ñ:JÜ" 4§:¡:Ó.Ð.ä ð;ó<ð <ð �z‰z˜#‰Ðùò Cùó -s   šD$±D$Á<D)
ÂD)
c                 ó    • X R                   U'   g rˆ   r/  )r   rI  Úvalues      r   Ú__setitem__ÚSpines.__setitem__N  s   € à�
‰
�3Šr   c                 ó   • U R                   U	 g rˆ   r/  )r   rI  s     r   Ú__delitem__ÚSpines.__delitem__R  s   € à�J‰J�s‰Or   c                 ó,   • [        U R                  5      $ rˆ   )rk   r0  r   s    r   Ú__iter__ÚSpines.__iter__V  s   € Ü�D—J‘JÓÐr   c                 ó,   • [        U R                  5      $ rˆ   )rÂ   r0  r   s    r   Ú__len__ÚSpines.__len__Y  s   € Ü�4—:‘:‹Ðr   r/  N)rû   rü   rý   rþ   rÿ   r   r  r5  r8  r<  r  rM  rQ  rT  rW  rZ  r  r   r   r   r-  r-    sI   † ñò,ð ñó ðòòòFòò$ òò õr   r-  )Úcollections.abcr   r  Únumpyr©   Ú
matplotlibr!   r   r   Úmatplotlib.artistr   Úmatplotlib.transformsÚ
transformsr0   Úmatplotlib.patchesÚpatchesÚmpatchesÚmatplotlib.pathr   r,   ÚPatchr   r  r-  r   r   r   Ú<module>rg     sL   ðÝ *Û ã ã ß 'Ý 1Ý +Ý %Ý ô]ˆH�N‰Nô ]÷@ (ñ  (ôFIˆ^õ Ir   