[ https://issues.apache.org/jira/browse/AVRO-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17042629#comment-17042629 ]
Michael A. Smith commented on AVRO-2720: ---------------------------------------- Please note that lang/py3 (avro-python3) is deprecated in favor of lang/py (avro), which is python3 compatible in the master branch and will be so in 1.10. Both implementations are pretty similar, so if you intend to provide any kind of patch or automated test for this issue, would you please try to reproduce it in lang/py as well? > Avro py3 should display invalid field data on AvroTypeException > --------------------------------------------------------------- > > Key: AVRO-2720 > URL: https://issues.apache.org/jira/browse/AVRO-2720 > Project: Apache Avro > Issue Type: Bug > Components: python > Reporter: Chelsea Dole > Priority: Critical > > Calling "Validate"/"write" raises an AvroTypeException when the input "datum" > does not fit the input "expected_schema". It would be useful for users if > AvroTypeException specified which fields were not valid representations of > the expected_schema, by adding additional information to the string printed > when the error is thrown. > > > {code:java} > writer_schema = schema.parse("""\ > {"type": "record", "name": "Test", > "fields": [{"name": "F", "type": "int"}, > {"name": "E", "type": "int"}]}""") > datum_to_write = {'E': 5, 'F': 'Bad'} > datum_writer = avro_io.DatumWriter(writer_schema) > datum_writer.write(datum, encoder) > {code} > > The last line of the above example ^ will throw an AvroTypeException, because > field "F" isn't an int. If there are multiple fields with incompatible types, > the message will only show the first field. Once it is fixed, it will throw > another AvroTypeException with the second incompatible type field, and so on. > > *Current AvroTypeException Output:* > {code:java} > avro.io.AvroTypeException: The datum {'E': 5, 'F': 'Bad'} is not an example > of the schema { > "type": "record", > "name": "Test", > "fields": [{"type": "int", "name": "F"}, {"type": "int", "name": > "E"}]}{code} > *Suggested AvroTypeException Output:* > > {code:java} > avro.io.AvroTypeException: Field 'F' with value 'Bad' has an unexpected type. > The datum {'E': 5, 'F': 'Bad'} is not an example of the schema { > "type": "record", > "name": "Test", > "fields": [{"type": "int", "name": "F"}, {"type": "int", "name": "E"}]} > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)