code: def keep_kwargs_partial(func, *args, **keywords):
      
      def newfunc(*fargs, **fkeywords):
          newkeywords = fkeywords.copy()
          newkeywords.update(keywords)
          return func(*(args + fargs), **newkeywords)
      newfunc.func = func
      newfunc.args = args
      newfunc.keywords = keywords
      return newfunc
docs: Like functools.partial but instead of using the new kwargs, keeps the old ones.