[
https://issues.apache.org/jira/browse/AVRO-2720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17042762#comment-17042762
]
Cristopher Ewing edited comment on AVRO-2720 at 2/23/20 12:03 AM:
------------------------------------------------------------------
We have a patched version of validation working against lang/py3. We'll get it
polished up and working against lang/py and submit it. The basic idea involves
changing from a recursive approach to validation to an iterative approach.
was (Author: cewing):
We have a patched version of validation working against lang/py3. We'll get it
polished up and working against lang/py and submit it. The basic approach
involves changing from a recursive approach to validation to an iterative
approach.
> 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)