Erro no Adapter "IbgeAdapter"
danperrout opened this issue · 0 comments
danperrout commented
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