| Index: tools/telemetry/third_party/rope/rope/base/oi/__init__.py
|
| diff --git a/tools/telemetry/third_party/rope/rope/base/oi/__init__.py b/tools/telemetry/third_party/rope/rope/base/oi/__init__.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0b1a1525c088b696e674fcb7b623ff44456cda92
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/rope/rope/base/oi/__init__.py
|
| @@ -0,0 +1,38 @@
|
| +"""Rope object analysis and inference package
|
| +
|
| +Rope makes some simplifying assumptions about a python program. It
|
| +assumes that a program only performs assignments and function calls.
|
| +Tracking assignments is simple and `PyName` objects handle that. The
|
| +main problem is function calls. Rope uses these two approaches for
|
| +obtaining call information:
|
| +
|
| +* Static object analysis: `rope.base.pycore.PyCore.analyze_module()`
|
| +
|
| + It can analyze modules to obtain information about functions. This
|
| + is done by analyzing function calls in a module or scope. Currently
|
| + SOA analyzes the scopes that are changed while saving or when the
|
| + user asks to analyze a module. That is mainly because static
|
| + analysis is time-consuming.
|
| +
|
| +* Dynamic object analysis: `rope.base.pycore.PyCore.run_module()`
|
| +
|
| + When you run a module or your testsuite, when DOA is enabled, it
|
| + collects information about parameters passed to and objects returned
|
| + from functions. The main problem with this approach is that it is
|
| + quite slow; Not when looking up the information but when collecting
|
| + them.
|
| +
|
| +An instance of `rope.base.oi.objectinfo.ObjectInfoManager` can be used
|
| +for accessing these information. It saves the data in a
|
| +`rope.base.oi.objectdb.ObjectDB` internally.
|
| +
|
| +Now if our objectdb does not know anything about a function and we
|
| +need the value returned by it, static object inference, SOI, comes
|
| +into play. It analyzes function body and tries to infer the object
|
| +that is returned from it (we usually need the returned value for the
|
| +given parameter objects).
|
| +
|
| +Rope might collect and store information for other `PyName`\s, too.
|
| +For instance rope stores the object builtin containers hold.
|
| +
|
| +"""
|
|
|