[Bug]: Setting a column on an empty AgentSet fails with polars 2.x (ShapeError); CI on main is red
还没有人认领这个 Issue。
评估
调研方向
Start by reading the AgentSet column-setting path and the ExampleAgentSet / ExampleAgentSetA fixtures used by tests/test_agentset.py and tests/test_agentsetregistry.py. Reproduce the failure with polars 2.1.0, then compare the behavior with the locked 1.36.1 version. Done means setting the first column on an empty AgentSet works with supported polars versions and the affected tests pass.
由索引模型根据 Issue 内容生成。
描述
📝 Description
With polars 2.x, setting a column on an empty AgentSet raises polars.exceptions.ShapeError: can't broadcast Series 'wealth' of length 4 to length 0. It works with polars 1.36.1, which is the version pinned in uv.lock.
The cause is a behavior change in polars itself: pl.DataFrame().with_columns(pl.Series("wealth", [1, 2, 3, 4])) returns a (4, 1) DataFrame on polars 1.36.1 and raises the same ShapeError on polars 2.1.0.
This affects users of the library (creating an AgentSet and setting its first column) and it also breaks the test suite: the shared fixtures such as ExampleAgentSet / ExampleAgentSetA do exactly this in __init__. The CI install is not locked, so it pulls polars 2.1.0 and CI Checks fail on every OS and Python version. The scheduled runs on main have been failing the same way since at least Oct 19 (for example https://github.com/mesa/mesa-frames/actions/runs/41457455719).
🔄 Steps to Reproduce
import polars as pl
from mesa_frames import AgentSet, Model
# Plain polars
print(pl.DataFrame().with_columns(pl.Series("wealth", [1, 2, 3, 4])).shape)
# polars 1.36.1 -> (4, 1); polars 2.1.0 -> ShapeError
# mesa-frames
class A(AgentSet):
def step(self):
pass
a = A(Model())
a["wealth"] = pl.Series("wealth", [1, 2, 3, 4])
# polars 1.36.1 -> works (len(a) == 4); polars 2.1.0 -> ShapeError
🎯 Expected Behavior
Setting the first column on a new AgentSet works with the supported polars versions (pyproject.toml currently allows polars>=1.30.0, with no upper bound).
🚨 Actual Behavior
polars.exceptions.ShapeError: can't broadcast Series 'wealth' of length 4 to length 0
With polars 2.1.0 and the project's tests (MESA_FRAMES_RUNTIME_TYPECHECKING=1), running only tests/test_agentset.py and tests/test_agentsetregistry.py gives 52 errors (in fixture setup) and 9 failures. With the locked polars 1.36.1 the only failure in the full suite is test_datacollector.py::test_postgress, which needs a PostgreSQL database.
🖥️ Python Version
Python 3.12.14
Operating System
macOS (Apple Silicon); the same failure shows in CI on Ubuntu (3.11, 3.12, 3.13, 3.13 --pre), macOS and Windows.
Relevant Packages
polars 1.36.1 (works) vs polars 2.1.0 (fails)
📊 Relevant Log Output
ERROR at setup of Test_AgentSet.test_add
E polars.exceptions.ShapeError: can't broadcast Series 'wealth' of length 4 to length 0
➕ Additional Context
I have not yet checked whether anything besides this pattern breaks with polars 2.x, because the setup error hides later failures. Two possible directions, both up to the maintainers: temporarily constrain polars<2 in pyproject.toml to get CI green again, and/or make setting a column on an empty AgentSet work with polars 2.x. I am happy to work on a fix if that would be useful.
Related: #204 / #206 (the tests added there avoid these fixtures, so they pass on both polars versions).
- 主要语言
- Python
- 星标
- 44
- 派生
- 20
- 平均合并
- 1 分钟
- 30 天内合并 PR
- 1
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
mesa/mesa-frames 的其他 Issue
-
[Bug]: Registering an empty AgentSet in Model.sets raises ColumnNotFoundError for "unique_id"可能已有人在做 @Jay-Naik2526 于 3 天前认领。 未关闭bug triage
难度 3/5 1-2 天 新手友好度 35/100
mesa/mesa-frames#204 ·
-
难度 5/5 一周以上 新手友好度 25/100
mesa/mesa-frames#186 · 10 条评论 ·
-
feature triage
难度 3/5 1-2 天 新手友好度 45/100
mesa/mesa-frames#177 · 1 条评论 ·
-
[Bug]: Solving polars Deprecation warnings for `is_in`可能已有人在做 @adamamer20 于 434 天前认领。 未关闭bug good first issue maintenance Sprints!
mesa/mesa-frames#174 · 2 条评论 · 已指派 1 人 ·
-
[Enhancement] : agents selection in AgentsDf would be better if it returns agent_idx/name as key未关闭enhancement
难度 3/5 1-2 天 新手友好度 40/100
mesa/mesa-frames#162 · 1 条评论 ·
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 74/100
igormcsouza/tether#278 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 91/100
aws-samples/sample-per-model-bedrock#803 ·
维护者通常 1 天内回复
-
documentation p1
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
huggingface/accelerate#4511 ·
维护者通常 1 天内回复
-
follow-up
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复