robertwb commented on a change in pull request #12426: URL: https://github.com/apache/beam/pull/12426#discussion_r464556809
########## File path: sdks/python/apache_beam/coders/coder_impl.py ########## @@ -530,6 +530,88 @@ def estimate_size(self, unused_value, nested=False): return 1 +class MapCoderImpl(StreamCoderImpl): + """For internal use only; no backwards-compatibility guarantees. + + A coder for typing.Mapping objects.""" + def __init__( + self, + key_coder, # type: CoderImpl + value_coder # type: CoderImpl + ): + self._key_coder = key_coder + self._value_coder = value_coder + + def encode_to_stream(self, value, out, nested): + size = len(value) + out.write_bigendian_int32(size) + for i, kv in enumerate(value.items()): + key, value = kv + last = i == size - 1 Review comment: Here we have a bit better luck. The coders in Schemas are always used in nested context. Let's change this to not branch on nested, and make a note that these agree in this context, but as raw coder Java's (non-standard) Map is different for value types that have a different nested encoding. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org