rope_py3k / docs / index.txt

======
 rope
======

``a python refactoring library ...``


Overview
========

*Rope* is a python refactoring library.  It supports many refactorings
and features (see status_ section).

*Ropeide* is an IDE that uses *rope* library to provide features like
refactoring, code assist and auto-completion.  It uses `Tkinter`
library.

*Ropemacs* is an Emacs mode for using rope library in emacs.  It uses
Pymacs_.

Note that rope ``0.5`` was the last version that supported Python
``2.4`` and currently rope requires Python ``2.5``.


Status
======

Features implemented so far:

* Refactorings

  * Rename everything!
  * Extract method/local variable
  * Move class/function/module/package/method
  * Inline method/local variable
  * Change method signature
  * Restructuring (like converting ``${?a}.f(${?b})`` to
    ``${?b}.g(${?a})`` where ``a.type == mymod.A``)
  * Introduce factory method
  * Introduce parameter
  * Encapsulate field
  * Transform module to package
  * Convert local variable to field
  * Replace method with method object
  * Inline argument default value

* Refactoring Features

  * Extracting similar statements in extract refactorings
  * Basic implicit interfaces handling in rename and change signature
  * Fixing imports when needed
  * Previewing refactorings
  * Stopping refactorings
  * Undo/redo refactorings
  * Mercurial_ support in refactorings
  * SVN support in refactorings using pysvn_ library

* Code-assists

  * Auto-completion
  * Goto definition
  * Quick outline
  * Show PyDoc
  * Proposing templates in completions
  * Find occurrences
  * Import tools

    * Organize imports (remove unused and duplicate imports and sort them)
    * Change relative imports to absolute
    * Change from imports to normal imports
    * Expand ``from ... import *`` imports

  * Generating python elements
  * Sorting scopes

* Object Inference

  * A static object inference approach
  * A dynamic object inference approach
  * Automatic SOI analysis
  * Handling built-in container types
  * Saving object information on disk
  * Stored object information validation

* *Ropemacs* emacs plugin that uses Pymacs_

* *Ropeide* features

  * Python and reST highlighting
  * Multiple editers
  * Project file history
  * An emacs like keybinding
  * Configurable keybinding
  * Basic UI plug-in support
  * Spell-checking using Aspell/Ispell
  * Correcting indentation
  * Project tree view
  * Unit-test running view
  * Basic codetags/errors/warnings listing
  * Defining templates
  * Memorizing strings/locations


For more information see `overview.txt`_.  Here are a few
`screenshots`_.  You might like to have a look at:

* Using as a library: `library.txt`_
* Contributing: `contributing.txt`_


Download
========

You can download rope from `project download page`_.


Source Repository
=================

Rope uses Mercurial_ CMS:

* Rope main branch: http://rope.sourceforge.net/hg/rope
* Rope py3k branch: http://rope.sourceforge.net/hg/rope_py3k


Feedback
========

Send your bug reports, feature requests and patches to `rope-dev (at)
googlegroups.com`_.


License
=======

rope is under the terms of GNU GPL (GNU General Public License).

.. _project download page: http://sf.net/projects/rope/files
.. _`rope-dev (at) googlegroups.com`: http://groups.google.com/group/rope-dev
.. _pysvn: http://pysvn.tigris.org
.. _Mercurial: http://selenic.com/mercurial
.. _`contributing.txt`: contributing.html
.. _`library.txt`: library.html
.. _overview.txt: overview.html
.. _screenshots: screenshots/screenshots.html
.. _pymacs: http://www.iro.umontreal.ca/~pinard/pymacs/
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.