Changes between 1.2.1 and 1.2.0
=====================================

- refined usage and options for "py.cleanup"::

    py.cleanup     # remove "*.pyc" and "*$py.class" (jython) files
    py.cleanup -e .swp -e .cache # also remove files with these extensions
    py.cleanup -s  # remove "build" and "dist" directory next to setup.py files
    py.cleanup -d  # also remove empty directories 
    py.cleanup -a  # synonym for "-s -d -e 'pip-log.txt'"
    py.cleanup -n  # dry run, only show what would be removed

- add a new option "py.test --funcargs" which shows available funcargs 
  and their help strings (docstrings on their respective factory function) 
  for a given test path

- display a short and concise traceback if a funcarg lookup fails 

- early-load "conftest.py" files in non-dot first-level sub directories. 
  allows to conveniently keep and access test-related options in a ``test`` 
  subdir and still add command line options. 

- fix issue67: new super-short traceback-printing option: "--tb=line" will print a single line for each failing (python) test indicating its filename, lineno and the failure value

- fix issue78: always call python-level teardown functions even if the
  according setup failed.  This includes refinements for calling setup_module/class functions 
  which will now only be called once instead of the previous behaviour where they'd be called
  multiple times if they raise an exception (including a Skipped exception).  Any exception
  will be re-corded and associated with all tests in the according module/class scope.

- fix issue63: assume <40 columns to be a bogus terminal width, default to 80

- fix pdb debugging to be in the correct frame on raises-related errors 

- update apipkg.py to fix an issue where recursive imports might
  unnecessarily break importing 

- fix plugin links 

Changes between 1.2 and 1.1.1
=====================================

- moved dist/looponfailing from py.test core into a new 
  separately released pytest-xdist plugin.

- new junitxml plugin: --junitxml=path will generate a junit style xml file
  which is processable e.g. by the Hudson CI system. 

- new option: --genscript=path will generate a standalone py.test script
  which will not need any libraries installed.  thanks to Ralf Schmitt. 

- new option: --ignore will prevent specified path from collection. 
  Can be specified multiple times. 

- new option: --confcutdir=dir will make py.test only consider conftest 
  files that are relative to the specified dir.  

- new funcarg: "pytestconfig" is the pytest config object for access
  to command line args and can now be easily used in a test. 

- install 'py.test' and `py.which` with a ``-$VERSION`` suffix to
  disambiguate between Python3, python2.X, Jython and PyPy installed versions. 

- new "pytestconfig" funcarg allows access to test config object

- new "pytest_report_header" hook can return additional lines 
  to be displayed at the header of a test run. 

- (experimental) allow "py.test path::name1::name2::..." for pointing
  to a test within a test collection directly.  This might eventually
  evolve as a full substitute to "-k" specifications. 

- streamlined plugin loading: order is now as documented in
  customize.html: setuptools, ENV, commandline, conftest. 
  also setuptools entry point names are turned to canonical namees ("pytest_*")

- automatically skip tests that need 'capfd' but have no os.dup 

- allow pytest_generate_tests to be defined in classes as well 

- deprecate usage of 'disabled' attribute in favour of pytestmark 
- deprecate definition of Directory, Module, Class and Function nodes
  in conftest.py files.  Use pytest collect hooks instead.

- collection/item node specific runtest/collect hooks are only called exactly
  on matching conftest.py files, i.e. ones which are exactly below
  the filesystem path of an item

- change: the first pytest_collect_directory hook to return something
  will now prevent further hooks to be called.

- change: figleaf plugin now requires --figleaf to run.  Also
  change its long command line options to be a bit shorter (see py.test -h).

- change: pytest doctest plugin is now enabled by default and has a
  new option --doctest-glob to set a pattern for file matches. 

- change: remove internal py._* helper vars, only keep py._pydir 

- robustify capturing to survive if custom pytest_runtest_setup 
  code failed and prevented the capturing setup code from running. 

- make py.test.* helpers provided by default plugins visible early -
  works transparently both for pydoc and for interactive sessions
  which will regularly see e.g. py.test.mark and py.test.importorskip. 

- simplify internal plugin manager machinery 
- simplify internal collection tree by introducing a RootCollector node

- fix assert reinterpreation that sees a call containing "keyword=..."

