@@ -293,9 +293,7 @@ cdef class MultiDict(_Base):
293293
294294 if args:
295295 arg = args[0 ]
296- if isinstance (arg, CIMultiDict):
297- self ._impl._items.extend((< _Base> arg)._impl._items)
298- elif isinstance (arg, _Base):
296+ if isinstance (arg, _Base):
299297 for i in (< _Base> arg)._impl._items:
300298 item = < _Pair> i
301299 key = item._key
@@ -387,8 +385,9 @@ cdef class MultiDict(_Base):
387385
388386 def copy (self ):
389387 """ Return a copy of itself."""
390- cls = self .__class__
391- return cls (self )
388+ ret = MultiDict()
389+ ret._extend((list (self .items()),), {}, ' copy' , True )
390+ return ret
392391
393392 def extend (self , *args , **kwargs ):
394393 """ Extend current MultiDict with more values.
@@ -528,7 +527,6 @@ cdef class CIMultiDict(MultiDict):
528527
529528 def __init__ (self , *args , **kwargs ):
530529 self ._impl = _Impl()
531-
532530 self ._extend(args, kwargs, ' CIMultiDict' , True )
533531
534532 def __reduce__ (self ):
@@ -545,6 +543,13 @@ cdef class CIMultiDict(MultiDict):
545543 return PyObject_Str(s)
546544 return s.title()
547545
546+ def copy (self ):
547+ """ Return a copy of itself."""
548+ ret = CIMultiDict()
549+ ret._extend((list (self .items()),), {}, ' copy' , True )
550+ return ret
551+
552+
548553
549554abc.MutableMapping.register(CIMultiDict)
550555
0 commit comments