This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年07月14日 09:57 by ncoghlan, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| mp_api_cleanup.patch | jnoller, 2008年08月19日 18:46 | v2 | ||
| mp_api_cleanup-v3.patch | jnoller, 2008年08月19日 18:57 | |||
| get_name.patch | benjamin.peterson, 2008年08月22日 19:02 | |||
| issue3352_remove_threading_deprecation_warnings.diff | ncoghlan, 2008年09月01日 12:58 | 3.0 patch to remove deprecation warnings from the threading module | ||
| issue3352_tone_down_26_threading_docs.diff | ncoghlan, 2008年09月01日 13:27 | 2.6 doc patch to tone down API note in threading docs | ||
| issue3352_update_30_threading_docs.diff | ncoghlan, 2008年09月01日 13:46 | 3.0 doc patch to adjust API note in threading docs | ||
| issue3352_remove_threading_py3k_warnings.diff | ncoghlan, 2008年09月01日 13:51 | 2.6 patch to remove py3k warnings from the threading module | ||
| Messages (47) | |||
|---|---|---|---|
| msg69647 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年07月14日 09:57 | |
The "PEP 8 compliant" API for multiprocessing and threading needs to be cleaned up before release as per the thread on python-dev. The release manager gave approval for this change during that discussion [1]. Changes needed: - remove Py3k warnings from the threading module (old API is going to be kept around even in Py3k) - change get_name/set_name into a "name" property - change is_daemon/set_daemon into a "daemon" property (Note that changing "is_alive" to be a property is not on that list - that can be a fairly expensive thing to check for the multiprocessing library. I also left out active_count(), as I think the underscore adds clarity in that case) [1] http://mail.python.org/pipermail/python-dev/2008-June/080285.html |
|||
| msg69648 - (view) | Author: Andrii V. Mishkovskyi (mishok13) | Date: 2008年07月14日 10:36 | |
Does this mean that all multiprocessing get_*/set_* methods should be changed to be properties? For example, multiprocessing.process.Process class defines not only set_name/get_name and is_daemon/set_daemon methods, but also get/set_authkey, get/set_exitcode and get_ident (this method is later used as 'getx' argument of 'pid' property, so we could get rid of this using simple decorator). |
|||
| msg69649 - (view) | Author: Andrii V. Mishkovskyi (mishok13) | Date: 2008年07月14日 10:38 | |
Actually, 'getx' -> 'fget'. Sorry for the typo. :) |
|||
| msg69654 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年07月14日 13:45 | |
I think we should still keep the py3k warnings on (I'll change them to PendingDeprecationWarnings if you want.), so the API doesn't abruptly change on people. With your approval, I'll make it so. |
|||
| msg69665 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年07月14日 22:25 | |
At this stage I'm still inclined to skip the warnings completely - at the very least, any eventual removals will go through a full deprecation cycle in 2.7/3.1 before being removed in 2.8/3.2. It's also much easier to be sure we aren't adversely affecting performance of the old methods that way (with a PendingDeprecationWarning, performance of the deprecated methods is going to suffer a bit since the warnings machinery will still have to be invoked to discover that the warning has been filtered out). That said, the methods we're changing aren't likely to be something one invokes in speed critical sections of an application, so I wouldn't object if the old names emitted PDW in both 2.6 and 3.0. Regarding the additional get/set properties on multiprocessing.Process, it depends on whether or not they are cheap to calculate and whether or not they involve any I/O operations. auth_key looked like it may be expensive to set (since I assume there is a crypto calculation involved there), exit_code may involve waiting for the other process to finish, and get_ident may involve waiting for it to start. So my initial reaction is that these are OK to keep as methods rather than trying to turn them into properties. The following pretty undesirable behaviour should probably be discussed on python-dev before beta3 (if not beta2): Python 2.6b1+ (trunk:64945, Jul 14 2008, 20:00:46) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import multiprocessing as mp >>> isinstance(mp.Lock(), mp.Lock) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types >>> mp.Lock.__name__ 'Lock' >>> mp.Lock.__module__ 'multiprocessing' >>> mp.Lock().__class__.__name__ 'Lock' >>> mp.Lock().__class__.__module__ 'multiprocessing.synchronize' The delayed import functions in multiprocessing.__init__ look like a serious misfeature to me. I'd be inclined to replace them with "from .synchronize import *" and "from .process import *" (leaving anything which isn't covered by those two imports to be retrieved directly from the relevant mp submodule) |
|||
| msg69776 - (view) | Author: Barry A. Warsaw (barry) * (Python committer) | Date: 2008年07月16日 12:54 | |
Is anybody working on a patch for this? Nick, I agree with you about undesirable behavior, however if there is no patch currently under development, I'm inclined to defer blocking until beta3. |
|||
| msg69780 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年07月16日 13:12 | |
I don't want to change the API or any other code before we get the change in for issue874900 which should fix/resolve issue3088 |
|||
| msg69782 - (view) | Author: Barry A. Warsaw (barry) * (Python committer) | Date: 2008年07月16日 13:23 | |
On Jul 16, 2008, at 9:12 AM, Jesse Noller wrote: > I don't want to change the API or any other code before we get the > change > in for issue874900 which should fix/resolve issue3088 What's the holdup on 874900? |
|||
| msg69783 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年07月16日 13:25 | |
I don't know, but I am going to ping Antoine and Greg and see if they don't mind me applying it as-is. |
|||
| msg69786 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年07月16日 13:28 | |
This should not block the release of beta 2 IMHO |
|||
| msg70630 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月02日 13:00 | |
Sorry, I'm not going to be able to work on this soon. |
|||
| msg71329 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年08月18日 13:30 | |
I created issue 3589 to cover the problem I mentioned above with the very misleading names for the package level functions in multiprocessing. |
|||
| msg71349 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月18日 16:40 | |
I think I can get this done before the release now. For starters I changed thread.get_ident() to a property in r65818. |
|||
| msg71357 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月18日 18:44 | |
Ok. I've done the threading API and patched up multiprocessing so it actually works. Jesse, can you do multiprocessing? Also, can we decide about is_alive as a property? |
|||
| msg71358 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月18日 18:45 | |
Oh, and by the way, I would start working on multiprocessing by reverting r65828. |
|||
| msg71359 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月18日 18:46 | |
On Mon, Aug 18, 2008 at 2:44 PM, Benjamin Peterson <report@bugs.python.org> wrote: > > Benjamin Peterson <musiccomposition@gmail.com> added the comment: > > Ok. I've done the threading API and patched up multiprocessing so it > actually works. Jesse, can you do multiprocessing? > > Also, can we decide about is_alive as a property? > Yup, I can do the MP part. |
|||
| msg71360 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月18日 18:47 | |
On Mon, Aug 18, 2008 at 2:45 PM, Benjamin Peterson <report@bugs.python.org> wrote: > > Benjamin Peterson <musiccomposition@gmail.com> added the comment: > > Oh, and by the way, I would start working on multiprocessing by > reverting r65828. > Makes sense. |
|||
| msg71424 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年08月19日 15:34 | |
is_alive appears to be a potentially expensive check for the multiprocessing side of things, which is why I'm inclined to leave it as a method. "if t.is_alive():" actually reads better to me than "if t.alive:" anyway. |
|||
| msg71425 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月19日 15:36 | |
On Tue, Aug 19, 2008 at 10:34 AM, Nick Coghlan <report@bugs.python.org> wrote: > > Nick Coghlan <ncoghlan@gmail.com> added the comment: > > is_alive appears to be a potentially expensive check for the > multiprocessing side of things, which is why I'm inclined to leave it as > a method. "if t.is_alive():" actually reads better to me than "if > t.alive:" anyway. So be it. I don't really want to do any renaming anyway. :) > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue3352> > _______________________________________ > -- Cheers, Benjamin Peterson "There's no place like 127.0.0.1." |
|||
| msg71426 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 15:36 | |
On Tue, Aug 19, 2008 at 11:34 AM, Nick Coghlan <report@bugs.python.org> wrote: > > Nick Coghlan <ncoghlan@gmail.com> added the comment: > > is_alive appears to be a potentially expensive check for the > multiprocessing side of things, which is why I'm inclined to leave it as > a method. "if t.is_alive():" actually reads better to me than "if > t.alive:" anyway. Dang, I already cut that one over. |
|||
| msg71431 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年08月19日 15:51 | |
My preference actually isn't particularly strong either way, so I suggest asking Barry for a casting vote. |
|||
| msg71432 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 15:52 | |
Nick/Ben - here's a rough draft patch for the attribute changes for mp - could you both take a look and let me know what you think? |
|||
| msg71435 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月19日 16:05 | |
The patch looks pretty good. In a few places, you replaced x.set_x(True) with x.x(True). The docs also will need a few tweaks. Otherwise, if the tests pass, I say go ahead. |
|||
| msg71437 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年08月19日 16:09 | |
Just saw a couple of docs checkins go by suggesting that the camelCase names will be unavailable in 3.x. Remember that the intent *isn't* to remove the old names from threading.py - we're just adding the PEP 8 names so that multiprocessing can have a PEP 8 compliant API while still being close to a drop-in replacement for the 2.6 version of the threading module. This means that all of the DeprecationWarnings and so forth can be left out completely. Regarding your patch Jesse: - if I remember rightly, get_exitcode() can block waiting for the other process to finish, which makes turning it into a property a fairly questionable idea (p.get_exitcode() blocking is a lot less surprising than "p.exitcode" doing so) - the get/set documentation for the new properties can probably be consolidated, but that isn't a major problem as far as this week's beta is concerned. |
|||
| msg71439 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年08月19日 16:10 | |
Note regarding those comments - only the exitcode one is something we should try to get sorted for the beta. Backing out the deprecation warnings and cleaning up the documentation can wait for the first release candidate. |
|||
| msg71444 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月19日 16:52 | |
Barry said that is_alive should remain a method following in Guido's footsteps. |
|||
| msg71456 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 18:20 | |
> > Nick Coghlan <ncoghlan@gmail.com> added the comment: > > Note regarding those comments - only the exitcode one is something we > should try to get sorted for the beta. Backing out the deprecation > warnings and cleaning up the documentation can wait for the first > release candidate. > Would it be acceptable to add a doc note mentioning .exitcode() may block rather than changing it back to the get_exitcode method? It's not that it's hard - but I do like the consistency of the property-style interface. |
|||
| msg71460 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 18:43 | |
> > Nick Coghlan <ncoghlan@gmail.com> added the comment: > > Note regarding those comments - only the exitcode one is something we > should try to get sorted for the beta. Backing out the deprecation > warnings and cleaning up the documentation can wait for the first > release candidate. > Actually, re-examining .exitcode - it wraps the custom forking.Popen class .poll() method, this method should not block (forking.py, line 104) - the WNOHANG call passed to os.waitpid means it should also not hang. |
|||
| msg71461 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 18:45 | |
Here is a cleaned up patch (ben was right, I typo'ed a few spots) - I did not clean up the docs from the original patch except to correct the x.x(Foo) accidents. |
|||
| msg71462 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 18:46 | |
I attached the wrong patch, here is v2 |
|||
| msg71463 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 18:57 | |
And here is v3 - I fixed all of the Docs/include/mp* scripts to reflect the new API |
|||
| msg71464 - (view) | Author: Jesse Noller (jnoller) * (Python committer) | Date: 2008年08月19日 19:07 | |
committed the v3 patch as-is in r65864 - moving from release blocker to deferred blocker pending the Docs cleanup, and outstanding debate points. |
|||
| msg71767 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2008年08月22日 18:59 | |
There are still some instances of get_name() in threading.py itself, which gives errors like the following: Unhandled exception in thread started by <bound method Thread.__bootstrap of <Thread(reader 5, stopped daemon -1285227632)>> Traceback (most recent call last): File "/home/antoine/cpython/cpickle/Lib/threading.py", line 499, in __bootstrap self.__bootstrap_inner() File "/home/antoine/cpython/cpickle/Lib/threading.py", line 537, in __bootstrap_inner (self.get_name(), _format_exc())) AttributeError: 'Thread' object has no attribute 'get_name' |
|||
| msg71768 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年08月22日 19:02 | |
Here's a patch. |
|||
| msg72226 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 11:42 | |
I found further PEP 8 non-compliances in the multiprocessing API while working on a patch for issue 3589, mainly in the area of function names that start with a capital letter, making them look like classes when they definitely are not. After noticing a few of these, I went through checked more thoroughly, and found all of the following to be functions that claimed to be classes by way of their naming convention (a far worse sin than using camelCase instead of underscores): multiprocessing.Pipe (aka multiprocessing.connection.Pipe) multiprocessing.RawValue (aka multiprocessing.sharedctypes.RawValue) multiprocessing.RawArray (aka multiprocessing.sharedctypes.RawArray) multiprocessing.Value (aka multiprocessing.sharedctypes.Value) multiprocessing.Array (aka multiprocessing.sharedctypes.Array) multiprocessing.connection.Client multiprocessing.connection.SocketClient multiprocessing.connection.PipeClient multiprocessing.connection.XmlClient multiprocessing.managers.RebuildProxy multiprocessing.managers.MakeProxyType multiprocessing.managers.AutoProxy multiprocessing.managers.Array These should all be converted to start with a lowercase letter and use underscores, otherwise people are going to assume they can be treated like classes. |
|||
| msg72229 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 12:02 | |
Benjamin's patch was applied in r65982 |
|||
| msg72232 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 12:29 | |
Patch added that removes the incorrect Py3k warnings from the threading module (also restores the methods to the same __name__ attributes as they had in 2.5). |
|||
| msg72236 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 12:58 | |
Second patch added that removes the deprecation warnings from the Py3k version of the threading module. |
|||
| msg72238 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 13:19 | |
It turns out threading uses the odd "class-that-is-not-a-class" naming scheme as well: threading.Lock threading.RLock threading.Condition threading.Semaphore threading.BoundedSemaphore threading.Event threading.Timer |
|||
| msg72239 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 13:27 | |
Patch added to tone down note regarding the PEP 8 compliant aliases that have been added to the threading module. |
|||
| msg72240 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 13:46 | |
And one last patch to adjust the threading docs in Py3k to reflect the fact that the 2.x API is still supported, even if it is no longer documented. |
|||
| msg72241 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 13:51 | |
Updated the 2.6 threading patch to also remove the warnings from the methods that are being replaced by properties. |
|||
| msg72242 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年09月01日 13:54 | |
The patches look good to me. Please apply. |
|||
| msg72298 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 21:32 | |
Regarding the factory functions that are named as if they were classes, Fredrik noted on python-dev that the ones from the threading module are explicitly documented as being factory functions, and the multiprocessing API really just follows that example (note that without applying the patch from issue 3589, all of the names that are factory functions in the threading API are also factory functions in the multiprocessing API). So perhaps the best course at this stage is to just leave these alone for 2.6/3.0? |
|||
| msg72300 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月01日 21:53 | |
Ben, if you get a chance to apply those patches, feel free, otherwise I should be able to get to them this evening (my time - about 10 hours from now). |
|||
| msg72304 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年09月01日 23:13 | |
Ok. patches applied in r66126 and r66127. |
|||
| msg72320 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年09月02日 09:43 | |
Thanks! |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:36 | admin | set | github: 47602 |
| 2008年09月02日 09:43:26 | ncoghlan | set | messages: + msg72320 |
| 2008年09月01日 23:13:33 | benjamin.peterson | set | status: open -> closed resolution: fixed messages: + msg72304 |
| 2008年09月01日 21:53:21 | ncoghlan | set | messages: + msg72300 |
| 2008年09月01日 21:32:35 | ncoghlan | set | messages: + msg72298 |
| 2008年09月01日 13:54:22 | benjamin.peterson | set | messages: + msg72242 |
| 2008年09月01日 13:51:55 | ncoghlan | set | files:
+ issue3352_remove_threading_py3k_warnings.diff messages: + msg72241 |
| 2008年09月01日 13:50:32 | ncoghlan | set | files: - issue3352_remove_threading_py3k_warnings.diff |
| 2008年09月01日 13:46:19 | ncoghlan | set | files:
+ issue3352_update_30_threading_docs.diff messages: + msg72240 |
| 2008年09月01日 13:27:20 | ncoghlan | set | files:
+ issue3352_tone_down_26_threading_docs.diff messages: + msg72239 |
| 2008年09月01日 13:19:35 | ncoghlan | set | messages: + msg72238 |
| 2008年09月01日 12:58:58 | ncoghlan | set | keywords: + patch |
| 2008年09月01日 12:58:41 | ncoghlan | set | assignee: jnoller -> |
| 2008年09月01日 12:58:31 | ncoghlan | set | keywords: + needs review, - patch |
| 2008年09月01日 12:58:14 | ncoghlan | set | files:
+ issue3352_remove_threading_deprecation_warnings.diff messages: + msg72236 |
| 2008年09月01日 12:29:48 | ncoghlan | set | files:
+ issue3352_remove_threading_py3k_warnings.diff messages: + msg72232 |
| 2008年09月01日 12:02:12 | ncoghlan | set | messages: + msg72229 |
| 2008年09月01日 11:42:46 | ncoghlan | set | messages: + msg72226 |
| 2008年08月22日 19:02:02 | benjamin.peterson | set | files:
+ get_name.patch messages: + msg71768 |
| 2008年08月22日 18:59:36 | pitrou | set | nosy:
+ pitrou messages: + msg71767 |
| 2008年08月21日 03:07:04 | barry | set | priority: deferred blocker -> release blocker |
| 2008年08月19日 19:07:27 | jnoller | set | priority: release blocker -> deferred blocker messages: + msg71464 |
| 2008年08月19日 18:57:11 | jnoller | set | files:
+ mp_api_cleanup-v3.patch messages: + msg71463 |
| 2008年08月19日 18:46:25 | jnoller | set | files:
+ mp_api_cleanup.patch messages: + msg71462 |
| 2008年08月19日 18:45:35 | jnoller | set | files: - mp_nohang_jnoller.patch |
| 2008年08月19日 18:45:28 | jnoller | set | files: - mp_api_cleanup.patch |
| 2008年08月19日 18:45:22 | jnoller | set | files:
+ mp_nohang_jnoller.patch messages: + msg71461 |
| 2008年08月19日 18:43:23 | jnoller | set | messages: + msg71460 |
| 2008年08月19日 18:20:53 | jnoller | set | messages: + msg71456 |
| 2008年08月19日 16:52:33 | benjamin.peterson | set | messages: + msg71444 |
| 2008年08月19日 16:10:45 | ncoghlan | set | messages: + msg71439 |
| 2008年08月19日 16:09:18 | ncoghlan | set | messages: + msg71437 |
| 2008年08月19日 16:05:44 | benjamin.peterson | set | messages: + msg71435 |
| 2008年08月19日 15:52:42 | jnoller | set | files:
+ mp_api_cleanup.patch keywords: + patch messages: + msg71432 |
| 2008年08月19日 15:51:50 | ncoghlan | set | messages: + msg71431 |
| 2008年08月19日 15:36:29 | jnoller | set | messages: + msg71426 |
| 2008年08月19日 15:36:11 | benjamin.peterson | set | messages: + msg71425 |
| 2008年08月19日 15:34:55 | ncoghlan | set | messages: + msg71424 |
| 2008年08月18日 18:47:44 | jnoller | set | messages: + msg71360 |
| 2008年08月18日 18:46:54 | jnoller | set | messages: + msg71359 |
| 2008年08月18日 18:45:48 | benjamin.peterson | set | messages: + msg71358 |
| 2008年08月18日 18:44:09 | benjamin.peterson | set | assignee: benjamin.peterson -> jnoller messages: + msg71357 |
| 2008年08月18日 16:40:34 | benjamin.peterson | set | assignee: benjamin.peterson messages: + msg71349 |
| 2008年08月18日 13:30:26 | ncoghlan | set | messages: + msg71329 |
| 2008年08月02日 13:00:08 | benjamin.peterson | set | assignee: benjamin.peterson -> (no value) messages: + msg70630 |
| 2008年07月18日 03:46:43 | barry | set | priority: deferred blocker -> release blocker |
| 2008年07月16日 13:52:15 | benjamin.peterson | set | priority: release blocker -> deferred blocker |
| 2008年07月16日 13:28:28 | jnoller | set | messages: + msg69786 |
| 2008年07月16日 13:25:10 | jnoller | set | messages: + msg69783 |
| 2008年07月16日 13:23:28 | barry | set | messages: + msg69782 |
| 2008年07月16日 13:12:04 | jnoller | set | messages: + msg69780 |
| 2008年07月16日 12:54:43 | barry | set | nosy:
+ barry messages: + msg69776 |
| 2008年07月14日 22:25:53 | ncoghlan | set | messages: + msg69665 |
| 2008年07月14日 13:45:10 | benjamin.peterson | set | assignee: benjamin.peterson messages: + msg69654 nosy: + benjamin.peterson |
| 2008年07月14日 10:38:55 | mishok13 | set | messages: + msg69649 |
| 2008年07月14日 10:36:37 | mishok13 | set | nosy:
+ jnoller, mishok13 messages: + msg69648 |
| 2008年07月14日 09:57:55 | ncoghlan | create | |