
    G@d                       d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZ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mZ ddlm Z m!Z"m#Z$m%Z% ddl&m'Z' dd	l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 dd
l4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZHmIZImJZJmKZK ddlLmMZMmNZN ddlOmPZP ddlQmRZR ddlSmTZT ddlUmVZV ddlWmXZX ddlYmZZZ dZ[dZ\dZ]e^e_f e+            z   Z`d Za G d deb          Zc G d  d!e
          Zd G d" d#ed          Ze G d$ d%e          Zf G d& d'ee5          Zg G d( d)eg          Zh G d* d+e          Zi G d, d-eV          Zj G d. d/eP          Zk G d0 d1eg          Zl G d2 d3eT          Zmd4 Znd5 Zod6 Zpeqd7k    r:dd8lGmrZr  er            Zs eo              ep             est                                 dS dS )9zN
Collections (i.e. dictionary, list, set and tuple) editor widget and dialog.
    N)getsavefilenameto_qvariant)QAbstractTableModelQItemSelectionModelQModelIndexQtSignalSlot)QColorQKeySequence)QApplicationQHBoxLayoutQHeaderViewQInputDialog	QLineEditQMenuQMessageBoxQPushButton
QTableViewQVBoxLayoutQWidget)
FakeObjectnumpypandasPIL)fix_reference_name)display_to_valueget_human_readable_typeget_numeric_numpy_typesget_numpy_type_stringget_object_attrsget_sizeget_type_stringsort_againsttry_to_evalunsorted_uniquevalue_to_display)SpyderConfigurationAccessor)SpyderToolbar)_running_under_pytest)DEFAULT_SMALL_DELTA)get_font)is_binary_stringto_text_stringis_type_text_string)ima)getcwd_or_home)add_actionscreate_actionMENU_SEPARATORmimedata2url)get_search_scoresget_search_regex)CollectionsDelegate)ImportWizard)CustomSortFilterProxy)
BaseDialog)SpyderPalette)PANES_TOOLBAR_STYLESHEETg    .Ad   2   c                     t          | t          t          f          s| S d t          j        d|           D             }|S )zw
    Natural sorting, e.g. test3 comes before test100.
    Taken from https://stackoverflow.com/a/16090640/3110740
    c                 |    g | ]9}|                                 rt          |          n|                                :S  )isdigitintlower).0ts     @lib/python3.11/site-packages/spyder/widgets/collectionseditor.py
<listcomp>znatsort.<locals>.<listcomp>U   s7    OOO!199;;	-QAGGIIOOO    z([0-9]+))
isinstancestrbytesresplit)sxs     rI   natsortrS   N   sC    
 a#u&& OOrx
A7N7NOOOAHrK   c                   *    e Zd ZdZd Zd Zd Zd ZdS )ProxyObjectz&Dictionary proxy to an unknown object.c                     || _         dS )zConstructor.N)__obj__)selfobjs     rI   __init__zProxyObject.__init__\   s    rK   c                 D    t          t          | j                            S )z)Get len according to detected attributes.)lenr!   rW   rX   s    rI   __len__zProxyObject.__len__`   s    #DL11222rK   c                 ~    	 t          | j        |          }n%# t          t          t          t
          f$ r d}Y nw xY w|S )z1Get the attribute corresponding to the given key.N)getattrrW   NotImplementedErrorAttributeError	TypeError
ValueError)rX   keyattribute_toreturns      rI   __getitem__zProxyObject.__getitem__d   sR    	&!(s!;!;#^Y
K 	& 	& 	&!%	&!!s    ::c                     	 t          | j        ||           dS # t          t          t          f$ r Y dS t
          $ r}dt          |          vr Y d}~dS d}~ww xY w)z.Set attribute corresponding to key with value.zcannot set values forN)setattrrW   rc   rb   ra   	ExceptionrM   )rX   re   valuees       rI   __setitem__zProxyObject.__setitem__t   s    	DL#u----->+>? 	 	 	DD 	 	 	&c!ff44 544444	s    A	AAAN)__name__
__module____qualname____doc__rZ   r^   rg   rm   rC   rK   rI   rU   rU   Y   sV        00  3 3 3" " "     rK   rU   c                   ,   e Zd ZdZ e            Z	 	 ddZd ZddZddZ	d	 Z
ej        fd
Z e            fdZ e            fdZ e            fdZ e            dfdZd Zd Zd Zd ZddZd Zd Zej        fdZej        fdZd Zd ZdS )ReadOnlyCollectionsModelz'CollectionsEditor Read-Only Table Model Fc                 ^   t          j        | |           |i }|| _        g | _        || _        || _        || _        d | _        d | _        d | _	        d | _
        d | _        t          |          | _        | j        r| j        dz   | _        g | _        g | _        |                     |           d S )Nz - )r   rZ   _parentscoresnamesminmaxremoteheader0_data
total_rows	showndatakeysr/   titlesizestypesset_data)rX   parentdatar   rx   ry   rz   s          rI   rZ   z!ReadOnlyCollectionsModel.__init__   s    $T6222<D

	#E**
: 	,e+DJ

drK   c                     | j         S )zReturn model datar|   r]   s    rI   get_dataz!ReadOnlyCollectionsModel.get_data   s
    zrK   Nc                 2   || _         |:| j        s3t          |t          t          t
          t          f          r ||          }|| _        t          d          | _	        | j
        rt          d          | _	        t          |t                    rMt	          t          t          |                              | _        | xj        t          d          z  c_        nt          |t                    rMt	          t          t          |                              | _        | xj        t          d          z  c_        nt          |t                    rat	          t          t          |                              | _        | xj        t          d          z  c_        t	          |          | _         nt          |t
                    r	 t          t	          |                                          t                     | _        n6# t"          $ r) t	          |                                          | _        Y nw xY w| xj        t          d          z  c_        | j
        st          d	          | _	        nLt%          |          | _        t'          |          x| _         x}| _        | j
        st          d
          | _	        t          | j         t&                    sst          | j                  dk    rt          d          }nt          d          }| xj        dt)          t          | j                            z   dz   |z   dz   z  c_        nt+          |          }| xj        |z  c_        t          | j                  | _        | j        t.          k    rt0          | _        n| j        | _        | j                                         |                                  t          | j                  r|                                  |                                  dS )zSet model dataNIndexNameTupleListSet)re   
