This package will allow you to create your own search engines for your packages and sets of packages. It's not perfect, but I find it useful. It's really fast and easier to find what you're looking for often.

You can search specifically for methods, classes and filenames or just do a full text search.

It's built on repoze.bfg, repoze.catalog and pygments.


Start off with a virtualenv:

>>> virtualenv pysourcesearch --no-site-packages
>>> cd pysourcesearch
>>> ./bin/easy_install pysourcesearch
>>> ./bin/easy_install PasteScript

Then you can use the ini WSGI configuration provided with the package or create your own similar to this:

>>> [app:main]
>>> use = egg:pysourcesearch#app
>>> debug_notfound = false
>>> catalogs_location = %(here)s/catalogs
>>> reindex = False
>>> package_groups =
>>>     Plone:/Applications/Plone/buildout-cache/eggs
>>> skipped_paths =
>>>             tests
>>> [server:main]
>>> use = egg:Paste#http
>>> host =
>>> port = 6543

Then run:

>>> ./bin/paster serve pysourcesearch.ini

The first time it runs it will take some time to index everything. If you tail the catalog you'll be able to see the status of indexing.

>>> tail -f pysourcesearch.log


Here are some of the WSGI configuration options:

* catalogs_location = Location where the indexes are stored
* reindex = If you want to reindex every time it's run
* package_groups = a list of locations to egg packages. This is normally a `buildout-cache/eggs` direction or a `lib/python2.6/site-packages` directory
* skipped_paths = a list of folders that you'd rather not index the contents of