Make qsymm work with nonHermitian Hamiltonians
Making qsymm work with nonHermitian Hamiltonians can be achieved by a few relatively simple steps:

Model
already works with nonHermitian Hamiltonians. All symbols are assumed real (this we should clarify in the docstring), but it is still possible to express an arbitrary Hamiltonian family by separating the Hermitian and antiHermitian parts. 
The symmetry finder doesn't rely on any assumption about the input being Hermitian as far as I know, and should work as is. We should still review the code with this in mind and write some tests. To be clear, we do not allow nonHermitian conserved quantities or non(anti)unitary discrete (anti)symmetries, because this would require dealing with noncompact Liealgebras, which is hard.

We should add a
transpose
attribute toPointGroupElement
s to signal that the transformed operator is also transposed, which requires amending theapply
method. This will allow declaring hermiticitylike constraints as symmetries by settingconjugate=True
andtranspose=True
. Should provide a constructorhermiticity
for convenience. The symmetry finder should work to find such symmetries if they are provided incandidates
(this is not completely obvious, should think more and test it). 
The Hamiltonian generator now only produces Hermitian Hamiltonians. We could add a
hermitian
flag that controls whether the result is made Hermitian. This requires changing the basis the Hamiltonian terms are generated from to a full matrix basis from the current Hermitian matrix basis incontinuum generator
, the same in the onsites inbloch_generator
and skipping the Hermitian symmetrization for the hoppings. Withhermitian=False
and some hermiticitylike symmetries provided insymmetries
everything should work the same.