Steps to replicate the issue:
This works as expected:
>>> input_yn('Do you like Pywikibot?', True, force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True >>> input_yn('Do you like Pywikibot?', False, force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) False >>> input_yn('Do you like Pywikibot?', 'Y', force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True >>> input_yn('Do you like Pywikibot?', 'n', force=True) Do you like Pywikibot? ([y]es, [N]o, [q]uit) False >>> input_yn('Do you like Pywikibot?', 0, force=True) Do you like Pywikibot? ([y]es, [N]o, [q]uit) False >>> input_yn('Do you like Pywikibot?', 1, force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True
This looks ok but is it?
>>> input_yn('Do you like Pywikibot?', [], force=True) Do you like Pywikibot? ([y]es, [N]o, [q]uit) False >>> input_yn('Do you like Pywikibot?', '', force=True) Do you like Pywikibot? ([y]es, [N]o, [q]uit) False >>> input_yn('Do you like Pywikibot?', 'Yes', force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True >>> input_yn('Do you like Pywikibot?', 11, force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True
It fails for those:
>>> input_yn('Do you like Pywikibot?', 'No', force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True >>>input_yn('Do you like Pywikibot?', (False,), force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True input_yn('Do you like Pywikibot?', 'Q', force=True) Do you like Pywikibot? ([Y]es, [n]o, [q]uit) True
What should have happened instead?:
default setting should be restricted to these elements: ['Y', 'y', 'N', 'n', None, True, False]
Software version
Pywikibot 3+ (rPWBCbc9dd66)