re-common 10.0.21__py3-none-any.whl → 10.0.22__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.
- re_common/baselibrary/__init__.py +4 -4
- re_common/baselibrary/baseabs/__init__.py +6 -6
- re_common/baselibrary/baseabs/baseabs.py +26 -26
- re_common/baselibrary/database/mbuilder.py +132 -132
- re_common/baselibrary/database/moudle.py +93 -93
- re_common/baselibrary/database/msqlite3.py +194 -194
- re_common/baselibrary/database/mysql.py +169 -169
- re_common/baselibrary/database/sql_factory.py +26 -26
- re_common/baselibrary/mthread/MThreadingRun.py +486 -486
- re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
- re_common/baselibrary/mthread/__init__.py +2 -2
- re_common/baselibrary/mthread/mythreading.py +695 -695
- re_common/baselibrary/pakge_other/socks.py +404 -404
- re_common/baselibrary/readconfig/config_factory.py +18 -18
- re_common/baselibrary/readconfig/ini_config.py +317 -317
- re_common/baselibrary/readconfig/toml_config.py +49 -49
- re_common/baselibrary/temporary/envdata.py +36 -36
- re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
- re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
- re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
- re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
- re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
- re_common/baselibrary/tools/contrast_db3.py +123 -123
- re_common/baselibrary/tools/copy_file.py +39 -39
- re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
- re_common/baselibrary/tools/foreachgz.py +39 -39
- re_common/baselibrary/tools/get_attr.py +10 -10
- re_common/baselibrary/tools/image_to_pdf.py +61 -61
- re_common/baselibrary/tools/java_code_deal.py +139 -139
- re_common/baselibrary/tools/javacode.py +79 -79
- re_common/baselibrary/tools/mdb_db3.py +48 -48
- re_common/baselibrary/tools/merge_file.py +171 -171
- re_common/baselibrary/tools/merge_gz_file.py +165 -165
- re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
- re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
- re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
- re_common/baselibrary/tools/mongo_tools.py +50 -50
- re_common/baselibrary/tools/move_file.py +170 -170
- re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
- re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
- re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
- re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
- re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
- re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
- re_common/baselibrary/tools/myparsel.py +104 -104
- re_common/baselibrary/tools/rename_dir_file.py +37 -37
- re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
- re_common/baselibrary/tools/split_line_to_many.py +25 -25
- re_common/baselibrary/tools/stringtodicts.py +33 -33
- re_common/baselibrary/tools/workwechant_bot.py +84 -84
- re_common/baselibrary/utils/baseaiohttp.py +296 -296
- re_common/baselibrary/utils/baseaiomysql.py +87 -87
- re_common/baselibrary/utils/baseallstep.py +191 -191
- re_common/baselibrary/utils/baseavro.py +19 -19
- re_common/baselibrary/utils/baseboto3.py +291 -291
- re_common/baselibrary/utils/basecsv.py +32 -32
- re_common/baselibrary/utils/basedict.py +133 -133
- re_common/baselibrary/utils/basedir.py +241 -241
- re_common/baselibrary/utils/baseencode.py +351 -351
- re_common/baselibrary/utils/baseencoding.py +28 -28
- re_common/baselibrary/utils/baseesdsl.py +86 -86
- re_common/baselibrary/utils/baseexcel.py +264 -264
- re_common/baselibrary/utils/baseexcept.py +109 -109
- re_common/baselibrary/utils/basefile.py +654 -654
- re_common/baselibrary/utils/baseftp.py +214 -214
- re_common/baselibrary/utils/basegzip.py +60 -60
- re_common/baselibrary/utils/basehdfs.py +135 -135
- re_common/baselibrary/utils/basehttpx.py +268 -268
- re_common/baselibrary/utils/baseip.py +87 -87
- re_common/baselibrary/utils/basejson.py +2 -2
- re_common/baselibrary/utils/baselist.py +32 -32
- re_common/baselibrary/utils/basemotor.py +190 -190
- re_common/baselibrary/utils/basemssql.py +98 -98
- re_common/baselibrary/utils/baseodbc.py +113 -113
- re_common/baselibrary/utils/basepandas.py +302 -302
- re_common/baselibrary/utils/basepeewee.py +11 -11
- re_common/baselibrary/utils/basepika.py +180 -180
- re_common/baselibrary/utils/basepydash.py +143 -143
- re_common/baselibrary/utils/basepymongo.py +230 -230
- re_common/baselibrary/utils/basequeue.py +22 -22
- re_common/baselibrary/utils/baserar.py +57 -57
- re_common/baselibrary/utils/baserequest.py +279 -279
- re_common/baselibrary/utils/baseset.py +8 -8
- re_common/baselibrary/utils/basesmb.py +403 -403
- re_common/baselibrary/utils/basestring.py +382 -382
- re_common/baselibrary/utils/basetime.py +320 -320
- re_common/baselibrary/utils/baseurl.py +121 -121
- re_common/baselibrary/utils/basezip.py +57 -57
- re_common/baselibrary/utils/core/__init__.py +7 -7
- re_common/baselibrary/utils/core/bottomutils.py +18 -18
- re_common/baselibrary/utils/core/mdeprecated.py +327 -327
- re_common/baselibrary/utils/core/mlamada.py +16 -16
- re_common/baselibrary/utils/core/msginfo.py +25 -25
- re_common/baselibrary/utils/core/requests_core.py +103 -103
- re_common/baselibrary/utils/fateadm.py +429 -429
- re_common/baselibrary/utils/importfun.py +123 -123
- re_common/baselibrary/utils/mfaker.py +57 -57
- re_common/baselibrary/utils/my_abc/__init__.py +3 -3
- re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
- re_common/baselibrary/utils/mylogger.py +414 -414
- re_common/baselibrary/utils/myredisclient.py +861 -861
- re_common/baselibrary/utils/pipupgrade.py +21 -21
- re_common/baselibrary/utils/ringlist.py +85 -85
- re_common/baselibrary/utils/version_compare.py +36 -36
- re_common/baselibrary/utils/ydmhttp.py +126 -126
- re_common/facade/lazy_import.py +11 -11
- re_common/facade/loggerfacade.py +25 -25
- re_common/facade/mysqlfacade.py +467 -467
- re_common/facade/now.py +31 -31
- re_common/facade/sqlite3facade.py +257 -257
- re_common/facade/use/mq_use_facade.py +83 -83
- re_common/facade/use/proxy_use_facade.py +19 -19
- re_common/libtest/base_dict_test.py +19 -19
- re_common/libtest/baseavro_test.py +13 -13
- re_common/libtest/basefile_test.py +14 -14
- re_common/libtest/basemssql_test.py +77 -77
- re_common/libtest/baseodbc_test.py +7 -7
- re_common/libtest/basepandas_test.py +38 -38
- re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
- re_common/libtest/get_attr_test/settings.py +54 -54
- re_common/libtest/idencode_test.py +53 -53
- re_common/libtest/iniconfig_test.py +35 -35
- re_common/libtest/ip_test.py +34 -34
- re_common/libtest/merge_file_test.py +20 -20
- re_common/libtest/mfaker_test.py +8 -8
- re_common/libtest/mm3_test.py +31 -31
- re_common/libtest/mylogger_test.py +88 -88
- re_common/libtest/myparsel_test.py +27 -27
- re_common/libtest/mysql_test.py +151 -151
- re_common/libtest/pymongo_test.py +21 -21
- re_common/libtest/split_test.py +11 -11
- re_common/libtest/sqlite3_merge_test.py +5 -5
- re_common/libtest/sqlite3_test.py +34 -34
- re_common/libtest/tomlconfig_test.py +30 -30
- re_common/libtest/use_tools_test/__init__.py +2 -2
- re_common/libtest/user/__init__.py +4 -4
- re_common/studio/__init__.py +4 -4
- re_common/studio/assignment_expressions.py +36 -36
- re_common/studio/mydash/test1.py +18 -18
- re_common/studio/pydashstudio/first.py +9 -9
- re_common/studio/streamlitstudio/first_app.py +65 -65
- re_common/studio/streamlitstudio/uber_pickups.py +23 -23
- re_common/studio/test.py +18 -18
- re_common/v2/baselibrary/decorators/utils.py +59 -59
- re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
- re_common/v2/baselibrary/tools/WeChatRobot.py +79 -79
- re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
- re_common/v2/baselibrary/tools/dict_tools.py +37 -37
- re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
- re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
- re_common/v2/baselibrary/tools/list_tools.py +65 -65
- re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
- re_common/v2/baselibrary/tools/text_matcher.py +326 -326
- re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
- re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
- re_common/v2/baselibrary/utils/author_smi.py +360 -360
- re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
- re_common/v2/baselibrary/utils/basedict.py +37 -37
- re_common/v2/baselibrary/utils/basehdfs.py +161 -161
- re_common/v2/baselibrary/utils/basepika.py +180 -180
- re_common/v2/baselibrary/utils/basetime.py +77 -77
- re_common/v2/baselibrary/utils/db.py +38 -38
- re_common/v2/baselibrary/utils/json_cls.py +16 -16
- re_common/v2/baselibrary/utils/mq.py +83 -83
- re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
- re_common/v2/baselibrary/utils/string_bool.py +149 -149
- re_common/v2/baselibrary/utils/string_clear.py +204 -202
- re_common/v2/baselibrary/utils/string_smi.py +18 -18
- re_common/v2/baselibrary/utils/stringutils.py +213 -213
- re_common/vip/base_step_process.py +11 -11
- re_common/vip/baseencodeid.py +90 -90
- re_common/vip/changetaskname.py +28 -28
- re_common/vip/core_var.py +24 -24
- re_common/vip/mmh3Hash.py +89 -89
- re_common/vip/proxy/allproxys.py +127 -127
- re_common/vip/proxy/allproxys_thread.py +159 -159
- re_common/vip/proxy/cnki_proxy.py +153 -153
- re_common/vip/proxy/kuaidaili.py +87 -87
- re_common/vip/proxy/proxy_all.py +113 -113
- re_common/vip/proxy/update_kuaidaili_0.py +42 -42
- re_common/vip/proxy/wanfang_proxy.py +152 -152
- re_common/vip/proxy/wp_proxy_all.py +181 -181
- re_common/vip/read_rawid_to_txt.py +91 -91
- re_common/vip/title/__init__.py +5 -5
- re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
- re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
- re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
- re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
- re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
- re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
- re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
- re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
- re_common/vip/title/transform/__init__.py +10 -10
- {re_common-10.0.21.dist-info → re_common-10.0.22.dist-info}/LICENSE +201 -201
- {re_common-10.0.21.dist-info → re_common-10.0.22.dist-info}/METADATA +16 -16
- re_common-10.0.22.dist-info/RECORD +227 -0
- {re_common-10.0.21.dist-info → re_common-10.0.22.dist-info}/WHEEL +1 -1
- re_common-10.0.21.dist-info/RECORD +0 -227
- {re_common-10.0.21.dist-info → re_common-10.0.22.dist-info}/top_level.txt +0 -0
|
@@ -1,109 +1,109 @@
|
|
|
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
|
|
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
|