Implementação da fórmula de Luhn

Eu estava tentando implementar oFórmula de Luhn em Python, aqui está o meu código:

import sys


def luhn_check(number):
    if number.isdigit():
        last_digit = int(str(number)[-1])
        reverse_sequence = list(int(d) for d in str(int(number[-2::-1])))

        for i in range(0, len(reverse_sequence), 2):
            reverse_sequence[i] *= 2

        for i in range(len(reverse_sequence)):
            if reverse_sequence[i] > 9:
                reverse_sequence[i] -= 9

        sum_of_digits = 0
        for i in range(len(reverse_sequence)):
            sum_of_digits += reverse_sequence[i]

        result = divmod(sum_of_digits, 10)

        if result == last_digit:
            print("[VALID] %s" % number)
        else:
            print("[INVALID] %s" % number)
        quit()

    print("[ERROR] \" %s \" is not a valid sequence." % number)
    quit()


def main():
    if len(sys.argv) < 2:
        print("Usage: python TLF.py <sequence>")
        quit()

    luhn_check(sys.argv[1])

if __name__ == '__main__':
    main()

Mas não está funcionando corretamente:

[INVALID] 4532015112830366
[INVALID] 6011514433546201
[INVALID] 6771549495586802

e assim por diante...

Mas a lógica do código parece boa para mim. Eu segui este fluxo de trabalho:

A fórmula de Luhn:

Solte o último dígito do número. O último dígito é o que queremos verificar. Inverta os números

Multiplique os dígitos nas posições ímpares (1, 3, 5, etc.) por 2 e subtraia 9 a todos os resultados maiores que 9

Adicione todos os números juntos

O dígito de verificação (o último número do cartão) é o valor que você precisaria adicionar para obter um múltiplo de 10 (Módulo 10)

questionAnswers(6)

yourAnswerToTheQuestion