Add bulk_add_from_file(filepath, strict=False) as file-based user import successor to deprecated create_from_file
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 58/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- python
调研方向
Start by reading users.bulk_add, the deprecated create_from_file, and UserItem.CSVImport.validate_file_for_import to understand the existing import flow and POST /users/import integration. Confirm the behavior for strict and non-strict validation, including the JobItem and SkippedLine results, and consider how tabcmd issue #1809 would use the method.
由索引模型根据 Issue 内容生成。
描述
Summary
Add users.bulk_add_from_file(filepath, strict=False) -> tuple[JobItem, list[SkippedLine]] as the modern file-based user import convenience. The existing users.create_from_file is deprecated (v0.41.0) in favor of bulk_add, but bulk_add takes Iterable[UserItem] and has no file-reading equivalent. Callers who want "read this CSV, import users, tell me what happened" today have to hand-roll validation + iteration + error accumulation.
Proposed shape
def bulk_add_from_file(
self,
filepath: str,
strict: bool = False,
) -> tuple[JobItem, list[SkippedLine]]:
"""
Import users from a CSV file.
- Reads the file
- Validates each line via UserItem.CSVImport.validate_file_for_import
- If strict=True: raises ValueError on the first invalid line
- If strict=False: skips invalid lines, returns them in the second tuple element
- Calls POST /users/import (via bulk_add) with the valid users
- Returns the JobItem plus any client-side-rejected lines
"""
SkippedLine would be a small dataclass carrying the raw line, line number, and validation error.
Motivation
- tabcmd (
createsiteusers,createusers,addusers, etc.) currently duplicates ~100 lines of CSV parsing and validation logic client-side because there's no TSC method that spans file → server. #1809 tracks bringing tabcmd onto the shared TSC implementation; this method is what tabcmd would call. - Direct TSC users get the same convenience.
strictmode gives callers the choice between fail-fast and gather-errors, matching tabcmd's existing--complete/--no-completeCLI flag.
- 主要语言
- Python
- 星标
- 716
- 派生
- 446
- 平均合并
- 8 天 8 小时
- 30 天内合并 PR
- 2
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
tableau/server-client-python 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 70/100
tableau/server-client-python#1865 ·
-
in-progress
难度 2/5 1-3 小时 新手友好度 78/100
tableau/server-client-python#1829 · 1 条评论 ·
-
enhancement gap needs investigation
难度 2/5 1-3 小时 新手友好度 68/100
tableau/server-client-python#1322 · 1 条评论 ·
-
[Type2] Allow Incremental Refresh type schedules to be added via `server.schedules.add_to_schedule` 未关闭help wanted Server-Side Enhancement ui-exists
难度 2/5 1-3 小时 新手友好度 68/100
tableau/server-client-python#1101 · 3 条评论 ·
-
enhancement good first issue
难度 2/5 1-3 小时 新手友好度 68/100
tableau/server-client-python#783 · 5 条评论 ·
查看 tableau/server-client-python 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
anthropics/skills#1811 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
speaches-ai/speaches#678 ·
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
datalayer/mcp-compose#42 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
conda-forge/spacy-feedstock#177 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
UKGovernmentBEIS/inspect_evals#2523 ·