DictionaryKey	Attribute   elementselementz ( ))r|   rz   rL   tuplelistdictsetr~   r*   r{   rx   ranger\   r   r   sortedrS   rc   r!   rU   rM   r#   r}   LARGE_NROWSROWS_TO_LOADrows_loadedsig_setting_dataemitset_size_and_typeupdate_search_lettersreset)rX   r   coll_filterr   	data_types        rI   r   z!ReadOnlyCollectionsModel.set_data   sR   
#DK#4%tS!9:: $;t$$Dzz: 	%V99DLdE"" 	.U3t99--..DIJJ!G**$JJJd## 	.U3t99--..DIJJ!F))#JJJc"" 	.U3t99--..DIJJ!E(("JJdDJJd## 	.."4		#4#4'BBB		 . . . !--				.
 JJ!L//)JJ: ( xx(..DI1<T1B1BBDJB: . ~~$*k22 	$49~~!!Z==Y<<JJ4#c$)nn"5"55;hFLMJJJ'--IJJ)#JJdi..?[((+D#D""$$$   ty>> 	) &&(((

s   
:H 0H87H8c                      j         ||d} j        }d}nd}t          j                    5  t          j        dd            j        r; fdt          ||          D             } fdt          ||          D             }n: fd	t          ||          D             } fd
t          ||          D             }d d d            n# 1 swxY w Y   |r  j        |z    _         j        |z    _        d S | _        | _        d S )Nr   FTignorez?^\w+\.\w+ is deprecated and will be removed in a future version)messagec                 B    g | ]}j         |                  d          S sizer   rG   indexr   rX   s     rI   rJ   z>ReadOnlyCollectionsModel.set_size_and_type.<locals>.<listcomp>   :     : : :" di./7 : : :rK   c                 B    g | ]}j         |                  d          S )typer   r   s     rI   rJ   z>ReadOnlyCollectionsModel.set_size_and_type.<locals>.<listcomp>   r   rK   c                 P    g | ]"}t          j        |                            #S rC   )r"   r   r   s     rI   rJ   z>ReadOnlyCollectionsModel.set_size_and_type.<locals>.<listcomp>   s=     : : :" "$ty'7"899 : : :rK   c                 P    g | ]"}t          j        |                            #S rC   )r   r   r   s     rI   rJ   z>ReadOnlyCollectionsModel.set_size_and_type.<locals>.<listcomp>   s=     : : :" 1di6F1GHH : : :rK   )	r|   r   warningscatch_warningsfilterwarningsrz   r   r   r   )rX   startstop
fetch_morer   r   r   s   `     @rI   r   z*ReadOnlyCollectionsModel.set_size_and_type   s   z=T\E#DJJJ $&& 	: 	:# $IK K K K { 	:: : : : :&+E4&8&8: : :: : : : :&+E4&8&8: : :: : : : :&+E4&8&8: : :: : : : :&+E4&8&8: : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:  	e+DJe+DJJJDJDJJJs   BCCCc                 <    |                      | j                   dS )zLoad all the data.)number_to_fetchN)	fetchMorer}   r]   s    rI   load_allz!ReadOnlyCollectionsModel.load_all   s    t77777rK   c                 T    d }|t           j        k    } | j                  rt          nd}|dk    rut	           j         j        |t                     _        t	           j         j        |t                     _        	  j                            ||           n_#  Y nZxY w|dk    rpt	           j         j        |           j        d j        <   t	           j         j        |           _        	  j                            |           n#  Y nxY w|dk    rpt	           j         j        |           j        d j        <   t	           j         j        |           _        	  j                            |           nr#  Y nnxY w|d	v rg fd
 j        D             }t	           j        ||           _        t	           j        ||           _        t	           j        ||           _         	                                  
                                 dS )zOverriding sort methodc                 4    t          d | D                       S )Nc                 8    g | ]}t          |t                    S rC   )rL   rM   )rG   rR   s     rI   rJ   zEReadOnlyCollectionsModel.sort.<locals>.all_string.<locals>.<listcomp>  s"    ===q
1c**===rK   )all)listlikes    rI   
all_stringz1ReadOnlyCollectionsModel.sort.<locals>.all_string  s    ==H===>>>rK   Nr   )reversesort_key)r   re   r   r      )      c                 *    g | ]}j         |         S rC   r   )rG   re   rX   s     rI   rJ   z1ReadOnlyCollectionsModel.sort.<locals>.<listcomp>+  s    ;;;#djo;;;rK   )r   DescendingOrderr   rS   r$   r   r   sortr   beginResetModelendResetModel)rX   columnorderr   r   r   valuess   `      rI   r   zReadOnlyCollectionsModel.sort  s\   	? 	? 	? B..(j33=77Q;;%dj$).5/68 8 8DJ &dj$).5/68 8 8DJ	wH====q[[+7	8<
@G,I ,I ,IDI't''( &dj$*gNNNDJ
0000q[[+7	8<
@G,I ,I ,IDI't''( &dj$*gNNNDJ
0000v;;;;;;;F$TYHHHDI%dj&'JJJDJ%dj&'JJJDJs$   B! !B&<D D2F Fc                 "    | j         j        rdS dS )zArray column number   r   )rv   proxy_model)rX   qindexs     rI   columnCountz$ReadOnlyCollectionsModel.columnCount2  s    <# 	11rK   c                 >    | j         | j        k    r| j         S | j        S )zArray row numberr}   r   rX   r   s     rI   rowCountz!ReadOnlyCollectionsModel.rowCount9  s#    ?d...?"##rK   c                 *    | j         | j        k    rdS dS )NTFr   r   s     rI   canFetchMorez%ReadOnlyCollectionsModel.canFetchMore@  s    ?T---45rK   c                 h   | j         | j        z
  }|t          ||          }nt          |t                    }|                     | j        | j        |z              |                     t                      | j        | j        |z   dz
             | xj        |z  c_        |                                  d S )Nr   )r}   r   minr   r   beginInsertRowsr   endInsertRows)rX   r   r   reminderitems_to_fetchs        rI   r   z"ReadOnlyCollectionsModel.fetchMoreF  s    ?T%55& ?;;NN <88Nt/#/.@	B 	B 	B[]]D,<!->B	D 	D 	DN*rK   c                     	 |                      | j                            |          d          S # t          t          f$ r t                      cY S w xY w)Nr   )createIndexr   r   RuntimeErrorrd   r   rX   re   s     rI   get_index_from_keyz+ReadOnlyCollectionsModel.get_index_from_keyS  s[    	!##DIOOC$8$8!<<<j) 	! 	! 	!==   	!s   -0 AAc                 @    | j         |                                         S )zReturn current key)r   rowr   s     rI   get_keyz ReadOnlyCollectionsModel.get_keyY  s    y%%rK   c                    |                                 dk    r| j        |                                         S |                                 dk    r| j        |                                         S |                                 dk    r| j        |                                         S | j        | j        |                                                  S )zReturn current valuer   r   r   )r   r   r   r   r   r|   r   s     rI   	get_valuez"ReadOnlyCollectionsModel.get_value]  s    <<>>Q9UYY[[))\\^^q  :eiikk**\\^^q  :eiikk**:di		455rK   c                 ~   |                                 dk    r/t          t          j                  }|                    d           nu|                                 dk     r/t          t          j                  }|                    d           n.t          t          j                  }|                    d           |S )z#Background color depending on valuer   g?r   g?g333333?)r   r   r   	lightGray	setAlphaF)rX   r   colors      rI   get_bgcolorz$ReadOnlyCollectionsModel.get_bgcolorh  s    <<>>Q2<((EOOC    \\^^a2<((EOOB2<((EOOBrK   c                     || _         d | j        D             }t          ||d          }|r-t          | \  | _        }| _        |                                  dS dS )z4Update search letters with text input in search box.c                 ,    g | ]}t          |          S rC   )rM   )rG   re   s     rI   rJ   zBReadOnlyCollectionsModel.update_search_letters.<locals>.<listcomp>x  s    ///cS///rK   z
<b>{0}</b>)templateN)lettersr   r7   zipnormal_textrw   r   )rX   textrx   resultsr*   s        rI   r   z.ReadOnlyCollectionsModel.update_search_lettersu  sj    //TY///#D%,GGG 	/2G},DaJJLLLLL	 	rK   c                     | j         |         S )z_
        Get row name based on model index.
        Needed for the custom proxy model.
        r   rX   row_nums     rI   row_keyz ReadOnlyCollectionsModel.row_key~  s    
 y!!rK   c                     | j         |         S )z_
        Get row type based on model index.
        Needed for the custom proxy model.
        )r   r   s     rI   row_typez!ReadOnlyCollectionsModel.row_type  s    
 z'""rK   c                     |                                 st                      S |                     |          }|                                dk    r<|t          j        k    r,t          | j        |                                                   S |                                dk    r| j        r|d         }|                                dk    rt          || j
                  }nHt          |          rt          |d          }n't          |t                    st          |          }n|}|t          j        k    r3t          |t                    rt          |          S t          |          S |t          j        k    rt          |          S |t          j        k    rt          t          |                    S |t          j        k    r|                                dk    rt%          |                                          dk     r3t          t)          t          j        t          j        z                      S t          t)          t          j        t          j        z                      S t          t)          t          j        t          j        z                      S |t          j        k    r"t          |                     |                    S |t          j        k    r"t          t7          t8                              S t                      S )zCell contentr   r   view)ry   utf-8)encoding)font_size_delta)isValidr   r   r   r   DisplayRolerw   r   rz   r'   ry   r0   r/   rL   NUMERIC_TYPESUserRoleEditRoleTextAlignmentRoler\   
splitlinesrE   	AlignLeftAlignVCenterAlignTopBackgroundColorRoler   FontRoler-   r,   )rX   r   rolerk   displays        rI   r   zReadOnlyCollectionsModel.data  ss   }} 	!== u%%<<>>Q42>#9#9 t{599;;7888<<>>Q4;&ME<<>>Q&uT[AAAGG"5))  (AAA}55  (//2;%// ,"5)))"7+++R^##w'''R[  /66777R)))||~~""w))++,,q00&s2<"/+I'J'JKKK&s2<"++E'F'FGGG"3r|bo'E#F#FGGGR+++t//66777R[  x8KLLLMMM}}rK   c                 B   |t           j        k    rt                      S t          |          }|t           j        k    rU| j        t          d          t          d          t          d          t          d          f}t          ||                   S t                      S )zOverriding method headerDataTypeSizeValueScore)r   r  r   rE   
Horizontalr{   r*   )rX   sectionorientationr  i_columnheaderss         rI   
headerDataz#ReadOnlyCollectionsModel.headerData  s{    2>!!== w<<"-''|QvYY&		1W::zz#Gwx0111== rK   c                     |                                 st          j        S t          j        t	          t          j        | |          t          j        z                      S )zOverriding method flags)r  r   ItemIsEnabled	ItemFlagsrE   r   flagsItemIsEditabler   s     rI   r"  zReadOnlyCollectionsModel.flags  sX     }} 	$##|C 3 9$ F F " 1!2 3 3 4 4 	4rK   c                 V    |                                   |                                  d S N)r   r   r]   s    rI   r   zReadOnlyCollectionsModel.reset  s,    rK   )rt   FFFr%  )NN)rt   )rn   ro   rp   rq   r	   r   rZ   r   r   r   r   r   AscendingOrderr   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r"  r   rC   rK   rI   rs   rs      s       11vxx5:&+   ,  : : : :x       D8 8 8 "$!2 , , , ,\ "-     )[]] $ $ $ $ "-     *kmmT    ! ! !& & &	6 	6 	6     " " "# # #  "~ , , , ,\ 57N 
! 
! 
! 
!4 4 4    rK   rs   c                   8    e Zd ZdZd Zd Zd Zej        fdZ	dS )CollectionsModelzCollections Table Modelc                 x   || j         | j        |                                         <   || j        | j        |                                         <   t	          |          | j        |                                <   t          |          | j        |                                <   | j        	                                 dS )z	Set valueN)
r|   r   r   r~   r"   r   r   r   r   r   )rX   r   rk   s      rI   	set_valuezCollectionsModel.set_value  s    -2
49UYY[[)*16ty-."*5//
599;;"9%"@"@
599;;""$$$$$rK   c                 $   t           j        }|dk    r&|dk    rt           j        }n|dk    rt           j        }n|dk    rt           j        }n|dv rt           j        }n|dv rt           j        }nd|v rt           j        }n|dk    rt           j        }n~|d	k    rt           j        }nk|d
k    rt           j	        }nX|dk    rt           j
        }nE|dv rt           j        }n4|dv sd|v rt           j        }n|dk    rt           j        }nt           j        }|S )z0Get the color that corresponds to a Python type.UnknownArrayScalarbool)rE   floatcomplex)rM   unicodedatetimer   r   r   r   )MaskedArrayMatrixNDArray)	DataFrameSeriesr   zPIL.Image.Image)r=   GROUP_12GROUP_9GROUP_2GROUP_1GROUP_3GROUP_4GROUP_5GROUP_6GROUP_7GROUP_8GROUP_10GROUP_11)rX   python_type
