Ë
    ýÿæiÎD  ã                  ó  — d Z ddlmZ ddlmZ ddlZddlmZ ddl	Z
ddl	mZ ddlmZ erddlmZ ddlmZ dd	„Zdd
„Zd„ Zd d„Zd d!d„Zd„ Zd"d„Zd„ Zd#d„Zd$d„Zd"d„Zd%d„Zd&d„Z	 dd„Z d'd„Z!d(d„Z"d„ Z#d„ Z$d)d„Z%d*d„Z&d„ Z'd„ Z(y)+zF
Module consolidating common testing functions for checking plotting.
é    )Úannotations)ÚTYPE_CHECKINGN)Úis_list_like)ÚSeries)ÚSequence©ÚAxesc                óä   — |r|€t        d«      ‚t        | «      } | D ]Q  }|r;|j                  «       €J ‚t        |j                  «       j	                  «       |«       Œ@|j                  «       €ŒQJ ‚ y)a)  
    Check each axes has expected legend labels

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    labels : list-like
        expected legend labels
    visible : bool
        expected legend visibility. labels are checked only when visible is
        True
    Nz-labels must be specified when visible is True)Ú
ValueErrorÚ_flatten_visibleÚ
get_legendÚ_check_text_labelsÚ	get_texts)ÚaxesÚlabelsÚvisibleÚaxs       úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pandas/tests/plotting/common.pyÚ_check_legend_labelsr      sk   € ñ �F�NÜÐHÓIÐIÜ˜DÓ!€DÛˆÙØ—=‘=“?Ð.Ð.Ð.Ü˜rŸ}™}›×8Ñ8Ó:¸FÕCà—=‘=“?Ñ*Ð*Ð*ñ ó    c                óÄ   — |r|€t        d«      ‚|r8| j                  «       \  }}|D �cg c]  }|j                  «       ‘Œ }}||k(  sJ ‚y| j                  «       �J ‚yc c}w )a  
    Check ax has expected legend markers

    Parameters
    ----------
    ax : matplotlib Axes object
    expected_markers : list-like
        expected legend markers
    visible : bool
        expected legend visibility. labels are checked only when visible is
        True
    Nz.Markers must be specified when visible is True)r   Úget_legend_handles_labelsÚ
get_markerr   )r   Úexpected_markersr   ÚhandlesÚ_ÚhandleÚmarkerss          r   Ú_check_legend_markerr   /   sq   € ñ Ð$Ð,ÜÐIÓJÐJÙØ×1Ñ1Ó3‰
ˆ�Ù5<Ó=±W¨6�6×$Ñ$Õ&°WˆÐ=ØÐ*Ò*Ð*Ñ*à�}‰}‹Ð&Ð&Ñ&ùò >s   ©Ac                ó  — | j                  «       }|j                  «       }t        |«      t        |«      k(  sJ ‚t        ||d¬«      D ];  \  }}|j                  «       }|j                  «       }t	        j
                  ||«       Œ= y)zŒ
    Check each axes has identical lines

    Parameters
    ----------
    xp : matplotlib Axes object
    rs : matplotlib Axes object
    T©ÚstrictN)Ú	get_linesÚlenÚzipÚ
get_xydataÚtmÚassert_almost_equal)ÚxpÚrsÚxp_linesÚrs_linesÚxplÚrslÚxpdataÚrsdatas           r   Ú_check_datar1   F   so   € ð �|‰|‹~€HØ�|‰|‹~€Häˆx‹=œC ›MÒ)Ð)Ð)Ü˜ (°4×8‰ˆˆSØ—‘Ó!ˆØ—‘Ó!ˆÜ
×Ñ˜v vÕ.ñ 9r   c                ó|   — ddl m} t        | |«      st        | «      s| g} | D ]  }|j	                  «       |k(  rŒJ ‚ y)zà
    Check each artist is visible or not

    Parameters
    ----------
    collections : matplotlib Artist or its list-like
        target Artist or its list or collection
    visible : bool
        expected visibility
    r   )Ú
