rafpyprog / pySGS

📈 Python interface for the Brazilian Central Bank's Time Series Management System (SGS)
https://pysgs.readthedocs.io
MIT License
74 stars 16 forks source link

Erro de locale em instância docker (Debian / Python 3) #30

Closed lucasczpnk closed 4 years ago

lucasczpnk commented 4 years ago

Estou testando em uma instância Debian (docker) em inglês e recebo o erro (Error: unsupported locale setting) até quando tento executar o exemplo do README.md.

OS INFO:

PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Tentando chamar o time_serie ou o dataframe, quando ele chama setlocale(locale.LC_TIME, locales[language] provavelmente não rola o match com a language passada e acaba causando o erro.

Como eu to com um prazo apertado de entrega, não vou conseguir cavar mais fundo e debugar pra ajudar no fix. Mas conseguindo entregar posso fazer o debug e depois subir aquele PR amigo.

De qualquer forma, segue o stack trace:

---------------------------------------------------------------------------
Error                                     Traceback (most recent call last)
<ipython-input-89-981dba7d0821> in <module>
      5 
      6 CDI_CODE = 12
----> 7 ts = sgs.dataframe(CDI_CODE, start='02/01/2018', end='31/12/2018')

~/phoenix-worker/environments/python3/lib/python3.6/site-packages/sgs/dataframe.py in dataframe(ts_codes, start, end)
     41     series = []
     42     for code in ts_codes:
---> 43         ts = time_serie(code, start, end)
     44         series.append(ts)
     45 

~/phoenix-worker/environments/python3/lib/python3.6/site-packages/sgs/ts.py in time_serie(ts_code, start, end)
     40     for i in api.get_data(ts_code, start, end):
     41         values.append(i["valor"])
---> 42         index.append(to_datetime(i["data"], "pt"))
     43 
     44     # Transform empty strings in null values

~/phoenix-worker/environments/python3/lib/python3.6/site-packages/sgs/common.py in to_datetime(date_string, language)
     21         locales = {"pt": "Portuguese_Brazil.1252", "en": "Portuguese_Brazil.1252"}
     22 
---> 23     locale.setlocale(locale.LC_TIME, locales[language])
     24 
     25     dd_mm_aaaa = "%d/%m/%Y"

~/phoenix-worker/environments/python3/lib/python3.6/locale.py in setlocale(category, locale)
    596         # convert to string
    597         locale = normalize(_build_localename(locale))
--> 598     return _setlocale(category, locale)
    599 
    600 def resetlocale(category=LC_ALL):

Error: unsupported locale setting