I think it makes more logical sense now. Essentially, the default is always used if the user doesn't specify a value. If there is no user specified value and the default is None, then the action depends on the value of required. required=True means raise an error. required=False means silently omit that setting.