Hi,

I'm using avro_python3-1.9.2.1 with Python 3.  I have a custom record schema
that I would like to include an enum field in, but I get a
SchemaParseException when I do so.

For a minimal test case, using the example from the Python getting started
guide as a complete schema is successful:

    schema_txt = """
    { "type": "enum",
      "name": "Suit",
      "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }
    """

    test_schema = avro.schema.parse(schema_txt)     # success

However, if I create a record schema with such an enum as a member field (here
the only field, but behaviour is the same with other fields present):

    schema_txt = """
    {
        "name": "Test",
        "type": "record",
        "fields": [
            { "type": "enum",
              "name": "Suit",
              "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
            }
        ]
    }
    """

... then avro.schema.parse() fails with:

Traceback (most recent call last):
  File "./simple-schema.py", line 43, in <module>
    test_schema = avro.schema.parse(schema_txt)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1244, in 
parse
    return SchemaFromJSONData(json_data, names)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1215, in 
SchemaFromJSONData
    return parser(json_data, names=names)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1143, in 
_SchemaFromJSONObject
    other_props=other_props,
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1022, in 
__init__
    fields = make_fields(names=nested_names)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1134, in 
MakeFields
    return tuple(RecordSchema._MakeFieldList(field_desc_list, names))
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 947, in 
_MakeFieldList
    yield RecordSchema._MakeField(index, field_desc, names)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 918, in 
_MakeField
    names=names,
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1215, in 
SchemaFromJSONData
    return parser(json_data, names=names)
  File ".../.venv/lib/python3.7/site-packages/avro/schema.py", line 1096, in 
_SchemaFromJSONString
    % (json_string, sorted(names.names)))
avro.schema.SchemaParseException: Unknown named schema 'enum', known names: 
['Test'].


What am I doing wrong?

I've looked through the last six months of the avro users' list archive.  The
search function for the list appears to be offline so I haven't dug further
than that.  Haven't found anything relevant with web searches either.

Any help appreciated.

Thanks,

Charles
-- 
------------------------------------------------------------------
Charles Cazabon              <[email protected]>
Software, consulting, and services available at http://pyropus.ca/
------------------------------------------------------------------

Reply via email to