Ë
    íÍ:jW  ã                   ó¼   — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z
 d„ Zd„ Z ej                  dd	¬
«      dd„«       Z ej                  dd¬
«      dd„«       Zdd„Zy)z|
========================
Widget testing utilities
========================

See also :mod:`matplotlib.tests.test_widgets`.
é    )Úmock)Ú_api)Ú
MouseEventÚKeyEventNc                  óº   — t        j                  dd«      \  } }|j                  ddgddg«       |j                  d«       | j                  j                  «        |S )z"Create a plot and return its Axes.é   r   éÈ   g      ð?)ÚpltÚsubplotsÚplotÚ
set_aspectÚcanvasÚdraw)ÚfigÚaxs     úo/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/testing/widgets.pyÚget_axr      sK   € ä�l‰l˜1˜aÓ �G€CˆØ‡G�GˆQ�ˆH�q˜#�hÔØ‡M�M�#ÔØ‡J�J‡O�OÔØ€Ió    c                   ó   — y ©N© )ÚargsÚkwargss     r   Únoopr      s   € Ør   z3.11zMouseEvent or KeyEvent)Úalternativec                 óD  — t        j                  «       }||_        | j                  j	                  ||f||fg«      d   \  |_        |_        ||c|_        |_        | |_	        | j                  d¬«      j                  |_        ||_        ||_        d|_        d|_        |S )a  
    Create a mock event that can stand in for `.Event` and its subclasses.

    This event is intended to be used in tests where it can be passed into
    event handling functions.

    Parameters
    ----------
    ax : `~matplotlib.axes.Axes`
        The Axes the event will be in.
    xdata : float
        x coord of mouse in data coords.
    ydata : float
        y coord of mouse in data coords.
    button : None or `MouseButton` or {'up', 'down'}
        The mouse button pressed in this event (see also `.MouseEvent`).
    key : None or str
        The key pressed when the mouse event triggered (see also `.KeyEvent`).
    step : int
        Number of scroll steps (positive for 'up', negative for 'down').

    Returns
    -------
    event
        A `.Event`\-like Mock instance.
    r   T)ÚrootNÚCustom)r   ÚMockÚbuttonÚ	transDataÚ	transformÚxÚyÚxdataÚydataÚinaxesÚ
get_figurer   ÚkeyÚstepÚguiEventÚname)r   r    r%   r&   r)   r*   Úevents          r   Ú
mock_eventr.      sŸ   € ô8 �I‰I‹K€EØ€E„LØ—|‘|×-Ñ-°°u¨~Ø05°u¨~ð/?ó @Ø@AñCÑ€E„GˆUŒWà$ eÐ€E„K�”Ø€E„LØ—=‘= d�=Ó+×2Ñ2€E„LØ€E„IØ€E„JØ€E„NØ€E„JØ€Lr   zcallbacks.process(event)c                 ó`   — t        | j                  |||||«      }t        | |«      } ||«       y)aT  
    Trigger an event on the given tool.

    Parameters
    ----------
    tool : matplotlib.widgets.AxesWidget
    etype : str
        The event to trigger.
    xdata : float
        x coord of mouse in data coords.
    ydata : float
        y coord of mouse in data coords.
    button : None or `MouseButton` or {'up', 'down'}
        The mouse button pressed in this event (see also `.MouseEvent`).
    key : None or str
        The key pressed when the mouse event triggered (see also `.KeyEvent`).
    step : int
        Number of scroll steps (positive for 'up', negative for 'down').
    N)r.   r   Úgetattr)	ÚtoolÚetyper    r%   r&   r)   r*   r-   Úfuncs	            r   Údo_eventr4   G   s/   € ô* �t—w‘w ¨¨u°c¸4Ó@€EÜ�4˜Ó€DÙˆ…Kr   c                 ó¢  — | j                   }|�&t        j                  d|||«      j                  «        t	        j                  d||d«      j                  «        t	        j                  d||d«      j                  «        t	        j                  d||d«      j                  «        |�'t        j                  d|||«      j                  «        yy)a}  
    Helper to simulate a mouse drag operation.

    Parameters
    ----------
    tool : `~matplotlib.widgets.Widget`
    start : [float, float]
        Starting point in data coordinates.
    end : [float, float]
        End point in data coordinates.
    key : None or str
         An optional key that is pressed during the whole operation
         (see also `.KeyEvent`).
    NÚkey_press_eventÚbutton_press_eventr   Úmotion_notify_eventÚbutton_release_eventÚkey_release_event)r   r   Ú_from_ax_coordsÚ_processr   )r1   ÚstartÚendr)   r   s        r   Úclick_and_dragr?   a   s²   € ð 
�‰€BØ
€Ü× Ñ Ð!2°B¸¸sÓC×LÑLÔNä×ÑÐ3°R¸ÀÓB×KÑKÔMÜ×ÑÐ4°b¸#¸qÓA×JÑJÔLÜ×ÑÐ5°r¸3ÀÓB×KÑKÔMØ
€Ü× Ñ Ð!4°b¸#¸sÓC×LÑLÕNð r   )r   r   r   Nr   r   )Ú__doc__Úunittestr   Ú
matplotlibr   Úmatplotlib.backend_basesr   r   Úmatplotlib.pyplotÚpyplotr
   r   r   Ú
deprecatedr.   r4   r?   r   r   r   ú<module>rG      sn   ðñõ å ß 9Ý òò	ð €‡��Ð%=Ô>ò&ó ?ð&ðR €‡��Ð%?Ô@òó Aðô2Or   