def testNew(self): sexp = rinterface.baseenv.get("letters") sexp_new = rinterface.Sexp(sexp) idem = rinterface.baseenv.get("identical") self.assertTrue(idem(sexp, sexp_new)[0]) sexp_new2 = rinterface.Sexp(sexp) self.assertTrue(idem(sexp, sexp_new2)[0]) del (sexp) self.assertTrue(idem(sexp_new, sexp_new2)[0])
def test_unserialize(): x = rinterface.IntSexpVector([1, 2, 3]) x_serialized = x.__getstate__() x_again = rinterface.Sexp(rinterface.unserialize(x_serialized)) identical = rinterface.baseenv['identical'] assert not x.rsame(x_again) assert identical(x, x_again)[0]
def default_py2ri(o): """ Convert arbitrary Python object to :class:`rpy2.rinterface.Sexp` to objects, creating an R object with the content of the Python object in the process (wich means data copying). :param o: object :rtype: :class:`rpy2.rinterface.Sexp` (and subclasses) """ if isinstance(o, RObject): res = rinterface.Sexp(o) if isinstance(o, Sexp): res = o elif isinstance(o, array.array): if o.typecode in ('h', 'H', 'i', 'I'): res = rinterface.SexpVector(o, rinterface.INTSXP) elif o.typecode in ('f', 'd'): res = rinterface.SexpVector(o, rinterface.REALSXP) else: raise (ValueError( "Nothing can be done for this array type at the moment.")) elif isinstance(o, bool): res = rinterface.SexpVector([ o, ], rinterface.LGLSXP) elif isinstance(o, int) or isinstance(o, long): # special case for NA_Logical if o is rinterface.NA_Logical: res = rinterface.SexpVector([ o, ], rinterface.LGLSXP) else: res = rinterface.SexpVector([ o, ], rinterface.INTSXP) elif isinstance(o, float): res = rinterface.SexpVector([ o, ], rinterface.REALSXP) elif isinstance(o, str): res = rinterface.SexpVector([ o, ], rinterface.STRSXP) elif isinstance(o, unicode): res = rinterface.SexpVector([ o, ], rinterface.STRSXP) elif isinstance(o, list): res = r.list(*[conversion.ri2py(conversion.py2ri(x)) for x in o]) elif isinstance(o, complex): res = rinterface.SexpVector([ o, ], rinterface.CPLXSXP) else: raise (ValueError( "Nothing can be done for the type %s at the moment." % (type(o)))) return res
def testNew(self): sexp = rinterface.globalenv sexp_new = rinterface.SexpEnvironment(sexp) idem = rinterface.globalenv.get("identical") self.assertTrue(idem(sexp, sexp_new)[0]) sexp_new2 = rinterface.Sexp(sexp) self.assertTrue(idem(sexp, sexp_new2)[0]) del (sexp) self.assertTrue(idem(sexp_new, sexp_new2)[0]) self.assertRaises(ValueError, rinterface.SexpEnvironment, '2')
def test_new(): sexp = rinterface.globalenv sexp_new = rinterface.SexpEnvironment(sexp) assert sexp.rsame(sexp_new) sexp_new2 = rinterface.Sexp(sexp) assert sexp.rsame(sexp_new2) del (sexp) assert sexp_new.rsame(sexp_new2) with pytest.raises(ValueError): rinterface.SexpEnvironment('2')
def test_invalid_init(): with pytest.raises(ValueError): rinterface.Sexp('a')
def test_init_from_existing(): sexp = rinterface.baseenv.find('letters') sexp_new = rinterface.Sexp(sexp) assert sexp_new._sexpobject is sexp._sexpobject
def _py2rpy_robject(obj): return rinterface.Sexp(obj)
def _(obj): return rinterface.Sexp(obj)