Load `drops` from the given dropin.

        Args:
            dropin (string): path of a dropin, e.g. dropin.auth

        Returns:
            An iterable contains the drops object in the given dropin

        This method load drops object by some sort of convension. For example, assuming
        we want to load drops type `models` from dropin `dropin.articls`. The drops are
        discoveried with the following sequence::

            import dropin.articles
            drops = dropin.articles.models

        if anything goes wrong, next try is ::

            import dropin.articles.models as drops

        if the current drops object has attribute **__drops__** ::

            drops = drops.__drops__

        if the current drops object is a callable ::

            drops = drops()

        if not drops was found, an empty list is returned.

def load_drops(self, dropin):
        """Load `drops` from the given dropin.

        Args:
            dropin (string): path of a dropin, e.g. dropin.auth

        Returns:
            An iterable contains the drops object in the given dropin

        This method load drops object by some sort of convension. For example, assuming
        we want to load drops type `models` from dropin `dropin.articls`. The drops are
        discoveried with the following sequence::

            import dropin.articles
            drops = dropin.articles.models

        if anything goes wrong, next try is ::

            import dropin.articles.models as drops

        if the current drops object has attribute **__drops__** ::

            drops = drops.__drops__

        if the current drops object is a callable ::

            drops = drops()

        if not drops was found, an empty list is returned.

        """
        obj = load_object(dropin)
        try:
            drops = getattr(obj, self.drops_type)
        except AttributeError:
            try:
                drops = load_object('%s.%s' % (dropin, self.drops_type))
            except ImportError:
                drops = None
        if hasattr(drops, '__drops__'):
            drops = drops.__drops__
        if callable(drops):
            drops = drops(self.app)
        return drops or []