code: def send_put(self, mri, attribute_name, value):
          
          path = attribute_name + ".value"
          typ, value = convert_to_type_tuple_value(serialize_object(value))
          if isinstance(typ, tuple):
              # Structure, make into a Value
              _, typeid, fields = typ
              value = Value(Type(fields, typeid), value)
          try:
              self._ctxt.put(mri, {path: value}, path)
          except RemoteError:
              if attribute_name == "exports":
                  # TODO: use a tag instead of a name
                  # This will change the structure of the block
                  # Wait for reconnect
                  self._queues[mri].get(timeout=DEFAULT_TIMEOUT)
              else:
                  # Not expected, raise
                  raise
docs: Abstract method to dispatch a Put to the server
  
          Args:
              mri (str): The mri of the Block
              attribute_name (str): The name of the Attribute within the Block
              value: The value to put