You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Michael A. Smith (Jira)" <ji...@apache.org> on 2021/05/14 14:59:00 UTC

[jira] [Commented] (AVRO-3104) avro-python __eq__ method of PrimitiveSchema, EnumSchema and FixedSchema throws exception

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

Michael A. Smith commented on AVRO-3104:
----------------------------------------

[~Thomas_Larsson] I have created [apache/avro#1221|https://github.com/apache/avro/pull/1221], which is somewhat different from your implementation. Please let me know any feedback you have.

> avro-python __eq__ method of PrimitiveSchema, EnumSchema and FixedSchema throws exception
> -----------------------------------------------------------------------------------------
>
>                 Key: AVRO-3104
>                 URL: https://issues.apache.org/jira/browse/AVRO-3104
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: python
>    Affects Versions: 1.10.2
>            Reporter: Thomas Larsson
>            Priority: Minor
>         Attachments: AVRO-3104.patch
>
>
> The __eq__ method of the [PrimitiveSchema|https://github.com/apache/avro/blob/master/lang/py3/avro/schema.py#L629], EnumSchema and FixedSchema assume that the compared object has an attribute called "props" which makes a statement like this (for example) throw an exception:
> {code:python}
> o = PrimitiveSchema(...)
> if o == "null":
>   print("Not same")
> {code}
>    
> The exception message looks like:
> {code:bash}
> AttributeError: 'str' object has no attribute 'props'
> {code}
> A more robust equals method would start by ensuring type equality before doing other comparisons. Alternatively (though less pretty) the way the other Schema types implement it could be used, for example [ArraySchema|https://github.com/apache/avro/blob/master/lang/py3/avro/schema.py#L772]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)