def test_traverse(self):
        from bokeh.objects import PlotObject, traverse_plot_object
        pobject = PlotObject()

        pobject.properties_with_refs = Mock(return_value=['test1', 'test2'])
        pobject.test1 = PlotObject()
        pobject.test2 = 2
        pobject.test3 = PlotObject()
        result = traverse_plot_object(pobject)
        self.assertTrue(pobject.test1 in result)
        self.assertTrue(len(result) == 1)
Beispiel #2
0
 def load_broadcast_attrs(self, attrs, events='existing'):
     """events can be 'existing', or None. 'existing' means
     trigger events only for existing (not new objects).
     None means don't trigger any events.
     """
     models = []
     created = set()
     for attr in attrs:
         typename = attr['type']
         attr = attr['attributes']
         logger.debug('type: %s', typename)
         #logger.debug('attrs: %s', attr)
         _id = attr['id']
         if _id in self._models:
             m = self._models[_id]
             m._block_callbacks = True
             m.load_json(attr, instance=m)
         else:
             cls = PlotObject.get_class(typename)
             m = cls.load_json(attr)
             if m is None:
                 raise RuntimeError('Error loading object from JSON')
             self.add(m)
             created.add(m)
         models.append(m)
     for m in models:
         m.finalize(self._models)
     if events is None:
         self.clear_callback_queue(models)
     elif events is 'existing':
         non_created = [x for x in models if x not in created]
         self.execute_callback_queue(models=non_created)
         self.clear_callback_queue(models=created)
     self.enable_callbacks(models)
     return models
Beispiel #3
0
 def load_broadcast_attrs(self, attrs, events="existing"):
     """events can be 'existing', or None. 'existing' means
     trigger events only for existing (not new objects).
     None means don't trigger any events.
     """
     models = []
     created = set()
     for attr in attrs:
         typename = attr["type"]
         attr = attr["attributes"]
         logger.debug("type: %s", typename)
         # logger.debug('attrs: %s', attr)
         _id = attr["id"]
         if _id in self._models:
             m = self._models[_id]
             m._block_callbacks = True
             m.load_json(attr, instance=m)
         else:
             cls = PlotObject.get_class(typename)
             m = cls.load_json(attr)
             if m is None:
                 raise RuntimeError("Error loading object from JSON")
             self.add(m)
             created.add(m)
         models.append(m)
     for m in models:
         m.finalize(self._models)
     if events is None:
         self.clear_callback_queue(models)
     elif events is "existing":
         non_created = [x for x in models if x not in created]
         self.execute_callback_queue(models=non_created)
         self.clear_callback_queue(models=created)
     self.enable_callbacks(models)
     return models
Beispiel #4
0
 def load_broadcast_attrs(self, attrs, events='existing'):
     """events can be 'existing', or None.   existing means
     trigger events only for existing (not new  objects).
     None means don't trigger any events
     """
     models = []
     created = set()
     for attr in attrs:
         typename = attr['type']
         attr = attr['attributes']
         logger.debug('type: %s', typename)
         #logger.debug('attrs: %s', attr)
         _id = attr['id']
         if _id in self._models:
             m = self._models[_id]
             m._block_callbacks = True
             m.load_json(attr, instance=m)
         else:
             cls = PlotObject.get_class(typename)
             m = cls.load_json(attr)
             if m is None:
                 import pdb;pdb.set_trace()
             self.add(m)
             created.add(m)
         models.append(m)
     for m in models:
         m.finalize(self._models)
     if events is None:
         self.clear_callback_queue(models)
     elif events is 'existing':
         non_created = [x for x in models if x not in created]
         self.execute_callback_queue(non_created)
         self.clear_callback_queue(created)
     self.enable_callbacks(models)
     return models
Beispiel #5
0
 def load_obj(self, ref, asdict=False, modelattrs={}):
     """loads an object from the server.
     if asdict:
         only the json is returned.
     else:
         update the existing copy in _models if it is present
         instantiate a new one if it is not
         and make sure to convert all references into models
     in the conversion from json to objects, sometimes references
     to models need to be resolved.  If there are any json attributes
     being processed, you can pass them in as modelattrs
     """
     typename = ref["type"]
     ref_id = ref["id"]
     url = utils.urljoin(self.base_url, self.docid + "/" + ref["type"] +\
                         "/" + ref["id"] + "/")
     attr = protocol.deserialize_json(self.http_session.get(url).content)
     if not asdict:
         m = PlotObject.get_obj(typename, attr)
         self.add(m)
         m.finalize(self._models)
         m.dirty = False
         return m
     else:
         return attr
