diff --git a/src/Bonsai.Scripting.Python/Eval.cs b/src/Bonsai.Scripting.Python/Eval.cs index e62709f..0c490f2 100644 --- a/src/Bonsai.Scripting.Python/Eval.cs +++ b/src/Bonsai.Scripting.Python/Eval.cs @@ -44,9 +44,11 @@ public class Eval : Combinator /// public override IObservable Process(IObservable source) { - return RuntimeManager.RuntimeSource - .GetModuleOrDefaultAsync(Module) - .SelectMany(module => source.Select(_ => module.Eval(Expression))); + return RuntimeManager.RuntimeSource.SelectMany(runtime => + { + var module = Module ?? runtime.MainModule; + return source.Select(_ => module.Eval(Expression)); + }); } /// diff --git a/src/Bonsai.Scripting.Python/Exec.cs b/src/Bonsai.Scripting.Python/Exec.cs index 90601f7..651ee15 100644 --- a/src/Bonsai.Scripting.Python/Exec.cs +++ b/src/Bonsai.Scripting.Python/Exec.cs @@ -45,9 +45,11 @@ public class Exec : Combinator /// public override IObservable Process(IObservable source) { - return RuntimeManager.RuntimeSource - .GetModuleOrDefaultAsync(Module) - .SelectMany(module => source.Select(_ => module.Exec(Script))); + return RuntimeManager.RuntimeSource.SelectMany(runtime => + { + var module = Module ?? runtime.MainModule; + return source.Select(_ => module.Exec(Script)); + }); } /// diff --git a/src/Bonsai.Scripting.Python/Get.cs b/src/Bonsai.Scripting.Python/Get.cs index 22e91a9..5801b9f 100644 --- a/src/Bonsai.Scripting.Python/Get.cs +++ b/src/Bonsai.Scripting.Python/Get.cs @@ -38,10 +38,9 @@ public class Get : Source /// public override IObservable Generate() { - return RuntimeManager.RuntimeSource - .GetModuleOrDefaultAsync(Module) - .ObserveOnGIL() - .Select(module => module.Get(VariableName)); + return from runtime in RuntimeManager.RuntimeSource.ObserveOnGIL() + let module = Module ?? runtime.MainModule + select module.Get(VariableName); } /// @@ -60,9 +59,11 @@ public override IObservable Generate() /// public IObservable Generate(IObservable source) { - return RuntimeManager.RuntimeSource - .GetModuleOrDefaultAsync(Module) - .SelectMany(module => source.Select(_ => module.Get(VariableName))); + return RuntimeManager.RuntimeSource.SelectMany(runtime => + { + var module = Module ?? runtime.MainModule; + return source.Select(_ => module.Get(VariableName)); + }); } /// diff --git a/src/Bonsai.Scripting.Python/ObservableExtensions.cs b/src/Bonsai.Scripting.Python/ObservableExtensions.cs index 60fe59c..7ebd9ef 100644 --- a/src/Bonsai.Scripting.Python/ObservableExtensions.cs +++ b/src/Bonsai.Scripting.Python/ObservableExtensions.cs @@ -7,13 +7,6 @@ namespace Bonsai.Scripting.Python { static class ObservableExtensions { - public static IObservable GetModuleOrDefaultAsync(this IObservable source, PyModule module) - { - return module != null - ? Observable.Return(module) - : source.Select(runtime => runtime.MainModule); - } - public static IObservable ObserveOnGIL(this IObservable source) { return Observable.Create(observer => diff --git a/src/Bonsai.Scripting.Python/Set.cs b/src/Bonsai.Scripting.Python/Set.cs index 7d531f0..b407ce7 100644 --- a/src/Bonsai.Scripting.Python/Set.cs +++ b/src/Bonsai.Scripting.Python/Set.cs @@ -45,9 +45,11 @@ public class Set : Sink /// public override IObservable Process(IObservable source) { - return RuntimeManager.RuntimeSource - .GetModuleOrDefaultAsync(Module) - .SelectMany(module => source.Do(value => module.Set(VariableName, value))); + return RuntimeManager.RuntimeSource.SelectMany(runtime => + { + var module = Module ?? runtime.MainModule; + return source.Do(value => module.Set(VariableName, value)); + }); } } }