numpy_typer   s       rI   type_to_colorzCollectionsModel.type_to_color  sD    &""W$$%-x''%-F""!)EE777!)EE...!)EE;&&!)EEF""!)EEE!!!)EEG##!)EEF""!)EE@@@!)EE444;&&!*EE---!*EE!*ErK   c                 x   |                      |          }|                                dk     rt                              | |          }np| j        r|d         }|d         }nt          |          }t          |          }|                     ||          }t          |          }|	                    d           |S )z$Background color depending on value.r   rE  rF  g      ?)
r   r   rs   r   rz   r#   r    rG  r   r   )rX   r   rk   r   rE  rF  
color_names          rI   r   zCollectionsModel.get_bgcolor  s    u%%<<>>A,88uEEEE{ :#M2"<0

-e442599
++KDDJ:&&EOOC   rK   c                    |                                 sdS |                                dk     rdS t          ||                     |          d          }|                     ||           | j                            ||           dS )zCell content changeFr   T)ignore_errors)r  r   r   r   r*  dataChangedr   )rX   r   rk   r  s       rI   setDatazCollectionsModel.setData  s    }} 	5<<>>A5 u(=(=/35 5 5ue$$$eU+++trK   N)
rn   ro   rp   rq   r*  rG  r   r   r
  rM  rC   rK   rI   r(  r(    sc        !!% % %$ $ $L  " *, 
 
 
 
 
 
rK   r(  c                   X     e Zd ZdZ eeee          Zd fd	Z fdZ fdZ	d Z
 xZS )BaseHeaderViewz
    A header view for the BaseTableView that emits a signal when the width of
    one of its sections is resized by the user.
    Nc                     t          t          |                               t          j        |           d| _        | j                            | j                   | 	                    d           d S )NFT)
superrO  rZ   r   r  _handle_section_is_pressedsectionResizedconnectsectionResizeEventsetSectionsClickablerX   r   	__class__s     rI   rZ   zBaseHeaderView.__init__*  sc    nd##,,R]FCCC*/'##D$;<<< 	!!$'''''rK   c                     t          t          |                               |           |                                                                 t
          j        k    | _        d S r%  )rQ  rO  mousePressEventcursorshaper   SplitHCursorrR  rX   rl   rX  s     rI   rZ  zBaseHeaderView.mousePressEvent2  sM    nd##33A666+/;;==+>+>+@+@+-?,;'''rK   c                 f    t          t          |                               |           d| _        d S NF)rQ  rO  mouseReleaseEventrR  r^  s     rI   ra  z BaseHeaderView.mouseReleaseEvent7  s/    nd##55a888*/'''rK   c                 P    | j         r| j                            |||           d S d S r%  )rR  sig_user_resized_sectionr   )rX   logicalIndexoldSizenewSizes       rI   rU  z!BaseHeaderView.sectionResizeEvent;  s;    * 	O)..|WgNNNNN	O 	OrK   r%  )rn   ro   rp   rq   r	   rE   rc  rZ   rZ  ra  rU  __classcell__rX  s   @rI   rO  rO  #  s           &vc344( ( ( ( ( (< < < < <
0 0 0 0 0O O O O O O OrK   rO  c                       e Zd ZdZdZ ee          Z ee          Z	 e            Z
 e            Z e            Z fdZd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d  Z* e+            d!             Z, e+            d2d#            Z-d3d%Z. e+            d&             Z/ e+            d4d'            Z0 e+            d5d)            Z1 e+            d*             Z2d+ Z3d, Z4 e+            d-             Z5 e+            d.             Z6 e+            d/             Z7d4d0Z8 e+            d1             Z9 xZ:S )6BaseTableViewz!Base collection editor table viewvariable_explorerc                 n   t                                          |           d | _        d | _        g | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        d | _        d | _        d | _        d | _        |                     d           d| _        |                     t9          |                      |                                 j                            | j                    d S )N)r   rt   T)!rQ  rZ   array_filenamemenumenu_actionsempty_ws_menupaste_actioncopy_actionedit_actionplot_actionhist_actionimshow_actionsave_array_actioninsert_actioninsert_action_aboveinsert_action_belowremove_actionminmax_actionrename_actionduplicate_action
