pixelarraythirdparty 1.0.4__py3-none-any.whl → 1.0.5__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.
@@ -10,7 +10,7 @@ PixelArray 第三方微服务客户端
10
10
  - user: 用户管理模块
11
11
  """
12
12
 
13
- __version__ = "1.0.4"
13
+ __version__ = "1.0.5"
14
14
  __author__ = "Lu qi"
15
15
  __email__ = "qi.lu@pixelarrayai.com"
16
16
 
@@ -3,30 +3,149 @@ from pixelarraythirdparty.client import Client
3
3
 
4
4
  class CeleryManager(Client):
5
5
  def get_celery_status(self):
6
+ """
7
+ 获取Celery服务状态
8
+
9
+ 功能说明:
10
+ 获取Celery服务的运行状态,包括已注册的任务、工作节点状态等。
11
+
12
+ 输入参数:
13
+
14
+
15
+ 返回字段:
16
+ data (dict): Celery服务状态信息
17
+ - registered_tasks (dict): 已注册的任务列表,按工作节点分组
18
+ - worker_stats (dict): 工作节点统计信息
19
+ - scheduled_task_count (int): 定时任务数量
20
+ - timestamp (str): 状态获取时间
21
+ success (bool): 操作是否成功
22
+
23
+ 异常情况:
24
+ - 获取Celery状态失败:返回错误信息"获取Celery状态失败"
25
+ """
6
26
  data, success = self._request("GET", "/api/celery/status")
7
27
  if not success:
8
28
  return {}, False
9
29
  return data, True
10
30
 
11
31
  def get_celery_tasks(self):
32
+ """
33
+ 获取已注册任务列表
34
+
35
+ 功能说明:
36
+ 获取所有已注册的Celery任务列表。
37
+
38
+ 输入参数:
39
+
40
+
41
+ 返回字段:
42
+ data (dict): 任务列表信息
43
+ - tasks (list): 已注册的任务名称列表
44
+ - count (int): 任务数量
45
+ - timestamp (str): 获取时间
46
+ success (bool): 操作是否成功
47
+
48
+ 异常情况:
49
+ - 获取任务列表失败:返回错误信息"获取任务列表失败"
50
+ """
12
51
  data, success = self._request("GET", "/api/celery/tasks")
13
52
  if not success:
14
53
  return {}, False
15
54
  return data, True
16
55
 
17
56
  def get_celery_tasks_scheduled(self):
57
+ """
58
+ 获取定时任务列表
59
+
60
+ 功能说明:
61
+ 获取所有配置的定时任务列表,包括任务详情、执行时间、状态等。
62
+
63
+ 输入参数:
64
+
65
+
66
+ 返回字段:
67
+ data (dict): 定时任务列表信息
68
+ - tasks (list): 定时任务列表
69
+ - id (str): 任务ID
70
+ - name (str): 任务名称
71
+ - description (str): 任务描述
72
+ - schedule (str): 执行时间
73
+ - enabled (bool): 是否启用
74
+ - task_name (str): 任务函数名
75
+ - module_name (str): 模块名
76
+ - function_name (str): 函数名
77
+ - file_path (str): 文件路径
78
+ - parameters (list): 参数列表
79
+ - task_config (dict): 任务配置
80
+ - registration_info (dict): 注册信息
81
+ - count (int): 任务数量
82
+ - timestamp (str): 获取时间
83
+ success (bool): 操作是否成功
84
+
85
+ 异常情况:
86
+ - 获取定时任务列表失败:返回错误信息"获取定时任务列表失败"
87
+ """
18
88
  data, success = self._request("GET", "/api/celery/tasks/scheduled")
19
89
  if not success:
20
90
  return {}, False
21
91
  return data, True
22
92
 
23
93
  def get_celery_tasks_detail(self, task_name: str):
94
+ """
95
+ 获取任务详情
96
+
97
+ 功能说明:
98
+ 根据任务名称获取指定任务的详细信息。
99
+
100
+ 输入参数:
101
+ task_name (str): 任务名称,必填,需要URL编码
102
+
103
+ 返回字段:
104
+ data (dict): 任务详细信息
105
+ - task_name (str): 任务名称
106
+ - module_name (str): 模块名
107
+ - function_name (str): 函数名
108
+ - file_path (str): 文件路径
109
+ - description (str): 任务描述
110
+ - parameters (list): 参数列表
111
+ - task_config (dict): 任务配置
112
+ - registration_info (dict): 注册信息
113
+ - timestamp (str): 获取时间
114
+ success (bool): 操作是否成功
115
+
116
+ 异常情况:
117
+ - 任务不存在:返回错误信息"任务不存在"
118
+ - 获取任务详情失败:返回错误信息"获取任务详情失败"
119
+ """
24
120
  data, success = self._request("GET", f"/api/celery/tasks/{task_name}")
25
121
  if not success:
26
122
  return {}, False
27
123
  return data, True
28
124
 
29
125
  def trigger_celery_task(self, task_name: str, args: list, kwargs: dict):
126
+ """
127
+ 触发任务执行
128
+
129
+ 功能说明:
130
+ 手动触发指定任务的执行,支持传递参数。
131
+
132
+ 输入参数:
133
+ task_name (str): 任务名称,必填,需要URL编码
134
+ args (list): 任务参数列表,可选
135
+ kwargs (dict): 任务关键字参数,可选
136
+
137
+ 返回字段:
138
+ data (dict): 任务触发信息
139
+ - task_id (str): 任务ID
140
+ - task_name (str): 任务名称
141
+ - status (str): 任务状态,初始为"PENDING"
142
+ - message (str): 触发消息
143
+ success (bool): 操作是否成功
144
+
145
+ 异常情况:
146
+ - 任务不存在:返回错误信息"任务不存在"
147
+ - 任务触发失败:返回错误信息"任务触发失败"
148
+ """
30
149
  data, success = self._request(
31
150
  "POST",
32
151
  f"/api/celery/tasks/{task_name}/trigger",
@@ -9,6 +9,39 @@ class OrderManager(Client):
9
9
  remark: str = None,
10
10
  payment_channel: str = "WECHAT",
11
11
  ):
12
+ """
13
+ 创建订单
14
+
15
+ 功能说明:
16
+ 根据产品ID创建新的订单,系统会自动生成订单号,获取产品价格信息,并创建对应的支付订单。
17
+
18
+ 输入参数:
19
+ product_id (str): 产品ID,必填,用于获取产品信息和价格
20
+ body (str, 可选): 商品描述,如果不提供则使用产品名称
21
+ remark (str, 可选): 订单备注信息
22
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT"(微信支付)
23
+
24
+ 返回字段:
25
+ data (dict): 订单信息
26
+ - id (int): 订单ID
27
+ - out_trade_no (str): 商户订单号,格式为"ORD_时间戳_随机字符串"
28
+ - payment_status (str): 支付状态,初始为"PENDING"(待支付)
29
+ - payment_channel (str): 支付渠道
30
+ - product_id (str): 产品ID
31
+ - amount (str): 订单金额(元),格式为"99.00"
32
+ - total_fee (int): 订单金额(分),用于支付接口
33
+ - body (str): 商品描述
34
+ - remark (str): 订单备注
35
+ - created_at (str): 订单创建时间
36
+ - updated_at (str): 订单更新时间
37
+ success (bool): 操作是否成功
38
+
39
+ 异常情况:
40
+ - 产品ID为空:返回错误信息"产品ID不能为空"
41
+ - 产品不存在:返回错误信息"产品不存在"
42
+ - 产品价格无效:返回错误信息"产品价格无效"
43
+ - 创建订单失败:返回错误信息"创建订单失败"
44
+ """
12
45
  data = {
13
46
  "product_id": product_id,
14
47
  "body": body,
@@ -27,6 +60,41 @@ class OrderManager(Client):
27
60
  payment_status: str = None,
28
61
  out_trade_no: str = None,
29
62
  ):
63
+ """
64
+ 获取订单列表
65
+
66
+ 功能说明:
67
+ 分页查询订单列表,支持按支付状态和订单号进行筛选。
68
+
69
+ 输入参数:
70
+ page (int, 可选): 页码,默认为1,最小值为1
71
+ page_size (int, 可选): 每页数量,默认为10,范围为1-1000
72
+ payment_status (str, 可选): 支付状态筛选,可选值:
73
+ - "PENDING": 待支付
74
+ - "PAID": 已支付
75
+ - "REFUNDED": 已退款
76
+ - "CANCELLED": 已取消
77
+ out_trade_no (str, 可选): 订单号搜索,支持模糊匹配
78
+
79
+ 返回字段:
80
+ data (dict): 订单列表信息
81
+ - orders (list): 订单列表
82
+ - id (int): 订单ID
83
+ - out_trade_no (str): 商户订单号
84
+ - payment_status (str): 支付状态
85
+ - payment_channel (str): 支付渠道
86
+ - amount (str): 订单金额(元)
87
+ - total_fee (int): 订单金额(分)
88
+ - created_at (str): 订单创建时间
89
+ - updated_at (str): 订单更新时间
90
+ - total (int): 总订单数量
91
+ - page (int): 当前页码
92
+ - page_size (int): 每页数量
93
+ success (bool): 操作是否成功
94
+
95
+ 异常情况:
96
+ - 获取订单列表失败:返回错误信息"获取订单列表失败"
97
+ """
30
98
  params = {
31
99
  "page": page,
32
100
  "page_size": page_size,
@@ -39,6 +107,41 @@ class OrderManager(Client):
39
107
  return data, True
40
108
 
41
109
  def get_order_detail(self, out_trade_no: str):
110
+ """
111
+ 获取订单详情
112
+
113
+ 功能说明:
114
+ 根据订单号获取订单的详细信息,包括支付状态、交易信息等。
115
+
116
+ 输入参数:
117
+ out_trade_no (str): 商户订单号,必填
118
+
119
+ 返回字段:
120
+ data (dict): 订单详细信息
121
+ - id (int): 订单ID
122
+ - out_trade_no (str): 商户订单号
123
+ - payment_status (str): 支付状态
124
+ - product_id (str): 产品ID
125
+ - amount (str): 订单金额(元)
126
+ - total_fee (int): 订单金额(分)
127
+ - body (str): 商品描述
128
+ - transaction_id (str): 微信交易号(支付成功后才有)
129
+ - openid (str): 用户openid(支付成功后才有)
130
+ - trade_type (str): 交易类型(支付成功后才有)
131
+ - bank_type (str): 银行类型(支付成功后才有)
132
+ - fee_type (str): 货币类型,默认为"CNY"
133
+ - is_subscribe (str): 是否关注公众号(支付成功后才有)
134
+ - time_end (str): 支付完成时间(支付成功后才有)
135
+ - created_at (str): 订单创建时间
136
+ - updated_at (str): 订单更新时间
137
+ - paid_at (str): 支付时间(支付成功后才有)
138
+ - remark (str): 订单备注
139
+ success (bool): 操作是否成功
140
+
141
+ 异常情况:
142
+ - 订单不存在:返回错误信息"订单不存在"
143
+ - 获取订单详情失败:返回错误信息"获取订单详情失败"
144
+ """
42
145
  data, success = self._request("GET", f"/api/orders/{out_trade_no}")
43
146
  if not success:
44
147
  return {}, False
@@ -49,6 +152,42 @@ class OrderManager(Client):
49
152
  out_trade_no: str,
50
153
  payment_status: str,
51
154
  ):
155
+ """
156
+ 更新订单状态
157
+
158
+ 功能说明:
159
+ 更新指定订单的支付状态,仅支持状态修改,其他字段不可修改。
160
+
161
+ 输入参数:
162
+ out_trade_no (str): 商户订单号,必填
163
+ payment_status (str): 支付状态,必填,可选值:
164
+ - "PENDING": 待支付
165
+ - "PAID": 已支付
166
+ - "REFUNDED": 已退款
167
+ - "CANCELLED": 已取消
168
+
169
+ 返回字段:
170
+ data (dict): 更新后的订单信息
171
+ - id (int): 订单ID
172
+ - out_trade_no (str): 商户订单号
173
+ - payment_status (str): 更新后的支付状态
174
+ - transaction_id (str): 微信交易号(如果已支付)
175
+ - openid (str): 用户openid(如果已支付)
176
+ - trade_type (str): 交易类型(如果已支付)
177
+ - bank_type (str): 银行类型(如果已支付)
178
+ - fee_type (str): 货币类型
179
+ - is_subscribe (str): 是否关注公众号(如果已支付)
180
+ - time_end (str): 支付完成时间(如果已支付)
181
+ - paid_at (str): 支付时间(如果已支付)
182
+ - updated_at (str): 订单更新时间
183
+ - remark (str): 订单备注
184
+ success (bool): 操作是否成功
185
+
186
+ 异常情况:
187
+ - 支付状态为空:返回错误信息"支付状态不能为空"
188
+ - 订单不存在:返回错误信息"订单不存在"
189
+ - 更新订单状态失败:返回错误信息"更新订单状态失败"
190
+ """
52
191
  data = {
53
192
  "payment_status": payment_status,
54
193
  }
@@ -60,12 +199,51 @@ class OrderManager(Client):
60
199
  return data, True
61
200
 
62
201
  def delete_order(self, out_trade_no: str):
202
+ """
203
+ 删除订单
204
+
205
+ 功能说明:
206
+ 根据订单号删除指定的订单记录。
207
+
208
+ 输入参数:
209
+ out_trade_no (str): 商户订单号,必填
210
+
211
+ 返回字段:
212
+ data (None): 删除成功时返回None
213
+ success (bool): 操作是否成功
214
+
215
+ 异常情况:
216
+ - 订单不存在:返回错误信息"订单不存在"
217
+ - 删除订单失败:返回错误信息"删除订单失败"
218
+ """
63
219
  data, success = self._request("DELETE", f"/api/orders/{out_trade_no}")
64
220
  if not success:
65
221
  return {}, False
66
222
  return data, True
67
223
 
68
224
  def get_order_stats(self):
225
+ """
226
+ 获取订单统计信息
227
+
228
+ 功能说明:
229
+ 获取订单的统计汇总信息,包括总订单数、各状态订单数量、总金额等。
230
+
231
+ 输入参数:
232
+
233
+
234
+ 返回字段:
235
+ data (dict): 订单统计信息
236
+ - total_orders (int): 总订单数量
237
+ - pending_orders (int): 待支付订单数量
238
+ - paid_orders (int): 已支付订单数量
239
+ - refunded_orders (int): 已退款订单数量
240
+ - total_amount (float): 总订单金额(元)
241
+ - total_fee (int): 总订单金额(分)
242
+ success (bool): 操作是否成功
243
+
244
+ 异常情况:
245
+ - 获取订单统计信息失败:返回错误信息"获取订单统计信息失败"
246
+ """
69
247
  data, success = self._request("GET", "/api/orders/stats/summary")
70
248
  if not success:
71
249
  return {}, False
@@ -76,6 +254,30 @@ class OrderManager(Client):
76
254
  out_trade_no: str,
77
255
  payment_channel: str = "WECHAT",
78
256
  ):
257
+ """
258
+ 生成支付二维码
259
+
260
+ 功能说明:
261
+ 为指定订单生成支付二维码,支持微信支付和支付宝。二维码会自动上传到OSS并返回访问URL。
262
+
263
+ 输入参数:
264
+ out_trade_no (str): 商户订单号,必填
265
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
266
+ - "WECHAT": 微信支付
267
+ - "ALIPAY": 支付宝(暂未实现)
268
+
269
+ 返回字段:
270
+ data (dict): 二维码信息
271
+ - qr_code_url (str): 二维码图片URL,可直接用于显示
272
+ - out_trade_no (str): 商户订单号
273
+ success (bool): 操作是否成功
274
+
275
+ 异常情况:
276
+ - 订单号为空:返回错误信息"订单号不能为空"
277
+ - 订单不存在:返回错误信息"订单不存在"
278
+ - 不支持的支付渠道:抛出ValueError异常
279
+ - 生成支付二维码失败:返回错误信息"生成支付二维码失败"
280
+ """
79
281
  if payment_channel == "WECHAT":
80
282
  url = "/api/orders/wx_pay/generate_qr_code"
81
283
  elif payment_channel == "ALIPAY":
@@ -94,6 +296,32 @@ class OrderManager(Client):
94
296
  return data, True
95
297
 
96
298
  def refund_order(self, out_trade_no: str, payment_channel: str = "WECHAT"):
299
+ """
300
+ 申请订单退款
301
+
302
+ 功能说明:
303
+ 为指定订单申请退款,支持微信支付和支付宝。退款申请提交后,系统会处理退款并更新订单状态。
304
+
305
+ 输入参数:
306
+ out_trade_no (str): 商户订单号,必填
307
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
308
+ - "WECHAT": 微信支付
309
+ - "ALIPAY": 支付宝(暂未实现)
310
+
311
+ 返回字段:
312
+ data (dict): 退款信息
313
+ - out_refund_no (str): 退款单号,格式为"REFUND_订单号_时间戳"
314
+ - out_trade_no (str): 商户订单号
315
+ - total_fee (int): 退款金额(分)
316
+ success (bool): 操作是否成功
317
+
318
+ 异常情况:
319
+ - 订单号为空:返回错误信息"订单号不能为空"
320
+ - 订单不存在:返回错误信息"订单不存在"
321
+ - 订单状态不允许退款:返回错误信息"订单状态不允许退款"
322
+ - 不支持的支付渠道:抛出ValueError异常
323
+ - 退款申请失败:返回错误信息"退款申请失败"
324
+ """
97
325
  if payment_channel == "WECHAT":
98
326
  url = "/api/orders/wx_pay/refund"
99
327
  elif payment_channel == "ALIPAY":
@@ -118,6 +346,39 @@ class OrderManagerAsync(AsyncClient):
118
346
  remark: str = None,
119
347
  payment_channel: str = "WECHAT",
120
348
  ):
349
+ """
350
+ 创建订单(异步版本)
351
+
352
+ 功能说明:
353
+ 根据产品ID创建新的订单,系统会自动生成订单号,获取产品价格信息,并创建对应的支付订单。
354
+
355
+ 输入参数:
356
+ product_id (str): 产品ID,必填,用于获取产品信息和价格
357
+ body (str, 可选): 商品描述,如果不提供则使用产品名称
358
+ remark (str, 可选): 订单备注信息
359
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT"(微信支付)
360
+
361
+ 返回字段:
362
+ data (dict): 订单信息
363
+ - id (int): 订单ID
364
+ - out_trade_no (str): 商户订单号,格式为"ORD_时间戳_随机字符串"
365
+ - payment_status (str): 支付状态,初始为"PENDING"(待支付)
366
+ - payment_channel (str): 支付渠道
367
+ - product_id (str): 产品ID
368
+ - amount (str): 订单金额(元),格式为"99.00"
369
+ - total_fee (int): 订单金额(分),用于支付接口
370
+ - body (str): 商品描述
371
+ - remark (str): 订单备注
372
+ - created_at (str): 订单创建时间
373
+ - updated_at (str): 订单更新时间
374
+ success (bool): 操作是否成功
375
+
376
+ 异常情况:
377
+ - 产品ID为空:返回错误信息"产品ID不能为空"
378
+ - 产品不存在:返回错误信息"产品不存在"
379
+ - 产品价格无效:返回错误信息"产品价格无效"
380
+ - 创建订单失败:返回错误信息"创建订单失败"
381
+ """
121
382
  data = {
122
383
  "product_id": product_id,
123
384
  "body": body,
@@ -136,6 +397,41 @@ class OrderManagerAsync(AsyncClient):
136
397
  payment_status: str = None,
137
398
  out_trade_no: str = None,
138
399
  ):
400
+ """
401
+ 获取订单列表(异步版本)
402
+
403
+ 功能说明:
404
+ 分页查询订单列表,支持按支付状态和订单号进行筛选。
405
+
406
+ 输入参数:
407
+ page (int, 可选): 页码,默认为1,最小值为1
408
+ page_size (int, 可选): 每页数量,默认为10,范围为1-1000
409
+ payment_status (str, 可选): 支付状态筛选,可选值:
410
+ - "PENDING": 待支付
411
+ - "PAID": 已支付
412
+ - "REFUNDED": 已退款
413
+ - "CANCELLED": 已取消
414
+ out_trade_no (str, 可选): 订单号搜索,支持模糊匹配
415
+
416
+ 返回字段:
417
+ data (dict): 订单列表信息
418
+ - orders (list): 订单列表
419
+ - id (int): 订单ID
420
+ - out_trade_no (str): 商户订单号
421
+ - payment_status (str): 支付状态
422
+ - payment_channel (str): 支付渠道
423
+ - amount (str): 订单金额(元)
424
+ - total_fee (int): 订单金额(分)
425
+ - created_at (str): 订单创建时间
426
+ - updated_at (str): 订单更新时间
427
+ - total (int): 总订单数量
428
+ - page (int): 当前页码
429
+ - page_size (int): 每页数量
430
+ success (bool): 操作是否成功
431
+
432
+ 异常情况:
433
+ - 获取订单列表失败:返回错误信息"获取订单列表失败"
434
+ """
139
435
  params = {
140
436
  "page": page,
141
437
  "page_size": page_size,
@@ -148,12 +444,83 @@ class OrderManagerAsync(AsyncClient):
148
444
  return data, True
149
445
 
150
446
  async def get_order_detail(self, out_trade_no: str):
447
+ """
448
+ 获取订单详情(异步版本)
449
+
450
+ 功能说明:
451
+ 根据订单号获取订单的详细信息,包括支付状态、交易信息等。
452
+
453
+ 输入参数:
454
+ out_trade_no (str): 商户订单号,必填
455
+
456
+ 返回字段:
457
+ data (dict): 订单详细信息
458
+ - id (int): 订单ID
459
+ - out_trade_no (str): 商户订单号
460
+ - payment_status (str): 支付状态
461
+ - product_id (str): 产品ID
462
+ - amount (str): 订单金额(元)
463
+ - total_fee (int): 订单金额(分)
464
+ - body (str): 商品描述
465
+ - transaction_id (str): 微信交易号(支付成功后才有)
466
+ - openid (str): 用户openid(支付成功后才有)
467
+ - trade_type (str): 交易类型(支付成功后才有)
468
+ - bank_type (str): 银行类型(支付成功后才有)
469
+ - fee_type (str): 货币类型,默认为"CNY"
470
+ - is_subscribe (str): 是否关注公众号(支付成功后才有)
471
+ - time_end (str): 支付完成时间(支付成功后才有)
472
+ - created_at (str): 订单创建时间
473
+ - updated_at (str): 订单更新时间
474
+ - paid_at (str): 支付时间(支付成功后才有)
475
+ - remark (str): 订单备注
476
+ success (bool): 操作是否成功
477
+
478
+ 异常情况:
479
+ - 订单不存在:返回错误信息"订单不存在"
480
+ - 获取订单详情失败:返回错误信息"获取订单详情失败"
481
+ """
151
482
  data, success = await self._request("GET", f"/api/orders/{out_trade_no}")
152
483
  if not success:
153
484
  return {}, False
154
485
  return data, True
155
486
 
156
487
  async def update_order_status(self, out_trade_no: str, payment_status: str):
488
+ """
489
+ 更新订单状态(异步版本)
490
+
491
+ 功能说明:
492
+ 更新指定订单的支付状态,仅支持状态修改,其他字段不可修改。
493
+
494
+ 输入参数:
495
+ out_trade_no (str): 商户订单号,必填
496
+ payment_status (str): 支付状态,必填,可选值:
497
+ - "PENDING": 待支付
498
+ - "PAID": 已支付
499
+ - "REFUNDED": 已退款
500
+ - "CANCELLED": 已取消
501
+
502
+ 返回字段:
503
+ data (dict): 更新后的订单信息
504
+ - id (int): 订单ID
505
+ - out_trade_no (str): 商户订单号
506
+ - payment_status (str): 更新后的支付状态
507
+ - transaction_id (str): 微信交易号(如果已支付)
508
+ - openid (str): 用户openid(如果已支付)
509
+ - trade_type (str): 交易类型(如果已支付)
510
+ - bank_type (str): 银行类型(如果已支付)
511
+ - fee_type (str): 货币类型
512
+ - is_subscribe (str): 是否关注公众号(如果已支付)
513
+ - time_end (str): 支付完成时间(如果已支付)
514
+ - paid_at (str): 支付时间(如果已支付)
515
+ - updated_at (str): 订单更新时间
516
+ - remark (str): 订单备注
517
+ success (bool): 操作是否成功
518
+
519
+ 异常情况:
520
+ - 支付状态为空:返回错误信息"支付状态不能为空"
521
+ - 订单不存在:返回错误信息"订单不存在"
522
+ - 更新订单状态失败:返回错误信息"更新订单状态失败"
523
+ """
157
524
  data = {"payment_status": payment_status}
158
525
  data, success = await self._request(
159
526
  "PUT", f"/api/orders/{out_trade_no}/status", json=data
@@ -163,12 +530,51 @@ class OrderManagerAsync(AsyncClient):
163
530
  return data, True
164
531
 
165
532
  async def delete_order(self, out_trade_no: str):
533
+ """
534
+ 删除订单(异步版本)
535
+
536
+ 功能说明:
537
+ 根据订单号删除指定的订单记录。
538
+
539
+ 输入参数:
540
+ out_trade_no (str): 商户订单号,必填
541
+
542
+ 返回字段:
543
+ data (None): 删除成功时返回None
544
+ success (bool): 操作是否成功
545
+
546
+ 异常情况:
547
+ - 订单不存在:返回错误信息"订单不存在"
548
+ - 删除订单失败:返回错误信息"删除订单失败"
549
+ """
166
550
  data, success = await self._request("DELETE", f"/api/orders/{out_trade_no}")
167
551
  if not success:
168
552
  return {}, False
169
553
  return data, True
170
554
 
171
555
  async def get_order_stats(self):
556
+ """
557
+ 获取订单统计信息(异步版本)
558
+
559
+ 功能说明:
560
+ 获取订单的统计汇总信息,包括总订单数、各状态订单数量、总金额等。
561
+
562
+ 输入参数:
563
+
564
+
565
+ 返回字段:
566
+ data (dict): 订单统计信息
567
+ - total_orders (int): 总订单数量
568
+ - pending_orders (int): 待支付订单数量
569
+ - paid_orders (int): 已支付订单数量
570
+ - refunded_orders (int): 已退款订单数量
571
+ - total_amount (float): 总订单金额(元)
572
+ - total_fee (int): 总订单金额(分)
573
+ success (bool): 操作是否成功
574
+
575
+ 异常情况:
576
+ - 获取订单统计信息失败:返回错误信息"获取订单统计信息失败"
577
+ """
172
578
  data, success = await self._request("GET", "/api/orders/stats/summary")
173
579
  if not success:
174
580
  return {}, False
@@ -177,6 +583,30 @@ class OrderManagerAsync(AsyncClient):
177
583
  async def generate_qr_code(
178
584
  self, out_trade_no: str, payment_channel: str = "WECHAT"
179
585
  ):
586
+ """
587
+ 生成支付二维码(异步版本)
588
+
589
+ 功能说明:
590
+ 为指定订单生成支付二维码,支持微信支付和支付宝。二维码会自动上传到OSS并返回访问URL。
591
+
592
+ 输入参数:
593
+ out_trade_no (str): 商户订单号,必填
594
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
595
+ - "WECHAT": 微信支付
596
+ - "ALIPAY": 支付宝(暂未实现)
597
+
598
+ 返回字段:
599
+ data (dict): 二维码信息
600
+ - qr_code_url (str): 二维码图片URL,可直接用于显示
601
+ - out_trade_no (str): 商户订单号
602
+ success (bool): 操作是否成功
603
+
604
+ 异常情况:
605
+ - 订单号为空:返回错误信息"订单号不能为空"
606
+ - 订单不存在:返回错误信息"订单不存在"
607
+ - 不支持的支付渠道:抛出ValueError异常
608
+ - 生成支付二维码失败:返回错误信息"生成支付二维码失败"
609
+ """
180
610
  if payment_channel == "WECHAT":
181
611
  url = "/api/orders/wx_pay/generate_qr_code"
182
612
  elif payment_channel == "ALIPAY":
@@ -191,6 +621,32 @@ class OrderManagerAsync(AsyncClient):
191
621
  return data, True
192
622
 
193
623
  async def refund_order(self, out_trade_no: str, payment_channel: str = "WECHAT"):
624
+ """
625
+ 申请订单退款(异步版本)
626
+
627
+ 功能说明:
628
+ 为指定订单申请退款,支持微信支付和支付宝。退款申请提交后,系统会处理退款并更新订单状态。
629
+
630
+ 输入参数:
631
+ out_trade_no (str): 商户订单号,必填
632
+ payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
633
+ - "WECHAT": 微信支付
634
+ - "ALIPAY": 支付宝(暂未实现)
635
+
636
+ 返回字段:
637
+ data (dict): 退款信息
638
+ - out_refund_no (str): 退款单号,格式为"REFUND_订单号_时间戳"
639
+ - out_trade_no (str): 商户订单号
640
+ - total_fee (int): 退款金额(分)
641
+ success (bool): 操作是否成功
642
+
643
+ 异常情况:
644
+ - 订单号为空:返回错误信息"订单号不能为空"
645
+ - 订单不存在:返回错误信息"订单不存在"
646
+ - 订单状态不允许退款:返回错误信息"订单状态不允许退款"
647
+ - 不支持的支付渠道:抛出ValueError异常
648
+ - 退款申请失败:返回错误信息"退款申请失败"
649
+ """
194
650
  if payment_channel == "WECHAT":
195
651
  url = "/api/orders/wx_pay/refund"
196
652
  elif payment_channel == "ALIPAY":
@@ -14,6 +14,46 @@ class ProductManager(Client):
14
14
  features: str,
15
15
  sort_order: int,
16
16
  ):
17
+ """
18
+ 创建产品
19
+
20
+ 功能说明:
21
+ 创建新的产品,支持订阅产品和一次性产品,产品信息包括名称、描述、价格、分类等。
22
+
23
+ 输入参数:
24
+ name (str): 产品名称,必填
25
+ description (str): 产品描述,必填
26
+ price (float): 产品价格(元),必填
27
+ category (str): 产品分类,必填
28
+ status (str): 产品状态,必填,可选值:
29
+ - "ACTIVE": 激活
30
+ - "INACTIVE": 停用
31
+ is_subscription (bool): 是否为订阅产品,必填
32
+ subscription_period (str): 订阅周期,必填,可选值:
33
+ - "MONTHLY": 月付
34
+ - "YEARLY": 年付
35
+ features (str): 产品特性,JSON格式字符串,必填
36
+ sort_order (int): 排序权重,必填
37
+
38
+ 返回字段:
39
+ data (dict): 产品信息
40
+ - id (int): 产品ID
41
+ - name (str): 产品名称
42
+ - description (str): 产品描述
43
+ - price (float): 产品价格(元)
44
+ - category (str): 产品分类
45
+ - status (str): 产品状态
46
+ - is_subscription (bool): 是否为订阅产品
47
+ - subscription_period (str): 订阅周期
48
+ - features (str): 产品特性(JSON格式)
49
+ - sort_order (int): 排序权重
50
+ - created_at (str): 产品创建时间
51
+ - updated_at (str): 产品更新时间
52
+ success (bool): 操作是否成功
53
+
54
+ 异常情况:
55
+ - 产品创建失败:返回错误信息"产品创建失败"
56
+ """
17
57
  data = {
18
58
  "name": name,
19
59
  "description": description,
@@ -38,6 +78,44 @@ class ProductManager(Client):
38
78
  category: str = None,
39
79
  name: str = None,
40
80
  ):
81
+ """
82
+ 获取产品列表
83
+
84
+ 功能说明:
85
+ 分页查询产品列表,支持按状态、分类和名称进行筛选。
86
+
87
+ 输入参数:
88
+ page (int, 可选): 页码,默认为1,最小值为1
89
+ page_size (int, 可选): 每页数量,默认为10,范围为1-1000
90
+ status (str, 可选): 产品状态筛选,可选值:
91
+ - "ACTIVE": 激活
92
+ - "INACTIVE": 停用
93
+ category (str, 可选): 产品分类筛选
94
+ name (str, 可选): 产品名称搜索,支持模糊匹配
95
+
96
+ 返回字段:
97
+ data (dict): 产品列表信息
98
+ - products (list): 产品列表
99
+ - id (int): 产品ID
100
+ - name (str): 产品名称
101
+ - description (str): 产品描述
102
+ - price (float): 产品价格(元)
103
+ - category (str): 产品分类
104
+ - status (str): 产品状态
105
+ - is_subscription (bool): 是否为订阅产品
106
+ - subscription_period (str): 订阅周期
107
+ - features (str): 产品特性(JSON格式)
108
+ - sort_order (int): 排序权重
109
+ - created_at (str): 产品创建时间
110
+ - updated_at (str): 产品更新时间
111
+ - total (int): 总产品数量
112
+ - page (int): 当前页码
113
+ - page_size (int): 每页数量
114
+ success (bool): 操作是否成功
115
+
116
+ 异常情况:
117
+ - 获取产品列表失败:返回错误信息"获取产品列表失败"
118
+ """
41
119
  params = {
42
120
  "page": page,
43
121
  "page_size": page_size,
@@ -57,6 +135,35 @@ class ProductManager(Client):
57
135
  return data, True
58
136
 
59
137
  def get_product_detail(self, product_id: str):
138
+ """
139
+ 获取产品详情
140
+
141
+ 功能说明:
142
+ 根据产品ID获取产品的详细信息。
143
+
144
+ 输入参数:
145
+ product_id (str): 产品ID,必填
146
+
147
+ 返回字段:
148
+ data (dict): 产品详细信息
149
+ - id (int): 产品ID
150
+ - name (str): 产品名称
151
+ - description (str): 产品描述
152
+ - price (float): 产品价格(元)
153
+ - category (str): 产品分类
154
+ - status (str): 产品状态
155
+ - is_subscription (bool): 是否为订阅产品
156
+ - subscription_period (str): 订阅周期
157
+ - features (str): 产品特性(JSON格式)
158
+ - sort_order (int): 排序权重
159
+ - created_at (str): 产品创建时间
160
+ - updated_at (str): 产品更新时间
161
+ success (bool): 操作是否成功
162
+
163
+ 异常情况:
164
+ - 产品不存在:返回错误信息"产品不存在"
165
+ - 获取产品详情失败:返回错误信息"获取产品详情失败"
166
+ """
60
167
  data, success = self._request("GET", f"/api/products/{product_id}")
61
168
  if not success:
62
169
  return {}, False
@@ -75,6 +182,48 @@ class ProductManager(Client):
75
182
  features: str,
76
183
  sort_order: int,
77
184
  ):
185
+ """
186
+ 更新产品信息
187
+
188
+ 功能说明:
189
+ 更新指定产品的信息,包括名称、描述、价格、状态等。
190
+
191
+ 输入参数:
192
+ product_id (str): 产品ID,必填
193
+ name (str): 产品名称,必填
194
+ description (str): 产品描述,必填
195
+ price (float): 产品价格(元),必填
196
+ category (str): 产品分类,必填
197
+ status (str): 产品状态,必填,可选值:
198
+ - "ACTIVE": 激活
199
+ - "INACTIVE": 停用
200
+ is_subscription (bool): 是否为订阅产品,必填
201
+ subscription_period (str): 订阅周期,必填,可选值:
202
+ - "MONTHLY": 月付
203
+ - "YEARLY": 年付
204
+ features (str): 产品特性,JSON格式字符串,必填
205
+ sort_order (int): 排序权重,必填
206
+
207
+ 返回字段:
208
+ data (dict): 更新后的产品信息
209
+ - id (int): 产品ID
210
+ - name (str): 产品名称
211
+ - description (str): 产品描述
212
+ - price (float): 产品价格(元)
213
+ - category (str): 产品分类
214
+ - status (str): 产品状态
215
+ - is_subscription (bool): 是否为订阅产品
216
+ - subscription_period (str): 订阅周期
217
+ - features (str): 产品特性(JSON格式)
218
+ - sort_order (int): 排序权重
219
+ - created_at (str): 产品创建时间
220
+ - updated_at (str): 产品更新时间
221
+ success (bool): 操作是否成功
222
+
223
+ 异常情况:
224
+ - 产品不存在:返回错误信息"产品不存在"
225
+ - 产品更新失败:返回错误信息"产品更新失败"
226
+ """
78
227
  data = {
79
228
  "name": name,
80
229
  "description": description,
@@ -92,12 +241,46 @@ class ProductManager(Client):
92
241
  return data, True
93
242
 
94
243
  def delete_product(self, product_id: str):
244
+ """
245
+ 删除产品
246
+
247
+ 功能说明:
248
+ 根据产品ID删除指定的产品记录。
249
+
250
+ 输入参数:
251
+ product_id (str): 产品ID,必填
252
+
253
+ 返回字段:
254
+ data (None): 删除成功时返回None
255
+ success (bool): 操作是否成功
256
+
257
+ 异常情况:
258
+ - 产品不存在:返回错误信息"产品不存在"
259
+ - 删除产品失败:返回错误信息"删除产品失败"
260
+ """
95
261
  data, success = self._request("DELETE", f"/api/products/{product_id}")
96
262
  if not success:
97
263
  return {}, False
98
264
  return data, True
99
265
 
100
266
  def get_product_categories(self):
267
+ """
268
+ 获取产品分类列表
269
+
270
+ 功能说明:
271
+ 获取所有可用的产品分类列表。
272
+
273
+ 输入参数:
274
+
275
+
276
+ 返回字段:
277
+ data (dict): 产品分类信息
278
+ - categories (list): 产品分类列表,如["subscription", "service", "addon"]
279
+ success (bool): 操作是否成功
280
+
281
+ 异常情况:
282
+ - 获取产品分类失败:返回错误信息"获取产品分类失败"
283
+ """
101
284
  data, success = self._request("GET", "/api/products/categories/list")
102
285
  if not success:
103
286
  return {}, False
@@ -11,6 +11,39 @@ class UserManager(Client):
11
11
  role: Optional[str] = None,
12
12
  is_active: Optional[bool] = None,
13
13
  ):
14
+ """
15
+ 获取用户列表
16
+
17
+ 功能说明:
18
+ 分页查询用户列表,支持按角色和状态进行筛选。仅管理员可访问。
19
+
20
+ 输入参数:
21
+ page (int, 可选): 页码,默认为1,最小值为1
22
+ page_size (int, 可选): 每页数量,默认为10,范围为1-1000
23
+ role (str, 可选): 用户角色筛选,可选值:
24
+ - "admin": 管理员
25
+ - "user": 普通用户
26
+ is_active (bool, 可选): 用户状态筛选,True为激活,False为禁用
27
+
28
+ 返回字段:
29
+ data (dict): 用户列表信息
30
+ - users (list): 用户列表
31
+ - id (int): 用户ID
32
+ - username (str): 用户名
33
+ - email (str): 邮箱地址
34
+ - role (str): 用户角色
35
+ - is_active (bool): 是否激活
36
+ - created_at (str): 用户创建时间
37
+ - last_login_at (str): 最后登录时间
38
+ - total (int): 总用户数量
39
+ - page (int): 当前页码
40
+ - page_size (int): 每页数量
41
+ success (bool): 操作是否成功
42
+
43
+ 异常情况:
44
+ - 权限不足:返回错误信息"权限不足"
45
+ - 获取用户列表失败:返回错误信息"获取用户列表失败"
46
+ """
14
47
  params = {"page": page, "page_size": page_size}
15
48
  if role is not None:
16
49
  params["role"] = role
@@ -22,6 +55,36 @@ class UserManager(Client):
22
55
  return data, True
23
56
 
24
57
  def create_user(self, username: str, password: str, email: str, role: str):
58
+ """
59
+ 创建用户
60
+
61
+ 功能说明:
62
+ 创建新的用户账户,仅管理员可访问。
63
+
64
+ 输入参数:
65
+ username (str): 用户名,必填
66
+ password (str): 密码,必填
67
+ email (str): 邮箱地址,必填
68
+ role (str): 用户角色,必填,可选值:
69
+ - "admin": 管理员
70
+ - "user": 普通用户
71
+
72
+ 返回字段:
73
+ data (dict): 用户信息
74
+ - id (int): 用户ID
75
+ - username (str): 用户名
76
+ - email (str): 邮箱地址
77
+ - role (str): 用户角色
78
+ - is_active (bool): 是否激活,默认为True
79
+ - created_at (str): 用户创建时间
80
+ success (bool): 操作是否成功
81
+
82
+ 异常情况:
83
+ - 权限不足:返回错误信息"权限不足"
84
+ - 用户名已存在:返回错误信息"用户名已存在"
85
+ - 邮箱已存在:返回错误信息"邮箱已存在"
86
+ - 用户创建失败:返回错误信息"用户创建失败"
87
+ """
25
88
  data = {
26
89
  "username": username,
27
90
  "password": password,
@@ -36,6 +99,39 @@ class UserManager(Client):
36
99
  def update_user(
37
100
  self, user_id: int, username: str, email: str, role: str, is_active: bool
38
101
  ):
102
+ """
103
+ 更新用户信息
104
+
105
+ 功能说明:
106
+ 更新指定用户的信息,包括用户名、邮箱、角色和状态。仅管理员可访问。
107
+
108
+ 输入参数:
109
+ user_id (int): 用户ID,必填
110
+ username (str): 用户名,必填
111
+ email (str): 邮箱地址,必填
112
+ role (str): 用户角色,必填,可选值:
113
+ - "admin": 管理员
114
+ - "user": 普通用户
115
+ is_active (bool): 是否激活,必填
116
+
117
+ 返回字段:
118
+ data (dict): 更新后的用户信息
119
+ - id (int): 用户ID
120
+ - username (str): 用户名
121
+ - email (str): 邮箱地址
122
+ - role (str): 用户角色
123
+ - is_active (bool): 是否激活
124
+ - created_at (str): 用户创建时间
125
+ - updated_at (str): 用户信息更新时间
126
+ success (bool): 操作是否成功
127
+
128
+ 异常情况:
129
+ - 权限不足:返回错误信息"权限不足"
130
+ - 用户不存在:返回错误信息"用户不存在"
131
+ - 用户名已存在:返回错误信息"用户名已存在"
132
+ - 邮箱已存在:返回错误信息"邮箱已存在"
133
+ - 用户信息更新失败:返回错误信息"用户信息更新失败"
134
+ """
39
135
  data = {
40
136
  "username": username,
41
137
  "email": email,
@@ -48,18 +144,80 @@ class UserManager(Client):
48
144
  return data, True
49
145
 
50
146
  def delete_user(self, user_id: int):
147
+ """
148
+ 删除用户
149
+
150
+ 功能说明:
151
+ 根据用户ID删除指定的用户记录。仅管理员可访问。
152
+
153
+ 输入参数:
154
+ user_id (int): 用户ID,必填
155
+
156
+ 返回字段:
157
+ data (None): 删除成功时返回None
158
+ success (bool): 操作是否成功
159
+
160
+ 异常情况:
161
+ - 权限不足:返回错误信息"权限不足"
162
+ - 用户不存在:返回错误信息"用户不存在"
163
+ - 删除用户失败:返回错误信息"删除用户失败"
164
+ """
51
165
  data, success = self._request("DELETE", f"/api/users/{user_id}")
52
166
  if not success:
53
167
  return {}, False
54
168
  return data, True
55
169
 
56
170
  def get_user_detail(self, user_id: int):
171
+ """
172
+ 获取用户详情
173
+
174
+ 功能说明:
175
+ 根据用户ID获取用户的详细信息。仅管理员可访问。
176
+
177
+ 输入参数:
178
+ user_id (int): 用户ID,必填
179
+
180
+ 返回字段:
181
+ data (dict): 用户详细信息
182
+ - id (int): 用户ID
183
+ - username (str): 用户名
184
+ - email (str): 邮箱地址
185
+ - role (str): 用户角色
186
+ - is_active (bool): 是否激活
187
+ - created_at (str): 用户创建时间
188
+ - last_login_at (str): 最后登录时间
189
+ success (bool): 操作是否成功
190
+
191
+ 异常情况:
192
+ - 权限不足:返回错误信息"权限不足"
193
+ - 用户不存在:返回错误信息"用户不存在"
194
+ - 获取用户详情失败:返回错误信息"获取用户详情失败"
195
+ """
57
196
  data, success = self._request("GET", f"/api/users/{user_id}")
58
197
  if not success:
59
198
  return {}, False
60
199
  return data, True
61
200
 
62
201
  def reset_user_password(self, user_id: int, new_password: str):
202
+ """
203
+ 重置用户密码
204
+
205
+ 功能说明:
206
+ 重置指定用户的密码。仅管理员可访问。
207
+
208
+ 输入参数:
209
+ user_id (int): 用户ID,必填
210
+ new_password (str): 新密码,必填
211
+
212
+ 返回字段:
213
+ data (None): 重置成功时返回None
214
+ success (bool): 操作是否成功
215
+
216
+ 异常情况:
217
+ - 权限不足:返回错误信息"权限不足"
218
+ - 用户不存在:返回错误信息"用户不存在"
219
+ - 密码重置失败:返回错误信息"密码重置失败"
220
+ """
63
221
  data = {"new_password": new_password}
64
222
  data, success = self._request(
65
223
  "POST", f"/api/users/{user_id}/reset-password", json=data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pixelarraythirdparty
3
- Version: 1.0.4
3
+ Version: 1.0.5
4
4
  Summary: PixelArray 第三方微服务客户端
5
5
  Author-email: Lu qi <qi.lu@pixelarrayai.com>
6
6
  License-Expression: MIT
@@ -0,0 +1,15 @@
1
+ pixelarraythirdparty/__init__.py,sha256=cLw3MHNC7dl2u-nOF78E6O_r2dUgmwl3x4wzSpulw1s,458
2
+ pixelarraythirdparty/client.py,sha256=r63EDeyPhf3Y1sORW24tDSIqo2c8E3pwbik7r0Xy5zo,1678
3
+ pixelarraythirdparty/celery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ pixelarraythirdparty/celery/celery.py,sha256=paZFSnWKvwNEDyi-tr4z2dwWxlLMX58WmS_hDezyuaE,5690
5
+ pixelarraythirdparty/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ pixelarraythirdparty/order/order.py,sha256=kBhpinympJjsu-4UmUazXhJTCLkGlMHcjmpOXbnVmek,27144
7
+ pixelarraythirdparty/product/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ pixelarraythirdparty/product/product.py,sha256=_rcAtsZEWA3Ta1R9SBWnzQmjab-vf3bnSEySb4PPU-c,10586
9
+ pixelarraythirdparty/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ pixelarraythirdparty/user/user.py,sha256=UY-O7qO8AIWo3GRQaHqC3AMQc4w3bD9KgmPLoUo-l0I,8380
11
+ pixelarraythirdparty-1.0.5.dist-info/licenses/LICENSE,sha256=O-g1dUr0U50rSIvmWE9toiVkSgFpVt72_MHITbWvAqA,1067
12
+ pixelarraythirdparty-1.0.5.dist-info/METADATA,sha256=s86-xWcTp2UgdmJP2hLTpW4rZU91cjUU-8WLKjGq3SI,993
13
+ pixelarraythirdparty-1.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
14
+ pixelarraythirdparty-1.0.5.dist-info/top_level.txt,sha256=dzG2Ut8j7noUqj_0ZQjcIDAeHYCh_9WtlxjAxtoyufo,21
15
+ pixelarraythirdparty-1.0.5.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- pixelarraythirdparty/__init__.py,sha256=EShklfQHjt1FKP_lKD4GTfwFXZCueZt31qiGnQN6oh8,458
2
- pixelarraythirdparty/client.py,sha256=r63EDeyPhf3Y1sORW24tDSIqo2c8E3pwbik7r0Xy5zo,1678
3
- pixelarraythirdparty/celery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- pixelarraythirdparty/celery/celery.py,sha256=Oaa7pBztL-FM0X5NSCjjfZP80AUsnnme5Z3RxXIJsZg,1178
5
- pixelarraythirdparty/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- pixelarraythirdparty/order/order.py,sha256=77UYvDteQdkVvEVG588ehmN5C9bpGAYkJsLpZqCH1Mg,6336
7
- pixelarraythirdparty/product/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- pixelarraythirdparty/product/product.py,sha256=eHU0VKal1QpJs6F4_VxLoBYeeqQ19elEogH2Qpw7IDo,3029
9
- pixelarraythirdparty/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pixelarraythirdparty/user/user.py,sha256=tbcFsrNEdWz4op7V_zJ5o8neBuI4ogl4dgHS-uSIAX0,2155
11
- pixelarraythirdparty-1.0.4.dist-info/licenses/LICENSE,sha256=O-g1dUr0U50rSIvmWE9toiVkSgFpVt72_MHITbWvAqA,1067
12
- pixelarraythirdparty-1.0.4.dist-info/METADATA,sha256=nefI-ENI5vYKvBvGGNFc5aakZh7ptR12S6a7Yk7DpSY,993
13
- pixelarraythirdparty-1.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
14
- pixelarraythirdparty-1.0.4.dist-info/top_level.txt,sha256=dzG2Ut8j7noUqj_0ZQjcIDAeHYCh_9WtlxjAxtoyufo,21
15
- pixelarraythirdparty-1.0.4.dist-info/RECORD,,