xiaoshiai-hub 1.1.1__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.
- {xiaoshiai_hub-1.1.1/xiaoshiai_hub.egg-info → xiaoshiai_hub-1.1.3}/PKG-INFO +187 -11
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/README.md +186 -10
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/pyproject.toml +1 -1
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/setup.py +1 -1
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/__init__.py +7 -0
- xiaoshiai_hub-1.1.3/xiaoshiai_hub/cli.py +962 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/client.py +200 -6
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/envelope_crypto.py +78 -35
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/types.py +4 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/upload.py +88 -40
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3/xiaoshiai_hub.egg-info}/PKG-INFO +187 -11
- xiaoshiai_hub-1.1.1/xiaoshiai_hub/cli.py +0 -496
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/LICENSE +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/MANIFEST.in +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/requirements.txt +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/setup.cfg +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/auth.py +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/download.py +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub/exceptions.py +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/SOURCES.txt +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/dependency_links.txt +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/entry_points.txt +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/not-zip-safe +0 -0
- {xiaoshiai_hub-1.1.1 → xiaoshiai_hub-1.1.3}/xiaoshiai_hub.egg-info/requires.txt +0 -0
- {xiaoshiai_hub-1.1.1 → 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.
|
|
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,25 +244,65 @@ 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
|
-
|
|
254
|
-
for
|
|
255
|
-
print(f"分支: {
|
|
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
|
## 🔐 加密功能
|
|
264
297
|
|
|
265
|
-
SDK
|
|
298
|
+
SDK 提供了智能加密功能,支持 **AES** 和 **SM4** 两种加密算法对大型模型文件进行加密。
|
|
299
|
+
|
|
300
|
+
### 支持的加密算法
|
|
301
|
+
|
|
302
|
+
| 算法 | 说明 |
|
|
303
|
+
|------|------|
|
|
304
|
+
| `AES` | AES-256-CTR 模式,国际通用标准(默认) |
|
|
305
|
+
| `SM4` | SM4-CTR 模式,国密标准 |
|
|
266
306
|
|
|
267
307
|
### 自动加密规则
|
|
268
308
|
|
|
@@ -278,11 +318,21 @@ SDK 提供了智能加密功能,使用 AES-256-CTR 算法对大型模型文件
|
|
|
278
318
|
```python
|
|
279
319
|
from xiaoshiai_hub import upload_folder
|
|
280
320
|
|
|
281
|
-
#
|
|
321
|
+
# 上传文件夹,使用 AES 加密(默认)
|
|
282
322
|
result = upload_folder(
|
|
283
323
|
folder_path="./llama-7b",
|
|
284
324
|
repo_id="demo/llama-7b",
|
|
285
|
-
encryption_password="my-secure-password-123",
|
|
325
|
+
encryption_password="my-secure-password-123",
|
|
326
|
+
username="your-username",
|
|
327
|
+
password="your-password",
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
# 使用 SM4 国密算法加密
|
|
331
|
+
result = upload_folder(
|
|
332
|
+
folder_path="./llama-7b",
|
|
333
|
+
repo_id="demo/llama-7b",
|
|
334
|
+
encryption_password="my-secure-password-123",
|
|
335
|
+
algorithm="SM4", # 使用 SM4 加密
|
|
286
336
|
username="your-username",
|
|
287
337
|
password="your-password",
|
|
288
338
|
)
|
|
@@ -326,7 +376,7 @@ export MOHA_ENCRYPTION_PASSWORD="your-encryption-password"
|
|
|
326
376
|
|
|
327
377
|
## 🖥️ 命令行工具 (CLI)
|
|
328
378
|
|
|
329
|
-
SDK 提供了 `moha`
|
|
379
|
+
SDK 提供了 `moha` 命令行工具,支持登录认证、仓库管理、分支管理、上传下载等操作。
|
|
330
380
|
|
|
331
381
|
### 基本用法
|
|
332
382
|
|
|
@@ -334,6 +384,75 @@ SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
|
|
|
334
384
|
moha --help
|
|
335
385
|
```
|
|
336
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
|
+
|
|
337
456
|
### 上传文件夹
|
|
338
457
|
|
|
339
458
|
```bash
|
|
@@ -353,10 +472,18 @@ moha upload ./my_model org/my-model \
|
|
|
353
472
|
--username your-username \
|
|
354
473
|
--password your-password
|
|
355
474
|
|
|
356
|
-
#
|
|
475
|
+
# 启用加密(默认使用 AES)
|
|
476
|
+
moha upload ./my_model org/my-model \
|
|
477
|
+
--encrypt \
|
|
478
|
+
--encryption-password "your-secret" \
|
|
479
|
+
--username your-username \
|
|
480
|
+
--password your-password
|
|
481
|
+
|
|
482
|
+
# 使用 SM4 国密算法加密
|
|
357
483
|
moha upload ./my_model org/my-model \
|
|
358
484
|
--encrypt \
|
|
359
485
|
--encryption-password "your-secret" \
|
|
486
|
+
--algorithm SM4 \
|
|
360
487
|
--username your-username \
|
|
361
488
|
--password your-password
|
|
362
489
|
```
|
|
@@ -419,26 +546,75 @@ moha download-file org/my-model model.safetensors \
|
|
|
419
546
|
--password your-password
|
|
420
547
|
```
|
|
421
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
|
+
|
|
422
568
|
### CLI 参数说明
|
|
423
569
|
|
|
570
|
+
#### 通用参数
|
|
571
|
+
|
|
424
572
|
| 参数 | 说明 | 适用命令 |
|
|
425
573
|
|------|------|----------|
|
|
426
|
-
| `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) |
|
|
427
|
-
| `--revision, -r` | 分支/标签/提交(默认:main) | 所有 |
|
|
574
|
+
| `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 大部分命令 |
|
|
428
575
|
| `--base-url` | API 基础 URL(默认:环境变量 MOHA_ENDPOINT) | 所有 |
|
|
429
576
|
| `--token` | 认证令牌 | 所有 |
|
|
430
577
|
| `--username` | 用户名 | 所有 |
|
|
431
578
|
| `--password` | 密码 | 所有 |
|
|
579
|
+
|
|
580
|
+
#### 上传/下载参数
|
|
581
|
+
|
|
582
|
+
| 参数 | 说明 | 适用命令 |
|
|
583
|
+
|------|------|----------|
|
|
584
|
+
| `--revision, -r` | 分支/标签/提交(默认:main) | upload, download |
|
|
432
585
|
| `--message, -m` | 提交消息 | upload, upload-file |
|
|
433
586
|
| `--ignore, -i` | 忽略模式(可多次使用) | upload, download |
|
|
434
587
|
| `--include` | 包含模式(可多次使用) | download |
|
|
435
588
|
| `--encrypt, -e` | 启用加密 | upload, upload-file |
|
|
436
589
|
| `--encryption-password` | 加密密码 | upload, upload-file |
|
|
590
|
+
| `--algorithm, -a` | 加密算法:`AES` 或 `SM4`(默认:AES) | upload, upload-file |
|
|
437
591
|
| `--path-in-repo, -p` | 仓库中的文件路径 | upload-file |
|
|
438
592
|
| `--temp-dir` | 加密临时目录 | upload |
|
|
439
593
|
| `--local-dir, -o` | 本地保存目录 | download, download-file |
|
|
440
594
|
| `--quiet, -q` | 禁用进度条 | download, download-file |
|
|
441
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
|
+
|
|
442
618
|
### 使用环境变量
|
|
443
619
|
|
|
444
620
|
可以通过环境变量设置认证信息,避免每次输入:
|
|
@@ -189,25 +189,65 @@ 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
|
-
|
|
199
|
-
for
|
|
200
|
-
print(f"分支: {
|
|
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
|
## 🔐 加密功能
|
|
209
242
|
|
|
210
|
-
SDK
|
|
243
|
+
SDK 提供了智能加密功能,支持 **AES** 和 **SM4** 两种加密算法对大型模型文件进行加密。
|
|
244
|
+
|
|
245
|
+
### 支持的加密算法
|
|
246
|
+
|
|
247
|
+
| 算法 | 说明 |
|
|
248
|
+
|------|------|
|
|
249
|
+
| `AES` | AES-256-CTR 模式,国际通用标准(默认) |
|
|
250
|
+
| `SM4` | SM4-CTR 模式,国密标准 |
|
|
211
251
|
|
|
212
252
|
### 自动加密规则
|
|
213
253
|
|
|
@@ -223,11 +263,21 @@ SDK 提供了智能加密功能,使用 AES-256-CTR 算法对大型模型文件
|
|
|
223
263
|
```python
|
|
224
264
|
from xiaoshiai_hub import upload_folder
|
|
225
265
|
|
|
226
|
-
#
|
|
266
|
+
# 上传文件夹,使用 AES 加密(默认)
|
|
227
267
|
result = upload_folder(
|
|
228
268
|
folder_path="./llama-7b",
|
|
229
269
|
repo_id="demo/llama-7b",
|
|
230
|
-
encryption_password="my-secure-password-123",
|
|
270
|
+
encryption_password="my-secure-password-123",
|
|
271
|
+
username="your-username",
|
|
272
|
+
password="your-password",
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
# 使用 SM4 国密算法加密
|
|
276
|
+
result = upload_folder(
|
|
277
|
+
folder_path="./llama-7b",
|
|
278
|
+
repo_id="demo/llama-7b",
|
|
279
|
+
encryption_password="my-secure-password-123",
|
|
280
|
+
algorithm="SM4", # 使用 SM4 加密
|
|
231
281
|
username="your-username",
|
|
232
282
|
password="your-password",
|
|
233
283
|
)
|
|
@@ -271,7 +321,7 @@ export MOHA_ENCRYPTION_PASSWORD="your-encryption-password"
|
|
|
271
321
|
|
|
272
322
|
## 🖥️ 命令行工具 (CLI)
|
|
273
323
|
|
|
274
|
-
SDK 提供了 `moha`
|
|
324
|
+
SDK 提供了 `moha` 命令行工具,支持登录认证、仓库管理、分支管理、上传下载等操作。
|
|
275
325
|
|
|
276
326
|
### 基本用法
|
|
277
327
|
|
|
@@ -279,6 +329,75 @@ SDK 提供了 `moha` 命令行工具,支持常见的上传下载操作。
|
|
|
279
329
|
moha --help
|
|
280
330
|
```
|
|
281
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
|
+
|
|
282
401
|
### 上传文件夹
|
|
283
402
|
|
|
284
403
|
```bash
|
|
@@ -298,10 +417,18 @@ moha upload ./my_model org/my-model \
|
|
|
298
417
|
--username your-username \
|
|
299
418
|
--password your-password
|
|
300
419
|
|
|
301
|
-
#
|
|
420
|
+
# 启用加密(默认使用 AES)
|
|
421
|
+
moha upload ./my_model org/my-model \
|
|
422
|
+
--encrypt \
|
|
423
|
+
--encryption-password "your-secret" \
|
|
424
|
+
--username your-username \
|
|
425
|
+
--password your-password
|
|
426
|
+
|
|
427
|
+
# 使用 SM4 国密算法加密
|
|
302
428
|
moha upload ./my_model org/my-model \
|
|
303
429
|
--encrypt \
|
|
304
430
|
--encryption-password "your-secret" \
|
|
431
|
+
--algorithm SM4 \
|
|
305
432
|
--username your-username \
|
|
306
433
|
--password your-password
|
|
307
434
|
```
|
|
@@ -364,26 +491,75 @@ moha download-file org/my-model model.safetensors \
|
|
|
364
491
|
--password your-password
|
|
365
492
|
```
|
|
366
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
|
+
|
|
367
513
|
### CLI 参数说明
|
|
368
514
|
|
|
515
|
+
#### 通用参数
|
|
516
|
+
|
|
369
517
|
| 参数 | 说明 | 适用命令 |
|
|
370
518
|
|------|------|----------|
|
|
371
|
-
| `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) |
|
|
372
|
-
| `--revision, -r` | 分支/标签/提交(默认:main) | 所有 |
|
|
519
|
+
| `--repo-type, -t` | 仓库类型:`models` 或 `datasets`(默认:models) | 大部分命令 |
|
|
373
520
|
| `--base-url` | API 基础 URL(默认:环境变量 MOHA_ENDPOINT) | 所有 |
|
|
374
521
|
| `--token` | 认证令牌 | 所有 |
|
|
375
522
|
| `--username` | 用户名 | 所有 |
|
|
376
523
|
| `--password` | 密码 | 所有 |
|
|
524
|
+
|
|
525
|
+
#### 上传/下载参数
|
|
526
|
+
|
|
527
|
+
| 参数 | 说明 | 适用命令 |
|
|
528
|
+
|------|------|----------|
|
|
529
|
+
| `--revision, -r` | 分支/标签/提交(默认:main) | upload, download |
|
|
377
530
|
| `--message, -m` | 提交消息 | upload, upload-file |
|
|
378
531
|
| `--ignore, -i` | 忽略模式(可多次使用) | upload, download |
|
|
379
532
|
| `--include` | 包含模式(可多次使用) | download |
|
|
380
533
|
| `--encrypt, -e` | 启用加密 | upload, upload-file |
|
|
381
534
|
| `--encryption-password` | 加密密码 | upload, upload-file |
|
|
535
|
+
| `--algorithm, -a` | 加密算法:`AES` 或 `SM4`(默认:AES) | upload, upload-file |
|
|
382
536
|
| `--path-in-repo, -p` | 仓库中的文件路径 | upload-file |
|
|
383
537
|
| `--temp-dir` | 加密临时目录 | upload |
|
|
384
538
|
| `--local-dir, -o` | 本地保存目录 | download, download-file |
|
|
385
539
|
| `--quiet, -q` | 禁用进度条 | download, download-file |
|
|
386
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
|
+
|
|
387
563
|
### 使用环境变量
|
|
388
564
|
|
|
389
565
|
可以通过环境变量设置认证信息,避免每次输入:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "xiaoshiai-hub"
|
|
7
|
-
version = "1.1.
|
|
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.
|
|
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:
|
|
@@ -28,6 +28,10 @@ from .auth import (
|
|
|
28
28
|
load_token,
|
|
29
29
|
delete_token,
|
|
30
30
|
)
|
|
31
|
+
from .envelope_crypto import (
|
|
32
|
+
Algorithm,
|
|
33
|
+
envelope_enc_file,
|
|
34
|
+
)
|
|
31
35
|
|
|
32
36
|
# Upload functionality (requires GitPython)
|
|
33
37
|
try:
|
|
@@ -58,6 +62,9 @@ __all__ = [
|
|
|
58
62
|
"save_token",
|
|
59
63
|
"load_token",
|
|
60
64
|
"delete_token",
|
|
65
|
+
# Encryption
|
|
66
|
+
"Algorithm",
|
|
67
|
+
"envelope_enc_file",
|
|
61
68
|
# Exceptions
|
|
62
69
|
"HubException",
|
|
63
70
|
"RepositoryNotFoundError",
|