CollectionN)Úmatplotlib.collectionsr3   Ú
isinstancer   Úget_visible)Úcollectionsr   r3   Úpatchs       r   Ú_check_visibler9   Y   s@   € õ 2ä�k :Ô.´|ÀKÔ7PØ"�mˆãˆØ× Ñ Ó" gÓ-Ð-Ð-ñ r   c                ól   — t        | «      } | D ]$  }|j                  D ]  }|j                  |k(  rŒJ ‚ Œ& y)z¹
    Check for each artist whether it is filled or not

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    filled : bool
        expected filling
    N)r   ÚpatchesÚfill)r   Úfilledr   r8   s       r   Ú_check_patches_all_filledr>   m   s8   € ô ˜DÓ!€DÛˆØ—Z”ZˆEØ—:‘: Ó'Ð'Ð'ñ  ñ r   c                ó�   — | j                  «       }t        t        ||«      «      }| j                  D �cg c]  }||   ‘Œ	 c}S c c}w ©N)ÚuniqueÚdictr%   Úvalues)ÚseriesÚcolorsrA   ÚmappedÚvs        r   Ú_get_colors_mappedrH   ~   s@   € Ø�]‰]‹_€Fô ”#�f˜fÓ%Ó&€FØ%Ÿ}š}Ó-™}˜!ˆF�1‹I˜}Ñ-Ð-ùÒ-s   ´Ac                óZ  — ddl m} ddlm}m}m} ddlm} |j                  }	|�Ì|�t        ||«      }|dt        | «       }t        | «      t        |«      k(  sJ ‚t        | |d¬«      D ]†  \  }
}t        |
|«      r"|
j                  «       }|	j                  |«      }n;t        |
||f«      rt        |
j!                  «       d   «      }n|
j!                  «       }|	j                  |«      }||k(  rŒ†J ‚ |�¹|�t        ||«      }|dt        | «       }t        | «      t        |«      k(  sJ ‚t        | |d¬«      D ]r  \  }
}t        |
|«      r|
j#                  «       d   }n|
j#                  «       }t        |t$        j&                  «      rt        |«      }|	j                  |«      }||k(  rŒrJ ‚ yy)aÿ  
    Check each artist has expected line colors and face colors

    Parameters
    ----------
    collections : list-like
        list or collection of target artist
    linecolors : list-like which has the same length as collections
        list of expected line colors
    facecolors : list-like which has the same length as collections
        list of expected face colors
    mapping : Series
        Series used for color grouping key
        used for andrew_curves, parallel_coordinates, radviz test
    r   )rE   )r3   ÚLineCollectionÚPolyCollection)ÚLine2DNTr!   )Ú
