ArchiveOrangemail archive

cheetahtemplate-discuss.lists.sourceforge.net


(List home) (Recent threads) (67 other SourceForge lists)

Subscription Options

  • RSS or Atom: Read-only subscription using a browser or aggregator. This is the recommended way if you don't need to send messages to the list. You can learn more about feed syndication and clients here.
  • Conventional: All messages are delivered to your mail address, and you can reply. To subscribe, send an email to the list's subscribe address with "subscribe" in the subject line, or visit the list's homepage here.
  • This list contains about 357 messages, beginning Sep 2009
  • This list doesn't seem to be active
Report the Spam
This button sends a spam report to the moderator. Please use it sparingly. For other removal requests, read this.
Are you sure? yes no

[PATCH] C extension fails to build on Python 2.5 because of PyUnicode_FromFormat

Ad
Arnaud Fontaine 1269992463Tue, 30 Mar 2010 23:41:03 +0000 (UTC)
Hello,

Cheetah  C  extension  doesn't  build   on  Python  <=  2.5  because  of
PyUnicode_FromFormat() being  only available on  Python >= 2.6.   I have
attached  a  patch  to  make   it  build  on  Python  2.5  and  inferior
versions. It builds without warning on Python 2.5, 2.6 and 3.1 and I can
import  _namemapper  on  all  these  versions, moreover  all  the  tests
passed. Hope  the patch is good  as I'm not really  familiar with Python
C/API.

