##// END OF EJS Templates
add dirty trick for readline import on OSX...
add dirty trick for readline import on OSX also made the libedit warning extremely loud, so people don't miss it. We still get reports of people never having noticed the warning, and getting confused when readline is broken on OSX. The reason for the dirty trick: pip installs to site-packages by default, but site-packages dirs always come *after* lib-dynload (and extras, etc.), which is where the system readline is installed. That means that a non-setuptools install (pip or setup.py install) *cannot* override any package that ships with OSX, including: numpy, readline, twisted, pyobjc without installing to a non-standard path (not even user site-packages via `--user`). The method for the dirty trick: 1. remove lib-dynload from sys.path before trying to import readline the first time 2. after import, restore lib-dynload to its place in sys.path 3. if import failed without lib-dynload, try it one more time

File last commit:

r4609:a661b7c0
r5206:387dcd6a
Show More
rwbase.py
74 lines | 2.3 KiB | text/x-python | PythonLexer
Brian E. Granger
More review changes....
r4609 """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
#-----------------------------------------------------------------------------
Brian E. Granger
Adding nbformat subpackage.
r4392 from base64 import encodestring, decodestring
Brian E. Granger
Full versioning added to nbformat.
r4406 import pprint
Brian E. Granger
Adding nbformat subpackage.
r4392
Brian E. Granger
More review changes....
r4609 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def base64_decode(nb):
Brian E. Granger
Adding nbformat subpackage.
r4392 """Base64 encode all bytes objects in the notebook."""
Brian E. Granger
Full versioning added to nbformat.
r4406 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))
Brian E. Granger
Finishing display system work....
r4528 if 'jpeg' in cell:
cell.jpeg = bytes(decodestring(cell.jpeg))
Brian E. Granger
Adding nbformat subpackage.
r4392 return nb
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def base64_encode(nb):
Brian E. Granger
Adding nbformat subpackage.
r4392 """Base64 decode all binary objects in the notebook."""
Brian E. Granger
Full versioning added to nbformat.
r4406 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))
Brian E. Granger
Finishing display system work....
r4528 if 'jpeg' in cell:
cell.jpeg = unicode(encodestring(cell.jpeg))
Brian E. Granger
Adding nbformat subpackage.
r4392 return nb
class NotebookReader(object):
Brian E. Granger
More review changes....
r4609 """A class for reading notebooks."""
Brian E. Granger
Adding nbformat subpackage.
r4392
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"""
Brian E. Granger
Full versioning added to nbformat.
r4406 return self.read(fp.read(), **kwargs)
Brian E. Granger
Adding nbformat subpackage.
r4392
class NotebookWriter(object):
Brian E. Granger
More review changes....
r4609 """A class for writing notebooks."""
Brian E. Granger
Adding nbformat subpackage.
r4392
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"""
Brian E. Granger
Full versioning added to nbformat.
r4406 return fp.write(self.writes(nb,**kwargs))
Brian E. Granger
Adding nbformat subpackage.
r4392
Brian E. Granger
Initial draft of more formal notebook format....
r4401