Index: tools/telemetry/third_party/rope/docs/dev/issues.rst |
diff --git a/tools/telemetry/third_party/rope/docs/dev/issues.rst b/tools/telemetry/third_party/rope/docs/dev/issues.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..62c7d9c3c3a5b1cc572234b513beb34c9aeb658a |
--- /dev/null |
+++ b/tools/telemetry/third_party/rope/docs/dev/issues.rst |
@@ -0,0 +1,156 @@ |
+============= |
+ Rope Issues |
+============= |
+ |
+ |
+Unresolved Issues |
+================= |
+ |
+* purging out less accurate callinfos when better ones appear? |
+* using properties without calling its get? |
+* global variable inlines |
+* transform and extension modules |
+* merging extract and usefunction |
+* caching instances of PyObject |
+* moving a group of elements together |
+* temps might be read after body in usefunction or extract |
+* usefunction and function returns |
+* usefunction on methods |
+* extracted functions should be inserted before using class bodies |
+* adding "referenced later" wildcard argument to restructurings? |
+* adding "change references" wildcard argument to restructurings? |
+* ideas for more custom wildcards |
+* adapting future python 2.6 ast changes |
+* custom wildcards and recursive patterns |
+* custom restructuring wildcard patterns and replacements |
+* not reimporting back imports after moving |
+* importing compressed objectdb/history data? |
+* not applying all commenting mechanisms always in codeassist |
+* fixing try blocks before current line in code_assist |
+* better tests for patchedast |
+* import actions with more that one phase and filtering problems |
+* handle long imports should work on filtered imports unconditionally? |
+* extracting subexpressions; look at `extracttest` for more info |
+* switching to gplv3? |
+* unignored files that are not under version control |
+* inline fails when there is an arg mismatch |
+* evaluate function parameter defaults in staticoi? |
+* saving diffs instead of old contents in ChangeContents? |
+* handling tuple parameters |
+* extract class |
+* analyzing function decorators |
+* generate ... and implicit interfaces |
+* generate method and class hierarchies |
+* lambdas as functions; consider their parameters |
+* renaming similarly named variables |
+* handling the return type of ``yield`` keyword |
+* not writing unchanged objectdb and history? |
+ |
+ |
+To Be Reviewed |
+============== |
+ |
+* review patchedast; make it faster |
+* lots of estimations in codeanalyze in WordRangeFinder |
+* review objectdb modules |
+* how concluded data are held for star imports |
+ |
+ |
+Insert Before In Restructurings |
+=============================== |
+ |
+Consider a restructuring like this:: |
+ |
+ pattern: ${a} if ${b} else ${c} |
+ goal: replacement |
+ before: if ${b}:\n replacement = ${a}\nelse:\n replacement = ${c} |
+ |
+ |
+Memory Management |
+================= |
+ |
+These are the places in which rope spends most of the memory it |
+consumes: |
+ |
+* PyCore: for storing PyModules |
+* ObjectInfo: for storing object information |
+* History: for storing changes |
+ |
+We should measure the amount of memory each of them use to make |
+decisions. |
+ |
+ |
+Custom Restructuring Wildcards |
+============================== |
+ |
+There is a need to add more custom wildcards in restructuring |
+patterns. But adding all such needs to `similarfinder` module makes |
+it really complex. So I think adding the ability to extend them is |
+useful. |
+ |
+Sometimes wildcards can be customized. For instance one might want to |
+match the function calls only if ``p1`` is passed in the arguments. |
+They can be specified in wildcard arguments. |
+ |
+Since matched wildcards can appear in the goal pattern, each wildcard |
+should have a corresponding replacement wildcard. Each replacement |
+might be customized in each place it appears; for instance |
+``${mycall:-p1}`` might mean to remove ``p1`` argument. |
+ |
+ |
+Wildcard Format |
+--------------- |
+ |
+All wildcards should appear as ``${name}``. The type of wildcards and |
+their parameters can be specified using the ``args`` argument of |
+``Restructuring()``. |
+ |
+Ideas: |
+ |
+* Maybe we can put checks inside args, too:: |
+ |
+ pattern: ${project:type=rope.base.project.Project}.pycore |
+ |
+ But what should be done when a variable appears twice:: |
+ |
+ pattern: ${a:type=__builtin__.int} + ${a} |
+ |
+ |
+Examples |
+-------- |
+ |
+.. ... |
+ |
+ |
+Possible Module Renamings |
+========================= |
+ |
+*First level*: |
+ |
+These module names are somehow inconsistent. |
+ |
+* change -> changes |
+* method_object -> methodobject |
+* default_config -> defaultconfig |
+ |
+*Second level* |
+ |
+Many modules use long names. They can be shortened without loss of |
+readability. |
+ |
+* methodobject -> methobj or funcobj |
+* usefunction -> usefunc |
+* multiproject -> mulprj |
+* functionutils -> funcutils |
+* importutils -> imputils |
+* introduce_factory -> factory |
+* change_signature -> signature |
+* encapsulate_field -> encapsulate |
+* sourceutils -> srcutils |
+* resourceobserver -> observer |
+ |
+ |
+Getting Ready For Python 3.0 |
+============================ |
+ |
+This has been moved to a separate branch. |