@@ -252,7 +252,7 @@ def create_context(
252252 return Context (name , default_value )
253253
254254
255- _UNDEFINED = object ()
255+ _UNDEFINED = cast ( Any , object () )
256256
257257
258258class Context (Generic [_StateType ]):
@@ -267,18 +267,15 @@ def __call__(
267267 * children : Any ,
268268 value : _StateType = _UNDEFINED ,
269269 key : Key | None = None ,
270- ) -> (
271- # users don't need to see that this is a ContextProvider
272- ComponentType
273- ):
270+ ) -> ContextProvider [_StateType ]:
274271 return ContextProvider (
275272 * children ,
276273 value = self .default_value if value is _UNDEFINED else value ,
277274 key = key ,
278275 type = self ,
279276 )
280277
281- def __repr__ (self ):
278+ def __repr__ (self ) -> str :
282279 return f"{ type (self ).__name__ } ({ self .name !r} )"
283280
284281
@@ -292,13 +289,14 @@ def use_context(context: Context[_StateType]) -> _StateType:
292289 provider = hook .get_context_provider (context )
293290 if provider is None :
294291 return context .default_value
292+ subscribers = provider ._subscribers
295293
296294 @use_effect
297295 def subscribe_to_context_change () -> Callable [[], None ]:
298- provider . subscribers .add (hook )
299- return lambda : provider . subscribers .remove (hook )
296+ subscribers .add (hook )
297+ return lambda : subscribers .remove (hook )
300298
301- return provider .value
299+ return provider ._value
302300
303301
304302class ContextProvider (Generic [_StateType ]):
@@ -310,18 +308,18 @@ def __init__(
310308 type : Context [_StateType ],
311309 ) -> None :
312310 self .children = children
313- self .value = value
314311 self .key = key
315- self .subscribers : set [LifeCycleHook ] = set ()
316312 self .type = type
313+ self ._subscribers : set [LifeCycleHook ] = set ()
314+ self ._value = value
317315
318316 def render (self ) -> VdomDict :
319317 current_hook ().set_context_provider (self )
320318 return vdom ("" , * self .children )
321319
322320 def should_render (self , new : ContextProvider [_StateType ]) -> bool :
323- if self .value is not new .value :
324- for hook in self .subscribers :
321+ if self ._value is not new ._value :
322+ for hook in self ._subscribers :
325323 hook .set_context_provider (new )
326324 hook .schedule_render ()
327325 return True
0 commit comments