From 4c9ff8b469e7f451dea7ce70f63c23b3dd80d7c4 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Wed, 7 Jun 2017 09:34:14 +0200 Subject: [PATCH 01/10] Update typemanager.cs Fix crash of python interpreter 3.5 64-bit in garbage collector --- src/runtime/typemanager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/runtime/typemanager.cs b/src/runtime/typemanager.cs index 6f373f036..ad0fddcc1 100644 --- a/src/runtime/typemanager.cs +++ b/src/runtime/typemanager.cs @@ -206,6 +206,7 @@ internal static IntPtr CreateSubType(IntPtr py_name, IntPtr py_base_type, IntPtr if (0 != Runtime.PyMapping_HasKey(py_dict, assemblyKey.Handle)) { var pyAssembly = new PyObject(Runtime.PyDict_GetItem(py_dict, assemblyKey.Handle)); + Runtime.XIncref(pyAssembly.Handle); disposeList.Add(pyAssembly); if (!Converter.ToManagedValue(pyAssembly.Handle, typeof(string), out assembly, false)) { @@ -218,6 +219,7 @@ internal static IntPtr CreateSubType(IntPtr py_name, IntPtr py_base_type, IntPtr if (0 != Runtime.PyMapping_HasKey(py_dict, namespaceKey.Handle)) { var pyNamespace = new PyObject(Runtime.PyDict_GetItem(py_dict, namespaceKey.Handle)); + Runtime.XIncref(pyNamespace.Handle); disposeList.Add(pyNamespace); if (!Converter.ToManagedValue(pyNamespace.Handle, typeof(string), out namespaceStr, false)) { From 8d53035fdbce01959901125af5b1eb13a165f321 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Wed, 14 Jun 2017 13:25:14 +0200 Subject: [PATCH 02/10] Create AUTHORS.md --- AUTHORS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index d715eed6f..9f4060c25 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -43,3 +43,5 @@ - ([@rico-chet](https://github.com/rico-chet)) - ([@rmadsen-ks](https://github.com/rmadsen-ks)) - ([@stonebig](https://github.com/stonebig)) +- ([@testrunner123](https://github.com/testrunner123)) + From 426f2d34241920f97e6305d2c530c0c2c6ee7055 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Wed, 14 Jun 2017 13:29:14 +0200 Subject: [PATCH 03/10] Create CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c245b17b..566ee9c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ This document follows the conventions laid out in [Keep a CHANGELOG][]. - Fixed Visual Studio 2017 compat (#434) for setup.py - Fixed `FooBar` bug +- Fixed crash on exit of python interpreter if python class derived from .NET class has `__namespace__` or `__assembly__` attribute ## [2.3.0][] - 2017-03-11 From 850cf1309ac64e6b6b44bc5123980980f6ef388f Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Wed, 14 Jun 2017 13:32:06 +0200 Subject: [PATCH 04/10] Create test_subclass.py --- src/tests/test_subclass.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/tests/test_subclass.py b/src/tests/test_subclass.py index 8e862a56d..739c24c07 100644 --- a/src/tests/test_subclass.py +++ b/src/tests/test_subclass.py @@ -85,7 +85,6 @@ def OnTestEvent(self, value): return DerivedEventTest -@pytest.mark.skip(reason="FIXME: test randomly pass/fails") def test_base_class(): """Test base class managed type""" ob = SubClassTest() @@ -98,7 +97,6 @@ def test_base_class(): assert list(SubClassTest.test_list(ob)) == ["a", "b", "c"] -@pytest.mark.skip(reason="FIXME: test randomly pass/fails") def test_interface(): """Test python classes can derive from C# interfaces""" InterfaceTestClass = interface_test_class_fixture() @@ -112,7 +110,6 @@ def test_interface(): assert id(x) == id(ob) -@pytest.mark.skip(reason="FIXME: test randomly pass/fails") def test_derived_class(): """Test python class derived from managed type""" DerivedClass = derived_class_fixture() From 30c7605d21e15824535cd5505eea8e28f68fca02 Mon Sep 17 00:00:00 2001 From: Benedikt Reinartz Date: Wed, 14 Jun 2017 13:35:24 +0200 Subject: [PATCH 05/10] Create CHANGELOG.md --- CHANGELOG.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 566ee9c31..353c34b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,19 +8,17 @@ This document follows the conventions laid out in [Keep a CHANGELOG][]. ## [unreleased][] ### Added -- Added clr.GetClrType (#432)(#433) -- Added `Foo` feature -- Allowed passing None for nullable args (#460) +- Added `clr.GetClrType` (#432, #433) +- Allowed passing `None` for nullable args (#460) ### Changed -- Changed `Bar` feature - ### Fixed - Fixed Visual Studio 2017 compat (#434) for setup.py -- Fixed `FooBar` bug -- Fixed crash on exit of python interpreter if python class derived from .NET class has `__namespace__` or `__assembly__` attribute +- Fixed crash on exit of the Python interpreter if a python class + derived from a .NET class has a `__namespace__` or `__assembly__` + attribute (#481) ## [2.3.0][] - 2017-03-11 From 58a25468557b9a3983c02390c493e448969ab066 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Tue, 11 Jul 2017 10:44:10 +0200 Subject: [PATCH 06/10] Create basetsd.h --- tools/geninterop/fake_libc_include/basetsd.h | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 tools/geninterop/fake_libc_include/basetsd.h diff --git a/tools/geninterop/fake_libc_include/basetsd.h b/tools/geninterop/fake_libc_include/basetsd.h new file mode 100644 index 000000000..ed3102f68 --- /dev/null +++ b/tools/geninterop/fake_libc_include/basetsd.h @@ -0,0 +1,2 @@ +// for windows +#define __declspec(x) From 849bfe23eab89b7d8990c7a490a89568338a3f35 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Tue, 11 Jul 2017 10:46:14 +0200 Subject: [PATCH 07/10] Update geninterop.py --- tools/geninterop/geninterop.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/tools/geninterop/geninterop.py b/tools/geninterop/geninterop.py index bf5fdb96b..1238ef14e 100644 --- a/tools/geninterop/geninterop.py +++ b/tools/geninterop/geninterop.py @@ -167,14 +167,22 @@ def preprocess_python_headers(): include_dirs = [fake_libc_include] include_py = sysconfig.get_config_var("INCLUDEPY") + if (not (include_py == None)) and sys.platform.startswith('win32'): + include_dirs.append("-I") include_dirs.append(include_py) - - defines = [ - "-D", "__attribute__(x)=", - "-D", "__inline__=inline", - "-D", "__asm__=;#pragma asm", - "-D", "__int64=long long" - ] + + if sys.platform.startswith('win32'): + defines = [ + "-D", "__cdecl=", + "-D", "__int64=long long" + ] + else: + defines = [ + "-D", "__attribute__(x)=", + "-D", "__inline__=inline", + "-D", "__asm__=;#pragma asm", + "-D", "__int64=long long" + ] if hasattr(sys, "abiflags"): if "d" in sys.abiflags: @@ -185,8 +193,14 @@ def preprocess_python_headers(): defines.extend(("-D", "PYTHON_WITH_WIDE_UNICODE")) python_h = os.path.join(include_py, "Python.h") - cmd = ["clang", "-I"] + include_dirs + defines + ["-E", python_h] - + if sys.platform.startswith('linux'): + compiler = "gcc" + elif sys.platform.startswith('win32'): + compiler = "cl.exe" + else: + compiler = "clang" + cmd = [compiler, "-I"] + include_dirs + defines + ["-E", python_h] + # normalize as the parser doesn't like windows line endings. lines = [] for line in _check_output(cmd).splitlines(): From 2e87ba7a62062b313cd6fb2dc65c962fabacdae0 Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Tue, 11 Jul 2017 10:51:53 +0200 Subject: [PATCH 08/10] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 728c8c69b..fcfaee9fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This document follows the conventions laid out in [Keep a CHANGELOG][]. - Added keyword arguments based on C# syntax for calling CPython methods (#461) ### Changed +- geninterop.py uses MSVC on Windows, gcc on Linux and CLang in other cases ### Fixed From f7c08cac0b9de1ed67d50a4038a0580a604dbb0c Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Mon, 18 Sep 2017 11:35:00 +0200 Subject: [PATCH 09/10] Add traceback object to error information --- src/runtime/exceptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/exceptions.cs b/src/runtime/exceptions.cs index 9023cfcfa..7e0076269 100644 --- a/src/runtime/exceptions.cs +++ b/src/runtime/exceptions.cs @@ -256,7 +256,7 @@ public static void SetError(Exception e) var pe = e as PythonException; if (pe != null) { - Runtime.PyErr_SetObject(pe.PyType, pe.PyValue); + Runtime.PyErr_Restore(pe.PyType, pe.PyValue, pe.PyTB); return; } From a0172555aeba87fc49e40e2b987874d940d06fae Mon Sep 17 00:00:00 2001 From: testrunner123 Date: Mon, 18 Sep 2017 11:57:10 +0200 Subject: [PATCH 10/10] restore --- src/runtime/exceptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/exceptions.cs b/src/runtime/exceptions.cs index 7e0076269..9023cfcfa 100644 --- a/src/runtime/exceptions.cs +++ b/src/runtime/exceptions.cs @@ -256,7 +256,7 @@ public static void SetError(Exception e) var pe = e as PythonException; if (pe != null) { - Runtime.PyErr_Restore(pe.PyType, pe.PyValue, pe.PyTB); + Runtime.PyErr_SetObject(pe.PyType, pe.PyValue); return; }