@@ -3169,7 +3169,7 @@ cdef class Dict(Provider):
3169
3169
return copied
3170
3170
3171
3171
copied = _memorized_duplicate(self , memo)
3172
- copied.set_kwargs( ** deepcopy( self .kwargs , memo) )
3172
+ self ._copy_kwargs(copied , memo)
3173
3173
self ._copy_overridings(copied, memo)
3174
3174
return copied
3175
3175
@@ -3238,11 +3238,20 @@ cdef class Dict(Provider):
3238
3238
yield from filter (is_provider, self .kwargs.values())
3239
3239
yield from super ().related
3240
3240
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
+
3241
3249
cpdef object _provide(self , tuple args, dict kwargs):
3242
3250
""" Return result of provided callable's call."""
3243
3251
return __provide_keyword_args(kwargs, self .__kwargs, self .__kwargs_len)
3244
3252
3245
3253
3254
+
3246
3255
cdef class Resource(Provider):
3247
3256
""" Resource provider provides a component with initialization and shutdown."""
3248
3257
0 commit comments