-
-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adiciona validação do RENAVAM - Issue 430 #440
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #440 +/- ##
=======================================
Coverage 99.78% 99.79%
=======================================
Files 18 19 +1
Lines 472 487 +15
=======================================
+ Hits 471 486 +15
Misses 1 1 ☔ View full report in Codecov by Sentry. |
Oi @LucasAlvws ! Uma dica, coloque um título descritivo na sua PR pra aumentar as chances de revisão (tipo "Adiciona validação do RENAVAM") Aí, na descrição da PR vc pode usar um dos atalhos do github tipo Só não vou revisar o código pq não sou muito familiar com essa parte 😄 |
A certo, obrigado pela dica, vou fazer isso sim!! |
renavam_digitis = renavam_digitis[:-1] | ||
multipliers = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3] | ||
sum_digits = sum( | ||
digit * multipliers[i] | ||
for i, digit in enumerate(renavam_digitis[::-1]) | ||
) | ||
remainder_division = sum_digits % 11 | ||
if remainder_division <= 1: | ||
check_digit_calculated = 0 | ||
else: | ||
check_digit_calculated = 11 - remainder_division | ||
if check_digit == check_digit_calculated: | ||
return True | ||
return False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Na codebase existe essa funcção que está implementada no PIS:
def _checksum(base_pis: str) -> int:
"""
Calculate the checksum digit of the given `base_pis` string.
Args:
base_pis (str): The first 10 digits of a PIS number as a string.
Returns:
int: The checksum digit.
"""
pis_digits = list(map(int, base_pis))
pis_sum = sum(digit * weight for digit, weight in zip(pis_digits, WEIGHTS))
check_digit = 11 - (pis_sum % 11)
return 0 if check_digit in [10, 11] else check_digit
Me parece que todo documento utilizado no Brasil (PIS, PASEP, RENAVAM, CPF) utilizam esse código de maneira parecida. Então, o que eu sugiro é você utilizar essa função que já existes ajustando para o que você precisa, assim, a gente evita muita duplicação de código.
@@ -0,0 +1,47 @@ | |||
def is_valid_renavam(renavam): # type: (str) -> bool |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ao invés de tipar os parâmetros e o retorno como comentário, utilize mesmo como se fosse uma tipagem forte em linguagens compiladas.
def is_valid_renavam(renavam): # type: (str) -> bool | |
def is_valid_renavam(renavam: str) -> bool: |
Descrição
Mudanças Propostas
Checklist de Revisão
Comentários Adicionais (opcional)
Issue Relacionada
Closes #430