Edgewall Software

Opened 10 years ago

Last modified 9 years ago

#555 new defect

genshi._speedups extension module incompatible with CPython >=3.3

Reported by: Arfrever.FTA@… Owned by: hodgestar
Priority: major Milestone: 0.8
Component: General Version: devel
Keywords: Cc: Arfrever.FTA@…

Description

genshi._speedups extension module is incompatible with CPython >=3.3 due to changes in unicode implementation in CPython 3.3. Genshi should use appropriate functions or macros (e.g. PyUnicode_GetLength()) instead of no longer available private members of PyUnicodeObject? structures.

$ python3.3 setup.py build
...
running build_ext
building 'genshi._speedups' extension
creating build/temp.linux-x86_64-3.3
creating build/temp.linux-x86_64-3.3/genshi
x86_64-pc-linux-gnu-gcc -pthread -fPIC -I/usr/include/python3.3 -c genshi/_speedups.c -o build/temp.linux-x86_64-3.3/genshi/_speedups.o
genshi/_speedups.c: In function ‘escape’:
genshi/_speedups.c:89:13: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:90:24: error: ‘PyUnicodeObject’ has no member named ‘length’
genshi/_speedups.c:90:43: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:120:13: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:121:15: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:122:24: error: ‘PyUnicodeObject’ has no member named ‘length’
genshi/_speedups.c:122:43: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:125:13: error: ‘PyUnicodeObject’ has no member named ‘length’
genshi/_speedups.c:125:13: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:130:17: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:136:21: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:144:17: error: ‘PyUnicodeObject’ has no member named ‘str’
genshi/_speedups.c:149:17: error: ‘PyUnicodeObject’ has no member named ‘str’
**********************************************************************
WARNING:
An optional C extension could not be compiled, speedups will not be
available.
**********************************************************************
command 'x86_64-pc-linux-gnu-gcc' failed with exit status 1

Change History (2)

comment:1 Changed 9 years ago by hodgestar

  • Owner changed from cmlenz to hodgestar

This is going to require a complete re-write of the escape function in _speedups.c so it's going to take awhile to get to.

comment:2 Changed 9 years ago by hodgestar

For the moment I've disabled the C extension by default in setup.py when the CPython version is >= 3.3.

Note: See TracTickets for help on using tickets.