In cppyy and thus also ogdf-python, the C++ `namespace::TemplateClass<Arg1, ns::Arg2>` becomes (`cppyy.gbl.`)`namespace.TemplateClass["Arg1", "ns::Arg2"]` in Python. If ArgN is a type that exists both in C++ and Python (e.g. int, bool, str (for std::string), ogdf.Graph, ogdf.edge,…) you should also be able to use the Python type directly instead of passing the C++ type/template argument as string. So you should use
```
ogdf::PlanarSubgraphCactus<double> -> ogdf.PlanarSubgraphCactus["double"]
ogdf::EdgeArray<double> -> ogdf.EdgeArray["double"], especially
ogdf.EdgeArrayFloat(len(G.nodes)) -> ogdf.EdgeArray["double"](G)
ogdf::List<ogdf::edge> -> ogdf.List[ogdf.edge] or ogdf.List["ogdf::edge"]
```
Instead of ["double"] you could also try [float], cppyy should translate that to the same type as Pythons floats are double precision.
Cheers
Niko