smartrack-sdk 1.0.0__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 (37) hide show
  1. smartrack_sdk-1.0.0/PKG-INFO +557 -0
  2. smartrack_sdk-1.0.0/README.md +502 -0
  3. smartrack_sdk-1.0.0/examples/__init__.py +7 -0
  4. smartrack_sdk-1.0.0/examples/basic_usage.py +360 -0
  5. smartrack_sdk-1.0.0/examples/callback_server.py +435 -0
  6. smartrack_sdk-1.0.0/examples/test_client.py +303 -0
  7. smartrack_sdk-1.0.0/setup.cfg +4 -0
  8. smartrack_sdk-1.0.0/setup.py +78 -0
  9. smartrack_sdk-1.0.0/smartrack_sdk/__init__.py +129 -0
  10. smartrack_sdk-1.0.0/smartrack_sdk/callback/__init__.py +19 -0
  11. smartrack_sdk-1.0.0/smartrack_sdk/callback/fastapi_handler.py +151 -0
  12. smartrack_sdk-1.0.0/smartrack_sdk/callback/flask_handler.py +137 -0
  13. smartrack_sdk-1.0.0/smartrack_sdk/callback/handler.py +220 -0
  14. smartrack_sdk-1.0.0/smartrack_sdk/callback/service.py +14 -0
  15. smartrack_sdk-1.0.0/smartrack_sdk/client/__init__.py +13 -0
  16. smartrack_sdk-1.0.0/smartrack_sdk/client/smart_rack_client.py +523 -0
  17. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/__init__.py +21 -0
  18. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/api.py +29 -0
  19. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/base.py +25 -0
  20. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/configuration.py +28 -0
  21. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/network.py +50 -0
  22. smartrack_sdk-1.0.0/smartrack_sdk/exceptions/validation.py +28 -0
  23. smartrack_sdk-1.0.0/smartrack_sdk/models/__init__.py +85 -0
  24. smartrack_sdk-1.0.0/smartrack_sdk/models/callback.py +184 -0
  25. smartrack_sdk-1.0.0/smartrack_sdk/models/enums.py +203 -0
  26. smartrack_sdk-1.0.0/smartrack_sdk/models/requests.py +291 -0
  27. smartrack_sdk-1.0.0/smartrack_sdk/models/responses.py +209 -0
  28. smartrack_sdk-1.0.0/smartrack_sdk/tests/__init__.py +7 -0
  29. smartrack_sdk-1.0.0/smartrack_sdk/tests/test_callback.py +295 -0
  30. smartrack_sdk-1.0.0/smartrack_sdk/tests/test_client.py +264 -0
  31. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/PKG-INFO +557 -0
  32. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/SOURCES.txt +35 -0
  33. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/dependency_links.txt +1 -0
  34. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/entry_points.txt +2 -0
  35. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/not-zip-safe +1 -0
  36. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/requires.txt +19 -0
  37. smartrack_sdk-1.0.0/smartrack_sdk.egg-info/top_level.txt +2 -0