last_regexview_actiondelegater   source_modelsetAcceptDropsautomatic_column_widthsetHorizontalHeaderrO  horizontalHeaderrc  rT  user_resize_columnsrW  s     rI   rZ   zBaseTableView.__init__J  sE   '''"	! !!%!#' #' !!! $ D!!!&*#  t!<!<!<===8@@$	& 	& 	& 	& 	&rK   c                    |                                                      d           |                                                      d           |                                  |                     d           |                     dt          j                   |                                 j	        
                    | j                   dS )zSetup tableTr   N)r  setStretchLastSectionsetSectionsMovableadjust_columnssetSortingEnabledsortByColumnr   r&  selectionModelselectionChangedrT  refresh_menur]   s    rI   setup_tablezBaseTableView.setup_tablej  s    55d;;;224888t$$$!R.///.66t7HIIIIIrK   c                 	    t           t          d          t          j        d           j                  }t           t          d          t          j        d           j                  }t           t          d          t          j        d           j                   _        t           t          d          t          j        d	           j                   _	        t           t          d
          t          j        d           j
                   _        t           t          d          t          j        d           fd           _         j                            d           t           t          d          t          j        d           fd           _         j                            d           t           t          d          t          j        d           j                   _         j                            d           t           t          d          t          j        d           j                   _         j                            d           t           t          d          t          j        d           fd           _        t           t          d          t          j        d           fd           _        t           t          d          t          j        d           fd           _        t           t          d           t          j        d!           j                   _        t           t          d"          t          j        d#           j                   _        t           t          d$          t          j        d%           j                   _        t           t          d&          t          j        d'           j                   _        t=                     } j         j	         j         j         j         j        t>           j         j         j         j        t>           j         j         j         j        t>          ||g _         tC          | j                    t=                      _"        tC           j"         j         j        g           |S )(zSetup context menuzResize rows to contentscollapse_row)icon	triggeredzResize columns to contentscollapse_columnPaste	editpasteCopyeditcopyEditeditPlotplotc                  .                          d          S )Nr  	plot_itemr]   s   rI   <lambda>z*BaseTableView.setup_menu.<locals>.<lambda>      dnnV44 rK   F	Histogramhistc                  .                          d          S )Nr  r  r]   s   rI   r  z*BaseTableView.setup_menu.<locals>.<lambda>  r  rK   z
Show imageimshow
Save arrayfilesaveInsertinsertc                  0                          d          S NFbelowinsert_itemr]   s   rI   r  z*BaseTableView.setup_menu.<locals>.<lambda>      d..U.;; rK   zInsert aboveinsert_abovec                  0                          d          S r  r  r]   s   rI   r  z*BaseTableView.setup_menu.<locals>.<lambda>  r  rK   zInsert belowinsert_belowc                  0                          d          S )NTr  r  r]   s   rI   r  z*BaseTableView.setup_menu.<locals>.<lambda>  s    d..T.:: rK   Remove
editdeleteRenamerename	Duplicateedit_addzView with the Object Exploreroutline_explorer)#r4   r*   r1   r  resizeRowsToContentsresize_column_contentspasterq  copyrr  	edit_itemrs  rt  
setVisibleru  imshow_itemrv  
save_arrayrw  rx  ry  rz  remove_itemr{  rename_itemr}  duplicate_itemr~  	view_itemr  r   r5   ro  r3   rp  )rX   resize_actionresize_columns_actionrn  s   `   rI   
setup_menuzBaseTableView.setup_menut  s   %dA.G,H,H+.8N+C+C040IK K K !.*+++,,1	!3 !3 !3
 *$'

/2x/D/D48J@ @ @ )qyy.1hz.B.B379> > > )qyy.1hv.>.>37>C C C )!F))&!!4444
 
 

 	##E***(!K..&!!4444
 
 

 	##E****4<030B0B595EG G G 	%%e,,,!.tQ|__47HZ4H4H9="J "J "J 	))%000*!H++(##;;;;
 
 

 $1!N##.));;;;$
 $
 $
 
 $1!N##.))::::$
 $
 $
 
 +48030F0F595EG G G +48030B0B595EG G G !.dAkNN368J3G3G8<8K!M !M !M )-..,--n	& & & T{{"$$!!'
* 	D$+,,,"4[[!23	
 	
 	

 rK   c                     t           )Remove values from datara   )rX   r   s     rI   remove_valueszBaseTableView.remove_values      !!rK   c                     t           )
Copy valuer  )rX   orig_keynew_keys      rI   
copy_valuezBaseTableView.copy_value  r  rK   c                     t           )Create new value in datar  )rX   re   rk   s      rI   	new_valuezBaseTableView.new_value  r  rK   c                     t           )z3Return True if variable is a list, a set or a tupler  r   s     rI   is_listzBaseTableView.is_list  r  rK   c                     t           Return sequence lengthr  r   s     rI   get_lenzBaseTableView.get_len  r  rK   c                     t           z(Return True if variable is a numpy arrayr  r   s     rI   is_arrayzBaseTableView.is_array  r  rK   c                     t           ,Return True if variable is a PIL.Image imager  r   s     rI   is_imagezBaseTableView.is_image  r  rK   c                     t           'Return True if variable is a dictionaryr  r   s     rI   is_dictzBaseTableView.is_dict  r  rK   c                     t           Return array's shaper  r   s     rI   get_array_shapezBaseTableView.get_array_shape  r  rK   c                     t           Return array's ndimr  r   s     rI   get_array_ndimzBaseTableView.get_array_ndim  r  rK   c                     t           )	Edit itemr  r   s     rI   oeditzBaseTableView.oedit  r  rK   c                     t           )	Plot itemr  )rX   re   funcnames      rI   r  zBaseTableView.plot  r  rK   c                     t           )Show item's imager  r   s     rI   r  zBaseTableView.imshow
  r  rK   c                     t           ) Show image (item is a PIL image)r  r   s     rI   
show_imagezBaseTableView.show_image  r  rK   c                 	                                      } j                                        }t          |t                    }t          |t
                    } fd}t          |t          t          f           oJ|                                o6t           
                                          dk    o |            o j         } j                            |            j                            |            j                            |            j                            |            j                            |            j                            |            j                            |            j                            |            j                            |           |                                o$t           
                                          dk    } j                            |o	 |                        j                            |           t          |t          t          f           o@|                                o,t           
                                          dk    o j         } j                            |            j                            |o j                     j                            |o j                    |                                r j        r j                            |          }	n j                            |          }	                     |	          }
                     |	          o                     |	          dk    }|o%t                                |	                    dk    }|o !                    |	          dk    }|o !                    |	          dk    }|p "                    |	          }n
dx}x}x}x}
} j        #                    |p|
            j        #                    |p|
            j        #                    |            j        #                    |            j        #                    |            j        #                    |            j        #                    |            j        #                    |            j        #                    |           dS )zRefresh context menuc                                                       } t          |           dk    r,d | D             }t          t          |                    dk    S dS )Nr   c                 6    g | ]}|                                 S rC   r   rG   idxs     rI   rJ   zKBaseTableView.refresh_menu.<locals>.indexes_in_same_row.<locals>.<listcomp>  s     555c		555rK   T)selectedIndexesr\   r   )indexesrowsrX   s     rI   indexes_in_same_rowz7BaseTableView.refresh_menu.<locals>.indexes_in_same_row  sT    **,,G7||a55W5553t99~~**trK   r   r   r   FN)$currentIndexr  r   rL   r   r   r   r   r  r\   r  readonlyrs  
setEnabledry  rz  r~  r}  rt  ru  rv  rw  r  rr  r{  rx  rq  r   r   r  r  r  r  r  r  r  )rX   r   r   is_list_instanceis_dict_instancer  condition_editcondition_selectcondition_removere   r  r  condition_plotcondition_histcondition_imshows   `              rI   r  zBaseTableView.refresh_menu  s   !!## ))++%dD11%dD11	 	 	 	 	 D5#,/// MMOO%%''((1,  !!  	 	##N333 ++N;;; ++N;;;((888%%n555##N333##N333%%n555)).999 MMOO .%%''((1, 	 	##6!4!4!6!6	8 	8 	8##$4555 D5#,/// MMOO%%''((1, 	 	 	%%&6777%%2T]!2	4 	4 	4$$2T]!2	4 	4 	4 ==?? 	. 7&..u55'//66ll3''G}}S))Ddll3.?.?1.DH&N3t/C/CC/H/H+I+IQ+NN&H4+>+>s+C+Cq+HN-O$2E2Ec2J2Ja2O/E4==3E3E )..H .~ .(8 .7%##N$=g>>>##N$=g>>>%%&6777 ++,<=== ++,<===%%&6777$$%5666%%&6777))(33333rK   c                 <    d| _         |                                  dS )zResize columns to contents.TN)r  r  r]   s    rI   r  z$BaseTableView.resize_column_contentsc  s"    &*#rK   c                     d| _         dS )zHandle the user resize action.FN)r  )rX   logical_indexold_sizenew_sizes       rI   r  z!BaseTableView.user_resize_columnsh  s    &+###rK   c                 f    | j         r't          d          D ]}|                     |           dS dS )z$Resize two first columns to contentsr   N)r  r   resizeColumnToContents)rX   cols     rI   r  zBaseTableView.adjust_columnsl  sM    & 	1Qxx 1 1++C0000	1 	11 1rK   c                     |[| j                             || j                   | j                                          |                     dt
          j                   dS dS )zSet table dataNr   )r  r   
dictfilterr   r  r   r&  rX   r   s     rI   r   zBaseTableView.set_datar  s_    &&tT_===##%%%a!233333 rK   c                    |                                 t          j        k    rt          j        | |           dS |                     |                                          }|                                r[||                                 k    r,|| 	                                v r| 
                                 dS t          j        | |           dS | 
                                 |                                 dS Reimplement Qt methodN)buttonr   
LeftButtonr   rZ  indexAtposr  r  r  clearSelectionaccept)rX   eventindex_clickeds      rI   rZ  zBaseTableView.mousePressEventy  s    <<>>R]**&tU333FUYY[[11  "" 	 1 1 3 333 D$8$8$:$:::##%%%%%*477777!!!LLNNNNNrK   c                 &   |                      |                                          }|                                rA|                                }|                    |d          }|                     |           dS |                                 dS )r   r   N)r#  r$  r  r   childr  r&  )rX   r'  r(  r   s       rI   mouseDoubleClickEventz#BaseTableView.mouseDoubleClickEvent  s~    UYY[[11  "" 	##%%C)//Q77MIIm$$$$$LLNNNNNrK   c                    |                                 t          j        k    r|                                  dS |                                 t          j        k    r|                                  dS |t          j        k    r|                                  dS |t          j	        k    r| 
                                 dS t          j        | |           dS )zReimplement Qt methodsN)re   r   
Key_Deleter  Key_F2r  r   r  r  r  r  r   keyPressEventrX   r'  s     rI   r/  zBaseTableView.keyPressEvent  s    99;;"-''YY[[BI%%l'''IIKKKKKl(((JJLLLLL$T511111rK   c                 J   | j         j        rV|                                  | j                            |                                           |                                 dS | j                            |                                           |                                 dS r  )r  r~   r  rn  popup	globalPosr&  rp  r0  s     rI   contextMenuEventzBaseTableView.contextMenuEvent  s    & 	IOOEOO--...LLNNNNN$$U__%6%6777LLNNNNNrK   c                     t          |                                          r|                                 dS |                                 dS )zAllow user to drag filesN)r6   mimeDatar&  r   r0  s     rI   dragEnterEventzBaseTableView.dragEnterEvent  s>    (()) 	LLNNNNNLLNNNNNrK   c                     t          |                                          r5|                    t          j                   |                                 dS |                                 dS )zAllow user to move filesN)r6   r6  setDropActionr   
CopyActionr&  r   r0  s     rI   dragMoveEventzBaseTableView.dragMoveEvent  sT    (()) 	...LLNNNNNLLNNNNNrK   c                    t          |                                          }|rO|                    t          j                   |                                 | j                            |           dS |                                 dS )z"Allow user to drop supported filesN)	r6   r6  r9  r   r:  r&  sig_files_droppedr   r   )rX   r'  urlss      rI   	dropEventzBaseTableView.dropEvent  sr    ENN,,-- 	...LLNNN"''-----LLNNNNNrK   c                     |                                                      |t          j                   |                                                      |t          j                   dS )a  
        Deselect index after any operation that adds or removes rows to/from
        the editor.

        Notes
        -----
        * This avoids showing the wrong buttons in the editor's toolbar when
          the operation is completed.
        * Also, if we leave something selected, then the next operation won't
          introduce the item in the expected row. That's why we need to force
          users to select a row again after this.
        N)r  selectr   SelectDeselectr   s     rI   _deselect_indexzBaseTableView._deselect_index  sV     	$$U,?,FGGG$$U,?,HIIIIIrK   c                     |                                  }|                                sdS |                     |                    |                                d                     dS )r  Nr   )r  r  r  r*  r   r   s     rI   r  zBaseTableView.edit_item  sX     !!##}} 	F		%++eiikk1--.....rK   Fc                                                       }                                 }|sdS |D ]}|                                s dS |snt          d          }t          d          }t	          j         t          d          t          |          dk    r|n|t          j        t          j        z            }|s|t          j        k    r_ j	        rt           fd|D                       }nt          d |D                       } fd|D             }	                     |	           t                      s                     |           dS dS )	zRemove itemNz(Do you want to remove the selected item?z)Do you want to remove all selected items?r  r   c                 h    g | ].}j                             |                                          /S rC   r   mapToSourcer   rG   r  rX   s     rI   rJ   z-BaseTableView.remove_item.<locals>.<listcomp>  sF     ) ) ) %11#66::<< ) ) )rK   c                 6    g | ]}|                                 S rC   r  r  s     rI   rJ   z-BaseTableView.remove_item.<locals>.<listcomp>  s     +I+I+I#CGGII+I+I+IrK   c                 4    g | ]}j         j        |         S rC   )r  r   )rG   idx_rowrX   s     rI   rJ   z-BaseTableView.remove_item.<locals>.<listcomp>  s$    LLLD%*73LLLrK   )r  r  r  r*   r   questionr\   YesNor   r&   r  r+   rD  )
