# CSV reader and writer

Agate contains CSV readers and writers that are intended to be used as a drop-in replacement for `csv`. These versions add unicode support for Python 2 and several other minor features.

Agate methods will use these version automatically. If you would like to use them in your own code, you can import them, like this:

    import agate as csv

Due to nuanced differences between the versions, these classes are implemented seperately for Python 2 and Python 3. The documentation for both versions is provided below, but only the one for your version of Python is imported with the above code.

## Python 3

`agate.csv_py3.reader` | A replacement for Python’s `csv.reader()` that uses `csv_py3.Reader`.
`agate.csv_py3.writer` | A replacement for Python’s `csv.writer()` that uses `csv_py3.Writer`.
`agate.csv_py3.Reader` | A wrapper around Python 3’s builtin `csv.reader()`.
`agate.csv_py3.Writer` | A wrapper around Python 3’s builtin `csv.writer()`.
`agate.csv_py3.DictReader` | A wrapper around Python 3’s builtin `csv.DictReader`.
`agate.csv_py3.DictWriter` | A wrapper around Python 3’s builtin `csv.DictWriter`.

## Python 2

`agate.csv_py2.reader` | A replacement for Python’s `csv.reader()` that uses `csv_py2.Reader`.
`agate.csv_py2.writer` | A replacement for Python’s `csv.writer()` that uses `csv_py2.Writer`.
`agate.csv_py2.Reader` | A unicode-aware CSV reader.
`agate.csv_py2.Writer` | A unicode-aware CSV writer.
`agate.csv_py2.DictReader` | A unicode-aware CSV DictReader.
`agate.csv_py2.DictWriter` | A unicode-aware CSV DictWriter.

## Python 3 details

`agate.csv_py3.``reader`(*args, **kwargs)

  A replacement for Python’s `csv.reader()` that uses `csv_py3.Reader`.

`agate.csv_py3.``writer`(*args, **kwargs)

  A replacement for Python’s `csv.writer()` that uses `csv_py3.Writer`.

class `agate.csv_py3.``Reader`(f, field_size_limit=None, line_numbers=False, header=True, **kwargs)

  Bases: `object`

  A wrapper around Python 3’s builtin `csv.reader()`.

class `agate.csv_py3.``Writer`(f, line_numbers=False, **kwargs)

  Bases: `object`

  A wrapper around Python 3’s builtin `csv.writer()`.

class `agate.csv_py3.``DictReader`(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

  Bases: `csv.DictReader`

  A wrapper around Python 3’s builtin `csv.DictReader`.

class `agate.csv_py3.``DictWriter`(f, fieldnames, line_numbers=False, **kwargs)

  Bases: `csv.DictWriter`

  A wrapper around Python 3’s builtin `csv.DictWriter`.

## Python 2 details

`agate.csv_py2.``reader`(*args, **kwargs)

  A replacement for Python’s `csv.reader()` that uses `csv_py2.Reader`.

`agate.csv_py2.``writer`(*args, **kwargs)

  A replacement for Python’s `csv.writer()` that uses `csv_py2.Writer`.

class `agate.csv_py2.``Reader`(f, encoding='utf-8', field_size_limit=None, line_numbers=False, header=True, **kwargs)

  Bases: `agate.csv_py2.UnicodeReader`

  A unicode-aware CSV reader.

class `agate.csv_py2.``Writer`(f, encoding='utf-8', line_numbers=False, **kwargs)

  Bases: `agate.csv_py2.UnicodeWriter`

  A unicode-aware CSV writer.

class `agate.csv_py2.``DictReader`(f, fieldnames=None, restkey=None, restval=None, *args, **kwargs)

  Bases: `agate.csv_py2.UnicodeDictReader`

  A unicode-aware CSV DictReader.

class `agate.csv_py2.``DictWriter`(f, fieldnames, encoding='utf-8', line_numbers=False, **kwargs)

  Bases: `agate.csv_py2.UnicodeDictWriter`

  A unicode-aware CSV DictWriter.