No description, website, or topics provided.
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


repython is a utility to run a command and then restart it based on filesystem changes. It's useful for quickly testing changes to a running program. For instance, Django uses a similar but more sophisticated method to reload its source code when it detects a change.

repython uses the pyinotify library to make monitoring for changes efficient compared to just polling the filesystem.



You can install the repython module using:

$ python install

repython is also available from the Cheeseshop:

$ pip install repython

Or using setuptools:

$ easy_install repython


Basic example:

$ python -m repython "python"

This would open the command in a subprocess and recursively monitor the current working directory for any changed files matching the *.py filename pattern (default behavior).

repython is not limited to running Python programs, so a command like this should work as well:

$ python -m repython "ruby example.rb" -p "*.rb" "*.txt"

The -p or --pattern arguments determine which file changes trigger restarting the run command.

The -d or --directory arguments allow monitoring other directories than the current working directory. It can be used like this:

$ python -m repython "python" -d . ~/example

This command would make repython recursively monitor (i.e., including subdirectories) both the working directory and the ~/example directory.

The -v or --verbose argument can be used to get more detailed output from repython, and the -q or --quiet argument can be used to suppress repython output.

For more details please see:

$ python -m repython --help

Known issues

Python issue #9338 causes the argument order to be wrong in the generated usage instructions (shown when using the --help argument). The command argument should come before the optional arguments for the tool to work.