Currently every switch statement in Gate/Gates_block is a code smell where OOP could put such functionality on base classes properly and any vital differences in class themselves. This is an important refactoring to reduce lines of code, complexity and maintenance pressure.
Also the minimum number of CNOTs to represent each gate, and things like the qiskit compatible gates, and all gates offered, etc all belong in utils.py and should be reused, rather than scattered throughout the code. Leads to easier to read, simpler, more maintainable code.
Currently every switch statement in Gate/Gates_block is a code smell where OOP could put such functionality on base classes properly and any vital differences in class themselves. This is an important refactoring to reduce lines of code, complexity and maintenance pressure.
Also the minimum number of CNOTs to represent each gate, and things like the qiskit compatible gates, and all gates offered, etc all belong in utils.py and should be reused, rather than scattered throughout the code. Leads to easier to read, simpler, more maintainable code.