Title: 登录后出现 TypeError: issubclass() arg 1 must be a class 异常 · Issue #54 · LagrangeDev/lagrange-python · GitHub
Open Graph Title: 登录后出现 TypeError: issubclass() arg 1 must be a class 异常 · Issue #54 · LagrangeDev/lagrange-python
X Title: 登录后出现 TypeError: issubclass() arg 1 must be a class 异常 · Issue #54 · LagrangeDev/lagrange-python
Description: 扫码登录成功后出现如下异常追栈信息: Traceback (most recent call last): File "
Open Graph Description: 扫码登录成功后出现如下异常追栈信息: Traceback (most recent call last): File "
X Description: 扫码登录成功后出现如下异常追栈信息: Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "...
Opengraph URL: https://github.com/LagrangeDev/lagrange-python/issues/54
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"登录后出现 TypeError: issubclass() arg 1 must be a class 异常","articleBody":"扫码登录成功后出现如下异常追栈信息:\n\n```bash\nTraceback (most recent call last):\n\n File \"\u003cfrozen runpy\u003e\", line 198, in _run_module_as_main\n File \"\u003cfrozen runpy\u003e\", line 88, in _run_code\n\n File \"D:\\anon\\nekobox\\.venv\\Scripts\\nekobox.exe\\__main__.py\", line 7, in \u003cmodule\u003e\n\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\nekobox\\__main__.py\", line 308, in main\n if args.func(args):\n │ │ └ Namespace(command='run', uin=None, debug=False, use_png=False, func=\u003cfunction _run at 0x0000024C928B99E0\u003e)\n │ └ \u003cfunction _run at 0x0000024C928B99E0\u003e\n └ Namespace(command='run', uin=None, debug=False, use_png=False, func=\u003cfunction _run at 0x0000024C928B99E0\u003e)\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\nekobox\\__main__.py\", line 188, in _run\n run(int(uin), host, port, token, path, protocol, sign_url, level, args.use_png)\n │ │ │ │ │ │ │ │ │ │ └ False\n │ │ │ │ │ │ │ │ │ └ Namespace(command='run', uin=None, debug=False, use_png=False, func=\u003cfunction _run at 0x0000024C928B99E0\u003e)\n │ │ │ │ │ │ │ │ └ 'INFO'\n │ │ │ │ │ │ │ └ 'https://sign.lagrangecore.org/api/sign/30366'\n │ │ │ │ │ │ └ 'remote'\n │ │ │ │ │ └ ''\n │ │ │ │ └ 'AnonChihaya'\n │ │ │ └ 60000\n │ │ └ '127.0.0.1'\n │ └ '1953421488'\n └ \u003cfunction run at 0x0000024C8ED12E80\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\nekobox\\__main__.py\", line 38, in run\n server.run()\n │ └ \u003cfunction Server.run at 0x0000024C9283ED40\u003e\n └ \u003csatori.server.Server object at 0x0000024C910D4440\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\satori\\server\\__init__.py\", line 471, in run\n manager.launch_blocking(loop=loop, stop_signal=stop_signal)\n │ │ │ └ (\u003cSignals.SIGINT: 2\u003e,)\n │ │ └ None\n │ └ \u003cfunction Launart.launch_blocking at 0x0000024C92483EC0\u003e\n └ \u003claunart.manager.Launart object at 0x0000024C928BD940\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\launart\\manager.py\", line 468, in launch_blocking\n loop.run_until_complete(launch_task)\n │ │ └ \u003cTask pending name='amnesia-launch' coro=\u003cLaunart.launch() running at D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\launart\\manager...\n │ └ \u003cfunction BaseEventLoop.run_until_complete at 0x0000024C90AB6160\u003e\n └ \u003cProactorEventLoop running=True closed=False debug=False\u003e\n File \"C:\\Users\\WindowsSov8\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\asyncio\\base_events.py\", line 712, in run_until_complete\n self.run_forever()\n │ └ \u003cfunction BaseEventLoop.run_forever at 0x0000024C90AB60C0\u003e\n └ \u003cProactorEventLoop running=True closed=False debug=False\u003e\n File \"C:\\Users\\WindowsSov8\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\asyncio\\base_events.py\", line 683, in run_forever\n self._run_once()\n │ └ \u003cfunction BaseEventLoop._run_once at 0x0000024C90AB7EC0\u003e\n └ \u003cProactorEventLoop running=True closed=False debug=False\u003e\n File \"C:\\Users\\WindowsSov8\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\asyncio\\base_events.py\", line 2040, in _run_once\n handle._run()\n │ └ \u003cfunction Handle._run at 0x0000024C9091E700\u003e\n └ \u003cHandle Task.task_wakeup()\u003e\n File \"C:\\Users\\WindowsSov8\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\asyncio\\events.py\", line 89, in _run\n self._context.run(self._callback, *self._args)\n │ │ │ │ │ └ \u003cmember '_args' of 'Handle' objects\u003e\n │ │ │ │ └ \u003cHandle Task.task_wakeup()\u003e\n │ │ │ └ \u003cmember '_callback' of 'Handle' objects\u003e\n │ │ └ \u003cHandle Task.task_wakeup()\u003e\n │ └ \u003cmember '_context' of 'Handle' objects\u003e\n └ \u003cHandle Task.task_wakeup()\u003e\n\u003e File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\client\\base.py\", line 148, in _push_handle_loop\n await self.push_handler(sso)\n │ │ └ SSOPacket(seq=-1321044337, ret_code=0, extra='', session_id=b'', cmd='trpc.msg.olpush.OlPushService.MsgPush', data=b'\\n\\x92\\x...\n │ └ \u003cfunction Client.push_handler at 0x0000024C91382D40\u003e\n └ \u003clagrange.client.client.Client object at 0x0000024C92933A10\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\client\\client.py\", line 185, in push_handler\n if rsp := await self._push_deliver.execute(sso.cmd, sso):\n │ │ │ │ │ └ SSOPacket(seq=-1321044337, ret_code=0, extra='', session_id=b'', cmd='trpc.msg.olpush.OlPushService.MsgPush', data=b'\\n\\x92\\x...\n │ │ │ │ └ 'trpc.msg.olpush.OlPushService.MsgPush'\n │ │ │ └ SSOPacket(seq=-1321044337, ret_code=0, extra='', session_id=b'', cmd='trpc.msg.olpush.OlPushService.MsgPush', data=b'\\n\\x92\\x...\n │ │ └ \u003cfunction PushDeliver.execute at 0x0000024C91382160\u003e\n │ └ \u003clagrange.client.server_push.binder.PushDeliver object at 0x0000024C92A20050\u003e\n └ \u003clagrange.client.client.Client object at 0x0000024C92933A10\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\client\\server_push\\binder.py\", line 26, in execute\n return await self._handle_map[cmd](self._client, sso)\n │ │ │ │ │ └ SSOPacket(seq=-1321044337, ret_code=0, extra='', session_id=b'', cmd='trpc.msg.olpush.OlPushService.MsgPush', data=b'\\n\\x92\\x...\n │ │ │ │ └ \u003clagrange.client.client.Client object at 0x0000024C92933A10\u003e\n │ │ │ └ \u003clagrange.client.server_push.binder.PushDeliver object at 0x0000024C92A20050\u003e\n │ │ └ 'trpc.msg.olpush.OlPushService.MsgPush'\n │ └ {'trpc.msg.olpush.OlPushService.MsgPush': \u003cfunction msg_push_handler at 0x0000024C91382480\u003e, 'trpc.qq_new_tech.status_svc.Sta...\n └ \u003clagrange.client.server_push.binder.PushDeliver object at 0x0000024C92A20050\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\client\\server_push\\msg.py\", line 77, in msg_push_handler\n pkg = MsgPush.decode(sso.data).body\n │ │ │ └ b'\\n\\x92\\x03\\n\\x7f\\x08\\xf7\\xef\\x9d\\xe7\\n\\x12\\x18u_KMAqMhSn-QG9Khx1Riklvw\\x18\\xe9\\x07 \\xbd\\xaa\\x99\\x80\\x02(\\xb0\\xb1\\xbb\\xa3\\x0...\n │ │ └ SSOPacket(seq=-1321044337, ret_code=0, extra='', session_id=b'', cmd='trpc.msg.olpush.OlPushService.MsgPush', data=b'\\n\\x92\\x...\n │ └ \u003cclassmethod(\u003cfunction ProtoStruct.decode at 0x0000024C9119C900\u003e)\u003e\n └ \u003cclass 'lagrange.pb.message.msg_push.MsgPush'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 294, in decode\n return cls(True, **kwargs)\n │ └ {'body': b'\\n\\x7f\\x08\\xf7\\xef\\x9d\\xe7\\n\\x12\\x18u_KMAqMhSn-QG9Khx1Riklvw\\x18\\xe9\\x07 \\xbd\\xaa\\x99\\x80\\x02(\\xb0\\xb1\\xbb\\xa3\\x07...\n └ \u003cclass 'lagrange.pb.message.msg_push.MsgPush'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 185, in __init__\n value = _decode(field.type_without_optional, value)\n │ │ │ └ b'\\n\\x7f\\x08\\xf7\\xef\\x9d\\xe7\\n\\x12\\x18u_KMAqMhSn-QG9Khx1Riklvw\\x18\\xe9\\x07 \\xbd\\xaa\\x99\\x80\\x02(\\xb0\\xb1\\xbb\\xa3\\x07BN\\x08\\x9...\n │ │ └ \u003cproperty object at 0x0000024C9118A7F0\u003e\n │ └ \u003clagrange.utils.binary.protobuf.models.ProtoField object at 0x0000024C911BF4D0\u003e\n └ \u003cfunction _decode at 0x0000024C9119C2C0\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 120, in _decode\n return typ.decode(raw)\n │ │ └ b'\\n\\x7f\\x08\\xf7\\xef\\x9d\\xe7\\n\\x12\\x18u_KMAqMhSn-QG9Khx1Riklvw\\x18\\xe9\\x07 \\xbd\\xaa\\x99\\x80\\x02(\\xb0\\xb1\\xbb\\xa3\\x07BN\\x08\\x9...\n │ └ \u003cclassmethod(\u003cfunction ProtoStruct.decode at 0x0000024C9119C900\u003e)\u003e\n └ \u003cclass 'lagrange.pb.message.msg_push.MsgPushBody'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 294, in decode\n return cls(True, **kwargs)\n │ └ {'response_head': b'\\x08\\xf7\\xef\\x9d\\xe7\\n\\x12\\x18u_KMAqMhSn-QG9Khx1Riklvw\\x18\\xe9\\x07 \\xbd\\xaa\\x99\\x80\\x02(\\xb0\\xb1\\xbb\\xa3\\...\n └ \u003cclass 'lagrange.pb.message.msg_push.MsgPushBody'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 185, in __init__\n value = _decode(field.type_without_optional, value)\n │ │ │ └ b'\\n\\xe3\\x01\\n!\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x...\n │ │ └ \u003cproperty object at 0x0000024C9118A7F0\u003e\n │ └ \u003clagrange.utils.binary.protobuf.models.ProtoField object at 0x0000024C911BF350\u003e\n └ \u003cfunction _decode at 0x0000024C9119C2C0\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 120, in _decode\n return typ.decode(raw)\n │ │ └ b'\\n\\xe3\\x01\\n!\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x...\n │ └ \u003cclassmethod(\u003cfunction ProtoStruct.decode at 0x0000024C9119C900\u003e)\u003e\n └ \u003cclass 'lagrange.pb.message.msg.Message'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 294, in decode\n return cls(True, **kwargs)\n │ └ {'body': b'\\n!\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x9...\n └ \u003cclass 'lagrange.pb.message.msg.Message'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 185, in __init__\n value = _decode(field.type_without_optional, value)\n │ │ │ └ b'\\n!\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x93\\x12x\\xa...\n │ │ └ \u003cproperty object at 0x0000024C9118A7F0\u003e\n │ └ \u003clagrange.utils.binary.protobuf.models.ProtoField object at 0x0000024C911733D0\u003e\n └ \u003cfunction _decode at 0x0000024C9119C2C0\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 120, in _decode\n return typ.decode(raw)\n │ │ └ b'\\n!\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x93\\x12x\\xa...\n │ └ \u003cclassmethod(\u003cfunction ProtoStruct.decode at 0x0000024C9119C900\u003e)\u003e\n └ \u003cclass 'lagrange.pb.message.rich_text.RichText'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 294, in decode\n return cls(True, **kwargs)\n │ └ {'attrs': b'\\x08\\x00\\x10\\x93\\xd2\\x95\\xc1\\x06\\x18\\xf3\\x86\\xf7\\xc6\\x01 \\x00(\\n0\\x008\\x86\\x01@\\x02J\\x06\\xe5\\xae\\x8b\\xe4\\xbd\\x93'...\n └ \u003cclass 'lagrange.pb.message.rich_text.RichText'\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 185, in __init__\n value = _decode(field.type_without_optional, value)\n │ │ │ └ [b'\\xaa\\x02u\\x08\\x00P\\x00`\\x00h\\x00\\x80\\x01\\x00\\x88\\x01\\xb0\\xa0\\t\\x9a\\x01b\\x08\\x08x\\x80\\x80\\x04\\xc8\\x01\\x00\\xf0\\x01\\x00\\xf8\\x...\n │ │ └ \u003cproperty object at 0x0000024C9118A7F0\u003e\n │ └ \u003clagrange.utils.binary.protobuf.models.ProtoField object at 0x0000024C911BEED0\u003e\n └ \u003cfunction _decode at 0x0000024C9119C2C0\u003e\n File \"D:\\anon\\nekobox\\.venv\\Lib\\site-packages\\lagrange\\utils\\binary\\protobuf\\models.py\", line 119, in _decode\n if issubclass(typ, ProtoStruct):\n │ └ \u003cclass 'lagrange.utils.binary.protobuf.models.ProtoStruct'\u003e\n └ list[lagrange.pb.message.rich_text.Elems]\n\nTypeError: issubclass() arg 1 must be a class\n```\n\n询问 `claude-3.7-sonnet` 后,认为问题出现在 `lagrange/utils/binary/protobuf/models.py` 的如下函数中:\n\n```python\n\ndef _decode(typ: type[_ProtoTypes], raw):\n if isinstance(typ, str):\n raise ValueError(\n f\"ForwardRef '{typ}' not resolved. \"\n f\"Please call ProtoStruct.update_forwardref({{'{typ}': {typ}}}) before decoding\"\n )\n if issubclass(typ, ProtoStruct):\n return typ.decode(raw)\n ...\n```\n\n抛出异常时,此处 `typ` 类型为 `list[lagrange.pb.message.rich_text.Elems]` ,无法作为 `issubclass` 方法的第一个参数传入。","author":{"url":"https://github.com/WindowsSov8forUs","@type":"Person","name":"WindowsSov8forUs"},"datePublished":"2025-05-15T04:22:31.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/54/lagrange-python/issues/54"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:e20f374f-a505-7ccc-59ca-48fa270835b3 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 98D0:4A5B9:32B2CE:42B3FE:69802BFE |
| html-safe-nonce | 9157222df7f007378349cb605566941e0267a990ea350880670052ac532bb623 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5OEQwOjRBNUI5OjMyQjJDRTo0MkIzRkU6Njk4MDJCRkUiLCJ2aXNpdG9yX2lkIjoiODQyODIwODg2Mjk1OTUxMjU3NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | b4ab0a8c8d8e58bbf8966c8ae723b0305375b3b419786c66ef59d94b2a965810 |
| hovercard-subject-tag | issue:3064844661 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/LagrangeDev/lagrange-python/54/issue_layout |
| twitter:image | https://opengraph.githubassets.com/977c34f8b84bf151955e3e8176af2122808ea9fc89e93aa054b2e7c334cae6b3/LagrangeDev/lagrange-python/issues/54 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/977c34f8b84bf151955e3e8176af2122808ea9fc89e93aa054b2e7c334cae6b3/LagrangeDev/lagrange-python/issues/54 |
| og:image:alt | 扫码登录成功后出现如下异常追栈信息: Traceback (most recent call last): File " |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | WindowsSov8forUs |
| hostname | github.com |
| expected-hostname | github.com |
| None | 60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6 |
| turbo-cache-control | no-preview |
| go-import | github.com/LagrangeDev/lagrange-python git https://github.com/LagrangeDev/lagrange-python.git |
| octolytics-dimension-user_id | 148437753 |
| octolytics-dimension-user_login | LagrangeDev |
| octolytics-dimension-repository_id | 753401343 |
| octolytics-dimension-repository_nwo | LagrangeDev/lagrange-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 753401343 |
| octolytics-dimension-repository_network_root_nwo | LagrangeDev/lagrange-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7c85641c598ad130c74f7bcc27f58575cac69551 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width