refactor: modernize UserItem.CSVImport - use csv module for parsing
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 716
- Fork
- 446
- Merge medio
- 8g 8h
- PR unite (30g)
- 2
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tableau/server-client-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
tableau/server-client-python#1865 ·
-
in-progress
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
tableau/server-client-python#1829 · 1 commento ·
-
enhancement gap needs investigation
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
tableau/server-client-python#1322 · 1 commento ·
-
[Type2] Allow Incremental Refresh type schedules to be added via `server.schedules.add_to_schedule` Apertahelp wanted Server-Side Enhancement ui-exists
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
tableau/server-client-python#1101 · 3 commenti ·
-
enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
tableau/server-client-python#783 · 5 commenti ·
Tutte le issue di tableau/server-client-python
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
canonical/paas-charm#368 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
addition to tracking list Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
StevenBlack/hosts#3256 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
qualcomm/qai-appbuilder#275 ·