Index: tools/telemetry/third_party/rope/rope/base/pynamesdef.py |
diff --git a/tools/telemetry/third_party/rope/rope/base/pynamesdef.py b/tools/telemetry/third_party/rope/rope/base/pynamesdef.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6dba0a803762d9feb78644b048e2fc06a05c9e16 |
--- /dev/null |
+++ b/tools/telemetry/third_party/rope/rope/base/pynamesdef.py |
@@ -0,0 +1,55 @@ |
+import rope.base.oi.soi |
+from rope.base import pynames |
+from rope.base.pynames import * |
+ |
+ |
+class AssignedName(pynames.AssignedName): |
+ |
+ def __init__(self, lineno=None, module=None, pyobject=None): |
+ self.lineno = lineno |
+ self.module = module |
+ self.assignments = [] |
+ self.pyobject = _Inferred(self._get_inferred, |
+ pynames._get_concluded_data(module)) |
+ self.pyobject.set(pyobject) |
+ |
+ @utils.prevent_recursion(lambda: None) |
+ def _get_inferred(self): |
+ if self.module is not None: |
+ return rope.base.oi.soi.infer_assigned_object(self) |
+ |
+ def get_object(self): |
+ return self.pyobject.get() |
+ |
+ def get_definition_location(self): |
+ """Returns a (module, lineno) tuple""" |
+ if self.lineno is None and self.assignments: |
+ self.lineno = self.assignments[0].get_lineno() |
+ return (self.module, self.lineno) |
+ |
+ def invalidate(self): |
+ """Forget the `PyObject` this `PyName` holds""" |
+ self.pyobject.set(None) |
+ |
+ |
+class ParameterName(pynames.ParameterName): |
+ |
+ def __init__(self, pyfunction, index): |
+ self.pyfunction = pyfunction |
+ self.index = index |
+ |
+ def get_object(self): |
+ result = self.pyfunction.get_parameter(self.index) |
+ if result is None: |
+ result = rope.base.pyobjects.get_unknown() |
+ return result |
+ |
+ def get_objects(self): |
+ """Returns the list of objects passed as this parameter""" |
+ return rope.base.oi.soi.get_passed_objects( |
+ self.pyfunction, self.index) |
+ |
+ def get_definition_location(self): |
+ return (self.pyfunction.get_module(), self.pyfunction.get_ast().lineno) |
+ |
+_Inferred = pynames._Inferred |