Update of /cvsroot/pywin32/pywin32/com/win32com/client
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32119
Modified Files:
build.py gencache.py genpy.py makepy.py
Log Message:
Revert my previous checking that was supposed to fix "[ 1085454 ] Py 2.4 +
MS Excel COM --> crash", and provide a real fix - insanely long lines are
wrapped (which seems worthwhile even though Python itself is to blame).
Thanks to Roger Upole to pointing this out to me.
Thus, bForDefault again defaults to False.
Index: genpy.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/client/genpy.py,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** genpy.py 19 Oct 2004 23:02:56 -0000 1.44
--- genpy.py 13 Feb 2005 12:05:46 -0000 1.45
***************
*** 24,28 ****
error = "makepy.error"
! makepy_version = "0.4.92" # Written to generated file.
GEN_FULL="full"
--- 24,28 ----
error = "makepy.error"
! makepy_version = "0.4.93" # Written to generated file.
GEN_FULL="full"
***************
*** 230,239 ****
print >> stream, "%s_vtables_ = [" % (self.python_name, )
for v in self.vtableFuncs:
- chunks = []
names, dispid, desc = v
arg_desc = desc[2]
arg_reprs = []
for arg in arg_desc:
defval = build.MakeDefaultArgRepr(arg)
if arg[3] is None:
--- 230,250 ----
print >> stream, "%s_vtables_ = [" % (self.python_name, )
for v in self.vtableFuncs:
names, dispid, desc = v
arg_desc = desc[2]
arg_reprs = []
+ # more hoops so we don't generate huge lines.
+ item_num = 0
+ print >> stream, "\t((",
+ for name in names:
+ print >> stream, repr(name), ",",
+ item_num = item_num + 1
+ if item_num % 5 == 0:
+ print >> stream, "\n\t\t\t",
+ print >> stream, "), %d, (%r, %r, [" % (dispid, desc[0], desc[1]),
for arg in arg_desc:
+ item_num = item_num + 1
+ if item_num % 5 == 0:
+ print >> stream, "\n\t\t\t",
defval = build.MakeDefaultArgRepr(arg)
if arg[3] is None:
***************
*** 241,248 ****
else:
arg3_repr = repr(arg[3])
! arg_reprs.append((arg[0], arg[1], defval, arg3_repr))
! desc = desc[:2] + (arg_reprs,) + desc[3:]
! chunks.append("\t(%r, %d, %r)," % (names, dispid, desc))
! print >> stream, "".join(chunks)
print >> stream, "]"
print >> stream
--- 252,260 ----
else:
arg3_repr = repr(arg[3])
! print >> stream, repr((arg[0], arg[1], defval, arg3_repr)), ",",
! print >> stream, "],",
! for d in desc[3:]:
! print >> stream, repr(d), ",",
! print >> stream, ")),"
print >> stream, "]"
print >> stream
***************
*** 340,344 ****
fdesc = entry.desc
methName = MakeEventMethodName(entry.names[0])
! print >> stream, '#\tdef ' + methName + '(self' + build.BuildCallList(fdesc, entry.names, "defaultNamedOptArg", "defaultNamedNotOptArg","defaultUnnamedArg", "pythoncom.Missing") + '):'
if entry.doc and entry.doc[1]:
print >> stream, '#\t\t' + build._safeQuotedString(entry.doc[1])
--- 352,356 ----
fdesc = entry.desc
methName = MakeEventMethodName(entry.names[0])
! print >> stream, '#\tdef ' + methName + '(self' + build.BuildCallList(fdesc, entry.names, "defaultNamedOptArg", "defaultNamedNotOptArg","defaultUnnamedArg", "pythoncom.Missing", is_comment = True) + '):'
if entry.doc and entry.doc[1]:
print >> stream, '#\t\t' + build._safeQuotedString(entry.doc[1])
Index: makepy.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/client/makepy.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** makepy.py 25 Jan 2005 09:51:23 -0000 1.19
--- makepy.py 13 Feb 2005 12:05:46 -0000 1.20
***************
*** 51,60 ****
from win32com.client import NeedUnicodeConversions
! # Python 2.4 will crash on a huge typelib (eg, Excel) if bForDemand is False.
! # That looks like a good excuse to try and move to that more efficient
! # (for large typelibs) scheme.
! # Default value of bForDemand - override this (also in gencache.py) to
! # change the world.
! bForDemandDefault = sys.hexversion >= 0x2040000
error = "makepy.error"
--- 51,55 ----
from win32com.client import NeedUnicodeConversions
! bForDemandDefault = 0 # Default value of bForDemand - toggle this to change the world - see also gencache.py
error = "makepy.error"
***************
*** 185,191 ****
sys.exit(1)
! def GenerateFromTypeLibSpec(typelibInfo, file = None, verboseLevel = None, progressInstance = None, bUnicodeToString=NeedUnicodeConversions, bForDemand = bForDemandDefault, bBuildHidden = 1):
if verboseLevel is None:
! verboseLevel = 0
if bForDemand and file is not None:
raise RuntimeError, "You can only perform a demand-build when the output goes to the gen_py directory"
--- 180,190 ----
sys.exit(1)
! def GenerateFromTypeLibSpec(typelibInfo, file = None, verboseLevel = None, progressInstance = None, bUnicodeToString=NeedUnicodeConversions, bQuiet = None, bGUIProgress = None, bForDemand = bForDemandDefault, bBuildHidden = 1):
! if bQuiet is not None or bGUIProgress is not None:
! print "Please dont use the bQuiet or bGUIProgress params"
! print "use the 'verboseLevel', and 'progressClass' params"
if verboseLevel is None:
! verboseLevel = 0 # By default, we use a gui, and no verbose level!
!
if bForDemand and file is not None:
raise RuntimeError, "You can only perform a demand-build when the output goes to the gen_py directory"
Index: gencache.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/client/gencache.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** gencache.py 25 Jan 2005 09:51:23 -0000 1.30
--- gencache.py 13 Feb 2005 12:05:46 -0000 1.31
***************
*** 29,38 ****
import operator
! # Python 2.4 will crash on a huge typelib (eg, Excel) if bForDemand is False.
! # That looks like a good excuse to try and move to that more efficient
! # (for large typelibs) scheme.
! # Default value of bForDemand - override this (also in makepy.py) to
! # change the world.
! bForDemandDefault = sys.hexversion >= 0x2040000
# The global dictionary
--- 29,33 ----
import operator
! bForDemandDefault = 0 # Default value of bForDemand - toggle this to change the world - see also makepy.py
# The global dictionary
Index: build.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/client/build.py,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** build.py 9 Apr 2004 11:21:13 -0000 1.27
--- build.py 13 Feb 2005 12:05:46 -0000 1.28
***************
*** 486,491 ****
--- 486,497 ----
names[i] = "arg%d" % (i,)
names = map(MakePublicAttributeName, names[1:])
+ name_num = 0
while len(names) < numArgs:
names.append("arg%d" % (len(names),))
+ # As per BuildCallList(), avoid huge lines.
+ # Hack a "\n" at the end of every 5th name - "strides" would be handy
+ # here but don't exist in 2.2
+ for i in range(0, len(names), 5):
+ names[i] = names[i] + "\n\t\t\t"
return "," + string.join(names, ", ")
***************
*** 547,551 ****
return None
! def BuildCallList(fdesc, names, defNamedOptArg, defNamedNotOptArg, defUnnamedArg, defOutArg):
"Builds a Python declaration for a method."
# Names[0] is the func name - param names are from 1.
--- 553,557 ----
return None
! def BuildCallList(fdesc, names, defNamedOptArg, defNamedNotOptArg, defUnnamedArg, defOutArg, is_comment = False):
"Builds a Python declaration for a method."
# Names[0] is the func name - param names are from 1.
***************
*** 584,587 ****
--- 590,602 ----
argName = MakePublicAttributeName(argName)
+ # insanely long lines with an 'encoding' flag crashes python 2.4.0
+ # keep 5 args per line
+ # This may still fail if the arg names are insane, but that seems
+ # unlikely. See also _BuildArgList()
+ if (arg+1) % 5 == 0:
+ strval = strval + "\n"
+ if is_comment:
+ strval = strval + "#"
+ strval = strval + "\t\t\t"
strval = strval + ", " + argName
if defArgVal:
|