25 template <>
struct py_converter<triqs::operators::many_body_operator_real> {
27 using conv_t = py_converter<triqs::operators::many_body_operator>;
29 static constexpr char *tp_name =
"Operator";
31 static PyObject *
c2py(c_t
const &x) {
return conv_t::c2py(x); }
33 static bool is_convertible(PyObject *ob,
bool raise_exception) {
34 bool ok = conv_t::is_convertible(ob,
false );
37 auto op = conv_t::py2c(ob);
38 for (
auto const &c_m : op) ok = ok && c_m.coef.is_real();
41 if (raise_exception) { PyErr_SetString(PyExc_TypeError,
"Cannot convert to many_body_operator_real"); }
45 static c_t py2c(PyObject *ob) {
return c_t{conv_t::py2c(ob)}; }
51 template <>
struct py_converter<triqs::operators::many_body_operator_complex> {
53 using conv_t = py_converter<triqs::operators::many_body_operator>;
55 static constexpr char *tp_name =
"Operator";
57 static PyObject *
c2py(c_t
const &x) {
return conv_t::c2py(x); }
59 static bool is_convertible(PyObject *ob,
bool raise_exception) {
60 bool ok = conv_t::is_convertible(ob,
false);
62 if (raise_exception) { PyErr_SetString(PyExc_TypeError,
"Cannot convert to many_body_operator_complex"); }
66 static c_t py2c(PyObject *ob) {
return c_t{conv_t::py2c(ob)}; }