fix: updates pydeck pyproject.toml to include dynamic field#10048
fix: updates pydeck pyproject.toml to include dynamic field#10048Lanceypantsy wants to merge 3 commits intovisgl:masterfrom
Conversation
updates pydeck pyproject.toml to include dynamic field Signed-off-by: Lance Barto <lbarto@redhat.com>
| name = "pydeck" | ||
| version = "0.9.1" | ||
| requires-python = ">=3.8" | ||
| dynamic = ["readme", "license", "authors", "keywords", "classifiers", "dependencies", "optional-dependencies"] |
There was a problem hiding this comment.
Missing description in dynamic field list
Medium Severity
The dynamic list is missing "description", even though setup.py defines description="Widget for deck.gl maps". Since description is neither statically declared in [project] nor listed in dynamic, modern setuptools will silently ignore it — the exact same class of bug this PR aims to fix for readme. The package metadata will have no description.
There was a problem hiding this comment.
@Lanceypantsy could you decide if this should be addressed?
| name = "pydeck" | ||
| version = "0.9.1" | ||
| requires-python = ">=3.8" | ||
| dynamic = ["readme", "license", "authors", "keywords", "classifiers", "dependencies", "optional-dependencies"] |
There was a problem hiding this comment.
Missing urls in dynamic field list
Low Severity
The dynamic list is missing "urls", even though setup.py defines url="https://github.com/visgl/deck.gl/tree/master/bindings/pydeck". The url parameter in setup() maps to the urls metadata field in PEP 621. Without declaring it in dynamic, modern setuptools will silently drop the homepage URL from the package metadata, so PyPI will show no project URL.


Closes #10047
Background
pydeck's pyproject.toml has a minimal [project] table (only name, version, requires-python) while all package metadata — description, readme, license, authors, keywords, classifiers, dependencies, optional-dependencies — is defined in setup.py. Modern setuptools requires that any field defined outside of pyproject.toml be explicitly declared in dynamic; without it, setuptools silently ignores those values.
The fatal error is specifically caused by readme not being listed as dynamic:
AttributeError: 'NoneType' object has no attribute 'get'
Because readme is not declared dynamic, setuptools passes None to its internal _long_description handler instead of the actual value from setup.py, which then crashes when it tries to call .get() on it.
After the updates, the wheel builds successfully:
Change List
Note
Low Risk
Low risk: packaging-only change that affects how metadata is sourced during builds, with no runtime behavior impact.
Overview
Ensures
pydeckbuilds correctly with modern setuptools by adding adynamiclist tobindings/pydeck/pyproject.toml, allowing metadata (e.g.,readme,license,authors, and dependency fields) to be populated fromsetup.pyinstead of being ignored.Written by Cursor Bugbot for commit 79816b7. This will update automatically on new commits. Configure here.