[ 
https://issues.apache.org/jira/browse/AVRO-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Subhash Bhushan updated AVRO-2720:
----------------------------------
    Status: Patch Available  (was: In Progress)

> 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
>            Assignee: Subhash Bhushan
>            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)

Reply via email to