1 /* 2 tests/test_async.cpp -- __await__ support 3 4 Copyright (c) 2019 Google Inc. 5 6 All rights reserved. Use of this source code is governed by a 7 BSD-style license that can be found in the LICENSE file. 8 */ 9 10 #include "pybind11_tests.h" 11 TEST_SUBMODULE(async_module,m)12TEST_SUBMODULE(async_module, m) { 13 struct DoesNotSupportAsync {}; 14 py::class_<DoesNotSupportAsync>(m, "DoesNotSupportAsync") 15 .def(py::init<>()); 16 struct SupportsAsync {}; 17 py::class_<SupportsAsync>(m, "SupportsAsync") 18 .def(py::init<>()) 19 .def("__await__", [](const SupportsAsync& self) -> py::object { 20 static_cast<void>(self); 21 py::object loop = py::module_::import("asyncio.events").attr("get_event_loop")(); 22 py::object f = loop.attr("create_future")(); 23 f.attr("set_result")(5); 24 return f.attr("__await__")(); 25 }); 26 } 27