rX   forcecurrent_indexr  r   onemoreansweridx_rowsr   s
   `         rI   r  zBaseTableView.remove_item  s    ))++&&(( 	F 	 	E==??   	L>??C@AAD )$(14W1B1B##*5/KN*JL LF  	%Fko-- K*) ) ) ) ') ) )* * ++I+I+I+I+IJJLLLL8LLLDt$$$ $%% 	0  /////	0 	0rK   Nc                 H                                      }                                 }|sdS  j        rt           fd|D                       }nt          d |D                       }t	          |          dk    s|d                                         sdS  j        j        |d                  }|rft          |t                    s2t          j         t          d          t          d                     dS t          d          }t          d	          }nt          d
          }t          d          } j                                        }	t          |	t          t          f          rt	          |	          d}}
n,||d}}
n%t!          j         ||t$          j        |          \  }
}|rat)          |
          rRt+          t)          |
                    }
|
|k    rdS                      ||
           |r                     |g                                |           dS )z	Copy itemNc                 h    g | ].}j                             |                                          /S rC   rH  rJ  s     rI   rJ   z+BaseTableView.copy_item.<locals>.<listcomp>
  s6    LLLS!--c226688LLLrK   c                 6    g | ]}|                                 S rC   r  r  s     rI   rJ   z+BaseTableView.copy_item.<locals>.<listcomp>  s     'E'E'Ec		'E'E'ErK   r   r   Warningz)You can only rename keys that are stringsr  zNew variable name:r  zVariable name:T)r  r  r   r&   r\   r  r  r   rL   rM   r   warningr*   r   r   r   r   getTextr   Normalr/   r%   r  r  rD  )rX   erase_originalnew_namerR  r  rV  r  r   
field_textr   r  valids   `           rI   	copy_itemzBaseTableView.copy_item   sD   ))++&&(( 	F 	G&LLLLGLLLN NHH ''E'EW'E'E'EFFHx==1GAJ$6$6$8$8F$)(1+6 	-h,, #iLLABB  
 hKKE/00JJkNNE+,,J ))++dT3K(( 	N YYUGG!%tUGG)1$z2;2BHN NNGU  	/^G,, 	/!."9"9::G(""OOHg... /""H:...]+++++rK   c                 .    |                                   dS )zDuplicate itemNrb  r]   s    rI   r  zBaseTableView.duplicate_item4  s     	rK   c                 4    |                      d|           dS )zRename itemT)r^  r_  Nrd  )rX   r_  s     rI   r  zBaseTableView.rename_item9  s      	dX>>>>>rK   Tc                 P   |                                  }|                                s| j                                        }n| j        r_|r0| j                            |                                          dz   }n[| j                            |                                          }n.|r|                                dz   }n|                                }| j                                        }t          |t                    r|}|
                    |d           nt          |t                    rnt          j        | t          d          t          d          t          j                  \  }}|r,t#          |          rt%          t#          |                    }ndS dS t          j        | t          d          t          d          t          j                  \  }}|rAt#          |          r4|                     |t%          t#          |                               dS dS dS )zInsert itemr   rt   r  zKey:NzValue:)r  r  r  r   r   rI  r   r   rL   r   r  r   r   r\  r*   r   r]  r/   r%   r  )rX   r  r   r   r   re   ra  rk   s           rI   r  zBaseTableView.insert_item>  s    !!##}} 	&#,,..CC 	& D*66u==AACCaGCC*66u==AACCCC &))++/CC))++C ))++dD!! 	CKKR    d## 	%-dAhKK6.7.>@ @JC ,, !."5"566F#+D!H++q{{,5,<> >u  	D^E** 	DNN3N5,A,A B BCCCCC	D 	D 	D 	DrK   c                     |                                  }|                                sdS |                    |                                d          }| j                            | d|d           dS )z"View item with the Object ExplorerNr   T)object_explorer)r  r  r*  r   r  createEditorr   s     rI   r  zBaseTableView.view_itemd  sj     !!##}} 	FEIIKK++""4ud"KKKKKrK   c           	          	 dd l }dS #  	 dt          j        vrdd l}Y dS # t          $ r5 t          j        | t          d          t          d                     Y Y d S w xY wxY w)Nr   T
matplotlibzImport errorz2Please install <b>matplotlib</b> or <b>guiqwt</b>.)guiqwt.pyplotsysmodulesrk  rj   r   r[  r*   )rX   guiqwtrk  s      rI   __prepare_plotzBaseTableView.__prepare_plotn  s    	=    4	==s{22%%%%tt = = =#D!N*;*;$% '; %< %<= = = = = = ==s$    A" :AA"AA"c           	         |                                  }|                                 r| j        r3| j                            | j                            |                    }n| j                            |          }	 |                     ||           dS # t          t          f$ rK}t          j
        | t          d          t          d          t          |          z             Y d}~dS d}~ww xY wdS )r  r  z7<b>Unable to plot data.</b><br><br>Error message:<br>%sN)r  _BaseTableView__prepare_plotr   r  r   rI  r  rd   rc   r   criticalr*   rM   )rX   r  r   re   errors        rI   r  zBaseTableView.plot_item|  s#   !!##   	7 7'//$00779 9 '//667		#x(((((	* 7 7 7$T1f::%& (F &) &)+.u::&67 7 7 7 7 7 7 7 77	7 	7s   >B C2'A C--C2c           	      D   |                                  }|                                 r| j        r3| j                            | j                            |                    }n| j                            |          }	 |                     |          r|                     |           dS |                     |           dS # t          t          f$ rK}t          j        | t          d          t          d          t          |          z             Y d}~dS d}~ww xY wdS )zImshow itemr  z8<b>Unable to show image.</b><br><br>Error message:<br>%sN)r  rr  r   r  r   rI  r  r  r  rd   rc   r   rs  r*   rM   )rX   r   re   rt  s       rI   r  zBaseTableView.imshow_item  sO    !!##   	7 7'//$00779 9 '//66	7==%% %OOC(((((KK$$$$$	* 7 7 7$T1f::%& (F &) &)+.u::&67 7 7 7 7 7 7 7 77	7 	7s   >*C *C DA DDc           	      N   t          d           }| j        t                      | _        | j                            d           t          | || j        t          d          dz             \  }}| j                            d           |r|| _        | j                            |                                           }	 ddl	} |j
        | j        |           dS # t          $ r>}t          j        | |t          d          t          |          z             Y d}~dS d}~ww xY wdS )r  NFzNumPy arraysz (*.npy)Tr   z7<b>Unable to save array</b><br><br>Error message:<br>%s)r*   rm  r2   redirect_stdior   r   r  r   r  r   saverj   r   rs  rM   )rX   r   filename
