假设我正在为一个不受我控制的大型遗留代码库编写Python插件。该代码库公开了一个具有多个函数的对象,我可以从插件代码调用这些函数:
def plugin_entrypoint(ctx:LegacyCodebaseObject):...
其中一个函数会导致插件控制器在出现错误的情况下终止插件:
def plugin_entrypoint(ctx:LegacyCodebaseObject):...ctx.fail(reason=“foo”,…)#从不返回
然而,作为一个遗留的代码库,这些函数都没有类型注释。我的插件是type-annotated和我使用mypy,这会引起麻烦,因为mypy认为ctx.fail()
可能返回:
def plugin_entrypoint(ctx:LegacyCodebaseObject):...尝试:some_data=some_function()例外情况e除外:ctx.fail(reason=f“准备数据失败:{e}”)#从不返回other_function(some_data)#mypy抱怨some_ddata可能在赋值之前被引用
有可能以某种方式进行注释吗LegacyCodebaseObject.fail()
以mypy能够理解的方式从我的代码中提取?
我可以简单地包装ctx.fail()
到我自己用Never类型注释的函数中,但这将是不理想的,我的插件将无法通过代码审查。