re-common 0.2.54__py3-none-any.whl → 2.0.1__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.
Files changed (207) hide show
  1. re_common/v2/baselibrary/s3object/baseboto3.py +230 -0
  2. re_common/v2/baselibrary/tools/dict_tools.py +24 -0
  3. re_common/v2/baselibrary/tools/search_hash_tools.py +33 -0
  4. re_common/v2/baselibrary/tools/text_matcher.py +223 -0
  5. re_common/v2/baselibrary/tools/unionfind_tools.py +60 -0
  6. re_common/v2/baselibrary/utils/BusinessStringUtil.py +74 -0
  7. re_common/v2/baselibrary/utils/author_smi.py +308 -0
  8. re_common/v2/baselibrary/utils/basedict.py +26 -0
  9. re_common/v2/baselibrary/utils/basehdfs.py +127 -0
  10. re_common/v2/baselibrary/utils/json_cls.py +11 -0
  11. re_common/v2/baselibrary/utils/string_bool.py +9 -0
  12. re_common/v2/baselibrary/utils/string_clear.py +98 -0
  13. re_common/v2/baselibrary/utils/stringutils.py +95 -0
  14. {re_common-0.2.54.dist-info → re_common-2.0.1.dist-info}/METADATA +1 -1
  15. re_common-2.0.1.dist-info/RECORD +25 -0
  16. re_common/baselibrary/__init__.py +0 -4
  17. re_common/baselibrary/baseabs/__init__.py +0 -7
  18. re_common/baselibrary/baseabs/baseabs.py +0 -26
  19. re_common/baselibrary/database/mbuilder.py +0 -132
  20. re_common/baselibrary/database/moudle.py +0 -93
  21. re_common/baselibrary/database/msqlite3.py +0 -194
  22. re_common/baselibrary/database/mysql.py +0 -169
  23. re_common/baselibrary/database/sql_factory.py +0 -26
  24. re_common/baselibrary/mthread/MThreadingRun.py +0 -486
  25. re_common/baselibrary/mthread/MThreadingRunEvent.py +0 -349
  26. re_common/baselibrary/mthread/__init__.py +0 -3
  27. re_common/baselibrary/mthread/mythreading.py +0 -695
  28. re_common/baselibrary/pakge_other/socks.py +0 -404
  29. re_common/baselibrary/readconfig/config_factory.py +0 -18
  30. re_common/baselibrary/readconfig/ini_config.py +0 -317
  31. re_common/baselibrary/readconfig/toml_config.py +0 -49
  32. re_common/baselibrary/temporary/envdata.py +0 -36
  33. re_common/baselibrary/tools/all_requests/aiohttp_request.py +0 -118
  34. re_common/baselibrary/tools/all_requests/httpx_requet.py +0 -102
  35. re_common/baselibrary/tools/all_requests/mrequest.py +0 -412
  36. re_common/baselibrary/tools/all_requests/requests_request.py +0 -81
  37. re_common/baselibrary/tools/batch_compre/__init__.py +0 -0
  38. re_common/baselibrary/tools/batch_compre/bijiao_batch.py +0 -31
  39. re_common/baselibrary/tools/contrast_db3.py +0 -123
  40. re_common/baselibrary/tools/copy_file.py +0 -39
  41. re_common/baselibrary/tools/db3_2_sizedb3.py +0 -102
  42. re_common/baselibrary/tools/foreachgz.py +0 -40
  43. re_common/baselibrary/tools/get_attr.py +0 -11
  44. re_common/baselibrary/tools/image_to_pdf.py +0 -62
  45. re_common/baselibrary/tools/java_code_deal.py +0 -139
  46. re_common/baselibrary/tools/javacode.py +0 -79
  47. re_common/baselibrary/tools/mdb_db3.py +0 -48
  48. re_common/baselibrary/tools/merge_file.py +0 -171
  49. re_common/baselibrary/tools/merge_gz_file.py +0 -165
  50. re_common/baselibrary/tools/mhdfstools/__init__.py +0 -0
  51. re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +0 -42
  52. re_common/baselibrary/tools/mhdfstools/hdfst.py +0 -42
  53. re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +0 -38
  54. re_common/baselibrary/tools/mongo_tools.py +0 -50
  55. re_common/baselibrary/tools/move_file.py +0 -170
  56. re_common/baselibrary/tools/move_mongo/__init__.py +0 -0
  57. re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +0 -63
  58. re_common/baselibrary/tools/move_mongo/move_mongo_table.py +0 -354
  59. re_common/baselibrary/tools/move_mongo/use_mttf.py +0 -18
  60. re_common/baselibrary/tools/move_mongo/use_mv.py +0 -93
  61. re_common/baselibrary/tools/mpandas/__init__.py +0 -0
  62. re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +0 -125
  63. re_common/baselibrary/tools/mpandas/pandas_visualization.py +0 -8
  64. re_common/baselibrary/tools/myparsel.py +0 -104
  65. re_common/baselibrary/tools/rename_dir_file.py +0 -37
  66. re_common/baselibrary/tools/sequoiadb_utils.py +0 -398
  67. re_common/baselibrary/tools/split_line_to_many.py +0 -25
  68. re_common/baselibrary/tools/stringtodicts.py +0 -33
  69. re_common/baselibrary/tools/workwechant_bot.py +0 -84
  70. re_common/baselibrary/utils/__init__.py +0 -0
  71. re_common/baselibrary/utils/baseaiohttp.py +0 -296
  72. re_common/baselibrary/utils/baseaiomysql.py +0 -87
  73. re_common/baselibrary/utils/baseallstep.py +0 -191
  74. re_common/baselibrary/utils/baseavro.py +0 -19
  75. re_common/baselibrary/utils/baseboto3.py +0 -291
  76. re_common/baselibrary/utils/basecsv.py +0 -32
  77. re_common/baselibrary/utils/basedict.py +0 -133
  78. re_common/baselibrary/utils/basedir.py +0 -241
  79. re_common/baselibrary/utils/baseencode.py +0 -351
  80. re_common/baselibrary/utils/baseencoding.py +0 -29
  81. re_common/baselibrary/utils/baseesdsl.py +0 -86
  82. re_common/baselibrary/utils/baseexcel.py +0 -264
  83. re_common/baselibrary/utils/baseexcept.py +0 -109
  84. re_common/baselibrary/utils/basefile.py +0 -654
  85. re_common/baselibrary/utils/baseftp.py +0 -214
  86. re_common/baselibrary/utils/basegzip.py +0 -60
  87. re_common/baselibrary/utils/basehdfs.py +0 -135
  88. re_common/baselibrary/utils/basehttpx.py +0 -268
  89. re_common/baselibrary/utils/baseip.py +0 -87
  90. re_common/baselibrary/utils/basejson.py +0 -2
  91. re_common/baselibrary/utils/baselist.py +0 -32
  92. re_common/baselibrary/utils/basemotor.py +0 -190
  93. re_common/baselibrary/utils/basemssql.py +0 -98
  94. re_common/baselibrary/utils/baseodbc.py +0 -113
  95. re_common/baselibrary/utils/basepandas.py +0 -302
  96. re_common/baselibrary/utils/basepeewee.py +0 -11
  97. re_common/baselibrary/utils/basepika.py +0 -180
  98. re_common/baselibrary/utils/basepydash.py +0 -143
  99. re_common/baselibrary/utils/basepymongo.py +0 -230
  100. re_common/baselibrary/utils/basequeue.py +0 -22
  101. re_common/baselibrary/utils/baserar.py +0 -57
  102. re_common/baselibrary/utils/baserequest.py +0 -279
  103. re_common/baselibrary/utils/baseset.py +0 -8
  104. re_common/baselibrary/utils/basesmb.py +0 -403
  105. re_common/baselibrary/utils/basestring.py +0 -382
  106. re_common/baselibrary/utils/basetime.py +0 -320
  107. re_common/baselibrary/utils/basetuple.py +0 -0
  108. re_common/baselibrary/utils/baseurl.py +0 -121
  109. re_common/baselibrary/utils/basezip.py +0 -57
  110. re_common/baselibrary/utils/core/__init__.py +0 -8
  111. re_common/baselibrary/utils/core/bottomutils.py +0 -18
  112. re_common/baselibrary/utils/core/mdeprecated.py +0 -327
  113. re_common/baselibrary/utils/core/mlamada.py +0 -16
  114. re_common/baselibrary/utils/core/msginfo.py +0 -25
  115. re_common/baselibrary/utils/core/requests_core.py +0 -103
  116. re_common/baselibrary/utils/fateadm.py +0 -429
  117. re_common/baselibrary/utils/importfun.py +0 -123
  118. re_common/baselibrary/utils/mfaker.py +0 -57
  119. re_common/baselibrary/utils/my_abc/__init__.py +0 -3
  120. re_common/baselibrary/utils/my_abc/better_abc.py +0 -32
  121. re_common/baselibrary/utils/mylogger.py +0 -414
  122. re_common/baselibrary/utils/myredisclient.py +0 -861
  123. re_common/baselibrary/utils/pipupgrade.py +0 -21
  124. re_common/baselibrary/utils/ringlist.py +0 -85
  125. re_common/baselibrary/utils/version_compare.py +0 -36
  126. re_common/baselibrary/utils/ydmhttp.py +0 -126
  127. re_common/facade/__init__.py +0 -1
  128. re_common/facade/lazy_import.py +0 -11
  129. re_common/facade/loggerfacade.py +0 -25
  130. re_common/facade/mysqlfacade.py +0 -467
  131. re_common/facade/now.py +0 -31
  132. re_common/facade/sqlite3facade.py +0 -257
  133. re_common/facade/use/__init__.py +0 -0
  134. re_common/facade/use/mq_use_facade.py +0 -83
  135. re_common/facade/use/proxy_use_facade.py +0 -20
  136. re_common/libtest/__init__.py +0 -0
  137. re_common/libtest/base_dict_test.py +0 -19
  138. re_common/libtest/baseavro_test.py +0 -13
  139. re_common/libtest/basefile_test.py +0 -14
  140. re_common/libtest/basemssql_test.py +0 -77
  141. re_common/libtest/baseodbc_test.py +0 -8
  142. re_common/libtest/basepandas_test.py +0 -38
  143. re_common/libtest/get_attr_test/__init__.py +0 -0
  144. re_common/libtest/get_attr_test/get_attr_test_settings.py +0 -14
  145. re_common/libtest/get_attr_test/settings.py +0 -55
  146. re_common/libtest/idencode_test.py +0 -54
  147. re_common/libtest/iniconfig_test.py +0 -35
  148. re_common/libtest/ip_test.py +0 -35
  149. re_common/libtest/merge_file_test.py +0 -20
  150. re_common/libtest/mfaker_test.py +0 -9
  151. re_common/libtest/mm3_test.py +0 -32
  152. re_common/libtest/mylogger_test.py +0 -89
  153. re_common/libtest/myparsel_test.py +0 -28
  154. re_common/libtest/mysql_test.py +0 -151
  155. re_common/libtest/pymongo_test.py +0 -21
  156. re_common/libtest/split_test.py +0 -12
  157. re_common/libtest/sqlite3_merge_test.py +0 -6
  158. re_common/libtest/sqlite3_test.py +0 -34
  159. re_common/libtest/tomlconfig_test.py +0 -30
  160. re_common/libtest/use_tools_test/__init__.py +0 -3
  161. re_common/libtest/user/__init__.py +0 -5
  162. re_common/studio/__init__.py +0 -5
  163. re_common/studio/assignment_expressions.py +0 -37
  164. re_common/studio/mydash/__init__.py +0 -0
  165. re_common/studio/mydash/test1.py +0 -19
  166. re_common/studio/pydashstudio/__init__.py +0 -0
  167. re_common/studio/pydashstudio/first.py +0 -9
  168. re_common/studio/streamlitstudio/__init__.py +0 -0
  169. re_common/studio/streamlitstudio/first_app.py +0 -66
  170. re_common/studio/streamlitstudio/uber_pickups.py +0 -24
  171. re_common/studio/test.py +0 -19
  172. re_common/vip/__init__.py +0 -0
  173. re_common/vip/base_step_process.py +0 -11
  174. re_common/vip/baseencodeid.py +0 -91
  175. re_common/vip/changetaskname.py +0 -28
  176. re_common/vip/core_var.py +0 -24
  177. re_common/vip/mmh3Hash.py +0 -90
  178. re_common/vip/proxy/__init__.py +0 -0
  179. re_common/vip/proxy/allproxys.py +0 -127
  180. re_common/vip/proxy/allproxys_thread.py +0 -159
  181. re_common/vip/proxy/cnki_proxy.py +0 -153
  182. re_common/vip/proxy/kuaidaili.py +0 -87
  183. re_common/vip/proxy/proxy_all.py +0 -113
  184. re_common/vip/proxy/update_kuaidaili_0.py +0 -42
  185. re_common/vip/proxy/wanfang_proxy.py +0 -152
  186. re_common/vip/proxy/wp_proxy_all.py +0 -182
  187. re_common/vip/read_rawid_to_txt.py +0 -92
  188. re_common/vip/title/__init__.py +0 -5
  189. re_common/vip/title/transform/TransformBookTitleToZt.py +0 -125
  190. re_common/vip/title/transform/TransformConferenceTitleToZt.py +0 -139
  191. re_common/vip/title/transform/TransformCstadTitleToZt.py +0 -196
  192. re_common/vip/title/transform/TransformJournalTitleToZt.py +0 -203
  193. re_common/vip/title/transform/TransformPatentTitleToZt.py +0 -132
  194. re_common/vip/title/transform/TransformRegulationTitleToZt.py +0 -114
  195. re_common/vip/title/transform/TransformStandardTitleToZt.py +0 -135
  196. re_common/vip/title/transform/TransformThesisTitleToZt.py +0 -135
  197. re_common/vip/title/transform/__init__.py +0 -11
  198. re_common-0.2.54.dist-info/RECORD +0 -194
  199. /re_common/{baselibrary/database → v2}/__init__.py +0 -0
  200. /re_common/{baselibrary/pakge_other → v2/baselibrary}/__init__.py +0 -0
  201. /re_common/{baselibrary/readconfig → v2/baselibrary/s3object}/__init__.py +0 -0
  202. /re_common/{baselibrary/temporary → v2/baselibrary/tools}/__init__.py +0 -0
  203. /re_common/{baselibrary/tools/__init__.py → v2/baselibrary/tools/list_tools.py} +0 -0
  204. /re_common/{baselibrary/tools/all_requests → v2/baselibrary/utils}/__init__.py +0 -0
  205. {re_common-0.2.54.dist-info → re_common-2.0.1.dist-info}/LICENSE +0 -0
  206. {re_common-0.2.54.dist-info → re_common-2.0.1.dist-info}/WHEEL +0 -0
  207. {re_common-0.2.54.dist-info → re_common-2.0.1.dist-info}/top_level.txt +0 -0
