Skip to content

[Bug] pyproject.toml for pydeck python library needs to have dynamic field #10047

@Lanceypantsy

Description

@Lanceypantsy

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions