Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

cloudpickle fails to pickle NewType in main module by value on Python 3.10 and newer

未关闭
#520 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
python
领域
backend

调研方向

首先在 Python 3.9 和 3.10 下运行 a.py 和 b.py 复现脚本,然后跟踪 cloudpickle 对 main 中定义的 typing.NewType 对象的处理方式。当 a.py 序列化的对象可以在 Python 3.10 及更高版本中由 b.py 加载且不再出现 AttributeError,同时保留现有的 Python 3.9 行为时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

In a.py:

import cloudpickle
from typing import Any, NewType
RunDict = NewType("RunDict", dict[str, Any])
with open("tmp.pickle", "wb") as f:
    f.write(cloudpickle.dumps(RunDict))

In b.py

import cloudpickle
with open("tmp.pickle", "rb") as f:
    value = cloudpickle.load(f)
print(value)
λ python3.9 a.py
λ python3.9 b.py
<function NewType.<locals>.new_type at 0x1004580d0>
λ python3.10 a.py
λ python3.10 b.py
Traceback (most recent call last):
  File "/Users/shantanu/devoai/openai/b.py", line 3, in <module>
    value = cloudpickle.load(f)
AttributeError: Can't get attribute 'RunDict' on <module '__main__' from '/Users/shantanu/devoai/openai/b.py'>
主要语言
Python
星标
1.9k
派生
197
平均合并
1 天 10 小时
30 天内合并 PR
1

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

cloudpipe/cloudpickle 的其他 Issue

查看 cloudpipe/cloudpickle 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。