qrpa 1.0.13__py3-none-any.whl → 1.1.50__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.
@@ -1,243 +1,243 @@
1
- """
2
- 时间工具模块使用示例
3
- 展示如何使用 time_utils.py 中的各种时间相关函数
4
- """
5
-
6
- from time_utils import TimeUtils, today_date, get_yesterday, get_current_year
7
-
8
-
9
- def example_basic_usage():
10
- """基础使用示例"""
11
- print("=== 基础使用示例 ===")
12
-
13
- # 获取当前时间信息
14
- print(f"当前日期: {today_date()}")
15
- print(f"昨天: {get_yesterday()}")
16
- print(f"当前年份: {get_current_year()}")
17
- print(f"当前周数: {TimeUtils.get_week_num()}")
18
- print(f"当前时间段: {TimeUtils.get_period()}")
19
- print(f"中文星期: {TimeUtils.get_chinese_weekday(today_date())}")
20
-
21
-
22
- def example_date_ranges():
23
- """日期范围计算示例"""
24
- print("\n=== 日期范围计算示例 ===")
25
-
26
- # 获取过去7天的日期范围
27
- start, end = TimeUtils.get_past_7_days_range()
28
- print(f"过去7天范围: {start} 到 {end}")
29
-
30
- # 获取过去7天的日期列表
31
- dates = TimeUtils.get_past_7_days_list()
32
- print(f"过去7天列表: {dates}")
33
-
34
- # 获取指定日期范围
35
- date_list = TimeUtils.date_range('2025-01-01', '2025-01-05')
36
- print(f"2025年1月1-5日: {date_list}")
37
-
38
- # 获取上个月范围
39
- last_month_start, last_month_end = TimeUtils.get_last_month_range()
40
- print(f"上个月范围: {last_month_start} 到 {last_month_end}")
41
-
42
-
43
- def example_timestamp_conversion():
44
- """时间戳转换示例"""
45
- print("\n=== 时间戳转换示例 ===")
46
-
47
- from datetime import datetime
48
-
49
- # 获取当前时间戳
50
- current_ts = int(datetime.now().timestamp() * 1000)
51
- print(f"当前时间戳: {current_ts}")
52
-
53
- # 时间戳转字符串
54
- time_str = TimeUtils.convert_timestamp_to_str(current_ts)
55
- print(f"时间戳转字符串: {time_str}")
56
-
57
- # 时间戳转日期
58
- date_str = TimeUtils.convert_timestamp_to_date(current_ts)
59
- print(f"时间戳转日期: {date_str}")
60
-
61
- # 获取指定日期的开始和结束时间戳
62
- start_ts = TimeUtils.get_start_timestamps('2025-01-01')
63
- end_ts = TimeUtils.get_end_timestamps('2025-01-01')
64
- print(f"2025-01-01 开始时间戳: {start_ts}")
65
- print(f"2025-01-01 结束时间戳: {end_ts}")
66
-
67
-
68
- def example_date_comparison():
69
- """日期比较示例"""
70
- print("\n=== 日期比较示例 ===")
71
-
72
- # 判断日期是否大于等于今天
73
- is_future = TimeUtils.is_date_greater_or_equal('2025-12-31')
74
- print(f"2025-12-31 是否大于等于今天: {is_future}")
75
-
76
- # 判断是否是昨天
77
- is_yesterday = TimeUtils.is_yesterday_date('2025-01-01')
78
- print(f"2025-01-01 是否是昨天: {is_yesterday}")
79
-
80
- # 判断时间是否在指定月份
81
- in_month = TimeUtils.is_in_month('2025-01-15', 1)
82
- print(f"2025-01-15 是否在1月: {in_month}")
83
-
84
-
85
- def example_date_formatting():
86
- """日期格式化示例"""
87
- print("\n=== 日期格式化示例 ===")
88
-
89
- # 日期格式转换
90
- date_with_slash = TimeUtils.date_trans('2025-01-01')
91
- print(f"2025-01-01 转换为: {date_with_slash}")
92
-
93
- # 跨平台格式化
94
- cross_platform = TimeUtils.format_date_cross_platform('2025-01-01')
95
- print(f"跨平台格式化: {cross_platform}")
96
-
97
- # 时间字符串转日期
98
- date_only = TimeUtils.convert_datetime_to_date('2025-01-01 12:30:45')
99
- print(f"时间字符串转日期: {date_only}")
100
-
101
-
102
- def example_advanced_usage():
103
- """高级使用示例"""
104
- print("\n=== 高级使用示例 ===")
105
-
106
- # 获取过去第n天的日期
107
- past_5th_day = TimeUtils.get_past_nth_day(5)
108
- print(f"过去第5天: {past_5th_day}")
109
-
110
- # 获取过去n天的日期列表
111
- past_10_days = TimeUtils.get_past_n_days_list(10)
112
- print(f"过去10天列表: {past_10_days}")
113
-
114
- # 获取从本月第一天到昨天的日期列表
115
- month_dates = TimeUtils.get_dates_from_first_of_month_to_yesterday()
116
- print(f"本月到昨天的日期: {month_dates}")
117
-
118
- # 获取上个月的时间范围(字符串格式)
119
- last_month_start_str, last_month_end_str = TimeUtils.get_last_month_range_time_str()
120
- print(f"上个月时间范围: {last_month_start_str} 到 {last_month_end_str}")
121
-
122
- # 获取上个月的时间范围(时间戳格式)
123
- last_month_start_ts, last_month_end_ts = TimeUtils.get_last_month_range_time()
124
- print(f"上个月时间戳范围: {last_month_start_ts} 到 {last_month_end_ts}")
125
-
126
-
127
- def example_file_time():
128
- """文件时间相关示例"""
129
- print("\n=== 文件时间相关示例 ===")
130
-
131
- import os
132
-
133
- # 创建一个临时文件用于测试
134
- test_file = "test_file.txt"
135
- with open(test_file, 'w') as f:
136
- f.write("test content")
137
-
138
- try:
139
- # 获取文件修改时间
140
- file_mtime = TimeUtils.get_file_mtime(test_file)
141
- print(f"文件修改时间: {file_mtime}")
142
-
143
- # 获取文件修改时间(datetime对象)
144
- file_mtime_dt = TimeUtils.get_file_mtime(test_file, to_str=False)
145
- print(f"文件修改时间(datetime): {file_mtime_dt}")
146
-
147
- finally:
148
- # 清理测试文件
149
- if os.path.exists(test_file):
150
- os.remove(test_file)
151
-
152
-
153
- def example_weekday_functions():
154
- """星期相关函数示例"""
155
- print("\n=== 星期相关函数示例 ===")
156
-
157
- # 获取中文星期
158
- weekday_cn = TimeUtils.get_chinese_weekday('2025-01-01')
159
- print(f"2025-01-01 的中文星期: {weekday_cn}")
160
-
161
- # 获取简短星期名称
162
- weekday_short = TimeUtils.get_weekday_name('2025-01-01')
163
- print(f"2025-01-01 的简短星期: {weekday_short}")
164
-
165
- # 获取当前周数
166
- week_num = TimeUtils.get_week_num()
167
- print(f"当前是第 {week_num} 周")
168
-
169
-
170
- def example_period_functions():
171
- """时间段相关函数示例"""
172
- print("\n=== 时间段相关函数示例 ===")
173
-
174
- # 获取当前时间段(中文)
175
- period_cn = TimeUtils.get_period()
176
- print(f"当前时间段(中文): {period_cn}")
177
-
178
- # 获取当前时间段(英文)
179
- period_en = TimeUtils.get_period2()
180
- print(f"当前时间段(英文): {period_en}")
181
-
182
-
183
- def example_year_month_functions():
184
- """年月相关函数示例"""
185
- print("\n=== 年月相关函数示例 ===")
186
-
187
- # 获取当前年份
188
- current_year = TimeUtils.get_current_year()
189
- print(f"当前年份: {current_year}")
190
-
191
- # 获取当前月份
192
- current_month = TimeUtils.get_current_month()
193
- print(f"当前月份: {current_month}")
194
-
195
- # 获取上个月
196
- last_month = TimeUtils.get_last_month()
197
- print(f"上个月: {last_month}")
198
-
199
- # 获取当前年份范围
200
- year_start, year_end = TimeUtils.get_current_year_range()
201
- print(f"当前年份范围: {year_start} 到 {year_end}")
202
-
203
-
204
- def example_relative_dates():
205
- """相对日期函数示例"""
206
- print("\n=== 相对日期函数示例 ===")
207
-
208
- # 获取昨天
209
- yesterday = TimeUtils.get_yesterday()
210
- print(f"昨天: {yesterday}")
211
-
212
- # 获取前天
213
- before_yesterday = TimeUtils.before_yesterday()
214
- print(f"前天: {before_yesterday}")
215
-
216
- # 获取明天
217
- tomorrow = TimeUtils.tomorrow_date()
218
- print(f"明天: {tomorrow}")
219
-
220
- # 基于指定日期获取昨天
221
- yesterday_from_date = TimeUtils.get_yesterday('20250101')
222
- print(f"基于2025-01-01的昨天: {yesterday_from_date}")
223
-
224
-
225
- if __name__ == "__main__":
226
- """运行所有示例"""
227
- print("时间工具模块使用示例")
228
- print("=" * 50)
229
-
230
- example_basic_usage()
231
- example_date_ranges()
232
- example_timestamp_conversion()
233
- example_date_comparison()
234
- example_date_formatting()
235
- example_advanced_usage()
236
- example_file_time()
237
- example_weekday_functions()
238
- example_period_functions()
239
- example_year_month_functions()
240
- example_relative_dates()
241
-
242
- print("\n" + "=" * 50)
243
- print("所有示例运行完成!")
1
+ """
2
+ 时间工具模块使用示例
3
+ 展示如何使用 time_utils.py 中的各种时间相关函数
4
+ """
5
+
6
+ from time_utils import TimeUtils, today_date, get_yesterday, get_current_year
7
+
8
+
9
+ def example_basic_usage():
10
+ """基础使用示例"""
11
+ print("=== 基础使用示例 ===")
12
+
13
+ # 获取当前时间信息
14
+ print(f"当前日期: {today_date()}")
15
+ print(f"昨天: {get_yesterday()}")
16
+ print(f"当前年份: {get_current_year()}")
17
+ print(f"当前周数: {TimeUtils.get_week_num()}")
18
+ print(f"当前时间段: {TimeUtils.get_period()}")
19
+ print(f"中文星期: {TimeUtils.get_chinese_weekday(today_date())}")
20
+
21
+
22
+ def example_date_ranges():
23
+ """日期范围计算示例"""
24
+ print("\n=== 日期范围计算示例 ===")
25
+
26
+ # 获取过去7天的日期范围
27
+ start, end = TimeUtils.get_past_7_days_range()
28
+ print(f"过去7天范围: {start} 到 {end}")
29
+
30
+ # 获取过去7天的日期列表
31
+ dates = TimeUtils.get_past_7_days_list()
32
+ print(f"过去7天列表: {dates}")
33
+
34
+ # 获取指定日期范围
35
+ date_list = TimeUtils.date_range('2025-01-01', '2025-01-05')
36
+ print(f"2025年1月1-5日: {date_list}")
37
+
38
+ # 获取上个月范围
39
+ last_month_start, last_month_end = TimeUtils.get_last_month_range()
40
+ print(f"上个月范围: {last_month_start} 到 {last_month_end}")
41
+
42
+
43
+ def example_timestamp_conversion():
44
+ """时间戳转换示例"""
45
+ print("\n=== 时间戳转换示例 ===")
46
+
47
+ from datetime import datetime
48
+
49
+ # 获取当前时间戳
50
+ current_ts = int(datetime.now().timestamp() * 1000)
51
+ print(f"当前时间戳: {current_ts}")
52
+
53
+ # 时间戳转字符串
54
+ time_str = TimeUtils.convert_timestamp_to_str(current_ts)
55
+ print(f"时间戳转字符串: {time_str}")
56
+
57
+ # 时间戳转日期
58
+ date_str = TimeUtils.convert_timestamp_to_date(current_ts)
59
+ print(f"时间戳转日期: {date_str}")
60
+
61
+ # 获取指定日期的开始和结束时间戳
62
+ start_ts = TimeUtils.get_start_timestamps('2025-01-01')
63
+ end_ts = TimeUtils.get_end_timestamps('2025-01-01')
64
+ print(f"2025-01-01 开始时间戳: {start_ts}")
65
+ print(f"2025-01-01 结束时间戳: {end_ts}")
66
+
67
+
68
+ def example_date_comparison():
69
+ """日期比较示例"""
70
+ print("\n=== 日期比较示例 ===")
71
+
72
+ # 判断日期是否大于等于今天
73
+ is_future = TimeUtils.is_date_greater_or_equal('2025-12-31')
74
+ print(f"2025-12-31 是否大于等于今天: {is_future}")
75
+
76
+ # 判断是否是昨天
77
+ is_yesterday = TimeUtils.is_yesterday_date('2025-01-01')
78
+ print(f"2025-01-01 是否是昨天: {is_yesterday}")
79
+
80
+ # 判断时间是否在指定月份
81
+ in_month = TimeUtils.is_in_month('2025-01-15', 1)
82
+ print(f"2025-01-15 是否在1月: {in_month}")
83
+
84
+
85
+ def example_date_formatting():
86
+ """日期格式化示例"""
87
+ print("\n=== 日期格式化示例 ===")
88
+
89
+ # 日期格式转换
90
+ date_with_slash = TimeUtils.date_trans('2025-01-01')
91
+ print(f"2025-01-01 转换为: {date_with_slash}")
92
+
93
+ # 跨平台格式化
94
+ cross_platform = TimeUtils.format_date_cross_platform('2025-01-01')
95
+ print(f"跨平台格式化: {cross_platform}")
96
+
97
+ # 时间字符串转日期
98
+ date_only = TimeUtils.convert_datetime_to_date('2025-01-01 12:30:45')
99
+ print(f"时间字符串转日期: {date_only}")
100
+
101
+
102
+ def example_advanced_usage():
103
+ """高级使用示例"""
104
+ print("\n=== 高级使用示例 ===")
105
+
106
+ # 获取过去第n天的日期
107
+ past_5th_day = TimeUtils.get_past_nth_day(5)
108
+ print(f"过去第5天: {past_5th_day}")
109
+
110
+ # 获取过去n天的日期列表
111
+ past_10_days = TimeUtils.get_past_n_days_list(10)
112
+ print(f"过去10天列表: {past_10_days}")
113
+
114
+ # 获取从本月第一天到昨天的日期列表
115
+ month_dates = TimeUtils.get_dates_from_first_of_month_to_yesterday()
116
+ print(f"本月到昨天的日期: {month_dates}")
117
+
118
+ # 获取上个月的时间范围(字符串格式)
119
+ last_month_start_str, last_month_end_str = TimeUtils.get_last_month_range_time_str()
120
+ print(f"上个月时间范围: {last_month_start_str} 到 {last_month_end_str}")
121
+
122
+ # 获取上个月的时间范围(时间戳格式)
123
+ last_month_start_ts, last_month_end_ts = TimeUtils.get_last_month_range_time()
124
+ print(f"上个月时间戳范围: {last_month_start_ts} 到 {last_month_end_ts}")
125
+
126
+
127
+ def example_file_time():
128
+ """文件时间相关示例"""
129
+ print("\n=== 文件时间相关示例 ===")
130
+
131
+ import os
132
+
133
+ # 创建一个临时文件用于测试
134
+ test_file = "test_file.txt"
135
+ with open(test_file, 'w') as f:
136
+ f.write("test content")
137
+
138
+ try:
139
+ # 获取文件修改时间
140
+ file_mtime = TimeUtils.get_file_mtime(test_file)
141
+ print(f"文件修改时间: {file_mtime}")
142
+
143
+ # 获取文件修改时间(datetime对象)
144
+ file_mtime_dt = TimeUtils.get_file_mtime(test_file, to_str=False)
145
+ print(f"文件修改时间(datetime): {file_mtime_dt}")
146
+
147
+ finally:
148
+ # 清理测试文件
149
+ if os.path.exists(test_file):
150
+ os.remove(test_file)
151
+
152
+
153
+ def example_weekday_functions():
154
+ """星期相关函数示例"""
155
+ print("\n=== 星期相关函数示例 ===")
156
+
157
+ # 获取中文星期
158
+ weekday_cn = TimeUtils.get_chinese_weekday('2025-01-01')
159
+ print(f"2025-01-01 的中文星期: {weekday_cn}")
160
+
161
+ # 获取简短星期名称
162
+ weekday_short = TimeUtils.get_weekday_name('2025-01-01')
163
+ print(f"2025-01-01 的简短星期: {weekday_short}")
164
+
165
+ # 获取当前周数
166
+ week_num = TimeUtils.get_week_num()
167
+ print(f"当前是第 {week_num} 周")
168
+
169
+
170
+ def example_period_functions():
171
+ """时间段相关函数示例"""
172
+ print("\n=== 时间段相关函数示例 ===")
173
+
174
+ # 获取当前时间段(中文)
175
+ period_cn = TimeUtils.get_period()
176
+ print(f"当前时间段(中文): {period_cn}")
177
+
178
+ # 获取当前时间段(英文)
179
+ period_en = TimeUtils.get_period2()
180
+ print(f"当前时间段(英文): {period_en}")
181
+
182
+
183
+ def example_year_month_functions():
184
+ """年月相关函数示例"""
185
+ print("\n=== 年月相关函数示例 ===")
186
+
187
+ # 获取当前年份
188
+ current_year = TimeUtils.get_current_year()
189
+ print(f"当前年份: {current_year}")
190
+
191
+ # 获取当前月份
192
+ current_month = TimeUtils.get_current_month()
193
+ print(f"当前月份: {current_month}")
194
+
195
+ # 获取上个月
196
+ last_month = TimeUtils.get_last_month()
197
+ print(f"上个月: {last_month}")
198
+
199
+ # 获取当前年份范围
200
+ year_start, year_end = TimeUtils.get_current_year_range()
201
+ print(f"当前年份范围: {year_start} 到 {year_end}")
202
+
203
+
204
+ def example_relative_dates():
205
+ """相对日期函数示例"""
206
+ print("\n=== 相对日期函数示例 ===")
207
+
208
+ # 获取昨天
209
+ yesterday = TimeUtils.get_yesterday()
210
+ print(f"昨天: {yesterday}")
211
+
212
+ # 获取前天
213
+ before_yesterday = TimeUtils.before_yesterday()
214
+ print(f"前天: {before_yesterday}")
215
+
216
+ # 获取明天
217
+ tomorrow = TimeUtils.tomorrow_date()
218
+ print(f"明天: {tomorrow}")
219
+
220
+ # 基于指定日期获取昨天
221
+ yesterday_from_date = TimeUtils.get_yesterday('20250101')
222
+ print(f"基于2025-01-01的昨天: {yesterday_from_date}")
223
+
224
+
225
+ if __name__ == "__main__":
226
+ """运行所有示例"""
227
+ print("时间工具模块使用示例")
228
+ print("=" * 50)
229
+
230
+ example_basic_usage()
231
+ example_date_ranges()
232
+ example_timestamp_conversion()
233
+ example_date_comparison()
234
+ example_date_formatting()
235
+ example_advanced_usage()
236
+ example_file_time()
237
+ example_weekday_functions()
238
+ example_period_functions()
239
+ example_year_month_functions()
240
+ example_relative_dates()
241
+
242
+ print("\n" + "=" * 50)
243
+ print("所有示例运行完成!")
qrpa/wxwork.py CHANGED
@@ -17,6 +17,7 @@ import hashlib
17
17
  import base64
