← All tasks
pythonvisgl/deck.gl #10047Not a task: not reproduced

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

envgap__visgl__deck.gl-10047

01 / FAILURE SIGNATURE

As reported upstream

AttributeError: 'NoneType' object has no attribute 'get'
Not a benchmark task.
  • In a clean container the reported failure did not reproduce, or the known fix did not make the project run.

02 / ENVIRONMENT RECIPE

Base commit
1d10e0124f2087e8bc191945e079492f1ff518db
Manifest
bindings/pydeck/pyproject.toml
Reproduce
Awaiting issue-specific recipe
Run under trace
Awaiting a meaningful runtime command

03 / ORIGINAL ISSUE TEXT

visgl/deck.gl #10047 · read the original issue
### 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_
Continue on GitHub ↗

04 / LABELS

Labels from the report text only; not yet run

No supported category has been assigned.

Label rules and the text that matched
[]