Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

a python refactoring IDE and library...

Project description


rope is a python refactoring IDE and library. The IDE uses the library to provide features like refactoring, code assist, and auto-completion. It is written in python. The IDE uses Tkinter library.

New Features

  • Generating python elements
  • Memorizing locations and texts
  • Added .ropeproject folder
  • Saving history across sessions
  • Saving object data to disk
  • Incremental ObjectDB validation
  • Inlining staticmethods
  • Setting ignored resources patterns

Maybe the most notable change in this release is the addition of a new folder in projects for holding configurations and other information for a project. Its default name is .ropeproject, but it can be changed in ~/.rope or Project constructor (if using rope as a library). You can also force rope not to make such a folder by using None instead of a str.

Currently it is used for these purposes:

  • There is a file in this folder in which you can change project configurations. Look at the default file, that is created when there is none available, for more information. When a project is open you can edit this file using "Edit Project" action or C-x p c.
  • It can be used for saving project history, so that the next time you open the project you can see and undo past changes. If you’re new to rope use "Project History" (C-x p h) for more information.
  • It can be used for saving object information. Before this release all object information where kept in memory. Saving them on disk has two advantages. First, rope will need less memory and second, the calculated and collected information is not thrown away each time you close a project.

You can change what to save and what not to in the file.

Since files on disk change overtime project object DB might hold invalid information. Currently there is a basic incremental object DB validation that can be used to remove or fix out of date information. Rope uses this feature by default but you can disable it by editing Other interesting features related to rope’s object DB and object inference are planned for 0.5 release. So if you’re interested keep waiting!

The generate element actions make python elements. You have to move on an element that does not exist and perform one of these generate actions. For example:


Calling generate function on my_print (C-c n f) will result in:

def my_print(var):


It handle methods, static methods, classes, variables, modules, and packages, too. Generate element actions use C-c n prefix.

Rope can now save locations or strings in memory. These are similar to emacs’s bookmarks and registers. These actions use C-x m prefix.

Project details

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page