Author: pfg
Date: Mon Dec 10 15:39:30 2012
New Revision: 1419529
URL: http://svn.apache.org/viewvc?rev=1419529&view=rev
Log:
Python3: Add some more python 2to3 compatibility and cleanups.
Partially inspired by hanya's work.
Modified:
openoffice/trunk/main/pyuno/source/module/uno.py
openoffice/trunk/main/scripting/source/pyprov/officehelper.py
openoffice/trunk/main/scripting/source/pyprov/pythonscript.py
Modified: openoffice/trunk/main/pyuno/source/module/uno.py
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/pyuno/source/module/uno.py?rev=1419529&r1=1419528&r2=1419529&view=diff
==============================================================================
--- openoffice/trunk/main/pyuno/source/module/uno.py (original)
+++ openoffice/trunk/main/pyuno/source/module/uno.py Mon Dec 10 15:39:30 2012
@@ -21,13 +21,23 @@
import sys
import pyuno
-import __builtin__
+
+try:
+ import __builtin__ as builtin
+except ImportError:
+ import builtins
+
+try:
+ unicode
+except NameError:
+ unicode = str
+
import socket # since on Windows sal3.dll no longer calls WSAStartup
# all functions and variables starting with a underscore (_) must be
considered private
# and can be changed at any time. Don't use them
_g_ctx = pyuno.getComponentContext( )
-_g_delegatee = __builtin__.__dict__["__import__"]
+_g_delegatee = builtin.__dict__["__import__"]
def getComponentContext():
""" returns the UNO component context, that was used to initialize the
python runtime.
@@ -171,20 +181,6 @@ class Char:
return self.value == that.value
return False
-# Suggested by Christian, but still some open problems which need to be solved
first
-#
-#class ByteSequence(str):
-#
-# def __repr__(self):
-# return "<ByteSequence instance %s>" % str.__repr__(self)
-
- # for a little bit compatibility; setting value is not possible as
- # strings are immutable
-# def _get_value(self):
-# return self
-#
-# value = property(_get_value)
-
class ByteSequence:
def __init__(self, value):
if isinstance(value, str):
@@ -286,16 +282,7 @@ def _uno_import( name, *optargs, **kwarg
return mod
# hook into the __import__ chain
-__builtin__.__dict__["__import__"] = _uno_import
-
-# private function, don't use
-def _impl_extractName(name):
- r = list(range(len(name)-1,0,-1))
- for i in r:
- if name[i] == ".":
- name = name[i+1:len(name)]
- break
- return name
+builtin.__dict__["__import__"] = _uno_import
# private, referenced from the pyuno shared library
def _uno_struct__init__(self,*args):
@@ -306,11 +293,11 @@ def _uno_struct__init__(self,*args):
# private, referenced from the pyuno shared library
def _uno_struct__getattr__(self,name):
- return __builtin__.getattr(self.__dict__["value"],name)
+ return builtin.getattr(self.__dict__["value"],name)
# private, referenced from the pyuno shared library
def _uno_struct__setattr__(self,name,value):
- return __builtin__.setattr(self.__dict__["value"],name,value)
+ return builtin.setattr(self.__dict__["value"],name,value)
# private, referenced from the pyuno shared library
def _uno_struct__repr__(self):
Modified: openoffice/trunk/main/scripting/source/pyprov/officehelper.py
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/scripting/source/pyprov/officehelper.py?rev=1419529&r1=1419528&r2=1419529&view=diff
==============================================================================
--- openoffice/trunk/main/scripting/source/pyprov/officehelper.py (original)
+++ openoffice/trunk/main/scripting/source/pyprov/officehelper.py Mon Dec 10
15:39:30 2012
@@ -81,7 +81,7 @@ def bootstrap():
except BootstrapException:
raise
- except Exception, e: # Any other exception
+ except Exception as e: # Any other exception
raise BootstrapException("Caught exception " + str(e), None)
return xContext
Modified: openoffice/trunk/main/scripting/source/pyprov/pythonscript.py
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/scripting/source/pyprov/pythonscript.py?rev=1419529&r1=1419528&r2=1419529&view=diff
==============================================================================
--- openoffice/trunk/main/scripting/source/pyprov/pythonscript.py (original)
+++ openoffice/trunk/main/scripting/source/pyprov/pythonscript.py Mon Dec 10
15:39:30 2012
@@ -28,6 +28,11 @@ import imp
import time
import ast
+try:
+ unicode
+except NameError:
+ unicode = str
+
class LogLevel:
NONE = 0
ERROR = 1
@@ -69,8 +74,8 @@ def getLogTarget():
if len( userInstallation ) > 0:
systemPath = uno.fileUrlToSystemPath( userInstallation +
"/Scripts/python/log.txt" )
ret = file( systemPath , "a" )
- except Exception,e:
- print "Exception during creation of pythonscript logfile: "+
lastException2String() + "\n, delagating log to stdout\n"
+ except Exception as e:
+ print("Exception during creation of pythonscript logfile: "+
lastException2String() + "\n, delagating log to stdout\n")
return ret
class Logger(LogLevel):
@@ -102,8 +107,8 @@ class Logger(LogLevel):
encfile(msg) +
"\n" )
self.target.flush()
- except Exception,e:
- print "Error during writing to stdout: "
+lastException2String() + "\n"
+ except Exception as e:
+ print("Error during writing to stdout: "
+lastException2String() + "\n")
log = Logger( getLogTarget() )
@@ -202,10 +207,10 @@ class MyUriHelper:
ret = self.m_baseUri + "/" + myUri.getName().replace( "|", "/" )
log.debug( "converting scriptURI="+scriptURI + " to storageURI=" +
ret )
return ret
- except UnoException, e:
+ except UnoException as e:
log.error( "error during converting scriptURI="+scriptURI + ": " +
e.Message)
raise RuntimeException( "pythonscript:scriptURI2StorageUri: "
+e.getMessage(), None )
- except Exception, e:
+ except Exception as e:
log.error( "error during converting scriptURI="+scriptURI + ": " +
str(e))
raise RuntimeException( "pythonscript:scriptURI2StorageUri: " +
str(e), None )
@@ -320,7 +325,7 @@ class ProviderContext:
def removePackageByUrl( self, url ):
- items = self.mapPackageName2Path.items()
+ items = list(self.mapPackageName2Path.items())
for i in items:
if url in i[1].pathes:
self.mapPackageName2Path.pop(i[0])
@@ -330,7 +335,7 @@ class ProviderContext:
packageName = self.getPackageNameFromUrl( url )
transientPart = self.getTransientPartFromUrl( url )
log.debug( "addPackageByUrl : " + packageName + ", " + transientPart +
"("+url+")" + ", rootUrl="+self.rootUrl )
- if self.mapPackageName2Path.has_key( packageName ):
+ if packageName in self.mapPackageName2Path:
package = self.mapPackageName2Path[ packageName ]
package.pathes = package.pathes + (url, )
else:
@@ -338,7 +343,7 @@ class ProviderContext:
self.mapPackageName2Path[ packageName ] = package
def isUrlInPackage( self, url ):
- values = self.mapPackageName2Path.values()
+ values = list(self.mapPackageName2Path.values())
for i in values:
# print "checking " + url + " in " + str(i.pathes)
if url in i.pathes:
@@ -432,7 +437,7 @@ class ProviderContext:
code = compile( src, encfile(uno.fileUrlToSystemPath( url ) ),
"exec" )
else:
code = compile( src, url, "exec" )
- exec code in entry.module.__dict__
+ exec(code, entry.module.__dict__)
entry.module.__file__ = url
self.modules[ url ] = entry
log.debug( "mapped " + url + " to " + str( entry.module ) )
@@ -475,7 +480,7 @@ class ScriptBrowseNode( unohelper.Base,
ret = not self.provCtx.sfa.isReadOnly( self.uri )
log.debug( "ScriptBrowseNode.getPropertyValue called for " + name
+ ", returning " + str(ret) )
- except Exception,e:
+ except Exception as e:
log.error( "ScriptBrowseNode.getPropertyValue error " +
lastException2String())
raise
@@ -520,10 +525,10 @@ class ScriptBrowseNode( unohelper.Base,
code = ensureSourceState( code )
mod = imp.new_module("ooo_script_framework")
mod.__dict__[GLOBAL_SCRIPTCONTEXT_NAME] =
self.provCtx.scriptContext
- exec code in mod.__dict__
+ exec(code, mod.__dict__)
values = mod.__dict__.get( CALLABLE_CONTAINER_NAME , None )
if not values:
- values = mod.__dict__.values()
+ values = list(mod.__dict__.values())
for i in values:
if isScript( i ):
@@ -544,7 +549,7 @@ class ScriptBrowseNode( unohelper.Base,
# log.debug("Save is not implemented yet")
# text = self.editor.getControl("EditorTextField").getText()
# log.debug("Would save: " + text)
- except Exception,e:
+ except Exception as e:
# TODO: add an error box here !
log.error( lastException2String() )
@@ -585,7 +590,7 @@ class FileBrowseNode( unohelper.Base, XB
self.provCtx, self.uri, self.name, i ))
ret = tuple( scriptNodeList )
log.debug( "returning " +str(len(ret)) + " ScriptChildNodes on " +
self.uri )
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.error( "Error while evaluating " + self.uri + ":" + text )
raise
@@ -594,7 +599,7 @@ class FileBrowseNode( unohelper.Base, XB
def hasChildNodes(self):
try:
return len(self.getChildNodes()) > 0
- except Exception, e:
+ except Exception as e:
return False
def getType( self):
@@ -625,7 +630,7 @@ class DirBrowseNode( unohelper.Base, XBr
log.debug( "adding DirBrowseNode " + i )
browseNodeList.append( DirBrowseNode( self.provCtx,
i[i.rfind("/")+1:len(i)],i))
return tuple( browseNodeList )
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.error( "DirBrowseNode error: " + str(e) + " while evaluating "
+ self.rootUrl)
log.error( text)
@@ -697,7 +702,7 @@ def getPathesFromPackage( rootUrl, sfa )
if not isPyFileInPath( sfa, i ):
handler.urlList.remove(i)
ret = tuple( handler.urlList )
- except UnoException, e:
+ except UnoException as e:
text = lastException2String()
log.debug( "getPathesFromPackage " + fileUrl + " Exception: " +text )
pass
@@ -765,7 +770,7 @@ def getModelFromDocUrl(ctx, url):
try:
ret = content.execute(c, 0, env)
doc = ret.getObject(1, None)
- except Exception, e:
+ except Exception as e:
log.isErrorLevel() and log.error("getModelFromDocUrl: %s" % url)
return doc
@@ -818,7 +823,7 @@ class PackageBrowseNode( unohelper.Base,
return self.name
def getChildNodes( self ):
- items = self.provCtx.mapPackageName2Path.items()
+ items = list(self.provCtx.mapPackageName2Path.items())
browseNodeList = []
for i in items:
if len( i[1].pathes ) == 1:
@@ -851,7 +856,7 @@ class PythonScript( unohelper.Base, XScr
log.debug( "PythonScript.invoke " + str( args ) )
try:
ret = self.func( *args )
- except UnoException,e:
+ except UnoException as e:
# UNO Exception continue to fly ...
text = lastException2String()
complete = "Error during invoking function " + \
@@ -864,7 +869,7 @@ class PythonScript( unohelper.Base, XScr
# this is really bad for most users.
e.Message = e.Message + " (" + complete + ")"
raise
- except Exception,e:
+ except Exception as e:
# General python exception are converted to uno RuntimeException
text = lastException2String()
complete = "Error during invoking function " + \
@@ -911,7 +916,7 @@ class PythonScriptProvider( unohelper.Ba
"com.sun.star.frame.TransientDocumentsDocumentContentFactory",
ctx).createDocumentContent(doc)
storageType = content.getIdentifier().getContentIdentifier()
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.error( text )
@@ -941,7 +946,7 @@ class PythonScriptProvider( unohelper.Ba
else:
self.dirBrowseNode = DirBrowseNode( self.provCtx,
LANGUAGENAME, rootUrl )
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.debug( "PythonScriptProvider could not be instantiated because
of : " + text )
raise e
@@ -980,7 +985,7 @@ class PythonScriptProvider( unohelper.Ba
log.debug( "got func " + str( func ) )
return PythonScript( func, mod )
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.error( text )
raise ScriptFrameworkErrorException( text, self, scriptUri,
LANGUAGENAME, 0 )
@@ -1012,7 +1017,7 @@ class PythonScriptProvider( unohelper.Ba
ret = self.provCtx.isUrlInPackage( uri )
log.debug( "hasByName " + uri + " " +str( ret ) )
return ret
- except Exception, e:
+ except Exception as e:
text = lastException2String()
log.debug( "Error in hasByName:" + text )
return False