Stole it almost verbatim from http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hooks.html#view-and-route-predicates :-)

> The **text** method must return a string. It should be useful to describe the behavior of the predicate in error messages.

> The **phash** method must return a string or a sequence of strings. It’s most often the same as text, as long as text uniquely describes the predicate’s name and the value passed to the constructor. If text is more general, or doesn’t describe things that way, phash should return a string with the name and the value serialized. The result of phash is not seen in output anywhere, it just informs the uniqueness constraints for view configuration.