Created on 2013-03-24 05:13 by Todd.Rovito, last changed 2015-08-06 15:48 by markroseman.
|17535IDLELineNumbers3dot4.patch||Todd.Rovito, 2013-03-24 22:18||review|
|line-numbering-mockup.py||Saimadhav.Heblikar, 2014-03-13 11:57|
|line numbering mockup image.png||Saimadhav.Heblikar, 2014-03-13 11:58|
|line-numbering-v1.diff||Saimadhav.Heblikar, 2014-06-19 13:16||review|
|line-numbering-v2.diff||Saimadhav.Heblikar, 2014-06-22 14:41||review|
|linenumber-text-widget-v1.diff||Saimadhav.Heblikar, 2014-08-01 14:11||review|
|tkfontsize.py||terry.reedy, 2014-08-06 06:11||Test set commands from editor after font change.|
|linenumber-text-widget-v2.diff||Saimadhav.Heblikar, 2014-08-16 06:24||review|
|linenumber-text-widget-v3.diff||Saimadhav.Heblikar, 2014-08-16 17:02||review|
|msg185115 - (view)||Author: Todd Rovito (Todd.Rovito) *||Date: 2013-03-24 05:13|
I think it could be very helpful to add line numbers along the left side of the editor window. The feature could be toggled on/off easily enough. This was mentioned in the "Invent with Python" blog about IDLE so obviously other people would like the feature.
|msg185164 - (view)||Author: Todd Rovito (Todd.Rovito) *||Date: 2013-03-24 22:18|
I got the extension from Roger Serwy's IDLEX, it is one of my favorite extensions. In addition to adding the extension I updated the documentation both idle.rst and help.txt. Finally I tested the patch on Mac OS X and it works great. This patch is for 3.4 but it does work with 2.7 but the documentation for 2.7 is not synced. Thanks.
|msg185166 - (view)||Author: Todd Rovito (Todd.Rovito) *||Date: 2013-03-24 22:20|
For this patch to work correctly the option menu must be present so issue 17532 http://bugs.python.org/issue17532 has to be resolved.
|msg185170 - (view)||Author: Roger Serwy (roger.serwy) *||Date: 2013-03-24 23:11|
Todd, the LineNumbers.py extension from the IdleX project contains work-arounds for interacting cleanly with the Code Context extension. It also has a hack for dealing with the shortcomings of the Percolator/Delegator ordering. There are other shortcomings in the extension that I could not address from IDLE's extension loading architecture. Notably, IDLE does not have a method to broadcast that a font was changed, so the extension polls every second to see what the font is. The Code Context extension also does this. This is clearly an inefficient way to handle identifying a configuration change. I released IdleX with the University of Illinois. Presently, the code is under the NCSA license agreement and assigned to the Board of Trustees. If the PSF would allow inclusion as-is, then I'm all for it. Otherwise I will need to ask UIUC about how to re-license the code.
|msg185173 - (view)||Author: Todd Rovito (Todd.Rovito) *||Date: 2013-03-25 01:28|
The NCSA license is very permissive I would be surprised if the PSF didn't accept it since both are BSD based. Needless to say I am not a lawyer and I am not sure who to speak with about this issue. I was able to find some precedence with the PEP 3146 which proposed the merging of Unladen Swallow with CPython. Unladen Swallow used LLVM which also used the NCSA license. But the merge never happened so I don't know what to think. Does this mean all the extensions from IDLEX are under NCSA license even Terminal.py? I am flexible please let me know how you want to proceed....
|msg185181 - (view)||Author: Roger Serwy (roger.serwy) *||Date: 2013-03-25 03:03|
The file uploaded in 2010 falls under my PSF contributor agreement which has the Apache V2.0 license. The updates to the code in the latest version of IdleX fall under the NCSA license.
|msg185543 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2013-03-30 05:05|
PSF accepts contributions from authors under Contributor Agreements. It does not grab software from 3rd parties, no matter how lenient the license. Roger, if you assigned all rights to the University, you should talk with them about either getting some back or about the University signing a corporate agreement. Also, there is a new psf 'legal' list for discussing legal matters. And yes, I am interested in line numbers also. I do not need them to edit my own files, but they are handy when communicating about stdlib files.
|msg185805 - (view)||Author: Roger Serwy (roger.serwy) *||Date: 2013-04-02 04:14|
I received permission from UIUC to relicense IdleX code used for contributions into Python.
|msg213386 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-03-13 11:57|
As a part of my GSOC 2014 proposal, i had prepared a mockup which adds linenumbering feature to a text widget.I am adding the mockup along with a image. Working: Intercepts low level calls and detects if any of the actions modify current view.If they do , then re-render the line numbers.Uses a canvas to display,(using create_text) *Also contains code to add breakpoints.Not a part of this issue,so ignore that aspect
|msg220973 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-06-19 13:16|
Attached is a patch which adds linenumbering to IDLE.  is the current discussion regarding this topic at idle-dev. This patch is a initial patch. It is missing menu and config additions. I have posted it in this state, so that we can catch platform specific bugs and performance related issues(if any). In the patch, all major additions are in a new file LineNumber.py. This is keeping easier debugging in mind. The code will be restructured in the next version of the patch, which will have the above said additions and performance optimization(if any). I will be working on menu additions, config dialog additions and performance optimization in the mean time. For those who are interested, I used tk.call(self.text, 'dlineinfo', '%d.0' % linenum) instead of text.dlineinfo('%d.0' % linenum), because using any text.* method, used to cause a continuous increase in memory usage. I found this out the hard way, when, earlier I was making repeated text.index() calls. ---  - https://mail.python.org/pipermail/idle-dev/2014-June/003456.html
|msg221256 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-06-22 14:41|
List of additions/changes 1. EditorWindow uses LineNumber.Text instead of tkinter.Text. 2. Added linenumber canvas to IDLE windows except PyShell 3. Some info about LineNumber.Text a) Inherits tk.Text b) Generates <<Changed>> virtual event, when insert, delete, replace, cursor changes position, window resized, scrolled etc. Nothing else is affected. The result of the original call is returned. 4. LineNumber.LineNumberCanvas info a) font_color and breakpoint_color have default values b) Linenumber and breakpoints disabled by default. Instantiating a LineNumberCanvas object does not pack it. c) Pack it programmatically by calling its "attach" method. Compulsorily supply the text widget to attach to. Supply other parameters like font_color, background, breakpoint_color as necessary. d) Unpack using "detach" method. e) Breakpoint feature is enabled only if LineNumberCanvas can "see" an EditorWindow instance called "editwin" as its attribute. It(editwin) should implement set_breakpoint(linenumber) and clear_breakpoint(linenumber) methods. EditorWindow responsible for binding breakpoint action on the canvas to LineNumberCanvas' toggle_breakpoint method. f) Contains a htest for GUI testing linenumbering and breakpoints. g) Any valid color can be set for linenumber canvas' background, its font color and breakpoint color. NS: Breakpoint does not have a background color. h) Linenumber canvas enabled by default. 5. Linenumber preferences in configDialog's "General" tab. Highlight preferences in configDialog's "Highlight" tab. 6. Other changes a) Refactoring of PyShell's set_breakpoint_here, set_breakpoint, clear_breakpoint_here and clear_breakpoint to make more consistent.
|msg221321 - (view)||Author: Raymond Hettinger (rhettinger) *||Date: 2014-06-22 22:44|
FWIW, I don't think line numbers should be "enabled by default" for IDLE or any other editor. It isn't the norm and can be distracting. If you've ever tried to use IDLE to teach kids, you would value minimizing visual distractions.
|msg221341 - (view)||Author: Tal Einat (taleinat) *||Date: 2014-06-23 04:57|
Many IDEs do show line numbers by default. And it does make discussing code with others simpler, e.g. when teaching. But I tend to agree with Raymond that it would be better to keep the default interface clean. Anyone who will want line numbers will be able to turn them on them easily.
|msg223086 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-07-15 05:07|
I tried v2 and it works, subject to the following comments. 1. (The biggest issue) For me, the 'obvious' implementation would be a narrow text window using the same font and size as the main window. The canvas introduces the problem of having to calculate the number position instead of letting tk do it for free. On my screen, they are two pixel too low. The fixed size for numbers can be a problem also. If someone with super eyesight (or a system that displays chars larger than nominal) uses 8 pt type, the bigger numbers are jammed together. If someone with poor eyesight uses a bigger font, the numbers will be too small. (This applies to dialogs too, but that is another issue.) Breakpoint symbols, for the few people who use them, could be selected from ascii ('|', '>', or '+') or non-ascii symbols. I do not think we need a canvas just to have a graphic for this. I am also interested in a marginal Text_strip class because I think one might be a possible solution to some of the problems with the Shell. 2. Roger claimed "IDLE does not have a method to broadcast that a font was changed". Roger, as extension writer, had to take Idle as given, whereas we can add a 'font-changed' virtual event. This seems like a good idea. So would be a 'highlights-changed' event. It appears that editor windows get poked (notified) whenever the preferences Apply or Ok button are hit. Text is blackened and re-colorized even if there is no option change. (Edit a large file like EditorWindow.py to see this.) Adding this event should be a separate issue that this one depends on. 3. To me, the default background for line numbers is way too dark. Easily changed. 4. There should be a way to toggle line numbers in individual editor windows independently of the default setting for a user. (I agree that the delivered default should be off.) I would add this to the Format menu.
|msg224504 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-08-01 14:11|
Attached is Text widget based implementation to add linenumbering to IDLE. NS: The purpose of comment block in update_sidebar_text_font The reason why it is there is to allow tk to "catch up" with changes(esp on large files) after a font change. While it *IS* not required for me, it *WAS* in the past. I don't know what has changed, but as it stands it is not required, IDK if it has been caused by a hardware change on my end. Anyways, while reviewing, please open a large file, and change the font size from minimum to maximum to minimum many times. Post here if the Linenumbering goes out of sync with and without uncommenting the comment block.
|msg224911 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-08-06 06:11|
I believe the patch works slightly better on my system with the above mentioned block uncommented. The problem being addressed is this. The editor sendx a set command to the vertical scrollbar after *any* action that affects the lines displayed. We intercept the set command to set the sidebar in addition to the scrollbar slider. Works great. But after a font change, the editor emits two badly off and bogus commands, causing line numbers and the slider to unnecessarily jiggle up and down (or down and up). It then send a third set command with the proper fractions. Attached is the file I wrote to verify visual observations. I would like to commit this after checking a few details mentioned in previous messages. I would, however, like someone to first test the latest patch on OSX.
|msg225377 - (view)||Author: Ned Deily (ned.deily) *||Date: 2014-08-16 00:19|
As Terry requested, here are a few comments on running linenumber-text-widget-v1.diff on OS X. Overall, this looks to me to be a useful option. 1. Having line numbering enabled by default was a bit of a surprise, particularly in light of 2. 2. The "Toggle Linenumbering" menu item should be in the Options menu cascade, not the Window(s) one. I believe Options is where other extensions add their menu items. Initially, I could see no way to disable line numbering without knowing how to create, if necessary, and edit ~/.idlerc/config-extensions.cfg, which presumable few users do. Only later did I stumble across the "Toggle Linenumbering" menu option in the Window menu cascade. As an OS X user, I would never have thought to look there; normally on OS X, that menu cascade is limited to options related to selecting windows or tabs and selected options related to them, like Zoom or Minimize. (Presumably, the edit extensions preferences feature will help provide another, standard way for the user to deal with this in the long run.) 3. I found the default color values made the line numbers difficult to read. Perhaps a better default would be fgcolor=White instead of Black when bgcolor=Gray? 4. The extension fails to load with Tk 8.4.x: _tkinter.TclError: unknown option "-inactiveselectbackground" It appears that option is new in Tk 8.5: http://www.tcl.tk/man/tcl8.4/TkCmd/text.htm http://www.tcl.tk/man/tcl8.5/TkCmd/text.htm#M-inactiveselectbackground I'm not sure what to recommend here. Eventually, 8.4.x usage will slowly fade away so demanding that IDLE, especially extensions, not depend on any post-8.4 features may be a too-restrictive constraint. Perhaps it is OK to just test for pre-8.5 at extension initialization and cleanly skip if Tk is too old. 5. The LineNumber extension should be added to the list of default extensions in the IDLE Help file (Lib/idlelib/help.txt) and the IDLE section of the Library Reference (Doc/library/idle.rst). Also add the "Toggle Linenumbering" menu item. 6. The LineNumber extension config-extensions.def options need to be documented for the user (this is a generic issue for IDLE extensions). For example, I would not have had any clue that it was possible to enable line numbers for the shell window without examining the file and noticing the "enable_shell=0" hint. (Noted in passing: while the help/doc suggests: "See the beginning of config-extensions.def in the idlelib directory for further information.", even in the unlikely event that a user knew in what directory to look for it, it's not possible to open that file in an IDLE editor window with the current default Cocoa Tk's since Cocoa Tk does not provide a filter option on the open window; only .py* and .txt files can be opened.)
|msg225379 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-08-16 01:08|
Thanks for the comments. 1. I previously said somewhere 'enabled but initially off' by default. I intend to make sure of that before committing. 2. Option menu sounds good.. 3. I tried out a *much* lighter gray, as with Notepad++. Saimadhav is leaving that to me to determin and change. 4. If inactiveselectbackground is needed and there is no alternative (Saimadhav?) I would be inclined to skip pre-8.5. 5. I have put off writing a doc until the spec is finished. (And I would like to have help.txt auto-generated from idle.rst, which is an issue somewhere.) 6. I do not intend line numbering for Shell. Rather, the sidebar should be used for prompt and output markers to solve #7676. The patch has been written with this in mind. How to handle this vis-a-vis config-extensions had not been decided yet. I would prefer one [sidebar] section, but Saimadhav does not think that is possible. In any case, we have focused first on just line numbering, which I would like to push with the revisions indicated above, and then adding breakpoint toggling (in a followup patch, separately reviewed) and the shell sidebar (in yet another patch, ditto). (Note. see #22209)
|msg225384 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-08-16 06:24|
@ Ned Deily: Thank you for the comment's. 1. I documented it in the config-extensions.def how to make it visible on startup(or not). In the new patch, it is not visible by default. 2. I have made the changes. 4. I'll explain the reason why this argument is required: Without this argument, if a user "selects" the sidebar Text widget, a highlight can be seen around the selected area. Adding this argument prevents it showing up. The new patch prevents this unknown option error, by adding the inactiveselectbackground only if Tk version >= 8.5 (Because of this issue which you raised, I found a new bug and fixed it - see below.) 5. Done 6. I added a comment in the config-extensions.def file. The enable_shell option has been removed for now. It is not related to linenumbering. @Terry Reedy: 1. Done. Disabled by default 4. I mentioned the reason why it is required above. ------------ New bug which was discovered because of 4 and fixed: Scrolling on the sidebar text widget using mouse by dragging would scroll just the sidebar text widget and not the main text widget. This has been fixed by adding self.text.yview_moveto(args) in vbar_set.
|msg225387 - (view)||Author: Ned Deily (ned.deily) *||Date: 2014-08-16 08:33|
Thanks for addressing the comments. With linenumber-text-widget-v2.diff: 1. With Tk 8.4, the extension gets a bit further but still fails: File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/__main__.py", line 9, in <module> idlelib.PyShell.main() File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/PyShell.py", line 1570, in main shell = flist.open_shell() File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/PyShell.py", line 327, in open_shell if not self.pyshell.begin(): File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/PyShell.py", line 1054, in begin (sys.version, sys.platform, self.COPYRIGHT, nosub)) File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/PyShell.py", line 1296, in write count = OutputWindow.write(self, s, tags, "iomark") File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/OutputWindow.py", line 40, in write self.text.insert(mark, s, tags) File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/Percolator.py", line 25, in insert self.top.insert(index, chars, tags) File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/LineNumber.py", line 81, in insert self.changed_callback(get_end(self.delegate)) File "/Users/nad/Projects/PyDev/active/dev/3x/t/idlelib/LineNumber.py", line 158, in update_sidebar_text self.sidebar_text['width'] += width_difference TypeError: Can't convert 'int' object to str implicitly 2. I just noticed that the (now) "Line Number" menu item has no visual indication of its state nor does it preserve its state over IDLE sessions. The Code Context extension for edit windows does both: the menu item has a checkmark when enabled and that state is restored when IDLE is restarted.
|msg225402 - (view)||Author: Saimadhav Heblikar (Saimadhav.Heblikar) *||Date: 2014-08-16 17:02|
On 16 August 2014 14:03, Ned Deily <email@example.com> wrote: > 1. With Tk 8.4, the extension gets a bit further but still fails: > I fixed this now. Please let me know how it works now. > 2. I just noticed that the (now) "Line Number" menu item has no visual indication of its state nor does it preserve its state over IDLE sessions. The Code Context extension for edit windows does both: the menu item has a checkmark when enabled and that state is restored when IDLE is restarted. Done.
|msg225411 - (view)||Author: Ned Deily (ned.deily) *||Date: 2014-08-16 19:52|
>> 1. With Tk 8.4, the extension gets a bit further but still fails: >I fixed this now. Please let me know how it works now. Yep, 8.4 now seems to work just fine. >> 2. I just noticed that the (now) "Line Number" menu item has no visual indication of its state nor does it preserve its state over IDLE sessions. The Code Context extension for edit windows does both: the menu item has a checkmark when enabled and that state is restored when IDLE is restarted. >Done. Thanks, that's much better. One small problem: the "Line Number" menu option appears to be a global one, affecting all new windows. But, if the option is toggled when more than one window is open (edit and/or shell), only the window which has the focus changes (adds or deletes the numbering sidebar); the other windows do not change although their "Line Number" menu option does (i.e. the check mark correctly appears or disappears). So now the other windows are "out-of-sync" WRT line number status and could lead the user to think that the "Line Number" option is supposed to be local to each window. Then when restarting IDLE, all windows are created with the last global value of "Line Number". If the option is supposed to be global, then, when toggling the menu option, all open windows should ideally be updated immediately or at least updated the next time each becomes active.
|msg225416 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-08-16 21:18|
I believe the line number behavior Ned describes is the same as the Code Context behavior. I just tested the latter to verify Saimadhav's email report. I think both *should* be the same. The docs say Code Context is a toggle. However, it does not mention the checkmark or the initial state of new windows. Clicking Code Context toggles the state of the current window only; I think this is proper. I also want that for line-numbering. It also toggles the initial state of future windows, as indicated by the checkmark. In other words, the checkmark does NOT indicate the state of the current window, which is visually obvious anyway. Instead, it indicates the initial state of new windows, and it the latter that is saved across sessions. This behavior may not be expected, but given the alternatives*, I consider it plausible if not designed. It definitely needs to be documented. * So what are the alternatives? 1. Make the checkmark toggle local to the window, as you expected. But then what would be the initial state of new windows (and saved as such)? One solution would be two Code Context options, one for current window (checkmark not really needed) and another for future windows (saved). The current design cleverly combines two buttons into one. Perhaps it is too clever, but I don't like two buttons either. Another solution would be to just use whatever is in config default+user. This would be more palatable once we add a config-extension dialog. But it would still be more of a nuisance than the current within-session switching. 2. Make the window toggle global to all current windows. I suspect that this would be visually obnoxious. If someone hated Context/Numbering and only turned either on temporarily, intended for one window, out of necessity, it would be behaviorally obnoxious. There may also have been a performance consideration that is somewhat but not totally obsolete. The feature was added in #936169 in 2005. AFAIK, there have been no complaints. There are none I could find on the tracker. So my inclination is to commit Line Numbering with the same menu behavior as Code Context. If we ever want to change (both), that should be a new issue and discussion. Tal, you were involved in #936169. Any comments?
|msg225418 - (view)||Author: Serhiy Storchaka (serhiy.storchaka) *||Date: 2014-08-16 21:32|
3. Make the checkmark toggle local to the window and make the preferences option toggle default value to all windows. This is how it works in Kate (KDE text editor).
|msg225419 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-08-16 21:46|
I believe your 3. is my 1b. It really requires being able to change preference for an extension without editing ~HOME/.idlerc/config-extensions.cfg by hand. See #3068.
|msg226048 - (view)||Author: Roger Serwy (roger.serwy) *||Date: 2014-08-29 03:51|
When it comes to the checkmark next to Code Context in the menu, be aware of issue13179. You can launch IDLE, open two separate editors, enable Code Context in one, and the other will have its menu entry checked as well when it is not enabled.
|msg226372 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-09-04 19:03|
And if you enable code context in the other window, neither will have the checkmark. As I said, the one button is being used to toggle two things: the state of the current window and the default for future windows, and the checkmark only indicates the second. I agree that this is confusing.
|msg229709 - (view)||Author: Terry J. Reedy (terry.reedy) *||Date: 2014-10-20 02:33|
A blog post replay mentioned http://tkinter.unpythonic.net/wiki/A_Text_Widget_with_Line_Numbers. I will take a look when I get back to this issue. I have also thought trying the Extension configure menu approach #3068 of pasting widgets on a scrollable canvas to both moving together.
|msg248131 - (view)||Author: Mark Roseman (markroseman) *||Date: 2015-08-06 15:48|
Just as a point of information and possible future reference, there is a 'tklib' (collection of Tk-related modules written in Tcl) module called 'ctext' which does syntax highlighting as well as implements the line numbering thing (also using a text widget beside the main text). There may be some tricks in there to steal.
|2015-08-07 23:10:33||terry.reedy||link||issue24825 superseder|
|2015-08-06 15:48:22||markroseman||set||messages: + msg248131|
|2014-10-20 04:59:27||terry.reedy||link||issue13504 dependencies|
+ IDLE - Add an extension configuration dialog|
messages: + msg229709
|2014-09-04 19:03:13||terry.reedy||set||messages: + msg226372|
|2014-08-29 03:51:10||roger.serwy||set||messages: + msg226048|
|2014-08-16 21:46:12||terry.reedy||set||messages: + msg225419|
|2014-08-16 21:32:10||serhiy.storchaka||set||messages: + msg225418|
|2014-08-16 21:18:51||terry.reedy||set||messages: + msg225416|
|2014-08-16 19:52:01||ned.deily||set||messages: + msg225411|
messages: + msg225402
|2014-08-16 08:33:02||ned.deily||set||messages: + msg225387|
messages: + msg225384
|2014-08-16 01:08:04||terry.reedy||set||messages: + msg225379|
|2014-08-16 00:19:43||ned.deily||set||messages: + msg225377|
nosy: + ned.deily
messages: + msg224911
stage: commit review
messages: + msg224504
|2014-07-15 05:07:53||terry.reedy||set||messages: + msg223086|
|2014-06-23 04:57:17||taleinat||set||messages: + msg221341|
messages: + msg221321
messages: + msg221256
versions: + Python 3.5, - Python 3.3
nosy: + jesstess
messages: + msg220973
|2014-03-13 11:58:53||Saimadhav.Heblikar||set||files: + line numbering mockup image.png|
|2014-03-13 11:58:09||Saimadhav.Heblikar||set||files: - Screenshot from 2014-03-09 16:09:37.png|
|2014-03-13 11:57:57||Saimadhav.Heblikar||set||files: + Screenshot from 2014-03-09 16:09:37.png|
nosy: + Saimadhav.Heblikar
messages: + msg213386
|2013-04-02 04:14:18||roger.serwy||set||messages: + msg185805|
messages: + msg185543
versions: - Python 3.1, Python 3.2
|2013-03-25 03:03:58||roger.serwy||set||messages: + msg185181|
|2013-03-25 01:28:55||Todd.Rovito||set||messages: + msg185173|
|2013-03-24 23:11:29||roger.serwy||set||messages: + msg185170|
|2013-03-24 22:20:14||Todd.Rovito||set||messages: + msg185166|
keywords: + patch
messages: + msg185164