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

Richard Ahrens updated AVRO-694:
--------------------------------

    Description: 
The attached protocol defines a record named Symbol, and another record called 
MultiSymbol which includes a field of type map with value type Symbol.  Parsing 
this protocol from python generates an exception when parsing, although it 
parses fine from Java.  The protocol parses successfully in python if the map 
value is changed to a primitive such as string.

Steps to reproduce:
>>> import avro.ipc as ipc
>>> import avro.protocol as protocol
>>> p = protocol.parse(open("API.avpr").read())

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    p = protocol.parse(open("C:\\Documents and 
Settings\\nbkpw2e\\Desktop\\API.avpr").read())
  File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 221, in 
parse
    return make_avpr_object(json_data)
  File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 209, in 
make_avpr_object
    return Protocol(name, namespace, types, messages)
  File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 100, in 
__init__
    self.set_prop('types', self._parse_types(types, type_names))
  File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 52, in 
_parse_types
    type_object = schema.make_avsc_object(type, type_names)
  File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 664, in 
make_avsc_object
    return RecordSchema(name, namespace, fields, names, type)
  File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 600, in 
__init__
    field_objects = RecordSchema.make_field_objects(fields, names)
  File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 568, in 
make_field_objects
    new_field = Field(type, name, has_default, default, order, names)
  File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 310, in 
__init__
    raise SchemaParseException(fail_msg)
SchemaParseException: Type property "{'values': 'xyz.api.product.Symbol', 
'type': 'map'}" not a valid Avro schema: get_name() takes exactly 3 arguments 
(2 given)


  was:The attached protocol defines a record named Symbol, and another record 
called MultiSymbol which includes a field of type map with value type Symbol.  
Parsing this protocol from python generates an exception when parsing, although 
it parses fine from Java.  The protocol parses successfully in python if the 
map value is changed to a primitive such as string.


> Python protocol parsing failing on maps with record value types defined 
> within protocol
> ---------------------------------------------------------------------------------------
>
>                 Key: AVRO-694
>                 URL: https://issues.apache.org/jira/browse/AVRO-694
>             Project: Avro
>          Issue Type: Bug
>          Components: python
>    Affects Versions: 1.4.1
>         Environment: Avro Python library
>            Reporter: Richard Ahrens
>         Attachments: API.avpr
>
>
> The attached protocol defines a record named Symbol, and another record 
> called MultiSymbol which includes a field of type map with value type Symbol. 
>  Parsing this protocol from python generates an exception when parsing, 
> although it parses fine from Java.  The protocol parses successfully in 
> python if the map value is changed to a primitive such as string.
> Steps to reproduce:
> >>> import avro.ipc as ipc
> >>> import avro.protocol as protocol
> >>> p = protocol.parse(open("API.avpr").read())
> Traceback (most recent call last):
>   File "<pyshell#28>", line 1, in <module>
>     p = protocol.parse(open("C:\\Documents and 
> Settings\\nbkpw2e\\Desktop\\API.avpr").read())
>   File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 221, in 
> parse
>     return make_avpr_object(json_data)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 209, in 
> make_avpr_object
>     return Protocol(name, namespace, types, messages)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 100, in 
> __init__
>     self.set_prop('types', self._parse_types(types, type_names))
>   File "C:\rla\dev\Python27\lib\site-packages\avro\protocol.py", line 52, in 
> _parse_types
>     type_object = schema.make_avsc_object(type, type_names)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 664, in 
> make_avsc_object
>     return RecordSchema(name, namespace, fields, names, type)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 600, in 
> __init__
>     field_objects = RecordSchema.make_field_objects(fields, names)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 568, in 
> make_field_objects
>     new_field = Field(type, name, has_default, default, order, names)
>   File "C:\rla\dev\Python27\lib\site-packages\avro\schema.py", line 310, in 
> __init__
>     raise SchemaParseException(fail_msg)
> SchemaParseException: Type property "{'values': 'xyz.api.product.Symbol', 
> 'type': 'map'}" not a valid Avro schema: get_name() takes exactly 3 arguments 
> (2 given)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to