cuducos/calculadora-do-cidadao

Erro no Adapter "IbgeAdapter"

danperrout opened this issue · 0 comments

Tentei rodar o exemplo:

from datetime import date
from decimal import Decimal
from calculadora_do_cidadao import Ipca

ipca = Ipca()

result = ipca.adjust(date(2018, 7, 6))
print(result)
Decimal('1.051202206630561280035407253')

result = ipca.adjust(date(2014, 7, 8), 7)
Decimal('9.407523138792336916983267321')
print(result)
result = ipca.adjust(date(1998, 7, 12), 3, date(2006, 7, 1))
Decimal('5.279855889296777979447848574')
print(result)

Recebi o seguinte erro:

Traceback (most recent call last):
  File "analise.py", line 5, in <module>
    ipca = Ipca15()
  File "/home/perrout/.local/lib/python3.8/site-packages/calculadora_do_cidadao/adapters/__init__.py", line 67, in __init__
    self.data = {key: value for key, value in self.download()}
  File "/home/perrout/.local/lib/python3.8/site-packages/calculadora_do_cidadao/adapters/__init__.py", line 67, in <dictcomp>
    self.data = {key: value for key, value in self.download()}
  File "/home/perrout/.local/lib/python3.8/site-packages/calculadora_do_cidadao/adapters/__init__.py", line 200, in download
    with download() as path:
  File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "/home/perrout/.local/lib/python3.8/site-packages/calculadora_do_cidadao/download.py", line 96, in __call__
    path = self.download_to(Path(tmp) / self.file_name)
  File "/home/perrout/.local/lib/python3.8/site-packages/calculadora_do_cidadao/download.py", line 87, in ftp
    conn.retrbinary(f"RETR {self.parsed_url.path}", fobj.write)
  File "/usr/lib/python3.8/ftplib.py", line 425, in retrbinary
    with self.transfercmd(cmd, rest) as conn:
  File "/usr/lib/python3.8/ftplib.py", line 382, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python3.8/ftplib.py", line 343, in ntransfercmd
    conn = socket.create_connection((host, port), self.timeout,
  File "/usr/lib/python3.8/socket.py", line 807, in create_connection
    raise err
  File "/usr/lib/python3.8/socket.py", line 796, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out

Testei outros adaptadores e rodaram normalmente (apenas o do IBGE utiliza FTP).

Meu ambiente: WSL2 Ubuntu (Windows 10)

Alterei o protocolo de FTP para HTTP no arquivo ibge.py e funcionou normalmente:

class Ipca(IbgeAdapter):
    """Adapter for IBGE's IPCA series."""

    url = "http://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip"

Resultado:

1.161020013396270778544627562
10.39031555654352922156656697
5.279855889296777979447848574