_selfilterr   nprt  s          rI   r  zBaseTableView.save_array  sh    <  &"0"2"2D  '''.tU/3/B/0/@/@:/M O  O* 	  &&& 
	7"*D=**4+<+<+>+>??D7""""+T22222 7 7 7$T5%& (F &) &)+.u::&67 7 7 7 7 7 7 7 77
	7 
	7s   >C 
D"$3DD"c           	         t          j                    }g }|                                 D ]1}|                                s| j                            |          }t          |t          j        t          j	        j
        f          rt          j        t          urt          j                    }	 t          j        ||d           nB# t          $ r5 t!          j        | t%          d          t%          d                     Y  dS w xY w|                                                    d          }|                                 nt          |t,          j        t,          j        f          rt,          j        t          urt          j                    }	 |                    |ddd           nB# t          $ r5 t!          j        | t%          d          t%          d	                     Y  dS w xY w|                                }|                                 n/t7          |          rt9          |d
          }nt9          |          }|                    |           3|                    d                    |                     dS )zCopy text to clipboard	)	delimiterrZ  z&It was not possible to copy this arrayNr  T)sepr   headerz*It was not possible to copy this dataframeutf8
) r   	clipboardr  r  r  r   rL   r{  ndarraymar4  r   ioBytesIOsavetxtrj   r   r[  r*   getvaluedecodeclosepdr7  r8  StringIOto_csvr.   r/   appendsetTextjoin)rX   r  cliplr  rY   outputs         rI   r  zBaseTableView.copy  sk    !*,,	'')) "	 "	C;;== -))#..C 3RU-> ?@@ *Jj00Jvsd;;;;;    'a	ll() +7 )8 )89 9 9 FFF	
 oo''..w77S2<";<< *L
22JJv4tDJIIII    'a	ll() +; )< )<= = = FFF	
 oo''!#&& *$S&11$S))LL$))E**+++++s$   .C:DDF,,:G+*G+c                    | j                                         }t          |d          sdS t          | ||t	          d          t          dt          |                                                              }|                                r/|                                \  }}| 	                    ||           dS dS )zImport data from stringr   NzClipboard contentsr   )	blacklist)r   contents_titlevarname)
r  r   hasattrr:   r*   r   r   r   exec_r  )rX   r   r   r   editorvar_name	clip_datas          rI   import_from_stringz BaseTableView.import_from_string  s     ))++tV$$ 	F$eA6J4K4K&vdiikk9J9JKKKM M M <<>> 	0"(//"3"3HiNN8Y/////	0 	0rK   c                    t          j                    }d}|                                                                r!t	          |                                          }|                                r&|                     |t          d                     dS t          j
        | t          d          t          d                     dS )z$Import text/data/code from clipboardrt   zImport from clipboard)r   zEmpty clipboardz&Nothing to be imported from clipboard.N)r   r  r6  hasTextr/   r   stripr  r*   r   r[  )rX   r  cliptexts      rI   r  zBaseTableView.paste  s     !*,,	'')) 	8%inn&6&677H>> 	M##HA6M4N4N#OOOOOa):&;&; !"J K KM M M M MrK   )F)FNr%  )T);rn   ro   rp   rq   CONF_SECTIONr	   r   r=  r/  rw  sig_free_memory_requestedsig_editor_creation_startedsig_editor_shownrZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rZ  r+  r/  r4  r7  r;  r?  rD  r
   r  r  rb  r  r  r  r  rr  r  r  r  r  r  r  rg  rh  s   @rI   rj  rj  @  s       ++&LtVD\\N &"(&((vxx& & & & &@J J Jc c cL" " "" " "" " "" " "" " "" " "" " "" " "" " "" " "" " "" " "" " "" " "
N4 N4 N4`  
, , ,1 1 14 4 4   	 	 	2 2 2        J J J  
TVV/ / V/ 
TVV 0  0  0 V 0D2, 2, 2, 2,h 
TVV  V 
TVV? ? ? V? 
TVV#D #D #D V#DJ 
TVVL L VL= = =7 7 7" 
TVV7 7 V7( 
TVV7 7 V7, 
TVV', ', V',R0 0 0 0 
TVV
M 
M V
M 
M 
M 
M 
MrK   rj  c                       e Zd ZdZ	 	 ddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zd Zd ZddZdS )CollectionsEditorTableViewzCollectionsEditor table viewFrt   c           	         t                               | |           d | _        |pt          |t          t
          f          | _        | j        rt          nt          } || |||| 	                    d                    | _
        | j
        | _        |                     | j
                   t          |           | _        |                     | j                   |                                  |                                 | _        t          |t
                    r)|                                                     d           d S d S )Nry   )rx   ry   r   )rj  rZ   r  rL   r   r   r	  rs   r(  get_confr  modelsetModelr9   r  setItemDelegater  r  rn  r  hideSection)rX   r   r   r	  r   rx   CollectionsModelClasss          rI   rZ   z#CollectionsEditorTableView.__init__  s1   tV,,, BJteS\$B$B=A] "7!9!9&6 	11==**
 
 
 &
d'(((+D11T]+++OO%%	dC   	3!!##//22222	3 	3rK   c                     | j                                         }t          |d          D ]}|                    |           |                     |           dS )r  Tr   N)r  r   r   popr   )rX   r   r   re   s       rI   r  z(CollectionsEditorTableView.remove_values  s[     ))++$--- 	 	CHHSMMMMdrK   c                 :   | j                                         }t          |t                    r|                    ||                    t          |t
                    r|                    ||                    n||         ||<   |                     |           dS r  N)r  r   rL   r   r  r   addr   )rX   r  r  r   s       rI   r  z%CollectionsEditorTableView.copy_value!  s     ))++dD!! 	(KKX'''dC   	+HHT(^$$$$ NDMdrK   c                     |                                  }| j                                        }|||<   |                     |           |                     |           dS )r  N)r  r  r   r   rD  )rX   re   rk   r   r   s        rI   r  z$CollectionsEditorTableView.new_value,  s\    !!## ))++S	dU#####rK   c                 x    | j                                         }t          ||         t          t          f          S )z,Return True if variable is a list or a tuple)r  r   rL   r   r   rX   re   r   s      rI   r  z"CollectionsEditorTableView.is_list4  s.     ))++$s)eT]333rK   c                 j    | j                                         }t          ||         t                    S )z Return True if variable is a set)r  r   rL   r   r  s      rI   is_setz!CollectionsEditorTableView.is_set9  s*     ))++$s)S)))rK   c                     | j                                         }|                     |          r|                     |          S t	          ||                   S r  )r  r   r  r  r\   r  s      rI   r  z"CollectionsEditorTableView.get_len>  sN     ))++== 	"&&s+++tCy>>!rK   c                     | j                                         }t          ||         t          j        t          j        j        f          S r  )r  r   rL   r{  r  r  r4  r  s      rI   r  z#CollectionsEditorTableView.is_arrayF  s6     ))++$s)bj"%2C%DEEErK   c                 ~    | j                                         }t          ||         t          j        j                  S r  )r  r   rL   r   Imager  s      rI   r  z#CollectionsEditorTableView.is_imageK  s.     ))++$s)SY_555rK   c                 j    | j                                         }t          ||         t                    S r  )r  r   rL   r   r  s      rI   r  z"CollectionsEditorTableView.is_dictP  s*     ))++$s)T***rK   c                 N    | j                                         }||         j        S r  )r  r   r\  r  s      rI   r  z*CollectionsEditorTableView.get_array_shapeU  s"     ))++CyrK   c                 N    | j                                         }||         j        S r  )r  r   ndimr  s      rI   r  z)CollectionsEditorTableView.get_array_ndimZ  s"     ))++Cy~rK   c                 f    | j                                         }ddlm}  |||                    dS )r  r   )r  N)r  r   4spyder.plugins.variableexplorer.widgets.objecteditorr  )rX   re   r   r  s       rI   r  z CollectionsEditorTableView.oedit_  sN     ))++	 	 	 	 	 	d3irK   c                     | j                                         }ddlm} |                                  t          ||          ||                    |                                 dS )r  r   N)r  r   spyder.pyplotpyplotfigurer`   show)rX   re   r  r   plts        rI   r  zCollectionsEditorTableView.plotf  sd     ))++######

XtCy)))




rK   c                     | j                                         }ddlm} |                                 |                    ||                    |                                 dS )r  r   N)r  r   r  r  r  r  r  )rX   re   r   r  s       rI   r  z!CollectionsEditorTableView.imshown  s\     ))++######



49




rK   c                 l    | j                                         }||                                          dS )r  N)r  r   r  r  s      rI   r  z%CollectionsEditorTableView.show_imagev  s0     ))++S	rK   Nc                     || _         dS )zSet table dict filterN)r  )rX   r  s     rI   
set_filterz%CollectionsEditorTableView.set_filter|  s    $rK   Frt   Fr%  )rn   ro   rp   rq   rZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   rK   rI   r  r    s,       &&;=3 3 3 32  	 	 	$ $ $4 4 4
* * *
" " "F F F
6 6 6
+ + +
  
  
        % % % % % %rK   r  c                   &    e Zd ZdZddZd Zd ZdS )	CollectionsEditorWidgetzDictionary Editor WidgetFrt   c                 "   t          j        | |           |rt          | ||          | _        nt	          | |||          | _        t          d d          }|                    t          t                               | j        j	        D ]}||
                    |           | j                                         t                      }|                    |           |                    | j                   |                     |           d S )NzEditor toolbar)r   r   )r   rZ    RemoteCollectionsEditorTableViewr  r  r)   setStyleSheetrM   r>   ro  	addActionr  r   	addWidget	setLayout)	rX   r   r   r	  r   rz   toolbaritemlayouts	            rI   rZ   z CollectionsEditorWidget.__init__  s   v&&& 	<:4;CE EDKK 5T45:< <DK  t3CDDDc":;;<<<K, 	( 	(D!!$''' 	  """!!!%%%vrK   c                 :    | j                             |           dS )zSet DictEditor dataN)r  r   r  s     rI   r   z CollectionsEditorWidget.set_data  s    T"""""rK   c                 $    | j         j        j        S )zGet model title)r  r  r   r]   s    rI   	get_titlez!CollectionsEditorWidget.get_title  s    {'--rK   Nr  )rn   ro   rp   rq   rZ   r   r  rC   rK   rI   r  r    sL        ""   .# # #. . . . .rK   r  c                   \     e Zd ZdZd	 fd	Z	 	 d
dZ e            d             Zd Z xZ	S )CollectionsEditorzCollections Editor DialogNc                     t                                          |           |                     t          j                   d | _        d | _        d | _        d | _        d S r%  )	rQ  rZ   setAttributer   WA_DeleteOnClose	data_copywidgetbtn_save_and_close	btn_closerW  s     rI   rZ   zCollectionsEditor.__init__  sU        	"-..."&rK   rt   Fc                    t          |t          t          f          r|                                | _        nt          |t
          t          f          r|dd         | _        neddl}	 |                    |          | _        nE# t          $ r |                    |          | _        Y nt          t          f$ r d}|| _        Y nw xY wt          | j                  t          |          k    rd}t          | | j        |||          | _        | j        j        j        j                            | j                   t'                      }|                    | j                   |                     |           t-                      }	|	                    dddd           |	                                 |syt3          t5          d                    | _        | j                            d           | j        j                            | j                   |	                    | j                   t3          t5          d                    | _        | j                             d           | j        !                    d           | j        j                            | j"                   |	                    | j                   |#                    |	           | $                    | j        %                                           |'| &                    tO          j(        d                     tR          j*        d	k    r!| +                    tX          j-                   dS | +                    tX          j.                   dS )
zSetup editor.Nr   T)r   r	  rz   r   zSave and CloseClosedicteditdarwin)/rL   r   r   r  r  r   r   deepcopyra   rc   rb   r   r  r  r  r  r   rT  save_and_close_enabler   r  r  r   setContentsMargins
addStretchr   r*   r  setDisabledclickedr&  r  setAutoDefault
setDefaultreject	addLayoutsetWindowTitler  setWindowIconr1   r  rm  platformsetWindowFlagsr   ToolWindow)
rX   r   r   r	  rz   r  r   r  r  
btn_layouts
             rI   setupzCollectionsEditor.setup  s$    dT3K(( 	&!YY[[DNNudm,, 	&!!!!WDNN KKK&!%t!4!4& 1 1 1!%4~. & & &!%& 4::--H-dDN49H5;= = = 	'8@@&	( 	( 	(%%%v !]]
%%aAq111 	:&1!4D2E2E&F&FD##//555#+33DK@@@  !8999$QwZZ00%%d+++!!$'''&&t{333T^,,,$$$DK1133444<sx
33444<8##((((( 	*****s   (B $C)CCc                     | j         rP| j                             d           | j                             d           | j                             d           dS dS )zAHandle the data change event to enable the save and close button.TN)r  r
  r  r  r]   s    rI   r  z'CollectionsEditor.save_and_close_enable  sd     " 	5#..t444#224888#..t44444	5 	5rK   c                     | j         S )z*Return modified copy of dictionary or list)r  r]   s    rI   r   zCollectionsEditor.get_value  s     ~rK   r%  )rt   FFNN)
rn   ro   rp   rq   rZ   r  r
   r  r   rg  rh  s   @rI   r  r    s        ##      <A $>+ >+ >+ >+@ 
TVV5 5 V5      rK   r  c                   &    e Zd ZdZddZd Zd ZdS )RemoteCollectionsDelegatezCollectionsEditor Item DelegateNc                 0    t          j        | |           d S r%  )r9   rZ   )rX   r   s     rI   rZ   z"RemoteCollectionsDelegate.__init__
  s    $T622222rK   c                 ,   |                                 r|                                                    |          }|                                j        |                                         }|                                                     |          S d S r%  )r  r  rI  r   r   r   r   )rX   r   source_indexnames       rI   r   z#RemoteCollectionsDelegate.get_value  sx    ==?? 	1 ;;==44U;;L%%'',\-=-=-?-?@D;;==**4000	1 	1rK   c                 2   |                                 r|                                                    |          }|                                j        |                                         }|                                                     ||           d S d S r%  )r  r  rI  r   r   r   r  )rX   r   rk   r  r  s        rI   r*  z#RemoteCollectionsDelegate.set_value  s    ==?? 	1 ;;==44U;;L%%'',\-=-=-?-?@DKKMM##D%00000	1 	1rK   r%  )rn   ro   rp   rq   rZ   r   r*  rC   rK   rI   r  r    sL        ))3 3 3 31 1 11 1 1 1 1rK   r  c                        e Zd ZdZ	 	 ddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z fdZddZd Zd Z xZS )r  zDictEditor table viewNFc                    t                               | |           || _        i | _        d | _        d | _        d| _        d | _        t          | |d| 	                    d          d          | _
        |                                 j                            | j
        j                   t          |           | _        | j        | _        | j                            | j
                   | j                            d           | j                            d           | j                            t,          j                   | j                            t,          j                   |                     | j                   |                     d           t9          |           | _        | j        j                            | j                   | j        j                            | j                   | j        j                            | j                   |                      | j                   | !                                 |r| "                                | _#        d S d S )NFTry   )rx   ry   rz   r   r   )$rj  rZ   shellwidgetvar_propertiesr  r  r	  finderr(  r  r  r  sectionClickedrT  r    CollectionsCustomSortFilterProxyr   r  setSourceModelsetDynamicSortFiltersetFilterKeyColumnsetFilterCaseSensitivityr   CaseInsensitivesetSortRoler	  r  
hideColumnr  r  r  r  r  r  r  rn  )rX   r   r   r  remote_editingcreate_menus         rI   rZ   z)RemoteCollectionsEditorTableView.__init__  s$   tV,,,& ,$d==**  
 	.66&	( 	( 	( <DAA%
''(9:::--d333++A...11"2DEEE$$R[111d&'''1$77/77*	, 	, 	,199,	. 	. 	.&..t/DEEET]+++ 	*))DIII	* 	*rK   c                 :    | j                             |          }|S )zGet the value of a variable)r  r   )rX   r  rk   s      rI   r   z*RemoteCollectionsEditorTableView.get_valueJ  s     **400rK   c           	         	 | j                             ||           nJ# t          $ r=}t          j        | t          d          dt          |          z             Y d}~nd}~ww xY w| j                                          dS )r  ErrorzTypeError: %sN)r  r*  rc   r   rs  r*   r/   refresh_namespacebrowser)rX   r  rk   rl   s       rI   r  z*RemoteCollectionsEditorTableView.new_valueO  s    	F&&tU3333 	F 	F 	F qzz!0>!3D3D!DF F F F F F F F	F 	1133333s    
A%3A  A%c                 v    |D ]}| j                             |           | j                                          dS )r  N)r  remove_valuer  )rX   rx   r  s      rI   r  z.RemoteCollectionsEditorTableView.remove_valuesX  sF     	0 	0D))$////1133333rK   c                 n    | j                             ||           | j                                          dS r  )r  r  r  )rX   	orig_namer_  s      rI   r  z+RemoteCollectionsEditorTableView.copy_value^  s6    ##Ix8881133333rK   c                 (    | j         |         d         S )z3Return True if variable is a list, a tuple or a setr  r  rX   r  s     rI   r  z(RemoteCollectionsEditorTableView.is_listc      "4(33rK   c                 (    | j         |         d         S )r  r  r  r  s     rI   r  z(RemoteCollectionsEditorTableView.is_dictg  r  rK   c                 (    | j         |         d         S )r  r\   r  r  s     rI   r  z(RemoteCollectionsEditorTableView.get_lenk  s    "4(//rK   c                 (    | j         |         d         S )z(Return True if variable is a NumPy arrayr  r  r  s     rI   r  z)RemoteCollectionsEditorTableView.is_arrayo      "4(44rK   c                 (    | j         |         d         S )r  r  r  r  s     rI   r  z)RemoteCollectionsEditorTableView.is_images  r#  rK   c                 (    | j         |         d         S )z&Return True if variable is a DataFrameis_data_framer  r  s     rI   r&  z.RemoteCollectionsEditorTableView.is_data_framew  s    "4(99rK   c                 (    | j         |         d         S )z#Return True if variable is a Series	is_seriesr  r  s     rI   r(  z*RemoteCollectionsEditorTableView.is_series{  s    "4(55rK   c                 (    | j         |         d         S )r  array_shaper  r  s     rI   r  z0RemoteCollectionsEditorTableView.get_array_shape  s    "4(77rK   c                 (    | j         |         d         S )r  
array_ndimr  r  s     rI   r  z/RemoteCollectionsEditorTableView.get_array_ndim  s    "4(66rK   c                 J    | j         }|                    d|d|           dS )r  z
%varexp --r   Nr  execute)rX   r  r  sws       rI   r  z%RemoteCollectionsEditorTableView.plot  s/    



44899999rK   c                 D    | j         }|                    d|z             dS )r  z%%varexp --imshow %sNr.  )rX   r  r0  s      rI   r  z'RemoteCollectionsEditorTableView.imshow  s(    


)D011111rK   c                 H    d|z  }| j         }|                    |           dS )r  z	%s.show()Nr.  )rX   r  commandr0  s       rI   r  z+RemoteCollectionsEditorTableView.show_image  s,    $


7rK   c                 :    t                               |           }|S )zSetup context menu.)rj  r  )rX   rn  s     rI   r  z+RemoteCollectionsEditorTableView.setup_menu  s    ''--rK   c                 Z    | j         r"t                                                       d S d S r%  )r  rQ  r  )rX   rX  s    rI   r  z-RemoteCollectionsEditorTableView.refresh_menu  s4     	#GG  """""	# 	#rK   c                    |s | j         | j                                         sd}n?| j                                                             dd                                          }| j                            |           | j                            |           |r |                     dt          j
                   || _        dS )z.Update the regex text for the variable finder.Nrt   r   r   )r  r   replacerF   r   r  r  r   r  r   r   r  )rX   regexr   r   s       rI   	set_regexz*RemoteCollectionsEditorTableView.set_regex  s     	?DK't{/?/?/A/A'DD;##%%--c266<<>>D##D)))//555 	5a!3444rK   c                     |                                                                  }| j                                        }|dz   |k    rd}|                     |dz              dS )z-Move to next row from currently selected row.r   Nr  r   r   r   	selectRowrX   r   r  s      rI   next_rowz)RemoteCollectionsEditorTableView.next_row  sa    !!%%''((**7d??CsQwrK   c                     |                                                                  }| j                                        }|dk    r|}|                     |dz
             dS )z1Move to previous row from currently selected row.r   r   Nr<  r>  s      rI   previous_rowz-RemoteCollectionsEditorTableView.previous_row  s]    !!%%''((**!88CsQwrK   )NFFr`  )rn   ro   rp   rq   rZ   r   r  r  r  r  r  r  r  r  r&  r(  r  r  r  r  r  r  r  r9  r?  rA  rg  rh  s   @rI   r  r    s       FK"** ** ** **Z  
4 4 44 4 44 4 4
4 4 44 4 40 0 05 5 55 5 5: : :6 6 68 8 87 7 7: : :
2 2 2
    
# # # # #                          rK   r  c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
r
  z
    Custom column filter based on regex and model data.

    Reimplements 'filterAcceptsRow' to follow NamespaceBrowser model.
    Reimplements 'set_filter' to allow sorting while filtering
    c                 z    |                      |          }|                                                     |          S )z%Return current key from source model.)rI  sourceModelr   rX   r   r  s      rI   r   z(CollectionsCustomSortFilterProxy.get_key  s5    ''..!!)),777rK   c                 z    |                                                      |          }|                     |          S )z)Return index using key from source model.)rD  r   mapFromSource)rX   re   r  s      rI   r   z3CollectionsCustomSortFilterProxy.get_index_from_key  s5    ''))<<SAA!!,///rK   c                 z    |                      |          }|                                                     |          S )z'Return current value from source model.)rI  rD  r   rE  s      rI   r   z*CollectionsCustomSortFilterProxy.get_value  s5    ''..!!++L999rK   c                     	 |                      |          }|                                                     ||           dS # t          $ r Y dS w xY w)zSet value in source model.N)rI  rD  r*  rb   )rX   r   rk   r  s       rI   r*  z*CollectionsCustomSortFilterProxy.set_value  sd    	++E22L((u===== 	 	 	DD	s   =A 
AAc                 V    t          |          | _        |                                  dS )z"Set regular expression for filter.N)r8   patterninvalidateFilter)rX   r   s     rI   r  z+CollectionsCustomSortFilterProxy.set_filter  s)    '--rK   c                 *   |                                  }t          |                    |                    }t          |                    |                    }t	          j        | j        |          }t	          j        | j        |          }||dS dS )z
        Qt override.

        Reimplemented from base class to allow the use of custom filtering
        using to columns (name and type).
        NFT)rD  r/   r   r   rO   searchrK  )rX   r   r   r  r  variable_typer_namer_types           rI   filterAcceptsRowz1CollectionsCustomSortFilterProxy.filterAcceptsRow  s       ""emmG4455&u~~g'>'>??4<..4<77>fn54rK   c                 b   |                                                      |          }|                                                      |          }	 t          |t                    r5t          |t                    r t	          |          t	          |          k     S ||k     S # t
          $ r Y dS w xY w)z
        Implements ordering in a natural way, as a human would sort.
        This functions enables sorting of the main variable editor table,
        which does not rely on 'self.sort()'.
        T)rD  r   rL   rM   rS   rc   )rX   leftrightleftData	rightDatas        rI   lessThanz)CollectionsCustomSortFilterProxy.lessThan  s     ##%%**400$$&&++E22			(C(( ,Z	3-G-G ,x((79+=+===)++ 	 	 	 44		s   A	B  B   
B.-B.N)rn   ro   rp   rq   r   r   r   r*  r  rR  rX  rC   rK   rI   r
  r
    s         8 8 8
0 0 0
: : :
       
  $    rK   r
  c                    
 t           j                            t          j                            dd          d          } dt          j                            dd          ddgd	t          j        d
dd          
t          j	        ddd          }	 ddl
} |j        d          } |j        dd          } |j        ddd          } |j        dg di          } |j        g dg dg dg d d!          }n!# t           t"          f$ r d}dx}x}x}}Y nw xY w G 
fd"d#t$                    } |            }	i d$|	d%t          d&d'd(t'          d)d*          d+dd,t(          dd-gd.dgd/h d0d1d
|gd.dfd2d3d4d5d6d7d8d9t          j                            dd                              t          j                  d:t          j                            ddgddggd8d;gd;d;gg<          d=t          j        d>d                              t          j                  d?t          j                            dd@                              t          j                  dAt          j        g           dB| i dC
dDt          j        d
dddEddt9          dF                    dG|dHdIdJt          j        dI          dKt          j        dL          dMt          j        d          dNt          j         dO          dPt          j!        dQ          dRt          j        dS          dTt          j        dO          dUt          j"        dQ          dVt          j#        dS          dWt          j        d          dX|dY|dZ|||dt          j$        t          j%        t          j&        d[d\d]g^          d_S )`zCreate test data.   )r?   r?   r   P)moder   
   r   )dabi  r      r;  *      )daysminutessecondsr   Nz1945-05-08T23:01:00.12345i     )rd  hoursz1939-09-01Tz
