title: Class that acts as mapping for **unpacking
body: <p>Without subclassing dict, what would a class need to be considered a mapping so that it can be passed to a method with <code>**</code>.</p>
  
  <pre><code>from abc import ABCMeta
  
  class uobj:
      __metaclass__ = ABCMeta
  
  uobj.register(dict)
  
  def f(**k): return k
  
  o = uobj()
  f(**o)
  
  # outputs: f() argument after ** must be a mapping, not uobj
  </code></pre>
  
  <p>At least to the point where it throws errors of missing functionality of mapping, so I can begin implementing.</p>
  
  <p>I reviewed emulating container types but simply defining magic methods has no effect, and using <code>ABCMeta</code> to override and register it as a dict validates assertions as subclass, but fails <code>isinstance(o, dict)</code>. Ideally, I dont even want to use <code>ABCMeta</code>.</p>