[ 
https://issues.apache.org/jira/browse/AVRO-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17307295#comment-17307295
 ] 

Subhash Bhushan commented on AVRO-2720:
---------------------------------------

A few enhancements have gone in since this issue was reported, and the 
exception thrown now is *{{avro.errors.AvroTypeException: The datum Bad is not 
an example of the schema "int"}}*

It would probably be good to include the field name in the message. The 
exception message can be: *{{avro.errors.AvroTypeException: The datum "Bad" 
provided for "F" is not an example of the schema "int"}}*

Suggestions, [~kojiromike]?

> 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)

Reply via email to