refactor: modernize UserItem.CSVImport - use csv module for parsing
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Start with UserItem.CSVImport, validate_file_for_import, _validate_import_line_or_throw, and create_user_from_line, then inspect test_password_with_comma_partially_masks. Done means parsing and username extraction use csv handling, and empty-input and too-many-column errors follow one convention.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
UserItem.CSVImport has some internal design smells worth cleaning up.
1. Use the csv module for parsing. Today the code does line.split(","), which misaligns whenever a field contains a comma - a password like "my,pa\$\$w0rd", a display name like "Smith, John". The column-1 mask added in #1829 only covers what lands in column 1; bytes that spill into column 2+ still leak (see test_password_with_comma_partially_masks). csv.reader also handles quoted values, CRLF, and BOM deliberately rather than coincidentally.
2. Consolidate two username extractions. validate_file_for_import uses line.partition(",")[0].strip(), while _validate_import_line_or_throw uses list(map(str.strip, line.split(",")))[USERNAME]. Same result today, but a maintenance hazard. A csv.reader migration collapses both.
3. Align error handling in create_user_from_line. It returns None for empty input but raises ValueError for too many columns. Pick one convention.
🤖 Generated with Claude Code
- Linguagem predominante
- Python
- Estrelas
- 716
- Forks
- 446
- Merge médio
- 8d 8h
- PRs com merge (30d)
- 2
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de tableau/server-client-python
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
tableau/server-client-python#1865 ·
-
in-progress
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
tableau/server-client-python#1829 · 1 comentário ·
-
enhancement gap needs investigation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
tableau/server-client-python#1322 · 1 comentário ·
-
[Type2] Allow Incremental Refresh type schedules to be added via `server.schedules.add_to_schedule` Abertahelp wanted Server-Side Enhancement ui-exists
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
tableau/server-client-python#1101 · 3 comentários ·
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
tableau/server-client-python#783 · 5 comentários ·
Todas as issues de tableau/server-client-python
Issues semelhantes
-
area: harness bug status: needs-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Human-Agent-Society/reef#625 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 80/100
learningequality/kolibri#15351 · 2 comentários ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Name consistency Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
eellak/triplestore#65 · 1 comentário ·