BTW,  my question  may  be  silly but  I'm  wondering why  `newExcValue'
reference           returned          by          PyUnicode_FromFormat()
(wrapInternalNotFoundException() function) is never DECREF whereas it is
in  setNotFoundException()  function  for `exceptionStr'.  Just  curious
;)...

Cheers,
Arnaud Fontaine
R. Tyler Ballance 1269998353Wed, 31 Mar 2010 01:19:13 +0000 (UTC)
On Wed, 31 Mar 2010, Arnaud Fontaine wrote: > Hello, > > Cheetah C extension doesn't build on Python <= 2.5 because of > PyUnicode_FromFormat() being only available on Python >= 2.6. I have > attached a patch to make it build on Python 2.5 and inferior > versions. It builds without warning on Python 2.5, 2.6 and 3.1 and I can > import _namemapper on all these versions, moreover all the tests > passed. Hope the patch is good as I'm not really familiar with Python > C/API.
Aha, good catch Arnaud, I had experienced a similar quirk when I ported another C-extension that I maintain to run on Python 2.4 - 3.1, I'll squeeze an update out tonight or tomorrow :)
> > BTW, my question may be silly but I'm wondering why `newExcValue' > reference returned by PyUnicode_FromFormat() > (wrapInternalNotFoundException() function) is never DECREF whereas it is > in setNotFoundException() function for `exceptionStr'. Just curious > ;)... > > Cheers, > Arnaud Fontaine > > Description: C extension fails to build because of PyUnicode_FromFormat only available on Python >= 2.6 > Author: Arnaud Fontaine > > --- a/cheetah/c/cheetah.h 2010-02-08 04:17:23.000000000 +0000 > +++ b/cheetah/c/cheetah.h 2010-03-30 22:42:49.000000000 +0100 > @@ -37,6 +37,9 @@ > > #if PY_MAJOR_VERSION >= 3 > #define IS_PYTHON3 > +#elif PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION <= 5 > +/* PyUnicode_FromFormat is only available on Python >= 2.6 */ > +#define IS_PYTHON25_OR_LESS > #endif > > #define TRUE 1 > --- a/cheetah/c/_namemapper.c 2010-02-08 04:17:23.000000000 +0000 > +++ b/cheetah/c/_namemapper.c 2010-03-30 22:40:01.000000000 +0100 > @@ -35,7 +35,13 @@ > static void setNotFoundException(char *key, PyObject *namespace) > { > PyObject *exceptionStr = NULL; > +#ifdef IS_PYTHON25_OR_LESS > + exceptionStr = Py_BuildValue("s", "cannot find '"); > + PyString_ConcatAndDel(&exceptionStr, Py_BuildValue("s", key)); > + PyString_ConcatAndDel(&exceptionStr, Py_BuildValue("s", "'")); > +#else > exceptionStr = PyUnicode_FromFormat("cannot find \'%s\'", key); > +#endif > PyErr_SetObject(NotFound, exceptionStr); > Py_XDECREF(exceptionStr); > } > @@ -58,8 +64,15 @@ > > if (isAlreadyWrapped != NULL) { > if (PyLong_AsLong(isAlreadyWrapped) == -1) { > +#ifdef IS_PYTHON25_OR_LESS > + newExcValue = Py_BuildValue("U", excValue); > + PyString_ConcatAndDel(&newExcValue, Py_BuildValue("s", "while searching for '")); > + PyString_ConcatAndDel(&newExcValue, Py_BuildValue("s", fullName)); > + PyString_ConcatAndDel(&newExcValue, Py_BuildValue("s", "'")); > +#else > newExcValue = PyUnicode_FromFormat("%U while searching for \'%s\'", > excValue, fullName); > +#endif > } > Py_DECREF(isAlreadyWrapped); > } > ------------------------------------------------------------------------------ > Download Intel&#174; Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Cheetahtemplate-discuss mailing list > > https://lists.sourceforge.net/lists/listinfo/...
Cheers, -R. Tyler Ballance
Arnaud Fontaine 1270027586Wed, 31 Mar 2010 09:26:26 +0000 (UTC)
Hi,
> Aha, good catch Arnaud, I had experienced a similar quirk when I > ported another C-extension that I maintain to run on Python 2.4 - > 3.1, I'll squeeze an update out tonight or tomorrow :)
Does the patch look alright? I have already uploaded a Debian package of python-cheetah 2.4.2.1 which includes this patch. So don't worry about the update ;), especially because I seem to be the only one to report such issue.
>> BTW, my question may be silly but I'm wondering why `newExcValue' >> reference returned by PyUnicode_FromFormat() >> (wrapInternalNotFoundException() function) is never DECREF >> whereas it is in setNotFoundException() function for >> `exceptionStr'. Just curious ;)...
Any thoughts about that? ;) Cheers, Arnaud
R. Tyler Ballance 1270937160Sat, 10 Apr 2010 22:06:00 +0000 (UTC)
On Wed, 31 Mar 2010, Arnaud Fontaine wrote: > Hi, > > > Aha, good catch Arnaud, I had experienced a similar quirk when I > > ported another C-extension that I maintain to run on Python 2.4 - > > 3.1, I'll squeeze an update out tonight or tomorrow :) > > Does the patch look alright? I have already uploaded a Debian package of > python-cheetah 2.4.2.1 which includes this patch. So don't worry about > the update ;), especially because I seem to be the only one to report > such issue.
Regarding the patch, I think I might rather add somtehing like the following: #ifndef PyUnicode_FromFormat #define PyUnicode_FromFormat(a, b) PyString_FromFormat(a, b) #end def I define similar macros for supporting Python 2.4/2.5 with another one of my projects: http://github.com/rtyler/py-yajl/blob/master/...
> > >> BTW, my question may be silly but I'm wondering why `newExcValue' > >> reference returned by PyUnicode_FromFormat() > >> (wrapInternalNotFoundException() function) is never DECREF > >> whereas it is in setNotFoundException() function for > >> `exceptionStr'. Just curious ;)... > > Any thoughts about that? ;)
Probably a bug, the _namemapper.c code needs some love. Cheers, -R. Tyler Ballance
Arnaud Fontaine 1293258111Sat, 25 Dec 2010 06:21:51 +0000 (UTC)
Hi,>> Does  the patch  look alright? I  have already uploaded  a Debian
>> package  of python-cheetah 2.4.2.1 which includes  this patch. So
>> don't worry about the update  ;), especially because I seem to be
>> the only one to report such issue.

> Regarding the patch, I think I might rather add somtehing like the
> following:

>     #ifndef PyUnicode_FromFormat #define PyUnicode_FromFormat(a,
> b) PyString_FromFormat(a, b) #end defNo patch seems to have been applied about that, any update? Thanks.

Cheers,
--
Arnaud Fontaine------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
Home | About | Privacy