diff --git a/appveyor.yml b/appveyor.yml index 6bebef490..edd3c153b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,6 +66,9 @@ on_finish: artifacts: - path: dist\* + - path: TestResult.xml + name: TestResult + type: xml notifications: - provider: Slack diff --git a/src/embed_tests/Python.EmbeddingTest.csproj b/src/embed_tests/Python.EmbeddingTest.csproj index 66e8c7165..7c627327d 100644 --- a/src/embed_tests/Python.EmbeddingTest.csproj +++ b/src/embed_tests/Python.EmbeddingTest.csproj @@ -80,6 +80,7 @@ + diff --git a/src/embed_tests/TestConsoleInterrupt.cs b/src/embed_tests/TestConsoleInterrupt.cs new file mode 100644 index 000000000..0b96e9c76 Binary files /dev/null and b/src/embed_tests/TestConsoleInterrupt.cs differ diff --git a/src/runtime/pythonengine.cs b/src/runtime/pythonengine.cs index a23c7ac79..b37c91bec 100644 --- a/src/runtime/pythonengine.cs +++ b/src/runtime/pythonengine.cs @@ -140,9 +140,9 @@ public static void Initialize() Initialize(setSysArgv: true); } - public static void Initialize(bool setSysArgv = true) + public static void Initialize(bool setSysArgv = true, bool initSigs = false) { - Initialize(Enumerable.Empty(), setSysArgv: setSysArgv); + Initialize(Enumerable.Empty(), setSysArgv: setSysArgv, initSigs: initSigs); } /// @@ -153,8 +153,9 @@ public static void Initialize(bool setSysArgv = true) /// more than once, though initialization will only happen on the /// first call. It is *not* necessary to hold the Python global /// interpreter lock (GIL) to call this method. + /// initSigs can be set to 1 to do default python signal configuration. This will override the way signals are handled by the application. /// - public static void Initialize(IEnumerable args, bool setSysArgv = true) + public static void Initialize(IEnumerable args, bool setSysArgv = true, bool initSigs = false) { if (!initialized) { @@ -164,7 +165,7 @@ public static void Initialize(IEnumerable args, bool setSysArgv = true) // during an initial "import clr", and the world ends shortly thereafter. // This is probably masking some bad mojo happening somewhere in Runtime.Initialize(). delegateManager = new DelegateManager(); - Runtime.Initialize(); + Runtime.Initialize(initSigs); initialized = true; Exceptions.Clear(); diff --git a/src/runtime/runtime.cs b/src/runtime/runtime.cs index b08a56622..b6563c445 100644 --- a/src/runtime/runtime.cs +++ b/src/runtime/runtime.cs @@ -206,11 +206,11 @@ public class Runtime /// /// Initialize the runtime... /// - internal static void Initialize() + internal static void Initialize(bool initSigs) { if (Py_IsInitialized() == 0) { - Py_Initialize(); + Py_InitializeEx(initSigs ? 1 : 0); } if (PyEval_ThreadsInitialized() == 0) @@ -604,6 +604,9 @@ internal static unsafe long Refcount(IntPtr op) [DllImport(_PythonDll, CallingConvention = CallingConvention.Cdecl)] internal static extern void Py_Initialize(); + [DllImport(_PythonDll, CallingConvention = CallingConvention.Cdecl)] + internal static extern void Py_InitializeEx(int initsigs); + [DllImport(_PythonDll, CallingConvention = CallingConvention.Cdecl)] internal static extern int Py_IsInitialized(); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy