如何正确注释生成器以传递像Pycharm这样的过梁?

2024-04-20 02:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个生成器管道,这些生成器相互输入,并由脚本末尾的csv.Dictwriter.writerows函数调用驱动。管道如下:

chunks = (gen_issue_chunk(
        j,
        start,
        jql,
        expand='changelog',
        fields=desired_fields)
              for start in start_at)
    issues = gen_issues(chunks)

    # A set to collect all issue ID's that need to be removed from the db.
    to_delete = set()
    rows = process_issues(issues, to_delete)

例如,在gen_issues函数中,我的函数签名如下所示:

def gen_issues(chunks) -> Generator[resources.Issue, None, None]:
    """


    :param chunks:
    :return:
    """
    for chunk in chunks:
        yield from chunk

Generator类型是从typing模块导入的。但是当这被传递到process_issues函数中时,当我尝试遍历这些问题时,我得到一个linter警告,指出collections.Iterable是预期的,而不是收到Generator[...]。当一个函数需要一个generator,并且它说需要的签名是__generator[any, any, None]时,我在传递这个类型时也会收到警告

注释生成器的正确(最佳实践)方法是什么


Tags: to函数innonefieldsfor管道issue