18
18
  import requests
19
19
  from requests_toolbelt import MultipartEncoder
20
+ from datetime import datetime
20
21
 
21
22
  # 通过企微群机器人发送消息
22
23
  class WxWorkBot:
@@ -40,6 +41,9 @@ class WxWorkBot:
40
41
  response = requests.post(
41
42
  f'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={self.key}&type=file',
42
43
  headers=headers, files=files)
44
+ response_text = json.loads(response.text)
45
+ if str(response_text.get('errcode')) != '0':
46
+ raise Exception(response_text)
43
47
  if response.status_code == 200:
44
48
  result = json.loads(response.text)
45
49
  return result['media_id']
@@ -50,6 +54,9 @@ class WxWorkBot:
50
54
  raise Exception("upload_media error", err)
51
55
 
52
56
  def send_file(self, file_path):
57
+ if not os.path.exists(file_path):
58
+ print('文件不存在: ', file_path)
59
+ return
53
60
  """
54
61
  发送文件到群里
55
62
  :param file_path:
@@ -99,6 +106,42 @@ class WxWorkBot:
99
106
  }
100
107
  self.send_msg(data)
101
108
 
109
+ def send_notify(self, title, sub_title_list, data_list):
110
+ """
111
+ 发送Markdown消息
112
+ :param content:
113
+ :return:
114
+ """
115
+
116
+ current_date = datetime.now().strftime("%Y-%m-%d")
117
+ header = f"{current_date} {title}\n\n"
118
+
119
+ arr_color = ['warning', 'info', 'warning']
120
+ arr_sub_header = [f"<font color='{arr_color[index]}'>{title}</font>" for index, title in enumerate(sub_title_list)]
121
+ sub_header = "\t".join(arr_sub_header) + "\n\n"
122
+
123
+ # 获取每个元素的行索引和列索引
124
+ arr_content = [
125
+ [
126
+ f'{value}' if col_idx == 0 else f"<font color='{arr_color[col_idx - 1]}'>{value}</font>"
127
+ for col_idx, value in enumerate(row)
128
+ ] # 每行的元素组成一个子列表
129
+ for row_idx, row in enumerate(data_list) # 外层循环控制行
130
+ ]
131
+ # 将二维数组转换为字符串
132
+ content = "\n".join(
133
+ # 对每行的元素列表使用 join(),用 \t 连接
134
+ "\t".join(row) for row in arr_content
135
+ )
136
+
137
+ data = {
138
+ "msgtype" : "markdown",
139
+ "markdown": {
140
+ "content": header + sub_header + content
141
+ }
142
+ }
143
+ self.send_msg(data)
144
+
102
145
  def send_img(self, img_path):
103
146
  """