matplotlibrE   r4   r3   rJ   rK   Úmatplotlib.linesrL   ÚColorConverterrH   r$   r%   r5   Ú	get_colorÚto_rgbaÚtupleÚget_edgecolorÚget_facecolorÚnpÚndarray)r7   Ú
linecolorsÚ
facecolorsÚmappingrE   r3   rJ   rK   rL   Úconvr8   ÚcolorÚresultÚexpecteds                 r   Ú_check_colorsr^   †   s­  € õ  "÷ñ õ
 (à× Ñ €DØÐØÐÜ+¨G°ZÓ@ˆJØ#Ð$6¤c¨+Ó&6Ð7ˆJä�;Ó¤3 z£?Ò2Ð2Ð2Ü ¨ZÀ×E‰LˆE�5Ü˜% Ô(ØŸ™Ó*�àŸ™ fÓ-‘Ü˜E N°NÐ#CÔDÜ˜u×2Ñ2Ó4°QÑ7Ó8‘à×,Ñ,Ó.�à—|‘| EÓ*ˆHØ˜XÓ%Ð%Ð%ð Fð ÐØÐÜ+¨G°ZÓ@ˆJØ#Ð$6¤c¨+Ó&6Ð7ˆJä�;Ó¤3 z£?Ò2Ð2Ð2Ü ¨ZÀ×E‰LˆE�5Ü˜% Ô,à×,Ñ,Ó.¨qÑ1‘à×,Ñ,Ó.�ä˜&¤"§*¡*Ô-Ü˜v›�à—|‘| EÓ*ˆHØ˜XÓ%Ð%Ð%ñ Fð r   c                óö   — t        | «      s| j                  «       |k(  sJ ‚y| D �cg c]  }|j                  «       ‘Œ }}t        |«      t        |«      k(  sJ ‚t        ||d¬«      D ]  \  }}||k(  rŒJ ‚ yc c}w )a  
    Check each text has expected labels

    Parameters
    ----------
    texts : matplotlib Text object, or its list-like
        target text, or its list
    expected : str or list-like which has the same length as texts
        expected text label, or its list
    Tr!   N)r   Úget_textr$   r%   )Útextsr]   Útr   ÚlabelÚes         r   r   r   Æ   sy   € ô ˜ÔØ�~‰~Ó 8Ò+Ð+Ñ+á(-Ó.© 1�!—*‘*•,¨ˆÐ.Ü�6‹{œc (›mÒ+Ð+Ð+Ü˜F H°T×:‰HˆE�1Ø˜A“:Ð�:ñ ;ùò /s   ¦A6c                óú  — ddl m} t        | «      } | D �]d  }|€|�¬t        |j                  j                  «       |«      r|j                  «       }n#|j                  «       |j                  d¬«      z   }|D ]O  }|�$t        j                  |j                  «       |«       |€Œ,t        j                  |j                  «       |«       ŒQ |€|€Œ¹t        |j                  j                  «       |«      r|j                  «       }n#|j                  «       |j                  d¬«      z   }|D ]O  }|�$t        j                  |j                  «       |«       |€Œ,t        j                  |j                  «       |«       ŒQ �Œg y)ac  
    Check each axes has expected tick properties

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xlabelsize : number
        expected xticks font size
    xrot : number
        expected xticks rotation
    ylabelsize : number
        expected yticks font size
    yrot : number
        expected yticks rotation
    r   )ÚNullFormatterNT)Úminor)Úmatplotlib.tickerrf   r   r5   ÚxaxisÚget_minor_formatterÚget_xticklabelsr'   r(   Úget_fontsizeÚget_rotationÚyaxisÚget_yticklabels)	r   Ú
xlabelsizeÚxrotÚ
ylabelsizeÚyrotrf   r   r   rc   s	            r   Ú_check_ticks_propsrt   Ú   sQ  € õ  0ä˜DÓ!€DÜˆØÐ! TÐ%5Ü˜"Ÿ(™(×6Ñ6Ó8¸-ÔHð ×+Ñ+Ó-‘à×+Ñ+Ó-°×0BÑ0BÈÐ0BÓ0NÑN�ã�ØÐ)Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÔLØÑ#Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÕFð	  ð Ð! TÑ%5Ü˜"Ÿ(™(×6Ñ6Ó8¸-ÔHØ×+Ñ+Ó-‘à×+Ñ+Ó-°×0BÑ0BÈÐ0BÓ0NÑN�ã�ØÐ)Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÔLØÑ#Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÕFò	  ñ+ r   c                ó¤   — t        | «      } | D ]@  }|j                  j                  «       |k(  sJ ‚|j                  j                  «       |k(  rŒ@J ‚ y)zö
    Check each axes has expected scales

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xaxis : {'linear', 'log'}
        expected xaxis scale
    yaxis : {'linear', 'log'}
        expected yaxis scale
    N)r   ri   Ú	get_scalern   )r   ri   rn   r   s       r   Ú_check_ax_scalesrw   	  sN   € ô ˜DÓ!€DÛˆØ�x‰x×!Ñ!Ó# uÒ,Ð,Ð,Ø�x‰x×!Ñ!Ó# uÓ,Ð,Ð,ñ r   c                ó\  — ddl m} |€d}t        | «      }|�5t        |«      |k(  sJ ‚|D ]   }t        |j	                  «       «      dkD  rŒ J ‚ |�Št        «       }t        «       } || «      D ]N  }|j                  «       j                  «       }	|j                  |	d   d   «       |j                  |	d   d   «       ŒP t        |«      t        |«      f}
