Description
In the "py" implementation, this works as expected:
>>> from avro.schema import parse >>> s = parse('{"type": "array", "items": "int"}') >>> s.name Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'ArraySchema' object has no attribute 'name'
but in the py3 implementation, a NameError is raised instead:
>>> from avro.schema import Parse >>> s=Parse('{"type":"array","items":"int"}') >>> s.name Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/michaels/dev/avro/lang/py3/avro/schema.py", line 224, in name return self._props['name'] KeyError: 'name'
This behavior breaks several python idioms, including the ability to get a default value using getattr:
>>> getattr(s, "name", "default") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/michaels/dev/avro/lang/py3/avro/schema.py", line 224, in name return self._props['name'] KeyError: 'name'
I will open a PR with tests and a fix.
Attachments
Issue Links
- links to