File: issues.txt

package info (click to toggle)
rope 0.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 1,584 kB
  • ctags: 4,071
  • sloc: python: 24,074; makefile: 3
file content (156 lines) | stat: -rw-r--r-- 4,432 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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.