|
|k(  sJ ‚t        j                  |d   j                  j                  «       t        j                  |t        j                  ¬«      «       y)až  
    Check expected number of axes is drawn in expected layout

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    axes_num : number
        expected number of axes. Unnecessary axes should be set to
        invisible.
    layout : tuple
        expected layout, (expected number of rows , columns)
    figsize : tuple
        expected figsize. default is matplotlib default
    r   ©Úflatten_axesN)gš™™™™™@g333333@é   )Údtype)Ú!pandas.plotting._matplotlib.toolsrz   r   r$   Úget_childrenÚsetÚget_positionÚ
get_pointsÚaddr'   Úassert_numpy_array_equalÚfigureÚget_size_inchesrU   ÚarrayÚfloat64)r   Úaxes_numÚlayoutÚfigsizerz   Úvisible_axesr   Úx_setÚy_setÚpointsr\   s              r   Ú_check_axes_shaper�     s  € õ ?à€ØˆÜ# DÓ)€LàÐÜ�<Ó  HÒ,Ð,Ð,ÛˆBä�r—‘Ó(Ó)¨AÓ-Ð-Ð-ð ð ÐÜ“ˆÜ“ˆÙ˜tÖ$ˆBà—_‘_Ó&×1Ñ1Ó3ˆFØ�I‰I�f˜Q‘i ‘lÔ#Ø�I‰I�f˜Q‘i ‘lÕ#ð	 %ô
 �e“*œc %›jÐ)ˆØ˜ÒÐÐä×ÑØ�Q‰×Ñ×.Ñ.Ó0Ü
�‰�¤§
¡
Ô+õr   c                ól   — ddl m}  || «      }|D �cg c]  }|j                  «       sŒ|‘Œ } }| S c c}w )zƒ
    Flatten axes, and filter only visible

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like

    r   ry   )r}   rz   r6   )r   rz   Úaxes_ndarrayr   s       r   r   r   G  s8   € õ ?á Ó%€LÙ%Ó:™�2¨¯©Õ)9ŠB˜€DÐ:Ø€Kùò ;s   “1©1c                óÄ   — t        | «      } | D ]P  }|j                  }d}d}|D ]+  }t        |dd«      }t        |dd«      }	|r|dz  }|	sŒ'|dz  }Œ- ||k(  sJ ‚||k(  rŒPJ ‚ y)zø
    Check axes has expected number of errorbars

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xerr : number
        expected number of x errorbar
    yerr : number
        expected number of y errorbar
    r   Úhas_xerrFÚhas_yerrr{   N)r   Ú
containersÚgetattr)
r   ÚxerrÚyerrr   r•   Ú
xerr_countÚ
yerr_countÚcr“   r”   s
             r   Ú_check_has_errorbarsrœ   W  s‡   € ô ˜DÓ!€DÛˆØ—]‘]ˆ
