mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-30 08:57:11 +00:00
Merge branch 'pybind:master' into master
This commit is contained in:
commit
2d3af75efb
@ -38,6 +38,7 @@
|
|||||||
# define PYBIND11_CPP17
|
# define PYBIND11_CPP17
|
||||||
# if __cplusplus >= 202002L
|
# if __cplusplus >= 202002L
|
||||||
# define PYBIND11_CPP20
|
# define PYBIND11_CPP20
|
||||||
|
// Please update tests/pybind11_tests.cpp `cpp_std()` when adding a macro here.
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
|
PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
|
||||||
PYBIND11_NAMESPACE_BEGIN(detail)
|
PYBIND11_NAMESPACE_BEGIN(detail)
|
||||||
|
|
||||||
/// Erase all occurrences of a substring
|
/// Erase all occurrences of a substring
|
||||||
inline void erase_all(std::string &string, const std::string &search) {
|
inline void erase_all(std::string &string, const std::string &search) {
|
||||||
for (size_t pos = 0;;) {
|
for (size_t pos = 0;;) {
|
||||||
@ -46,14 +47,19 @@ PYBIND11_NOINLINE void clean_type_id(std::string &name) {
|
|||||||
#endif
|
#endif
|
||||||
detail::erase_all(name, "pybind11::");
|
detail::erase_all(name, "pybind11::");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline std::string clean_type_id(const char *typeid_name) {
|
||||||
|
std::string name(typeid_name);
|
||||||
|
detail::clean_type_id(name);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
PYBIND11_NAMESPACE_END(detail)
|
PYBIND11_NAMESPACE_END(detail)
|
||||||
|
|
||||||
/// Return a string representation of a C++ type
|
/// Return a string representation of a C++ type
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static std::string type_id() {
|
static std::string type_id() {
|
||||||
std::string name(typeid(T).name());
|
return detail::clean_type_id(typeid(T).name());
|
||||||
detail::clean_type_id(name);
|
|
||||||
return name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)
|
PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)
|
||||||
|
@ -13,7 +13,7 @@ import textwrap
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
# Early diagnostic for failed imports
|
# Early diagnostic for failed imports
|
||||||
import pybind11_tests # noqa: F401
|
import pybind11_tests
|
||||||
|
|
||||||
_long_marker = re.compile(r"([0-9])L")
|
_long_marker = re.compile(r"([0-9])L")
|
||||||
_hexadecimal = re.compile(r"0x[0-9a-fA-F]+")
|
_hexadecimal = re.compile(r"0x[0-9a-fA-F]+")
|
||||||
@ -198,3 +198,16 @@ def gc_collect():
|
|||||||
def pytest_configure():
|
def pytest_configure():
|
||||||
pytest.suppress = suppress
|
pytest.suppress = suppress
|
||||||
pytest.gc_collect = gc_collect
|
pytest.gc_collect = gc_collect
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_report_header(config):
|
||||||
|
del config # Unused.
|
||||||
|
assert (
|
||||||
|
pybind11_tests.compiler_info is not None
|
||||||
|
), "Please update pybind11_tests.cpp if this assert fails."
|
||||||
|
return (
|
||||||
|
"C++ Info:"
|
||||||
|
f" {pybind11_tests.compiler_info}"
|
||||||
|
f" {pybind11_tests.cpp_std}"
|
||||||
|
f" {pybind11_tests.PYBIND11_INTERNALS_ID}"
|
||||||
|
)
|
||||||
|
@ -62,9 +62,34 @@ void bind_ConstructorStats(py::module_ &m) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *cpp_std() {
|
||||||
|
return
|
||||||
|
#if defined(PYBIND11_CPP20)
|
||||||
|
"C++20";
|
||||||
|
#elif defined(PYBIND11_CPP17)
|
||||||
|
"C++17";
|
||||||
|
#elif defined(PYBIND11_CPP14)
|
||||||
|
"C++14";
|
||||||
|
#else
|
||||||
|
"C++11";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
PYBIND11_MODULE(pybind11_tests, m) {
|
PYBIND11_MODULE(pybind11_tests, m) {
|
||||||
m.doc() = "pybind11 test module";
|
m.doc() = "pybind11 test module";
|
||||||
|
|
||||||
|
// Intentionally kept minimal to not create a maintenance chore
|
||||||
|
// ("just enough" to be conclusive).
|
||||||
|
#if defined(_MSC_FULL_VER)
|
||||||
|
m.attr("compiler_info") = "MSVC " PYBIND11_TOSTRING(_MSC_FULL_VER);
|
||||||
|
#elif defined(__VERSION__)
|
||||||
|
m.attr("compiler_info") = __VERSION__;
|
||||||
|
#else
|
||||||
|
m.attr("compiler_info") = py::none();
|
||||||
|
#endif
|
||||||
|
m.attr("cpp_std") = cpp_std();
|
||||||
|
m.attr("PYBIND11_INTERNALS_ID") = PYBIND11_INTERNALS_ID;
|
||||||
|
|
||||||
bind_ConstructorStats(m);
|
bind_ConstructorStats(m);
|
||||||
|
|
||||||
#if defined(PYBIND11_DETAILED_ERROR_MESSAGES)
|
#if defined(PYBIND11_DETAILED_ERROR_MESSAGES)
|
||||||
|
Loading…
Reference in New Issue
Block a user