In Python, validation of a datum by the schema was done in avro.io.validate function.
The avro.io.validate function is a complex, recursively-called switch statement.
Instead of calling a two-argument avro.io.validate with a Schema object and a datum, it is easier to understand and extend if they are one-argument methods on the schema.
I (Jeremy) have written a patch that implements validate methods on Schema objects. This patch will form the prerequisite for AVRO-1265 (see "easier to extend" above).