Øˆ
Øˆ
ÛˆAÜ˜q *¨eÓ4ˆHÜ˜q *¨eÓ4ˆHÙØ˜a‘�
ÚØ˜a‘‘
ð ð �zÒ!Ð!Ð!Ø�zÓ!Ð!Ð!ñ r   c                ó6  — ddl m} t        |t        dœ}|€P|€d}t	        | ||   «      sJ ‚|dk(  r5t	        | j
                  |«      sJ ‚t	        | j                  t        «      sJ ‚yy|€t        | «      D ]  }t	        ||«      rŒJ ‚ yt	        | t        «      sJ ‚t        | j                  «       «      t        |«      k(  sJ ‚| j                  «       D ]Æ  \  }}t	        |||   «      sJ ‚|dk(  r|sŒ|j                  «       |k(  rŒ3J ‚|dk(  rV|r|j
                  j                  «       |k(  sJ ‚t	        |j
                  |«      sJ ‚t	        |j                  t        «      rŒŽJ ‚|dk(  r-|d   d   }	|	j                  }
|sŒ¬|
j                  «       |k(  rŒÀJ ‚t        ‚ y)	a<  
    Check box returned type is correct

    Parameters
    ----------
    returned : object to be tested, returned from boxplot
    return_type : str
        return_type passed to boxplot
    expected_keys : list-like, optional
        group labels in subplot case. If not passed,
        the function checks assuming boxplot uses single ax
    check_ax_title : bool
        Whether to check the ax.title is the same as expected_key
        Intended to be checked by calling from ``boxplot``.
        Normal ``plot`` doesn't attach ``ax.title``, it must be disabled.
    r   r   )rB   r   ÚbothNrB   rž   r   Úmedians)Úmatplotlib.axesr	   rB   rR   r5   r   Úlinesr   r   ÚsortedÚkeysÚitemsÚ	get_titler   ÚAssertionError)ÚreturnedÚreturn_typeÚexpected_keysÚcheck_ax_titler	   ÚtypesÚrÚkeyÚvalueÚliner   s              r   Ú_check_box_return_typer°   s  sœ  € õ& %ä 4´Ñ7€EØÐàÐØ ˆKä˜( E¨+Ñ$6Ô7Ð7Ð7Ø˜&Ò Ü˜hŸk™k¨4Ô0Ð0Ð0Ü˜hŸn™n¬dÔ3Ð3Ñ3ð !ð
 ÐÜ% hÖ/�Ü! ! TÕ*Ð*Ð*ð 0àä˜(¤FÔ+Ð+Ð+ä�h—m‘m“oÓ&¬&°Ó*?Ò?Ð?Ð?Ø"Ÿ.™.Ö*‰JˆC�Ü˜e U¨;Ñ%7Ô8Ð8Ð8à˜fÒ$Ú!Ø Ÿ?™?Ó,°Ó3Ð3Ð3Ø Ò&Ù!Ø Ÿ8™8×-Ñ-Ó/°3Ò6Ð6Ð6Ü! %§(¡(¨DÔ1Ð1Ð1Ü! %§+¡+¬tÕ4Ð4Ð4Ø Ò&Ø˜YÑ'¨Ñ*�Ø—y‘y�Ú!ØŸ>™>Ó+¨sÓ2Ð2Ð2ä$Ð$ñ# +r   c                ó  ‡— dd l Šˆfd„}|€i }d}|D �]ê  }‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd¬«        | j
                  dd|i|¤Ž  |«       rJ ‚‰j                  j                  «        ‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd	¬«        | j
                  d|dd
œ|¤Ž  |«       rJ ‚‰j                  j                  «        |dvsŒú‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd	¬«        | j
                  dd|i|¤Ž  |«       sJ ‚‰j                  j                  «        ‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd¬«        | j
                  d|d	d
œ|¤Ž  |«       sJ ‚‰j                  j                  «        �Œí y )Nr   c                 ó"  •— ‰j                   j                  «       j                  j                  «       } ‰j                   j                  «       j                  j                  «       }t        d„ | D «       «      }t        d„ |D «       «      }|xr | S )Nc              3  óR   K  — | ]  }|j                   j                  «        –— Œ! y ­wr@   ©Úgridliner6   ©Ú.0Úgs     r   Ú	<genexpr>z;_check_grid_settings.<locals>.is_grid_on.<locals>.<genexpr>¸  ó!   è ø€ Ð@¹°A�q—z‘z×-Ñ-Ó/Ô/¹ùó   ‚%'c              3  óR   K  — | ]  }|j                   j                  «        –— Œ! y ­wr@   r´   r¶   s     r   r¹   z;_check_grid_settings.<locals>.is_grid_on.<locals>.<genexpr>¹  rº   r»   )ÚpyplotÚgcari   Úget_major_ticksrn   Úall)ÚxticksÚyticksÚxoffÚyoffÚmpls       €r   Ú
is_grid_onz(_check_grid_settings.<locals>.is_grid_onµ  sn   ø€ Ø—‘—‘Ó!×'Ñ'×7Ñ7Ó9ˆØ—‘—‘Ó!×'Ñ'×7Ñ7Ó9ˆÜÑ@¹Ó@Ó@ˆÜÑ@¹Ó@Ó@ˆà’M˜TÐ"Ð"r   r{   é   r   F)ÚgridÚkindT)rÉ   rÈ   )ÚpieÚhexbinÚscatter© )rM   r½   Úsubplotr$   ÚrcÚplotÚclf)ÚobjÚkindsÚkwsrÆ   ÚspndxrÉ   rÅ   s         @r   Ú_check_grid_settingsrÖ   °  sË  ø€ ó ô#ð €{ØˆØ€EÜˆØ�
‰
×Ñ˜1˜a¤# e£*™n¨eÔ4Ø�‰
ˆØ�‰ˆv˜EˆÔ"Øˆ�‰Ñ"�dÐ"˜cÒ"Ù”<ÐÐØ�
‰
�‰Ôà�
‰
×Ñ˜1˜a¤# e£*™n¨eÔ4Ø�‰
ˆØ�‰ˆv˜DˆÔ!Øˆ�‰Ð.�d Ñ.¨#Ò.Ù”<ÐÐØ�
‰
�‰ÔàÐ3Ò3Ø�J‰J×Ñ˜q !¤c¨%£j¡.°%Ô8Ø�Q‰JˆEØ�F‰F�6 ˆFÔ%ØˆC�H‰HÑ&˜$Ð& #Ò&Ù”<Ð�<Ø�J‰J�N‰NÔà�J‰J×Ñ˜q !¤c¨%£j¡.°%Ô8Ø�Q‰JˆEØ�F‰F�6 ˆFÔ&ØˆC�H‰HÐ1˜$ TÑ1¨SÒ1Ù”<Ð�<Ø�J‰J�N‰NÖñ9 r   c                ó8   — | d   D �cg c]  }||   ‘Œ	 c}S c c}w )zL
    Auxiliary function for correctly unpacking cycler after MPL >= 1.5
    zaxes.prop_cyclerÍ   )ÚrcParamsÚfieldrG   s      r   Ú_unpack_cyclerrÚ   ß  s(   € ð 'Ð'8Ò9Ó:Ñ9˜ˆAˆe‹HÐ9Ñ:Ð:ùÒ:s   ˆc                ó    — | j                   d   S )NÚx©Ú_shared_axes©r   s    r   Ú
