Skip to content

Feature/file uploader - #17

Open
millengustavo wants to merge 4 commits into
paulozip:masterfrom
millengustavo:feature/file_uploader
Open

millengustavo wants to merge 4 commits into
paulozip:masterfrom
millengustavo:feature/file_uploader

Conversation

@millengustavo

Copy link
Copy Markdown

Resolves #4

  • Bumps streamlit version to support new file_uploader method: https://docs.streamlit.io/api.html#streamlit.file_uploader
  • Adds xlrd package to requirements to allow pandas to read Excel files
  • Added new dropdown to select file source: REST API or Upload file
  • Upload file supports CSV/TXT or Excel using better delimiter validation and streamlit built in caching
  • Since file_uploader does not provide an easy way to return filename the autogenerated code defaults to reading the dropdown option (if you use the auto generated code, you will have to adjust the filename accordingly)
  • Everything else works normally.

@paulozip

Copy link
Copy Markdown
Owner

Isso ficou muito bom. Vou avaliar amanhã sem falta :)

@paulovasconcellos-hotmart

Copy link
Copy Markdown
Contributor

Fala @millengustavo ! Blz, cara?
Fiz alguns testes usando essa mudança e está dando alguns problemas. Por exemplo, se eu faço o upload do arquivo monthly_air_passengers.csv que tem no repo e treino um modelo simples, dá erro de cache, acho que é porque o objeto é alterado durante o código. Consegue corrigir isso?

image

@millengustavo

Copy link
Copy Markdown
Author

Fala @paulovasconcellos-hotmart,

Como as funções posteriores alteram o objeto, o cache do streamlit em cima do arquivo não bate pois o hash do objeto é alterado.

A solução simples é remover os dois decorators (@st.cache(show_spinner=False)) em cima de cada função no arquivo file_uploader.py: _csv_uploader e _excel_uploader.
Pelos testes que fiz aqui a aplicação não teve perda significativa de desempenho, mas não testei com arquivos mais pesados.

Outra solução seria alterar os cálculos posteriores para não alterarem o objeto original do upload, talvez usando cópias. Isso inclusive facilitaria a programação de testes unitários, mas daria um pouco mais de trabalho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create interface to upload file

3 participants