@@ -3169,7 +3169,7 @@ cdef class Dict(Provider):
31693169 return copied
31703170
31713171 copied = _memorized_duplicate(self , memo)
3172- copied.set_kwargs( ** deepcopy( self .kwargs , memo) )
3172+ self ._copy_kwargs(copied , memo)
31733173 self ._copy_overridings(copied, memo)
31743174 return copied
31753175
@@ -3238,11 +3238,20 @@ cdef class Dict(Provider):
32383238 yield from filter (is_provider, self .kwargs.values())
32393239 yield from super ().related
32403240
3241+ def _copy_kwargs (self , copied , memo ):
3242+ """ Return copy of kwargs."""
3243+ copied_kwargs = {
3244+ _copy_if_provider(name, memo): _copy_if_provider(value, memo)
3245+ for name, value in self .kwargs.items()
3246+ }
3247+ copied.set_kwargs(copied_kwargs)
3248+
32413249 cpdef object _provide(self , tuple args, dict kwargs):
32423250 """ Return result of provided callable's call."""
32433251 return __provide_keyword_args(kwargs, self .__kwargs, self .__kwargs_len)
32443252
32453253
3254+
32463255cdef class Resource(Provider):
32473256 """ Resource provider provides a component with initialization and shutdown."""
32483257
0 commit comments