-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Description
Description
pydeck's pyproject.toml does not declare readme in the dynamic field list, but setuptools attempts to process a readme file as part of the package metadata at build time. Modern setuptools requires that any metadata field populated dynamically (i.e., read from a file rather than statically defined in pyproject.toml) must be explicitly listed under dynamic. Without this declaration, the build fails with an AttributeError.
Flavors
- Script tag
- React
- Python/Jupyter notebook
- MapboxOverlay
- GoogleMapsOverlay
- CARTO
- ArcGIS
Expected Behavior
Building pydeck from source should succeed without requiring any patches to pyproject.toml.
Steps to Reproduce
Try building a wheel from the source code:
pip download --no-binary pydeck --no-deps pydeck==0.9.1 && \
tar -xzf pydeck-0.9.1.tar.gz && \
cd pydeck-0.9.1 && \
pip wheel --no-build-isolation --no-deps .
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.
Environment
- Framework version: 0.9.1
- Browser: N/A
- OS: N/A
Logs
No response