def test_implicit_payload_builder_with_bytes(self): values = PayloadBase.bytes_values builder = ImplicitSchemaPayloadBuilder(values) result = builder.build() if sys.version_info[0] < 3: # in python 2.x bytes coder will be inferred args = { 'integer_example': ConfigValue( coder_urn=['beam:coder:varint:v1'], payload=VarIntCoder() .get_impl().encode_nested(values['integer_example'])), 'string_example': ConfigValue( coder_urn=['beam:coder:bytes:v1'], payload=StrUtf8Coder() .get_impl().encode_nested(values['string_example'])), 'list_of_strings': ConfigValue( coder_urn=['beam:coder:iterable:v1', 'beam:coder:bytes:v1'], payload=IterableCoder(StrUtf8Coder()) .get_impl().encode_nested(values['list_of_strings'])), 'optional_kv': ConfigValue( coder_urn=['beam:coder:kv:v1', 'beam:coder:bytes:v1', 'beam:coder:double:v1'], payload=TupleCoder([StrUtf8Coder(), FloatCoder()]) .get_impl().encode_nested(values['optional_kv'])), } expected = get_payload(args) self.assertEqual(result, expected) else: expected = get_payload(PayloadBase.args) self.assertEqual(result, expected)
def test_implicit_payload_builder(self): builder = ImplicitSchemaPayloadBuilder(PayloadBase.values) result = builder.build() decoded = RowCoder(result.schema).decode(result.payload) for key, value in PayloadBase.values.items(): # Note the default value in the getattr call. # ImplicitSchemaPayloadBuilder omits fields with valu=None since their # type cannot be inferred. self.assertEqual(getattr(decoded, key, None), value)
def test_implicit_payload_builder_with_bytes(self): values = PayloadBase.bytes_values builder = ImplicitSchemaPayloadBuilder(values) result = builder.build() decoded = RowCoder(result.schema).decode(result.payload) for key, value in PayloadBase.values.items(): # Note the default value in the getattr call. # ImplicitSchemaPayloadBuilder omits fields with valu=None since their # type cannot be inferred. self.assertEqual(getattr(decoded, key, None), value) # Verify we have not modified a cached type (BEAM-10766) # TODO(BEAM-7372): Remove when bytes coercion code is removed. self.assertEqual(typehints.List[bytes], convert_to_beam_type(typing.List[bytes]))
def test_implicit_payload_builder_with_bytes(self): values = PayloadBase.bytes_values builder = ImplicitSchemaPayloadBuilder(values) result = builder.build() decoded = RowCoder(result.schema).decode(result.payload) if sys.version_info[0] < 3: for key, value in PayloadBase.bytes_values.items(): # Note the default value in the getattr call. # ImplicitSchemaPayloadBuilder omits fields with valu=None since their # type cannot be inferred. self.assertEqual(getattr(decoded, key, None), value) else: for key, value in PayloadBase.values.items(): # Note the default value in the getattr call. # ImplicitSchemaPayloadBuilder omits fields with valu=None since their # type cannot be inferred. self.assertEqual(getattr(decoded, key, None), value)
def test_implicit_payload_builder(self): builder = ImplicitSchemaPayloadBuilder(PayloadBase.values) result = builder.build() expected = get_payload(PayloadBase.args) self.assertEqual(result, expected)