def test_deep_column_filter(self): names = schema.Names() ia = 'ia' ib = 'ib' oa = 'oa' ob = 'ob' inner_a = make_field(ia, primitive_schemas.INT, names=names) inner_b = make_field(ib, primitive_schemas.INT, names=names) inner_a_record = schema.RecordSchema('inner_a', 'test', [inner_a, inner_b], names=names) inner_b_record = schema.RecordSchema('inner_b', 'test', [inner_a, inner_b], names=names) outer_a = make_field(oa, inner_a_record, names=names) outer_b = make_field(ob, inner_b_record, names=names) outer_record = schema.RecordSchema('outer', 'test', [outer_a, outer_b], names=schema.Names()) b = object(outer_record, {oa: {ia: 1, ib: 2}, ob: {ia: 3, ib: 4}}) node = from_avro(b) df = node.flatten() df_equality(self, {oa + '_' + ia: [1], oa + '_' + ib: [2], ob + '_' + ia: [3], ob + '_' + ib: [4]}, df) b = object(outer_record, {oa: {ia: 1, ib: 2}, ob: {ia: 3, ib: 4}}) node = from_avro(b, exclude='oa') df = node.flatten() df_equality(self, {ia: [3], ib: [4]}, df) b = object(outer_record, {oa: {ia: 1, ib: 2}, ob: {ia: 3, ib: 4}}) node = from_avro(b, exclude='oa', include=[{}, 'oa.ia']) df = node.flatten() df_equality(self, {oa + '_' + ia: [1], ob + '_' + ia: [3], ib: [4]}, df)
def _ParseRequestFromJSONDesc(request_desc, names): """Parses the request descriptor of a protocol message. Args: request_desc: Descriptor of the message request. This is a list of fields that defines an unnamed record. names: Tracker for named Avro schemas. Returns: The parsed request schema, as an unnamed record. """ fields = schema.RecordSchema._MakeFieldList(request_desc, names=names) return schema.RecordSchema( name=None, namespace=None, fields=fields, names=names, record_type=schema.REQUEST, )
def _parse_request(self, request, names): if not isinstance(request, list): fail_msg = 'Request property not a list: %s' % request raise ProtocolParseException(fail_msg) return schema.RecordSchema(None, None, request, names, 'request')
def create_record_schema(self, name, fields, aliases=None): return schema.RecordSchema(name, self.test_namespace, [field.to_json() for field in fields], names=schema.Names(), other_props={'aliases': aliases})
def simple_schema(field_name, field_schema): names = schema.Names() field = make_field(field_name, field_schema) return schema.RecordSchema('test', 'test', [field], names=names)