###
4.9.1.2 StreamWriter Objects

The `StreamWriter` class is a subclass of `Codec` and defines the following methods which every stream writer must define in order to be compatible to the Python codec registry.

class `StreamWriter`( | stream[, errors])

  Constructor for a `StreamWriter` instance.

  All stream writers must provide this constructor interface. They are free to add additional keyword arguments, but only the ones defined here are used by the Python codec registry.

  stream must be a file-like object open for writing (binary) data.

  The `StreamWriter` may implement different error handling schemes by providing the errors keyword argument. These parameters are predefined:

  - `'strict'` Raise `ValueError` (or a subclass); this is the default.
  - `'ignore'` Ignore the character and continue with the next.
  - `'replace'` Replace with a suitable replacement character
  - `'xmlcharrefreplace'` Replace with the appropriate XML character reference
  - `'backslashreplace'` Replace with backslashed escape sequences.

  The errors argument will be assigned to an attribute of the same name. Assigning to this attribute makes it possible to switch between different error handling strategies during the lifetime of the `StreamWriter` object.

  The set of allowed values for the errors argument can be extended with `register_error()`.

`write`( | object)

  Writes the object's contents encoded to the stream.

`writelines`( | list)

  Writes the concatenated list of strings to the stream (possibly by reusing the `write()` method).

`reset`( | )

  Flushes and resets the codec buffers used for keeping state.

  Calling this method should ensure that the data on the output is put into a clean state, that allows appending of new fresh data without having to rescan the whole stream to recover state.

In addition to the above methods, the `StreamWriter` must also inherit all other methods and attribute from the underlying stream.