[IronPython] ironpython alternative to PyOS_ReadlineFunctionPointer
Jörgen Stenarson
jorgen.stenarson at bostream.nu
Tue Jul 4 20:59:22 CEST 2006
Dino,
thanks for your suggestion. It worked out fine. Now I have basic typing
in pyreadline but I still have work to do to get editing and keyboard
shortcuts to work. I'll post again when I have something more useful.
While doing this I stumbled on this traceback inconsistency to cpython
which took me a while to figure out.
Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def c():
... pass
...
>>> a,b=c()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unpack non-sequence
>>>
IronPython 1.0.2375 (Beta) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> def c():
... pass
...
>>> a,b=c()
Traceback (most recent call last):
File , line 0, in <stdin>##58
TypeError: None is not enumerable
>>>
/Jörgen
Dino Viehland skrev:
> Unfortunately there's currently no way to switch this from Python code.
>
> What we need to do is expose something in IronPythonConsole.exe which lets you set PythonCommandLine.MyConsole (currently you can't do this because PythonCommandLine is private). If you made PythonCommandLine public you could do clr.AddReference('IronPythonConsole.exe') and then from IronPythonConsole import PythonCommandLine, IConsole. Finally you can implement your own console:
>
> class MyConsole(IConsole):
> def ReadLine(autoIndentSize): pass
> def Write(text, style): pass
> def WriteLine(text, style): pass
>
>
> and then call PythonCommandLine.MyConsole = MyConsole()
>
> and those methods will override the interface implementation (or in other words - it's quite easy to deal with overriding methods :) ).
>
> That's the hacky way to get to where you can start experimenting with this. We probably need to come up w/ a better long-term way to do this. This is an unfortunate side effect of the runtime & console being so separated - the runtime doesn't know anything about the console, and the console can't use the runtime's stdin because it needs to be able to deal w/ input such as arrow keys.
>
> I don't know that we could do anything here before 1.0, but I'll open a CodePlex bug for improving console <-> runtime interop.
>
>
More information about the Ironpython-users
mailing list