104
147
  发送图片消息
@@ -150,6 +193,9 @@ class WxWorkBot:
150
193
  "Content-Type": "application/json"
151
194
  }
152
195
  response = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={self.key}", headers=header, data=json.dumps(data))
196
+ response_text = json.loads(response.text)
197
+ if str(response_text.get('errcode')) != '0':
198
+ raise Exception(response_text)
153
199
  if response.status_code == 200:
154
200
  result = json.loads(response.text)
155
201
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qrpa
3
- Version: 1.0.13
3
+ Version: 1.1.50
4
4
  Summary: qsir's rpa library
5
5
  Author: QSir
6
6
  Author-email: QSir <1171725650@qq.com>
@@ -0,0 +1,33 @@
1
+ qrpa/RateLimitedSender.py,sha256=K8DIzpn0_0JdV_xzU9XQ98hfSbYzGlh6aA1R23K6vMY,1376
2
+ qrpa/__init__.py,sha256=mrRtp14KTKSscBYMURTPEUR0Rdu_eVcF0VmMO0GlfrI,1117
3
+ qrpa/db_migrator.py,sha256=Uen6KNCJCovbcaVIsD_wliF0gMKFpZAT7Zg9Qj2c-C8,21265
4
+ qrpa/feishu_bot_app.py,sha256=Gjvv7D-OS-55mirP9xKYkIDNrIEWgWub7YwZkXDv4yo,9185
5
+ qrpa/feishu_client.py,sha256=gXvyhf7r-IqeDhPjM01SfsGf17t8g1ZwUAkhymBkBeg,17544
6
+ qrpa/feishu_logic.py,sha256=yuwb-LeZiHKGlz-W8JobinorHonVa8L-5h12WxnU7_Q,67508
7
+ qrpa/fun_base.py,sha256=HYxSinJciciwVSC9dE26nCc17qnbGhTddUdOacI8drQ,10607
8
+ qrpa/fun_excel.py,sha256=xic9CWZVNEK9EckZdhhGn02e-n3ddmocU4VdO9LnXiE,134992
9
+ qrpa/fun_file.py,sha256=1PNYM71cVWWUjIgrutzw-5mKOGiBAeLrnkXcLMTIBhA,11648
10
+ qrpa/fun_web.py,sha256=9YuVy_wps9Ty_FBZ91W2R0iKgC2IViaJjHbyuUgngGs,11599
11
+ qrpa/fun_win.py,sha256=vMdVh00dsnVz8Wey4Bq7J3RPZAY8B_bI_IKphOX1cE8,7836
12
+ qrpa/shein_daily_report_model.py,sha256=O8s9qM45WZRoAgxUFRngvmBrc29v7Uf2ye7K8_bcSRg,12214
13
+ qrpa/shein_excel.py,sha256=HHFWgEhMlKo3BnOrG9f27qwWCgv6MrwJaVZen4fJQk4,173948
14
+ qrpa/shein_lib.py,sha256=k6_YWfIxZ7ij_m_244SfUyUwL9uG9Bb_ty2Rf8rvFIY,206971
15
+ qrpa/shein_mysql.py,sha256=MxbiRSH0gaTtW4ET7lVWRNY4NLOrMLGXO_4STptE1pU,4562
16
+ qrpa/shein_sqlite.py,sha256=i4xwNf60eoG6wbWM1R2i5pDdVW1ZMy6uy9nB-c2WKzk,5554
17
+ qrpa/shein_ziniao.py,sha256=YN7g6m84-vyDyePssfR41lqwaROz-km0-rJ8qY-jhy0,21416
18
+ qrpa/temu_chrome.py,sha256=jAYv59Z1uoRSVim81EF2R2tEgQYYForiYhWOCKmy_mo,2747
19
+ qrpa/temu_excel.py,sha256=AqeMyJFjxf8slczbLzK4XKHdIiNZ8T-uDjB6DPj4DwU,6851
20
+ qrpa/temu_lib.py,sha256=myvlEAE5yNtgt1TUrx8fBRpvw883jpyePTPLd0_7tf4,7131
21
+ qrpa/time_utils.py,sha256=pHhADD-2WnzwWbEdnGh5_vR5TxmJycGex4zzI-5_fAQ,32340
22
+ qrpa/time_utils_example.py,sha256=80zzunKw7F1S8MOwNFmmiCnI8MOYoh4PH-25UrEGuF0,7810
23
+ qrpa/wxwork.py,sha256=Vy8PGEtlTWt4-1laVhuqpJUGCFH2JymgbjvH00aaBog,10946
24
+ qrpa/mysql_module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ qrpa/mysql_module/new_product_analysis_model.py,sha256=H_RKZB-2wqWeDhnt_KEA8LVivAwK3XOqYLHIqUgcOZE,21556
26
+ qrpa/mysql_module/shein_ledger_model.py,sha256=KGKfGyzS00rbBZhiZhAzypwYPGs7OdfRLnH2ea36Vm8,18161
27
+ qrpa/mysql_module/shein_product_model.py,sha256=jBxamujzYxrhxvZnH_kQW4O0QPzwTru_AqEMLDQtiMI,19582
28
+ qrpa/mysql_module/shein_return_order_model.py,sha256=8xvKhOzpcJS5FHfyA33UednaqRNCyXo3qeXBzwTXeN8,25993
29
+ qrpa/mysql_module/shein_store_model.py,sha256=RTj9cqexewHglHm1JNTe8iU0vJueHBLltdap-gvGxaY,20536
30
+ qrpa-1.1.50.dist-info/METADATA,sha256=LQI08pl-Q25ERDb4mg99QPK6oYvfkRjVeoeHTFto9iQ,231
31
+ qrpa-1.1.50.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
32
+ qrpa-1.1.50.dist-info/top_level.txt,sha256=F6T5igi0fhXDucPPUbmmSC0qFCDEsH5eVijfVF48OFU,5
33
+ qrpa-1.1.50.dist-info/RECORD,,
@@ -1,18 +0,0 @@
1
- qrpa/RateLimitedSender.py,sha256=hqvb1qspDFaW4RsLuVufylOrefkMgixANKeBaGEqYb4,1421
2
- qrpa/__init__.py,sha256=NNE1S-k2R-5Ed_ssVVu-R6_DJ00zBWuPnOvyJAU6DOI,706
3
- qrpa/db_migrator.py,sha256=2VmhzcMsU0MKpl-mNCwKyV8tLTqyEysSpP27-S_rQZ8,21862
4
- qrpa/fun_base.py,sha256=W_owEa8-yuGG18n9kX3remm9YTzym69ztQjtYCNMTw4,3308
5
- qrpa/fun_excel.py,sha256=S-A-kTZ2e3dJ8NqdhiOFqTlcr0d6XLMP6imagztRel0,103605
6
- qrpa/fun_file.py,sha256=BInN-Iuxi8sYiJ031gXI_DzO_n170RsOf7fnpkl_etM,7100
7
- qrpa/fun_web.py,sha256=5QLQorAhRzMOGMRh4eCJ2UH8ZhVHvxkHwobWhmgU5qM,6286
8
- qrpa/fun_win.py,sha256=-LnTeocdTt72NVH6VgLdpAT9_C5oV9okeudXG6CftMA,8034
9
- qrpa/shein_excel.py,sha256=6DjK5p1S6y4oElcxmLpvJtQPSf76Vu99Pdsmo2d-Po0,3818
10
- qrpa/shein_lib.py,sha256=A7EQmuAPMZ2SfxkiiG9Mzjv64-JErUHwS5PsuTJDJB4,39021
11
- qrpa/shein_ziniao.py,sha256=nSqqcEPh4nVQtUxUnIRzeZfTLyXywGPjPZn5pP-w57U,18309
12
- qrpa/time_utils.py,sha256=ef0hhbN_6b-gcnz5ETIVOoxemIMvcxGVGGIRnHnGaBo,29564
13
- qrpa/time_utils_example.py,sha256=shHOXKKF3QSzb0SHsNc34M61wEkkLuM30U9X1THKNS8,8053
14
- qrpa/wxwork.py,sha256=IeJq-1LwKCsCt_AdMSLvYrQJWNoQp_wqVtk6iqwJqf4,9200
15
- qrpa-1.0.13.dist-info/METADATA,sha256=CtKDWiLcOgBiKW99zCymPG-26-YFbzHtPbRzOWfYu6w,231
16
- qrpa-1.0.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
17
- qrpa-1.0.13.dist-info/top_level.txt,sha256=F6T5igi0fhXDucPPUbmmSC0qFCDEsH5eVijfVF48OFU,5
18
- qrpa-1.0.13.dist-info/RECORD,,
File without changes