class_docstr: PerspectiveViewer wraps the `perspective.Table` API and exposes an API
  around creating views, loading data, and updating data.
class_docstr_tok: ["PerspectiveViewer","wraps","the","`","perspective.Table","`","API","and","exposes","an","API","around","creating","views",",","loading","data",",","and","updating","data","."]
docstr: Restore a given set of attributes, passed as kwargs
  (e.g. dictionary). Symmetric with `save` so that a given viewer's
  configuration can be reproduced.
docstr_tok: ["Restore","a","given","set","of","attributes",",","passed","as","kwargs","(","e.g",".","dictionary",")",".","Symmetric","with","`","save","`","so","that","a","given","viewer's","configuration","can","be","reproduced","."]
code: def restore(self, **kwargs):
      """Restore a given set of attributes, passed as kwargs
      (e.g. dictionary). Symmetric with `save` so that a given viewer's
      configuration can be reproduced."""
      for k, v in kwargs.items():
          if k in PerspectiveViewer.PERSISTENT_ATTRIBUTES:
              setattr(self, k, v)
  
file_path: perspective/python/perspective/perspective/viewer/viewer.py
imports: from random import random
  from ..libpsp import is_libpsp
  from .validate import validate_aggregates, validate_split_by, validate_columns, validate_expressions, validate_filter, validate_plugin, validate_plugin_config, validate_group_by, validate_sort
  from .viewer_traitlets import PerspectiveTraitlets
label_desc: Use image node_id 8 for calling the PerspectiveViewer obj's underlying member method code with example usage: obj.restore() without return types