Me preguntaba sobre las mejores prácticas para indicar combinaciones de argumentos no válidos en Python. Me he encontrado con algunas situaciones en las que tienes una función como esta:
def import_to_orm(name, save=False, recurse=False):
"""
:param name: Name of some external entity to import.
:param save: Save the ORM object before returning.
:param recurse: Attempt to import associated objects as well. Because you
need the original object to have a key to relate to, save must be
`True` for recurse to be `True`.
:raise BadValueError: If `recurse and not save`.
:return: The ORM object.
"""
pass
La única molestia con esto es que cada paquete tiene el suyo, generalmente ligeramente diferente BadValueError. Sé que en Java existe java.lang.IllegalArgumentException, ¿se entiende bien que todos crearán sus propios BadValueErrors en Python o hay otro método preferido?