MCPcopy Index your code
hub / github.com/python/cpython / _resolve_key

Method _resolve_key

Tools/c-analyzer/c_parser/info.py:1403–1449  ·  view source on GitHub ↗
(cls, raw)

Source from the content-addressed store, hash-verified

1401
1402 @classmethod
1403 def _resolve_key(cls, raw):
1404 if isinstance(raw, str):
1405 raw = [raw]
1406 elif isinstance(raw, Declaration):
1407 raw = (
1408 raw.filename if cls._is_public(raw) else None,
1409 # `raw.parent` is always None for types and functions.
1410 raw.parent if raw.kind is KIND.VARIABLE else None,
1411 raw.name,
1412 )
1413
1414 extra = None
1415 if len(raw) == 1:
1416 name, = raw
1417 if name:
1418 name = str(name)
1419 if name.endswith(('.c', '.h')):
1420 # This is only legit as a query.
1421 key = (name, None, None)
1422 else:
1423 key = (None, None, name)
1424 else:
1425 key = (None, None, None)
1426 elif len(raw) == 2:
1427 parent, name = raw
1428 name = str(name)
1429 if isinstance(parent, Declaration):
1430 key = (None, parent.name, name)
1431 elif not parent:
1432 key = (None, None, name)
1433 else:
1434 parent = str(parent)
1435 if parent.endswith(('.c', '.h')):
1436 key = (parent, None, name)
1437 else:
1438 key = (None, parent, name)
1439 else:
1440 key, extra = raw[:3], raw[3:]
1441 filename, funcname, name = key
1442 filename = str(filename) if filename else None
1443 if isinstance(funcname, Declaration):
1444 funcname = funcname.name
1445 else:
1446 funcname = str(funcname) if funcname else None
1447 name = str(name) if name else None
1448 key = (filename, funcname, name)
1449 return key, extra
1450
1451 @classmethod
1452 def _is_public(cls, decl):

Callers 3

__getitem__Method · 0.95
findMethod · 0.95
_add_declMethod · 0.95

Calls 3

strFunction · 0.85
_is_publicMethod · 0.80
endswithMethod · 0.45

Tested by

no test coverage detected