[issue706406] fix bug #685846: raw_input defers signals
Ray.Allen added the comment: I seems this has been fixed already, at least on my python 2.7 on linux. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue706406> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1524938] PEP MemoryError with a lot of available memory gc not called
Ray.Allen added the comment: How about calling gc.collect() explicitly in the loop? -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue1524938> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: I update the patch. Hope somebody could do a review. -- Added file: http://bugs.python.org/file19131/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: I update the patch. Hope somebody could do a review. -- Added file: http://bugs.python.org/file19132/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: Oooops! Sorry for re-submit the request... -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue6269] threading documentation makes no mention of the GIL
Ray.Allen added the comment: Agree with Jesse, the description in the patch is not quite correct. I think detailed description of the GIL has been given in C API documentation: http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock. How about just give this link in threading module documentation? -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue6269> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10228] Refleak run of test_dbm fails when several dbm modules are available
Ray.Allen added the comment: It looks like because before the second time running of WhichDBTestCase.test_whichdb(), previous dumb files are not cleaned clearly, so the gdbm's open() doesn't create a new gdbm database but open an existing dumb database. In fact during the working of #9523, I found this problem and fix it in the patch of #9523. Here I extract the fixing, it is simple: cat patches/issue10228.diff Index: Lib/test/test_dbm.py === --- Lib/test/test_dbm.py(revision 88499) +++ Lib/test/test_dbm.py(working copy) @@ -123,7 +123,7 @@ name = module.__name__ if name == 'dbm.dumb': continue # whichdb can't support dbm.dumb -test.support.unlink(_fname) +delete_files() f = module.open(_fname, 'c') f.close() self.assertEqual(name, dbm.whichdb(_fname)) -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10228> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue3783] dbm.sqlite proof of concept
Changes by Ray.Allen : -- versions: +Python 3.3 -Python 3.2 ___ Python tracker <http://bugs.python.org/issue3783> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue2159] dbmmodule inquiry function is performance prohibitive
Changes by Ray.Allen : -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue2159> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11287] Add context manager support to dbm modules
New submission from Ray.Allen : dbm objects, including gdbm, ndbm, dumb, should support context manager. That is, can be used with 'with' keyword, just like regular file objects. I'm working out a patch for this. -- components: Extension Modules messages: 129076 nosy: ysj.ray priority: normal severity: normal status: open title: Add context manager support to dbm modules type: feature request versions: Python 3.3 ___ Python tracker <http://bugs.python.org/issue11287> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10516] Add list.clear() and list.copy()
Ray.Allen added the comment: Please modify the patch so that it can be applied to current py3k trunk cleanly. (Notice that Lib/collections.py has been changed to a package in #11085). -- ___ Python tracker <http://bugs.python.org/issue10516> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11287] Add context manager support to dbm modules
Ray.Allen added the comment: Here is the patch. -- keywords: +patch Added file: http://bugs.python.org/file20882/issue11287.diff ___ Python tracker <http://bugs.python.org/issue11287> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11287] Add context manager support to dbm modules
Ray.Allen added the comment: Update: change unittest code following eric's comments. -- Added file: http://bugs.python.org/file20902/issue11287.diff ___ Python tracker <http://bugs.python.org/issue11287> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11350] __setitem__()'s problem of dbm.dumb object pointed out by comments
New submission from Ray.Allen : By reading the Lib/dbm/dumb.py source, there seems to be an distinct problem which is pointed out in comments: the __setitem__() should call self._commit() in order to keep .dat file and .dir file consist. Here is a piece of comment found at the end of __setitem__(): # Note that _index may be out of synch with the directory # file now: _setval() and _addval() don't update the directory # file. This also means that the on-disk directory and data # files are in a mutually inconsistent state, and they'll # remain that way until _commit() is called. Note that this # is a disaster (for the database) if the program crashes # (so that _commit() never gets called). And another piece found in __delitem__(): # XXX It's unclear why we do a _commit() here (the code always # XXX has, so I'm not changing it). __setitem__ doesn't try to # XXX keep the directory file in synch. Why should we? Or # XXX why shouldn't __setitem__? One probable reason I guess is that the self._commit() method which writes the keys information to .dir file is regarded as a slow process, and the __setitem__() is called frequently at most cases while __deltiem__ is not, so calling self._commit() at each __setitem__ could make the program very slow. But based on the fact that "The dbm.dumb module is not written for speed and is not nearly as heavily used as the other database modules."(found on dbm's library document), maybe correctness is more important than speed. So I think it should be fixed: Index: Lib/dbm/dumb.py === --- Lib/dbm/dumb.py (revision 88674) +++ Lib/dbm/dumb.py (working copy) @@ -196,6 +196,7 @@ # remain that way until _commit() is called. Note that this # is a disaster (for the database) if the program crashes # (so that _commit() never gets called). +self._commit() def __delitem__(self, key): if isinstance(key, str): And the remaining comments can be deleted. -- components: Library (Lib) messages: 129688 nosy: ysj.ray priority: normal severity: normal status: open title: __setitem__()'s problem of dbm.dumb object pointed out by comments versions: Python 3.1, Python 3.2, Python 3.3 ___ Python tracker <http://bugs.python.org/issue11350> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11350] __setitem__()'s problem of dbm.dumb object pointed out by comments
Ray.Allen added the comment: Here is a test case. First here is a patch which implements a simple builtin function "abort()" that calls exit(0) directly, it simulates the cases that Py_FatalError occurred or segment fault. Then run the following: import dbm.dumb as dumb db = dumb.open('test_db', 'c') db.clear() db['a'] = 'a' db.sync() db['a'] = 'aa' abort() Now the database 'test_db' is corrupt because .dat file and .dir file are out of sync: db = dumb.open('test_db', 'c') print(db['a']) db.close() prints: b'a' But the value of key 'a' in .dat file are: 'aa': cat test_db.dat aa -- keywords: +patch Added file: http://bugs.python.org/file20969/builtin_abort.diff ___ Python tracker <http://bugs.python.org/issue11350> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10829] PyUnicode_FromFormatV() bugs with "%" and "%%" format strings
Ray.Allen added the comment: Hi, haypo, would you mind modify your newly added parse_format_flags() function so that it can diff the precision value of '%.0s' and '%s'(Currently both of them return precision as 0)? Because if used with string formatters(%s, %R, %S, %A, ...), they should be very different. And so I can work on issue7330 with it. Just return precision as -1 to indicate no precision is designated could work. -- ___ Python tracker <http://bugs.python.org/issue10829> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: Here is the updated patch: 1, Work with function parse_format_flags() which is introduced in issue10829, and the patch is simpler and more clear than before. 2, Change parse_format_flags() to set precision value to -1 in the case of '%s' in order to differ with '%.0s' 3, Move call of unicode_format_align() in step 3 in order to avoid many codes like "n += width > PyUnicode_GET_SIZE(str) ? width : PyUnicode_GET_SIZE(str);", (following haypo's comments) -- Added file: http://bugs.python.org/file20983/issue7330_2.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Ray.Allen added the comment: I noticed that after apply my last patch and running full unittest cases, some weird errors which I don't know the reasons occurred, for example: AttributeError: 'dict' object has no attribute 'get' and AttributeError: 'Queue' object has no attribute 'get' I didn't look deep into it. But I found after I optimist my patch, these errors disappeared: I removed the "unicode_format_align()" function in previous patch, directly add needed spaces and copy part of unicode got from parameters according to width and precision formatters in step 4(using Py_UNICODE_FILL() and Py_UNICODE_COPY()) . This avoid create temporary unicode objects using unicode_format_align() in step 3. And also the patch becomes simpler. So this patch is intended to replace of the previous. And if I have more time, I will try to find the reasons of the weird errors. -- Added file: http://bugs.python.org/file21032/issue7330_3.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue2142] difflib.unified_diff(...) produces invalid patches
Ray.Allen added the comment: Updated patch which can apply to current py3k cleanly and with changes follow eric's review comments. -- Added file: http://bugs.python.org/file21067/issue_2142.diff ___ Python tracker <http://bugs.python.org/issue2142> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue2142] difflib.unified_diff(...) produces invalid patches
Ray.Allen added the comment: > I re-read the discussion on python-dev, where it was suggested to add a > keyword argument to get the old behavior. Have you considered it? IIUC, at the time of that discusstion, 3.2 is pre-beta so the suitable option is to add "\No newline etc" by default and add a keyword to get the old behavior, but now it is for 3.3. I wonder if 3.3 is a chance to totally get rid of the *OLD WRONG* behavior. -- ___ Python tracker <http://bugs.python.org/issue2142> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1635741] Interpreter seems to leak references after finalization
Ray.Allen added the comment: > Does the title of this issue accurately reflect the current status of the > Python interpreter? Yes, here is the running result on current 3.3 latest code: [37182 refs] [39415 refs] [41607 refs] [43799 refs] [45991 refs] [48183 refs] [50375 refs] This seems to be a known bug that Py_Finalize() doesn't free all objects according doc http://docs.python.org/dev/c-api/init.html?highlight=py_finalize#Py_Finalize -- ___ Python tracker <http://bugs.python.org/issue1635741> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue2142] difflib.unified_diff(...) produces invalid patches
Ray.Allen added the comment: Yes there may be. Here is the updated patch: Add a new keyword argument to context_diff() and unified_diff() named "warn_no_newline_at_end". If true, emit "\ No newline etc". It defaults to True, set it to false to get the old behavior. I'm not sure if this name is too long, but I haven't got a better name. -- Added file: http://bugs.python.org/file21207/issue_2142_2.diff ___ Python tracker <http://bugs.python.org/issue2142> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11580] Add width and precision formatters to PyBytes_FromFormatV()
New submission from Ray.Allen : By working on some PyUnicode_FromFormatV() related issue(#7330, #10829), I found some same problems with PyBytes_FromFormatV(): It doesn't support width formatter for %u, %i, %x, %d, %s, also it doesn't support %lld and %llu. Attached patch fix the problem: Add width formatter for %u, %i, %x, %d Add width and precision formatter for %s Add %lld and %llu support. It copies the same idea from #10829: add the parse_format_flags() function. -- components: Interpreter Core files: pybytes_fromformatv.diff keywords: patch messages: 131218 nosy: ysj.ray priority: normal severity: normal status: open title: Add width and precision formatters to PyBytes_FromFormatV() versions: Python 3.3 Added file: http://bugs.python.org/file21261/pybytes_fromformatv.diff ___ Python tracker <http://bugs.python.org/issue11580> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11586] Python/pythonrun.c: get_codec_name() typo
New submission from Ray.Allen : I guess there is a typo in the source of this function: Python/pythonrun.c: get_codec_name() diff -r 48970d754841 Python/pythonrun.c --- a/Python/pythonrun.cThu Mar 17 17:06:27 2011 +0800 +++ b/Python/pythonrun.cThu Mar 17 22:11:15 2011 +0800 @@ -147,7 +147,7 @@ goto error; name_utf8 = _PyUnicode_AsString(name); -if (name == NULL) +if (name_utf8 == NULL) goto error; name_str = strdup(name_utf8); Py_DECREF(name); -- components: Interpreter Core messages: 131252 nosy: ysj.ray priority: normal severity: normal status: open title: Python/pythonrun.c: get_codec_name() typo versions: Python 3.3 ___ Python tracker <http://bugs.python.org/issue11586> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11587] METH_KEYWORDS alone gives "METH_OLDARGS is no longer supported!"
Ray.Allen added the comment: Looks like just the problem of error msg. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11587> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue4492] httplib code thinks it closes connection, but does not
Changes by Ray.Allen : -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue4492> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11604] Have type(n,b,d) check for type(b[i]) is module
Ray.Allen added the comment: > I am only suggesting a check for module because the is the only mistake > I > remember anyone reporting. Passing a number as a base class gives a > > > similar message, but no one does that. And as far as I know, there is > no > way in general to detect whether a callable works as a metaclass > except by > calling it with name, bases, and dict. Since 3.x all the module names became lower-case and can be easily differ from class names, so I don't think this problem will present much in 3.x, right? -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11604> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11608] GzipFile cannot be used for streaming
Ray.Allen added the comment: Looks like a duplicate issue of #9664 and #914340. And has been fixed in patch of #914340. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11608> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue4492] httplib code thinks it closes connection, but does not
Ray.Allen added the comment: Another fix could be making HTTPResponse to hold a reference to the HTTPConnection object and call its close() at the time of a bad chunk length was received. This can close the connection as soon as possible. -- ___ Python tracker <http://bugs.python.org/issue4492> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9302] distutils API Reference: setup() and Extension parameters' description not correct.
Ray.Allen added the comment: I searched the distutils docs for such a parameter description table and find tow more on the distutils.core.setup() function descriptions. Reflected in my updated patch. -- title: distutils.core.Extension: list parameters documented as strings -> distutils API Reference: setup() and Extension parameters' description not correct. Added file: http://bugs.python.org/file21323/issue_9302.diff ___ Python tracker <http://bugs.python.org/issue9302> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: > I think the patch will not be suitable for 3.1 and 3.2 Yes, it changes some api(e.g keys()), which may introduces compatibility issues. > so there should be a doc patch to mention the limitations of the dbm API > (keys() > returning a list and all that). Do you mean a doc patch for 3.2 which mentions the missing or imperfect methods of collections.MutableSequence()? e.g keys() not returns a KeysView but a list instead, update() is missing -- ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Changes by Ray.Allen : Removed file: http://bugs.python.org/file21032/issue7330_3.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Ray.Allen added the comment: Ooops! I found my last submitted patch is a wrong one. Here is the updated patch add doc entries about the changes. The test cases which assert error messages generated by PyUnicode_FromFormat() with "%.200s" formatters equality would failed due to this patch. Hope you don't miss any of them. -- Added file: http://bugs.python.org/file21324/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11287] Add context manager support to dbm modules
Ray.Allen added the comment: patch updated. -- Added file: http://bugs.python.org/file21337/issue_11287.diff ___ Python tracker <http://bugs.python.org/issue11287> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Updated patch: 1, Changes follows review comments: http://codereview.appspot.com/4185044/. Thanks eric! 2, Make Objects/dictobject.c:all_contained_in() a common useful limited api Object/abstract.c:_PyObject_AllContainedIn() for the purpose of re-usage in Modules/_gdbmmodule.c and Modules/_dbmmodule.c. Not sure if this is proper. I will ask somebody with C knowledge to do a review on the C code. -- Added file: http://bugs.python.org/file21355/issue_9523_3.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Ray.Allen added the comment: By the way, as my simple tests, wprintf() with "%ls" does apply the width and precision formatters on units of characters. -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Ray.Allen added the comment: Sorry for having done that! I will remove old patches and leave a cleaner view. -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20739/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20786/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat: implement width and precision for %s, %S, %R, %V, %U, %A
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20983/issue7330_2.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: I tried to work out a doc patch for 3.2 to mention the limitation api: the missing methods compared with dict and the imperfect methods(keys(), items()) of collections.MutableMapping. Here is it. -- Added file: http://bugs.python.org/file21369/issue_9523_3.2_doc_patch.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11655] map() must not swallow exceptions from PyObject_GetIter
Ray.Allen added the comment: There maybe compatibility issues which prevent such behavior change. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11655> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11654] errors in atexit hooks don't change process exit code
Ray.Allen added the comment: Comparing to the atexit() in C, I think this is the wrong behavior. I's weird that error in atexit does't change process exit code while error in common python code does. There should be a fix. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11654> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11647] function decorated with a context manager can only be invoked once
Ray.Allen added the comment: Agreed with nick's idea, the implicitly recreation of the context managers would confuse users. How about removing the "generator must yield exactly one value" restriction of @contextlib.contextmanage? Then if I want a generator to be used as a common context manager, I can make it yield exactly one value, else further if I want the resulting context manager can be used as a decorator, (reusable), I can put the generator code in a "while True" loop and add a "yield" at the end of loop body, like this: @contextmanager def func(): while True: print('begin func') yield print('end func') yield :) -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue11647> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11654] errors in atexit hooks don't change process exit code
Ray.Allen added the comment: A straight forward fix maybe making the interpreter exit code a static global variable and change it in Modules/atexitmodule.c:atexit_callfuncs() in the case of errors occurred. -- ___ Python tracker <http://bugs.python.org/issue11654> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11647] function decorated with a context manager can only be invoked once
Ray.Allen added the comment: > > Agreed with nick's idea, the implicitly recreation of the context > > managers would confuse users. > Uh, why would it? That's exactly what I expect the decorator to do, and > I was astonished to discover that it *doesn't*. Because there is no *OBVIOUS* code or sign which can illustrate that context manager changes from a one-shot to a reusable. When using in "with" statement, it's a one-shot, while using as a decorator, it becomes a reusable. I think the way using it doesn't provide enough reason for its behavior change. Is there somebody who may expected that the GeneratorContextManager IS a one-shot? -- ___ Python tracker <http://bugs.python.org/issue11647> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8690] multiprocessing.dummy.Queue does not expose same interface as multiprocessing.Queue
Ray.Allen added the comment: +1 on make it identical to multiprossing.Queue. Since the documentation said: multiprocessing.dummy replicates the API of multiprocessing but is no more than a wrapper around the threading module. Does the word "replicates" implies that multiprossing.dummy.[AClass] should have the same interfaces as multiprossing.[AClass]? I think so. We should be able to use multiprossing.dummy.xxx wherever multiprossing.xxx can be used. We can just create a subclass of Queue.Queue and implemented these missing methods as dummy functions. I wonder is there other inconsistence between multiprocessing.dummy and multiprocessing? -- nosy: +ysj.ray versions: +Python 3.1, Python 3.2 ___ Python tracker <http://bugs.python.org/issue8690> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10037] multiprocessing.pool processes started by worker handler stops working
Ray.Allen added the comment: Could you give an example code which can reproduce this issue? -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10037> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7238] frame.f_lineno doesn't get updated after local trace function assigned to it
Ray.Allen added the comment: It's not a bug. What happens is like this: 1, You set trace function using sys.settrace(tracer). 2, When the following func() is called, tracer is called with a "call" event, so the trace function in PyThreadState is set to NULL since "sys.settrace(None)" is execute, but since the return value is a valid local trace function, the frame of called function("func()") has its local trace function. 3, The called function("func()") executes, though its frame has a local trace function, but it will not be executed since PyThreadState->c_tracefunc is NULL. When you get f_lineno from frame, you get the not refreshed f_lineno value but not the dynamically computed lineno, as the f_lineno's getter function said: if(f->f_trace) return f->f_lineno; else return PyCode_Addr2Line(f->f_code, f->f_lasti); Here because your frame's local trace function is not executed, the f_lineno is not refreshed. 4, When the second time func() calls, there is no global trace function. Each time you get the f_lineno, it uses PyCode_Addr2Line() to get the dynamically computed line number. I think this situation is so rarely that the doc saying "f_lineno is the current line number of the frame" is correct. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue7238> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8481] doc: ctypes no need to explicitly allocate writable memory with Structure
Ray.Allen added the comment: I think not only Structures but also other ctypes can be passed with byref() to functions expecting pointer to mutable memory. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue8481> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9014] Incorrect documentation of the PyObject_HEAD macro
Ray.Allen added the comment: Additionally, I prefer move the discussion of Py_TRACE_REFS under the documentation of PyObject: http://docs.python.org/dev/py3k/c-api/structures.html?highlight=pyobject_head#PyObject, since they'are connected directly. The doc of PyObject_HEAD should only saying like "expands to a PyObject variable". -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue9014> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9299] os.makedirs(): Add a keyword argument to suppress "File exists" exception
Ray.Allen added the comment: Thanks for Terry's addition to the patch! On my python3.2a3 on windows(also copied os.py and test_os.py to the installation), I only get the tow "os.link" errors. And this is because the python3.2a3 hasn't the "os.link" function, and the test.LinkTests in test_os.py is added later after python3.2a3, at r86733. I don't know Why is there a WindowsError in time.sleep(), but I cannot reproduce this Error. -- ___ Python tracker <http://bugs.python.org/issue9299> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9299] os.makedirs(): Add a keyword argument to suppress "File exists" exception
Ray.Allen added the comment: Oh, yes, I missed that, too. I didn't pay attention to that. Thanks for pointing out it and fix it! -- ___ Python tracker <http://bugs.python.org/issue9299> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Oh, yes. I noticed that the pep3119 defines return value of method MutableMapping.keys() as Set, as well as method items(). So the implementation of dumb.keys() and dump.items() are not correct since they all return lists while the class inherits MutableMapping. The implementations in my patch should also be corrected since I made the same mistake. Besides, since issue6045 has already added get(), I need to update my patch. I will do it later. And who can tell the specification of MutableMapping.update()? The pep3119 lacks of it. Should I follow the implementation in the ABC class MutableMapping? -- ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10517] test_concurrent_futures crashes with "Fatal Python error: Invalid thread state for this thread"
Ray.Allen added the comment: Couldn't repro this on my debian 5. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10517> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Here is the updated patch, which fixed: 1. remove get() method of gdbm since issue6045 has already add it. 2. method keys() and items() of dbm object return set instead of list. Since pep3119 said keys() and items() should return collections.Set and set is a collections.Set. 3. add update() method to dbm object, which follows implementation in collections.MutableMapping.update(). -- Added file: http://bugs.python.org/file19987/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10516] Add list.clear() and list.copy()
Ray.Allen added the comment: eli, you should also add "New in version 3.3" to the doc of the tow new list methods. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10516> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10611] sys.exit() in a test causes a test run to die
Ray.Allen added the comment: Agreed. I think the "except Exception" in TestCase.run() should be "except BaseException", since BaseException could catch Exception, SystemExit, GeneratorExit, KeyboardInterrupt. The KeyboardInterrupt should be caught first. The remaining three is exactly what is needed. Here is a patch I worked, with unittest. -- keywords: +patch nosy: +ysj.ray Added file: http://bugs.python.org/file19994/issue_10611.diff ___ Python tracker <http://bugs.python.org/issue10611> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10516] Add list.clear() and list.copy()
Ray.Allen added the comment: > That's good if it's so... can you explain why list_clear doesn't > guarantee that the list is empty? Why would XDECREF populate the list? > I don't quite understand it. Does this mean that durning the Py_DECREF progress the list may be populated again? It's not a problem. Here is the simplest example(with applying eli's patch): class A(object): def __init__(self, li): self._li = li def __del__(self): self._li.append(self) li = [] li.append(A(li)) li.clear() print(li) -- ___ Python tracker <http://bugs.python.org/issue10516> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10611] sys.exit() in a test causes a test run to die
Ray.Allen added the comment: > I'd like to fix all these issues by moving the exception handling into a > single method and unifying the reporting of failure / error / expected > failure / skip test. This will fix all these issues and nicely simplify the > implementation. That sounds good. -- ___ Python tracker <http://bugs.python.org/issue10611> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Thanks eric for reviewing my patch! And thanks for you suggestions. I'm following them. > I don’t know if you should use a plain set or a collections.ItemsView here. > In dict objects, KeysView and ValuesView are set-like objects with added > behavior, for example they yield their elements in the same order. Yes you are right. I think returning a view object is better than returning a set. Here is the updated patch. It updates: 1. Make keys(), values(), items() methods return view object for ndbm, gdbm and dumb objects. I following the codes in dictobject.c. The keysview object support len(), "in" operator, and iteratable, while valuesview and itemsview object only support len() and iteratable. 2. Removing doc changes: The object returned by :func:`.open` supports the same basic functionality as -dictionaries +:mod:`collection`.MutableMapping which is mentioned in eric's comment. 3. Remove dumb's keys() method which calls self._index.keys() since it is unnecessary. 4. Using more specialized assertXxx methods in test cases. 5. Remove "the values() and items() method are not supported" in Doc/library/dbm.rst. > See #5736 for a patch adding iteration support. If the patch attached to his > report supersedes the other one, I’ll close the other bug as duplicate. #5736 's patch for adding iteration to ndbm and gdbm modules simple calling PyObject_GetIter(dbm_keys(dbm, NULL)) for both gdbm and ndbm, but I feel it's better to create a seperate iterator object for gdbm objects. -- Added file: http://bugs.python.org/file20726/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Changes by Ray.Allen : Removed file: http://bugs.python.org/file19131/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: Thanks haypo! Here is the updated patch, it add the tests about width modifiers and precision modifiers of %S, %R, %A. Besides I don't know how to add tests of %s, since when calling through ctypes, I could not get correct result value as python object from PyUnicode_FromFormat() with '%s' in format string as argument. -- Added file: http://bugs.python.org/file20731/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: Here's the complete patch, added unittest for width modifier and precision modifier for '%s' formatter of PyUnicode_FromFormat() function. -- Added file: http://bugs.python.org/file20739/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: > > 1. Make keys(), values(), items() methods return view object for ndbm, gdbm > > and dumb objects. I following the codes in dictobject.c. > Did you have to copy the code? Isn’t it possible to somehow reuse it? I feel not so easy to reuse the code, there could be several differences in the c code. Resuing the code may make the code more complecated. But if someone could find a better way to reuse the code, it would be nice. > > The keysview object support len(), "in" operator, and iteratable, while > > valuesview and itemsview object only support len() and iteratable. > That does not seem to comply with the definition of dict views. Oh, yes, I missed the rich compare functions and isdisjoint() method of view objects. > Do the views yield elements in the same order? (In a dict, iteration order > is undefined but consistent between the various views, IIUC.) gdbm and dumb views yield elements in the same order, ndbm views doesn't. I missed it. > > 3. Remove dumb's keys() method which calls self._index.keys() since it is > > unnecessary. > Does dumb have no keys method then? Yes, it does. Its keys() method is provided by Mapping abc already. Here is the updated patch: 1. Add rich compare functions and disjoint() method to dbm view objects to make them as MappingView objects, and add abc registration for them. 2. Make ndbm view objects yield elements in the same order. 3. Other changes during to the codeview: http://codereview.appspot.com/4185044/ -- ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Added file: http://bugs.python.org/file20751/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Changes by Ray.Allen : Removed file: http://bugs.python.org/file18305/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Changes by Ray.Allen : Removed file: http://bugs.python.org/file19132/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20731/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file18402/issue8634.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file19987/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20726/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1635741] Interpreter seems to leak references after finalization
Changes by Ray.Allen : -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue1635741> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue3710] Reference leak in thread._local
Changes by Ray.Allen : -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue3710> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Thanks! Here is my updated patch: 1, Now the dbm view objects are the same as dict view objects, which are in conformity with collections.KeysView, ValuesView and ItemsView. 2, I register all these abcs explicitly because these abcs have not __subclasshook__() method so they can't check api conformance(at lease exist) through isinstance(). I could not make sure api conformance except testing each method I find in abc explicitly. And my test_abc() is just to test the registering. 3, Other updates which are from comments I wrote newly on codereview: http://codereview.appspot.com/4185044/ -- Added file: http://bugs.python.org/file20771/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20751/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: Thanks hyapo! > It looks like your patch fixes #10829: you should add tests for that, you can > just reuse the tests of my patch (attached to #10829). Sorry, but I think my patch doesn't fix #10829. It seems link another issue. And by applying my patch and add tests from #10829's patch, the tests cannot passed. Or did I missed something? > You should also avoid the creation of a temporary unicode object (it can be > slow if precision is large) using PySequence_GetSlice(). Py_UNICODE_COPY() > does already truncate the string because you can pass an arbitrary length. In order to use Py_UNICODE_COPY, I have to create a unicode object with required length first. I feel this have the same cost as using PySequence_GetSlice(). If I understand correctly? > With your patch, "%.200s" truncates the input string to 200 *characters*, but > I think that it should truncate to 200 *bytes*, as printf does. Sorry, I don't understand. The result of PyUnicode_FromFormatV() is a unicode object. Then how to truncate to 200 *bytes*? I think the %s formatter just indicate that the argument is c-style chars, the result is always unicode string, and the width and precision formatters are to applied after converting c-style chars to string. > I don't like this change because I hate having to compute manually strings > length. It should that it would be easier if you format directly strings with > width and precision at step 3, instead of doing it at step 4: so you can just > read the length of the formatted string, and it avoids having to handle > width/precision in two steps (which may be inconsistent :-/). Do you mean combine step 3 and step 4 together? Currently step 3 is just to compute the biggest width value and step 4 is to compute exact width and do the real format work. Only by doing real format we can get the exact width of a string. So I have to compute each width twice in both step 3 and step 4. Is combining the two steps in to one a good idea? > In my opinion, the patch is a little bit too big. We may first commit the fix > on the code parsing the width and precision: fix #10829? Again, I guess #10829 need another its own patch to fix. > Can you add tests for "%.s"? I would like to know if "%.s" is different than > "%s" :-) Err, '%.s' causes unexpected result both with and without my patch. Maybe it's still another bug? -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: > Do you mean combine step 3 and step 4 together? Currently step 3 is just to > compute the biggest width value and step 4 is to compute exact width and do > the real format work. Only by doing real format we can get the exact width of > a string. So I have to compute each width twice in both step 3 and step 4. Is > combining the two steps in to one a good idea? Sorry, Here I mean: Do you mean combine step 3 and step 4 together? Currently step 3 is just to compute the biggest width value and step 4 is to compute exact width and do the convert work(by calling PyObject_Str()/PyObject_Repr()/PyObject_ASCII()/PyUnicode_DecodeUTF8() for %S/%R/%A/%s). Only by doing convert we can get the exact width of a string. So I have to compute each width twice in both step 3 and step 4. Is combining the two steps in to one a good idea? -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: An updated patch, based on latest several reviews on http://codereview.appspot.com/4185044/ update: 1, Refactoring the common tests between test_dbm_gnu and test_dbm_ndbm. 2, Move the abc registering in Lib/dbm/ndbm.py and Lib/dbm/gnu.py. 3, Other changes pointed out in review comments. -- Added file: http://bugs.python.org/file20783/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20771/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: > No you don't. You can copy a substring of the input string with Py_UNICODE_COPY: just pass a smaller length. Oh, yes, I got your meaning now. I'll follow this. > You can truncate the input char* on the call to PyUnicode_DecodeUTF8: Oh, what if the trunked char* cannot be decoded correctly? e.g. a tow-bytes character is divided in the middle? > Yes, but I am no more sure that it is the right thing to do. If I understand correctly(my English ability is limited), your suggestion is to combine, right? I'm afraid that combine may bring us too complicated code to write. The currently 4 steps just divide the process into smaller and simpler pieces. I'm not sure. -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: > Can you add tests for "%.s"? I would like to know if "%.s" is different than > "%s" :-) Oh sorry~~ I made an mistake. There is no bug here. I have attached tests that show that '%.s' is the same as '%s'. Here is the updated patch: 1, changed the function name unicode_format() to 1, remove """ - "must be a sequence, not %200s", + "must be a sequence, not %.200s", """ in Python/ceval.c 2, Removing using PySequence_GetSlice() in unicode_format_align() and do a refactor to optimize the process. 3, Add tests for '%.s' and '%s', as haypo wanted. This is obviously not the final patch just convenient for other to do a review. Something more need to be discussed. -- Added file: http://bugs.python.org/file20786/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Ray.Allen added the comment: > > > With your patch, "%.200s" truncates the input string to 200 *characters*, > > > but I think that it should truncate to 200 *bytes*, as printf does. > > > > Sorry, I don't understand. The result of PyUnicode_FromFormatV() is a > > unicode object. Then how to truncate to 200 *bytes*? > You can truncate the input char* on the call to PyUnicode_DecodeUTF8: pass a size smaller than strlen(s). Now I wonder how should we treat precision formatters of '%s'. First of all, the PyUnicode_FromFormat() should behave like C printf(). In C printf(), the precision formatter of %s is to specify a maximum width of the displayed result. If final result is longer than that value, it must be truncated. That means the precision is applied on the final result. While python's PyUnicode_FromFormat() is to produce unicode strings, so the width and precision formatter should be applied on the final unicode string result. And the format stage is split into two ones, one is converting each paramater to an unicode string, another one is to put the width and precision formatters on them. So I wonder if we should apply the precision formatter on the converting stage, that is, to PyUnicode_DecodeUTF8(). So in my opinion precision should not be applied to input chars, but output unicodes. I hope I didn't misunderstand something. So haypo, what's your opinion. -- ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue7330] PyUnicode_FromFormat segfault
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20739/issue_7330.diff ___ Python tracker <http://bugs.python.org/issue7330> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11246] PyUnicode_FromFormat("%V") decodes the byte string from ISO-8859-1
Ray.Allen added the comment: Yes. The %V should be combination of %U and %s. Here is a patch which fixed this problem. -- ___ Python tracker <http://bugs.python.org/issue11246> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11246] PyUnicode_FromFormat("%V") decodes the byte string from ISO-8859-1
Changes by Ray.Allen : -- keywords: +patch Added file: http://bugs.python.org/file20818/issue11246.diff ___ Python tracker <http://bugs.python.org/issue11246> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10829] PyUnicode_FromFormatV() bugs with "%" and "%%" format strings
Ray.Allen added the comment: Hi, haypo, Your patch seems cannot be applied cleanly on current py3k trunk. And after modified your patch, test_unicode.py runs into Segmentation fault. Is there something wrong or some changes which could influence this bug had been already made since the patch is worked out? On the current trunk, I guess the bug could be fixed in a simpler way: In step 1, before check '%%', check '%'(a string ends with '%') first. Then check '%%' and skip it. The whole patch: Index: Objects/unicodeobject.c === --- Objects/unicodeobject.c (revision 88453) +++ Objects/unicodeobject.c (working copy) @@ -750,8 +750,12 @@ * result in an array) */ for (f = format; *f; f++) { if (*f == '%') { - if (*(f+1)=='%') + if (*(f+1)=='\0') +continue; + if (*(f+1)=='%') { + f++; continue; + } if (*(f+1)=='S' || *(f+1)=='R' || *(f+1)=='A') ++callcount; while (Py_ISDIGIT((unsigned)*f)) After applying this small patch and tests in your patch, test_unicode.py can passed. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10829> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10829] PyUnicode_FromFormatV() bugs with "%" and "%%" format strings
Changes by Ray.Allen : -- type: -> behavior ___ Python tracker <http://bugs.python.org/issue10829> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10833] Replace %.100s by %s in PyErr_Format(): the arbitrary limit of 500 bytes is outdated
Ray.Allen added the comment: see also #7330, I'm implementing "%.100s" in that issue. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue10833> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11246] PyUnicode_FromFormat("%V") decodes the byte string from ISO-8859-1
Ray.Allen added the comment: Thanks haypo! Here the updated patch, following your comments. -- type: -> behavior Added file: http://bugs.python.org/file20831/issue11246.diff ___ Python tracker <http://bugs.python.org/issue11246> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11246] PyUnicode_FromFormat("%V") decodes the byte string from ISO-8859-1
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20818/issue11246.diff ___ Python tracker <http://bugs.python.org/issue11246> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11282] unittest document not keep consist with code
New submission from Ray.Allen : r88451: Remove unittest methods scheduled for removal in 3.3 This commit remove assertSameElements() and assertDictContainsSubset(). But shouldn't some modification be done in the unittest library documentation? I wonder if we should remove the docs about the two methods. Now the doc only said "Deprecated since version 3.2." -- assignee: docs@python components: Documentation messages: 129036 nosy: docs@python, ysj.ray priority: normal severity: normal status: open title: unittest document not keep consist with code versions: Python 3.3 ___ Python tracker <http://bugs.python.org/issue11282> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Ray.Allen added the comment: Sine r88451 removed unittest's assertSameElements() method, I need to updated my patch to fit it. So here it is. -- Added file: http://bugs.python.org/file20832/issue9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9523] Improve dbm modules
Changes by Ray.Allen : Removed file: http://bugs.python.org/file20783/issue_9523.diff ___ Python tracker <http://bugs.python.org/issue9523> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10829] PyUnicode_FromFormatV() bugs with "%" and "%%" format strings
Ray.Allen added the comment: > Well, the main problem is that there are 3 different codes to parse the > format string, and each code is different... Attached patch factorizes the > code: create one subfunction parse_format_flags(). It fixes also this issue > and prepares the work to fix #10831. Sounds nice! Maybe several related issues can also use this, like #7330. -- ___ Python tracker <http://bugs.python.org/issue10829> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8297] AttributeError message text should include module name
Ray.Allen added the comment: Yes, I agree with this feature request. And also the super(Class, obj) call should return a reasonable AttributeError message when the requested attribute is not found in one of Class's base classes, not just 'super' object has no attribute 'xxx'. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue8297> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8297] AttributeError message text should include module name
Ray.Allen added the comment: In fact, there are only three types of tp_getattro functions: 1.For type objects, it is type_getattro(), in case of AttributeError, this function give the message format: type object %(type)s has no attribute %(attr)s 2.For super objects, it is super_getattro(), in case of no attribute found in one of its base class, it calls the 3'th getattr function below. 3.For the base type 'object' and other new style class, it is PyObject_GenericGetAttr(), and in case of AttributeError, this function give the message format: %(type)s object has no attribute %(attr)s So, there are only tow formats of AttributeError's exception messages: 1.type object %(type)s has no attribute %(attr)s 2.%(type)s object has no attribute %(attr)s The first one is for type objects, the second one is for all the instances objects. In most cases, these tow formats it is enough for program to display, bu t it is not well enough. Take the module objects for example, in case of AttributeError, we will always hope to know exactly which module has no attribute, not only the message: 'module object has attribute xxx'. Also for the super() call, take super(A, b).xxx() for example, if the attribute is not found in the class next to the A in b's type's mro list, PyObject_GenericGetAttr() will be called with the two arguments, the super object its self and 'xxx'. But there are only few valid attributes of a super object, like '__thisclass__', '__self__', '__self_class__'. In most cases, we don't need these attributes of a super object, what we need is the attribute of one of b's type's base types. So I think once the AttributeError is raised in PyObject_GenericGetAttr() call in the end of super_getattro(), the exception message should tell us in which base class python can not found the attribte 'xxx', but not the super object itself, although the exception is raised in the PyObject_GenericGetAttr(, 'xxx'). For the solution, I think the type_getattro and super_getattro can just return NULL to indicate the attribute is not found, but for a wrapper function of this tow which is the tp_getattro for each type to raise the attribute error, with the reasonable exception message. For example, mudule type can tell which module has no attribute, super type can tell which base class has no attribute, and so on. What about others' opinion? -- ___ Python tracker <http://bugs.python.org/issue8297> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8297] AttributeError message text should include module name
Ray.Allen added the comment: This patch makes the AttributeError message generated from getting attributes from module object more helpful, that is, print the module name. Now the error message is: module object 'mod_name' has no attribute 'xxx' Instead of: 'module' object has no attribute 'xxx' In this patch, I add a function PyObject_GenericFindAttr(), which is almost the same as PyObject_GenericGetAttr(), except that return NULL instead of setting the exception, and make PyObject_GenericGetAttr() call this function and setting exception in the case of NULL return value. Through this, each type can custom its own AttributeError message, while using the uniform process of getting the attribute in PyObject_GenericFindAttr(). For example, PyModuleType's tp_getattro is set to a new function PyModule_GetAttr(), which calls the PyObject_GenericFindAttr() can set the customed AttributeError message. Besides, I think the super object's AttributeError message should also be improved, but I didn't include that in the patch. I don't know weather it is suitable. -- keywords: +patch Added file: http://bugs.python.org/file16780/issue_8297.diff ___ Python tracker <http://bugs.python.org/issue8297> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8292] Incorrect condition test in platform.py
Ray.Allen added the comment: It seems that the "Lib/lib2to3/fixes/fix_filter.py" should have fixed all the "filter" problem in py3k, by adding a "list()" call to "filter()". It's werid this one still exists in standar library. Also I found other two problems with "filter" in standar library. They make condition tests on filter object, although the result is correct, but I think it's not proper. So I make a patch to fix these three problems. -- components: +Library (Lib) keywords: +patch nosy: +ysj.ray Added file: http://bugs.python.org/file16814/issue_8292.diff ___ Python tracker <http://bugs.python.org/issue8292> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue8336] PyObject_CallObject - Not "reference-count-neutral"
Ray.Allen added the comment: By looking into the source, I found PyObject_CallObject() is “reference-count-neutral” even the call is FAILED, because it will always call Py_DECREF(arg) in the end and in case of exception. -- nosy: +ysj.ray ___ Python tracker <http://bugs.python.org/issue8336> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com