array, a better shell
For array.array "B" means unsigned char, and such arrays accept to be initialized from (str) strings too, this is quite useful: >>> from array import array >>> a = array("B", "hello") But it seems such capability isn't shared with the append: >>> a.extend("hello") Traceback (most recent call last): File "", line 1, in TypeError: an integer is required I like a lot the Python shell, it helps me in many different situations. I have tried some Python shells: - the vanilla one from DOS - the one from ActivePython IDE - the one from SPE - ipython from a DOS shell But none of them has what I'd like. ipython tries to be a better shell, but I don't want more complexity and more commands/tricks to remember, I want something more interactive, that's simpler and more powerful to use, and not something (much) more complex. Much less things, but the important ones. Beside the vanilla one, I end using the SPE one (because it has colours on Windows too, and it allows you to paste a piece of interactive shell with the leading >>>, SPE removes them automatically. This is very handy). I have also used the shell of Mathematica. It's quite powerful and it can show graphics too inlined, but globally I don't like it fully because it makes editing small programs a pain (for me). Even if I globally don't like the Mathematica shell, it has a capability that I'd like to have in a basic Python shell too. (NOTE: often when dealing with GUI subtle details make a *big* difference, and it's not easy to use words to describe such interaction details.) This Mathematica shell allows you to edit small programs (like 1-15 lines of code) as input blocks, and later you can click on them and edit them. When you press shift-enter inside a block, that small program runs and its output goes just below it (and not at the end of the current shell log). All the Input Blocks can be edited and run again like that (an Input/Output number tag helps to keep things sorted enough). So it's a cross between a normal stupid shell that's essentially an I/O + visual log, and a bare-bone text editor that allows you to edit one script and run it too. Such capability probably needs a Tk/Wx/Gtk window... --- (Such interactive sessions can be saved too, and loaded again (they become complex documents), but such ability isn't necessary into a bare-bone shell that I am describing now. I am describing something as simple as possible). Beside that (new) basic shell capability I think I can appreciate two other capabilities: - Automatically saves the last 20 MBytes of textual input/output log inside a "queue" file. Material older than the last 20 MB is removed from the top. - Ability to break the computation (or the printing of VERY long things!) without exiting the shell and the kernel (this is from Mathematica too). Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
On Wed, 20 Dec 2006 03:44:25 -0800, bearophileHUGS wrote: > For array.array "B" means unsigned char, and such arrays accept to be > initialized from (str) strings too, this is quite useful: > from array import array a = array("B", "hello") > > But it seems such capability isn't shared with the append: [snip] > I like a lot the Python shell, it helps me in many different > situations. I have tried some Python shells: > - the vanilla one from DOS > - the one from ActivePython IDE > - the one from SPE > - ipython from a DOS shell > > But none of them has what I'd like. Is there a shortage of bytes, that Usenet posts about completely different topics have to message-pool? Did you have any questions, or were you just talking to yourself? [snip] > (Such interactive sessions can be saved too, and loaded again (they > become complex documents), but such ability isn't necessary into a > bare-bone shell that I am describing now. I am describing something as > simple as possible). No you're not. You're describing a quite complicated shell. You're describing a hypothetical shell with features other actual shells don't have, so therefore it can't possibly be as simple as possible. Perhaps what you meant to say was "the bare-minimum I consider worth using"? -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
Steven D'Aprano: > No you're not. You're describing a quite complicated shell. You're > describing a hypothetical shell with features other actual shells don't > have, so therefore it can't possibly be as simple as possible. You are right, it's not really simple, but: - It has just the basic functionality that I think is important. Many more features can be added, I too can list some of them, but I don't think they are much important. - It's very simple from the user point of view, because its usage requires no new commands to remember :-) (beside shift-enter or something similar to run a block). Thank you for listening, bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
[EMAIL PROTECTED] wrote: > This Mathematica shell allows you to edit small programs (like 1-15 > lines of code) as input blocks, and later you can click on them and > edit them. When you press shift-enter inside a block, that small > program runs and its output goes just below it (and not at the end of > the current shell log). All the Input Blocks can be edited and run > again like that (an Input/Output number tag helps to keep things sorted > enough). Sounds pretty close to what Idle does: The Idle shell allows you to enter small programs as input blocks, and edit them while entering them. Later you can click on them and bring them back to the bottom of the input buffer for further editing (so no confusing output appearing out of order), and you can always look back at all earlier versions of the block. All the Input Blocks can be edited and run again like that. Your point was? -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
Duncan Booth: > Later you can click on them and bring them back > to the bottom of the input buffer for further editing (so no confusing > output appearing out of order), I think that's worse, not better. You end with a messy final "document" (log), so finding things into it (during the editing too) is much more difficult. > Your point was? My point is to suggest things that can improve the Python user experience, and productivity too. I try to help, with the hope to have something that I like more too. It's very difficult to describe subtle GUI functionalities using a texual description (expecially when you aren't using your native language). If you try the Mathematica shell you may find some differences I am talking about (even if I don't globally like the Mathematica shell). Editing an input block into idle feels different from editing a small script inside an editor, there are differences that make the user experience less good. (And beside that it seems I often have problems running IDLE on Win PCs with a firewall). Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
>I have also used the shell of Mathematica. It's quite powerful and it >can show graphics too inlined, but globally I don't like it fully >because it makes editing small programs a pain (for me)... I use Vim to edit python code and can execute any selection (F3) or single lines (F2) whenever I want to (Vim must be built to include the python interpreter). Here is the according Vimrc code "pyout if present must be right below "r replaces, p prints, symb sets the start py << EOL def PrintCurrentLine(*args): cur_str = vim.current.line action, symb = None, None for i in args: if i in ["r","p"]: action = i else: symb = i try:start = cur_str.rindex(symb)+len(symb) except: start = 0 eval(compile("pyoutres="+cur_str[start:],'','exec'),globals()) result = eval("pyoutres",globals()) if action == "r": vim.current.line = cur_str[:start]+str(result) else: iPy=PyOutput() if iPy != -1: resS=cur_str+"=="+'\n'+str(result)+'\n' resL=resS.split('\n') vim.buffers[iPy].range(0,0).append(resL) vim.command("wincmd b") vim.command("normal gg") vim.command("wincmd p") else: print result EOL command -narg=* Pyl python PrintCurrentLine() map :py PrintCurrentLine() python << EOL def EvaluateCurrentRange(): c_r=vim.current.range i=0 while c_r[0].startswith(' '*(i+1)): i+=1 rngstr='\n'.join([ln[i:] for ln in c_r]) eval(compile(rngstr,'','exec'),globals()) EOL map :py EvaluateCurrentRange() -- http://mail.python.org/mailman/listinfo/python-list
Re: array, a better shell
On 2006-12-20, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > For array.array "B" means unsigned char, and such arrays accept to be > initialized from (str) strings too, this is quite useful: > from array import array a = array("B", "hello") > > But it seems such capability isn't shared with the append: > a.extend("hello") > Traceback (most recent call last): > File "", line 1, in > TypeError: an integer is required Try: >>> a.fromstring("hello") -- Neil Cerutti I have opinions of my own -- strong opinions -- but I don't always agree with them. --George W. Bush -- http://mail.python.org/mailman/listinfo/python-list