@@ -1,264 +0,0 @@
1
- from tempfile import NamedTemporaryFile
2
-
3
- from openpyxl import Workbook, load_workbook
4
- from openpyxl.styles import Font, Alignment
5
-
6
- """
7
- openpyxl不支持旧的.xls文件格式,请使用xlrd读取该文件,或将其转换为最新的.xlsx文件格式。
8
- """
9
-
10
-
11
- class OpenpyxlUtils(object):
12
- def __init__(self):
13
- self.wb = Workbook() # 该参数guess_types=True 启用了类容和格式推断但为什么Workbook 没有这个参数
14
- self.ws = None
15
-
16
- def xls_to_xlsx(self, xlsPath):
17
- """
18
- https://blog.csdn.net/test_sir_cao/article/details/79133617
19
- mime http://www.w3school.com.cn/media/media_mimeref.asp
20
- python -m pip install pypiwin32
21
-
22
- '类 Workbooks 的 Open 方法无效
23
- https://blog.csdn.net/xiaozhuzhu1/article/details/48493529
24
- 出现这个错误的原因是,已有的Excel文件中有无法识别的内容,手动打开的时候,会提示:Excel发现不可读取内容,只要确认打开,再保存一下,再用程序打开的时候就不会出现这个问题了。
25
- 有以下几种:
26
- 51 = xlOpenXMLWorkbook (without macro's in 2007-2016, xlsx) 保存为xlsx
27
- 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2016, xlsm)
28
- 保存为xlsm带宏的格式
29
- 50 = xlExcel12 (Excel Binary Workbook in 2007-2016 with or without macro's, xlsb)
30
- 以二进制保存的工作表
31
- 56 = xlExcel8 (97-2003 format in Excel 2007-2016, xls)
32
- 以xls,2003格式保存的工作表
33
- :param xlsPath:
34
- :return:
35
- """
36
- import win32com.client
37
- excel = win32com.client.gencache.EnsureDispatch('Excel.Application') # 要看MIME手册
38
- wb = excel.Workbooks.Open(xlsPath)
39
- wb.SaveAs(xlsPath + 'x', FileFormat=51)
40
- wb.Close()
41
- excel.Application.Quit()
42
-
43
- def set_wb_only_read(self, filename, read_only=False):
44
- """
45
- 只读方式打开excel
46
- :param filename:
47
- :param read_only:
48
- :return:
49
- """
50
- self.wb = load_workbook(filename=filename, read_only=read_only)
51
- return self.wb
52
-
53
- def set_wb_only_write(self):
54
- """
55
- 按照写的方式打开一个新的wb
56
- :return:
57
- """
58
- self.wb = Workbook(write_only=True)
59
- return self.wb
60
-
61
- def create_ws(self, sheetname='', sheetnum=0):
62
- """
63
- 获取 ws sheet 对象 此函数使用_active_sheet_index属性,默认设置为0。
64
- 除非您修改其值,否则您将始终使用此方法获取第一个工作表。
65
- :return:
66
- """
67
- if sheetname:
68
- self.ws = self.wb.create_sheet(sheetname, sheetnum)
69
- else:
70
- # 获取第一个 sheet
71
- self.ws = self.wb.active
72
- return self.ws
73
-
74
- def set_ws_title(self, title):
75
- """
76
- 设置工作表的名字
77
- :param title:
78
- :return:
79
- """
80
- self.ws.title = title
81
-
82
- def get_ws(self, title):
83
- """
84
- 获取一个sheet 通过title
85
- :param title:
86
- :return:
87
- """
88
- self.ws = self.wb[title]
89
- return self.ws
90
-
91
- def get_list_sheet(self):
92
- """
93
- 可以通过 wb.sheetnames 获取列表
94
- :return:
95
- """
96
- for sheet in self.wb:
97
- yield sheet
98
-
99
- def get_sheet_copy(self):
100
- """
101
- 得到当前sheet的一个副本
102
- :return:
103
- """
104
- return self.wb.copy_worksheet(self.ws)
105
-
106
- def get_ws_value(self, key):
107
- """
108
- 如 A4
109
- :param key:
110
- :return:
111
- """
112
- return self.ws[key].value
113
-
114
- def set_ws_value(self, key, value):
115
- self.ws[key] = value
116
- return self.ws[key]
117
-
118
- def get_sheet_value_cell(self, row, colum, value):
119
- """
120
- 使用cell方法访问指定单元格如果没有会创建
121
- >>> for i in range(1,101):
122
- ... for j in range(1,101):
123
- ... ws.cell(row=i, column=j)
124
- 将在内存中创建100x100个单元格,无需任何操作。
125
- :param row:
126
- :param colum:
127
- :param value:
128
- :return:
129
- """
130
- return self.ws.cell(row, colum, value)
131
-
132
- def get_sheet_value_slicing(self, index1, index2=None):
133
- """
134
-
135
- >>> colC = ws['C']
136
- >>> col_range = ws['C:D']
137
- >>> row10 = ws[10]
138
- >>> row_range = ws[5:10]
139
-
140
- :param index1: 数字或字母
141
- :param index2:
142
- :return: 通过传入的参数获取多个 tuple结果 比如 传入 A C 将返回A B C 3个tuple元组
143
- 也可传入数字 传入数字将返回行,传入字母将返回列 也是以元组的方式返回
144
- 注意 迭代元组得到 cell对象 可以 通过 cell.value得到值cell.row,cell.column得到行和列
145
- """
146
- if index2 is None:
147
- return self.ws[index1]
148
- return self.ws[index1:index2]
149
-
150
- def get_sheet_iter_rows(self, min_row, max_col, max_row):
151
- for row in self.ws.iter_rows(min_row, max_col, max_row):
152
- for cell in row:
153
- yield cell
154
-
155
- def get_sheet_iter_cols(self, min_row, max_col, max_row):
156
- for row in self.ws.iter_cols(min_row, max_col, max_row):
157
- for cell in row:
158
- yield cell
159
-
160
- def get_sheet_all_rows(self, is_row=True):
161
- """
162
- 得到所有行和列 使用 tuple()查看对象
163
- :return:
164
- """
165
- if is_row:
166
- return self.ws.rows
167
- else:
168
- return self.ws.columns
169
-
170
- def set_sheet_cell_value(self, cell, value):
171
- """
172
- 为单元格设置一个值
173
- :param cell:
174
- :param value:
175
- :return:
176
- """
177
- cell.value = value
178
- print(cell.value)
179
-
180
- def save_wb(self, excelname):
181
- """
182
- 保存为excel文件
183
- :param excelname:
184
- :return:
185
- """
186
- self.wb.save(excelname)
187
-
188
- def save_stream(self):
189
- """
190
- 保存到流
191
- :return:
192
- """
193
- with NamedTemporaryFile() as tmp:
194
- self.wb.save(tmp.name)
195
- tmp.seek(0)
196
- stream = tmp.read()
197
- return stream
198
-
199
- def save_wb_template(self, excelname, templatename):
200
- """
201
- >>> wb = load_workbook('document.xlsx')
202
- >>> wb.template = True
203
- >>> wb.save('document_template.xltx')
204
- 您可以指定属性template = True,以将工作簿另存为模板:
205
- 或者将此属性设置为False(默认),以保存为文档
206
- >>> wb = load_workbook('document_template.xltx')
207
- >>> wb.template = False
208
- >>> wb.save('document.xlsx', as_template=False)
209
- :param excelname:
210
- :return:
211
- """
212
-
213
- self.wb.template = True
214
- self.wb.save(excelname)
215
-
216
- def max_column(self):
217
- """
218
- 所有列
219
- :return:
220
- """
221
- return self.ws.max_column
222
-
223
- def max_row(self):
224
- """
225
- 所有行
226
- :return:
227
- """
228
- return self.ws.max_row
229
-
230
- def save_excel(self, filename):
231
- """
232
- 保存excel文件
233
- :param filename:
234
- :return:
235
- """
236
- self.wb.save(filename)
237
-
238
- def get_font(self):
239
- """
240
- name 字符串 字体名称,例如'Calibri'或'Times New Roman'
241
-
242
- size 整数 字体大小
243
-
244
- bold 布尔 True,粗体字体
245
-
246
- italic 布尔 True,斜体字体
247
- :return:
248
- """
249
- fontObj1 = Font(bold=True)
250
- return fontObj1
251
-
252
- def get_Alignment(self):
253
- al = Alignment(horizontal="center")
254
- return al
255
-
256
- def set_font(self, fontobj, alignment, cells=[]):
257
- """
258
- :param cell: A1
259
- :param fontobj:
260
- :return:
261
- """
262
- for cell in cells:
263
- self.ws[cell].font = fontobj
264
- self.ws[cell].alignment = alignment
@@ -1,109 +0,0 @@
1
- """
2
- 基础的异常处理逻辑
3
- """
4
- import sys
5
-
6
-
7
- def callback(*args, **kwargs):
8
- # 系统对于没有被捕获的异常,python统一用sys.excepthook 这个函数来处理,发生异常时,程序中断并输出很多异常信息。
9
- # python允许你重写这个方法,来实现你自己对异常的处理,
10
- sys.excepthook(*args, **kwargs)
11
-
12
-
13
- def my_excepthook(exc_type, exc_value, tb):
14
- """
15
- 该异常用于替换 sys.excepthook 也就是自定义全局异常处理逻辑
16
- :param exc_type:
17
- :param exc_value:
18
- :param tb:
19
- :return:
20
- """
21
- callback(exc_type, exc_value, tb)
22
-
23
-
24
- class BaseExcept(object):
25
- """
26
- from billiard.einfo import Traceback
27
- self.tb : Traceback
28
- """
29
-
30
- def __init__(self):
31
- self.tb = None
32
-
33
- def set_tb(self, tb):
34
- self.tb = tb
35
- return self
36
-
37
- def tb_par(self):
38
- # 栈跟踪的下一级(朝发生异常的执行帧方向深入)
39
- tb_next = self.tb.tb_next
40
- # 当前级别的执行帧对象
41
- tb_frame = self.tb.tb_frame
42
- # 出现的行号
43
- lineno = self.tb.tb_lineno
44
- # 当前级别中正在执行的指令
45
- tb_lasti = self.tb.tb_lasti
46
-
47
- def tb_frame_par(self, tb_frame):
48
- """
49
- 每个帧对象具有的属性
50
- :param tb_frame:
51
- :return:
52
- """
53
- # 上一个栈帧(对当前调用者而言)
54
- f_back = tb_frame.f_back
55
- # 正在执行的代码对象
56
- f_code = tb_frame.f_code #
57
- # 局部变量字典
58
- f_locals = tb_frame.f_locals
59
- # 全局变量
60
- f_globals = tb_frame.f_globals
61
- # 内置名称的字典
62
- f_builtins = tb_frame.f_builtins
63
- # 行号
64
- f_lineno = tb_frame.f_lineno
65
- # 当前指令。这是f_code 字节码字符串的索引
66
- f_lasti = tb_frame.f_lasti
67
- # (可修改属性) 在每行源代码起始处调用的函数
68
- f_trace = tb_frame.f_trace
69
-
70
- f_restricted = tb_frame.f_restricted
71
-
72
- f_exc_traceback = tb_frame.f_exc_traceback
73
- f_exc_type = tb_frame.f_exc_type
74
- f_exc_value = tb_frame.f_exc_value
75
-
76
- def f_code_par(self, f_code):
77
- # 函数名称
78
- co_name = f_code.co_name
79
- # 位置参数个数(包含默认值)
80
- co_argcount = f_code.co_argcount
81
- # 函数使用的局部变量个数
82
- co_nlocals = f_code.co_nlocals
83
- # 字符串编码字节码相对于行号的偏移
84
- co_lnotab = f_code.co_lnotab
85
- # 被编译代码所在文件的名称
86
- co_filename = f_code.co_filename
87
- # 包含嵌套函数所引用的变量名称的元组
88
- co_cellvars = f_code.co_cellvars
89
- # 函数的首行行号
90
- co_firstlineno = f_code.co_firstlineno
91
- # 包含解释器标志的整数
92
- co_flags = f_code.co_flags
93
- # 包含嵌套函数所引用的自由变量名称的元组
94
- co_freevars = f_code.co_freevars
95
- # 表示原始字节码的字符串
96
- co_code = f_code.co_code
97
- # 包含字节码所用名称的元组
98
- co_names = f_code.co_names
99
- # 所需栈的大小(包括局部变量)
100
- co_stacksize = f_code.co_stacksize
101
- # 包含局部变量名称的元组
102
- co_varnames = f_code.co_varnames
103
-
104
-
105
- def reraise(tp, value, tb=None):
106
- """Reraise exception."""
107
- if value.__traceback__ is not tb:
108
- raise value.with_traceback(tb)
109
- raise value