Python 3.x Telethon异步类型提示

Python 3.x Telethon异步类型提示,python-3.x,pycharm,type-hinting,telethon,Python 3.x,Pycharm,Type Hinting,Telethon,我正在使用python中的telethon库。我正在尝试使用类型提示来让PyCharm自动完成功能正常工作。在下面的代码段中,函数filter\u open\u对话框将函数的返回值作为输入。在阅读telethon文档时,我发现get_dialogs()的返回类型是totalist,所以在dialogs输入参数中添加类型提示。然后我试着调用函数filter\u open\u对话框: 从telethon.tl.types导入用户 从telethon.helpers导入总计器 从telethon导入电

我正在使用python中的telethon库。我正在尝试使用类型提示来让PyCharm自动完成功能正常工作。在下面的代码段中,函数
filter\u open\u对话框
将函数的返回值作为输入。在阅读telethon文档时,我发现
get_dialogs()
的返回类型是
totalist
,所以在
dialogs
输入参数中添加类型提示。然后我试着调用函数
filter\u open\u对话框

从telethon.tl.types导入用户
从telethon.helpers导入总计器
从telethon导入电报客户端,同步
类爬虫:
定义初始化(self,fetch:bool):
self.\u client=TelegramClient('some\u name',my\u api\u id',my\u secret\u api\u hash')
self.\u me=self.\u client.start(phone='my\u phone\u number',password='my\u 2fa\u password')
如果获取:
self.get_open_对话框()
def get_open_对话框(自我):
如果是我,请告诉我:
Crawler.filter\u open\u对话框(self.\u me.get\u dialogs(),[])
返回自我。_me.get_对话框()
@静力学方法
def过滤器打开对话框(对话框:总计列表,过滤器列表:列表):
结果=[]
如果dialogs和dialogs.total:
对于对话框中的对话框:
entity=dialog.entity
如果不是isinstance(实体、用户)且entity.id不在筛选器列表中:
结果追加(实体)
返回结果
但在第
行中,PyCharm显示以下警告:

预期类型汇总器”,改为“协同程序”…


有没有想过出了什么问题?

totalist
只是一个方便的类,可以帮助我返回带有
.total
字段的列表。您可能只想添加以下行:

from telethon.tl.custom import Dialog

def filter_open_dialogs(dialogs, filter_list):
    dialog: Dialog
    ...  # rest of code in the method

这应该告诉PyCharm正确输入提示。我不认为您可以指定自定义类的内部类型。

它看起来像是
self.\u me.get\u dialogs()
没有返回类型为
totalist
的对象。我对
telegram
一无所知,但它大概是围绕
异步
或其他基于协同程序的库构建的,因此,所有这些函数实际上都是协程,您通常应该
等待
结果,而不是直接使用它们?你能给我们一个吗?@JohnGordon但是在代码文档中它说:与iter\u对话框相同,但是返回一个
总计列表
instead@abarnert是的,这正是文档所说的,在新版本中,他们使用的是
asyncio
,但我对此一无所知。我将用一些代码更新这篇文章,以便能够重现这个问题。@Offoue将一个大型库从同步库、线程库或任何基于asyncio的库更改为基于asyncio的库,而不从根本上更改API,这似乎是一项艰巨的任务,因此如果一些文档落后,我不会感到惊讶。如果函数返回一个waitiable,when waiting会给你一个
totalist
,但是文档说它直接返回了一个
totalist
,那可能是一个文档错误,你可以归档,他们可以修复。但再一次,这只是一个关于我不知道的图书馆的胡乱猜测,所以…希望其他人知道更多。(但是:如果不尝试键入检查代码,代码是否有效?)