get_x_axisrà   æ  ó   € Ø�?‰?˜3ÑÐr   c                ó    — | j                   d   S )NÚyrÝ   rß   s    r   Ú
get_y_axisrä   ê  rá   r   c                ó�  — ddl m} ddlm} t	        | t
        t        j                  f«      rdt	        | t
        «      r| j                  } | j                  d«      D ]3  }dt        |«      j                  ›�}t	        ||t        f«      rŒ.J |«       ‚ y dt        | «      j                  ›�}t	        | |t        t        f«      sJ |«       ‚y )Nr   )ÚArtistr   éÿÿÿÿzBone of 'objs' is not a matplotlib Axes instance, type encountered zoobjs is neither an ndarray of Artist instances nor a single ArtistArtist instance, tuple, or dict, 'objs' is a )Úmatplotlib.artistræ   r    r	   r5   r   rU   rV   Ú_valuesÚreshapeÚtypeÚ__name__rB   rR   )Úobjsræ   r	   ÚelÚmsgs        r   Ú"assert_is_valid_plot_return_objectrð   î  s¹   € Ý(Ý$ä�$œ¤§¡Ð,Ô-Ü�dœFÔ#Ø—<‘<ˆDØ—,‘,˜rÖ"ˆBð$Ü$(¨£H×$5Ñ$5Ð#8ð:ð ô ˜b 4¬ ,Õ/Ð4°Ó4Ð/ñ #ðBä�D‹z×"Ñ"Ð%ð'ð 	ô
 ˜$ ¬´Ð 5Ô6Ð;¸Ó;Ñ6r   c                óÈ   — ddl m} |rt        }nt        }d}|j	                  d|j                  «       «      }|j                  «         || |fi |¤ŽD ]  }t        |«       Œ |S )a×  
    Create plot and ensure that plot return object is valid.

    Parameters
    ----------
    f : func
        Plotting function.
    default_axes : bool, optional
        If False (default):
            - If `ax` not in `kwargs`, then create subplot(211) and plot there
            - Create new subplot(212) and plot there as well
            - Mind special corner case for bootstrap_plot (see `_gen_two_subplots`)
        If True:
            - Simply run plotting function with kwargs provided
            - All required axes instances will be created automatically
            - It is recommended to use it when the plotting function
            creates multiple axes itself. It helps avoid warnings like
            'UserWarning: To output multiple subplots,
            the figure containing the passed axes is being cleared'
    **kwargs
        Keyword arguments passed to the plotting function.

    Returns
    -------
    Plot object returned by the last plotting.
    r   Nr„   )Úmatplotlib.pyplotr½   Ú_gen_default_plotÚ_gen_two_subplotsÚgetÚgcfrÑ   rð   )ÚfÚdefault_axesÚkwargsÚpltÚ	gen_plotsÚretÚfigs          r   Ú_check_plot_worksrþ     s]   € õ6 $áÜ%‰	ä%ˆ	à
