def messages_equal()

in fluent/migrate/_context.py [0:0]


    def messages_equal(self, res1, res2):
        """Compare messages and terms of two FTL resources.

        Uses FTL.BaseNode.equals to compare all messages/terms
        in two FTL resources.
        If the order or number of messages differ, the result is also False.
        """

        def message_id(message):
            "Return the message's identifer name for sorting purposes."
            return message.id.name

        messages1 = sorted(
            (
                entry
                for entry in res1.body
                if isinstance(entry, FTL.Message) or isinstance(entry, FTL.Term)
            ),
            key=message_id,
        )
        messages2 = sorted(
            (
                entry
                for entry in res2.body
                if isinstance(entry, FTL.Message) or isinstance(entry, FTL.Term)
            ),
            key=message_id,
        )
        for msg1, msg2 in zip_longest(messages1, messages2):
            if msg1 is None or msg2 is None:
                return False
            if not msg1.equals(msg2):
                return False
        return True