o
    i                  
   @   s`  d Z ddlmZ ddlZddlZddlZdZdZdZ	dZ
dZejd	Zeee	e
dd
Zdejv r4eZnZdejv r<eZnRdejv rDe	ZnJdejv rLe
ZnBeejddv raedv r^ee Zn0dZn-eejddv rvedv rsee ZndZnzee ZW n ey Z zededZ[ww dd Zdd Zeeefv re  n^ee	e
efv re  nSedu reejddkree	fee
feefeefeefgZneefeefee	fee
feefgZeD ]\ZZze  W n	 ey   Y qw  nednedeee	dfe
dfedfedfdZe t!" #dd Z$e$dkr&ej%j&d d!d" d#d$ Z'd%d& Z(dS )'a9  
Qt binding and backend selector.

The selection logic is as follows:
- if any of PyQt5, PySide2, PyQt4 or PySide have already been imported
  (checked in that order), use it;
- otherwise, if the QT_API environment variable (used by Enthought) is set, use
  it to determine which binding to use (but do not change the backend based on
  it; i.e. if the Qt5Agg backend is requested but QT_API is set to "pyqt4",
  then actually use Qt5 with PyQt5 or PySide2 (whichever can be imported);
- otherwise, use whatever the rcParams indicate.

Support for PyQt4 is deprecated.
    )LooseVersionNPyQt5PySide2PyQt4v2PySidePyQt4QT_API)pyqt5pyside2pyqtpysideNzPyQt5.QtCorezPySide2.QtCorezPyQt4.QtCorezPySide.QtCorebackend)Qt5AggQt5Cairo)r	   r
   )Qt4AggQt4Cairo)pyqt4r   zyThe environment variable QT_API has the unrecognized value {!r};valid values are 'pyqt5', 'pyside2', 'pyqt', and 'pyside'c                     s   t tkr%ddlmamama dd l} tjatj	t_
tjt_tjt_| jant tkr@ddlmamamama dd l  fddantdtjjatjjddd	d
d ad S )Nr   )QtCoreQtGui	QtWidgets)r   r   r   __version__c                         |  S NisValidobj	shiboken2 X/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/backends/qt_compat.py
_isdeletedU       r!   z.Unexpected value for the 'backend.qt5' rcparam3.3QtCore.qVersion()alternativec                   S      dS )NTr   r   r   r   r    is_pyqt5Z      r(   )r   QT_API_PYQT5r   r   r   r   sipPYQT_VERSION_STRr   
pyqtSignalSignalpyqtSlotSlotpyqtPropertyProperty	isdeletedr!   QT_API_PYSIDE2r   r   
ValueErrorQFileDialoggetSaveFileName_getSaveFileNamemplcbook
deprecatedr(   )r+   r   r   r    _setup_pyqt5F   s    r<   c                     s   dd } t tkr| dd n5t tkr5ddlmamamam} dd l |dk r*t	d fd	d
a
tjjant tkr?| dd ntdtatjjddddd ad S )Nc              	   S   s   g d}zdd l }W n	 ty   Y nw |D ]}z|||  W q ty)   Y qw ddlmama dd l }tjatt	dk rCtdtj
t_tjt_tjt_|jatjjad S )N)QDate	QDateTimeQStringQTextStreamQTimeQUrlQVariantr   )r   r   z4.6zPyQt<4.6 is not supported)r+   ImportErrorsetapir5   r   r   r   r,   r   r   r-   r.   r/   r0   r1   r2   r3   r!   r6   getSaveFileNameAndFilterr8   )api	_sip_apisr+   _sip_apir   r   r    _setup_pyqt4_internalc   s,   z+_setup_pyqt4.<locals>._setup_pyqt4_internal   )rG   r   )r   r   r   __version_info__)   r      zPySide<1.0.3 is not supportedc                    r   r   r   r   shibokenr   r    r!      r"   r!   rM   z.Unexpected value for the 'backend.qt4' rcparamr#   r$   r%   c                   S   r'   )NFr   r   r   r   r    r(      r)   r(   )r   QT_API_PYQTv2QT_API_PYSIDEr   r   r   r   rL   rP   rD   r!   r6   r7   r8   QT_API_PYQTr5   r   r9   r:   r;   r(   )rJ   rL   r   rO   r    _setup_pyqt4_   s    
rT   r   zFailed to import any qt bindingzUnexpected QT_API: {}      )r   r   r	   r
   .r#   zsupport for Qt4)namec                 C   sF   z|   pdW S  ty   Y nw z|  pdW S  ty"   Y dS w )z
    Return obj.devicePixelRatioF() with graceful fallback for older Qt.

    This can be replaced by the direct call when we require Qt>=5.6.
    rM   )devicePixelRatioFAttributeErrordevicePixelRatior   r   r   r    _devicePixelRatioF   s   r\   c                 C   s4   t | dr| | dS t | dr| | dS dS )z
    Call obj.setDevicePixelRatioF(val) with graceful fallback for older Qt.

    This can be replaced by the direct call when we require Qt>=5.6.
    setDevicePixelRatioFsetDevicePixelRatioN)hasattrr]   r^   )r   valr   r   r    _setDevicePixelRatioF   s
   

ra   ))__doc__distutils.versionr   ossys
matplotlibr9   r*   r4   rQ   rR   rS   environget
QT_API_ENV_ETSmodulesr   dict__getitem__rcParamsKeyErrorerrRuntimeErrorr<   rT   _candidates_setuprD   AssertionErrorformatETSintr   qVersionsplitQT_RC_MAJOR_VERSIONr:   warn_deprecatedr\   ra   r   r   r   r    <module>   s    





8

