<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/69058c767f6fb966bc9a5a6f285c01b212a33a05">https://github.com/macports/macports-ports/commit/69058c767f6fb966bc9a5a6f285c01b212a33a05</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 69058c7  pybind11: update version 2.2.4->2.3.0
</span>69058c7 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 69058c767f6fb966bc9a5a6f285c01b212a33a05
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sat Jun 15 07:20:49 2019 -0700

<span style='display:block; white-space:pre;color:#404040;'>    pybind11: update version 2.2.4->2.3.0
</span>---
 devel/pybind11/Portfile                  |  11 +-
 devel/pybind11/files/patch-deadlock.diff | 183 -------------------------------
 2 files changed, 4 insertions(+), 190 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/pybind11/Portfile b/devel/pybind11/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a8edd8a..9ccc26b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/pybind11/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/pybind11/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup           github 1.0
</span> PortGroup           cmake  1.1
 PortGroup           cxx11  1.1
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        pybind pybind11 2.2.4 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        pybind pybind11 2.3.0 v
</span> categories          devel
 platforms           darwin
 maintainers         {mcalhoun @MarcusCalhoun-Lopez} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,12 +20,9 @@ long_description    Extension modules for pybind11, which is a lightweight heade
</span> installs_libs       no
 supported_archs     noarch
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  6356e0d00cd71697ab96a7703216f1e21d5fca42 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  10fc095729d5ba1e497f5e7b45740b3561b58cd83716267b41237787ad2e19e3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    548446
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# see https://github.com/pybind/pybind11/commit/d04a9b1d9e6a0aa3601972f1291d181377759d14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   patch-deadlock.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  fdb97680c25104103572ebfae290282717b41bd0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  7f33b38f9a5ea9ba0b57ee0fd574b68cef669e3a8cf0d8bced24f865364c6631 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    564575
</span> 
 set python_branch   3.7
 set python_version  [string map {. ""} ${python_branch}]
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/pybind11/files/patch-deadlock.diff b/devel/pybind11/files/patch-deadlock.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 179bfaf..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/pybind11/files/patch-deadlock.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,183 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From d04a9b1d9e6a0aa3601972f1291d181377759d14 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Borja Zarco <bzarco@google.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 8 Dec 2017 17:35:59 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Use `PyGILState_GetThisThreadState` when using
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gil_scoped_acquire.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This avoids GIL deadlocking when pybind11 tries to acquire the GIL in a thread that already acquired it using standard Python API (e.g. when running from a Python thread).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include/pybind11/pybind11.h |  9 +++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tests/CMakeLists.txt        |  1 +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tests/test_gil_scoped.cpp   | 43 ++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tests/test_gil_scoped.py    | 80 +++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4 files changed, 133 insertions(+)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- create mode 100644 tests/test_gil_scoped.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- create mode 100644 tests/test_gil_scoped.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e986d007a..5f5f5c82a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- include/pybind11/pybind11.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ include/pybind11/pybind11.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1749,6 +1749,15 @@ class gil_scoped_acquire {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         auto const &internals = detail::get_internals();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         tstate = (PyThreadState *) PYBIND11_TLS_GET_VALUE(internals.tstate);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (!tstate) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            /* Check if the GIL was acquired using the PyGILState_* API instead (e.g. if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               calling from a Python thread). Since we use a different key, this ensures
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               we don't create a new thread state and deadlock in PyEval_AcquireThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               below. Note we don't save this state with internals.tstate, since we don't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               create it we would fail to clear it (its reference count should be > 0). */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            tstate = PyGILState_GetThisThreadState();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (!tstate) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             tstate = PyThreadState_New(internals.istate);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             #if !defined(NDEBUG)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index b5e0b526e..a31d5b8b7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- tests/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,6 +40,7 @@ set(PYBIND11_TEST_FILES
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_eval.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_exceptions.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_factory_constructors.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  test_gil_scoped.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_iostream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_kwargs_and_defaults.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   test_local_bindings.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/tests/test_gil_scoped.cpp b/tests/test_gil_scoped.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-new file mode 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 000000000..a94b7a2e2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- /dev/null
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/test_gil_scoped.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,43 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    tests/test_gil_scoped.cpp -- acquire and release gil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    Copyright (c) 2017 Borja Zarco (Google LLC) <bzarco@google.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    All rights reserved. Use of this source code is governed by a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BSD-style license that can be found in the LICENSE file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "pybind11_tests.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <pybind11/functional.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class VirtClass  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    virtual void virtual_func() {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    virtual void pure_virtual_func() = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class PyVirtClass : public VirtClass {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void virtual_func() override {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        PYBIND11_OVERLOAD(void, VirtClass, virtual_func,);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void pure_virtual_func() override {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        PYBIND11_OVERLOAD_PURE(void, VirtClass, pure_virtual_func,);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+TEST_SUBMODULE(gil_scoped, m) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  py::class_<VirtClass, PyVirtClass>(m, "VirtClass")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .def(py::init<>())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .def("virtual_func", &VirtClass::virtual_func)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      .def("pure_virtual_func", &VirtClass::pure_virtual_func);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.def("test_callback_py_obj",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          [](py::object func) { func(); });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.def("test_callback_std_func",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          [](const std::function<void()> &func) { func(); });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.def("test_callback_virtual_func",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          [](VirtClass &virt) { virt.virtual_func(); });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.def("test_callback_pure_virtual_func",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          [](VirtClass &virt) { virt.pure_virtual_func(); });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/tests/test_gil_scoped.py b/tests/test_gil_scoped.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-new file mode 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 000000000..5e702431f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- /dev/null
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/test_gil_scoped.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,80 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import multiprocessing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import threading
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pybind11_tests import gil_scoped as m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def _run_in_process(target, *args, **kwargs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Runs target in process and returns its exitcode after 1s (None if still alive)."""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    process = multiprocessing.Process(target=target, args=args, kwargs=kwargs)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    process.daemon = True
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        process.start()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        # Do not need to wait much, 1s should be more than enough.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        process.join(timeout=1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return process.exitcode
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    finally:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if process.is_alive():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            process.terminate()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def _python_to_cpp_to_python():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Calls different C++ functions that come back to Python."""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    class ExtendedVirtClass(m.VirtClass):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        def virtual_func(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        def pure_virtual_func(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    extended = ExtendedVirtClass()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.test_callback_py_obj(lambda: None)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.test_callback_std_func(lambda: None)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.test_callback_virtual_func(extended)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    m.test_callback_pure_virtual_func(extended)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def _python_to_cpp_to_python_from_threads(num_threads, parallel=False):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Calls different C++ functions that come back to Python, from Python threads."""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    threads = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    for _ in range(num_threads):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        thread = threading.Thread(target=_python_to_cpp_to_python)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        thread.daemon = True
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        thread.start()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if parallel:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            threads.append(thread)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            thread.join()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    for thread in threads:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        thread.join()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def test_python_to_cpp_to_python_from_thread():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Makes sure there is no GIL deadlock when running in a thread.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    It runs in a separate process to be able to stop and assert if it deadlocks.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    assert _run_in_process(_python_to_cpp_to_python_from_threads, 1) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def test_python_to_cpp_to_python_from_thread_multiple_parallel():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Makes sure there is no GIL deadlock when running in a thread multiple times in parallel.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    It runs in a separate process to be able to stop and assert if it deadlocks.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    assert _run_in_process(_python_to_cpp_to_python_from_threads, 8, parallel=True) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def test_python_to_cpp_to_python_from_thread_multiple_sequential():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Makes sure there is no GIL deadlock when running in a thread multiple times sequentially.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    It runs in a separate process to be able to stop and assert if it deadlocks.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    assert _run_in_process(_python_to_cpp_to_python_from_threads, 8, parallel=False) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+def test_python_to_cpp_to_python_from_process():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """Makes sure there is no GIL deadlock when using processes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    This test is for completion, but it was never an issue.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    assert _run_in_process(_python_to_cpp_to_python) == 0
</span></pre><pre style='margin:0'>

</pre>