[IPython-dev] paste magic command not working
Julian Taylor
jtaylor.debian at googlemail.com
Mon Jan 20 14:25:48 EST 2014
On 20.01.2014 20:07, Doug Blank wrote:
> On Mon, Jan 20, 2014 at 1:47 PM, Julian Taylor
> <jtaylor.debian at googlemail.com> wrote:
>> On 20.01.2014 15:15, Matthias BUSSONNIER wrote:
>>> Hi Mauricio,
>>>
>>> Be careful when modifying system files, your updates might not behave correctly afterwards.
>>> The differences between your file (debian) and original one seem to be due to a custom debian patch
>>> (cc jtaylor as he appears to be the author of debianize-error-messages.patch).
>>>
>>
>> sorry the patch seems broken and I'll fix it in the next upload.
>> but can someone explain to me why its broken?
>> how can an import that is never called cause an unbound name error?
>>
>> import IPython.utils.py3compat as py3compat
>> def tkinter_clipboard_get():
>> try:
>> import tkinter
>> except ImportError:
>> import IPython.utils.py3compat as py3compat
>> raise TryNext("%s" % ("python3" if py3compat.PY3 else "python"))
>> root = tkinter.Tk()
>> root.withdraw()
>> text = root.clipboard_get()
>> root.destroy()
>> # error here after successful tkinter import
>> text = py3compat.cast_unicode(text, py3compat.DEFAULT_ENCODING)
>> return text
>
> The error is that py3compat.cast_unicode() is called outside of the
> except block. So, it appears that the import should not be inside the
> exception (eg, the import is only done when there is an error).
>
it is imported at the global scope, it is the second import that somehow
removes if from the namespace even though the line is never executed.
More information about the IPython-dev
mailing list