<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def map(self, func=None, name=None, schema=None):
 """ Maps each tuple from this stream into 0 or 1 stream tuples. For each tuple on this stream ``result = func(tuple)`` is called. If `result` is not `None` then the result will be submitted as a tuple on the returned stream. If `result` is `None` then no tuple submission will occur. By default the submitted tuple is ``result`` without modification resulting in a stream of picklable Python objects. Setting the `schema` parameter changes the type of the stream and modifies each ``result`` before submission. * ``object`` or :py:const:`~streamsx.topology.schema.CommonSchema.Python` - The default: `result` is submitted. * ``str`` type (``unicode`` 2.7) or :py:const:`~streamsx.topology.schema.CommonSchema.String` - A stream of strings: ``str(result)`` is submitted. * ``json`` or :py:const:`~streamsx.topology.schema.CommonSchema.Json` - A stream of JSON objects: ``result`` must be convertable to a JSON object using `json` package. * :py:const:`~streamsx.topology.schema.StreamSchema` - A structured stream. `result` must be a `dict` or (Python) `tuple`. When a `dict` is returned the outgoing stream tuple attributes are set by name, when a `tuple` is returned stream tuple attributes are set by position. * string value - Equivalent to passing ``StreamSchema(schema)`` Args: func: A callable that takes a single parameter for the tuple. If not supplied then a function equivalent to ``lambda tuple_ : tuple_`` is used. name(str):
 Name of the mapped stream, defaults to a generated name. schema(StreamSchema|CommonSchema|str):
 Schema of the resulting stream. If invoking ``func`` for a tuple on the stream raises an exception then its processing element will terminate. By default the processing element will automatically restart though tuples may be lost. If ``func`` is a callable object then it may suppress exceptions by return a true value from its ``__exit__`` method. When an exception is suppressed no tuple is submitted to the mapped stream corresponding to the input tuple that caused the exception. Returns: Stream: A stream containing tuples mapped by `func`. .. versionadded:: 1.7 `schema` argument added to allow conversion to a structured stream. .. versionadded:: 1.8 Support for submitting `dict` objects as stream tuples to a structured stream (in addition to existing support for `tuple` objects). .. versionchanged:: 1.11 `func` is optional. """

        if schema is None:
            schema = streamsx.topology.schema.CommonSchema.Python
        if func is None:
            func = streamsx.topology.runtime._identity
            if name is None:
               name = 'identity'
     
        ms = self._map(func, schema=schema, name=name)._layout('Map')
        ms.oport.operator.sl = _SourceLocation(_source_info(), 'map')
        return ms