rope / docs / dev / issues.txt

 Rope Issues

Unresolved Issues

* how to port rope to python 2.6?
* custom wildcards and recursive patterns
* codeassist is slow on large files
* 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
* searching all files when extracting a global method?
* better tests in `patchedasttest`
* import actions with more that one phase and filtering problems
* handle long imports should work on filtered imports unconditionally?
* changing `codeanalyze.WordFinder` to use asts?
* assignment to parameters in inline method
* extracting subexpressions; look at `extracttest` for more info
* remove ``change occurreces`` refactoring?
* using similarfinder in introduce_parameter?
* switching to gplv3?
* removing unused refactorings?
* assignments and overwriting parameter, imported and evaluated names
* unignored files that are not under version control
* multiple ropes on one project; problems for objectdb and history
* should `rope.base` be thread safe?
* inline fails when there is an arg mismatch
* evaluate function parameter defaults in staticoi?
* recursive soi; go where the calls go with limited depth
* adding ``do when unsure`` config to all refactorings?
* importing star and removing self imports; stack overflow
* adding contributors file?
* saving diffs instead of old contents in ChangeContents?
* python c extensions
* supporting modules without source code and zip imports
* 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
* extracting methods from pieces with only one return/yield statement
* 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

* 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

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

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


* 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}


.. ...

Getting Ready For Python 3.0

This has been moved to a separate branch.