##// END OF EJS Templates
Backport PR #2796: P3K: fix cookie parsing under Python 3.x (+ duplicate import is removed)...
Backport PR #2796: P3K: fix cookie parsing under Python 3.x (+ duplicate import is removed) This fixes ``` WARNING:root:couldn't parse cookie string: b'__utma=96992031.448119963.1345042395.1345203014.1351851470.3; __utmz=96992031.1345042395.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); sessionid=2456b59cebe2a3c7075c6d3f1d136c36; csrftoken=I9knGxQWHWXSUAeOXihXlzs0IJxbss07' Traceback (most recent call last): File "/Users/kmike/envs/pymorphy-33/lib/python3.3/site-packages/ipython-0.14.dev-py3.3.egg/IPython/frontend/html/notebook/handlers.py", line 441, in _inject_cookie_message self.request._cookies = http.cookies.SimpleCookie(msg) File "/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3/http/cookies.py", line 476, in __init__ self.load(input) File "/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3/http/cookies.py", line 524, in load for key, value in rawdata.items(): AttributeError: 'bytes' object has no attribute 'items' ``` warning under Python 3.x

File last commit:

r2020:f3a106b5
r9859:0bf51ac4
Show More
fakemodule.py
66 lines | 2.0 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
"""
Class which mimics a module.
Needed to allow pickle to correctly resolve namespaces during IPython
sessions.
"""
#*****************************************************************************
# Copyright (C) 2002-2004 Fernando Perez. <fperez@colorado.edu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import types
def init_fakemod_dict(fm,adict=None):
"""Initialize a FakeModule instance __dict__.
Kept as a standalone function and not a method so the FakeModule API can
remain basically empty.
This should be considered for private IPython use, used in managing
namespaces for %run.
Parameters
----------
fm : FakeModule instance
adict : dict, optional
"""
dct = {}
# It seems pydoc (and perhaps others) needs any module instance to
# implement a __nonzero__ method, so we add it if missing:
dct.setdefault('__nonzero__',lambda : True)
dct.setdefault('__file__',__file__)
if adict is not None:
dct.update(adict)
# Hard assignment of the object's __dict__. This is nasty but deliberate.
fm.__dict__.clear()
fm.__dict__.update(dct)
class FakeModule(types.ModuleType):
"""Simple class with attribute access to fake a module.
This is not meant to replace a module, but to allow inserting a fake
module in sys.modules so that systems which rely on run-time module
importing (like shelve and pickle) work correctly in interactive IPython
sessions.
Do NOT use this code for anything other than this IPython private hack."""
def __init__(self,adict=None):
# tmp to force __dict__ instance creation, else self.__dict__ fails
self.__iptmp = None
# cleanup our temp trick
del self.__iptmp
# Now, initialize the actual data in the instance dict.
init_fakemod_dict(self,adict)