I couldn’t find anything about case sensitivity in PEP 643. I think it’s implied because the keys in the email format are case insensitive. Most backends use title case for the keys, and lowercase for the entries in Dynamic.
Recently, uv tried to apply a fix to change it’s behavior (to I think the correct one, and the one in packaging): currently, it checks dynamic as case sensitive, meaning that these lines in flash-attn
Dynamic: requires-dist
Requires-Dist: torch
Requires-Dist: einops
were not registering as dynamic, since requries-dist != Requires-Dist (note that the email format that METADATA is based on has case insensitive keys!). This had to be reverted, though the only reason it worked before is wrong.
Basically everything is listed in both in flash-attn!
Metadata-Version: 2.2
Name: flash_attn
Version: 2.8.3
Summary: Flash Attention: Fast and Memory-Efficient Exact Attention
Home-page: https://github.com/Dao-AILab/flash-attention
Author: Tri Dao
Author-email: tri@tridao.me
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: Unix
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS
Requires-Dist: torch
Requires-Dist: einops
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary
uv doesn’t allow you to solve (with match-runtime) if Requires-Dist is in Dynamic. But since requires-dist was in Dynamic, and that didn’t match, it was happily solving assuming this (in fact nothing) was dynamic. Changing it caused this to no longer solve because the SDist declares dynamic requires-dist, so it was reverted.
I think the PEP needs to be updated to mention that the entries in Dynamic are case insensitive. If not, it needs to be updated the other way and most build backends need to change the Dynamic key to match the (case insensitive!) email field names.