code: def load_classes(cls, fail_silently=True):
          
          all_classes = itertools.chain(
              pkg_resources.iter_entry_points(cls.entry_point),
              (entry_point for identifier, entry_point in cls.extra_entry_points),
          )
          for class_ in all_classes:
              try:
                  yield (class_.name, cls._load_class_entry_point(class_))
              except Exception:  # pylint: disable=broad-except
                  if fail_silently:
                      log.warning('Unable to load %s %r', cls.__name__, class_.name, exc_info=True)
                  else:
                      raise
docs: Load all the classes for a plugin.
  
          Produces a sequence containing the identifiers and their corresponding
          classes for all of the available instances of this plugin.
  
          fail_silently causes the code to simply log warnings if a
          plugin cannot import. The goal is to be able to use part of
          libraries from an XBlock (and thus have it installed), even if
          the overall XBlock cannot be used (e.g. depends on Django in a
          non-Django application). There is disagreement about whether
          this is a good idea, or whether we should see failures early
          (e.g. on startup or first page load), and in what
          contexts. Hence, the flag.