- fix issue66: invoke pytest_sessionstart and pytest_sessionfinish 
  hooks on slaves during dist-testing, report module/session teardown 
  hooks correctly.

- fix issue65: properly handle dist-testing if no 
  execnet/py lib installed remotely. 

- skip some install-tests if no execnet is available

- fix docs, fix internal bin/ script generation


Changes between 1.1.1 and 1.1.0
=====================================

- introduce automatic plugin registration via 'pytest11' 
  entrypoints via setuptools' pkg_resources.iter_entry_points

- fix py.test dist-testing to work with execnet >= 1.0.0b4 

- re-introduce py.test.cmdline.main() for better backward compatibility 

- svn paths: fix a bug with path.check(versioned=True) for svn paths,
  allow '%' in svn paths, make svnwc.update() default to interactive mode 
  like in 1.0.x and add svnwc.update(interactive=False) to inhibit interaction.

- refine distributed tarball to contain test and no pyc files

- try harder to have deprecation warnings for py.compat.* accesses
  report a correct location

Changes between 1.1.0 and 1.0.2
=====================================

* adjust and improve docs

* remove py.rest tool and internal namespace - it was
  never really advertised and can still be used with
  the old release if needed.  If there is interest 
  it could be revived into its own tool i guess.

* fix issue48 and issue59: raise an Error if the module
  from an imported test file does not seem to come from 
  the filepath - avoids "same-name" confusion that has
  been reported repeatedly

* merged Ronny's nose-compatibility hacks: now
  nose-style setup_module() and setup() functions are 
  supported

* introduce generalized py.test.mark function marking

* reshuffle / refine command line grouping

* deprecate parser.addgroup in favour of getgroup which creates option group

* add --report command line option that allows to control showing of skipped/xfailed sections 

* generalized skipping: a new way to mark python functions with skipif or xfail 
  at function, class and modules level based on platform or sys-module attributes. 

* extend py.test.mark decorator to allow for positional args

* introduce and test "py.cleanup -d" to remove empty directories 

* fix issue #59 - robustify unittest test collection

* make bpython/help interaction work by adding an __all__ attribute 
  to ApiModule, cleanup initpkg

* use MIT license for pylib, add some contributors

* remove py.execnet code and substitute all usages with 'execnet' proper

* fix issue50 - cached_setup now caches more to expectations 
  for test functions with multiple arguments. 

* merge Jarko's fixes, issue #45 and #46

* add the ability to specify a path for py.lookup to search in

* fix a funcarg cached_setup bug probably only occuring 
  in distributed testing and "module" scope with teardown. 

* many fixes and changes for making the code base python3 compatible,
  many thanks to Benjamin Peterson for helping with this. 

* consolidate builtins implementation to be compatible with >=2.3, 
  add helpers to ease keeping 2 and 3k compatible code

* deprecate py.compat.doctest|subprocess|textwrap|optparse

* deprecate py.magic.autopath, remove py/magic directory 

* move pytest assertion handling to py/code and a pytest_assertion
  plugin, add "--no-assert" option, deprecate py.magic namespaces 
  in favour of (less) py.code ones. 

* consolidate and cleanup py/code classes and files 

* cleanup py/misc, move tests to bin-for-dist 

* introduce delattr/delitem/delenv methods to py.test's monkeypatch funcarg 

* consolidate py.log implementation, remove old approach. 

* introduce py.io.TextIO and py.io.BytesIO for distinguishing between
  text/unicode and byte-streams (uses underlying standard lib io.* 
  if available) 

* make py.unittest_convert helper script available which converts "unittest.py" 
  style files into the simpler assert/direct-test-classes py.test/nosetests
  style.  The script was written by Laura Creighton. 
 
* simplified internal localpath implementation 

Changes between 1.0.1 and 1.0.2
=====================================

* fixing packaging issues, triggered by fedora redhat packaging, 
  also added doc, examples and contrib dirs to the tarball. 

* added a documentation link to the new django plugin. 

Changes between 1.0.0 and 1.0.1
=====================================

* added a 'pytest_nose' plugin which handles nose.SkipTest, 
  nose-style function/method/generator setup/teardown and 
  tries to report functions correctly. 

* capturing of unicode writes or encoded strings to sys.stdout/err 
  work better, also terminalwriting was adapted and somewhat 
  unified between windows and linux. 