@@ -0,0 +1,557 @@
1
+ Metadata-Version: 2.4
2
+ Name: smartrack-sdk
3
+ Version: 1.0.0
4
+ Summary: 广东浩鲸科技智能料架系统Python SDK
5
+ Home-page: https://www.gdhjtech.com/
6
+ Author: SmartRack SDK Team
7
+ Author-email: support@hjwms.com
8
+ Project-URL: Bug Reports, https://www.gdhjtech.com/
9
+ Project-URL: Source, https://github.com/smartrack/smartrack-sdk-python
10
+ Project-URL: Documentation, https://s.apifox.cn/dd344f34-40cf-4049-a2a5-7ed52a34f398
11
+ Keywords: smartrack 广东浩鲸科技 wms仓储管理 智能料架 api sdk
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.6
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Topic :: Internet :: WWW/HTTP
25
+ Requires-Python: >=3.6
26
+ Description-Content-Type: text/markdown
27
+ Requires-Dist: requests>=2.25.1
28
+ Requires-Dist: urllib3>=1.26.0
29
+ Requires-Dist: certifi>=2021.5.30
30
+ Requires-Dist: python-dateutil>=2.8.2
31
+ Requires-Dist: jsonschema>=3.2.0
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=6.0; extra == "dev"
34
+ Requires-Dist: pytest-cov>=2.0; extra == "dev"
35
+ Requires-Dist: black>=21.0; extra == "dev"
36
+ Requires-Dist: flake8>=3.8; extra == "dev"
37
+ Requires-Dist: mypy>=0.800; extra == "dev"
38
+ Provides-Extra: flask
39
+ Requires-Dist: Flask>=2.0; extra == "flask"
40
+ Provides-Extra: fastapi
41
+ Requires-Dist: fastapi>=0.68; extra == "fastapi"
42
+ Requires-Dist: uvicorn>=0.15; extra == "fastapi"
43
+ Dynamic: author
44
+ Dynamic: author-email
45
+ Dynamic: classifier
46
+ Dynamic: description
47
+ Dynamic: description-content-type
48
+ Dynamic: home-page
49
+ Dynamic: keywords
50
+ Dynamic: project-url
51
+ Dynamic: provides-extra
52
+ Dynamic: requires-dist
53
+ Dynamic: requires-python
54
+ Dynamic: summary
55
+
56
+ # SmartRack SDK for Python
57
+
58
+ SmartRack智能料架系统Python SDK,提供与智能料架系统Web API的集成接口。
59
+
60
+ ## 特性
61
+
62
+ - ✅ 完整的API接口支持
63
+ - ✅ 强类型模型(dataclasses)
64
+ - ✅ 完善的异常处理
65
+ - ✅ 自动序列化/反序列化
66
+ - ✅ 认证支持
67
+ - ✅ 超时控制
68
+ - ✅ WebAPI回调处理
69
+ - ✅ Flask/FastAPI集成支持
70
+ - ✅ 详细日志记录
71
+ - ✅ 单元测试覆盖
72
+
73
+ ## 快速开始
74
+
75
+ ### 安装
76
+
77
+ ```bash
78
+ pip install smartrack-sdk
79
+ ```
80
+
81
+ 或从源码安装:
82
+
83
+ ```bash
84
+ git clone https://github.com/smartrack/smartrack-sdk-python.git
85
+ cd smartrack-sdk-python
86
+ pip install -e .
87
+ ```
88
+
89
+ ### 基本使用
90
+
91
+ ```python
92
+ import logging
93
+ from smartrack_sdk import SmartRackClient
94
+ from smartrack_sdk.models.requests import StockInRequest
95
+ from smartrack_sdk.models.enums import LedColors
96
+
97
+ # 配置日志
98
+ logging.basicConfig(level=logging.INFO)
99
+
100
+ # 创建客户端
101
+ with SmartRackClient("https://your-smartrack-api.com") as client:
102
+ # 创建入库请求
103
+ request = StockInRequest("test123", "MES001")
104
+ request.set_sheet_id("SI-20240101001")
105
+ request.set_rack_id("A001")
106
+ request.set_grn("PRODUCT001")
107
+ request.set_led_color(LedColors.GREEN)
108
+ request.set_blink(True)
109
+
110
+ # 发送请求
111
+ response = client.stock_in_request(request)
112
+ print(f"入库请求结果: Code={response.code}, Message={response.message}")
113
+ ```
114
+
115
+ ## 功能模块
116
+
117
+ ### 1. 入库管理
118
+
119
+ #### 入库请求
120
+ ```python
121
+ from smartrack_sdk.models.requests import StockInRequest
122
+
123
+ request = StockInRequest("test", "MES")
124
+ request.set_sheet_id("入库单号")
125
+ request.set_rack_id("料架编号")
126
+ request.set_grn("产品朔源码")
127
+ request.set_led_color(LedColors.GREEN)
128
+ request.set_blink(True)
129
+
130
+ response = client.stock_in_request(request)
131
+ print(f"入库请求结果: {response.message}")
132
+ ```
133
+
134
+ #### 入库完成
135
+ ```python
136
+ from smartrack_sdk.models.requests import StockInFinishRequest
137
+
138
+ request = StockInFinishRequest("test", "MES")
139
+ request.set_sheet_id("入库单号")
140
+
141
+ response = client.stock_in_finish(request)
142
+ print(f"入库完成结果: {response.message}")
143
+ ```
144
+
145
+ ### 2. 出库管理
146
+
147
+ #### 出库请求
148
+ ```python
149
+ from smartrack_sdk.models.requests import StockOutRequest
150
+
151
+ request = StockOutRequest("test", "MES")
152
+ request.set_sheet_id("出库单号")
153
+ request.add_grn("朔源码1")
154
+ request.add_grn("朔源码2")
155
+ request.set_led_color(LedColors.RED)
156
+ request.set_blink(True)
157
+
158
+ response = client.stock_out_request(request)
159
+ for item in response.result_data:
160
+ print(f"储位: {item.cell}, GRN: {item.grn}")
161
+ ```
162
+
163
+ #### 单号出库请求
164
+ ```python
165
+ from smartrack_sdk.models.requests import StockOutSheetRequest
166
+
167
+ request = StockOutSheetRequest("test", "MES")
168
+ request.set_sheet_id("工单号/领料单号")
169
+ request.add_grn("朔源码1")
170
+ request.add_grn("朔源码2")
171
+
172
+ response = client.stock_out_sheet_request(request)
173
+ print(f"亮灯颜色: {response.led_color}")
174
+ print(f"颜色名称: {response.color_name}")
175
+ ```
176
+
177
+ #### 单号出库完成
178
+ ```python
179
+ from smartrack_sdk.models.requests import StockOutSheetFinishRequest
180
+
181
+ request = StockOutSheetFinishRequest("test", "MES")
182
+ request.set_sheet_id("工单号/领料单号")
183
+
184
+ response = client.stock_out_sheet_finish(request)
185
+ print(f"单号出库完成结果: {response.message}")
186
+ ```
187
+
188
+ #### 单号出库取消
189
+ ```python
190
+ from smartrack_sdk.models.requests import StockOutSheetCancelRequest
191
+
192
+ request = StockOutSheetCancelRequest("test", "MES")
193
+ request.set_sheet_id("工单号/领料单号")
194
+
195
+ response = client.stock_out_sheet_cancel(request)
196
+ ```
197
+
198
+ ### 3. 库存查询
199
+
200
+ #### 查询库存数据
201
+ ```python
202
+ response = client.get_stock_data(
203
+ grn="PRODUCT001", # GRN
204
+ rack_id="A001", # 料架号
205
+ cell_id="A0010001", # 储位号
206
+ led_color=LedColors.GREEN, # LED颜色
207
+ is_blink=False, # 是否闪烁
208
+ skip_count=0, # 跳过数量
209
+ max_result_count=50 # 最大结果数量
210
+ )
211
+
212
+ print(f"查询到 {response.total} 条库存记录")
213
+ for stock in response.result_data:
214
+ print(f"料架: {stock.rack_id}, 储位: {stock.cell_id}, GRN: {stock.grn}")
215
+ ```
216
+
217
+ #### 通过GRN列表查询库存
218
+ ```python
219
+ from smartrack_sdk.models.requests import GetStockByGRNListRequest
220
+
221
+ request = GetStockByGRNListRequest("test", "MES")
222
+ request.add_grn("GRN001")
223
+ request.add_grn("GRN002")
224
+ request.add_grn("GRN003")
225
+
226
+ response = client.get_stock_by_grn_list(request)
227
+ print(f"查询到 {response.total} 条库存记录")
228
+ ```
229
+
230
+ ### 4. 料架管理
231
+
232
+ #### 料架测试
233
+ ```python
234
+ from smartrack_sdk.models.requests import RackTestRequest
235
+ from smartrack_sdk.models.enums import RackTestMode
236
+
237
+ request = RackTestRequest("test", "MES")
238
+ request.set_rack_id("A001")
239
+ request.set_test_mode(RackTestMode.RGB_TEST)
240
+ request.set_blink(False)
241
+
242
+ response = client.rack_test(request)
243
+ print(f"料架测试结果: {response.message}")
244
+ ```
245
+
246
+ #### 重置储位状态
247
+ ```python
248
+ from smartrack_sdk.models.requests import ResetCellRequest
249
+
250
+ request = ResetCellRequest("test", "MES")
251
+ request.add_cell("A0010001")
252
+ request.add_cell("A0010002")
253
+ request.add_cell("A0010003")
254
+
255
+ response = client.reset_cell(request)
256
+ print(f"重置储位状态结果: {response.message}")
257
+ ```
258
+
259
+ #### 清除错误
260
+ ```python
261
+ from smartrack_sdk.models.requests import ClearErrorRequest
262
+
263
+ request = ClearErrorRequest("test", "MES")
264
+ request.set_cell_id("A0010001") # 或者使用 set_rack_id("A001")
265
+
266
+ response = client.clear_error(request)
267
+ for item in response.result_data:
268
+ status_text = "空" if item.is_empty() else "非空"
269
+ print(f"储位: {item.cell}, GRN: {item.grn}, 状态: {status_text}")
270
+ ```
271
+
272
+ ### 5. WebAPI回调处理
273
+
274
+ #### 使用Flask(推荐)
275
+ ```python
276
+ from smartrack_sdk.callback import FlaskCellEventHandler, CellEventCallbackService
277
+ from flask import Flask
278
+
279
+ # 创建Flask应用
280
+ app = Flask(__name__)
281
+
282
+ # 创建回调处理器
283
+ handler = CellEventCallbackService()
284
+ flask_handler = FlaskCellEventHandler(app, handler)
285
+
286
+ # 启动服务器
287
+ if __name__ == "__main__":
288
+ app.run(host="0.0.0.0", port=8080)
289
+ ```
290
+
291
+ #### 使用FastAPI
292
+ ```python
293
+ from smartrack_sdk.callback import FastAPICellEventHandler
294
+ import uvicorn
295
+
296
+ # 创建FastAPI应用
297
+ app = FastAPICellEventHandler()
298
+ uvicorn.run(app, host="0.0.0.0", port=8080)
299
+ ```
300
+
301
+ #### 自定义回调处理器
302
+ ```python
303
+ from smartrack_sdk.callback import CellEventHandler
304
+ from smartrack_sdk.models.callback import CellEventHandleRequest, CellEventHandleResponse
305
+
306
+ class CustomCellEventHandler(CellEventHandler):
307
+ def handle(self, request: CellEventHandleRequest) -> CellEventHandleResponse:
308
+ # 自定义处理逻辑
309
+ print(f"收到储位事件回调: {request.user_id}")
310
+
311
+ # 处理事件数据
312
+ for event_data in request.data:
313
+ print(f"储位: {event_data.cell_id}, GRN: {event_data.grn}")
314
+
315
+ # 返回成功响应
316
+ return CellEventHandleResponse.success(request.session_id)
317
+
318
+ # 使用自定义处理器
319
+ handler = CustomCellEventHandler()
320
+ ```
321
+
322
+ ## 枚举类型
323
+
324
+ ### LedColors (LED灯颜色)
325
+ ```python
326
+ from smartrack_sdk.models.enums import LedColors
327
+
328
+ # 颜色值
329
+ LedColors.OFF # 0 - 关闭
330
+ LedColors.RED # 1 - 红色
331
+ LedColors.GREEN # 2 - 绿色
332
+ LedColors.YELLOW # 3 - 黄色
333
+ LedColors.BLUE # 4 - 蓝色
334
+ LedColors.MAGENTA # 5 - 洋红色
335
+ LedColors.CYAN # 6 - 青色
336
+ LedColors.WHITE # 7 - 白色
337
+ LedColors.BLINK # 128 - 闪烁
338
+ LedColors.RED_BLINK # 129 - 红色闪烁
339
+ LedColors.GREEN_BLINK # 130 - 绿色闪烁
340
+ LedColors.YELLOW_BLINK # 131 - 黄色闪烁
341
+ LedColors.BLUE_BLINK # 132 - 蓝色闪烁
342
+ LedColors.MAGENTA_BLINK # 133 - 洋红色闪烁
343
+ LedColors.CYAN_BLINK # 134 - 青色闪烁
344
+ LedColors.WHITE_BLINK # 135 - 白色闪烁
345
+ ```
346
+
347
+ ### CellStatus (储位状态)
348
+ ```python
349
+ from smartrack_sdk.models.enums import CellStatus
350
+
351
+ CellStatus.EMPTY # 0 - 空
352
+ CellStatus.HOLD # 1 - 非空
353
+ CellStatus.LOCKED # 2 - 预定状态
354
+ CellStatus.TAKE_OUT # 3 - 已取料
355
+ CellStatus.CHECKED # 4 - 已复核
356
+ CellStatus.MOVE # 5 - 移库已取出
357
+ CellStatus.ILLEGAL_TAKE_OUT # -3 - 非法取料
358
+ CellStatus.ILLEGAL_TAKE_IN # -2 - 非法上料
359
+ CellStatus.DISABLED # -1 - 禁用储位
360
+ ```
361
+
362
+ ### RackTestMode (料架测试模式)
363
+ ```python
364
+ from smartrack_sdk.models.enums import RackTestMode
365
+
366
+ RackTestMode.ALL_OFF # 0 - 全部灭灯
367
+ RackTestMode.RGB_TEST # 1 - RGB测试
368
+ RackTestMode.LIGHT_SEQUENCE_TEST # 2 - 灯序测试
369
+ RackTestMode.WARNING_LIGHT_TEST # 3 - 警示灯测试
370
+ RackTestMode.EMPTY_LIGHT # 4 - 空位亮灯
371
+ RackTestMode.NON_EMPTY_LIGHT # 5 - 非空亮灯
372
+ ```
373
+
374
+ ## 异常处理
375
+
376
+ ### SmartRackException
377
+ 所有SDK异常的基类。
378
+
379
+ ### SmartRackApiException
380
+ API调用返回错误时抛出:
381
+ ```python
382
+ try:
383
+ response = client.stock_in_request(request)
384
+ except SmartRackApiException as e:
385
+ print(f"API错误: {e.message}")
386
+ print(f"错误代码: {e.api_code}")
387
+ print(f"会话ID: {e.session_id}")
388
+ ```
389
+
390
+ ### SmartRackNetworkException
391
+ 网络相关错误时抛出:
392
+ ```python
393
+ try:
394
+ response = client.stock_in_request(request)
395
+ except SmartRackNetworkException as e:
396
+ print(f"网络错误: {e.message}")
397
+ print(f"HTTP状态码: {e.status_code}")
398
+
399
+ if e.is_timeout:
400
+ print("请求超时")
401
+ elif e.is_connection_error:
402
+ print("连接错误")
403
+ ```
404
+
405
+ ### SmartRackConfigurationException
406
+ 配置错误时抛出:
407
+ ```python
408
+ try:
409
+ client = SmartRackClient("") # 空的URL
410
+ except SmartRackConfigurationException as e:
411
+ print(f"配置错误: {e.message}")
412
+ ```
413
+
414
+ ## 高级配置
415
+
416
+ ### 自定义HTTP客户端
417
+ ```python
418
+ import requests
419
+
420
+ # 创建自定义session
421
+ session = requests.Session()
422
+ session.timeout = 60 # 60秒超时
423
+ session.verify = False # 跳过SSL验证
424
+
425
+ # 使用自定义session创建客户端
426
+ client = SmartRackClient("https://api.smartrack.com", timeout=60)
427
+ ```
428
+
429
+ ### 设置认证Token
430
+ ```python
431
+ client = SmartRackClient("https://api.smartrack.com")
432
+ client.set_auth_token("your-auth-token")
433
+ ```
434
+
435
+ ### 日志配置
436
+ ```python
437
+ import logging
438
+
439
+ # 配置详细日志
440
+ logging.basicConfig(
441
+ level=logging.DEBUG,
442
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
443
+ )
444
+
445
+ # SDK会自动使用配置的logger
446
+ ```
447
+
448
+ ### 使用上下文管理器
449
+ ```python
450
+ with SmartRackClient("https://api.smartrack.com") as client:
451
+ # 使用client...
452
+ response = client.stock_in_request(request)
453
+ # 客户端会自动关闭
454
+ ```
455
+
456
+ ## 测试
457
+
458
+ ### 运行基本示例
459
+ ```bash
460
+ python examples/basic_usage.py
461
+ ```
462
+
463
+ ### 运行测试客户端
464
+ ```bash
465
+ # 测试所有API
466
+ python examples/test_client.py
467
+
468
+ # 测试单个API
469
+ python examples/test_client.py stock_in
470
+ python examples/test_client.py rack_test
471
+ python examples/test_client.py clear_error
472
+ ```
473
+
474
+ ### 启动回调服务器
475
+ ```bash
476
+ # 使用Flask启动WebAPI回调服务器
477
+ python examples/callback_server.py --server
478
+
479
+ # 查看手动设置说明
480
+ python examples/callback_server.py --manual
481
+ ```
482
+
483
+ ### 运行单元测试
484
+ ```bash
485
+ python -m pytest smartrack_sdk/tests/
486
+ ```
487
+
488
+ ## 项目结构
489
+
490
+ ```
491
+ smartrack-sdk-python/
492
+ ├── smartrack_sdk/ # 主包
493
+ │ ├── __init__.py
494
+ │ ├── client/ # 客户端
495
+ │ │ ├── __init__.py
496
+ │ │ └── smart_rack_client.py
497
+ │ ├── models/ # 数据模型
498
+ │ │ ├── __init__.py
499
+ │ │ ├── enums.py # 枚举定义
500
+ │ │ ├── requests.py # 请求模型
501
+ │ │ ├── responses.py # 响应模型
502
+ │ │ └── callback.py # 回调模型
503
+ │ ├── exceptions/ # 异常类
504
+ │ │ ├── __init__.py
505
+ │ │ ├── base.py # 基础异常
506
+ │ │ ├── api.py # API异常
507
+ │ │ ├── network.py # 网络异常
508
+ │ │ ├── configuration.py # 配置异常
509
+ │ │ └── validation.py # 验证异常
510
+ │ └── callback/ # 回调处理
511
+ │ ├── __init__.py
512
+ │ ├── handler.py # 回调处理器
513
+ │ ├── service.py # 默认回调服务
514
+ │ ├── flask_handler.py # Flask处理器
515
+ │ └── fastapi_handler.py # FastAPI处理器
516
+ ├── examples/ # 使用示例
517
+ │ ├── basic_usage.py # 基本使用示例
518
+ │ ├── callback_server.py # 回调服务器示例
519
+ │ └── test_client.py # 测试客户端
520
+ ├── smartrack_sdk/tests/ # 单元测试
521
+ ├── setup.py # 安装配置
522
+ ├── requirements.txt # 依赖文件
523
+ └── README.md # 文档
524
+ ```
525
+
526
+ ## 依赖项
527
+
528
+ ### 核心依赖
529
+ - `requests` >= 2.25.1 - HTTP客户端
530
+ - `urllib3` >= 1.26.0 - URL处理
531
+ - `python-dateutil` >= 2.8.2 - 日期处理
532
+
533
+ ### 可选依赖
534
+ - `Flask` >= 2.0.0 - Web框架(用于回调处理)
535
+ - `FastAPI` >= 0.68 - Web框架(用于回调处理)
536
+ - `uvicorn` >= 0.15 - ASGI服务器(用于FastAPI)
537
+
538
+ ## 开发依赖
539
+ - `pytest` >= 6.0 - 测试框架
540
+ - `pytest-cov` >= 2.0 - 测试覆盖率
541
+ - `black` >= 21.0 - 代码格式化
542
+ - `flake8` >= 3.8 - 代码检查
543
+ - `mypy` >= 0.800 - 类型检查
544
+
545
+ ## 许可证
546
+
547
+ 本项目基于MIT许可证开源。
548
+
549
+ ## 支持
550
+
551
+ 如有问题或建议,请提交Issue或联系开发团队。
552
+
553
+ ---
554
+
555
+ **SmartRack SDK Team**
556
+ 版本: 1.0.0
557
+ 最后更新: 2024年11月