[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: 1.6rc3 ctypes python test suite

From: David James <james82_at_gmail.com>
Date: Thu, 12 Mar 2009 08:33:50 -0700

On Thu, Mar 12, 2009 at 8:08 AM, Arfrever Frehtes Taifersar Arahesis <
arfrever.fta_at_gmail.com> wrote:

> 2009-03-12 16:00 David James <james82_at_gmail.com> napisał(a):
> > On Thu, Mar 12, 2009 at 4:04 AM, Arfrever Frehtes Taifersar Arahesis
> > <Arfrever.FTA_at_gmail.com> wrote:
> >>
> >> 2009-03-12 11:06 Arkadiusz Miskiewicz <arekm_at_maven.pl> napisał(a):
> >> >
> >> > Is this supposed to work correctly with python 2.6? (ctypesgen rev
> 63):
> >> >
> >> > $ make check-ctypes-python
> >> > cd
> >> >
> /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/bindings/ctypes-python;
> >> > \
> >> > /bin/sh
> >> > /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/libtool --tag=CC
> --silent
> >> > --mode=execute `for f in
> >> > /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/*/*.la; do
> echo
> >> > -dlopen $f; done`
> >> > /usr/bin/python setup.py build --subversion="/usr" \
> >> > --apr="/usr" --apr-util="/usr" \
> >> > --ctypesgen="/usr/bin/ctypesgen.py"
> >> >
> --svn-headers="/home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/include"
> >> > \
> >> > --cppflags="-D_FORTIFY_SOURCE=2 -DLINUX=2 -D_REENTRANT
> >> > -D_GNU_SOURCE -I/usr/include/apr -I/usr/include/apr-util
> -I/usr/include
> >> > -DQT_SHARED -D_REENTRANT -DQT_CORE_LIB -
> >> > DQT_NO_DEBUG -DQT_DBUS_LIB -DQT_XML_LIB -DQT_GUI_LIB " --ldflags=""
> >> > running build
> >> > csvn/core/functions.py was not regenerated (output up-to-date)
> >> > running build_py
> >> > cd
> >> >
> /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/bindings/ctypes-python;
> >> > \
> >> > /bin/sh
> >> > /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/libtool --tag=CC
> --silent
> >> > --mode=execute `for f in
> >> > /home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/*/*.la; do
> echo
> >> > -dlopen $f; done`
> >> > /usr/bin/python test/run_all.py
> >> > Traceback (most recent call last):
> >> > File "test/run_all.py", line 5, in <module>
> >> > import setup_path
> >> > File
> >> >
> "/home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/bindings/ctypes-python/test/setup_path.py",
> >> > line 14, in <module>
> >> > import csvn.core
> >> > File
> >> >
> "/home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/bindings/ctypes-python/csvn/core/__init__.py",
> >> > line 4, in <module>
> >> > import functions
> >> > File
> >> >
> "/home/users/arekm/rpm/BUILD/subversion-1.6.0-rc3/subversion/bindings/ctypes-python/csvn/core/functions.py",
> >> > line 111, in <module>
> >> > class String(MutableString, Union):
> >> > File "/usr/share/python2.6/abc.py", line 76, in __new__
> >> > TypeError: Error when calling the metaclass bases
> >> > metaclass conflict: the metaclass of a derived class must be a
> >> > (non-strict) subclass of the metaclasses of all its bases
> >> > make: *** [check-ctypes-python] Błąd 1
> >>
> >> ctypesgen generates code (class String in
> >> ctypesgencore/printer/preamble.py) which currently doesn't work with
> >> Python >=2.6 :( .
> >>
> >
> > Hi Arfrever, Arkadiusz,
> > Reading about this issue, it seems like the problem here is that
> > MutableString and Union have metaclasses, and Python doesn't know how to
> > automatically generate a metaclass for the String class. How can we do
> that
> > in a portable way that works with Python 2.4 - Python 2.6? Do
> MutableString
> > or Union even have metaclasses in Python 2.4?
>
> MutableString class doesn't exist in Python 3, so I suggest to rewrite
> String
> class without inheriting from MutableString class (maybe using lists).
>

Will Python 3.x really get rid of the UserString classes altogether? Maybe
this is a mistake on the part of Python developers as it breaks
compatibility.

In any case, if we need to fix this, rather than rewriting the MutableString
class, we could copy the MutableString class into ctypesgen for forward
compatibility with Python 2.6 and later.

http://svn.python.org/view/python/branches/release25-maint/Lib/UserString.py?revision=66717&view=markup

The version of MutableString in Python 2.5 and earlier looks fine.
In Copying MutableString from Python 2.5 into ctypesgen would be pretty
straightforward, I think.

In Python 2.6, MutableString inherits from MutableSequence, which, via a
complex inheritance chain, eventually defines ABCMeta as its metaclass. If
we wanted to fix the metaclass issue, I guess we would have to combine the
ABCMeta metaclass with the metaclasses used by ctypes. This seems needlessly
complicated.

http://svn.python.org/view/python/branches/release26-maint/Lib/UserString.py?revision=66717&view=markup<http://svn.python.org/view/python/branches/release25-maint/Lib/UserString.py?revision=66717&view=markup>
http://svn.python.org/view/python/branches/release26-maint/Lib/_abcoll.py?revision=69938&view=markup
http://svn.python.org/view/python/branches/release26-maint/Lib/abc.py?revision=70080&view=markup

Cheers,

David

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1313365
Received on 2009-03-12 16:34:05 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.