1939-10-0612H)r   endfreqseries_name)r   r   r   r   r   r   )r_  r`  cr^  )r   r   r   r   )g?g@gffffff
@g@)TFFT)
string_colint_col	float_colbool_colc                       e Zd Z fdZdS )get_test_data.<locals>.Foobarc                 2    d| _         | _        | _        d S )Ntoto)r   testdicttestdate)rX   rw  rv  s    rI   rZ   z&get_test_data.<locals>.Foobar.__init__+  s    DI$DM$DMMMrK   N)rn   ro   rp   rZ   )rw  rv  s   rI   Foobarrs  )  s3        	% 	% 	% 	% 	% 	% 	% 	%rK   rx  objectmodulerM   zkjkj kj k j j kj k jkjr2  u   éùr  r   r      kjkjr   >   FNABCr   r   r   r   r   r0  g&S?rE      r/  Tarraymasked_arrayF)maskz1D-arrayiz3D-array)r   r   r   empty_arrayimagedater3     g    OA	timedeltar1  y       @      ?	complex64
complex128y              "@int8_scalarint16_scalar   int32_scalar    int64_scalar@   float16_scalarfloat32_scalarfloat64_scalarbool__scalar	timestamptimedelta_pddatetimeindexi  )IDf8)param1r  i  )dtype)series
ddataframeNoneunsupported1unsupported2big_struct_array)'r   r  	fromarrayr{  randomrandintrandr3  r  r  r   	Timestamp	Timedelta
date_ranger8  r7  ModuleNotFoundErrorImportErrorry  r/   r   astypeint64r  r  linspacefloat16bool_rE   r  r  int8int16int32float32float64arccoscastzeros)r  test_timedeltar  test_timestamp
test_pd_tdtest_dtindextest_seriestest_dfrx  foobarrw  rv  s             @@rI   get_test_datar    s   I	 1 1#J 1 G G%(   * *ERY^^B331a&AAH}T1a((H'RRHHHNI
 &&ABB!R\t2666
$r}=)5*/1 1 1  bi0B0B0B CDD",.B.B.B+7<<-A-A-A,F,F,F H  H I I  - H H HCGGGGl[[[H% % % % % % % % % % % VXXF+Hf +b+++ ~fg66+ QFAq>648	+
 AAA+ q(Hn=vtL+ H+ V+ 3+ D+ RY^^B++2228<<+ BEKK!Q!Q(8/3UmeU^-L ( N N+ C,,33BJ??+ 	))!))<<CCBHMM+  28B<<!+" U#+ +$ H%+& )$1b!QE

KK'+( )+* v++, f---+. "-++/+0 271::1+2 BHRLL3+4 BHRLL5+6 BHRLL7+8 bjnn9+: bjnn;+< bjnn=+> BHQKK?+@ A+B JC+D \E+ +F "!IG "l6L6N !O !O !OS+ + + +s   D D D c                      t                      } |                     t                                 |                                  dS )zTest Collections editor.N)r  r  r  r  )dialogs    rI   editor_testr  _  s4      F
LL!!!
KKMMMMMrK   c                     ddl m}  ddlm}m} i }|D ]}|                     d|          ||<    |t                      |          }t                      }|                    |d           |	                                 dS )zTest remote collections editor.r   )CONF)make_remote_viewREMOTE_SETTINGSrk  T)rz   N)
spyder.config.managerr  spyder_kernels.utils.nsviewr  r  getr  r  r  r  )r  r  r  settingsr  rz   r  s          rI   remote_editor_testr  f  s    ******> > > > > > > > H = ="5t<<moox88F  F
LLL%%%
KKMMMMMrK   __main__)qapplication)urq   r3  r  rO   rm  r   qtpy.compatr   r   qtpy.QtCorer   r   r   r   r	   r
   
qtpy.QtGuir   r   qtpy.QtWidgetsr   r   r   r   r   r   r   r   r   r   r    spyder_kernels.utils.lazymodulesr   r   r{  r   r  r   spyder_kernels.utils.miscr   r  r   r   r   r    r!   r"   r#   r$   r%   r&   r'   spyder.api.config.mixinsr(   spyder.api.widgets.toolbarsr)   spyder.config.baser*   r+   spyder.config.fontsr,   spyder.config.guir-   spyder.py3compatr.   r/   r0   spyder.utils.icon_managerr1   spyder.utils.miscr2   spyder.utils.qthelpersr3   r4   r5   r6   spyder.utils.stringmatchingr7   r8   ;spyder.plugins.variableexplorer.widgets.collectionsdelegater9   4spyder.plugins.variableexplorer.widgets.importwizardr:   spyder.widgets.helperwidgetsr;   2spyder.plugins.variableexplorer.widgets.basedialogr<   spyder.utils.paletter=   spyder.utils.stylesheetr>   MAX_SERIALIZED_LENGHTr   r   rE   r0  r  rS   ry  rU   rs   r(  rO  rj  r  r  r  r  r  r
  r  r  r  rn   r  appr  rC   rK   rI   <module>r     s     				 				 



  5 4 4 4 4 4 4 4M M M M M M M M M M M M M M M M + + + + + + + +@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8                          A @ @ @ @ @ 5 5 5 5 5 5 6 6 6 6 6 6 6 6 3 3 3 3 3 3 & & & & & &3 3 3 3 3 3 3 3 3 3 ) ) ) ) ) ) , , , , , ,> > > > > > > > > > > > K K K K K K K K      M M M M M M > > > > > > I I I I I I . . . . . . < < < < < <    e66888  ' ' ' ' '& ' ' 'TN N N N N2 N N Nb
L L L L L/ L L L^O O O O O[ O O O:{
M {
M {
M {
M {
MJ ; {
M {
M {
M|@% @% @% @% @% @% @% @%F .  .  .  .  .g  .  .  .F] ] ] ] ]
 ] ] ]F1 1 1 1 1 3 1 1 1&e  e  e  e  e } e  e  e PH H H H H'< H H H\L L L^      z333333
,..CKMMMIIKKKKK rK   