msg91699 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2009-08-18 15:13 |
Python reports an import error, even when a valid package exists on
sys.path, if that package is a symlink directory and would otherwise be
importable.
The attached test script demonstrates the limitation on Python 2.6.2 and
3.1.0.
I suspect that the underlying import routines have some assumptions
about the file system that exclude symlinked directories.
|
msg95737 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2009-11-26 11:45 |
Given that you had to use ctypes to create the symlinks on Windows in
the first place, I'd say you're right :)
Probably the first step would be to make sure the nt OS and path modules
get Windows symlink support (although even that may not be enough, due
to the bootstrapping issues with file access and the import machinery).
|
msg95748 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2009-11-26 16:13 |
I agree that a proper solution might include full symlink support.
However, symlink support for windows (issue1578269) is taking some time
to develop and will likely never be available for Python 2.
My feeling is that a symlink naive implementation (such as Python is
now), should treat symlinks in a naive manner -- that is, treat them as
regular files and directories and let the OS perform the abstraction.
I hope to begin investigating this after I've closed out issue1578269,
although I'd be happy if someone else wanted to address this issue
beforehand.
If it's possible to address this in a straightforward way independent of
a symlink-aware Python interpreter, that would be desirable.
|
msg135711 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-10 15:51 |
Symlinked packages used to work on Windows until recently, but a few days ago Microsoft published a few security patches and things stopped working. On my local machine I uninstalled all Visual C++ Runtime library patches (they were installed automatically on May 5th) and symlinks started working on my machine, again. On my friend's computer symlinked packages suddenly stopped working today, but he doesn't seem to have the Visual C++ Runtime libs, so we don't know how to work around this issue on his computer. Could someone please fix support for symlinked packages? It's an essential feature during development.
|
msg135712 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-05-10 15:53 |
Are you able to narrow it down to which security update(s) caused the breakage?
|
msg135713 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-10 16:01 |
I uninstalled these three security patches:
* KB2467173: http://support.microsoft.com/kb/2467173
* KB2467174: http://support.microsoft.com/kb/2467174
* KB2467175: http://support.microsoft.com/kb/2467175
Without those patches symlinked packages work for me. I didn't try to narrow it down to the exact patch. Instead I uninstalled all Visual C++ Redistributable packages in order to prevent those patches from ever being installed again. Should I risk breaking symlink support again to find the source of the problem?
|
msg135714 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-05-10 16:06 |
Don't do anything you're not comfortable with. If you can get your system to whatever state it was in the past where things worked properly, feel free to dig into it. I will try to look into this situation and see if there's anything in these security updates that looks related.
|
msg135717 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 16:27 |
That's interesting. You're saying that you've been using symlinked packages for some time and that it works for you. I filed this bug because it's never worked for me. Can you describe a little bit about the environment in which you've encountered this? Specifically, which Python version, how were the symlinks created, and what is the sys.path like?
|
msg135718 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 16:30 |
And since you seem to have some systems that honor symlinked packages, can you run the attached test_import_symlink_package.py and report the results?
|
msg135719 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-05-10 17:03 |
Out of the patches listed, http://www.microsoft.com/technet/security/advisory/2269637.mspx is the only part that appears to be related in any way, although it doesn't specify a whole lot on the surface. The title is "Insecure Library Loading Could Allow Remote Code Execution", so I'm guessing they could have made some changes under the hood that could affect us.
Before we go down that road, running the script Jason suggested would be helpful in proving what works and doesn't work depending on what patches are installed and what version is running.
|
msg135720 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-10 17:05 |
I'm using Python 2.6.6 on Windows 7 Professional with the latest service pack. My system is pretty bare bones. Do you have Visual Studio or the Visual Studio Redistributables?
Here's the output of your script (the last exception seems to be caused by the .pyc file, but apart from that it seems to work):
C:\Users\wkornewald\Downloads\a>test_import_symlink_package.py
Problem does not exist here.
Traceback (most recent call last):
File "C:\Users\wkornewald\Downloads\a\test_import_symlink_package.py", line 66, in <module>
os.rmdir(tagged)
WindowsError: [Error 145] The directory is not empty: 'sample-tagged'
C:\Users\wkornewald\Downloads\a>dir sample-tagged
Volume in drive C has no label.
Volume Serial Number is 50C8-BE90
Directory of C:\Users\wkornewald\Downloads\a\sample-tagged
10.05.2011 19:04 <DIR> .
10.05.2011 19:04 <DIR> ..
10.05.2011 19:04 107 __init__.pyc
1 File(s) 107 bytes
2 Dir(s) 66.517.442.560 bytes free
|
msg135741 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 21:40 |
Thanks for that. The output is very telling.
First, it shows there's a bug in the test script where an exception occurs when it succeeds because a .pyc file is created and not properly cleaned up.
Second, it demonstrates that the bug as I reported it is not occurring in your environment.
This latter result tells me that I may be experiencing the same issue as you, but encountered it almost two years ago. This finding leads me to believe that the issue is less about the latest hotfix and more related to the VS redistributables. I almost certainly have some form of these redistributables installed as I usually have some form of Visual Studio installed.
The fact that it works in one environment and not another means I should be able to find the regression. I'll install a barebones Windows box and see how it behaves there.
|
msg135743 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 21:44 |
I updated the test script to avoid the error when the .pyc (or __pycache__) is created.
|
msg135744 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 22:00 |
Confirmed the issue exists on Python 2.7 and 3.2
|
msg135745 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-10 22:01 |
Updated script to run under Python 3.2 as well.
|
msg135761 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-11 07:46 |
I've tracked it down. It's caused by KB2467174 (http://support.microsoft.com/kb/2467174) and I can reliably reproduce it. Here's how to reproduce it:
Install *only* the "Microsoft Visual C++ 2008 Redistributable Package (x86)" from http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
Then, start Windows Update and click "Check for Updates" to get the new C++ 2008 Redistributable update and install that patch. Immediately symbolic links stop working. Then uninstall that patch and symlinks work again.
We're still trying to figure out what's causing this problem on my friend's computer. He doesn't have the 2008 Redistributable.
|
msg135766 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-11 09:46 |
That's really strange. We uninstalled Service Pack 1 from my friend's machine and now everything works. What I don't understand is why I don't have Service Pack 1 on my machine and why Windows Update also doesn't offer to install it. Does it have to be installed manually? :-/
Anyway, this means that the problem can be caused either by SP1 or by KB2467174.
|
msg136100 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-16 14:58 |
I've made some progress on this issue. Thanks to Waldemar's findings, I'm able to selectively reproduce the issue by installing/uninstalling the Visual C++ redistributable that includes KB2467174 on a Windows 7 RTM installation.
So I added a patch to cpython to help troubleshoot:
PS C:\Users\jaraco\projects\public\cpython\pcbuild> hg id
434dfe42fde1+
PS C:\Users\jaraco\projects\public\cpython\pcbuild> hg diff
diff -r 434dfe42fde1 Python/import.c
--- a/Python/import.c Sun May 15 13:16:22 2011 +0200
+++ b/Python/import.c Mon May 16 10:52:45 2011 -0400
@@ -1807,6 +1807,15 @@
/* Check for package import (buf holds a directory name,
and there's an __init__ module in that directory */
#ifdef HAVE_STAT
+ if (Py_VerboseFlag > 1 && _Py_stat(filename, &statbuf) == 0) {
+ PySys_FormatStderr("stat_mode %U: %d\n",
+ filename, statbuf.st_mode);
+ }
+ else if(Py_VerboseFlag > 1)
+ {
+ PySys_FormatStderr("_Py_stat(%U) returned %d\n",
+ filename, _Py_stat(filename, &statbuf));
+ }
if (_Py_stat(filename, &statbuf) == 0 && /* it exists */
S_ISDIR(statbuf.st_mode)) /* it's a directory */
{
I then ran the test script without vcredist:
C:\Users\Jason R. Coombs\Desktop>u:\users\jaraco\projects\public\cpython\pcbuild\amd64\python -vv .\test_import_symlink_package.py 2>&1 | findstr sample
stat_mode .\sample: 16895
import sample # directory '.\\sample'
_Py_stat(.\sample\__init__) returned -1
# trying '.\\sample\\__init__.pyd'
# trying '.\\sample\\__init__.py'
import sample # from '.\\sample\\__init__.py'
# wrote '.\\sample\\__pycache__\\__init__.cpython-32.pyc'
# cleanup[1] sample
And again with the vcredist installed:
C:\Users\Jason R. Coombs\Desktop>u:\users\jaraco\projects\public\cpython\pcbuild\amd64\python -vv .\test_import_symlink_package.py 2>&1 | findstr sample
_Py_stat(.\sample) returned -1
# trying '.\\sample.pyd'
# trying '.\\sample.py'
# trying '.\\sample.pyw'
# trying '.\\sample.pyc'
No module named 'sample'
Basically, it appears that with the later vcredist installed, _Py_stat is returning -1 for symlink directories.
|
msg136112 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-16 17:41 |
I decided to investigate further. I created another script to test the call to _wstat to try to recreate the -1 return code, but I was unable to do so. I'm attaching the script, which creates the same 'sample' package, but instead of calling import, calls _wstat directly on the 'sample', but it returns 0, even in the environments where the test script fails.
This leads me to believe the issue isn't with _wstat, but with the way _wstat is called in _Py_stat.
|
msg136184 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-17 21:36 |
Digging deeper with the Visual Studio debugger, I discovered the following interesting outcome (run with cmd.exe):
@echo off
mklink /d sample sample-target
mkdir sample-target
echo "" > sample-target\__init__.py
:: Before KB2467174, returns 0; after, returns -1
python -c "import ctypes; buf = (ctypes.c_char*256)(); print(ctypes.windll.msvcr90._wstat64i32(u'sample', ctypes.byref(buf)))"
:: Always returns 13
python -c "import ctypes; fd = ctypes.c_int(-1); print(ctypes.windll.msvcrt._wsopen_s(ctypes.byref(fd), u'sample', 0, 0x40, 0))"
rmdir sample
rmdir /s /q sample-target
The call to _wstat64i32 is returning -1 with the patched CRT... but when I traced _wstat64i32 (on a machine with the patched CRT), it called _wsopen_s, which apparently always returns -1.
So my guess is that the patched CRT changed something about _wstat64i32 such that it doesn't defer to _wsopen_s. I'm going to see if I can get an early version of Visual Studio that I can trace where _wstat64i32 doesn't fail.
|
msg136186 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-17 22:03 |
Indeed, this appears to be a bug in stat64.c, specifically a regression in KB2467174. If I look at the code for _wstat64i32, it doesn't have the code that calls into _wsopen_s for symlinked files/dirs, so uses the legacy behavior to stat the target. I suspect it's also a memory leak, because it doesn't properly close the "findhandle" in this case.
Any suggestions on how to handle upstream bugs in Windows?
|
msg136188 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-05-17 22:21 |
Wow, nice analysis. http://connect.microsoft.com/ is the external Microsoft bug tracker, as far as I know.
|
msg136332 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-19 19:52 |
MS Connect is apparently only for projects under active development, not mature, released products. I've posted to the MSDN forums, where with my MSDN account, I can expect priority support from MS personnel.
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/93ebb061-d952-4650-b15c-30548a6649a8
I hope this helps resolve the issue at its source.
|
msg136372 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-05-20 13:24 |
Per the suggestion in the Visual Studio forums, I posted a report against Visual Studio here: https://connect.microsoft.com/VisualStudio/feedback/details/669601/regression-calling-wstat64i32-on-symlink-directory-with-kb2467174-installed#details
|
msg136602 - (view) |
Author: Éric Araujo (eric.araujo) * |
Date: 2011-05-23 10:30 |
Removing 2.6, this is not a security bug.
(OT:
> Could someone please fix support for symlinked packages? It's an
> essential feature during development.
If I correctly guess your use case, you could use a pth file during development. See the docs.)
|
msg136604 - (view) |
Author: Éric Araujo (eric.araujo) * |
Date: 2011-05-23 10:31 |
BTW, does this bug occur only with symlinked packages or also with one-file modules?
|
msg136605 - (view) |
Author: Waldemar Kornewald (wkornewald) |
Date: 2011-05-23 10:33 |
It was only with symlinked packages/folders. Symlinked files worked correctly for me.
BTW, pth files won't work for our specific use-case (App Engine).
|
msg147797 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2011-11-17 14:45 |
If this issue is important to you, please follow the link above to the Microsoft Connect site and vote for the issue. More votes should mean it will get more attention. Thanks.
|
msg147798 - (view) |
Author: Alex Regueiro (alexreg) |
Date: 2011-11-17 14:45 |
Is this bug going to be fixed? I've been experiencing this for some time now, and it seems the Python team has known about it for a while too... seems like an easy fix!
|
msg147799 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-11-17 14:50 |
Not fixed, but if it's easy, you're welcome to fix it before we get around to it.
|
msg147800 - (view) |
Author: Alex Regueiro (alexreg) |
Date: 2011-11-17 14:52 |
Well, I am making an assumption here. :-)
Might have a look at a patch. Never looked at the Python runtime before. If it's all written in C, then it's possible. I'm guessing most of the Python programmers don't know much/anything about Win32 programming, so that probably explains the delay.
|
msg147801 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2011-11-17 14:58 |
There are a few of us, and Jason and myself have done most of the Windows symlink related work. We'll certainly get to this and have it fixed, but with no releases on the immediate horizon, there isn't a rush. This and your other symlink issue are on my radar for things to make sure we cover.
|
msg147803 - (view) |
Author: Alex Regueiro (alexreg) |
Date: 2011-11-17 15:00 |
Thanks Brian; that's good to know. If we could get it in the next release (Python 2.8?) that would be awesome.
|
msg147805 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * |
Date: 2011-11-17 15:31 |
> If we could get it in the next release (Python 2.8?) that would be awesome.
I doubt it will (see PEP 404) but 3.3 is a good target.
|
msg150986 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-09 23:28 |
I've filed a support incident with the Microsoft Support team to try to push this issue determine a fix or workaround.
|
msg150987 - (view) |
Author: Alex Regueiro (alexreg) |
Date: 2012-01-09 23:29 |
That's great, thanks.
|
msg151205 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-13 22:52 |
The MS support engineer has come back confirming the bug and suggesting using the MS C API instead of wstat for doing directory detection. It's still possible they'll fix the bug in an upcoming update, but even if they do, it will leave a window of broken systems, so I'm inclined to implement a workaround (i.e. not use stat for directory detection in import.c).
I started looking at implementing this for the Python 2.7 branch and I found that I could drastically simplify the code by extracting an 'isdir' function.
Consider the two changesets in this patch. I've confirmed this fixes the issue. Would somebody review this patch? If it's deemed acceptable, I'll consider something similar for Python 3.x.
|
msg151206 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * |
Date: 2012-01-13 22:55 |
Please regenerate your diff file, it undoes an unrelated fix :-)
|
msg151207 - (view) |
Author: Alex Regueiro (alexreg) |
Date: 2012-01-13 22:55 |
That's very good news. I suspected MS has written a wrapper over this somewhere to accommodate for this bug, and it was just a matter of using the right API.
I look forward to seeing this in the next 2.7 release.
|
msg151208 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-13 23:02 |
I've regenerated the diff a couple of times (once after rebasing to not undo Amaury's changes and another after correcting the whitespace).
|
msg151295 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-15 17:04 |
I've created yet another patch (1cdb64480494) which adds a regression test under Python 2.7 to demonstrate that the fix works (based on test_import_symlink_package.py).
|
msg151394 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-16 17:13 |
4aaf78f0dd10.diff is the same patch as that for 2.7 but ported to 3.1.
|
msg151403 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-16 19:00 |
I ported the patch to the 3.2 branch. This port required more extensive adjustments. In particular, the NullImporter no longer used (char *) for directory detection, but instead used platform-specific PyObjects.
Therefore, the 3.2 diff creates a new function, Py_PathIsDir, which takes a PyUnicode on Windows and PyBytes on other platforms and calculates the directory state of the parameter.
I'm fairly unhappy with the way the patch for 2.7 and 3.1 translated to 3.2.
So, I'm seeking review and approval of the 2.7 and 3.1 patches, and comments on the 3.2 patch.
|
msg151470 - (view) |
Author: Éric Araujo (eric.araujo) * |
Date: 2012-01-17 16:28 |
(3.1 doesn’t get non-security bug fixes either)
|
msg151776 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-01-22 14:27 |
After hearing back from Microsoft support (and by proxy, the Visual Studio development team), it is clear that this issue is very low priority for them (they see it as having trivial business impact), so we cannot expect it to be fixed in the upstream libraries anytime soon.
This response essentially means that if Python wants to support these symbolically-linked directories, it cannot use stat/wstat on Windows and must use instead the Windows APIs.
As seen in issue13412, this bug not only affects import.c, but also affects posixmodule (such as with os.listdir). After addressing this issue for import.c, it will probably be necessary to also address it for other parts of Python that use stat/wstat (or other calls that depend on those calls).
|
msg155159 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2012-03-08 14:40 |
New changeset 6c218b9c5c4c by Jason R. Coombs in branch '2.7':
Extracted Windows directory detection from NullImporter.__init__. This greatly simplifies the code and fixes issue6727.
http://hg.python.org/cpython/rev/6c218b9c5c4c
New changeset 92f4d4eebed1 by Jason R. Coombs in branch '2.7':
Adding regression test for issue6727
http://hg.python.org/cpython/rev/92f4d4eebed1
|
msg155160 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-03-08 14:44 |
I've gone ahead and pushed the changesets for Python 2.7. I'll continue to hold off on Python 3.2/3.3 until I can review. Perhaps Brian and I can review these changes at PyCon.
|
msg155161 - (view) |
Author: Florent Xicluna (flox) * |
Date: 2012-03-08 14:51 |
It breaks the compilation on few buildbots.
Python/import.c:130:14: error: #if with no expression
|
msg155162 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-03-08 14:52 |
I see that. Thanks. I'm on it.
|
msg155167 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-03-08 17:07 |
The Unix tests are now passing again. Some Windows buildbots are failing because they do not have the symlink privilege. I'll add a guard in the test to not run it if it doesn't have privilege to symlink.
|
msg155169 - (view) |
Author: Brian Curtin (brian.curtin) * |
Date: 2012-03-08 17:49 |
The @support.skip_unless_symlink decorator could be helpful there.
|
msg160607 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-05-14 11:41 |
At PyCon, I took another look at the Python 3.2 changes. Unfortunately, I found they trigger failures in other aspects of the test suite, so the approach is not viable as implemented.
I plan to take another look at this at some point, but I've been utterly swamped. If someone wants to take a look at the 3.2 branch of my bitbucket clone, I would have no problem with that. Otherwise, I'll try to take a look at it when I can.
|
msg163026 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2012-06-17 07:54 |
New changeset afe67ea94bc6 by Jason R. Coombs in branch 'default':
Adding test from issue6727 demonstrating that symlink import issue does not occur here in 3.3
http://hg.python.org/cpython/rev/afe67ea94bc6
|
msg163029 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-06-17 08:22 |
I don't know what changed in 3.3 to address this issue; likely candidates are the VS 2010 upgrade or the rewrite of the import machinery. In either case, best I can tell, 3.3 is no longer implicated.
|
msg163032 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-06-17 08:31 |
It seems that by adding the test to the default branch, the buildbots are now broken for Unix systems (they're failing the test). I'm going to await the results from the Windows buildbots, and then skip the tests on the failing platforms.
|
msg163041 - (view) |
Author: Jason R. Coombs (jaraco) * |
Date: 2012-06-17 09:08 |
I've disabled the test on non-Windows systems and created issue15091 to track the issue.
|
msg163247 - (view) |
Author: Éric Araujo (eric.araujo) * |
Date: 2012-06-20 04:04 |
Would you mind making a small change and use assertEqual instead of an assert statement? The test suite should run the same tests under -O and -OO; there are remaining asserts in old tests but for the last year or two we’ve tried to change them. Thanks in advance.
|
msg163248 - (view) |
Author: Éric Araujo (eric.araujo) * |
Date: 2012-06-20 04:06 |
(Oh BTW I put back 3.3 in versions without seeing you had removed it recently; even though the bug is not present there, the tests from 3.2 are merged into 3.3 so if I understand the use of the versions field correctly it makes sense to keep 3.3. Didn’t want you to think I was reverting your deliberate changes on a whim :)
|
msg163281 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2012-06-20 14:25 |
New changeset 24369f6c4a22 by Jason R. Coombs in branch 'default':
Prefer assertEqual to simply assert per recommendation in issue6727.
http://hg.python.org/cpython/rev/24369f6c4a22
|
msg216536 - (view) |
Author: R. David Murray (r.david.murray) * |
Date: 2014-04-16 18:10 |
As far as I can tell from the messages, there is nothing left to do here, so I'm closing it.
|
|
Date |
User |
Action |
Args |
2022-04-11 14:56:52 | admin | set | github: 50976 |
2014-04-16 18:10:23 | r.david.murray | set | status: open -> closed
nosy:
+ r.david.murray messages:
+ msg216536
resolution: fixed stage: resolved |
2012-06-20 14:25:20 | python-dev | set | messages:
+ msg163281 |
2012-06-20 04:06:58 | eric.araujo | set | messages:
+ msg163248 |
2012-06-20 04:04:46 | eric.araujo | set | messages:
+ msg163247 versions:
+ Python 3.3 |
2012-06-17 09:08:03 | jaraco | set | messages:
+ msg163041 |
2012-06-17 08:31:17 | jaraco | set | messages:
+ msg163032 |
2012-06-17 08:22:13 | jaraco | set | messages:
+ msg163029 |
2012-06-17 07:58:03 | jaraco | set | versions:
- Python 3.3 |
2012-06-17 07:54:29 | python-dev | set | messages:
+ msg163026 |
2012-05-14 11:41:48 | jaraco | set | messages:
+ msg160607 |
2012-03-08 17:49:33 | brian.curtin | set | messages:
+ msg155169 |
2012-03-08 17:07:11 | jaraco | set | messages:
+ msg155167 |
2012-03-08 14:52:25 | jaraco | set | messages:
+ msg155162 |
2012-03-08 14:51:28 | flox | set | nosy:
+ flox messages:
+ msg155161
|
2012-03-08 14:44:12 | jaraco | set | messages:
+ msg155160 |
2012-03-08 14:43:58 | jaraco | set | hgrepos:
- hgrepo104 |
2012-03-08 14:40:42 | python-dev | set | nosy:
+ python-dev messages:
+ msg155159
|
2012-01-22 14:27:21 | jaraco | set | messages:
+ msg151776 |
2012-01-17 16:28:13 | eric.araujo | set | messages:
+ msg151470 versions:
- Python 3.1 |
2012-01-16 19:00:03 | jaraco | set | messages:
+ msg151403 |
2012-01-16 18:52:55 | jaraco | set | files:
+ 4fdbc9f74235.diff |
2012-01-16 18:52:25 | jaraco | set | hgrepos:
+ hgrepo105 |
2012-01-16 17:13:31 | jaraco | set | messages:
+ msg151394 |
2012-01-16 17:12:13 | jaraco | set | files:
+ 4aaf78f0dd10.diff |
2012-01-16 17:11:26 | jaraco | set | hgrepos:
+ hgrepo104 |
2012-01-15 17:04:10 | jaraco | set | messages:
+ msg151295 |
2012-01-15 17:02:35 | jaraco | set | files:
+ 1cdb64480494.diff |
2012-01-15 16:56:26 | jaraco | set | files:
+ 2b7bf4e5cb9f.diff |
2012-01-13 23:02:58 | jaraco | set | keywords:
+ needs review
messages:
+ msg151208 |
2012-01-13 23:01:21 | jaraco | set | files:
+ 577b717055bc.diff |
2012-01-13 22:57:54 | jaraco | set | files:
+ 55d164f36389.diff |
2012-01-13 22:55:54 | alexreg | set | messages:
+ msg151207 |
2012-01-13 22:55:20 | amaury.forgeotdarc | set | messages:
+ msg151206 |
2012-01-13 22:53:38 | jaraco | set | files:
+ f3c7f4243a04.diff keywords:
+ patch |
2012-01-13 22:52:59 | jaraco | set | hgrepos:
+ hgrepo103 messages:
+ msg151205 |
2012-01-09 23:29:47 | alexreg | set | messages:
+ msg150987 |
2012-01-09 23:28:33 | jaraco | set | messages:
+ msg150986 |
2011-11-17 15:31:37 | amaury.forgeotdarc | set | nosy:
+ amaury.forgeotdarc messages:
+ msg147805
|
2011-11-17 15:00:13 | alexreg | set | messages:
+ msg147803 |
2011-11-17 14:58:06 | brian.curtin | set | messages:
+ msg147801 |
2011-11-17 14:52:19 | alexreg | set | messages:
+ msg147800 |
2011-11-17 14:50:43 | brian.curtin | set | messages:
+ msg147799 |
2011-11-17 14:45:46 | alexreg | set | nosy:
+ alexreg messages:
+ msg147798
|
2011-11-17 14:45:23 | jaraco | set | messages:
+ msg147797 |
2011-11-17 14:38:28 | brian.curtin | link | issue13419 superseder |
2011-05-23 10:33:39 | wkornewald | set | messages:
+ msg136605 |
2011-05-23 10:31:17 | eric.araujo | set | messages:
+ msg136604 |
2011-05-23 10:30:35 | eric.araujo | set | nosy:
+ eric.araujo
messages:
+ msg136602 versions:
- Python 2.6 |
2011-05-20 13:24:46 | jaraco | set | messages:
+ msg136372 |
2011-05-19 19:52:11 | jaraco | set | messages:
+ msg136332 |
2011-05-17 22:21:23 | brian.curtin | set | messages:
+ msg136188 |
2011-05-17 22:03:49 | jaraco | set | messages:
+ msg136186 |
2011-05-17 21:36:58 | jaraco | set | messages:
+ msg136184 |
2011-05-16 17:41:42 | jaraco | set | files:
+ wstat-res.py
messages:
+ msg136112 |
2011-05-16 14:58:39 | jaraco | set | messages:
+ msg136100 versions:
+ Python 3.3 |
2011-05-12 18:22:29 | santoso.wijaya | set | nosy:
+ santoso.wijaya
|
2011-05-11 09:46:55 | wkornewald | set | messages:
+ msg135766 |
2011-05-11 07:46:44 | wkornewald | set | messages:
+ msg135761 |
2011-05-10 22:01:34 | jaraco | set | files:
+ test_import_symlink_package.py
messages:
+ msg135745 |
2011-05-10 22:01:06 | jaraco | set | files:
- test_import_symlink_package.py |
2011-05-10 22:00:34 | jaraco | set | messages:
+ msg135744 versions:
+ Python 2.7, Python 3.2 |
2011-05-10 21:44:53 | jaraco | set | files:
+ test_import_symlink_package.py
messages:
+ msg135743 |
2011-05-10 21:44:10 | jaraco | set | files:
- test_import_symlink_package.py |
2011-05-10 21:40:05 | jaraco | set | messages:
+ msg135741 |
2011-05-10 17:05:38 | wkornewald | set | messages:
+ msg135720 |
2011-05-10 17:03:35 | brian.curtin | set | messages:
+ msg135719 |
2011-05-10 16:30:06 | jaraco | set | messages:
+ msg135718 |
2011-05-10 16:27:47 | jaraco | set | messages:
+ msg135717 |
2011-05-10 16:06:44 | brian.curtin | set | messages:
+ msg135714 |
2011-05-10 16:01:37 | wkornewald | set | messages:
+ msg135713 |
2011-05-10 15:53:53 | brian.curtin | set | messages:
+ msg135712 |
2011-05-10 15:51:24 | wkornewald | set | nosy:
+ wkornewald messages:
+ msg135711
|
2011-03-13 12:47:06 | brian.curtin | set | nosy:
+ brian.curtin
|
2009-12-06 01:42:30 | asvetlov | set | nosy:
+ asvetlov
|
2009-11-26 16:13:13 | jaraco | set | messages:
+ msg95748 |
2009-11-26 11:45:29 | ncoghlan | set | nosy:
+ ncoghlan messages:
+ msg95737
|
2009-08-18 15:13:02 | jaraco | create | |