Redundant casts
alphaL = list(string.ascii_lowercase)
alphaU = list(string.ascii_uppercase)
numeric = list(string.digits)
special = list("!@#$%^&*")
special2 = list("""~`!@#$%^&*()+=_-{}[]\|:;"'?/<>,.""")
Are you sure that casts to list are needed here? For example, string.ascii_lowercase is a str, which is already a sequence of strings (each one character). secrets.choice says:
Return a randomly-chosen element from a non-empty sequence.
So it will be able to handle the strings directly. Casting to a list is actually regressive, since list is mutable but these sequences should not be.
Latin
It's really pedantic, but maximums should be maxima.
Named arguments
There's no point to the minimums list. Every time you reference it, you reference one of its elements by index; so just reference the arguments from which it was initialized and get rid of the list.
Partially insecure entropy
Whereas you use secrets for some entropy, you use random in other cases, namely
random.shuffle(subset)
random.sample(password, len(password))
This is not secure and needs to be replaced with secrets calls.