public void ExceptionDecodedNoInstance() { PyObjectConversions.RegisterDecoder(new InstancelessExceptionDecoder()); using var scope = Py.CreateScope(); var error = Assert.Throws <ValueErrorWrapper>(() => PythonEngine.Exec( $"[].__iter__().__next__()")); Assert.AreEqual(TestExceptionMessage, error.Message); }
public void ExceptionDecoded() { PyObjectConversions.RegisterDecoder(new ValueErrorCodec()); using var scope = Py.CreateScope(); var error = Assert.Throws <ValueErrorWrapper>(() => PythonEngine.Exec($"raise ValueError('{TestExceptionMessage}')")); Assert.AreEqual(TestExceptionMessage, error.Message); }
public void As_Object_AffectedByDecoders() { var everythingElseToSelf = new EverythingElseToSelfDecoder(); PyObjectConversions.RegisterDecoder(everythingElseToSelf); var pyObj = PythonEngine.Eval("iter"); var decoded = pyObj.As <object>(); Assert.AreSame(everythingElseToSelf, decoded); }
/// <summary> /// Registers custom encoders and decoders with the Python.NET runtime /// </summary> private static void InitializeEncoders() { var shared = new object[] { new BigIntegerEncoderDecoder(), new ListEncoderDecoder() }; var encoders = shared.Cast <IPyObjectEncoder>().ToArray(); var decoders = shared.Cast <IPyObjectDecoder>().Concat(new IPyObjectDecoder[] { new DictionaryDecoder() }).ToArray(); Array.ForEach(encoders, e => PyObjectConversions.RegisterEncoder(e)); Array.ForEach(decoders, d => PyObjectConversions.RegisterDecoder(d)); }
private void Setup(bool force = false) { if (_isInitialized && !force) return; _isInitialized = true; DateTimeCodec.Initialize(this); NumpyCodec.Initialize(this); PandasCodec.Initialize(this); PyObjectConversions.RegisterEncoder(this); PyObjectConversions.RegisterDecoder(this); }
public void ExceptionEncoded() { PyObjectConversions.RegisterEncoder(new ValueErrorCodec()); void CallMe() => throw new ValueErrorWrapper(TestExceptionMessage); var callMeAction = new Action(CallMe); using var scope = Py.CreateScope(); scope.Exec(@" def call(func): try: func() except ValueError as e: return str(e) "); var callFunc = scope.Get("call"); string message = callFunc.Invoke(callMeAction.ToPython()).As <string>(); Assert.AreEqual(TestExceptionMessage, message); }
public static void Register() { PyObjectConversions.RegisterEncoder(Instance); PyObjectConversions.RegisterDecoder(Instance); }
public static void Setup() { PyObjectConversions.RegisterDecoder(new DateTimeDecoder()); }
public static void Reset() { PyObjectConversions.Reset(); }