Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Unified Diff: tools/telemetry/third_party/rope/rope/base/pynamesdef.py

Issue 1132103009: Example of refactoring using rope library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « tools/telemetry/third_party/rope/rope/base/pynames.py ('k') | tools/telemetry/third_party/rope/rope/base/pyobjects.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698