* improved documentation layout and content a lot

* added a "--help-config" option to show conftest.py / ENV-var names for
  all longopt cmdline options, and some special conftest.py variables. 
  renamed 'conf_capture' conftest setting to 'option_capture' accordingly. 

* fix issue #27: better reporting on non-collectable items given on commandline 
  (e.g. pyc files)

* fix issue #33: added --version flag (thanks Benjamin Peterson) 

* fix issue #32: adding support for "incomplete" paths to wcpath.status()

* "Test" prefixed classes are *not* collected by default anymore if they 
  have an __init__ method 

* monkeypatch setenv() now accepts a "prepend" parameter

* improved reporting of collection error tracebacks

* simplified multicall mechanism and plugin architecture, 
  renamed some internal methods and argnames 

Changes between 1.0.0b9 and 1.0.0
=====================================

* more terse reporting try to show filesystem path relatively to current dir 
* improve xfail output a bit

Changes between 1.0.0b8 and 1.0.0b9
=====================================

* cleanly handle and report final teardown of test setup

* fix svn-1.6 compat issue with py.path.svnwc().versioned()
  (thanks Wouter Vanden Hove)

* setup/teardown or collection problems now show as ERRORs
  or with big "E"'s in the progress lines.  they are reported
  and counted separately. 
 
* dist-testing: properly handle test items that get locally 
  collected but cannot be collected on the remote side - often 
  due to platform/dependency reasons

* simplified py.test.mark API - see keyword plugin documentation

* integrate better with logging: capturing now by default captures
  test functions and their immediate setup/teardown in a single stream 

* capsys and capfd funcargs now have a readouterr() and a close() method
  (underlyingly py.io.StdCapture/FD objects are used which grew a 
  readouterr() method as well to return snapshots of captured out/err)

* make assert-reinterpretation work better with comparisons not 
  returning bools (reported with numpy from thanks maciej fijalkowski)

* reworked per-test output capturing into the pytest_iocapture.py plugin 
  and thus removed capturing code from config object 

* item.repr_failure(excinfo) instead of item.repr_failure(excinfo, outerr)


Changes between 1.0.0b7 and 1.0.0b8
=====================================

* pytest_unittest-plugin is now enabled by default

* introduced pytest_keyboardinterrupt hook and 
  refined pytest_sessionfinish hooked, added tests. 

