向警告和异常添加其他上下文

extra-context的Python项目详细描述


附加上下文

有时,当你得到警告和例外,回溯是不够的。 例如,您有一个迭代次数为10000次的循环。在第1000次迭代中 调用的函数出现异常。因此,您希望为错误消息提供更多上下文。

有两个选项

  • 在发生异常的站点提供更多上下文

    • 只有在控制异常/警告生成时才有可能
    • 有时,没有足够的上下文开始(即,您正在调用一些公共实用程序函数)
  • 当异常/警告在调用堆栈中传递时,请提供其他上下文

    • 在用户代码中可以是“opt-in”,不需要更改库。
    • 也适用于警告(通常不提供回溯信息)

示例

激发编写此库的主要示例:

to_process={"file1":{...},"file2":{...},...}fork,vinto_process.items():cleaned=clean_data(v)write_output(k,cleaned)

如果clean_data(v)中的某个地方出现异常或警告,“上下文”即 数据丢失。回溯可能类似于:

  File "clean.py", line 35, in clean_data
ZeroDivisionError: division by zero

现在,使用此库,您可以为错误消息提供额外的上下文

fromextra_contextimportprovide_extra_contextto_process={"file1":{...},"file2":{...},...}fork,vinto_process.items():withprovide_extra_context(filename=k):cleaned=clean_data(v)write_output(k,cleaned)

这将报告与以下相同的错误:

  File "clean.py", line 35, in clean_data
ZeroDivisionError: division by zero
  |- In context: filename='file4'

装潢师

还有一个decorator在出现错误时报告函数参数

importwarningsfromextra_contextimportprovide_call_context@provide_call_contextdefw(x):warnings.warn("Oops")w(42)

此报告:

UserWarning: Oops
  |- In context: w(42)
  warnings.warn("Oops")

许可证

版权所有2018 Moritz Wanzenbóck

兹免费向任何获得本软件及相关软件副本的人授予许可 文档文件(“软件”),无限制地处理软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售软件副本的权利,以及 在满足以下条件的情况下,允许向其提供软件的人员这样做:

上述版权通知和本许可通知应包含在 软件。

软件按“原样”提供,无任何明示或暗示的保证,包括但不限于 保证适销性,适合特定用途和不侵权。在任何情况下,作者或 无论是在合同诉讼、侵权诉讼或 否则,由本软件或本软件的使用或其他交易引起的,由本软件引起的,或与本软件有关的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java按钮在可展开列表视图中不可单击   java类声明对象类型不明确   java使用单独的类从Get和Set方法获取值   java Spring引导集成测试不读取属性文件   java如何为函数中带注释的参数编写mockito   java在调整JFrame的大小时消除了组件之间的额外空间   Java流筛选器空指针问题   为什么java会这么做。util。可选的没有一些和没有子类?   java Android广播接收器作为传递字符串的内部静态类   Java中使用迭代器的集合类型推断?   java在JUnit测试中获取JAR列表   java从命名的Linux管道读取BufferedInputStream只工作一次   java是使用值对地图进行排序的最佳方法   位操作有人知道为什么我的java代码使用n=n/2不能正常工作,而n>>1能正常工作吗?   java数据已从mysql中选择,但该过程引发NullPointerException   java如何将文本从控制台传递到文本编辑器   java如何在不使用adb命令的情况下通过USB连接到pc的安卓设备的互联网连接?   Spring是如何使用Java8类的,但它运行在Java7上的?   java仅仅通过类型参数创建泛型类?