(cls, raw)
| 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): |
no test coverage detected