ó
Ò:\c           @à sÂ  d  Z  d d l m Z m Z m Z m Z d d l Z d d l Z d d l m	 Z	 m
 Z
 m Z m Z d d l 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 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) m* Z* d d l+ m, Z, d d l- m. Z. e j Z/ d e% f d „  ƒ  YZ0 d e# f d „  ƒ  YZ1 d e# f d „  ƒ  YZ2 d e$ f d „  ƒ  YZ3 d e# f d „  ƒ  YZ4 d e# f d „  ƒ  YZ5 d e" f d „  ƒ  YZ6 d e f d „  ƒ  YZ7 d e) f d „  ƒ  YZ8 d  e) f d! „  ƒ  YZ9 d" e& f d# „  ƒ  YZ: d$ e& f d% „  ƒ  YZ; d& e! f d' „  ƒ  YZ< d( e! f d) „  ƒ  YZ= d* e f d+ „  ƒ  YZ> d, „  Z? e@ d- k r¾e? ƒ  n  d S(.   s   Conda Packager Manager Widget.i    (   t   absolute_importt   divisiont   print_functiont   with_statementN(   t   QEventt   QSizet   Qtt   Signal(   t   QApplicationt   QDialogButtonBoxt   QHBoxLayoutt   QProgressBart   QPushButtont   QVBoxLayoutt   QWidget(   t   AnacondaAPI(   t   CONF(   t	   constants(   t   logger(   t   load_style_sheet(
   t
   ButtonBaset   ButtonDangert   ButtonNormalt   ButtonPrimaryt   ComboBoxBaset	   FrameBaset   FrameTabFootert   FrameTabHeadert	   LabelBaset   SpacerHorizontal(   t   LineEditSearch(   t   TableCondaPackagest   ComboBoxPackageFilterc           Bà s5   e  Z d  Z e e ƒ Z d „  Z d „  Z d „  Z RS(   s   Combobox used in CSS styling.c         Oà s0   t  t |  ƒ j | | Ž  |  j j |  j ƒ d S(   s   Combobox used in CSS styling.N(   t   superR    t   __init__t   currentIndexChangedt   connectt   _handle_index_changed(   t   selft   argst   kwargs(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR"   2   s    c         Cà s/   t  | t ƒ r+ |  j j |  j | ƒ ƒ n  d S(   s#   Recreate signal not present in qt4.N(   t
   isinstancet   intt   currentTextChangedt   emitt   itemText(   R&   t   index(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR%   7   s    c         Cà sG   x@ t  |  j ƒ  ƒ D], } | |  j | ƒ k r |  j | ƒ d Sq Wd S(   s#   Recreate method not present in qt4.N(   t   ranget   countR-   t   setCurrentIndex(   R&   t   textt   i(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   setCurrentText<   s    (	   t   __name__t
   __module__t   __doc__R   t   strR+   R"   R%   R4   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR    -   s
   		t   ButtonPackageChannelsc           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR9   D   s   t   ButtonPackageOkc           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR:   H   s   t   ButtonPackageApplyc           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR;   L   s   t   ButtonPackageCancelc           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR<   P   s   t   ButtonPackageUpdatec           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR=   T   s   t   ButtonPackageClearc           Bà s   e  Z d  Z RS(   s   Button used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR>   X   s   t   ProgressBarPackagec           Bà s   e  Z d  Z RS(   s!   Progress bar used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR?   \   s   t   LabelPackageStatusc           Bà s   e  Z d  Z RS(   s   Label used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR@   `   s   t   LabelPackageStatusActionc           Bà s   e  Z d  Z RS(   s   Label used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRA   d   s   t   FramePackageTopc           Bà s   e  Z d  Z RS(   s   Frame used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRB   h   s   t   FramePackageBottomc           Bà s   e  Z d  Z RS(   s   Frame used in CSS styling.(   R5   R6   R7   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRC   l   s   t   FirstRowWidgetc           Bà sD   e  Z d  Z e ƒ  Z d d „ Z e d „  ƒ Z d „  Z	 d „  Z
 RS(   s=   Widget located before table to handle focus in and tab focus.c         Cà s*   t  j |  ƒ | |  _ |  j t j ƒ d S(   s=   Widget located before table to handle focus in and tab focus.N(   R   R"   t   widget_beforet   setAttributeR   t   WA_LayoutUsesWidgetRect(   R&   RE   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR"   y   s    	c           Cà s   t  d d ƒ S(   s   Override Qt method.i    (   R   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   sizeHint   s    c         Cà s   |  j  j ƒ  d S(   s   Override Qt method.N(   t   sig_enter_firstR,   (   R&   t   event(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   focusInEvent„   s    c         Cà sk   | j  ƒ  t j k rW | j ƒ  } | t j g k rD |  j j ƒ  t St	 j
 |  | ƒ Sn t	 j
 |  | ƒ Sd S(   s   Override Qt method.N(   t   typeR   t   KeyPresst   keyR   t   Key_TabRI   R,   t   TrueR   RJ   (   R&   RJ   RN   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRJ   ˆ   s    N(   R5   R6   R7   R   RI   t   NoneR"   t   staticmethodRH   RK   RJ   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRD   t   s   		t   LastRowWidgetc           Bà sV   e  Z d  Z e ƒ  Z d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 e d „  ƒ Z RS(   s=   Widget located after table to handle focus out and tab focus.c         Cà s@   t  j |  ƒ | p g  |  _ |  j t j ƒ |  j t j ƒ d S(   s=   Widget located after table to handle focus out and tab focus.N(   R   R"   t   widgets_afterRF   R   RG   t   setFocusPolicyt   StrongFocus(   R&   RT   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR"   š   s    c         Cà s   |  j  j ƒ  d S(   s   Override Qt method.N(   t   sig_enter_lastR,   (   R&   RJ   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRK   ¡   s    c         Cà s'   | |  j  k r d S|  j  j | ƒ d S(   s   Add after focus widget.N(   RT   t   append(   R&   t   widget(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   add_focus_widget¥   s    c         Cà s<   x+ |  j  D]  } | j ƒ  r
 | j ƒ  d Sq
 W|  j ƒ  d S(   s   Handle tab focus widget.N(   RT   t	   isVisiblet   setFocus(   R&   t   w(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt
   handle_tab¬   s
    
c         Cà sk   | j  ƒ  t j k rW | j ƒ  } | t j g k rD |  j j ƒ  t St	 j
 |  | ƒ Sn t	 j
 |  | ƒ Sd S(   s   Override Qt method.N(   RL   R   RM   RN   R   t   Key_BacktabRW   R,   RP   R   RJ   (   R&   RJ   RN   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRJ   ´   s    c           Cà s   t  d d ƒ S(   s   Override Qt method.i    (   R   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRH   À   s    N(   R5   R6   R7   R   RW   RQ   R"   RK   RZ   R^   RJ   RR   RH   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRS   •   s   					t   CondaPackagesWidgetc           Bà sø   e  Z d  Z e ƒ  Z e ƒ  Z e e e ƒ Z e e e ƒ Z e e ƒ Z	 e e ƒ Z
 e d „ Z d „  Z d „  Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d d d d d „ Z d d „ Z RS(   s   Conda Packages Widget.c         à s¿  t  t ˆ  ƒ j | ƒ | ˆ  _ d ˆ  _ d ˆ  _ d ˆ  _ t ˆ  _	 t
 ƒ  ˆ  _ d ˆ  _ d ˆ  _ d ˆ  _ | ˆ  _ t t j ƒ ˆ  _ t d ƒ ˆ  _ t t d ƒ ƒ ˆ  _ t t d ƒ ƒ ˆ  _ t t d ƒ ƒ ˆ  _ t t d ƒ ƒ ˆ  _ t t d ƒ ƒ ˆ  _  t! ˆ  ƒ ˆ  _" t# ƒ  ˆ  _$ t% ƒ  ˆ  _& t' ˆ  ƒ ˆ  _( t) ˆ  ƒ ˆ  _* t+ ˆ  ƒ ˆ  _, t- ˆ  ƒ ˆ  _. t/ ˆ  ƒ ˆ  _0 ˆ  j ˆ  j ˆ  j" ˆ  j0 ˆ  j. ˆ  j ˆ  j ˆ  j  g ˆ  _1 t2 d ˆ  j0 ƒ ˆ  _3 t4 d	 ˆ  j ˆ  j  ˆ  j g ƒ ˆ  _5 ˆ  j* j6 ƒ  j7 ƒ  } ˆ  j0 j6 ƒ  j8 d
 d ƒ } ˆ  j j9 ˆ  j t j: ƒ ˆ  j j; t< d d ƒ ƒ ˆ  j j= t ƒ ˆ  j j> t? ƒ g  t@ jA D] } | ^ qn} ˆ  j" jB | ƒ ˆ  j" jC d ƒ ˆ  j( jD | d ƒ ˆ  j( jE | d ƒ ˆ  j( jF t ƒ ˆ  j( j= t ƒ ˆ  jG t< d d ƒ ƒ ˆ  jH t d ƒ ƒ ˆ  j* jI | d ƒ ˆ  j0 jE | ƒ ˆ  j0 jJ d ƒ ˆ  j3 jD d ƒ ˆ  j5 jD d ƒ ˆ  j5 j= t ƒ ˆ  j3 j= t ƒ tK ƒ  } | jL ˆ  j" d t jM ƒ | jL tN ƒ  ƒ | jL ˆ  j d t jM ƒ | jL tN ƒ  ƒ | jL ˆ  j d t jM ƒ | jL tN ƒ  ƒ | jL ˆ  j0 d t jM ƒ | jO ƒ  ˆ  j$ jP | ƒ tQ ƒ  } | jL ˆ  j3 ƒ | jL ˆ  j. ƒ | jL ˆ  j5 ƒ tK ƒ  }	 |	 jL ˆ  j, ƒ |	 jL tN ƒ  ƒ |	 jL ˆ  j* ƒ |	 jO ƒ  |	 jL ˆ  j( ƒ |	 jL tN ƒ  ƒ |	 jL ˆ  j ƒ |	 jL tN ƒ  ƒ |	 jL ˆ  j ƒ |	 jL tN ƒ  ƒ |	 jL ˆ  j  ƒ ˆ  j& jP |	 ƒ tQ ˆ  ƒ }
 |
 jL ˆ  j$ ƒ |
 jR | ƒ |
 jL ˆ  j& ƒ ˆ  jP |
 ƒ ˆ  j jS jT ‡  f d †  ƒ ˆ  j" jU jT ˆ  jV ƒ ˆ  j jS jT ˆ  jW ƒ ˆ  j  jS jT ˆ  jX ƒ ˆ  j jS jT ˆ  jY ƒ ˆ  j jS jT ˆ  jZ ƒ ˆ  j0 j[ jT ˆ  j\ ƒ ˆ  j. j] jT ˆ  j^ ƒ ˆ  j. j_ jT ˆ  j` ƒ ˆ  j. ja jT ˆ  j5 jb ƒ ˆ  j. jc jT ‡  f d †  ƒ ˆ  j3 jd jT ˆ  je ƒ ˆ  j5 jf jT ˆ  jg ƒ ˆ  j j= t ƒ d S(   s   Conda Packages Widget.t    t   Cancelt   Channelst   Oks   Update index...t   Applyt   ClearRE   RT   t   Mi   i    ix   g333333ó?i   ià  i,  s   Conda Package Managerg      ø?s   Search Packagesc           à s   ˆ  j  j t j ƒ S(   N(   t   sig_cancel_requestedR,   t   Ct   TAB_ENVIRONMENT(    (   R&   (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   <lambda>H  Ra   c           à s   ˆ  j  j j ƒ  S(   N(   t   table_first_rowRE   R\   (    (   R&   (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyRk   U  Ra   N(h   R!   R`   R"   t   _parentRQ   t   _current_model_indext   _current_action_namet   _current_table_scrollt   Falset   _hide_widgetsR   t   apit   prefixt   style_sheett   messaget   configR	   R   t
   Horizontalt   bboxR<   t   button_cancelR9   t   _t   button_channelsR:   t	   button_okR=   t   button_updateR;   t   button_applyR>   t   button_clearR    t   combobox_filterR   t	   frame_topR   t   frame_bottomR?   t   progress_barR@   t   label_statusRA   t   label_status_actionR   t   tableR   t   textbox_searcht   widgetsRD   Rl   RS   t   table_last_rowt   fontMetricst   heightt   widtht	   addButtont
   ActionRolet   setMaximumSizeR   t
   setVisiblet   setCheckableRP   Ri   t   COMBOBOX_VALUES_ORDEREDt   addItemst   setMinimumWidtht   setMaximumHeightt   setMaximumWidtht   setTextVisiblet   setMinimumSizet   setWindowTitlet   setFixedHeightt   setPlaceholderTextR
   t	   addWidgett   AlignCenterR   t
   addStretcht	   setLayoutR   t	   addLayoutt   clickedR$   R+   t   filter_packaget   apply_multiple_actionst   clear_actionst   show_channelst   update_package_indext   textChangedt   search_packaget   sig_actions_updatedt   update_actionst   sig_status_updatedt   update_statust   sig_next_focusR^   t   sig_previous_focusRI   t   _handle_tab_focusRW   t   _handle_backtab_focus(   R&   t   parentRw   t
   max_heightt	   max_widtht   kt   combo_itemst
   top_layoutt   middle_layoutt   bottom_layoutt   layout(    (   R&   sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR"   Ø   sÒ    										
		
c         Cà sH   |  j  j ƒ  |  j  j rD |  j  j j d d ƒ } |  j  j | ƒ n  d  S(   Ni    (   R‡   R\   t   proxy_modelR.   R1   (   R&   R.   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR°   ^  s    c         Cà s^   |  j  j ƒ  |  j  j rZ |  j  j j ƒ  d } |  j  j j | d ƒ } |  j  j | ƒ n  d  S(   Ni   i    (   R‡   R\   R»   t   rowCountR.   R1   (   R&   t   rowR.   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR±   d  s
    c         Cà s]   |  j  j | | ƒ |  j j ƒ  } |  j j | ƒ |  j | ƒ |  j  j ƒ  |  j j ƒ  d S(   sY  
        Setup packages.

        Populate the table with `packages` information.

        Parameters
        ----------
        packages: dict
            Grouped package information by package name.
        blacklist: list of str
            List of conda package names to be excluded from the actual package
            manager view.
        N(	   R‡   t   setup_modelR   t   currentTextR4   R£   R\   t	   sig_readyR,   (   R&   t   packagest
   model_dataRt   t   combobox_text(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   setupm  s    c         Cà sM   t  j d ƒ |  j j ƒ  } | t j } | t j } |  j j | | ƒ d S(   s#   Apply multiple actions on packages.Ra   N(	   R   t   debugR‡   t   get_actionsRi   t   PIP_PACKAGEt   CONDA_PACKAGEt   sig_packages_action_requestedR,   (   R&   t   actionst   pip_actionst   conda_actions(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR¤   „  s
    c         Cà s   |  j  j ƒ  d S(   s   Clear the table actions.N(   R‡   R¥   (   R&   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR¥   Ž  s    c         Cà s   |  j  j | ƒ d S(   s   Filter packages by type.N(   R‡   t   filter_status_changed(   R&   t   value(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR£   ’  s    c         Cà s   |  j  j | ƒ d S(   s#   Search and filter packages by text.N(   R‡   t   search_string_changed(   R&   R2   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR©   –  s    c         Cà s   |  j  j |  j t j ƒ d S(   s   Show channel dialog.N(   t   sig_channels_requestedR,   R|   Ri   Rj   (   R&   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR¦   š  s    	c         Cà s0   |  j  j t | ƒ ƒ |  j j t | ƒ ƒ d S(   s.   Update visibility of buttons based on actions.N(   R   R‘   t   boolR€   (   R&   t   number_of_actions(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR«   ¡  s    c         Cà s   |  j  j t j ƒ d S(   s   Update pacakge index.N(   t   sig_update_index_requestedR,   Ri   t   ENVIRONMENT_PACKAGE_MANAGER(   R&   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR§   ¦  s    c         Cà s   d  S(   N(    (   R&   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   ordered_widgets¬  s    c         Cà sV   |  j  j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ d S(   s1   Set the enabled status of widgets and subwidgets.N(   R‡   t
   setEnabledR€   R   Rz   R‘   (   R&   RÎ   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   set_widgets_enabled¯  s
    Ra   c   	      Cà s  t  j ƒ  j ƒ  j ƒ  } t | d d ƒ } d } |  j j ƒ  } | j | t j	 t | | d ƒ ƒ } | j | t j	 t | d | d ƒ ƒ } |  j j
 | ƒ |  j j
 | ƒ | d k rÙ | d k rÙ |  j j t ƒ n0 |  j j t ƒ |  j j | ƒ |  j j | ƒ d S(   sä   
        Update status of package widget.

        - progress == None and max_value == None -> Not Visible
        - progress == 0 and max_value == 0 -> Busy
        - progress == n and max_value == m -> Progress values
        g      ð?g       @i    gffffffæ?i   Ng      à?(   R   t   desktopt   availableGeometryR   t   roundR†   R‹   t
   elidedTextR   t
   ElideRightt   setTextR…   RQ   R„   R‘   Rq   RP   t
   setMaximumt   setValue(	   R&   t   actionRv   RÎ   t	   max_valueR   t   max_status_lengtht   msg_percentt   fm(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR­   ·  s     		c         Cà s8   | d k r t ƒ  |  _ n	 | |  _ |  j |  j ƒ d S(   s   Update custom CSS style sheet.N(   RQ   R   Ru   t   setStyleSheet(   R&   Ru   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   update_style_sheet×  s    	N(   R5   R6   R7   R   RÀ   R®   t   objectRÉ   RÐ   RÓ   Rh   R   R"   R°   R±   RQ   RÄ   R¤   R¥   R£   R©   R¦   R«   R§   RÕ   R×   R­   Ræ   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyR`   È   s,   		†				
								 c          Cà sS   d d l  m }  |  ƒ  } t d d ƒ } | j ƒ  | j ƒ  t j | j ƒ  ƒ d S(   s   Run conda packages widget test.i    (   t   qapplicationR²   N(	   t"   anaconda_navigator.utils.qthelpersRè   R`   RQ   Ræ   t   showt   syst   exitt   exec_(   Rè   t   appRY   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt
   local_testâ  s    	

t   __main__(A   R7   t
   __future__R    R   R   R   t   gettextRë   t   qtpy.QtCoreR   R   R   R   t   qtpy.QtWidgetsR   R	   R
   R   R   R   R   t#   anaconda_navigator.api.anaconda_apiR   t   anaconda_navigator.configR   t   anaconda_navigator.utilsR   Ri   t   anaconda_navigator.utils.logsR   t   anaconda_navigator.utils.stylesR   t   anaconda_navigator.widgetsR   R   R   R   R   R   R   R   R   R   t(   anaconda_navigator.widgets.helperwidgetsR   t(   anaconda_navigator.widgets.manager.tableR   R{   R    R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   RC   RD   RS   R`   Rï   R5   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/manager/packages.pyt   <module>   sB   ""4F	!3ÿ 	
