def validate_class_name(flag_value, category, modules, expected_superclass): """Checks that the given string matches a class of the expected type. Args: flag_value: A string naming the class to instantiate. category: A string used further describe the class in error messages (e.g. 'model', 'reader', 'loss'). modules: A list of modules to search for the given class. expected_superclass: A class that the given class should inherit from. Raises: FlagsError: If the given class could not be found or if the first class found with that name doesn't inherit from the expected superclass. Returns: True if a class was found that matches the given constraints. """ candidates = [getattr(module, flag_value, None) for module in modules] for candidate in candidates: if not candidate: continue if not issubclass(candidate, expected_superclass): raise flags.FlagsError( "%s '%s' doesn't inherit from %s." % (category, flag_value, expected_superclass.__name__)) return True raise flags.FlagsError("Unable to find %s '%s'." % (category, flag_value))
def validate_class_name(flag_value, category, modules, expected_superclass): candidates = [getattr(module, flag_value, None) for module in modules] for candidate in candidates: if not candidate: continue if not issubclass(candidate, expected_superclass): raise flags.FlagsError( f"{category} '{flag_value}' doesn't inherit "\ f"from {expected_superclass.__name__}.") return True raise flags.FlagsError(f"Unable to find {category} '{flag_value}'.")
def validate_class_name(flag_value, category, modules, expected_superclass): candidates = [getattr(module, flag_value, None) for module in modules] for candidate in candidates: if not candidate: continue if not issubclass(candidate, expected_superclass): raise flags.FlagsError( "%s '%s' doesn't inherit from %s." % (category, flag_value, expected_superclass.__name__)) return True raise flags.FlagsError("Unable to find %s '%s'." % (category, flag_value))