◐ Shell
clean mode source ↗

Allow setting of the python module file by bmello4688 · Pull Request #2044 · pythonnet/pythonnet

Expand Up @@ -51,7 +51,7 @@ public void TestEval() ps.Set("a", 1); var result = ps.Eval<int>("a + 2"); Assert.AreEqual(3, result); } } }
/// <summary> Expand Down Expand Up @@ -169,6 +169,62 @@ public void TestScopeClass() } }
/// <summary> /// Create a class in the scope, the class can read variables in the scope. /// Its methods can write the variables with the help of 'global' keyword. /// </summary> [Test] public void TestCreateVirtualPackageStructure() { using (Py.GIL()) { using var _p1 = PyModule.FromString("test", ""); // Sub-module using var _p2 = PyModule.FromString("test.scope", "class Class1():\n" + " def __init__(self, value):\n" + " self.value = value\n" + " def call(self, arg):\n" + " return self.value + bb + arg\n" + // use scope variables " def update(self, arg):\n" + " global bb\n" + " bb = self.value + arg\n", // update scope variable "test" );
dynamic ps2 = Py.Import("test.scope"); ps2.bb = 100;
dynamic obj1 = ps2.Class1(20); var result = obj1.call(10).As<int>(); Assert.AreEqual(130, result);
obj1.update(10); result = ps2.Get<int>("bb"); Assert.AreEqual(30, result); } }
/// <summary> /// Test setting the file attribute via a FromString parameter /// </summary> [Test] public void TestCreateModuleWithFilename() { using var _gil = Py.GIL();
using var mod = PyModule.FromString("mod", ""); using var modWithoutName = PyModule.FromString("mod_without_name", "", " "); using var modNullName = PyModule.FromString("mod_null_name", "", null);
using var modWithName = PyModule.FromString("mod_with_name", "", "some_filename");
Assert.AreEqual("none", mod.Get<string>("__file__")); Assert.AreEqual("none", modWithoutName.Get<string>("__file__")); Assert.AreEqual("none", modNullName.Get<string>("__file__")); Assert.AreEqual("some_filename", modWithName.Get<string>("__file__")); }
/// <summary> /// Import a python module into the session. /// Equivalent to the Python "import" statement. Expand All @@ -194,7 +250,7 @@ public void TestImportModule() }
/// <summary> /// Create a scope and import variables from a scope, /// Create a scope and import variables from a scope, /// exec Python statements in the scope then discard it. /// </summary> [Test] Expand All @@ -218,7 +274,7 @@ public void TestImportScope() }
/// <summary> /// Create a scope and import variables from a scope, /// Create a scope and import variables from a scope, /// exec Python statements in the scope then discard it. /// </summary> [Test] Expand All @@ -241,7 +297,7 @@ public void TestImportAllFromScope() }
/// <summary> /// Create a scope and import variables from a scope, /// Create a scope and import variables from a scope, /// call the function imported. /// </summary> [Test] Expand Down Expand Up @@ -286,7 +342,7 @@ public void TestImportScopeFunction() public void TestVariables() { using (Py.GIL()) { { (ps.Variables() as dynamic)["ee"] = new PyInt(200); var a0 = ps.Get<int>("ee"); Assert.AreEqual(200, a0); Expand Down Expand Up @@ -326,8 +382,8 @@ public void TestThread() _ps.res = 0; _ps.bb = 100; _ps.th_cnt = 0; //add function to the scope //can be call many times, more efficient than ast //add function to the scope //can be call many times, more efficient than ast ps.Exec( "import threading\n"+ "lock = threading.Lock()\n"+ Expand Down