diff --git a/include/pybind11/pytypes.h b/include/pybind11/pytypes.h index 6606b7c03..ee8cc82bf 100644 --- a/include/pybind11/pytypes.h +++ b/include/pybind11/pytypes.h @@ -2567,7 +2567,13 @@ str_attr_accessor object_api::doc() const { template str_attr_accessor object_api::annotations() const { - str_attr_accessor annotations_dict = attr("__annotations__"); + // Create dict automatically + + #if !defined(PYPY_VERSION) && PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION <= 9 + str_attr_accessor annotations_dict = attr("__dict__").attr("__annotations__"); + #else + str_attr_accessor annotations_dict = attr("__annotations__"); + #endif // Create dict automatically if (!isinstance(annotations_dict)) { annotations_dict = dict();