def _post_initr_setup() -> None: emptyenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_EmptyEnv) baseenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_BaseEnv) globalenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_GlobalEnv) global NULL NULL = NULLType() MissingArg._sexpobject = _rinterface.UnmanagedSexpCapsule( openrlib.rlib.R_MissingArg) global NA_Character na_values.NA_Character = sexp.NACharacterType() NA_Character = na_values.NA_Character global NA_Integer na_values.NA_Integer = sexp.NAIntegerType(openrlib.rlib.R_NaInt) NA_Integer = na_values.NA_Integer global NA_Logical, NA na_values.NA_Logical = sexp.NALogicalType(openrlib.rlib.R_NaInt) NA_Logical = na_values.NA_Logical NA = NA_Logical global NA_Real na_values.NA_Real = sexp.NARealType(openrlib.rlib.R_NaReal) NA_Real = na_values.NA_Real global NA_Complex na_values.NA_Complex = sexp.NAComplexType( _rinterface.ffi.new('Rcomplex *', [openrlib.rlib.R_NaReal, openrlib.rlib.R_NaReal])) NA_Complex = na_values.NA_Complex
def _post_initr_setup() -> None: emptyenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_EmptyEnv) baseenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_BaseEnv) globalenv.__sexp__ = _rinterface.SexpCapsule(openrlib.rlib.R_GlobalEnv) global NULL NULL = NULLType() MissingArg._sexpobject = _rinterface.UnmanagedSexpCapsule( openrlib.rlib.R_MissingArg) global NA_Character na_values.NA_Character = sexp.NACharacterType() NA_Character = na_values.NA_Character global NA_Integer na_values.NA_Integer = sexp.NAIntegerType(openrlib.rlib.R_NaInt) NA_Integer = na_values.NA_Integer global NA_Logical, NA na_values.NA_Logical = sexp.NALogicalType(openrlib.rlib.R_NaInt) NA_Logical = na_values.NA_Logical NA = NA_Logical global NA_Real na_values.NA_Real = sexp.NARealType(openrlib.rlib.R_NaReal) NA_Real = na_values.NA_Real global NA_Complex na_values.NA_Complex = sexp.NAComplexType( _rinterface.ffi.new('Rcomplex *', [openrlib.rlib.R_NaReal, openrlib.rlib.R_NaReal])) NA_Complex = na_values.NA_Complex warn_about_thread = False if threading.current_thread() is threading.main_thread(): try: signal.signal(signal.SIGINT, _sigint_handler) except ValueError as ve: if str(ve) == 'signal only works in main thread': warn_about_thread = True else: raise ve else: warn_about_thread = True if warn_about_thread: warnings.warn( textwrap.dedent("""R is not initialized by the main thread. Its taking over SIGINT cannot be reversed here, and as a consequence the embedded R cannot be interrupted with Ctrl-C. Consider (re)setting the signal handler of your choice from the main thread.""")) _update_R_ENC_PY()
def _post_initr_setup(): embedded.emptyenv = SexpEnvironment( _rinterface.SexpCapsule(openrlib.rlib.R_EmptyEnv) ) global emptyenv emptyenv = embedded.emptyenv embedded.baseenv = SexpEnvironment( _rinterface.SexpCapsule(openrlib.rlib.R_BaseEnv) ) global baseenv baseenv = embedded.baseenv embedded.globalenv = SexpEnvironment( _rinterface.SexpCapsule(openrlib.rlib.R_GlobalEnv) ) global globalenv globalenv = embedded.globalenv global NULL NULL = NULLType() global MissingArg MissingArg = _MissingArgType() global NA_Character na_values.NA_Character = na_values.NACharacterType() NA_Character = na_values.NA_Character global NA_Integer na_values.NA_Integer = na_values.NAIntegerType(openrlib.rlib.R_NaInt) NA_Integer = na_values.NA_Integer global NA_Logical, NA na_values.NA_Logical = na_values.NALogicalType(openrlib.rlib.R_NaInt) NA_Logical = na_values.NA_Logical NA = NA_Logical global NA_Real na_values.NA_Real = na_values.NARealType(openrlib.rlib.R_NaReal) NA_Real = na_values.NA_Real global NA_Complex na_values.NA_Complex = na_values.NAComplexType( _rinterface.ffi.new( 'Rcomplex *', [openrlib.rlib.R_NaReal, openrlib.rlib.R_NaReal]) ) NA_Complex = na_values.NA_Complex
def __init__(self): embedded.assert_isready() super().__init__( CharSexp( _rinterface.SexpCapsule(openrlib.rlib.R_NaString) ) )
def _cdata_to_rinterface(cdata): scaps = _rinterface.SexpCapsule(cdata) t = cdata.sxpinfo.type if t in _R_RPY2_MAP: cls = _R_RPY2_MAP[t] else: cls = _R_RPY2_DEFAULT_MAP return cls(scaps)
def get_charsxp(self, i: int) -> CharSexp: """Get the R CharSexp objects for the index i.""" i_c = _rinterface._python_index_to_c(self.__sexp__._cdata, i) return CharSexp( _rinterface.SexpCapsule( openrlib.rlib.STRING_ELT(self.__sexp__._cdata, i_c) ) )
def unserialize(state): n = len(state) with memorymanagement.rmemory() as rmemory: cdata = rmemory.protect( openrlib.rlib.Rf_allocVector(openrlib.rlib.RAWSXP, n)) _rinterface.ffi.memmove(openrlib.rlib.RAW(cdata), state, n) ser = rmemory.protect( _rinterface.unserialize(cdata, globalenv.__sexp__._cdata)) res = _rinterface.SexpCapsule(ser) return res
def __init__(self, obj): if isinstance(obj, Sexp) or isinstance(obj, _rinterface.SexpCapsule): super().__init__(obj) elif isinstance(obj, str): name_cdata = _rinterface.ffi.new('char []', obj.encode('utf-8')) sexp = _rinterface.SexpCapsule( openrlib.rlib.Rf_install(name_cdata)) super().__init__(sexp) else: raise TypeError( 'The constructor must be called ' 'with that is an instance of rpy2.rinterface.sexp.Sexp ' 'or an instance of rpy2.rinterface._rinterface.SexpCapsule')