Salome HOME
[PY3] Runtime tests ok / _DEVDEBUG_ ok
authorNicolas Geimer <nicolas.geimer@edf.fr>
Thu, 20 Apr 2017 16:35:58 +0000 (18:35 +0200)
committerNicolas Geimer <nicolas.geimer@edf.fr>
Thu, 20 Apr 2017 16:35:58 +0000 (18:35 +0200)
src/engine_swig/engtypemaps.i
src/genericgui/SceneComposedNodeItem.cxx
src/runtime/DistributedPythonNode.cxx
src/runtime/SalomeContainerTools.cxx
src/runtime/Test/runtimeTest.cxx
src/runtime/Test/xmlrun_orig.sh
src/runtime/TypeConversions.cxx
src/yacsloader/Test/YacsLoaderTest.cxx
src/yacsloader/Test/xmlrun_orig.sh
src/yacsloader/parserBase.cxx

index 611e55ccfa9e68f486b0445290f3353fbcc20f0c..f0c708635f74b777a3bc703a1558a32cc4f8b1a2 100644 (file)
@@ -823,7 +823,7 @@ static void convertFromPyObjVectorOfObj(PyObject *pyLi, swig_type_info *ty, cons
  To overload standard SWIG wrapping we define a full specialization of std::map
  with %extend for 4 basic methods : getitem, setitem, delitem and keys.
  Then we complete the interface by deriving the shadow wrapper from
- the python mixin class (UserDict.DictMixin).
+ the python mixin class (UserDict.DictMixin / collections.MutableMapping with Python 3).
  Do not forget to declare the new shadow class to SWIG with tname_swigregister(tname).
  Objects returned by __getitem__ are declared new (%newobject) so that when destroyed they
  call decrRef (see feature("unref") for RefCounter).
@@ -883,8 +883,8 @@ public:
 %template()   std::pair<std::string, T* >;
 %template(tname)    std::map<std::string, T* >;
 %pythoncode{
-from UserDict import DictMixin
-class tname(tname,DictMixin):pass
+from collections import MutableMapping    
+class tname(tname,MutableMapping):pass
 tname##_swigregister(tname)
 }
 %enddef
index d4568dec008e4cf001809f36700ff796c8a5ba79..3c8e4d41244de8adc29defef45b6bf2cfde0c99f 100644 (file)
@@ -482,7 +482,7 @@ bool SceneComposedNodeItem::hasExpandedChildren(bool recursively)
 
 void SceneComposedNodeItem::shrinkExpandRecursive(bool toExpand, bool fromHere, ShrinkMode theShrinkMode)
 {
-  DEBTRACE("SceneComposedNodeItem::shrinkExpandRecursive " << isExpanding << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
+  DEBTRACE("SceneComposedNodeItem::shrinkExpandRecursive " << toExpand << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
   
   bool toChangeShrinkState = false;
   switch (theShrinkMode) {
index 88dff018532dff40366d2a74c46a07dc45eba5b2..60cf60543c21df25315024454288f56aa0ca61df 100644 (file)
@@ -238,7 +238,7 @@ void DistributedPythonNode::execute()
           {
             OutputPyPort *p=(OutputPyPort *)*iter;
             DEBTRACE( "port name: " << p->getName() );
-            DEBTRACE( "port kind: " << p->edGetType()->kind() );
+            DEBTRACE( "port kind: " << p->typeName() );
             DEBTRACE( "port pos : " << pos );
             if(PyTuple_Check(finalResult))ob=PyTuple_GetItem(finalResult,pos) ;
             else ob=finalResult;
index f4d66286f8f75167be22c17f31d45dda4b796948..48cb86646b7d2374aea15267328903df5ab103a7 100644 (file)
@@ -328,7 +328,7 @@ void SalomeContainerTools::Start(const std::vector<std::string>& compoNames, Sal
 
   bool isEmptyName;
   std::string str(sct.getNotNullContainerName(cont,askingNode,isEmptyName));
-  DEBTRACE("SalomeContainer::start " << str <<";"<< _sct.getHostName() <<";"<<_type);
+  DEBTRACE("SalomeContainer::start " << str <<";"<< sct.getHostName() <<";"<<shutdownLevel);
 
   // Finalize parameters with components found in the container
 
@@ -380,13 +380,13 @@ void SalomeContainerTools::Start(const std::vector<std::string>& compoNames, Sal
       if(!CORBA::is_nil(trueCont))
         {
           shutdownLevel=3;
-          DEBTRACE( "container found: " << str << " " << _shutdownLevel );
+          DEBTRACE( "container found: " << str << " " << shutdownLevel );
         }
       else
         {
           shutdownLevel=2;
           myparams.mode="start";
-          DEBTRACE( "container not found: " << str << " " << _shutdownLevel);
+          DEBTRACE( "container not found: " << str << " " << shutdownLevel);
         }
     }
 
index 68c964de65301b36f44a96c5e40e116865480308..3bd3ad6a4ece429473df88fe9466ac89991d8a82 100644 (file)
@@ -365,16 +365,16 @@ void RuntimeTest::createPythonNodesWithScript()
     string s = ss.str();
     ElementaryNode* node = _myRuntime->createScriptNode("",s);
     _nodeMap[s] = node;
-    ((InlineNode*) node)->setScript("print 'node 13'\n"
+    ((InlineNode*) node)->setScript("print('node 13')\n"
                                      "import eo\n"
-                                     "print ob\n"
+                                     "print(ob)\n"
                                      "o=ob._narrow(eo.Obj)\n"
-                                     "print o\n"
-                                     "print o.echoLong(13)\n"
+                                     "print(o)\n"
+                                     "print(o.echoLong(13))\n"
                                      "a=dble+1\n"
                                      "dble=2*a\n"
-                                     "print lng\n"
-                                     "print '++++++++',s,'+++++++++++++'\n"
+                                     "print(lng)\n"
+                                     "print('++++++++',s,'+++++++++++++')\n"
                                      "ob=o\n"
                                      "seqstr=['aaa','bbb']\n"
                                      "seqobj=[o,o,o,o]\n"
@@ -413,12 +413,12 @@ void RuntimeTest::createPythonNodesWithScript()
     string s = ss.str();
     ElementaryNode* node = _myRuntime->createScriptNode("",s);
     _nodeMap[s] = node;
-    ((InlineNode*) node)->setScript("print li\n"
-                                     "print 'lili=',lili\n"
-                                     "print 'lstr=',lstr\n"
-                                     "print 'lobj=',lobj\n"
-                                     "print 'llobj=',llobj\n"
-                                     "print 'objc=',objc\n"
+    ((InlineNode*) node)->setScript("print(li)\n"
+                                     "print('lili=',lili)\n"
+                                     "print('lstr=',lstr)\n"
+                                     "print('lobj=',lobj)\n"
+                                     "print('llobj=',llobj)\n"
+                                     "print('objc=',objc)\n"
                                      "li=2*li\n"
                                      );
     InputPort  *i1  = node->edAddInputPort("li",    _tc_seqdble);
@@ -447,12 +447,12 @@ void RuntimeTest::createPythonNodesWithScript()
     string s = ss.str();
     ElementaryNode* node = _myRuntime->createScriptNode("",s);
     _nodeMap[s] = node;
-    ((InlineNode*) node)->setScript("print li\n"
+    ((InlineNode*) node)->setScript("print(li)\n"
                                      "li=[2*e for e in li]\n"
-                                     "print 'obj=',obj\n"
-                                     "print li\n"
-                                     "print lngvec\n"
-                                     "print dblevec\n"
+                                     "print('obj=',obj)\n"
+                                     "print(li)\n"
+                                     "print(lngvec)\n"
+                                     "print(dblevec)\n"
                                      );
     InputPort  *i1  = node->edAddInputPort("li",      _tc_seqdble);
     InputPort  *i2  = node->edAddInputPort("obj",     _tc_obj);
@@ -1155,109 +1155,86 @@ void RuntimeTest::manualExecuteNoThread()
   ((ElementaryNode*)_nodeMap["Node_10"])->load();
   ((ElementaryNode*)_nodeMap["Node_10"])->execute();
   //  CPPUNIT_ASSERT_DOUBLES_EQUAL(10.51, (ElementaryNode*)_nodeMap["Node_10"])
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution Python Node_11" );
-  std::cerr << __LINE__ << std::endl;
   ((ElementaryNode*)_nodeMap["Node_11"])->load();
-  std::cerr << __LINE__ << std::endl;
   ((ElementaryNode*)_nodeMap["Node_11"])->execute();
-  std::cerr << __LINE__ << std::endl;
 
   DEBTRACE(" --- execution Python Node_12" );
   ((ElementaryNode*)_nodeMap["Node_12"])->load();
   ((ElementaryNode*)_nodeMap["Node_12"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_16" );
   ((ElementaryNode*)_nodeMap["Node_16"])->load();
   ((ElementaryNode*)_nodeMap["Node_16"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_17" );
   ((ElementaryNode*)_nodeMap["Node_17"])->load();
   ((ElementaryNode*)_nodeMap["Node_17"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_18" );
   ((ElementaryNode*)_nodeMap["Node_18"])->load();
   ((ElementaryNode*)_nodeMap["Node_18"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_19" );
   ((ElementaryNode*)_nodeMap["Node_19"])->load();
   ((ElementaryNode*)_nodeMap["Node_19"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_20" );
   ((ElementaryNode*)_nodeMap["Node_20"])->load();
   ((ElementaryNode*)_nodeMap["Node_20"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_21" );
   ((ElementaryNode*)_nodeMap["Node_21"])->load();
   ((ElementaryNode*)_nodeMap["Node_21"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_29" );
   ((ElementaryNode*)_nodeMap["Node_29"])->load();
   ((ElementaryNode*)_nodeMap["Node_29"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution Python Node_13" );
   ((ElementaryNode*)_nodeMap["Node_13"])->load();
   ((ElementaryNode*)_nodeMap["Node_13"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_22" );
   ((ElementaryNode*)_nodeMap["Node_22"])->load();
   ((ElementaryNode*)_nodeMap["Node_22"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_23" );
   ((ElementaryNode*)_nodeMap["Node_23"])->load();
   ((ElementaryNode*)_nodeMap["Node_23"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_24" );
   ((ElementaryNode*)_nodeMap["Node_24"])->load();
   ((ElementaryNode*)_nodeMap["Node_24"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_27" );
   ((ElementaryNode*)_nodeMap["Node_27"])->load();
   ((ElementaryNode*)_nodeMap["Node_27"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_28" );
   ((ElementaryNode*)_nodeMap["Node_28"])->load();
   ((ElementaryNode*)_nodeMap["Node_28"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_30" );
   ((ElementaryNode*)_nodeMap["Node_30"])->load();
   ((ElementaryNode*)_nodeMap["Node_30"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_32" );
   ((ElementaryNode*)_nodeMap["Node_32"])->load();
   ((ElementaryNode*)_nodeMap["Node_32"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_26" );
   ((ElementaryNode*)_nodeMap["Node_26"])->load();
   ((ElementaryNode*)_nodeMap["Node_26"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_31" );
   ((ElementaryNode*)_nodeMap["Node_31"])->load();
   ((ElementaryNode*)_nodeMap["Node_31"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution Python Node_14" );
   ((ElementaryNode*)_nodeMap["Node_14"])->load();
   ((ElementaryNode*)_nodeMap["Node_14"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution Python Node_15" );
   ((ElementaryNode*)_nodeMap["Node_15"])->load();
   ((ElementaryNode*)_nodeMap["Node_15"])->execute();
@@ -1267,22 +1244,18 @@ void RuntimeTest::manualExecuteNoThread()
   ((ElementaryNode*)_nodeMap["Node_36"])->load();
   ((ElementaryNode*)_nodeMap["Node_36"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_33" );
   ((ElementaryNode*)_nodeMap["Node_33"])->load();
   ((ElementaryNode*)_nodeMap["Node_33"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_34" );
   ((ElementaryNode*)_nodeMap["Node_34"])->load();
   ((ElementaryNode*)_nodeMap["Node_34"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- execution CORBA Node_35" );
   ((ElementaryNode*)_nodeMap["Node_35"])->load();
   ((ElementaryNode*)_nodeMap["Node_35"])->execute();
 
-  std::cerr << __LINE__ << std::endl;
   DEBTRACE(" --- end of execution" );
 }
 
index 3929be57d45ce706fba11ff822649533b6e16499..f890fb8582d963950d59ad7d1eed7d0da4d52940 100755 (executable)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-import xmlrpclib,sys
+import xmlrpc.client,sys
 
 data="""
 <methodCall>
@@ -31,13 +31,13 @@ data="""
 </methodCall>
 """
 def echo(args):
-  print args
+  print(args)
   return args
 
 f=open("input")
 data=f.read()
 f.close()
-print data
+print(data)
 
 class Objref:
   """Wrapper for objrefs """
@@ -58,16 +58,16 @@ class Objref:
     out.write(self.data or "")
     out.write("</objref></value>\n")
 
-xmlrpclib.WRAPPERS=xmlrpclib.WRAPPERS+(Objref,)
+xmlrpc.client.WRAPPERS=xmlrpc.client.WRAPPERS+(Objref,)
 
 def end_objref(self,data):
   self.append(Objref(data))
   self._value=0
 
-xmlrpclib.Unmarshaller.end_objref=end_objref
-xmlrpclib.Unmarshaller.dispatch["objref"]=end_objref
+xmlrpc.client.Unmarshaller.end_objref=end_objref
+xmlrpc.client.Unmarshaller.dispatch["objref"]=end_objref
 
-params, method = xmlrpclib.loads(data)
+params, method = xmlrpc.client.loads(data)
 
 try:
    call=eval(method)
@@ -75,11 +75,11 @@ try:
    response = (response,)
 except:
    # report exception back to server
-   response = xmlrpclib.dumps( xmlrpclib.Fault(1, "%s:%s" % sys.exc_info()[:2]))
+   response = xmlrpc.client.dumps( xmlrpc.client.Fault(1, "%s:%s" % sys.exc_info()[:2]))
 else:
-   response = xmlrpclib.dumps( response, methodresponse=1)
+   response = xmlrpc.client.dumps( response, methodresponse=1)
 
-print response
+print(response)
 f=open("output",'w')
 f.write(response)
 f.close()
index e33fae63449686db82b609e01d1399ed8ce3e348..adabc6439d53812e5010cc5952c6f125b0099aaa 100644 (file)
@@ -737,8 +737,14 @@ namespace YACS
       static inline std::string convert(const TypeCode *t,PyObject* o,void*)
         {
           std::string s;
-          if (PyBytes_Check(o))
-            s= PyBytes_AS_STRING(o);
+          if (PyUnicode_Check(o))
+            {
+              Py_ssize_t size;
+              char *ptr = PyUnicode_AsUTF8AndSize(o, &size);
+              if (!ptr)
+                throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+              s.assign(ptr, size);
+            }
           else
             {
               stringstream msg;
@@ -780,17 +786,23 @@ namespace YACS
     {
       static inline std::string convert(const TypeCode *t,PyObject* o,void*,int protocol)
         {
-          if (PyBytes_Check(o) && strncmp(t->id(),"python",6)!=0)
+          if (PyUnicode_Check(o) && strncmp(t->id(),"python",6)!=0)
             {
               // the objref is used by Python as a string (prefix:value) keep it as a string
-              return PyBytes_AS_STRING(o);
+              Py_ssize_t size;
+              std::string s;
+              char *ptr = PyUnicode_AsUTF8AndSize(o, &size);
+              if (!ptr)
+                throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+              s.assign(ptr, size);
+              return s;
             }
           if(strncmp(t->id(),"python",6)==0)
             {
               // It's a native Python object pickle it
               PyObject* mod=PyImport_ImportModule("pickle");
               PyObject *pickled=PyObject_CallMethod(mod,(char *)"dumps",(char *)"Oi",o,protocol);
-              DEBTRACE(PyObject_REPR(pickled) );
+              DEBTRACE(PyObject_Repr(pickled) );
               Py_DECREF(mod);
               if(pickled==NULL)
                 {
@@ -830,7 +842,12 @@ namespace YACS
                   PyErr_Print();
                   throw YACS::ENGINE::ConversionException("Problem in convertToYacsObjref<PYTHONImpl");
                 }
-              std::string mystr=PyBytes_AsString(pystring);
+              Py_ssize_t size;
+              std::string mystr;
+              char *ptr = PyUnicode_AsUTF8AndSize(pystring, &size);
+              if (!ptr)
+                throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+              mystr.assign(ptr, size);
               Py_DECREF(pystring);
               return mystr;
             }
@@ -948,7 +965,7 @@ namespace YACS
     {
       static inline PyObject* convert(const TypeCode *t,std::string& o)
         {
-          return PyBytes_FromString(o.c_str());
+          return PyUnicode_FromString(o.c_str());
         }
     };
     template <>
@@ -972,14 +989,14 @@ namespace YACS
           if(t->isA(Runtime::_tc_file))
             {
               //It's an objref file. Convert it specially
-              return PyBytes_FromString(o.c_str());
+              return PyUnicode_FromString(o.c_str());
             }
           if(strncmp(t->id(),"python",6)==0)
             {
               //It's a python pickled object, unpickled it
               PyObject* mod=PyImport_ImportModule("pickle");
               PyObject *ob=PyObject_CallMethod(mod,(char *)"loads",(char *)"s#",o.c_str(),o.length());
-              DEBTRACE(PyObject_REPR(ob));
+              DEBTRACE(PyObject_Repr(ob));
               Py_DECREF(mod);
               if(ob==NULL)
                 {
@@ -1861,7 +1878,7 @@ namespace YACS
                   PyObject* mod=PyImport_ImportModule("pickle");
                   PyObject *ob=PyObject_CallMethod(mod,(char *)"loads",(char *)"s#",s,buffer->length());
                   PyObject *pickled=PyObject_CallMethod(mod,(char *)"dumps",(char *)"Oi",ob,protocol);
-                  DEBTRACE(PyObject_REPR(pickled));
+                  DEBTRACE(PyObject_Repr(pickled));
                   std::string mystr=PyBytes_AsString(pickled);
                   Py_DECREF(mod);
                   Py_DECREF(ob);
@@ -2526,7 +2543,7 @@ namespace YACS
     template<>
     inline bool checkString<PYTHONImpl,PyObject*,void*>(const TypeCode *t,PyObject* o,void* aux)
       {
-          if (PyBytes_Check(o))
+          if (PyUnicode_Check(o))
             return true;
           else
             {
@@ -2538,7 +2555,7 @@ namespace YACS
     template<>
     inline bool checkObjref<PYTHONImpl,PyObject*,void*>(const TypeCode *t,PyObject* o,void* aux)
       {
-          if (PyBytes_Check(o))
+          if (PyUnicode_Check(o))
             return true;
           if(strncmp(t->id(),"python",6)==0) // a Python object is expected (it's always true)
             return true;
index 394a68b688f87c5e2d812c4a3f4537310b97ef6c..9eae67b2fa4c5ae0199eb7899613f47f4692260a 100644 (file)
@@ -53,16 +53,20 @@ int driverTest(Proc* &p, const char* schema)
 
   YACSLoader loader;
   Executor executor;
-  
   try
     {
       p=loader.load(schema);
+        
+      std::cerr << __FILE__ << std::endl;
       DEBTRACE("Proc *p = " << p);
       std::ofstream f("toto");
       p->writeDot(f);
       f.close();
       DEBTRACE("+++++++++++++++++++ BEGIN execution " << schema);
+      std::cerr << __FILE__ << std::endl;    
       executor.RunW(p,0);
+      std::cerr << __FILE__ << std::endl;
+
       DEBTRACE("+++++++++++++++++++   END execution " << schema);
       std::ofstream g("titi");
       p->writeDot(g);
@@ -73,13 +77,20 @@ int driverTest(Proc* &p, const char* schema)
   catch (YACS::Exception& e)
     {
       DEBTRACE("YACS exception caught: ");
+        std::cerr << __FILE__ << std::endl;
       DEBTRACE(e.what());
+        std::cerr << __FILE__ << std::endl;
+
       DEBTRACE("+++++++++++++++++++ END test in error " << schema);
       return 1;
     }
   catch (const std::ios_base::failure&)
     {
+        std::cerr << __FILE__ << std::endl;
+
       DEBTRACE("io failure");
+  std::cerr << __FILE__ << std::endl;
+
       DEBTRACE("+++++++++++++++++++ END test in error " << schema);
       return 1;
     }
@@ -92,10 +103,13 @@ int driverTest(Proc* &p, const char* schema)
       const char *p = tc->name();
       if ( *p != '\0' )
         {
+            std::cerr << __FILE__ << std::endl;
+
           DEBTRACE(p);
         }
       else
         {
+  std::cerr << __FILE__ << std::endl;
           DEBTRACE(tc->id());
         }
       DEBTRACE("+++++++++++++++++++ END test in error " << schema);
index 87f29f7f14bf57db5799845ffe1eaa2f3e8f2e13..06deec92686cdf0faeb798ad22cd56dfd62f6b08 100755 (executable)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-import xmlrpclib,sys
+import xmlrpc.client,sys
 
 #example
 data="""
@@ -32,7 +32,7 @@ data="""
 </methodCall>
 """
 def echo(args):
-  print "args=",args
+  print("args=",args)
   if not args:
     return None
   elif len(args) == 1:
@@ -43,7 +43,7 @@ def echo(args):
 f=open("input")
 data=f.read()
 f.close()
-print data
+print(data)
 
 class Objref:
   """Wrapper for objrefs """
@@ -64,16 +64,16 @@ class Objref:
     out.write(self.data or "")
     out.write("</objref></value>\n")
 
-xmlrpclib.WRAPPERS=xmlrpclib.WRAPPERS+(Objref,)
+xmlrpc.client.WRAPPERS=xmlrpc.client.WRAPPERS+(Objref,)
 
 def end_objref(self,data):
   self.append(Objref(data))
   self._value=0
 
-xmlrpclib.Unmarshaller.end_objref=end_objref
-xmlrpclib.Unmarshaller.dispatch["objref"]=end_objref
+xmlrpc.client.Unmarshaller.end_objref=end_objref
+xmlrpc.client.Unmarshaller.dispatch["objref"]=end_objref
 
-params, method = xmlrpclib.loads(data)
+params, method = xmlrpc.client.loads(data)
 
 try:
    call=eval(method)
@@ -81,11 +81,11 @@ try:
    response = (response,)
 except:
    # report exception back to server
-   response = xmlrpclib.dumps( xmlrpclib.Fault(1, "%s:%s" % sys.exc_info()[:2]))
+   response = xmlrpc.client.dumps( xmlrpc.client.Fault(1, "%s:%s" % sys.exc_info()[:2]))
 else:
-   response = xmlrpclib.dumps( response, methodresponse=1)
+   response = xmlrpc.client.dumps( response, methodresponse=1)
 
-print response
+print(response)
 f=open("output",'w')
 f.write(response)
 f.close()
index 12bcd320caaaee511bf46d409df908cbe6edd37e..470accd5c4e24dbad53942467a40b66d9389a14d 100644 (file)
@@ -56,7 +56,7 @@ void parser::SetUserDataAndPush(parser* pp)
 {
   XML_SetUserData(saxContext,pp);
   _stackParser.push(pp);
-  DEBTRACE("parser::SetUserDataAndPush, stack size: " << sp.size());
+  DEBTRACE("parser::SetUserDataAndPush, stack size: " << pp->_level);
 }
 
 void parser::onEnd(const XML_Char *el, parser* child)