xiaoshiai-hub 1.1.2__tar.gz → 1.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {xiaoshiai_hub-1.1.2/xiaoshiai_hub.egg-info → xiaoshiai_hub-1.1.3}/PKG-INFO +157 -7
  2. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/README.md +156 -6
  3. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/pyproject.toml +1 -1
  4. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/setup.py +1 -1
  5. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/cli.py +457 -5
  6. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/client.py +191 -3
  7. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/types.py +4 -0
  8. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/upload.py +58 -22
  9. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3/xiaoshiai_hub.egg-info}/PKG-INFO +157 -7
  10. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/LICENSE +0 -0
  11. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/MANIFEST.in +0 -0
  12. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/requirements.txt +0 -0
  13. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/setup.cfg +0 -0
  14. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/__init__.py +0 -0
  15. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/auth.py +0 -0
  16. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/download.py +0 -0
  17. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/envelope_crypto.py +0 -0
  18. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/exceptions.py +0 -0
  19. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/SOURCES.txt +0 -0
  20. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/dependency_links.txt +0 -0
  21. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/entry_points.txt +0 -0
  22. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/not-zip-safe +0 -0
  23. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/requires.txt +0 -0
  24. {xiaoshiai_hub-1.1.2 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xiaoshiai-hub
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Python SDK for XiaoShi AI Hub - Upload, download, and manage AI models and datasets with xpai-enc encryption support
5
5
  Home-page: https://github.com/poxiaoyun/moha-sdk
6
6
  Author: XiaoShi AI
@@ -244,20 +244,53 @@ client = HubClient(
244
244
  password="your-password",
245
245
  )
246
246
 
247
+ # 创建仓库
248
+ repo = client.create_repository(
249
+ organization="demo",
250
+ repo_type="models",
251
+ repo_name="my-model",
252
+ description="我的模型",
253
+ visibility="internal",
254
+ metadata={
255
+ "license": ["apache-2.0"],
256
+ "frameworks": ["transformers"],
257
+ },
258
+ )
259
+ print(f"仓库已创建: {repo.name}")
260
+
247
261
  # 获取仓库信息
248
262
  repo_info = client.get_repository_info("demo", "models", "my-model")
249
263
  print(f"仓库名称: {repo_info.name}")
250
264
  print(f"组织: {repo_info.organization}")
265
+ print(f"所有者: {repo_info.owner}")
266
+ print(f"可见性: {repo_info.visibility}")
267
+
268
+ # 更新仓库
269
+ client.update_repository(
270
+ organization="demo",
271
+ repo_type="models",
272
+ repo_name="my-model",
273
+ description="更新后的描述",
274
+ )
251
275
 
252
276
  # 列出分支
253
- branches = client.list_branches("demo", "models", "my-model")
254
- for branch in branches:
255
- print(f"分支: {branch.name} (commit: {branch.commit_sha})")
277
+ refs = client.get_repository_refs("demo", "models", "my-model")
278
+ for ref in refs:
279
+ print(f"分支: {ref.name} (commit: {ref.hash[:8]})")
280
+
281
+ # 创建分支(幂等操作,已存在则直接返回)
282
+ client.create_branch("demo", "models", "my-model", "dev", "main")
283
+
284
+ # 删除分支(幂等操作,不存在则直接返回)
285
+ client.delete_branch("demo", "models", "my-model", "dev")
256
286
 
257
287
  # 浏览仓库内容
258
288
  content = client.get_repository_content("demo", "models", "my-model", "main")
259
289
  for entry in content.entries:
260
290
  print(f"{entry.type}: {entry.name}")
291
+
292
+ # 删除仓库
293
+ client.delete_repository("demo", "models", "my-model")
261
294
  ```
262
295
 
263
296
  ## 🔐 加密功能
@@ -343,7 +376,7 @@ export MOHA_ENCRYPTION_PASSWORD="your-encryption-password"
343
376
 
344
377
  ## 🖥️ 命令行工具 (CLI)
345
378
 
346
- SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
379
+ SDK 提供了 `moha` 命令行工具,支持登录认证、仓库管理、分支管理、上传下载等操作。
347
380
 
348
381
  ### 基本用法
349
382
 
@@ -351,6 +384,75 @@ SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
351
384
  moha --help
352
385
  ```
353
386
 
387
+ ### 登录认证
388
+
389
+ ```bash
390
+ # 登录(交互式输入用户名和密码)
391
+ moha login
392
+
393
+ # 直接指定用户名和密码
394
+ moha login --username your-username --password your-password
395
+
396
+ # 查看当前登录状态
397
+ moha whoami
398
+
399
+ # 退出登录
400
+ moha logout
401
+ ```
402
+
403
+ 登录后,Token 会保存到 `~/.moha/token.json`,后续命令无需重复输入认证信息。
404
+
405
+ ### 仓库管理
406
+
407
+ ```bash
408
+ # 创建仓库
409
+ moha repo-create org/my-model \
410
+ --description "我的模型" \
411
+ --visibility internal \
412
+ --license apache-2.0 \
413
+ --tasks text-generation \
414
+ --frameworks transformers
415
+
416
+ # 创建数据集仓库
417
+ moha repo-create org/my-dataset \
418
+ --repo-type datasets \
419
+ --description "我的数据集" \
420
+ --visibility private
421
+
422
+ # 查看仓库信息
423
+ moha repo-info org/my-model
424
+
425
+ # 更新仓库信息
426
+ moha repo-update org/my-model \
427
+ --description "更新后的描述" \
428
+ --tags production
429
+
430
+ # 删除仓库(需要确认)
431
+ moha repo-delete org/my-model
432
+
433
+ # 跳过确认直接删除
434
+ moha repo-delete org/my-model -y
435
+ ```
436
+
437
+ ### 分支管理
438
+
439
+ ```bash
440
+ # 列出仓库的所有分支
441
+ moha branch-list org/my-model
442
+
443
+ # 创建分支(基于 main 分支)
444
+ moha branch-create org/my-model dev
445
+
446
+ # 创建分支(基于指定分支)
447
+ moha branch-create org/my-model feature --from dev
448
+
449
+ # 删除分支
450
+ moha branch-delete org/my-model dev
451
+
452
+ # 跳过确认直接删除
453
+ moha branch-delete org/my-model dev -y
454
+ ```
455
+
354
456
  ### 上传文件夹
355
457
 
356
458
  ```bash
@@ -444,16 +546,42 @@ moha download-file org/my-model model.safetensors \
444
546
  --password your-password
445
547
  ```
446
548
 
549
+ ### CLI 命令列表
550
+
551
+ | 命令 | 说明 |
552
+ |------|------|
553
+ | `moha login` | 登录并保存 Token |
554
+ | `moha logout` | 退出登录并删除 Token |
555
+ | `moha whoami` | 查看当前登录状态 |
556
+ | `moha repo-create` | 创建仓库 |
557
+ | `moha repo-update` | 更新仓库 |
558
+ | `moha repo-delete` | 删除仓库 |
559
+ | `moha repo-info` | 查看仓库信息 |
560
+ | `moha branch-create` | 创建分支 |
561
+ | `moha branch-delete` | 删除分支 |
562
+ | `moha branch-list` | 列出仓库的所有分支 |
563
+ | `moha upload` | 上传文件夹到仓库 |
564
+ | `moha upload-file` | 上传单个文件到仓库 |
565
+ | `moha download` | 下载整个仓库 |
566
+ | `moha download-file` | 从仓库下载单个文件 |
567
+
447
568
  ### CLI 参数说明
448
569
 
570
+ #### 通用参数
571
+
449
572
  | 参数 | 说明 | 适用命令 |
450
573
  |------|------|----------|
451
- | `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 所有 |
452
- | `--revision, -r` | 分支/标签/提交(默认:main) | 所有 |
574
+ | `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 大部分命令 |
453
575
  | `--base-url` | API 基础 URL(默认:环境变量 MOHA_ENDPOINT) | 所有 |
454
576
  | `--token` | 认证令牌 | 所有 |
455
577
  | `--username` | 用户名 | 所有 |
456
578
  | `--password` | 密码 | 所有 |
579
+
580
+ #### 上传/下载参数
581
+
582
+ | 参数 | 说明 | 适用命令 |
583
+ |------|------|----------|
584
+ | `--revision, -r` | 分支/标签/提交(默认:main) | upload, download |
457
585
  | `--message, -m` | 提交消息 | upload, upload-file |
458
586
  | `--ignore, -i` | 忽略模式(可多次使用) | upload, download |
459
587
  | `--include` | 包含模式(可多次使用) | download |
@@ -465,6 +593,28 @@ moha download-file org/my-model model.safetensors \
465
593
  | `--local-dir, -o` | 本地保存目录 | download, download-file |
466
594
  | `--quiet, -q` | 禁用进度条 | download, download-file |
467
595
 
596
+ #### 仓库管理参数
597
+
598
+ | 参数 | 说明 | 适用命令 |
599
+ |------|------|----------|
600
+ | `--description, -d` | 仓库描述 | repo-create, repo-update |
601
+ | `--visibility, -v` | 可见性:`public`、`internal`、`private` | repo-create, repo-update |
602
+ | `--license` | 许可证(可多次使用) | repo-create, repo-update |
603
+ | `--tasks` | 任务类型(可多次使用) | repo-create, repo-update |
604
+ | `--languages` | 语言(可多次使用) | repo-create, repo-update |
605
+ | `--tags` | 标签(可多次使用) | repo-create, repo-update |
606
+ | `--frameworks` | 框架(可多次使用) | repo-create, repo-update |
607
+ | `--base-model` | 基础模型(可多次使用) | repo-create, repo-update |
608
+ | `--relationship` | 与基础模型的关系 | repo-create, repo-update |
609
+ | `--yes, -y` | 跳过确认提示 | repo-delete, branch-delete |
610
+
611
+ #### 分支管理参数
612
+
613
+ | 参数 | 说明 | 适用命令 |
614
+ |------|------|----------|
615
+ | `--from, -f` | 基于哪个分支创建(默认:main) | branch-create |
616
+ | `--yes, -y` | 跳过确认提示 | branch-delete |
617
+
468
618
  ### 使用环境变量
469
619
 
470
620
  可以通过环境变量设置认证信息,避免每次输入:
@@ -189,20 +189,53 @@ client = HubClient(
189
189
  password="your-password",
190
190
  )
191
191
 
192
+ # 创建仓库
193
+ repo = client.create_repository(
194
+ organization="demo",
195
+ repo_type="models",
196
+ repo_name="my-model",
197
+ description="我的模型",
198
+ visibility="internal",
199
+ metadata={
200
+ "license": ["apache-2.0"],
201
+ "frameworks": ["transformers"],
202
+ },
203
+ )
204
+ print(f"仓库已创建: {repo.name}")
205
+
192
206
  # 获取仓库信息
193
207
  repo_info = client.get_repository_info("demo", "models", "my-model")
194
208
  print(f"仓库名称: {repo_info.name}")
195
209
  print(f"组织: {repo_info.organization}")
210
+ print(f"所有者: {repo_info.owner}")
211
+ print(f"可见性: {repo_info.visibility}")
212
+
213
+ # 更新仓库
214
+ client.update_repository(
215
+ organization="demo",
216
+ repo_type="models",
217
+ repo_name="my-model",
218
+ description="更新后的描述",
219
+ )
196
220
 
197
221
  # 列出分支
198
- branches = client.list_branches("demo", "models", "my-model")
199
- for branch in branches:
200
- print(f"分支: {branch.name} (commit: {branch.commit_sha})")
222
+ refs = client.get_repository_refs("demo", "models", "my-model")
223
+ for ref in refs:
224
+ print(f"分支: {ref.name} (commit: {ref.hash[:8]})")
225
+
226
+ # 创建分支(幂等操作,已存在则直接返回)
227
+ client.create_branch("demo", "models", "my-model", "dev", "main")
228
+
229
+ # 删除分支(幂等操作,不存在则直接返回)
230
+ client.delete_branch("demo", "models", "my-model", "dev")
201
231
 
202
232
  # 浏览仓库内容
203
233
  content = client.get_repository_content("demo", "models", "my-model", "main")
204
234
  for entry in content.entries:
205
235
  print(f"{entry.type}: {entry.name}")
236
+
237
+ # 删除仓库
238
+ client.delete_repository("demo", "models", "my-model")
206
239
  ```
207
240
 
208
241
  ## 🔐 加密功能
@@ -288,7 +321,7 @@ export MOHA_ENCRYPTION_PASSWORD="your-encryption-password"
288
321
 
289
322
  ## 🖥️ 命令行工具 (CLI)
290
323
 
291
- SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
324
+ SDK 提供了 `moha` 命令行工具,支持登录认证、仓库管理、分支管理、上传下载等操作。
292
325
 
293
326
  ### 基本用法
294
327
 
@@ -296,6 +329,75 @@ SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
296
329
  moha --help
297
330
  ```
298
331
 
332
+ ### 登录认证
333
+
334
+ ```bash
335
+ # 登录(交互式输入用户名和密码)
336
+ moha login
337
+
338
+ # 直接指定用户名和密码
339
+ moha login --username your-username --password your-password
340
+
341
+ # 查看当前登录状态
342
+ moha whoami
343
+
344
+ # 退出登录
345
+ moha logout
346
+ ```
347
+
348
+ 登录后,Token 会保存到 `~/.moha/token.json`,后续命令无需重复输入认证信息。
349
+
350
+ ### 仓库管理
351
+
352
+ ```bash
353
+ # 创建仓库
354
+ moha repo-create org/my-model \
355
+ --description "我的模型" \
356
+ --visibility internal \
357
+ --license apache-2.0 \
358
+ --tasks text-generation \
359
+ --frameworks transformers
360
+
361
+ # 创建数据集仓库
362
+ moha repo-create org/my-dataset \
363
+ --repo-type datasets \
364
+ --description "我的数据集" \
365
+ --visibility private
366
+
367
+ # 查看仓库信息
368
+ moha repo-info org/my-model
369
+
370
+ # 更新仓库信息
371
+ moha repo-update org/my-model \
372
+ --description "更新后的描述" \
373
+ --tags production
374
+
375
+ # 删除仓库(需要确认)
376
+ moha repo-delete org/my-model
377
+
378
+ # 跳过确认直接删除
379
+ moha repo-delete org/my-model -y
380
+ ```
381
+
382
+ ### 分支管理
383
+
384
+ ```bash
385
+ # 列出仓库的所有分支
386
+ moha branch-list org/my-model
387
+
388
+ # 创建分支(基于 main 分支)
389
+ moha branch-create org/my-model dev
390
+
391
+ # 创建分支(基于指定分支)
392
+ moha branch-create org/my-model feature --from dev
393
+
394
+ # 删除分支
395
+ moha branch-delete org/my-model dev
396
+
397
+ # 跳过确认直接删除
398
+ moha branch-delete org/my-model dev -y
399
+ ```
400
+
299
401
  ### 上传文件夹
300
402
 
301
403
  ```bash
@@ -389,16 +491,42 @@ moha download-file org/my-model model.safetensors \
389
491
  --password your-password
390
492
  ```
391
493
 
494
+ ### CLI 命令列表
495
+
496
+ | 命令 | 说明 |
497
+ |------|------|
498
+ | `moha login` | 登录并保存 Token |
499
+ | `moha logout` | 退出登录并删除 Token |
500
+ | `moha whoami` | 查看当前登录状态 |
501
+ | `moha repo-create` | 创建仓库 |
502
+ | `moha repo-update` | 更新仓库 |
503
+ | `moha repo-delete` | 删除仓库 |
504
+ | `moha repo-info` | 查看仓库信息 |
505
+ | `moha branch-create` | 创建分支 |
506
+ | `moha branch-delete` | 删除分支 |
507
+ | `moha branch-list` | 列出仓库的所有分支 |
508
+ | `moha upload` | 上传文件夹到仓库 |
509
+ | `moha upload-file` | 上传单个文件到仓库 |
510
+ | `moha download` | 下载整个仓库 |
511
+ | `moha download-file` | 从仓库下载单个文件 |
512
+
392
513
  ### CLI 参数说明
393
514
 
515
+ #### 通用参数
516
+
394
517
  | 参数 | 说明 | 适用命令 |
395
518
  |------|------|----------|
396
- | `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 所有 |
397
- | `--revision, -r` | 分支/标签/提交(默认:main) | 所有 |
519
+ | `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 大部分命令 |
398
520
  | `--base-url` | API 基础 URL(默认:环境变量 MOHA_ENDPOINT) | 所有 |
399
521
  | `--token` | 认证令牌 | 所有 |
400
522
  | `--username` | 用户名 | 所有 |
401
523
  | `--password` | 密码 | 所有 |
524
+
525
+ #### 上传/下载参数
526
+
527
+ | 参数 | 说明 | 适用命令 |
528
+ |------|------|----------|
529
+ | `--revision, -r` | 分支/标签/提交(默认:main) | upload, download |
402
530
  | `--message, -m` | 提交消息 | upload, upload-file |
403
531
  | `--ignore, -i` | 忽略模式(可多次使用) | upload, download |
404
532
  | `--include` | 包含模式(可多次使用) | download |
@@ -410,6 +538,28 @@ moha download-file org/my-model model.safetensors \
410
538
  | `--local-dir, -o` | 本地保存目录 | download, download-file |
411
539
  | `--quiet, -q` | 禁用进度条 | download, download-file |
412
540
 
541
+ #### 仓库管理参数
542
+
543
+ | 参数 | 说明 | 适用命令 |
544
+ |------|------|----------|
545
+ | `--description, -d` | 仓库描述 | repo-create, repo-update |
546
+ | `--visibility, -v` | 可见性:`public`、`internal`、`private` | repo-create, repo-update |
547
+ | `--license` | 许可证(可多次使用) | repo-create, repo-update |
548
+ | `--tasks` | 任务类型(可多次使用) | repo-create, repo-update |
549
+ | `--languages` | 语言(可多次使用) | repo-create, repo-update |
550
+ | `--tags` | 标签(可多次使用) | repo-create, repo-update |
551
+ | `--frameworks` | 框架(可多次使用) | repo-create, repo-update |
552
+ | `--base-model` | 基础模型(可多次使用) | repo-create, repo-update |
553
+ | `--relationship` | 与基础模型的关系 | repo-create, repo-update |
554
+ | `--yes, -y` | 跳过确认提示 | repo-delete, branch-delete |
555
+
556
+ #### 分支管理参数
557
+
558
+ | 参数 | 说明 | 适用命令 |
559
+ |------|------|----------|
560
+ | `--from, -f` | 基于哪个分支创建(默认:main) | branch-create |
561
+ | `--yes, -y` | 跳过确认提示 | branch-delete |
562
+
413
563
  ### 使用环境变量
414
564
 
415
565
  可以通过环境变量设置认证信息,避免每次输入:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "xiaoshiai-hub"
7
- version = "1.1.2"
7
+ version = "1.1.3"
8
8
  description = "Python SDK for XiaoShi AI Hub - Upload, download, and manage AI models and datasets with xpai-enc encryption support"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.7"
@@ -17,7 +17,7 @@ else:
17
17
  long_description = "Python SDK for XiaoShi AI Hub"
18
18
 
19
19
  # Read version from __init__.py
20
- version = "1.1.2"
20
+ version = "1.1.3"
21
21
  init_file = Path(__file__).parent / "xiaoshiai_hub" / "__init__.py"
22
22
  if init_file.exists():
23
23
  with open(init_file, "r", encoding="utf-8") as f: