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

Class ParsedItem

Tools/c-analyzer/c_parser/info.py:253–350  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

251
252
253class ParsedItem(namedtuple('ParsedItem', 'file kind parent name data')):
254
255 @classmethod
256 def from_raw(cls, raw):
257 if isinstance(raw, cls):
258 return raw
259 elif isinstance(raw, tuple):
260 return cls(*raw)
261 else:
262 raise TypeError(f'unsupported "raw": {raw:!r}')
263
264 @classmethod
265 def from_row(cls, row, columns=None):
266 if not columns:
267 colnames = 'filename funcname name kind data'.split()
268 else:
269 colnames = list(columns)
270 for i, column in enumerate(colnames):
271 if column == 'file':
272 colnames[i] = 'filename'
273 elif column == 'funcname':
274 colnames[i] = 'parent'
275 if len(row) != len(set(colnames)):
276 raise NotImplementedError(columns, row)
277 kwargs = {}
278 for column, value in zip(colnames, row):
279 if column == 'filename':
280 kwargs['file'] = FileInfo.from_raw(value)
281 elif column == 'kind':
282 kwargs['kind'] = KIND(value)
283 elif column in cls._fields:
284 kwargs[column] = value
285 else:
286 raise NotImplementedError(column)
287 return cls(**kwargs)
288
289 @property
290 def id(self):
291 try:
292 return self._id
293 except AttributeError:
294 if self.kind is KIND.STATEMENT:
295 self._id = None
296 else:
297 self._id = DeclID(str(self.file), self.funcname, self.name)
298 return self._id
299
300 @property
301 def filename(self):
302 if not self.file:
303 return None
304 return self.file.filename
305
306 @property
307 def lno(self):
308 if not self.file:
309 return -1
310 return self.file.lno

Callers 3

_resolve_parentMethod · 0.85
parsedMethod · 0.85
resolveMethod · 0.85

Calls 1

namedtupleFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…