mdbq 3.4.1__py3-none-any.whl → 3.4.3__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.
- mdbq/aggregation/datashow.py +144 -67
- mdbq/aggregation/query_data.py +78 -1
- {mdbq-3.4.1.dist-info → mdbq-3.4.3.dist-info}/METADATA +1 -1
- {mdbq-3.4.1.dist-info → mdbq-3.4.3.dist-info}/RECORD +6 -6
- {mdbq-3.4.1.dist-info → mdbq-3.4.3.dist-info}/WHEEL +0 -0
- {mdbq-3.4.1.dist-info → mdbq-3.4.3.dist-info}/top_level.txt +0 -0
mdbq/aggregation/datashow.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- coding: UTF-8 –*-
|
2
|
+
import decimal
|
2
3
|
import os
|
3
4
|
import re
|
4
5
|
import socket
|
@@ -121,14 +122,14 @@ class DataShow:
|
|
121
122
|
df = pd.concat(__res, ignore_index=True)
|
122
123
|
return df
|
123
124
|
|
124
|
-
def pov_city(self, db_name='生意经3', filename='销售地域分布', start_date=None, end_date=None,
|
125
|
+
def pov_city(self, db_name='生意经3', filename='销售地域分布', start_date=None, end_date=None, percent=None):
|
125
126
|
"""
|
126
127
|
生意经 省份城市销售分析
|
127
128
|
"""
|
128
129
|
if not start_date:
|
129
130
|
start_date = self.start_date
|
130
131
|
if not end_date:
|
131
|
-
end_date = self.
|
132
|
+
end_date = self.today.strftime('%Y-%m-%d')
|
132
133
|
pov_set = self.getdata(
|
133
134
|
db_name='属性设置3',
|
134
135
|
table_name=f'城市等级',
|
@@ -152,21 +153,6 @@ class DataShow:
|
|
152
153
|
**{'销售额': ('销售额', np.sum), '退款额': ('退款额', np.sum)})
|
153
154
|
df_city = df_city[df_city['销售额'] > 0]
|
154
155
|
|
155
|
-
# 将城市等级添加到df
|
156
|
-
pov_set = pov_set[['城市等级', '城市']]
|
157
|
-
pov_set.drop_duplicates(subset='城市', keep='last', inplace=True, ignore_index=True)
|
158
|
-
df_city = pd.merge(df_city, pov_set, left_on=['城市'], right_on=['城市'], how='left')
|
159
|
-
df_level = df_city.groupby(['店铺名称', '城市等级'], as_index=False).agg(
|
160
|
-
**{'销售额': ('销售额', np.sum), '退款额': ('退款额', np.sum)})
|
161
|
-
data_list = [('销售 按城市等级', df_level['城市等级'].tolist(), df_level['销售额'].tolist())]
|
162
|
-
if percentage:
|
163
|
-
print(df_city['销售额'].sum())
|
164
|
-
return
|
165
|
-
df_city1 = df_city[df_city['销售额'] > int(percentage)]
|
166
|
-
data_list += ('销售额top城市', df_city1['城市'].tolist(), df_city1['销售额'].tolist())
|
167
|
-
df_city2 = df_city[df_city['退款额'] > int(percentage)]
|
168
|
-
data_list += ('退款额top城市', df_city2['城市'].tolist(), df_city2['退款额'].tolist())
|
169
|
-
|
170
156
|
# 省份
|
171
157
|
pro_list = ['日期', '店铺名称', '省份', '销售额', '退款额']
|
172
158
|
year = datetime.datetime.today().year
|
@@ -181,46 +167,122 @@ class DataShow:
|
|
181
167
|
# print(df_pov[df_pov['省份'] == '广东'])
|
182
168
|
df_pov = df_pov.groupby(['店铺名称', '省份'], as_index=False).agg(
|
183
169
|
**{'销售额': ('销售额', np.sum), '退款额': ('退款额', np.sum)})
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
170
|
+
df_pov.drop_duplicates(subset='省份', keep='last', inplace=True, ignore_index=True)
|
171
|
+
|
172
|
+
# df_pov2: gmv 的饼图
|
173
|
+
df_pov['gmv销售'] = df_pov.apply(lambda x: x['销售额'] + x['退款额'], axis=1)
|
174
|
+
df_pov.sort_values(['gmv销售'], ascending=[False], ignore_index=True, inplace=True)
|
175
|
+
df_pov2 = df_pov.copy()
|
176
|
+
sales_sum = df_pov2['gmv销售'].sum()
|
177
|
+
df_pov2['省份'] = df_pov2.apply(lambda x: '其他' if (x['gmv销售'] / sales_sum) < percent else x['省份'], axis=1)
|
178
|
+
|
179
|
+
# df_pov3: 销售额的饼图
|
180
|
+
df_pov.sort_values(['销售额'], ascending=[False], ignore_index=True, inplace=True)
|
181
|
+
df_pov3 = df_pov.copy()
|
182
|
+
sales_sum = df_pov3['销售额'].sum()
|
183
|
+
df_pov3['省份'] = df_pov3.apply(lambda x: '其他' if (x['销售额'] / sales_sum) < 0.016 else x['省份'], axis=1)
|
184
|
+
|
185
|
+
# df_pov1: 省份 销售额 堆叠柱形图
|
186
|
+
df_pov1 = df_pov.copy()
|
187
|
+
df_pov1 = df_pov1.head(15)
|
188
|
+
pov_sales_sum = df_pov1['销售额'].tolist()
|
189
|
+
pov_refunds = df_pov1['退款额'].tolist()
|
190
|
+
percentages = df_pov1['gmv销售'] / df_pov1['gmv销售'].sum() * 100
|
191
|
+
bar_list = [('省份销售/退款', df_pov1['省份'].tolist(), pov_sales_sum, percentages, pov_refunds)]
|
192
|
+
|
193
|
+
# 将城市等级添加到df
|
194
|
+
pov_set = pov_set[['城市等级', '城市']]
|
195
|
+
pov_set.drop_duplicates(subset='城市', keep='last', inplace=True, ignore_index=True)
|
196
|
+
df_city = pd.merge(df_city, pov_set, left_on=['城市'], right_on=['城市'], how='left')
|
197
|
+
df_level = df_city.groupby(['店铺名称', '城市等级'], as_index=False).agg(
|
198
|
+
**{'销售额': ('销售额', np.sum), '退款额': ('退款额', np.sum)})
|
199
|
+
pie_list = [
|
200
|
+
('按城市等级', df_level['城市等级'].tolist(), df_level['销售额'].tolist()),
|
201
|
+
('净销售 top省份', df_pov3['省份'].tolist(), df_pov3['销售额'].tolist()),
|
202
|
+
('GMV top省份', df_pov2['省份'].tolist(), df_pov2['gmv销售'].tolist())
|
203
|
+
]
|
204
|
+
|
205
|
+
# df_city1: 城市 销售额 堆叠柱形图
|
206
|
+
df_city.drop_duplicates(subset='城市', keep='last', inplace=True, ignore_index=True)
|
207
|
+
df_city['gmv销售'] = df_city.apply(lambda x: x['销售额'] + x['退款额'], axis=1)
|
208
|
+
df_city.sort_values(['销售额'], ascending=[False], ignore_index=True, inplace=True)
|
209
|
+
df_city = df_city[df_city['城市'] != '其他']
|
210
|
+
percentages = df_city['gmv销售'] / df_city['gmv销售'].sum() * 100
|
211
|
+
df_city1 = df_city.head(15)
|
212
|
+
city_sales_sum = df_city1['销售额'].tolist()
|
213
|
+
city_refunds = df_city1['退款额'].tolist()
|
214
|
+
bar_list += [('城市销售/退款', df_city1['城市'].tolist(), city_sales_sum, percentages, city_refunds)]
|
189
215
|
|
190
216
|
t_p1 = []
|
191
217
|
for i in range(3):
|
192
|
-
t_p1.extend([{"type": "pie"}])
|
218
|
+
t_p1.extend([{"type": "pie"}])
|
193
219
|
t_p2 = []
|
194
220
|
for i in range(3):
|
195
|
-
t_p2.extend([{"type": "
|
221
|
+
t_p2.extend([{"type": "bar"}])
|
196
222
|
specs = [t_p1, t_p2]
|
197
223
|
fig = make_subplots(rows=2, cols=3, specs=specs)
|
224
|
+
|
198
225
|
row = 0
|
199
226
|
col = 0
|
200
|
-
for
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
)
|
219
|
-
|
220
|
-
|
221
|
-
|
227
|
+
for i in range(6):
|
228
|
+
if row // 3 == 0:
|
229
|
+
try:
|
230
|
+
title, labels, values = pie_list[col % 3]
|
231
|
+
except:
|
232
|
+
row += 1
|
233
|
+
col += 1
|
234
|
+
continue
|
235
|
+
# 添加饼图
|
236
|
+
fig.add_trace(
|
237
|
+
go.Pie(
|
238
|
+
labels=labels,
|
239
|
+
values=values,
|
240
|
+
name=title,
|
241
|
+
textinfo='label+percent'
|
242
|
+
),
|
243
|
+
row=row//3 + 1,
|
244
|
+
col=col % 3 + 1,
|
245
|
+
)
|
246
|
+
else:
|
247
|
+
try:
|
248
|
+
title, labels, values, percentages, refunds = bar_list[col % 3]
|
249
|
+
except:
|
250
|
+
row += 1
|
251
|
+
col += 1
|
252
|
+
continue
|
253
|
+
bar = go.Bar(
|
254
|
+
x=labels,
|
255
|
+
y=values,
|
256
|
+
name='销售额',
|
257
|
+
orientation='v', # 垂直柱形图
|
258
|
+
# text=percentages.map('{:.1f}%'.format), # 设置要显示的文本(百分比)
|
259
|
+
# textposition = 'outside', # 设置文本位置在柱形图外部
|
260
|
+
width=0.55, # 调整柱子最大宽度
|
261
|
+
# marker_color='blue',
|
262
|
+
)
|
263
|
+
fig.add_trace(
|
264
|
+
bar,
|
265
|
+
row=row // 3 + 1,
|
266
|
+
col=col % 3 + 1,
|
267
|
+
)
|
268
|
+
bar = go.Bar(
|
269
|
+
x=labels,
|
270
|
+
y=refunds,
|
271
|
+
name='退款额',
|
272
|
+
orientation='v', # 垂直柱形图
|
273
|
+
text=percentages.map('{:.1f}%'.format), # 设置要显示的文本(百分比)
|
274
|
+
textposition='outside', # 设置文本位置在柱形图外部
|
275
|
+
width=0.55, # 调整柱子最大宽度
|
276
|
+
# marker_color = 'red',
|
277
|
+
)
|
278
|
+
fig.add_trace(
|
279
|
+
bar,
|
280
|
+
row=row // 3 + 1,
|
281
|
+
col=col % 3 + 1,
|
282
|
+
)
|
283
|
+
|
222
284
|
x = 0.14 + 0.355 * (row % 3)
|
223
|
-
y =
|
285
|
+
y = 0.99 - 0.58 * (row // 3)
|
224
286
|
fig.add_annotation(
|
225
287
|
text=title,
|
226
288
|
x=x,
|
@@ -229,31 +291,36 @@ class DataShow:
|
|
229
291
|
yref='paper',
|
230
292
|
showarrow=True, # 显示箭头
|
231
293
|
align="left", # 文本对齐方式
|
232
|
-
font=dict(size=14)
|
294
|
+
font=dict(size=14)
|
233
295
|
)
|
234
296
|
row += 1
|
235
297
|
col += 1
|
298
|
+
|
236
299
|
fig.update_layout(
|
237
300
|
title_text=f'销售地域分布',
|
238
|
-
# xaxis_title='X Axis',
|
239
|
-
# yaxis_title='Y Axis',
|
240
|
-
# width=self.screen_width // 1.4,
|
241
|
-
# height=self.screen_width // 2,
|
242
301
|
margin=dict(
|
243
302
|
l=100, # 左边距
|
244
303
|
r=100,
|
245
|
-
t=
|
246
|
-
b=
|
304
|
+
t=80, # 上边距
|
305
|
+
b=80,
|
247
306
|
),
|
248
307
|
legend=dict(
|
249
|
-
# title='Legend Title', # 图例标题
|
250
308
|
orientation='v', # 图例方向('h' 表示水平,'v' 表示垂直)
|
251
|
-
# x=0.5, # 图例在图表中的 x 位置(0 到 1 的比例)
|
252
|
-
# y=1.02, # 图例在图表中的 y 位置(稍微超出顶部以避免遮挡数据)
|
253
309
|
font=dict(
|
254
310
|
size=12 # 图例字体大小
|
255
311
|
)
|
256
|
-
)
|
312
|
+
),
|
313
|
+
barmode='stack', # stack(堆叠)、group(并列)、overlay(覆盖)、relative(相对)
|
314
|
+
)
|
315
|
+
fig.add_annotation(
|
316
|
+
text=f'统计时间周期: {start_date}~{end_date} tips: 饼图剔除了销售<{f"{percent * 100}%"}的数据',
|
317
|
+
x=0.5,
|
318
|
+
y=-0.09,
|
319
|
+
xref='paper', # # 相对于整个图表区域
|
320
|
+
yref='paper',
|
321
|
+
showarrow=False, # 显示箭头
|
322
|
+
align="left", # 文本对齐方式
|
323
|
+
font=dict(size=12),
|
257
324
|
)
|
258
325
|
fig.write_html(os.path.join(self.path, f'{filename}.html'))
|
259
326
|
|
@@ -369,7 +436,7 @@ class DataShow:
|
|
369
436
|
)
|
370
437
|
count2 += 1
|
371
438
|
fig.update_layout(
|
372
|
-
title_text=f'店铺流量来源
|
439
|
+
title_text=f'店铺流量来源',
|
373
440
|
# xaxis_title='X Axis',
|
374
441
|
# yaxis_title='Y Axis',
|
375
442
|
# width=self.screen_width // 1.4,
|
@@ -390,6 +457,16 @@ class DataShow:
|
|
390
457
|
)
|
391
458
|
)
|
392
459
|
)
|
460
|
+
fig.add_annotation(
|
461
|
+
text=f'最近数据日期: {max_date}',
|
462
|
+
x=0.5,
|
463
|
+
y=-0.25,
|
464
|
+
xref='paper', # # 相对于整个图表区域
|
465
|
+
yref='paper',
|
466
|
+
showarrow=False, # 显示箭头
|
467
|
+
align="left", # 文本对齐方式
|
468
|
+
font=dict(size=12),
|
469
|
+
)
|
393
470
|
fig.write_html(os.path.join(self.path, f'{filename}.html'))
|
394
471
|
|
395
472
|
def tg(self, db_name='聚合数据', table_name='多店推广场景_按日聚合', pro_list=None, filename='多店推广场景', days=None, start_date=None, end_date=None):
|
@@ -582,8 +659,8 @@ class DataShow:
|
|
582
659
|
y=values,
|
583
660
|
name=table_name,
|
584
661
|
orientation='v', # 垂直柱形图
|
585
|
-
text=percentages.map('{:.
|
586
|
-
|
662
|
+
text=percentages.map('{:.1f}%'.format), # 设置要显示的文本(百分比)
|
663
|
+
textposition = 'outside', # 设置文本位置在柱形图外部
|
587
664
|
width=0.55 # 调整柱子最大宽度
|
588
665
|
)
|
589
666
|
row = count // 3 + 1
|
@@ -714,8 +791,8 @@ class DataShow:
|
|
714
791
|
y=values,
|
715
792
|
name=table_name,
|
716
793
|
orientation='v', # 垂直柱形图
|
717
|
-
text=percentages.map('{:.
|
718
|
-
|
794
|
+
text=percentages.map('{:.1f}%'.format), # 设置要显示的文本(百分比)
|
795
|
+
textposition = 'outside', # 设置文本位置在柱形图外部
|
719
796
|
width=0.55 # 调整柱子最大宽度
|
720
797
|
)
|
721
798
|
row = count // 3 + 1
|
@@ -811,7 +888,7 @@ def main():
|
|
811
888
|
# last_date=None,
|
812
889
|
# d_str='近30天',
|
813
890
|
# )
|
814
|
-
|
891
|
+
|
815
892
|
# # 达摩盘人群画像
|
816
893
|
# crowid_list = [
|
817
894
|
# 40457166,
|
@@ -825,9 +902,9 @@ def main():
|
|
825
902
|
ds.pov_city(
|
826
903
|
db_name='生意经3',
|
827
904
|
filename='销售地域分布',
|
828
|
-
start_date='2024-
|
829
|
-
end_date=
|
830
|
-
|
905
|
+
start_date='2024-12-01',
|
906
|
+
end_date=None,
|
907
|
+
percent=0.015,
|
831
908
|
)
|
832
909
|
|
833
910
|
if __name__ == '__main__':
|
mdbq/aggregation/query_data.py
CHANGED
@@ -1193,6 +1193,83 @@ class MysqlDatasQuery:
|
|
1193
1193
|
)
|
1194
1194
|
return True
|
1195
1195
|
|
1196
|
+
def item_up(self, db_name='聚合数据', table_name='淘宝店铺货品'):
|
1197
|
+
start_date, end_date = self.months_data(num=self.months)
|
1198
|
+
projection = {}
|
1199
|
+
df_set = self.download.data_to_df(
|
1200
|
+
db_name='属性设置3',
|
1201
|
+
table_name=f'货品年份基准',
|
1202
|
+
start_date=start_date,
|
1203
|
+
end_date=end_date,
|
1204
|
+
projection={'商品id':1, '上市年份':1},
|
1205
|
+
)
|
1206
|
+
df = self.download.data_to_df(
|
1207
|
+
db_name='市场数据3',
|
1208
|
+
table_name=f'淘宝店铺数据',
|
1209
|
+
start_date=start_date,
|
1210
|
+
end_date=end_date,
|
1211
|
+
projection=projection,
|
1212
|
+
)
|
1213
|
+
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
1214
|
+
df = df[df['日期'] == pd.to_datetime('2024-12-12')]
|
1215
|
+
|
1216
|
+
df_set['商品id'] = df_set['商品id'].astype('int64')
|
1217
|
+
df['商品id'] = df['商品id'].astype('int64')
|
1218
|
+
df_set.sort_values('商品id', ascending=False, ignore_index=True, inplace=True)
|
1219
|
+
|
1220
|
+
def check_year(item_id):
|
1221
|
+
for item in df_set.to_dict(orient='records'):
|
1222
|
+
if item_id > item['商品id']:
|
1223
|
+
return item['上市年份']
|
1224
|
+
|
1225
|
+
df['上市年份'] = df['商品id'].apply(lambda x: check_year(x))
|
1226
|
+
p = df.pop('上市年份')
|
1227
|
+
df.insert(loc=5, column='上市年份', value=p)
|
1228
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
1229
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name}')
|
1230
|
+
set_typ = {
|
1231
|
+
'日期': 'date',
|
1232
|
+
'店铺id': 'bigint',
|
1233
|
+
'店铺名称': 'varchar(255)',
|
1234
|
+
'商家id': 'bigint',
|
1235
|
+
'商品id': 'bigint',
|
1236
|
+
'商品标题': 'varchar(255)',
|
1237
|
+
'商品链接': 'varchar(255)',
|
1238
|
+
'商品图片': 'varchar(255)',
|
1239
|
+
'销量': 'varchar(50)',
|
1240
|
+
'页面价': 'int',
|
1241
|
+
'data_sku': 'varchar(1000)',
|
1242
|
+
'更新时间': 'timestamp',
|
1243
|
+
'上市年份': 'varchar(50)',
|
1244
|
+
}
|
1245
|
+
m_engine.df_to_mysql(
|
1246
|
+
df=df,
|
1247
|
+
db_name=db_name,
|
1248
|
+
table_name=table_name,
|
1249
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1250
|
+
move_insert=True, # 先删除,再插入
|
1251
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1252
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1253
|
+
count=None,
|
1254
|
+
filename=None, # 用来追踪处理进度
|
1255
|
+
reset_id=True, # 是否重置自增列
|
1256
|
+
set_typ=set_typ,
|
1257
|
+
)
|
1258
|
+
company_engine.df_to_mysql(
|
1259
|
+
df=df,
|
1260
|
+
db_name=db_name,
|
1261
|
+
table_name=table_name,
|
1262
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1263
|
+
move_insert=True, # 先删除,再插入
|
1264
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1265
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1266
|
+
count=None,
|
1267
|
+
filename=None, # 用来追踪处理进度
|
1268
|
+
reset_id=True, # 是否重置自增列
|
1269
|
+
set_typ=set_typ,
|
1270
|
+
)
|
1271
|
+
|
1272
|
+
|
1196
1273
|
def spph(self, db_name='聚合数据', table_name='天猫_商品排行'):
|
1197
1274
|
""" """
|
1198
1275
|
start_date, end_date = self.months_data(num=self.months)
|
@@ -3840,7 +3917,7 @@ if __name__ == '__main__':
|
|
3840
3917
|
sdq = MysqlDatasQuery() # 实例化数据处理类
|
3841
3918
|
sdq.months = 1 # 设置数据周期, 1 表示近 2 个月
|
3842
3919
|
sdq.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
|
3843
|
-
sdq.
|
3920
|
+
sdq.item_up()
|
3844
3921
|
|
3845
3922
|
# string = '30-34岁,35-39岁,40-49岁'
|
3846
3923
|
# d = "~".join(re.findall(r'(\d+)\D.*\D(\d+)岁', string)[0])
|
@@ -2,9 +2,9 @@ mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
|
2
2
|
mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
4
|
mdbq/aggregation/aggregation.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2kzY,80264
|
5
|
-
mdbq/aggregation/datashow.py,sha256=
|
5
|
+
mdbq/aggregation/datashow.py,sha256=_pyv7ZmKpBp04bdE_N_RTtNbyBXHcOA-TAQ1vFxl8p8,37881
|
6
6
|
mdbq/aggregation/optimize_data.py,sha256=RXIv7cACCgYyehAxMjUYi_S7rVyjIwXKWMaM3nduGtA,3068
|
7
|
-
mdbq/aggregation/query_data.py,sha256=
|
7
|
+
mdbq/aggregation/query_data.py,sha256=9NALeHTP9tblOEPyntLBRtdroLG_qN9qWi34Hg4rXFM,178891
|
8
8
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
9
9
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
10
10
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -34,7 +34,7 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
|
|
34
34
|
mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
|
35
35
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
36
36
|
mdbq/spider/aikucun.py,sha256=v7VO5gtEXR6_4Q6ujbTyu1FHu7TXHcwSQ6hIO249YH0,22208
|
37
|
-
mdbq-3.4.
|
38
|
-
mdbq-3.4.
|
39
|
-
mdbq-3.4.
|
40
|
-
mdbq-3.4.
|
37
|
+
mdbq-3.4.3.dist-info/METADATA,sha256=O8d3FiyMrxJoF1-_OcK-YsIQ01m3hQaGxvn8Pk2UoYY,243
|
38
|
+
mdbq-3.4.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
39
|
+
mdbq-3.4.3.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
40
|
+
mdbq-3.4.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|