But looks like "secrets"[1] has the strong random.choice provider among others.
Probably the (minimal, dirty) change needed (for python 3.6 and later) is:
import secrets as r
But I can't test that right now. Thanks for calling me out on this, and having me do a quick search to check my assumptions.
I do agree that for this particular case, the pseudo-random generator seeded by system time might be enough (or at least better than "random" key presses) - but I don't like spreading bad patterns. And for any code generating many passwords, with the opportunity for an attacker to get a sample - this is likely very bad.
That matters very little if you are manually generating an occasional password here and there for personal and an attacker have no reason to know your specific method of generating the password.
I prefer not to have to use the shift key in passwords, and the 34 instead of 36 ([0-9a-z]) solves my german/us layout problem in a very golfy way.