libraries/botbuilder-core/botbuilder/core/memory_storage.py
def __should_write_changes(self, old_value: StoreItem, new_value: StoreItem) -> bool:
        """
        Helper method that compares two StoreItems and their e_tags and returns True if the new_value should overwrite
        the old_value. Otherwise returns False.
        :param old_value:
        :param new_value:
        :return:
        """

        # If old_value is none or if the new_value's e_tag is '*', then we return True
        if old_value is None or (hasattr(new_value, 'e_tag') and new_value.e_tag == '*'):
            return True
        # If none of the above cases, we verify that e_tags exist on both arguments
        elif hasattr(new_value, 'e_tag') and hasattr(old_value, 'e_tag'):
            if new_value.e_tag is not None and old_value.e_tag is None:
                return True
            # And then we do a comparing between the old and new e_tag values to decide if the new data will be written
            if old_value.e_tag == new_value.e_tag or int(old_value.e_tag) <= int(new_value.e_tag):
                return True
            else:
                return False
        else:
            return False
def __should_write_changes(self, old_value: StoreItem, new_value: StoreItem) -> bool:
        """
        Helper method that compares two StoreItems and their e_tags and returns True if the new_value should overwrite
        the old_value. Otherwise returns False.
        :param old_value:
        :param new_value:
        :return:
        """

        # If old_value is none or if the new_value's e_tag is '*', then we return True
        if old_value is None or (hasattr(new_value, 'e_tag') and new_value.e_tag == '*'):
            return True
        # If none of the above cases, we verify that e_tags exist on both arguments
        elif hasattr(new_value, 'e_tag') and hasattr(old_value, 'e_tag'):
            if new_value.e_tag is not None and old_value.e_tag is None:
                return True
            # And then we do a comparing between the old and new e_tag values to decide if the new data will be written
            if old_value.e_tag == new_value.e_tag or int(old_value.e_tag) <= int(new_value.e_tag):
                return True
            else:
                return False
        else:
            return False
Helper method that compares two StoreItems and their e_tags and returns True if the new_value should overwrite
        the old_value. Otherwise returns False.
        :param old_value:
        :param new_value:
        :return: