'Push the given document to the server and record it as session.document.
If this is called more than once, the Document has to be the same (or None
to mean "session.document").
.. note::
Automatically calls :func:`~connect` before pushing.
Args:
document (:class:`~bokeh.document.Document`, optional) :
The document which will be kept in sync with the server document.
None to use session.document or create a new document.'

def push(self, document=None):

    if (self._document is None):
        if (document is None):
            doc = Document()
        else:
            doc = document
    elif (document is None):
        doc = self._document
    else:
        raise ValueError('Cannot    push()    a    different    document    from    existing    session.document')
    self.connect()
    if (not self._connection.connected):
        raise IOError("Cannot    push    session    document    because    we    failed    to    connect    to    the    server    (to    start    the    server,    try    the    'bokeh    serve'    command)")
    self._connection.push_doc(doc)
    if (self._document is None):
        self._attach_document(doc)
