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


Reply via email to