def globals_filtered(): """ Filter globals() varirables with only compatible variables for pickle. https://stackoverflow.com/questions/2960864/how-to-save-all-the-variables-in-the-current-python-session Returns ------- data_out : dict filtered globals() variables. """ from spyder_kernels.utils.nsview import globalsfilter, get_supported_types data = globals() #settings = VariableExplorer.get_settings() data_out = globalsfilter(globals(), check_all=True, filters=tuple(get_supported_types()['picklable']), exclude_private=True, exclude_uppercase=False, exclude_capitalized=True, exclude_unsupported=True, excluded_names=[], exclude_callables_and_modules=True) return data_out
def test_none_values_are_supported(): """Tests that None values are displayed by default""" supported_types = get_supported_types() mode = 'editable' none_var = None none_list = [2, None, 3, None] none_dict = {'a': None, 'b': 4} none_tuple = (None, [3, None, 4], 'eggs') assert is_supported(none_var, filters=tuple(supported_types[mode])) assert is_supported(none_list, filters=tuple(supported_types[mode])) assert is_supported(none_dict, filters=tuple(supported_types[mode])) assert is_supported(none_tuple, filters=tuple(supported_types[mode]))
def test_dict_display(): """Tests for display of dicts.""" long_list = list(range(100)) long_dict = dict(zip(list(range(100)), list(range(100)))) # Simple dict assert value_to_display({0:0, 'a':'b'}) == "{0:0, 'a':'b'}" # Long dict assert (value_to_display(long_dict) == '{0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, ...}') # Short list of lists assert (value_to_display({1:long_dict, 2:long_dict}) == '{1:{0:0, 1:1, 2:2, 3:3, 4:4, ...}, 2:{0:0, 1:1, 2:2, 3:3, 4:4, ...}}') # Long dict of dicts result = ('{(0, 0, 0, 0, 0, ...):[0, 1, 2, 3, 4, ...], ' '(1, 1, 1, 1, 1, ...):[0, 1, 2, 3, 4, ...]}') assert value_to_display({(0,)*100:long_list, (1,)*100:long_list}) == result[:70] + ' ...' # Multiple level dicts assert (value_to_display({0: {1:1, 2:2, 3:3, 4:{0:0}, 5:5}, 1:1}) == '{0:{1:1, 2:2, 3:3, 4:{...}, 5:5}, 1:1}') assert value_to_display({0:0, 1:1, 2:2, 3:DF}) == '{0:0, 1:1, 2:2, 3:Dataframe}' assert value_to_display({0:0, 1:1, 2:[[DF], DATASET]}) == '{0:0, 1:1, 2:[[...], Dataset]}' # Dict of complex object assert value_to_display({0:COMPLEX_OBJECT}) == '{0:defaultdict}' # Dict of composed objects li = {0:COMPLEX_OBJECT, 1:DATASET, 2:2, 3:{0:0, 1:1}, 4:DF} result = '{0:defaultdict, 1:Dataset, 2:2, 3:{0:0, 1:1}, 4:Dataframe}' assert value_to_display(li) == result # Dict starting with a non-supported object (#5313) supported_types = tuple(get_supported_types()['editable']) di = {max: len, 1: 1} assert value_to_display(di) in ( '{builtin_function_or_method:builtin_function_or_method, 1:1}', '{1:1, builtin_function_or_method:builtin_function_or_method}') assert is_supported(di, filters=supported_types)
def test_list_display(): """Tests for display of lists.""" long_list = list(range(100)) # Simple list assert value_to_display([1, 2, 3]) == '[1, 2, 3]' # Long list assert ( value_to_display(long_list) == '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...]') # Short list of lists assert (value_to_display( [long_list] * 3 ) == '[[0, 1, 2, 3, 4, ...], [0, 1, 2, 3, 4, ...], [0, 1, 2, 3, 4, ...]]') # Long list of lists result = '[' + ''.join('[0, 1, 2, 3, 4, ...], ' * 10)[:-2] + ']' assert value_to_display([long_list] * 10) == result[:70] + ' ...' # Multiple level lists assert (value_to_display([[1, 2, 3, [4], 5]] + long_list) == '[[1, 2, 3, [...], 5], 0, 1, 2, 3, 4, 5, 6, 7, 8, ...]') assert value_to_display([1, 2, [DF]]) == '[1, 2, [Dataframe]]' assert value_to_display([1, 2, [[DF], DATASET]]) == '[1, 2, [[...], Dataset]]' # List of complex object assert value_to_display([COMPLEX_OBJECT]) == '[defaultdict]' # List of composed objects li = [COMPLEX_OBJECT, DATASET, 1, {1: 2, 3: 4}, DF] result = '[defaultdict, Dataset, 1, {1:2, 3:4}, Dataframe]' assert value_to_display(li) == result # List starting with a non-supported object (#5313) supported_types = tuple(get_supported_types()['editable']) li = [len, 1] assert value_to_display(li) == '[builtin_function_or_method, 1]' assert is_supported(li, filters=supported_types)
from spyder.config.base import _ from spyder.config.manager import CONF from spyder.py3compat import PY2, is_text_string, to_text_string from spyder.utils import encoding from spyder.utils import icon_manager as ima from spyder.utils.misc import getcwd_or_home, remove_backslashes from spyder.utils.programs import is_module_installed from spyder.utils.qthelpers import (add_actions, create_action, create_toolbutton, create_plugin_layout, MENU_SEPARATOR) from spyder.plugins.variableexplorer.widgets.collectionseditor import ( RemoteCollectionsEditorTableView) from spyder.plugins.variableexplorer.widgets.importwizard import ImportWizard from spyder.widgets.helperwidgets import FinderLineEdit SUPPORTED_TYPES = get_supported_types() if PY2: VALID_VARIABLE_CHARS = r"[a-zA-z0-9_]" else: VALID_VARIABLE_CHARS = r"[^\w+*=¡!¿?'\"#$%&()/<>\-\[\]{}^`´;,|¬]*\w" class NamespaceBrowser(QWidget): """Namespace browser (global variables explorer widget)""" sig_option_changed = Signal(str, object) sig_collapse = Signal() sig_free_memory = Signal() def __init__(self, parent, options_button=None, plugin_actions=[]): QWidget.__init__(self, parent)
from spyder.config.base import _ from spyder.config.main import CONF from spyder.py3compat import is_text_string, to_text_string from spyder.utils import encoding from spyder.utils import icon_manager as ima from spyder.utils.misc import getcwd_or_home from spyder.utils.programs import is_module_installed from spyder.utils.qthelpers import (add_actions, create_action, create_toolbutton, create_plugin_layout, MENU_SEPARATOR) from spyder.plugins.variableexplorer.widgets.collectionseditor import ( RemoteCollectionsEditorTableView) from spyder.plugins.variableexplorer.widgets.importwizard import ImportWizard SUPPORTED_TYPES = get_supported_types() class NamespaceBrowser(QWidget): """Namespace browser (global variables explorer widget)""" sig_option_changed = Signal(str, object) sig_collapse = Signal() sig_free_memory = Signal() def __init__(self, parent, options_button=None, plugin_actions=[]): QWidget.__init__(self, parent) self.shellwidget = None self.is_visible = True self.setup_in_progress = None