##// END OF EJS Templates
promote aliases and flags, to ensure they have priority over config files...
promote aliases and flags, to ensure they have priority over config files add Application.flatten_flags() method, which adjusts the alias and flag dicts, such that they point to the subclass in the Application.classes list when passed to the argv parser. This prevents TerminalInteractiveShell.colors in a config file overriding `--colors` on the command-line, which points to InteractiveShell.colors. Flattening is only done when the answer is unambiguous, so multiply inherited classes (e.g. Launchers in ipcluster) are not touched. also remove now-obsolete manual workaround for this in IPClusterStart closes gh-849

File last commit:

r4609:a661b7c0
r4977:d2ab6923
Show More
rwbase.py
74 lines | 2.3 KiB | text/x-python | PythonLexer
"""Base classes and utilities for readers and writers.
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from base64 import encodestring, decodestring
import pprint
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
def base64_decode(nb):
"""Base64 encode all bytes objects in the notebook."""
for ws in nb.worksheets:
for cell in ws.cells:
if cell.cell_type == 'code':
if 'png' in cell:
cell.png = bytes(decodestring(cell.png))
if 'jpeg' in cell:
cell.jpeg = bytes(decodestring(cell.jpeg))
return nb
def base64_encode(nb):
"""Base64 decode all binary objects in the notebook."""
for ws in nb.worksheets:
for cell in ws.cells:
if cell.cell_type == 'code':
if 'png' in cell:
cell.png = unicode(encodestring(cell.png))
if 'jpeg' in cell:
cell.jpeg = unicode(encodestring(cell.jpeg))
return nb
class NotebookReader(object):
"""A class for reading notebooks."""
def reads(self, s, **kwargs):
"""Read a notebook from a string."""
raise NotImplementedError("loads must be implemented in a subclass")
def read(self, fp, **kwargs):
"""Read a notebook from a file like object"""
return self.read(fp.read(), **kwargs)
class NotebookWriter(object):
"""A class for writing notebooks."""
def writes(self, nb, **kwargs):
"""Write a notebook to a string."""
raise NotImplementedError("loads must be implemented in a subclass")
def write(self, nb, fp, **kwargs):
"""Write a notebook to a file like object"""
return fp.write(self.writes(nb,**kwargs))