This is an automated email from the ASF dual-hosted git repository.

drdub pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/uima-uimacpp.git


The following commit(s) were added to refs/heads/main by this push:
     new a0794f7  handle single interpreter case
a0794f7 is described below

commit a0794f7ffcafcfc82179fe29b71ea8891b7e7446
Author: Pablo Duboue <[email protected]>
AuthorDate: Sat Jul 15 09:26:41 2023 -0400

    handle single interpreter case
---
 scriptators/python/pythonnator.cpp                 | 463 +--------------------
 .../{pythonnator.cpp => pythonnator_multi.cpp}     |   0
 .../{pythonnator.cpp => pythonnator_single.cpp}    |  42 --
 3 files changed, 1 insertion(+), 504 deletions(-)

diff --git a/scriptators/python/pythonnator.cpp 
b/scriptators/python/pythonnator.cpp
deleted file mode 100644
index 6756f22..0000000
--- a/scriptators/python/pythonnator.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <Python.h>
-#include "uima/api.hpp"
-
-// for u_init
-#include "unicode/uclean.h"
-
-#define MODULENAME "Pythonnator"
-
-#ifdef LINUX
-// Beacuse of UIMA not using the RTLD_GLOBAL flag when binding to this
-// .so file, we do not get the exports from the dependent libraries in 
-// when loading.  This flag causes the python .so file to be re-bound
-// hopefully this can be removed pending a future relesase of UIMA
-#define REBIND_PYTHON_SO 
-#include <dlfcn.h>
-#endif
-
-#define _PY_BEGIN_BLOCK_THREADS_ \
-  PyEval_RestoreThread(thread_state);
-#define _PY_END_BLOCK_THREADS_ \
-  thread_state = PyEval_SaveThread();
-
-using namespace uima;
-using namespace std;
-using namespace icu;
-
-// copied from SwigGenerated code
-
-// this function requires the SWIG code to be compiled with
-// SWIGRUNTIME defined to be "", otherwise this function is static
-// and does not scope outside of the library
-#if !defined(SWIG_GLOBAL) && !defined(SWIGRUNTIME)
-// SWIG 1.3.29 or better
-#include "uimapywrap.h" 
-#endif
-
-const unsigned int FUNCTIONCOUNT=7;
-enum { FUNCTION_INITIALIZE, FUNCTION_TYPESYSTEMINIT,
-  FUNCTION_DESTROY, FUNCTION_RECONFIGURE, FUNCTION_PROCESS,
-  FUNCTION_BATCHPROCESSCOMPLETE, FUNCTION_COLLECTIONPROCESSCOMPLETE };
-static const char *function_name[FUNCTIONCOUNT] = {
-  "initialize", "typeSystemInit", "destroy", "reconfigure", "process",
-  "batchProcessComplete", "collectionProcessComplete"
-};
-
-class Pythonnator : public Annotator {
-  PyThreadState *thread_state;
-  PyObject *function[FUNCTIONCOUNT];
-  int debug;
-  swig_type_info *cas_type, *rs_type, *ts_type;
-#ifdef REBIND_PYTHON_SO
-      static void *library;
-#endif
-  static unsigned int refcount;
-
-public:
-  // We construct a python interpreter in initialize - it lives for the
-  // life of the annotator - even if reconfigure happens.  Reconfigure
-  // and intialize both set dirty so the source code in the source file
-  // and contained in the type system are evaluated.
-
-  TyErrorId initialize(AnnotatorContext &ac) {
-       //    PyObject *main_module, *user_module;
-    PyObject *user_module;
-    PyObject *dict;
-    swig_type_info *ac_type;
-#ifdef PATH_MAX
-    char srcfile[PATH_MAX + 256];
-#else
-    char srcfile[1000 + 256];
-#endif
-
-    for (unsigned int i=0; i<FUNCTIONCOUNT; i++) {
-      function[i] = 0;
-    } 
-
-    debug = 0;
-    if (ac.isParameterDefined("DebugLevel")) {
-      ac.extractValue("DebugLevel", debug);
-    }
-    if (debug > 100) {
-      cerr<< MODULENAME ": Initialize - debug=" << debug <<endl;
-    }
-    if (!ac.isParameterDefined("SourceFile")) {
-      cerr<< MODULENAME ": Missing Python SourceFile" <<endl;
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    }
-
-    UnicodeString fn;
-    ac.extractValue(UnicodeString("SourceFile"), fn);
-    if (fn == "") {
-      cerr<< MODULENAME ": Empty Python SourceFile" <<endl;
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    }
-
-    UErrorCode err = U_ZERO_ERROR;
-    fn.extract(srcfile,sizeof(srcfile),0,err);
-    if (U_FAILURE(err)) {
-      cerr << MODULENAME ": Unable to extract parameter, got " << 
u_errorName(err) << endl;
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    }
-
-#ifdef REBIND_PYTHON_SO
-      if (refcount == 0) 
-        library = dlopen(PYTHONLIBRARYNAME , RTLD_LAZY | RTLD_GLOBAL);
-      if (library == 0) {
-        cerr<< MODULENAME ": unable to bind to python library " << 
-          PYTHONLIBRARYNAME <<endl;
-        cerr<< MODULENAME ": dlerror reports " << dlerror() << endl;
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      } 
-#endif
-      if (refcount++ == 0) {
-        // This is done here because older versions of UIMA cannot be counted 
on to properly
-       // initialize ICU, and this is necessary for thread safety
-        UErrorCode status = U_ZERO_ERROR;
-        u_init(&status);
-        if (U_FAILURE(status)) {
-          cerr<< MODULENAME ": ICU library reports failure to initialize" << 
endl;
-          return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-        }
-
-        Py_Initialize();
-       thread_state = PyThreadState_Get();
-      }
-
-      thread_state = Py_NewInterpreter();
-      if (thread_state == 0) {
-        cerr<< MODULENAME ": unable to create interpreter" << endl;
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      thread_state = PyEval_SaveThread();
-
-      _PY_BEGIN_BLOCK_THREADS_
-               //      main_module = PyImport_AddModule("__main__");
-      if (PyImport_ImportModule("pythonnator") == 0) { 
-        cerr << MODULENAME ":" << fn <<  ": failed to import pythonnator 
module, PYTHONPATH problem? " <<endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-
-      user_module = PyImport_ImportModule(srcfile);
-      if (user_module == 0) {
-        cerr << MODULENAME ": could not import python module " << srcfile 
<<endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      dict = PyModule_GetDict(user_module);
-
-      for (unsigned int i=0; i < FUNCTIONCOUNT; i++) {
-        function[i] = PyDict_GetItemString(dict, function_name[i] );
-        if (function[i]) {
-          Py_INCREF(function[i]);
-          if (debug>100) {
-            cerr << MODULENAME ": Registered function " << 
-               function_name[i] << endl;
-          }
-        } else {
-          if (debug>100) {
-            cerr << MODULENAME ": no function registered for " << 
-               function_name[i] << endl;
-          }
-        }
-      }
-
-      // convert cas and rs to python variables (parameters) 
-      swig_module_info *module = SWIG_Python_GetModule(NULL);
-      if (!module) {
-        cerr << MODULENAME ": could not get Python swig module" << endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-
-      ts_type = SWIG_TypeQueryModule(module,module, "_p_TypeSystem");
-      if (!ts_type) {
-        cerr << MODULENAME ": could lookup TypeSystem type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      ac_type = SWIG_TypeQueryModule(module,module, "_p_AnnotatorContext");
-      if (!ac_type) {
-        cerr << MODULENAME ": could lookup AnnotatorContext type in swig" << 
endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      cas_type = SWIG_TypeQueryModule(module,module, "_p_CAS");
-      if (!cas_type) {
-        cerr << MODULENAME ": could lookup cas type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-//       tcas_type = SWIG_TypeQueryModule(module,module, "_p_TCAS");
-//       if (!tcas_type) {
-//         cerr << MODULENAME ": could lookup tcas type in swig" << endl;
-//         _PY_END_BLOCK_THREADS_
-//         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-//       }
-      rs_type = SWIG_TypeQueryModule(module,module, 
-       "_p_ResultSpecification");
-      if (!rs_type) {
-        cerr << MODULENAME ": could lookup rs type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-
-      if (function[FUNCTION_INITIALIZE]) {
-        PyObject *arg1 = 
-           SWIG_Python_NewPointerObj(NULL,
-           reinterpret_cast<void *>( &ac),
-           ac_type, 0);
-        PyObject *rv = PyObject_CallFunctionObjArgs( 
-               function[FUNCTION_INITIALIZE], arg1, NULL);
-        Py_DECREF(arg1);
-        if (rv == 0) {
-          cerr << MODULENAME ": python error " << endl;
-          PyErr_Print();
-          _PY_END_BLOCK_THREADS_
-          return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-        } 
-        Py_DECREF(rv);
-      }
-
-      _PY_END_BLOCK_THREADS_
-      return UIMA_ERR_NONE;
-  }
-
-  TyErrorId reconfigure() {
-    if (refcount==0) {
-      cerr << MODULENAME ": not initialized in reconfigure" << endl;
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    }
-    _PY_BEGIN_BLOCK_THREADS_
-    if (debug > 100) {
-      cerr<< MODULENAME ": reconfigure" <<endl;
-    }
-    if (function[FUNCTION_RECONFIGURE]) {
-      PyObject *rv = PyObject_CallFunctionObjArgs( 
-        function[FUNCTION_RECONFIGURE], NULL);
-      if (rv == 0) {
-        cerr << MODULENAME ": python error " << endl;
-        PyErr_Print();
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      Py_DECREF(rv);
-    }
-    _PY_END_BLOCK_THREADS_
-    return UIMA_ERR_NONE;
-  }
-
-  TyErrorId typeSystemInit(TypeSystem const &ts) {
-    if (refcount==0) {
-      cerr << MODULENAME ": not initialized in typeSystemInit" << endl;
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    }
-    _PY_BEGIN_BLOCK_THREADS_
-    if (debug > 100) {
-      cerr<< MODULENAME ": typeSystemInit" <<endl;
-    }
-    if (function[FUNCTION_TYPESYSTEMINIT] == 0) return UIMA_ERR_NONE;
-    PyObject *arg1 = 
-       SWIG_Python_NewPointerObj(NULL,
-       reinterpret_cast<void *>( const_cast<TypeSystem *>(&ts)),
-       ts_type, 0);
-    PyObject *rv = PyObject_CallFunctionObjArgs( 
-               function[FUNCTION_TYPESYSTEMINIT], arg1, NULL);
-    Py_DECREF(arg1);
-
-    if (rv == 0) {
-      cerr << MODULENAME ": python error " << endl;
-      PyErr_Print();
-      _PY_END_BLOCK_THREADS_
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-    } else {
-      Py_DECREF(rv);
-    }
-    _PY_END_BLOCK_THREADS_
-    return UIMA_ERR_NONE;
-  }
-
-/** 
- * call the UIMA Annotator to deinitialize itself based on a UIMA engine
- * and return a UIMA error code
- */
-  TyErrorId destroy()
-  { 
-    if (debug > 100) {
-      cerr<< MODULENAME ": destroy " << endl;
-    }
-    _PY_BEGIN_BLOCK_THREADS_
-    if (function[FUNCTION_DESTROY] != 0) {
-      PyObject *rv = PyObject_CallFunctionObjArgs( 
-        function[FUNCTION_DESTROY], NULL);
-      if (rv == 0) {
-        cerr << MODULENAME ": python error on destroy - ignoring" << endl;
-        PyErr_Print();
-      } else {
-        Py_DECREF(rv);
-      }
-    }
-    for (unsigned int i=0; i < FUNCTIONCOUNT; i++) {
-      if (function[i]) Py_DECREF(function[i]);
-      function[i] = 0;
-    }
-
-    if (--refcount == 0) {
-      Py_Finalize();
-#ifdef REBIND_PYTHON_SO
-      dlclose(library); 
-#endif
-    } else {
-      _PY_END_BLOCK_THREADS_
-      // Py_EndInterpreter is crashing with multiple pythonnators running in 
parallel
-      // Py_EndInterpreter(thread_state);
-      thread_state = 0;
-    }
-    return (TyErrorId)UIMA_ERR_NONE;
-  }
-
-/**
- * call the UIMA Annotator to perform its duty based on a UIMA engine
- * and return a UIMA error code
- */
-  TyErrorId process(CAS &_cas, ResultSpecification const & _rs) { 
-    if (debug > 100) {
-      cerr<< MODULENAME ": process " << endl;
-    }
-
-    TyErrorId rc = UIMA_ERR_NONE;
-    if (function[FUNCTION_PROCESS]==0) {
-      return UIMA_ERR_NONE;
-    }
-
-    _PY_BEGIN_BLOCK_THREADS_
-    PyObject *arg1 = 
-       SWIG_Python_NewPointerObj(NULL,
-       reinterpret_cast<void *>( &_cas), cas_type, 0);
-    if (!arg1) {
-      cerr << "process: could not allocate Python object for cas" << endl;
-      _PY_END_BLOCK_THREADS_
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_PROCESS;
-    }
-    PyObject *arg2 = 
-       SWIG_Python_NewPointerObj(NULL,
-       reinterpret_cast<void *>( 
-               const_cast<ResultSpecification *>(&_rs)),
-       rs_type, 0);
-    if (!arg2) {
-      Py_DECREF(arg1);
-      cerr << "process: could not allocate Python object for resultspec"<<endl;
-      _PY_END_BLOCK_THREADS_
-      return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_PROCESS;
-    }
-
-    PyObject *rv = PyObject_CallFunctionObjArgs( 
-               function[FUNCTION_PROCESS], arg1, arg2, NULL);
-
-    Py_DECREF(arg2);
-    Py_DECREF(arg1);
-
-    if (rv == 0) {
-      cerr << MODULENAME ": python error " << endl;
-      PyErr_Print();
-      rc = UIMA_ERR_USER_ANNOTATOR_COULD_NOT_PROCESS;
-    } else {
-      Py_DECREF(rv);
-    }
-
-    _PY_END_BLOCK_THREADS_
-    return rc;
-  }
-
-  TyErrorId batchProcessComplete()
-  {
-    if (debug > 100) {
-      cerr<< MODULENAME ": batchProcessComplete " << endl;
-    }
-    _PY_BEGIN_BLOCK_THREADS_
-    if (function[FUNCTION_BATCHPROCESSCOMPLETE]) {
-      PyObject *rv = PyObject_CallFunctionObjArgs( 
-        function[FUNCTION_BATCHPROCESSCOMPLETE], NULL);
-      if (rv == 0) {
-        cerr << MODULENAME ": python error " << endl;
-        PyErr_Print();
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      Py_DECREF(rv);
-    }
-    _PY_END_BLOCK_THREADS_
-    return (TyErrorId)UIMA_ERR_NONE;
-  }
-
-  TyErrorId collectionProcessComplete()
-  {
-    if (debug > 100) {
-      cerr<< MODULENAME ": collectionProcessComplete " << endl;
-    }
-    _PY_BEGIN_BLOCK_THREADS_
-    if (function[FUNCTION_COLLECTIONPROCESSCOMPLETE]) {
-      PyObject *rv = PyObject_CallFunctionObjArgs( 
-        function[FUNCTION_COLLECTIONPROCESSCOMPLETE], NULL);
-      if (rv == 0) {
-        cerr << MODULENAME ": python error " << endl;
-        PyErr_Print();
-        _PY_END_BLOCK_THREADS_
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
-      }
-      Py_DECREF(rv);
-    }
-    _PY_END_BLOCK_THREADS_
-    return (TyErrorId)UIMA_ERR_NONE;
-  }
-
-};
-
-#ifdef REBIND_PYTHON_SO
-void *Pythonnator::library = 0;
-#endif
-unsigned int Pythonnator::refcount = 0;
-
-MAKE_AE(Pythonnator);
-
-
-// /* ----------------------------------------------------------------------- 
*/
-// /*   Mapping for generic C API wrapper                                     
*/
-// /* ----------------------------------------------------------------------- 
*/
-
-// typedef Pythonnator UserDefinedAnnotator;
-// // define for error/exception info in uima_annotator_generic.inl
-// #define UIMA_ANNOTATOR_NAME MODULENAME
-
-// /* ----------------------------------------------------------------------- 
*/
-// /*   Include generic C API wrapper                                         
*/
-// /* ----------------------------------------------------------------------- 
*/
-
-// // use casconsumer version so that both annotators and casconsumers are 
supported
-// #include "uima_casconsumer_generic.inl"
-
-
-/* <EOF> */
-
-
diff --git a/scriptators/python/pythonnator.cpp 
b/scriptators/python/pythonnator.cpp
new file mode 120000
index 0000000..b92c82a
--- /dev/null
+++ b/scriptators/python/pythonnator.cpp
@@ -0,0 +1 @@
+pythonnator_multi.cpp
\ No newline at end of file
diff --git a/scriptators/python/pythonnator.cpp 
b/scriptators/python/pythonnator_multi.cpp
similarity index 100%
copy from scriptators/python/pythonnator.cpp
copy to scriptators/python/pythonnator_multi.cpp
diff --git a/scriptators/python/pythonnator.cpp 
b/scriptators/python/pythonnator_single.cpp
similarity index 91%
copy from scriptators/python/pythonnator.cpp
copy to scriptators/python/pythonnator_single.cpp
index 6756f22..4056153 100644
--- a/scriptators/python/pythonnator.cpp
+++ b/scriptators/python/pythonnator_single.cpp
@@ -34,11 +34,6 @@
 #include <dlfcn.h>
 #endif
 
-#define _PY_BEGIN_BLOCK_THREADS_ \
-  PyEval_RestoreThread(thread_state);
-#define _PY_END_BLOCK_THREADS_ \
-  thread_state = PyEval_SaveThread();
-
 using namespace uima;
 using namespace std;
 using namespace icu;
@@ -140,28 +135,17 @@ public:
         }
 
         Py_Initialize();
-       thread_state = PyThreadState_Get();
-      }
-
-      thread_state = Py_NewInterpreter();
-      if (thread_state == 0) {
-        cerr<< MODULENAME ": unable to create interpreter" << endl;
-        return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
-      thread_state = PyEval_SaveThread();
 
-      _PY_BEGIN_BLOCK_THREADS_
                //      main_module = PyImport_AddModule("__main__");
       if (PyImport_ImportModule("pythonnator") == 0) { 
         cerr << MODULENAME ":" << fn <<  ": failed to import pythonnator 
module, PYTHONPATH problem? " <<endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
 
       user_module = PyImport_ImportModule(srcfile);
       if (user_module == 0) {
         cerr << MODULENAME ": could not import python module " << srcfile 
<<endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       dict = PyModule_GetDict(user_module);
@@ -186,39 +170,33 @@ public:
       swig_module_info *module = SWIG_Python_GetModule(NULL);
       if (!module) {
         cerr << MODULENAME ": could not get Python swig module" << endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
 
       ts_type = SWIG_TypeQueryModule(module,module, "_p_TypeSystem");
       if (!ts_type) {
         cerr << MODULENAME ": could lookup TypeSystem type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       ac_type = SWIG_TypeQueryModule(module,module, "_p_AnnotatorContext");
       if (!ac_type) {
         cerr << MODULENAME ": could lookup AnnotatorContext type in swig" << 
endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       cas_type = SWIG_TypeQueryModule(module,module, "_p_CAS");
       if (!cas_type) {
         cerr << MODULENAME ": could lookup cas type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
 //       tcas_type = SWIG_TypeQueryModule(module,module, "_p_TCAS");
 //       if (!tcas_type) {
 //         cerr << MODULENAME ": could lookup tcas type in swig" << endl;
-//         _PY_END_BLOCK_THREADS_
 //         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
 //       }
       rs_type = SWIG_TypeQueryModule(module,module, 
        "_p_ResultSpecification");
       if (!rs_type) {
         cerr << MODULENAME ": could lookup rs type in swig" << endl;
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
 
@@ -233,13 +211,11 @@ public:
         if (rv == 0) {
           cerr << MODULENAME ": python error " << endl;
           PyErr_Print();
-          _PY_END_BLOCK_THREADS_
           return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
         } 
         Py_DECREF(rv);
       }
 
-      _PY_END_BLOCK_THREADS_
       return UIMA_ERR_NONE;
   }
 
@@ -248,7 +224,6 @@ public:
       cerr << MODULENAME ": not initialized in reconfigure" << endl;
       return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
     }
-    _PY_BEGIN_BLOCK_THREADS_
     if (debug > 100) {
       cerr<< MODULENAME ": reconfigure" <<endl;
     }
@@ -258,12 +233,10 @@ public:
       if (rv == 0) {
         cerr << MODULENAME ": python error " << endl;
         PyErr_Print();
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       Py_DECREF(rv);
     }
-    _PY_END_BLOCK_THREADS_
     return UIMA_ERR_NONE;
   }
 
@@ -272,7 +245,6 @@ public:
       cerr << MODULENAME ": not initialized in typeSystemInit" << endl;
       return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
     }
-    _PY_BEGIN_BLOCK_THREADS_
     if (debug > 100) {
       cerr<< MODULENAME ": typeSystemInit" <<endl;
     }
@@ -288,12 +260,10 @@ public:
     if (rv == 0) {
       cerr << MODULENAME ": python error " << endl;
       PyErr_Print();
-      _PY_END_BLOCK_THREADS_
       return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
     } else {
       Py_DECREF(rv);
     }
-    _PY_END_BLOCK_THREADS_
     return UIMA_ERR_NONE;
   }
 
@@ -306,7 +276,6 @@ public:
     if (debug > 100) {
       cerr<< MODULENAME ": destroy " << endl;
     }
-    _PY_BEGIN_BLOCK_THREADS_
     if (function[FUNCTION_DESTROY] != 0) {
       PyObject *rv = PyObject_CallFunctionObjArgs( 
         function[FUNCTION_DESTROY], NULL);
@@ -328,7 +297,6 @@ public:
       dlclose(library); 
 #endif
     } else {
-      _PY_END_BLOCK_THREADS_
       // Py_EndInterpreter is crashing with multiple pythonnators running in 
parallel
       // Py_EndInterpreter(thread_state);
       thread_state = 0;
@@ -350,13 +318,11 @@ public:
       return UIMA_ERR_NONE;
     }
 
-    _PY_BEGIN_BLOCK_THREADS_
     PyObject *arg1 = 
        SWIG_Python_NewPointerObj(NULL,
        reinterpret_cast<void *>( &_cas), cas_type, 0);
     if (!arg1) {
       cerr << "process: could not allocate Python object for cas" << endl;
-      _PY_END_BLOCK_THREADS_
       return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_PROCESS;
     }
     PyObject *arg2 = 
@@ -367,7 +333,6 @@ public:
     if (!arg2) {
       Py_DECREF(arg1);
       cerr << "process: could not allocate Python object for resultspec"<<endl;
-      _PY_END_BLOCK_THREADS_
       return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_PROCESS;
     }
 
@@ -385,7 +350,6 @@ public:
       Py_DECREF(rv);
     }
 
-    _PY_END_BLOCK_THREADS_
     return rc;
   }
 
@@ -394,19 +358,16 @@ public:
     if (debug > 100) {
       cerr<< MODULENAME ": batchProcessComplete " << endl;
     }
-    _PY_BEGIN_BLOCK_THREADS_
     if (function[FUNCTION_BATCHPROCESSCOMPLETE]) {
       PyObject *rv = PyObject_CallFunctionObjArgs( 
         function[FUNCTION_BATCHPROCESSCOMPLETE], NULL);
       if (rv == 0) {
         cerr << MODULENAME ": python error " << endl;
         PyErr_Print();
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       Py_DECREF(rv);
     }
-    _PY_END_BLOCK_THREADS_
     return (TyErrorId)UIMA_ERR_NONE;
   }
 
@@ -415,19 +376,16 @@ public:
     if (debug > 100) {
       cerr<< MODULENAME ": collectionProcessComplete " << endl;
     }
-    _PY_BEGIN_BLOCK_THREADS_
     if (function[FUNCTION_COLLECTIONPROCESSCOMPLETE]) {
       PyObject *rv = PyObject_CallFunctionObjArgs( 
         function[FUNCTION_COLLECTIONPROCESSCOMPLETE], NULL);
       if (rv == 0) {
         cerr << MODULENAME ": python error " << endl;
         PyErr_Print();
-        _PY_END_BLOCK_THREADS_
         return UIMA_ERR_USER_ANNOTATOR_COULD_NOT_INIT;
       }
       Py_DECREF(rv);
     }
-    _PY_END_BLOCK_THREADS_
     return (TyErrorId)UIMA_ERR_NONE;
   }
 

Reply via email to