bkflow-sdk 0.0.42__py2.py3-none-any.whl
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.
Potentially problematic release.
This version of bkflow-sdk might be problematic. Click here for more details.
- bkflow/__init__.py +11 -0
- bkflow/client/__init__.py +10 -0
- bkflow/client/apis/__init__.py +10 -0
- bkflow/client/apis/bkflow.py +348 -0
- bkflow/client/base.py +124 -0
- bkflow/client/core.py +289 -0
- bkflow/common/__init__.py +10 -0
- bkflow/common/decorators.py +107 -0
- bkflow/common/exceptions.py +46 -0
- bkflow/common/loader.py +98 -0
- bkflow/common/validator.py +96 -0
- bkflow/common/views.py +50 -0
- bkflow/config/__init__.py +10 -0
- bkflow/config/default.py +93 -0
- bkflow/interface/__init__.py +10 -0
- bkflow/interface/apps.py +18 -0
- bkflow/interface/serializers.py +263 -0
- bkflow/interface/signals.py +25 -0
- bkflow/interface/urls.py +35 -0
- bkflow/interface/utils.py +46 -0
- bkflow/interface/views.py +732 -0
- bkflow_sdk-0.0.42.dist-info/METADATA +321 -0
- bkflow_sdk-0.0.42.dist-info/RECORD +25 -0
- bkflow_sdk-0.0.42.dist-info/WHEEL +5 -0
- bkflow_sdk-0.0.42.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bkflow-sdk
|
|
3
|
+
Version: 0.0.42
|
|
4
|
+
Summary: A Django app to provide bkflow interface api.
|
|
5
|
+
Author-email: blueking <blueking@tencent.com>
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: Django >=3.2, <6
|
|
9
|
+
Requires-Dist: djangorestframework >= 3.14, <4
|
|
10
|
+
Requires-Dist: drf-yasg >= 1.20.0, <2
|
|
11
|
+
Requires-Dist: requests >= 2.28.2, <3
|
|
12
|
+
Requires-Dist: pytest >=7.0.1,<8 ; extra == "test"
|
|
13
|
+
Requires-Dist: pytest-django>=4.5.2,<5.0 ; extra == "test"
|
|
14
|
+
Requires-Dist: pytest-cov>=4.0.0 ; extra == "test"
|
|
15
|
+
Requires-Dist: djangorestframework >3, <4 ; extra == "test"
|
|
16
|
+
Project-URL: Home, https://github.com/TencentBlueKing/bkflow-sdk
|
|
17
|
+
Provides-Extra: test
|
|
18
|
+
|
|
19
|
+
# BKFlow SDK
|
|
20
|
+
|
|
21
|
+
[](LICENSE)
|
|
22
|
+
[](https://www.python.org/downloads/)
|
|
23
|
+
[](https://www.djangoproject.com/)
|
|
24
|
+
|
|
25
|
+
[English](README_EN.md) | 简体中文
|
|
26
|
+
|
|
27
|
+
## 📖 项目简介
|
|
28
|
+
|
|
29
|
+
BKFlow SDK 是一个用于集成蓝鲸流程引擎(BlueKing Flow Engine)的 Django 应用程序 SDK。它提供了一套完整的 API 接口和客户端,帮助开发者快速在自己的 Django 项目中对接 BKFlow 流程编排能力。
|
|
30
|
+
|
|
31
|
+
### ✨ 核心特性
|
|
32
|
+
|
|
33
|
+
- 🚀 **快速集成**:只需简单配置即可在 Django 项目中使用
|
|
34
|
+
- 🔌 **完整的 API 封装**:提供流程模板、任务、插件等完整的 API 接口
|
|
35
|
+
- 🎯 **灵活的扩展**:支持通过 Signal 机制自定义业务逻辑
|
|
36
|
+
- 🛡️ **安全认证**:内置完善的认证和权限管理
|
|
37
|
+
- 📊 **丰富的功能**:支持流程模板管理、任务执行、插件系统、变量管理等
|
|
38
|
+
- 🔧 **自定义请求头**:支持在 API 调用时传入自定义 headers,灵活控制请求行为
|
|
39
|
+
|
|
40
|
+
### 🎯 主要功能
|
|
41
|
+
|
|
42
|
+
- **流程模板管理**:创建、查询、更新、删除流程模板,流程模板列表查询和筛选,流程操作记录追踪
|
|
43
|
+
- **任务管理**:创建和执行任务,查询任务状态和详情,批量获取任务状态,任务 Mock 数据获取
|
|
44
|
+
- **插件系统**:内置插件管理,第三方插件集成,插件元信息查询,决策表插件支持
|
|
45
|
+
- **变量管理**:系统变量管理,自定义变量管理,变量引用分析,变量预览功能
|
|
46
|
+
|
|
47
|
+
## 🚀 快速开始
|
|
48
|
+
|
|
49
|
+
### 📦 安装
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install bkflow-sdk
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### ⚙️ 配置
|
|
56
|
+
|
|
57
|
+
#### 1. 添加到 Django 项目
|
|
58
|
+
|
|
59
|
+
在 Django 项目的 `settings.py` 中添加配置:
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
INSTALLED_APPS = [
|
|
63
|
+
# ... 其他应用
|
|
64
|
+
"bkflow.interface",
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
# 蓝鲸应用配置(必填)
|
|
68
|
+
APP_CODE = "your-app-code" # 蓝鲸应用ID
|
|
69
|
+
SECRET_KEY = "your-secret-key" # 蓝鲸应用密钥
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**BKFlow SDK 配置支持两种方式(任选其一或混合使用):**
|
|
73
|
+
|
|
74
|
+
##### 方式1:直接在 Django settings 中声明(推荐)
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
# BKFlow SDK 配置(必填)
|
|
78
|
+
BKFLOW_SDK_APIGW_HOST = "https://your-bkflow-api-gateway.com" # BKFlow API 网关地址
|
|
79
|
+
BKFLOW_SDK_DEFAULT_SPACE_ID = 1 # 默认空间ID(可选,如果不配置 BKFLOW_SDK_SPACE_TRANSFORMER 则必须配置)
|
|
80
|
+
BKFLOW_SDK_SPACE_TRANSFORMER = "your_module.path.function_name" # 可执行函数路径(可选),用于根据 scope_type 和 scope_value 动态获取 space_id,格式:module.path.function_name 或 module.path.ClassName.method_name
|
|
81
|
+
BKFLOW_SDK_APIGW_HEADERS_GENERATOR = "your_module.path.function_name" # 可执行函数路径(可选),用于根据 request 动态获取 headers,格式:module.path.function_name 或 module.path.ClassName.method_name
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
##### 方式2:在 BKFLOW_SDK 字典中配置(优先级更高)
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
# BKFlow SDK 配置(必填)
|
|
88
|
+
BKFLOW_SDK = {
|
|
89
|
+
"BKFLOW_SDK_APIGW_HOST": "https://your-bkflow-api-gateway.com", # BKFlow API 网关地址
|
|
90
|
+
"BKFLOW_SDK_DEFAULT_SPACE_ID": 1, # 默认空间ID(可选,如果不配置 BKFLOW_SDK_SPACE_TRANSFORMER 则必须配置)
|
|
91
|
+
"BKFLOW_SDK_SPACE_TRANSFORMER": "your_module.path.function_name", # 可执行函数路径(可选),用于根据 scope_type 和 scope_value 动态获取 space_id
|
|
92
|
+
"BKFLOW_SDK_APIGW_HEADERS_GENERATOR": "your_module.path.function_name", # 可执行函数路径(可选),用于根据 request 动态获取 headers
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**配置优先级说明:**
|
|
97
|
+
- 如果同时使用两种方式配置相同的配置项,`BKFLOW_SDK` 字典中的配置优先级更高
|
|
98
|
+
- 两种方式可以混合使用,未在字典中配置的项会从直接声明的配置中读取
|
|
99
|
+
- 推荐使用方式1(直接声明),配置更简洁直观
|
|
100
|
+
|
|
101
|
+
#### 2. 配置 URL 路由
|
|
102
|
+
|
|
103
|
+
在项目的 `urls.py` 中添加路由:
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
# urls.py
|
|
107
|
+
from django.urls import include, path
|
|
108
|
+
|
|
109
|
+
urlpatterns = [
|
|
110
|
+
# ... 其他路由
|
|
111
|
+
path("api/bkflow/", include("bkflow.interface.urls")),
|
|
112
|
+
]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### 3. 环境变量配置(可选)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# .env 文件
|
|
119
|
+
export BKFLOW_SDK_APIGW_HOST="https://your-bkflow-api-gateway.com"
|
|
120
|
+
export BKFLOW_SDK_DEFAULT_SPACE_ID=1
|
|
121
|
+
export BKFLOW_SDK_SPACE_TRANSFORMER="your_module.path.function_name" # 可选,用于动态获取 space_id,支持 module.path.function_name 或 module.path.ClassName.method_name
|
|
122
|
+
export BKFLOW_SDK_APIGW_HEADERS_GENERATOR="your_module.path.function_name" # 可选,用于动态获取 headers,支持 module.path.function_name 或 module.path.ClassName.method_name
|
|
123
|
+
export BK_APIGW_STAGE_NAME="prod" # 环境:prod/stag/test
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### 4. 配置自定义函数(可选)
|
|
127
|
+
|
|
128
|
+
##### BKFLOW_SDK_SPACE_TRANSFORMER 示例
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
# utils/space.py
|
|
132
|
+
def get_space_id(scope_type=None, scope_value=None):
|
|
133
|
+
"""根据 scope_type 和 scope_value 返回 space_id"""
|
|
134
|
+
if scope_type == "project":
|
|
135
|
+
return int(scope_value) + 1000 # 示例:项目ID映射
|
|
136
|
+
return None # 返回 None 时使用 BKFLOW_SDK_DEFAULT_SPACE_ID
|
|
137
|
+
|
|
138
|
+
# settings.py
|
|
139
|
+
BKFLOW_SDK_SPACE_TRANSFORMER = "utils.space.get_space_id"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
##### BKFLOW_SDK_APIGW_HEADERS_GENERATOR 示例
|
|
143
|
+
|
|
144
|
+
```python
|
|
145
|
+
# utils/headers.py
|
|
146
|
+
import json
|
|
147
|
+
from django.conf import settings
|
|
148
|
+
|
|
149
|
+
def generate_headers(request):
|
|
150
|
+
"""根据 request 生成 headers"""
|
|
151
|
+
return {
|
|
152
|
+
"X-Bkapi-Authorization": json.dumps({
|
|
153
|
+
"bk_app_code": settings.APP_CODE,
|
|
154
|
+
"bk_app_secret": settings.SECRET_KEY,
|
|
155
|
+
"bk_ticket": request.COOKIES.get("bk_ticket", ""),
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
# settings.py
|
|
160
|
+
BKFLOW_SDK_APIGW_HEADERS_GENERATOR = "utils.headers.generate_headers"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 📚 基本使用
|
|
164
|
+
|
|
165
|
+
### 使用 API 客户端
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
from bkflow.client.core import get_client_by_user
|
|
169
|
+
|
|
170
|
+
# 获取客户端实例
|
|
171
|
+
client = get_client_by_user("admin")
|
|
172
|
+
|
|
173
|
+
# 获取流程模板列表
|
|
174
|
+
templates = client.bkflow.list_templates(
|
|
175
|
+
path_params={"space_id": 1},
|
|
176
|
+
limit=20,
|
|
177
|
+
offset=0
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# 创建流程模板
|
|
181
|
+
template = client.bkflow.create_template(
|
|
182
|
+
path_params={"space_id": 1},
|
|
183
|
+
name="测试流程",
|
|
184
|
+
pipeline_tree={
|
|
185
|
+
"activities": {},
|
|
186
|
+
"constants": {},
|
|
187
|
+
"gateways": {},
|
|
188
|
+
},
|
|
189
|
+
operator="admin"
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
# 创建任务
|
|
193
|
+
task = client.bkflow.create_task(
|
|
194
|
+
{
|
|
195
|
+
"template_id": 100,
|
|
196
|
+
"name": "测试任务",
|
|
197
|
+
"creator": "admin",
|
|
198
|
+
"description": "这是一个测试任务",
|
|
199
|
+
"constants": {"key1": "value1"}
|
|
200
|
+
},
|
|
201
|
+
path_params={"space_id": 1}
|
|
202
|
+
)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### 使用自定义 Headers
|
|
206
|
+
|
|
207
|
+
对于需要 token 认证的接口,需要在 headers 中传入 token:
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
from bkflow.client.core import get_client_by_user
|
|
211
|
+
from bkflow.config.default import API_TOKEN_HEADER_KEY
|
|
212
|
+
|
|
213
|
+
client = get_client_by_user("admin")
|
|
214
|
+
|
|
215
|
+
# 调用需要 token 的接口
|
|
216
|
+
template = client.bkflow.fetch_template(
|
|
217
|
+
path_params={"template_id": 100},
|
|
218
|
+
headers={API_TOKEN_HEADER_KEY: "your-token-value"}
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
# 传入自定义 headers
|
|
222
|
+
result = client.bkflow.list_templates(
|
|
223
|
+
path_params={"space_id": 1},
|
|
224
|
+
headers={
|
|
225
|
+
"X-Request-ID": "req-12345",
|
|
226
|
+
"X-Client-Version": "1.0.0",
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## ⚠️ 重要注意事项
|
|
232
|
+
|
|
233
|
+
### 1. 配置要求
|
|
234
|
+
|
|
235
|
+
- **必填配置**:
|
|
236
|
+
- `BKFLOW_SDK_APIGW_HOST`:BKFlow API 网关地址,必须正确配置
|
|
237
|
+
- `APP_CODE` 和 `SECRET_KEY`:蓝鲸应用认证信息,必须配置
|
|
238
|
+
|
|
239
|
+
- **可选配置**:
|
|
240
|
+
- `BKFLOW_SDK_DEFAULT_SPACE_ID`:默认空间ID,如果不配置 `BKFLOW_SDK_SPACE_TRANSFORMER` 则必须配置此选项
|
|
241
|
+
- `BKFLOW_SDK_SPACE_TRANSFORMER`:可执行函数路径,格式为 `module.path.function_name` 或 `module.path.ClassName.method_name`,用于根据 `scope_type` 和 `scope_value` 动态获取 `space_id`。该函数接收两个参数:`scope_type` 和 `scope_value`,返回 `space_id`。如果配置了此选项,将优先使用此函数获取 `space_id`,否则使用 `BKFLOW_SDK_DEFAULT_SPACE_ID`
|
|
242
|
+
- `BKFLOW_SDK_APIGW_HEADERS_GENERATOR`:可执行函数路径,格式为 `module.path.function_name` 或 `module.path.ClassName.method_name`,用于根据 `request` 动态获取 headers。该函数接收一个参数:`request`(Django request 实例),返回一个 headers 字典。如果配置了此选项,`get_redirect_client_with_auth` 将优先使用此函数获取 headers,否则使用默认的 headers 生成逻辑(从 cookies 和 META 中获取认证信息)
|
|
243
|
+
- `BK_APIGW_STAGE_NAME`:API 网关环境,默认为 `prod`
|
|
244
|
+
|
|
245
|
+
**配置方式说明:**
|
|
246
|
+
- 所有以 `BKFLOW_SDK` 前缀开头的配置项支持两种声明方式:
|
|
247
|
+
1. **直接声明**:在 `settings.py` 中直接声明 `BKFLOW_SDK_XXX = value`
|
|
248
|
+
2. **字典配置**:在 `BKFLOW_SDK` 字典中配置 `BKFLOW_SDK = {"BKFLOW_SDK_XXX": value}`
|
|
249
|
+
- 如果同时使用两种方式配置相同的配置项,`BKFLOW_SDK` 字典中的配置优先级更高
|
|
250
|
+
- 两种方式可以混合使用,推荐使用直接声明方式,配置更简洁直观
|
|
251
|
+
|
|
252
|
+
### 2. Token 认证
|
|
253
|
+
|
|
254
|
+
部分接口需要 token 认证(标记为 `token_required=True`),调用这些接口时必须在 headers 中传入 `BKFLOW-TOKEN`:
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
from bkflow.config.default import API_TOKEN_HEADER_KEY
|
|
258
|
+
|
|
259
|
+
# 需要 token 的接口示例
|
|
260
|
+
client.bkflow.fetch_template(
|
|
261
|
+
path_params={"template_id": 100},
|
|
262
|
+
headers={API_TOKEN_HEADER_KEY: "your-token"}
|
|
263
|
+
)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 3. Headers 合并规则
|
|
267
|
+
|
|
268
|
+
- `BaseAPIClient`:调用时传入的 headers 会覆盖客户端实例的 headers
|
|
269
|
+
- `RequestAPIClient`:客户端实例的 headers 会覆盖调用时传入的 headers
|
|
270
|
+
|
|
271
|
+
### 4. 错误处理
|
|
272
|
+
|
|
273
|
+
SDK 会自动处理 API 调用异常,返回统一的错误格式:
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
{
|
|
277
|
+
"result": False,
|
|
278
|
+
"message": "错误信息",
|
|
279
|
+
"data": None
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 5. 用户认证
|
|
284
|
+
|
|
285
|
+
使用 `get_client_by_user()` 时,需要确保:
|
|
286
|
+
- 用户已通过蓝鲸认证
|
|
287
|
+
- 已正确配置 `bkoauth` 或使用 `bk_ticket`/`bk_token` 进行认证
|
|
288
|
+
|
|
289
|
+
## 📋 版本历史
|
|
290
|
+
|
|
291
|
+
查看 [release.md](release.md) 了解版本更新历史。
|
|
292
|
+
|
|
293
|
+
### 当前版本
|
|
294
|
+
|
|
295
|
+
- **最新版本** - 功能更新
|
|
296
|
+
- ✨ **新增功能**:支持在 API 调用时传入自定义 headers
|
|
297
|
+
- 🐛 **Bug 修复**:修复了 token 验证逻辑
|
|
298
|
+
- ✅ **测试完善**:添加了自定义 headers 功能的完整测试用例
|
|
299
|
+
|
|
300
|
+
## 📄 许可证
|
|
301
|
+
|
|
302
|
+
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
|
|
303
|
+
|
|
304
|
+
## 🔗 相关链接
|
|
305
|
+
|
|
306
|
+
- [蓝鲸智云官网](https://bk.tencent.com/)
|
|
307
|
+
- [项目主页](https://github.com/TencentBlueKing/bkflow-sdk)
|
|
308
|
+
- [问题反馈](https://github.com/TencentBlueKing/bkflow-sdk/issues)
|
|
309
|
+
|
|
310
|
+
## 💬 支持
|
|
311
|
+
|
|
312
|
+
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
|
|
313
|
+
|
|
314
|
+
- 提交 [Issue](https://github.com/TencentBlueKing/bkflow-sdk/issues)
|
|
315
|
+
- 查看项目文档
|
|
316
|
+
- 加入蓝鲸社区讨论
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
Copyright © 2022 THL A29 Limited, a Tencent company. All Rights Reserved.
|
|
321
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
bkflow/__init__.py,sha256=QkGJscHD8sxLcrEasHO_kc4LmCcEIlm2Z5DadujJ8RE,729
|
|
2
|
+
bkflow/client/__init__.py,sha256=qG-suJftidzq5CFBqwu7ocG7tQeot9oKaH1CE861hIw,706
|
|
3
|
+
bkflow/client/base.py,sha256=3Q1QJWlpHpDlbtjdww4YZYG4dDwkOQzglGYEVnXQV9s,5292
|
|
4
|
+
bkflow/client/core.py,sha256=8nJBG3VbRmLdgsMmFJ6u3UCraq0Rh0MN-FDt8JVwOlA,9936
|
|
5
|
+
bkflow/client/apis/__init__.py,sha256=qG-suJftidzq5CFBqwu7ocG7tQeot9oKaH1CE861hIw,706
|
|
6
|
+
bkflow/client/apis/bkflow.py,sha256=qIauIXQq8H_xRgFIcqAfoZT9q6UgXUUsfkirrBYaGKs,12815
|
|
7
|
+
bkflow/common/__init__.py,sha256=qG-suJftidzq5CFBqwu7ocG7tQeot9oKaH1CE861hIw,706
|
|
8
|
+
bkflow/common/decorators.py,sha256=kykB0I-YTsxZUy6bm7GN6lS6LGNpDkLdOveMoLT6yfs,3999
|
|
9
|
+
bkflow/common/exceptions.py,sha256=OZ2i1Mw4rnuyIPpLGgrRAHtwRNNKa53OIfHyIbr2Ie4,1576
|
|
10
|
+
bkflow/common/loader.py,sha256=ALaumMSmxDp9w-7U22lROA3EZdz0GGoa46MzyBNYVdM,4261
|
|
11
|
+
bkflow/common/validator.py,sha256=egYBXElFUCe4RaeyY6ExEAh0N0EBCznHjJVQelPtOiQ,4468
|
|
12
|
+
bkflow/common/views.py,sha256=i91V-o1GKo45ZXVZ6_cGgENp_HT3BmK6gOeH231OUkQ,2340
|
|
13
|
+
bkflow/config/__init__.py,sha256=qG-suJftidzq5CFBqwu7ocG7tQeot9oKaH1CE861hIw,706
|
|
14
|
+
bkflow/config/default.py,sha256=Wa9-vP51gw5nsYfGFtykx6vE2k2iNygMhaITkYLIV2c,4259
|
|
15
|
+
bkflow/interface/__init__.py,sha256=qG-suJftidzq5CFBqwu7ocG7tQeot9oKaH1CE861hIw,706
|
|
16
|
+
bkflow/interface/apps.py,sha256=TFi6W8PwRi0LTiwNByh9f1nyUkwvZzLJHXbqgGxdIAI,847
|
|
17
|
+
bkflow/interface/serializers.py,sha256=JhkiVUBhmxjGOdXSxOp6OYxPAjRQzervbikqD_fgtNk,12793
|
|
18
|
+
bkflow/interface/signals.py,sha256=HIEqudMgUp5g0MjiBnQc_5ao3IgWlnTgK1rSLYRzkEI,1016
|
|
19
|
+
bkflow/interface/urls.py,sha256=9T67BGXQAAS7hlr7J3W1hR6yv0rTxInftM5oUq_mWzA,1513
|
|
20
|
+
bkflow/interface/utils.py,sha256=WXQZ5R1wlojHXrJG5UOU3BrYek1S6rlJ9EupczWIxXw,2070
|
|
21
|
+
bkflow/interface/views.py,sha256=kUgSEGtJTAlRHLOxUYvrFIkUef9IDDdRBr2w8mZyDEg,29970
|
|
22
|
+
bkflow_sdk-0.0.42.dist-info/licenses/LICENSE,sha256=efzBCdJWqcnPWzjy5lxFG5TJBRLwy3fnfNtHp0fuqJ8,1068
|
|
23
|
+
bkflow_sdk-0.0.42.dist-info/WHEEL,sha256=Dyt6SBfaasWElUrURkknVFAZDHSTwxg3PaTza7RSbkY,100
|
|
24
|
+
bkflow_sdk-0.0.42.dist-info/METADATA,sha256=FpqB1FG6pTN_ofWyu2H6Xg7Ibl_wqi-V-1MSm0K8Dlk,11564
|
|
25
|
+
bkflow_sdk-0.0.42.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 腾讯蓝鲸
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|