B
    ]t\              	   @   s  d Z ddlmZ ddlZddlZddlm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kr|eZeede n"dejkreZeede nd	ejkre	Zeede ndejkre
Zeede ned dkr$edkreede nedkreede eedZnzed dkrredkrLeede	 nedkrdeede
 eedZn,yee ZW n ek
r   edY nX dd Zdd Zeeegkre  nee	e
egkre  nedkred dkre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xReD ]2\ZZy
e  W n ek
rl   w@Y nX P q@W ednedeee	dfe
dfedfedfdZt rdndZ dS ) a!  
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 Qt4Agg backend is requested but QT_API
  is set to "pyqt5", then actually use Qt4 with the binding specified by
  ``rcParams["backend.qt4"]``;
- otherwise, use whatever the rcParams indicate.
    )LooseVersionN)rcParamsPyQt5PySide2ZPyQt4v2PySidePyQt4QT_API)pyqt5pyside2pyqtpysideNzbackend.qt5zbackend.qt4Zbackend)ZQt5AggZQt5Cairor	   r
   )Qt4AggZQt4CairoZpyqt4r   zyThe environment variable QT_API has the unrecognized value {!r};valid values are 'pyqt5', 'pyside2', 'pyqt', and 'pyside'c               C   sz   t tkr<ddlmamama tjatjt_	tj
t_tjt_n*t tkr^ddlmamamama ntdtjjadd ad S )Nr   )QtCoreQtGui	QtWidgets)r   r   r   __version__z.Unexpected value for the 'backend.qt5' rcparamc               S   s   dS )NT r   r   r   <lib/python3.7/site-packages/matplotlib/backends/qt_compat.pyis_pyqt5W   s    r   )r   QT_API_PYQT5r   r   r   r   PYQT_VERSION_STRr   
pyqtSignalSignalpyqtSlotSlotpyqtPropertyPropertyQT_API_PYSIDE2r   
ValueErrorQFileDialoggetSaveFileName_getSaveFileNamer   r   r   r   r   _setup_pyqt5H   s    
r"   c              C   s   dd } t tkr| dd nVt tkrVddlmamamam} |dk rLtdtj	j
ant tkrj| d	d ntd
tadd ad S )Nc          	   S   s   dddddddg}ydd l }W n tk
r2   Y n6X x2|D ]*}y|||  W q: tk
rb   Y q:X q:W dd	lmama tjatt	d
k rtdtj
t_tjt_tjt_tjjad S )NZQDateZ	QDateTimeZQStringZQTextStreamZQTimeZQUrlZQVariantr   )r   r   z4.6zPyQt<4.6 is not supported)sipImportErrorZsetapir   r   r   r   r   r   r   r   r   r   r   r   r   r   ZgetSaveFileNameAndFilterr!   )apiZ	_sip_apisr#   Z_sip_apir   r   r   _setup_pyqt4_internal^   s&    


z+_setup_pyqt4.<locals>._setup_pyqt4_internal   )r%   r   )r   r   r   __version_info__)   r      zPySide<1.0.3 is not supportedr)   z.Unexpected value for the 'backend.qt4' rcparamc               S   s   dS )NFr   r   r   r   r   r      s    r   )r   QT_API_PYQTv2QT_API_PYSIDEr   r   r   r   r(   r$   r   r    r!   QT_API_PYQTr   r   r   )r&   r(   r   r   r   _setup_pyqt4[   s    
r.   r   zFailed to import any qt bindingzUnexpected QT_API: {}      )r   r   r	   r
   )!__doc__Zdistutils.versionr   ossysZ
matplotlibr   r   r   r+   r,   r-   environgetZ
QT_API_ENVZ_ETSmodulesr   dict__setitem____getitem__KeyErrorRuntimeErrorr"   r.   Z_candidates_setupr$   AssertionErrorformatZETSr   ZQT_RC_MAJOR_VERSIONr   r   r   r   <module>   s   






2