* workaround a buggy logging module interaction ("closing already closed
  files").  Thanks to Sridhar Ratnakumar for triggering. 

* if plugins use "py.test.importorskip" for importing 
  a dependency only a warning will be issued instead 
  of exiting the testing process. 

* many improvements to docs: 
  - refined funcargs doc , use the term "factory" instead of "provider"
  - added a new talk/tutorial doc page 
  - better download page
  - better plugin docstrings
  - added new plugins page and automatic doc generation script

* fixed teardown problem related to partially failing funcarg setups 
  (thanks MrTopf for reporting), "pytest_runtest_teardown" is now 
  always invoked even if the "pytest_runtest_setup" failed. 

* tweaked doctest output for docstrings in py modules, 
  thanks Radomir. 

Changes between 1.0.0b3 and 1.0.0b7
=============================================

* renamed py.test.xfail back to py.test.mark.xfail to avoid 
  two ways to decorate for xfail

* re-added py.test.mark decorator for setting keywords on functions 
  (it was actually documented so removing it was not nice) 

* remove scope-argument from request.addfinalizer() because 
  request.cached_setup has the scope arg. TOOWTDI. 

* perform setup finalization before reporting failures

* apply modified patches from Andreas Kloeckner to allow 
  test functions to have no func_code (#22) and to make 
  "-k" and function keywords work  (#20) 

* apply patch from Daniel Peolzleithner (issue #23) 

* resolve issue #18, multiprocessing.Manager() and 
  redirection clash 

* make __name__ == "__channelexec__" for remote_exec code

Changes between 1.0.0b1 and 1.0.0b3
=============================================

* plugin classes are removed: one now defines 
  hooks directly in conftest.py or global pytest_*.py 
  files. 

* added new pytest_namespace(config) hook that allows 
  to inject helpers directly to the py.test.* namespace. 

* documented and refined many hooks 

* added new style of generative tests via 
  pytest_generate_tests hook that integrates 
  well with function arguments. 
 

Changes between 0.9.2 and 1.0.0b1
=============================================

* introduced new "funcarg" setup method, 
  see doc/test/funcarg.txt 

* introduced plugin architecuture and many 
  new py.test plugins, see 
  doc/test/plugins.txt

* teardown_method is now guaranteed to get 
  called after a test method has run. 
 
* new method: py.test.importorskip(mod,minversion)
  will either import or call py.test.skip()

* completely revised internal py.test architecture

* new py.process.ForkedFunc object allowing to 
  fork execution of a function to a sub process
  and getting a result back. 

XXX lots of things missing here XXX

Changes between 0.9.1 and 0.9.2
===============================

* refined installation and metadata, created new setup.py, 
  now based on setuptools/ez_setup (thanks to Ralf Schmitt 
  for his support).

* improved the way of making py.* scripts available in 
  windows environments, they are now added to the 
  Scripts directory as ".cmd" files. 

* py.path.svnwc.status() now is more complete and 
  uses xml output from the 'svn' command if available
  (Guido Wesdorp)

* fix for py.path.svn* to work with svn 1.5
  (Chris Lamb)

* fix path.relto(otherpath) method on windows to 
  use normcase for checking if a path is relative.

* py.test's traceback is better parseable from editors 
  (follows the filenames:LINENO: MSG convention)
  (thanks to Osmo Salomaa)

* fix to javascript-generation, "py.test --runbrowser" 
  should work more reliably now

* removed previously accidentally added 
  py.test.broken and py.test.notimplemented helpers. 

* there now is a py.__version__ attribute

Changes between 0.9.0 and 0.9.1
===============================

This is a fairly complete list of changes between 0.9 and 0.9.1, which can
serve as a reference for developers.

* allowing + signs in py.path.svn urls [39106]
* fixed support for Failed exceptions without excinfo in py.test [39340]
* added support for killing processes for Windows (as well as platforms that
  support os.kill) in py.misc.killproc [39655]
* added setup/teardown for generative tests to py.test [40702]
* added detection of FAILED TO LOAD MODULE to py.test [40703, 40738, 40739]
* fixed problem with calling .remove() on wcpaths of non-versioned files in
  py.path [44248]
* fixed some import and inheritance issues in py.test [41480, 44648, 44655]
* fail to run greenlet tests when pypy is available, but without stackless
  [45294]
* small fixes in rsession tests [45295]
* fixed issue with 2.5 type representations in py.test [45483, 45484]
* made that internal reporting issues displaying is done atomically in py.test
  [45518]
* made that non-existing files are igored by the py.lookup script [45519]
* improved exception name creation in py.test [45535]
* made that less threads are used in execnet [merge in 45539]
* removed lock required for atomical reporting issue displaying in py.test
  [45545]
* removed globals from execnet [45541, 45547]
* refactored cleanup mechanics, made that setDaemon is set to 1 to make atexit
  get called in 2.5 (py.execnet) [45548]
* fixed bug in joining threads in py.execnet's servemain [45549]
* refactored py.test.rsession tests to not rely on exact output format anymore
  [45646]
* using repr() on test outcome [45647]
* added 'Reason' classes for py.test.skip() [45648, 45649]
* killed some unnecessary sanity check in py.test.collect [45655]
* avoid using os.tmpfile() in py.io.fdcapture because on Windows it's only
  usable by Administrators [45901]
* added support for locking and non-recursive commits to py.path.svnwc [45994]
* locking files in py.execnet to prevent CPython from segfaulting [46010]
* added export() method to py.path.svnurl
* fixed -d -x in py.test [47277]
* fixed argument concatenation problem in py.path.svnwc [49423]
* restore py.test behaviour that it exits with code 1 when there are failures
  [49974]
* don't fail on html files that don't have an accompanying .txt file [50606]
* fixed 'utestconvert.py < input' [50645]
* small fix for code indentation in py.code.source [50755]
* fix _docgen.py documentation building [51285]
* improved checks for source representation of code blocks in py.test [51292]
* added support for passing authentication to py.path.svn* objects [52000,
  52001]
* removed sorted() call for py.apigen tests in favour of [].sort() to support
  Python 2.3 [52481]
