try name wrapper?

This commit is contained in:
Michael Carlstrom 2024-07-26 10:21:41 -04:00
parent 07ccee567f
commit c6ba82cbba
2 changed files with 14 additions and 8 deletions

View File

@ -124,13 +124,21 @@ class TypeVar : public object {
};
#endif
class NameWrapper : public object {
PYBIND11_OBJECT_DEFAULT(TypeVarObject, object, PyObject_Type)
using object::object;
NameWrapper(const char *name){
attr("__name__") = name;
}
}
template <typename T>
class TypeVarObject : public object {
PYBIND11_OBJECT_DEFAULT(TypeVarObject, object, PyObject_Type)
using object::object;
TypeVarObject(const char *name) {
attr("__name__") = name;
attr("__bound__") = make_caster<T>;
attr("__bound__") = NameWrapper(make_caster<T>::name);
attr("__constraints__") = pybind11::make_tuple();
}
// TypeVarObject(const char *name, py::typing::Tuple<pybind11::type, pybind11::ellipse> tuple){

View File

@ -925,16 +925,14 @@ TEST_SUBMODULE(pytypes, m) {
#endif
struct TypeVarObject {};
py::class_<TypeVarObject>(m, "TypeVarObject").type_params()
= py::make_tuple(py::typing::TypeVarObject<int>("T"));
py::class_<TypeVarObject>(m, "TypeVarObject").type_params() = py::make_tuple(py::typing::TypeVarObject<int>("T"));
struct ParamSpec {};
py::class_<ParamSpec>(m, "ParamSpec").type_params()
= py::make_tuple(py::typing::ParamSpec("P"));
py::class_<ParamSpec>(m, "ParamSpec").type_params() = py::make_tuple(py::typing::ParamSpec("P"));
struct TypeVarTuple {};
py::class_<TypeVarTuple>(m, "TypeVarTuple").type_params()
= py::make_tuple(py::typing::TypeVarTuple("T"));
py::class_<TypeVarTuple>(m, "TypeVarTuple").type_params() = py::make_tuple(py::typing::TypeVarTuple("T"));
struct NoTypeParams {};
struct TypeParams {};