Are you sure about eulerian_cycle
? I think it's eulerian_circuit
in Sage (?). But it does seem to only work for undirected graphs...
I would say this is a start.
sage: D = DiGraph('IRAaDCIIOWEOKcPWAo')
sage: D.is_eulerian()
True
In fact, the code basically finds the circuit, but doesn't keep it like eulerian_circuit
does. So it could be modified to keep it, just like eulerian_circuit
.
However, things get bad when we convert, because it doesn't keep double edges... hmmm...
sage: E = D.to_undirected()
sage: E.eulerian_circuit()
False
Anyway, this could probably be implemented pretty easily. I highly suggest you post about this on sage-devel, and/or file a ticket at trac.sagemath.org if one doesn't already exist for this.