Могу ли я использовать динамическое сопоставление для распаковки аргументов ключевых слов в Python?

Короче говоря, я хочу назвать формат с произвольно названными аргументами, которые будут предварительно искать.

'{Thing1} and {other_thing}'.format(**my_mapping)

Я попытался реализовать my_mapping так:

class Mapping(object):
  def __getitem__(self, key):
    return 'Proxied: %s' % key
my_mapping = Mapping()

Который работает как ожидалось при звонкеmy_mapping['anything'], Но при передаче в format (), как показано выше, я получаю:

TypeError: format() argument after ** must be a mapping, not Mapping

Я пробовал создавать подклассыdict вместоobject, но сейчас звонюformat() как показано поднимаетKeyError, Я даже реализовал__contains__ какreturn True, но до сих порKeyError.

Похоже, что** это не просто звонок__getitem__ на объекте, переданном. Кто-нибудь знает, как обойти это?