
    Je                         d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ  G d de      Z G d de      Zd Zedk(  r e        yy)z+Module checking Spyder runtime dependencies    N)Qt)QColor)	QApplicationQDialogQDialogButtonBoxQHBoxLayoutQVBoxLayoutQLabelQPushButtonQTreeWidgetQTreeWidgetItem)__version__)_)	MANDATORYOPTIONALPLUGIN)ima)SpyderPalettec                       e Zd Zd Zd Zy)DependenciesTreeWidgetc                 X   | j                          t        d      t        d      t        d      t        d      t        d      f}| j                  |       t        t        d      g      }|j	                  d      }|j                  d       |j                  d|       t        t        d	      g      }|j                  d|       t        t        d
      g      }|j                  d|       | j                  |||g       t        |d       D ]  }t        |j                  |j                  |j                  |j                  |j                  g      }|j                         r&|j                  dt!        j"                  d             n|j$                  t&        k(  rO|j                  dt!        j"                  d             |j)                  dt+        t,        j.                               nN|j                  dt!        j"                  d             |j)                  dt+        t,        j0                               |j$                  t&        k(  r|j3                  |       R|j$                  t4        k(  r|j3                  |       x|j3                  |        | j7                          y )NModulezPackage namez
 Required z Installed zProvided features	Mandatoryr   TOptionalzSpyder pluginsc                 6    | j                   j                         S N)modnamelower)xs    =/usr/lib/python3/dist-packages/spyder/widgets/dependencies.py<lambda>z<DependenciesTreeWidget.update_dependencies.<locals>.<lambda>4   s    qyy/@     )keydependency_okdependency_warning   dependency_error)clearr   setHeaderLabelsr   fontsetBoldsetFontaddTopLevelItemssortedr   package_namerequired_versioninstalled_versionfeatureschecksetIconr   iconkindr   setBackgroundr   r   COLOR_WARN_1COLOR_ERROR_1addChildr   	expandAll)	selfdependenciesheadersmandatory_itemr*   optional_itemspyder_plugins
dependencyitems	            r    update_dependenciesz*DependenciesTreeWidget.update_dependencies   s   

X;. 11\?]#Q':%;=W% )!K.)9:""1%Tq$' (:8a& )!,<*=)>?q$'~}nMN %@B 	.J"J$6$6$.$;$;$.$?$?$.$@$@$.$7$7	$9 :D !Q 9:H,Q)= >?""1f]-G-G&HIQ); <=""1f]-H-H&IJ (*&&t,F*''-''-/	.2 	r"   c                 b    t        | j                               D ]  }| j                  |        y r   )rangecolumnCountresizeColumnToContents)r<   cols     r    resize_columns_to_contentsz1DependenciesTreeWidget.resize_columns_to_contentsN   s-    ))+, 	-C'',	-r"   N)__name__
__module____qualname__rD   rJ    r"   r    r   r      s    /b-r"   r   c                       e Zd Zd Zd Zd Zy)DependenciesDialogc                    t        j                  | |       t        t        d            | _        t        t        d            | _        t        |       | _        t        t        d            }t        t        j                        }| j                  dt        dt        d             | j                  t        j                  d             | j!                  d       t#               }|j%                  |       |j'                          |j%                  |       t)               }|j%                  | j                         |j%                  | j                         |j%                  | j
                         |j+                  |       | j-                  |       | j/                  d	d
       |j0                  j3                  | j4                         |j6                  j3                  | j8                         y )NzJOptional modules are not required to run Spyder but enhance its functions.zh<b>Note:</b> New dependencies or changed ones will be correctly detected only after Spyder is restarted.zCopy to clipboardzSpyder z: DependenciestooloptionsFi\  i0  )r   __init__r
   r   labellabel2r   
treewidgetr   r   OksetWindowTitler   setWindowIconr   r5   setModalr   	addWidget
addStretchr	   	addLayout	setLayoutresizeclickedconnectcopy_to_clipboardacceptedaccept)r<   parentbtnbboxhlayoutvlayouts         r    rT   zDependenciesDialog.__init__U   s   v& A B C D
Q  / 0 1 16!/03 0 3 34 	{/0/@B 	C388M23e -#$-$//*$**%$++&'"wC 	D223dkk*r"   c                 n    | j                   j                  |       | j                   j                          y r   )rW   rD   rJ   )r<   r=   s     r    set_datazDependenciesDialog.set_data{   s$    ++L9224r"   c                 `    ddl m} t        j                         j	                   |              y )Nr   )status)spyder.dependenciesrn   r   	clipboardsetText)r<   rn   s     r    rc   z$DependenciesDialog.copy_to_clipboard   s    . ((2r"   N)rK   rL   rM   rT   rl   rc   rN   r"   r    rP   rP   S   s    $+L53r"   rP   c                     ddl m}  | j                  dddd       | j                  dddd       | j                  d	d	d
dt               | j                  dddd       | j                  ddddt               ddlm}  |       }t        d      }|j                  | j                         |j                          t        j                  |j                                y)zRun dependency widget testr   )r=   IPythonzEnhanced Python interpreterz>=20.0
matplotlibzInteractive data plottingz>=1.0sympyzSymbolic Mathematicsz>=10.0)r6   foozNon-existent modulenumpyz Edit arrays in Variable Explorerz>=0.10)qapplicationN)spyderr=   addr   spyder.utils.qthelpersrx   rP   rl   DEPENDENCIESshowsysexitexec_)r=   rx   appdlgs       r    testr      s    # Y	+H\<1LWg'=x"  $UE#8'BWg(JH  . 4
.C
T
"CLL**+HHJHHSYY[r"   __main__) __doc__r~   qtpy.QtCorer   
qtpy.QtGuir   qtpy.QtWidgetsr   r   r   r   r	   r
   r   r   r   ry   r   spyder.config.baser   ro   r   r   r   spyder.utils.icon_managerr   spyder.utils.paletter   r   rP   r   rK   rN   r"   r    <module>r      sm    2   : : :
    ; ; ) .5-[ 5-p.3 .3b. zF r"   