Beispiel #6
0
    def test_traverse(self):
        from bokeh.objects import PlotObject, traverse_plot_object
        pobject = PlotObject()

        pobject.properties_with_refs = Mock(return_value=['test1', 'test2'])
        pobject.test1 = PlotObject()
        pobject.test2 = 2
        pobject.test3 = PlotObject()
        result = traverse_plot_object(pobject)
        self.assertTrue(pobject.test1 in result)
        self.assertTrue(len(result) == 1)
Beispiel #7
0
    def test_load_json(self):
        from bokeh.plot_object import PlotObject

        cls = PlotObject.get_class("Plot")
        obj = cls.load_json({'id': 'test_id', 'min_border': 100})
        self.assertEqual(obj._id, 'test_id')
        self.assertEqual(obj.title, '')
        self.assertEqual(obj.min_border, 100)

        obj.load_json({'id': 'test_id', 'title': 'xyz'}, instance=obj)
        self.assertEqual(obj._id, 'test_id')
        self.assertEqual(obj.title, 'xyz')
        self.assertEqual(obj.min_border, 100)
Beispiel #8
0
    def test_load_json(self):
        from bokeh.plot_object import PlotObject

        cls = PlotObject.get_class("Plot")
        obj = cls.load_json({'id': 'test_id', 'min_border': 100})
        self.assertEqual(obj._id, 'test_id')
        self.assertEqual(obj.title, '')
        self.assertEqual(obj.min_border, 100)

        obj.load_json({'id': 'test_id', 'title': 'xyz'}, instance=obj)
        self.assertEqual(obj._id, 'test_id')
        self.assertEqual(obj.title, 'xyz')
        self.assertEqual(obj.min_border, 100)
 def test_r_traverse(self):
     from bokeh.objects import PlotObject, recursively_traverse_plot_object
     pobject1 = PlotObject()
     pobject2 = PlotObject()
     pobject3 = PlotObject()
     pobject4 = PlotObject()
     pobject1.pobject2 = pobject2
     pobject1.pobject3 = pobject3
     pobject3.pobject4 = pobject4
     pobject1.properties_with_refs = Mock(return_value=['pobject2', 'pobject3'])
     pobject3.properties_with_refs = Mock(return_value=['pobject4'])
     resultset = recursively_traverse_plot_object(pobject1)
     expectedset = set([pobject1, pobject2, pobject3, pobject4])
     self.assertEqual(resultset, expectedset)
Beispiel #10
0
 def load_attrs(self, typename, attrs):
     models = []
     for attr in attrs:
         # logger.debug('type: %s', typename)
         # logger.debug('attrs: %s', attr)
         _id = attr['id']
         if _id in self._models:
             m = self._models[_id]
             m.load_json(attr, instance=m)
         else:
             m = PlotObject.get_obj(typename, attr)
             self.add(m)
         models.append(m)
     for m in models:
         m.finalize(self._models)
     return models
Beispiel #11
0
 def load_obj(self, ref, asdict=False):
     """ Unserializes the object given by **ref**, into a new object
     of the type in the serialization.  If **asdict** is True,
     then the raw dictionary (including object type and ref) is 
     returned, and no new object is instantiated.
     """
     # TODO: Do URL and path stuff to read json data from persistence 
     # backend into jsondata string
     jsondata = None
     attrs = protocol.deserialize_json(jsondata)
     if asdict:
         return attrs
     else:
         from bokeh.objects import PlotObject
         objtype = attrs["type"]
         ref_id = attrs["id"]
         cls = PlotObject.get_class(objtype)
         newobj = cls(id=ref_id)
         # TODO: finish this...
         return newobj
Beispiel #12
0
 def test_r_traverse(self):
     from bokeh.objects import PlotObject, recursively_traverse_plot_object
     pobject1 = PlotObject()
     pobject2 = PlotObject()
     pobject3 = PlotObject()
     pobject4 = PlotObject()
     pobject1.pobject2 = pobject2
     pobject1.pobject3 = pobject3
     pobject3.pobject4 = pobject4
     pobject1.properties_with_refs = Mock(
         return_value=['pobject2', 'pobject3'])
     pobject3.properties_with_refs = Mock(return_value=['pobject4'])
     resultset = recursively_traverse_plot_object(pobject1)
     expectedset = set([pobject1, pobject2, pobject3, pobject4])
     self.assertEqual(resultset, expectedset)