=============================================================
      reclass — recursive external node classification
=============================================================
reclass is © 2007–2013 martin f. krafft <madduck@madduck.net>
and available under the terms of the Artistic Licence 2.0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Installation
~~~~~~~~~~~~
If you just want to run reclass from source, e.g. because you are going to be
making and testing changes, install it in "development mode":

  python setup.py develop

Now the reclass script, as well as the adapters, will be available in
/usr/local/bin, and you can also invoke them directly from the source tree.

To uninstall:

  python setup.py develop --uninstall

Discussing reclass
~~~~~~~~~~~~~~~~~~
If you want to talk about reclass, the best way right now is to use the
salt-users mailing list (please put 'reclass' into the subject), or to find me
on IRC, either 'madduck' in the #salt/freenode channel, or in #reclass/oftc.

Contributing to reclass
~~~~~~~~~~~~~~~~~~~~~~~
Conttributions to reclass are very welcome. Since I prefer to keep a somewhat
clean history, I will not just merge pull request.

You can submit pull requests, of course, and I'll rebase them onto HEAD before
merging. Or send your patches using git-format-patch and git-send-e-mail to
reclass@pobox.madduck.net.

I have added rudimentary unit tests, and it would be nice if you could submit
your changes with appropriate changes to the tests. To run tests, invoke

  $ make tests

in the top-level checkout directory. The tests are rather inconsistent, some
using mock objects, and only the datatypes-related code is covered. If you are
a testing expert, I could certainly use some help here to improve the
consistency of the existing tests, as well as their coverage.

Also, there is a Makefile giving access to PyLint and coverage.py (running
tests). If you run that, you can see there is a lot of work to be done
cleaning up the code. If this is the sort of stuff you want to do — by all
means — be my guest! ;)

If you have larger ideas, I'll be looking forward to discuss them with you.

 -- martin f. krafft <madduck@madduck.net>  Wed, 07 Aug 2013 16:21:04 +0200
