This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年03月10日 07:39 by jvr, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| issue2263-numpy.py | grubert, 2009年01月29日 01:05 | produce test report. | ||
| Messages (8) | |||
|---|---|---|---|
| msg63435 - (view) | Author: Just van Rossum (jvr) * (Python triager) | Date: 2008年03月10日 07:39 | |
struct.pack() raises SystemError when fed a numpy integer in some cases.
The following was run on MacOSX 10.4, little endian (I can only
reproduce the error if I specify big endian for the struct format). Not
sure if this could be a numpy bug.
Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53)
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct
>>> import numpy
>>> i = numpy.int16(1)
>>> struct.pack(">B", i)
__main__:1: DeprecationWarning: struct integer overflow masking is
deprecated
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/struct.
py", line 63, in pack
return o.pack(*args)
SystemError: /Users/ronald/r252/Objects/longobject.c:322: bad argument
to internal function
>>> struct.pack(">H", i)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/struct.
py", line 63, in pack
return o.pack(*args)
SystemError: /Users/ronald/r252/Objects/longobject.c:322: bad argument
to internal function
>>> struct.pack(">h", i)
'\x00\x01'
>>> struct.pack(">b", i)
'\x01'
>>> struct.pack("B", i)
'\x01'
>>> struct.pack("h", i)
'\x01\x00'
>>> numpy.__version__
'1.0.4'
>>>
|
|||
| msg80736 - (view) | Author: engelbert gruber (grubert) * | Date: 2009年01月29日 01:05 | |
on ubuntu 8.04, Python 2.7a0 (trunk:69044) and numpy 1.2.1
("." is OK, "e" means SystemError)
* signed always works, longlong also.
* unsigned native works half of the time
* unsigned little/big endian never works
* the numpy type does seam to have any effect.
signed char b 'int16' . <. >. 'uint32' . <. >.
sys:1: DeprecationWarning: struct integer overflow masking is deprecated
unsigned char B 'int16' . <e >e 'uint32' . <e >e
signed short h 'int16' . <. >. 'uint32' . <. >.
unsigned short H 'int16' . <e >e 'uint32' . <e >e
signed int i 'int16' . <. >. 'uint32' . <. >.
unsigned int I 'int16' e <e >e 'uint32' e <e >e
signed long l 'int16' . <. >. 'uint32' . <. >.
unsigned long L 'int16' e <e >e 'uint32' e <e >e
signed long long q 'int16' . <. >. 'uint32' . <. >.
unsigned long long Q 'int16' . <. >. 'uint32' . <. >.
|
|||
| msg81515 - (view) | Author: engelbert gruber (grubert) * | Date: 2009年02月09日 23:37 | |
in 2.7 svn _struct.c
formatdef native_table[] = {
{'B', sizeof(char), 0, nu_ubyte, np_ubyte},
formatdef bigendian_table[]
{'B', 1, 0, nu_ubyte, bp_uint},
formatdef lilendian_table[]
{'B', 1, 0, nu_ubyte, lp_uint},
np_ubyte calls get_long b/lp_uint call get_wrapped_ulong which calls
#define PyInt_Check(op) \
PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_INT_SUBCLASS)
but ob_type is set to BASE flags INT_SUBCLASS i snot set.
|
|||
| msg81782 - (view) | Author: engelbert gruber (grubert) * | Date: 2009年02月12日 17:02 | |
Including Py_TPFLAGS_INT_SUBCLASS in numpy's BASEFLAGS cures this. This is an external problem then. But I could not find any reference to Py_TPFLAGS_*_SUBCLASS in the documentation, that is a python problem. |
|||
| msg81783 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2009年02月12日 17:19 | |
Ok, so Python has to improve its C-API documentation, and numpy to fix its int types :) |
|||
| msg88034 - (view) | Author: engelbert gruber (grubert) * | Date: 2009年05月18日 16:29 | |
issue5476 has a problem with timedelta(microseconds = int32(36)) interestingly 0 to 35 work , if the patch for this issue2263 is applied. |
|||
| msg173062 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2012年10月16日 17:13 | |
FYI Py_TPFLAGS_INT_SUBCLASS already not used in Python 3.x. |
|||
| msg193181 - (view) | Author: Yury V. Zaytsev (zaytsev) | Date: 2013年07月16日 16:10 | |
As noted in issue5476, I've submitted a pull request for NumPy: ttps://github.com/numpy/numpy/pull/3526 . I hope that this fixes this problem too: on Py2, I've added Py_TPFLAGS_INT_SUBCLASS, on Py3, NumPy doesn't inherit from int anymore, because it's not a fixed-width integer type. I guess it makes sense to close this bug now. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:31 | admin | set | github: 46516 |
| 2017年03月07日 19:19:43 | serhiy.storchaka | set | status: pending -> closed resolution: third party stage: resolved |
| 2015年07月25日 06:42:17 | serhiy.storchaka | set | status: open -> pending |
| 2014年01月07日 13:09:41 | vstinner | set | nosy:
+ vstinner |
| 2013年07月16日 16:10:10 | zaytsev | set | nosy:
+ zaytsev messages: + msg193181 |
| 2013年01月07日 17:42:56 | serhiy.storchaka | set | nosy:
- serhiy.storchaka |
| 2012年10月16日 17:13:35 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka messages: + msg173062 |
| 2010年10月29日 10:07:21 | admin | set | assignee: georg.brandl -> docs@python |
| 2010年06月14日 14:36:20 | mark.dickinson | set | nosy:
+ mark.dickinson |
| 2009年05月18日 16:29:50 | grubert | set | messages: + msg88034 |
| 2009年02月12日 17:19:14 | pitrou | set | versions:
+ Python 2.6, Python 3.0, Python 3.1, - Python 2.5 nosy: + georg.brandl, pitrou messages: + msg81783 priority: normal assignee: georg.brandl components: + Documentation, - Library (Lib) |
| 2009年02月12日 17:02:36 | grubert | set | messages: + msg81782 |
| 2009年02月09日 23:37:39 | grubert | set | messages: + msg81515 |
| 2009年01月29日 01:05:52 | grubert | set | files:
+ issue2263-numpy.py nosy: + grubert messages: + msg80736 versions: + Python 2.7 |
| 2008年03月10日 07:39:24 | jvr | create | |