I have never been bothered with actually solving sudoku puzzles, so I thought, now I don't need to. Plus, was pretty fun programming the computer to do it as efficiently (not fast, this is Python) as I could, minimising recursive attempts, using them as a last ditch effort only. This requires Python 3.6, as my code makes use of f-strings, and at least 3.5 with minor modifications, as it uses type hinting. Just upgrade on your home computer, O.K.?
To run it as a programme (instead of using it as a library), just run main.py, which should give you nice helpful menus
to guide you through it. I would heartily advise looking through the Help first, as it will give you tips to speed up
inputting your puzzle(s), and tell you how to correct any mistakes.
It works quite well from my testing it against online sudoku puzzles, but if you find one that it can't solve, do create an issue, and if it is reasonable to expect it to solve it, I will try and make any neccessary changes.