Frank Mieves created AVRO-3118: ---------------------------------- Summary: Namespace with empty string is not treated as null in Python API Key: AVRO-3118 URL: https://issues.apache.org/jira/browse/AVRO-3118 Project: Apache Avro Issue Type: Bug Components: python Affects Versions: 1.10.2 Reporter: Frank Mieves
Hi, based on the AVRO documentation an empty string may also be used as a namespace to indicate the null namespace. ([https://avro.apache.org/docs/current/spec.html)] The Python package doesn't do that. Following example will fail when parsing: {code:java} import avro.schema schema_str=""" {"type": "record", "name": "my_schema", "namespace": "my_ns", "fields": [{"name": "field_a", "type": {"type": "record", "name": "row", "namespace": "", "fields": [{"name": "subfield", "type": "string"}]}}, {"name": "field_b", "type": "row"} ]} """ schema = avro.schema.parse(schema_str){code} Raised exception is "SchemaParseException: Type property "row" not a valid Avro schema: Could not make an Avro Schema object from row." If I set the namespace in the in the subfield to null it's working. Problem for me is, that I can't change the schema definition. The schema is in the Kafka schema repository. The Kafka AVRO consumer receives this from the schema registry server with an empty string. I could fix this by adding a check in the parser source schema.py: {code:java} ... return writer.type == self.type and (self.type == 'request' or self.check_props(writer, ['fullname'])) def __init__(self, name, namespace, fields, names=None, schema_type='record', doc=None, other_props=None): # Fixing empty namespace if namespace == '': namespace = None # Ensure valid ctor args if fields is None: ... {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)