Issue description
In pybind 2.2.3, the template specialization py::isinstance<py::str>() returns True when used on py::bytes objects. This is incorrect in both Py2 and 3 (since py::str is unicode in Py2).
py::instance(obj, py::str().get_type()) works correctly.
Reproducible example code
m.def("test_isinstance",
[]() {
py::bytes b = "123";
py::print(py::isinstance<py::str>(b));
}
);
>>> pybind11.test_isinstance()
True