Rewrite `match_schemas()` function. Eliminate `match_types()` function: the "match" algorithm can be defined with a single recursive function. `match_schemas()` now simply returns True or False and does not itself raise any exceptions. This allows the recursive algorithm to continue without any *surprise!* exceptions being raised. (Annoying) The function doc string contains the schema matching rules copied from the Avro specs page, and comments are used liberally to explain how the implementation meets the specification. Added 2 additional promotion cases listed in the Avro spec: 'string' => 'bytes' and 'bytes' => 'string'.
Rewrite `match_schemas()` function. Eliminate `match_types()` function:
the "match" algorithm can be defined with a single recursive function.
`match_schemas()` now simply returns True or False and does not itself
raise any exceptions. This allows the recursive algorithm to continue
without any *surprise!* exceptions being raised. (Annoying)
The function doc string contains the schema matching rules copied from
the Avro specs page, and comments are used liberally to explain how the
implementation meets the specification.
Added 2 additional promotion cases listed in the Avro spec:
'string' => 'bytes' and 'bytes' => 'string'.

e-heller/fastavro,e-heller/fastavro