andreroggeri/pynubank

Erro em get_card_statements()

Closed this issue · 4 comments

Ao tentar utilizar o método get_card_statements() é retornado o erro

Traceback (most recent call last):
File "C:\Python\Python310\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
File "C:\Python\Python310\lib\site-packages\pynubank\auth_mode.py", line 23, in wrapper
return function(args, *kwargs)
File "C:\Python\Python310\lib\site-packages\pynubank\nubank.py", line 199, in get_account_statements
return list(filter(lambda x: x['__typename'] in PAYMENT_EVENT_TYPES, feed))
File "C:\Python\Python310\lib\site-packages\pynubank\utils\parsing.py", line 28, in parse_pix_transaction
transaction['amount'] = parse_float(transaction['detail'])
File "C:\Python\Python310\lib\site-packages\pynubank\utils\parsing.py", line 19, in parse_float
return float(re.search(r'(?:\d
.)
\d+,\d{1,2}', value).group().replace('.', '').replace(',', '.'))
AttributeError: 'NoneType' object has no attribute 'group'

Em parsing.py na função parse_float(value: str), value recebe um valor de uma string sem o valor em R$. Isto veio de uma entrada antiga que tive com os dizeres "Estorno - Transferência enviada pelo Pix". Talvez seja uma condição atípica e não esperada pelo código.

Ao tentar utilizar o método get_card_statements() é retornado o erro

Traceback (most recent call last):
File "C:\Python\Python310\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
File "C:\Python\Python310\lib\site-packages\pynubank\auth_mode.py", line 23, in wrapper
return function(_args, *kwargs)
File "C:\Python\Python310\lib\site-packages\pynubank\nubank.py", line 199, in get_account_statements
return list(filter(lambda x: x['_typename'] in PAYMENT_EVENT_TYPES, feed))
File "C:\Python\Python310\lib\site-packages\pynubank\utils\parsing.py", line 28, in parse_pix_transaction
transaction['amount'] = parse_float(transaction['detail'])
File "C:\Python\Python310\lib\site-packages\pynubank\utils\parsing.py", line 19, in parse_float
return float(re.search(r'(?:\d
.)
\d+,\d{1,2}', value).group().replace('.', '').replace(',', '.'))
AttributeError: 'NoneType' object has no attribute 'group'

Em parsing.py na função parse_float(value: str), value recebe um valor de uma string sem o valor em R$. Isto veio de uma entrada antiga que tive com os dizeres "Estorno - Transferência enviada pelo Pix". Talvez seja uma condição atípica e não esperada pelo código.

Isto acontece porque é baseado nas informações advindas de detail de get_account_feed() que pode vir sem informação do valor da operação.

Interessante, qual o nome da transação ? Que fica no campo title

Investiguei um pouco mais a fundo e descobri que algumas transações com o campo title "Transferência enviada" não vêm com o valor em datail. Além disso, recargas de celular, com o campo title "Recarga efetuada" e pagamentos de boleto como "Pagamento efetuado" também não possuem o valor das transações em detail.

Deve ter sido resolvido na 2.19.1