I’m happy to announce that [pywatch][pywatch-git] is ready for use, I think.
What does it do? It’s both a Python module and a command line client that allow you to run arbitrary shell commands whenever changes occur in a list of specified files.
Here’s an example:
pywatch --help
Usage: pywatch [options] "command" file1 file2 ...
Options:
-h, --help show this help message and exit
-v, --verbose Output timestamp when commands are run.
chris@pinko:~/Code/pywatch$ pywatch -v ./bin/test src/pywatch/watcher.py src/pywatch/tests.py
Running commands at 2009-06-20 12:00:13.226711
Running zope.testing.testrunner.layer.UnitTests tests:
Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
Ran 4 tests with 0 failures and 0 errors in 2.003 seconds.
Tearing down left over layers:
Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
Running commands at 2009-06-20 12:00:34.422557
Test-module import failures:
Module: pywatch.tests
Traceback (most recent call last):
File "/home/chris/Code/pywatch/src/pywatch/tests.py", line 1, in
import makethistestblowup
ImportError: No module named makethistestblowup
Test-modules with import problems:
pywatch.tests
Total: 0 tests, 0 failures, 0 errors in 0.000 seconds.
Running commands at 2009-06-20 12:00:44.600708
Running zope.testing.testrunner.layer.UnitTests tests:
Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
Ran 4 tests with 0 failures and 0 errors in 2.006 seconds.
Tearing down left over layers:
Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
So far I’ve been using it to automatically run tests on personal projects, including [pywatch][pywatch-git] and [baseboards][baseboards-git].
You could use it to run other arbitrary commands whenever you change a file, but running tests was the particular itch I was trying to scratch.
It’s available at [GitHub][pywatch-git] and [PyPI][pywatch-pypi]
[pywatch-git]: http://github.com/cmheisel/pywatch/tree/master
[pywatch-pypi]: http://pypi.python.org/pypi/pywatch/0.3
[baseboards-git]: http://github.com/cmheisel/django-baseboard/tree/master

How do you install and run it? No matter in which directory I run scripts/pywatch, I get an import error.
Running “python setup.py install” gives “ImportError: No module named setuptools”. I’m running on Ubuntu 13.10 with Python 2.7.6. Does this require Python 3.0?
Okay, I was able to install PIP and use that to install pywatch.
Does it support wildcards?
James – yup it should!