@@ -27,7 +27,10 @@ def __dir__() -> list[str]:
2727@runtime_checkable
2828class DynamicMetadataProtocol (Protocol ):
2929 def dynamic_metadata (
30- self , fields : Iterable [str ], settings : dict [str , Any ], metadata : dict [str , Any ]
30+ self ,
31+ fields : Iterable [str ],
32+ settings : dict [str , Any ],
33+ project : Mapping [str , Any ],
3134 ) -> dict [str , Any ]: ...
3235
3336
@@ -40,9 +43,7 @@ def get_requires_for_dynamic_metadata(
4043
4144@runtime_checkable
4245class DynamicMetadataWheelProtocol (DynamicMetadataProtocol , Protocol ):
43- def dynamic_wheel (
44- self , field : str , settings : Mapping [str , Any ] | None = None
45- ) -> bool : ...
46+ def dynamic_wheel (self , field : str , settings : Mapping [str , Any ]) -> bool : ...
4647
4748
4849DMProtocols = Union [
@@ -71,7 +72,7 @@ def load_provider(
7172
7273
7374def load_dynamic_metadata (
74- metadata : Mapping [str , Mapping [str , str ]],
75+ metadata : Mapping [str , Mapping [str , Any ]],
7576) -> Generator [tuple [str , DMProtocols | None , dict [str , str ]], None , None ]:
7677 for field , orig_config in metadata .items ():
7778 if "provider" in orig_config :
@@ -106,19 +107,14 @@ def __getitem__(self, key: str) -> Any:
106107 raise ValueError (msg )
107108
108109 provider = self .providers .pop (key )
109- self .project [key ] = provider .dynamic_metadata (
110- key , self .settings [key ], self .project
111- )
110+ self .project [key ] = provider .dynamic_metadata (key , self .settings [key ], self )
112111 self .project ["dynamic" ].remove (key )
113112
114113 return self .project [key ]
115114
116115 def __iter__ (self ) -> Iterator [str ]:
117116 # Iterate over the keys of the static settings
118- yield from self .project
119-
120- # Iterate over the keys of the dynamic metadata providers
121- yield from self .providers
117+ yield from [* self .project .keys (), * self .providers .keys ()]
122118
123119 def __len__ (self ) -> int :
124120 return len (self .project ) + len (self .providers )
@@ -129,7 +125,7 @@ def __contains__(self, key: object) -> bool:
129125
130126def process_dynamic_metadata (
131127 project : Mapping [str , Any ],
132- metadata : Mapping [str , Mapping [str , str ]],
128+ metadata : Mapping [str , Mapping [str , Any ]],
133129) -> dict [str , Any ]:
134130 """Process dynamic metadata.
135131
0 commit comments