Line data Source code
1 : // SPDX-FileCopyrightText: 2024 PairInteraction Developers 2 : // SPDX-License-Identifier: LGPL-3.0-or-later 3 : 4 : #include "./LoggerBridge.hpp" 5 : #include "./basis/Basis.py.hpp" 6 : #include "./database/Database.py.hpp" 7 : #include "./diagonalize/Diagonalizer.py.hpp" 8 : #include "./enums/FloatType.py.hpp" 9 : #include "./enums/OperatorType.py.hpp" 10 : #include "./enums/Parity.py.hpp" 11 : #include "./enums/TransformationType.py.hpp" 12 : #include "./interfaces/DiagonalizerInterface.py.hpp" 13 : #include "./interfaces/TransformationBuilderInterface.py.hpp" 14 : #include "./ket/Ket.py.hpp" 15 : #include "./operator/Operator.py.hpp" 16 : #include "./paths.py.hpp" 17 : #include "./system/System.py.hpp" 18 : #include "./tools/run_unit_tests.py.hpp" 19 : #include "./version.py.hpp" 20 : 21 : #include <nanobind/nanobind.h> 22 : #include <nanobind/stl/string.h> 23 : #include <nanobind/stl/vector.h> 24 : 25 : namespace nb = nanobind; 26 : 27 8 : NB_MODULE(_backend, m) // NOLINT 28 : { 29 : // https://nanobind.readthedocs.io/en/latest/faq.html#why-am-i-getting-errors-about-leaked-functions-and-types 30 2 : nb::set_leak_warnings(false); 31 : 32 : // wrap the get_pending_logs method of the logger bridge instance 33 2 : static LoggerBridge bridge; 34 2 : nb::class_<LoggerBridge::LogEntry>(m, "LogEntry") 35 2 : .def_ro("level", &LoggerBridge::LogEntry::level) 36 625 : .def_prop_ro("message", [](const LoggerBridge::LogEntry &e) { 37 623 : return nb::bytes(e.message.data(), e.message.size()); 38 : }); 39 4260 : m.def("get_pending_logs", []() { return bridge.get_pending_logs(); }); 40 : 41 : // enums 42 2 : bind_operator_type(m); 43 2 : bind_parity(m); 44 2 : bind_transformation_type(m); 45 2 : bind_float_type(m); 46 : 47 : // interfaces 48 2 : bind_diagonalizer_interface(m); 49 2 : bind_transformation_builder_interface(m); 50 : 51 : // operator 52 2 : bind_operator(m); 53 : 54 : // database 55 2 : bind_database(m); 56 : 57 : // diagonalizer 58 2 : bind_diagonalizer(m); 59 : 60 : // ket 61 2 : bind_ket(m); 62 : 63 : // basis 64 2 : bind_basis(m); 65 : 66 : // system 67 2 : bind_system(m); 68 : 69 : // tools 70 2 : bind_run_unit_tests(m); 71 : 72 : // paths 73 2 : bind_paths(m); 74 : 75 : // version 76 2 : bind_version(m); 77 2 : }