€CØ
�*‰*�X˜sŸw™w›yÓ
)€CØ‡G�G„Iá˜˜CÑ* 6Ô*ˆÜ*¨3Õ/ð +ð €Jr   c              +  ó    K  —  | di |¤Ž–— y­w)z'
    Create plot in a default way.
    NrÍ   rÍ   ©r÷   rý   rù   s      r   ró   ró   0  s   è ø€ ñ ‰+ˆf‰+Óùs   ‚c              +  óÊ   K  — d|vr|j                  d«        | di |¤Ž–— | t        j                  j                  u rd|vsJ ‚|j                  d«      |d<    | di |¤Ž–— y­w)z9
    Create plot on two subplots forcefully created.
    r   éÓ   éÔ   NrÍ   )Úadd_subplotÚpdÚplottingÚbootstrap_plotr   s      r   rô   rô   7  sf   è ø€ ð �6ÑØ�‰˜ÔÙ
‰+ˆf‰+ÒàŒB�K‰K×&Ñ&Ñ&Ø˜6Ñ!Ð!Ð!à—‘ sÓ+ˆˆt‰Ù
‰+ˆf‰+Óùs   ‚A!A#)NT)T)r   úAxes | Sequence[Axes]r=   ÚboolÚreturnÚNone)NNN)NNNN)Úlinearr  )r   r  r
  zSequence[Axes])r   r   r@   )r[   )r
  r  )F))Ú__doc__Ú
__future__r   Útypingr   ÚnumpyrU   Úpandas.core.dtypes.apir   Úpandasr  r   Úpandas._testingÚ_testingr'   Úcollections.abcr   r    r	   r   r   r1   r9   r>   rH   r^   r   rt   rw   r�   r   rœ   r°   rÖ   rÚ   rà   rä   rð   rþ   ró   rô   rÍ   r   r   Ú<module>r     s¥   ðñõ #å  ã å /ã Ý Ý áÝ(å$ó+ó0'ò./ó&.ô((ò".ó=&ò@ó(,Gó^-ó$)óXó "ð: ?Có:%óz,ó^;ò ò ó<ó,)òXór   