mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2024-10-26 12:25:09 +03:00
A few more fixes for python 3 affecting libxml2.py
need a few changes to the generator and the libxml.py stub
This commit is contained in:
parent
3798c4adbb
commit
6f18465189
@ -1038,10 +1038,9 @@ def buildWrappers():
|
||||
classes.write(" def __init__(self, _obj=None):\n")
|
||||
if classes_ancestor[classname] == "xmlCore" or \
|
||||
classes_ancestor[classname] == "xmlNode":
|
||||
classes.write(" if type(_obj).__name__ != ")
|
||||
classes.write("'PyCObject':\n")
|
||||
classes.write(" raise TypeError, ")
|
||||
classes.write("'%s needs a PyCObject argument'\n" % \
|
||||
classes.write(" if checkWrapper(_obj) != 0:")
|
||||
classes.write(" raise TypeError")
|
||||
classes.write("('%s got a wrong wrapper object type')\n" % \
|
||||
classname)
|
||||
if classname in reference_keepers:
|
||||
rlist = reference_keepers[classname]
|
||||
@ -1054,7 +1053,7 @@ def buildWrappers():
|
||||
classes_ancestor[classname] == "xmlNode":
|
||||
classes.write(" def __repr__(self):\n")
|
||||
format = "<%s (%%s) object at 0x%%x>" % (classname)
|
||||
classes.write(" return \"%s\" %% (self.name, long(pos_id (self)))\n\n" % (
|
||||
classes.write(" return \"%s\" %% (self.name, int(pos_id (self)))\n\n" % (
|
||||
format))
|
||||
else:
|
||||
txt.write("Class %s()\n" % (classname))
|
||||
|
@ -5,6 +5,16 @@ import sys
|
||||
# The root of all libxml2 errors.
|
||||
class libxmlError(Exception): pass
|
||||
|
||||
# Type of the wrapper class for the C objects wrappers
|
||||
def checkWrapper(obj):
|
||||
try:
|
||||
n = type(_obj).__name__
|
||||
if n != 'PyCObject' and n != 'PyCapsule':
|
||||
return 1
|
||||
except:
|
||||
return 0
|
||||
return 0
|
||||
|
||||
#
|
||||
# id() is sometimes negative ...
|
||||
#
|
||||
@ -62,9 +72,18 @@ class ioWrapper:
|
||||
def io_read(self, len = -1):
|
||||
if self.__io == None:
|
||||
return(-1)
|
||||
if len < 0:
|
||||
return(self.__io.read())
|
||||
return(self.__io.read(len))
|
||||
try:
|
||||
if len < 0:
|
||||
ret = self.__io.read()
|
||||
else:
|
||||
ret = self.__io.read(len)
|
||||
except Exception as e:
|
||||
print("failed to read from Python:", type(e))
|
||||
print("on IO:", self.__io)
|
||||
self.__io == None
|
||||
return(-1)
|
||||
|
||||
return(ret)
|
||||
|
||||
def io_write(self, str, len = -1):
|
||||
if self.__io == None:
|
||||
@ -97,10 +116,17 @@ class ioWriteWrapper(ioWrapper):
|
||||
if type(_obj) == type(''):
|
||||
print("write io from a string")
|
||||
self.o = None
|
||||
elif type(_obj) == types.InstanceType:
|
||||
print("write io from instance of %s" % (_obj.__class__))
|
||||
ioWrapper.__init__(self, _obj)
|
||||
self._o = libxml2mod.xmlCreateOutputBuffer(self, enc)
|
||||
elif type(_obj).__name__ == 'PyCapsule':
|
||||
file = libxml2mod.outputBufferGetPythonFile(_obj)
|
||||
if file != None:
|
||||
ioWrapper.__init__(self, file)
|
||||
else:
|
||||
ioWrapper.__init__(self, _obj)
|
||||
self._o = _obj
|
||||
# elif type(_obj) == types.InstanceType:
|
||||
# print(("write io from instance of %s" % (_obj.__class__)))
|
||||
# ioWrapper.__init__(self, _obj)
|
||||
# self._o = libxml2mod.xmlCreateOutputBuffer(self, enc)
|
||||
else:
|
||||
file = libxml2mod.outputBufferGetPythonFile(_obj)
|
||||
if file != None:
|
||||
|
Loading…
Reference in New Issue
Block a user