Revision: 615
          http://rpy.svn.sourceforge.net/rpy/?rev=615&view=rev
Author:   lgautier
Date:     2008-08-05 10:42:58 +0000 (Tue, 05 Aug 2008)

Log Message:
-----------
initEmbeddedR() no longer throws an exception when called when R is already 
initialized
(it just has no effect)

Modified Paths:
--------------
    branches/rpy_nextgen/NEWS
    branches/rpy_nextgen/rpy/rinterface/__init__.py
    branches/rpy_nextgen/rpy/rinterface/rinterface.c
    branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py
    branches/rpy_nextgen/rpy/rinterface/tests/test_Sexp.py
    branches/rpy_nextgen/rpy/rinterface/tests/test_SexpClosure.py
    branches/rpy_nextgen/rpy/rinterface/tests/test_SexpEnvironment.py
    branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVector.py
    branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVectorNumeric.py

Modified: branches/rpy_nextgen/NEWS
===================================================================
--- branches/rpy_nextgen/NEWS   2008-08-04 19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/NEWS   2008-08-05 10:42:58 UTC (rev 615)
@@ -13,7 +13,7 @@
 
 :mod:`rpy2.rinterface`:
 
-- underlying handling of interruptions is being worked on
+- :func:`initEmbeddedR` is only initializing if R is not started (no effect 
otherwise, and no exception thrown anymore)
 
 
 

Modified: branches/rpy_nextgen/rpy/rinterface/__init__.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/__init__.py     2008-08-04 19:17:23 UTC 
(rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/__init__.py     2008-08-05 10:42:58 UTC 
(rev 615)
@@ -74,3 +74,5 @@
 
 setReadConsole(consoleRead)
 
+
+

Modified: branches/rpy_nextgen/rpy/rinterface/rinterface.c
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-08-04 19:17:23 UTC 
(rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-08-05 10:42:58 UTC 
(rev 615)
@@ -319,9 +319,12 @@
 static PyObject* EmbeddedR_init(PyObject *self) 
 {
 
+  static int status;
+  
   if (embeddedR_status & RPY_R_INITIALIZED) {
-    PyErr_Format(PyExc_RuntimeError, "R can only be initialized once.");
-    return NULL;
+    return PyInt_FromLong(status);
+/*     PyErr_Format(PyExc_RuntimeError, "R can only be initialized once."); */
+/*     return NULL; */
   }
 
   const Py_ssize_t n_args = PySequence_Size(initOptions);
@@ -339,7 +342,7 @@
   R_SignalHandlers=0;
 #endif  
   /* int status = Rf_initEmbeddedR(n_args, options);*/
-  int status = Rf_initialize_R(n_args, options);
+  status = Rf_initialize_R(n_args, options);
   R_Interactive = TRUE;
 #ifdef RIF_HAS_RSIGHAND
   R_SignalHandlers=0;
@@ -348,7 +351,8 @@
   /* Taken from JRI:
    * disable stack checking, because threads will thow it off */
   R_CStackLimit = (uintptr_t) -1;
-  
+  /* --- */
+
 #ifdef Win32
   setup_term_ui();
 #endif

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py 2008-08-04 
19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py 2008-08-05 
10:42:58 UTC (rev 615)
@@ -1,13 +1,8 @@
 import unittest
 import rpy2.rinterface as rinterface
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    rinterface.initEmbeddedR()
-except:
-    pass
+rinterface.initEmbeddedR()
 
-
 class EmbeddedRTestCase(unittest.TestCase):
     def testSetWriteConsole(self):
         buf = []

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_Sexp.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_Sexp.py      2008-08-04 
19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_Sexp.py      2008-08-05 
10:42:58 UTC (rev 615)
@@ -1,13 +1,8 @@
 import unittest
 import rpy2.rinterface as rinterface
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    rinterface.initEmbeddedR()
-except:
-    pass
+rinterface.initEmbeddedR()
 
-
 class SexpTestCase(unittest.TestCase):
     #def setUpt(self):
     #    rinterface.initEmbeddedR("foo", "--no-save")

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_SexpClosure.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_SexpClosure.py       
2008-08-04 19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_SexpClosure.py       
2008-08-05 10:42:58 UTC (rev 615)
@@ -2,13 +2,8 @@
 import rpy2.rinterface as rinterface
 import rpy2.rlike.container as rlc
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    rinterface.initEmbeddedR()
-except:
-    pass
+rinterface.initEmbeddedR()
 
-
 class SexpClosureTestCase(unittest.TestCase):
     #def setUp(self):
     #    rinterface.initEmbeddedR("foo", "--no-save")

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_SexpEnvironment.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_SexpEnvironment.py   
2008-08-04 19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_SexpEnvironment.py   
2008-08-05 10:42:58 UTC (rev 615)
@@ -1,11 +1,7 @@
 import unittest
 import rpy2.rinterface as rinterface
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    rinterface.initEmbeddedR()
-except:
-    pass
+rinterface.initEmbeddedR()
 
 class SexpEnvironmentTestCase(unittest.TestCase):
     #def setUpt(self):

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVector.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVector.py        
2008-08-04 19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVector.py        
2008-08-05 10:42:58 UTC (rev 615)
@@ -2,11 +2,7 @@
 import sys
 import rpy2.rinterface as ri
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    ri.initEmbeddedR()
-except:
-    pass
+ri.initEmbeddedR()
 
 def floatEqual(x, y, epsilon = 0.00000001):
     return abs(x - y) < epsilon

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVectorNumeric.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVectorNumeric.py 
2008-08-04 19:17:23 UTC (rev 614)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_SexpVectorNumeric.py 
2008-08-05 10:42:58 UTC (rev 615)
@@ -10,11 +10,7 @@
     hasNumpy = False
 
 
-try:
-    #FIXME: can starting and stopping an embedded R be done several times ?
-    rinterface.initEmbeddedR()
-except:
-    pass
+rinterface.initEmbeddedR()
 
 def floatEqual(x, y, epsilon = 0.00000001):
     return abs(x - y) < epsilon


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to