Skip to content

Commit cde57ad

Browse files
committed
Ensure module caching follows runtime creation
1 parent 41123c7 commit cde57ad

5 files changed

Lines changed: 23 additions & 23 deletions

File tree

src/Bonsai.Scripting.Python/Eval.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,11 @@ public class Eval : Combinator<PyObject>
4444
/// </returns>
4545
public override IObservable<PyObject> Process<TSource>(IObservable<TSource> source)
4646
{
47-
return RuntimeManager.RuntimeSource
48-
.GetModuleOrDefaultAsync(Module)
49-
.SelectMany(module => source.Select(_ => module.Eval(Expression)));
47+
return RuntimeManager.RuntimeSource.SelectMany(runtime =>
48+
{
49+
var module = Module ?? runtime.MainModule;
50+
return source.Select(_ => module.Eval(Expression));
51+
});
5052
}
5153

5254
/// <summary>

src/Bonsai.Scripting.Python/Exec.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ public class Exec : Combinator<PyModule>
4545
/// </returns>
4646
public override IObservable<PyModule> Process<TSource>(IObservable<TSource> source)
4747
{
48-
return RuntimeManager.RuntimeSource
49-
.GetModuleOrDefaultAsync(Module)
50-
.SelectMany(module => source.Select(_ => module.Exec(Script)));
48+
return RuntimeManager.RuntimeSource.SelectMany(runtime =>
49+
{
50+
var module = Module ?? runtime.MainModule;
51+
return source.Select(_ => module.Exec(Script));
52+
});
5153
}
5254

5355
/// <summary>

src/Bonsai.Scripting.Python/Get.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@ public class Get : Source<PyObject>
3838
/// </returns>
3939
public override IObservable<PyObject> Generate()
4040
{
41-
return RuntimeManager.RuntimeSource
42-
.GetModuleOrDefaultAsync(Module)
43-
.ObserveOnGIL()
44-
.Select(module => module.Get(VariableName));
41+
return from runtime in RuntimeManager.RuntimeSource.ObserveOnGIL()
42+
let module = Module ?? runtime.MainModule
43+
select module.Get(VariableName);
4544
}
4645

4746
/// <summary>
@@ -60,9 +59,11 @@ public override IObservable<PyObject> Generate()
6059
/// </returns>
6160
public IObservable<PyObject> Generate<TSource>(IObservable<TSource> source)
6261
{
63-
return RuntimeManager.RuntimeSource
64-
.GetModuleOrDefaultAsync(Module)
65-
.SelectMany(module => source.Select(_ => module.Get(VariableName)));
62+
return RuntimeManager.RuntimeSource.SelectMany(runtime =>
63+
{
64+
var module = Module ?? runtime.MainModule;
65+
return source.Select(_ => module.Get(VariableName));
66+
});
6667
}
6768

6869
/// <summary>

src/Bonsai.Scripting.Python/ObservableExtensions.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@ namespace Bonsai.Scripting.Python
77
{
88
static class ObservableExtensions
99
{
10-
public static IObservable<PyModule> GetModuleOrDefaultAsync(this IObservable<RuntimeManager> source, PyModule module)
11-
{
12-
return module != null
13-
? Observable.Return(module)
14-
: source.Select(runtime => runtime.MainModule);
15-
}
16-
1710
public static IObservable<TSource> ObserveOnGIL<TSource>(this IObservable<TSource> source)
1811
{
1912
return Observable.Create<TSource>(observer =>

src/Bonsai.Scripting.Python/Set.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ public class Set : Sink
4545
/// </returns>
4646
public override IObservable<TSource> Process<TSource>(IObservable<TSource> source)
4747
{
48-
return RuntimeManager.RuntimeSource
49-
.GetModuleOrDefaultAsync(Module)
50-
.SelectMany(module => source.Do(value => module.Set(VariableName, value)));
48+
return RuntimeManager.RuntimeSource.SelectMany(runtime =>
49+
{
50+
var module = Module ?? runtime.MainModule;
51+
return source.Do(value => module.Set(VariableName, value));
52+
});
5153
}
5254
}
5355
}

0 commit comments

Comments
 (0)