avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Ahrens (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AVRO-694) Python protocol parsing failing on maps with record value types defined within protocol
Date Mon, 08 Nov 2010 21:52:23 GMT

     [ 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.


Mime
View raw message