File: interp_defaultdict.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (12 lines) | stat: -rw-r--r-- 556 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
from pypy.interpreter.error import OperationError

def missing(space, w_self, w_key):
    # An interp-level version of this method.  This is mostly only
    # useful because it can be executed atomically in the presence of
    # threads.
    w_default_factory = space.getattr(w_self, space.newtext('default_factory'))
    if space.is_w(w_default_factory, space.w_None):
        raise OperationError(space.w_KeyError, space.newtuple([w_key]))
    w_value = space.call_function(w_default_factory)
    space.setitem(w_self, w_key, w_value)
    return w_value