- if not isinstance(obj, dict):
- raise ValueError("obj must be a dict")
- r = {}
- for k, v in obj.items():
- k_id, v_id = k, v
- try:
- k_id = self[k].identifier
- try:
- if isinstance(v, list):
- v_id = [self[k][x].identifier for x in v]
- else:
- v_id = self[k][v].identifier
- except KeyError:
- if self[k].strict:
- raise ValueError("value '%s' not found for key '%s'" % (v, k))
- except KeyError:
- if self.strict_keys:
- raise KeyError("key '%s' not found" % k)
- r[k_id] = v_id
- return r