def get_limit_source(self):
        """
        Return :py:const:`~awslimitchecker.limit.SOURCE_DEFAULT` if
        :py:meth:`~.get_limit` returns the default limit,
        :py:const:`~awslimitchecker.limit.SOURCE_OVERRIDE` if it returns a
        manually-overridden limit,
        :py:const:`~awslimitchecker.limit.SOURCE_TA` if it returns a limit from
        Trusted Advisor, or   :py:const:`~awslimitchecker.limit.SOURCE_API`
        if it returns a limit retrieved from the service's API.

        :returns: one of :py:const:`~awslimitchecker.limit.SOURCE_DEFAULT`,
          :py:const:`~awslimitchecker.limit.SOURCE_OVERRIDE`, or
          :py:const:`~awslimitchecker.limit.SOURCE_TA`, or
          :py:const:`~awslimitchecker.limit.SOURCE_API`
        :rtype: int
        """
        if self.limit_override is not None and (
                self.override_ta is True or
                (self.ta_limit is None and self.ta_unlimited is False)
        ):
            return SOURCE_OVERRIDE
        if self.api_limit is not None:
            return SOURCE_API
        if self.ta_limit is not None or self.ta_unlimited is True:
            return SOURCE_TA
        return SOURCE_DEFAULT