0.6.0 (2017-03-21)
    * Rename package from nose-parameterized to parameterized. A
      nose-parameterized package will be released with a deprecation warning.
    * Rename testcase_func_doc and testcase_func_name methods to doc_func and
      name_func (a DeprecationWarning will be issued, to be removed in 1.0).
    * Include parameters in all docstrings, not just `parameterized.expand`
      docstrings.
    * Explicitly unwrap iterators and generators before the test run (thanks
      @chornsby; https://github.com/wolever/nose-parameterized/pull/31)

0.5.0 (2015-06-09)
    * Support for nose2, py.test, unittest, and unittest2
      (nose2 support thanks to @marek-mazur;
      https://github.com/wolever/nose-parameterized/pull/26)

0.4.2 (2015-05-18)
    * Fix bug with expand + empty arguments (thanks @jikamens;
      https://github.com/wolever/nose-parameterized/pull/25)

0.4.1 (2015-05-17)
    * Fix bug with expand + empty docstring (thanks @jikamens;
      https://github.com/wolever/nose-parameterized/pull/24)

0.4.0 (2015-05-11)
    * Include parameters in ``parameterized.expand`` function docstrings
      (https://github.com/wolever/nose-parameterized/pull/22; thanks
      @smspillaz)
    * Drop Python 3.2 support

0.3.5 (2014-11-05)
    * Allow the names of test cases generated by ``parameterized.expand`` to
      be customized.
      (https://github.com/wolever/nose-parameterized/pull/19;
      thanks @curtissiemens) 

0.3.4 (2014-10-03)
    * Use ``functools.wraps`` to wrap expanded functions
      (https://github.com/wolever/nose-parameterized/pull/17;
      thanks @toumorokoshi) 

0.3.3 (2014-01-03)
    * Replace unsafe characters with "_" in names generated by
      ``@parameterized.expand``.

0.3.2 (2014-01-02)
    * Add helpful error message when used with old-style classes.

0.3.1 (2013-08-01)
    * Fix bug: `nose_parameterized.param` wasn't being imported.

0.3 (2013-05-18)
    * Add `param` class.
    * Add explicit support for callable inputs.
    * Update readme to more throughly describe useage.
    * Remove un-used test helpers (`setup_logging`, `teardown_logging`,
     `logged_messages`, `assert_logged`, `assert_no_errors_logged`,
     `assert_contains`, `assert_not_contains`, `assert_raises`,
     `imported_from_test`).

0.2 (2013-01-15)
    * Add Python 3 support
