[Python-modules-commits] [python-pytest-benchmark] 01/03: New upstream version 3.1.0a1

Hugo Lefeuvre hle at moszumanska.debian.org
Wed Nov 2 14:24:44 UTC 2016


This is an automated email from the git hooks/post-receive script.

hle pushed a commit to branch master
in repository python-pytest-benchmark.

commit 7d70f0d2433a64ef867c2e566c8394ed3aebb519
Author: Hugo Lefeuvre <hle at debian.org>
Date:   Wed Nov 2 15:23:21 2016 +0100

    New upstream version 3.1.0a1
---
 .bumpversion.cfg                                   |    2 +-
 .cookiecutterrc                                    |   68 +-
 .coveragerc                                        |    6 +-
 .editorconfig                                      |   13 +
 .gitignore                                         |    2 +
 .travis.yml                                        |  648 ++++++-
 AUTHORS.rst                                        |    7 +-
 CHANGELOG.rst                                      |   48 +-
 CONTRIBUTING.rst                                   |   15 +-
 LICENSE                                            |    2 +-
 MANIFEST.in                                        |    2 +-
 README.rst                                         |   39 +-
 appveyor.yml                                       | 1904 +++++++++++++++++---
 ci/appveyor-bootstrap.ps1                          |   89 -
 ci/appveyor-bootstrap.py                           |  119 ++
 ci/appveyor-with-compiler.cmd                      |   37 +-
 ci/bootstrap.py                                    |   20 +-
 ci/templates/.travis.yml                           |   26 +-
 ci/templates/appveyor.yml                          |   29 +-
 ci/templates/tox.ini                               |  149 ++
 docs/conf.py                                       |   35 +-
 docs/index.rst                                     |   63 +-
 docs/requirements.txt                              |    5 +-
 docs/sample.svg                                    |  268 ++-
 docs/usage.rst                                     |   20 +-
 setup.cfg                                          |   63 +-
 setup.py                                           |   32 +-
 src/pytest_benchmark/__init__.py                   |    2 +-
 src/pytest_benchmark/__main__.py                   |    5 +
 src/pytest_benchmark/cli.py                        |  197 ++
 src/pytest_benchmark/compat.py                     |   47 +-
 src/pytest_benchmark/csv.py                        |   42 +
 src/pytest_benchmark/fixture.py                    |  294 +++
 src/pytest_benchmark/histogram.py                  |  104 +-
 src/pytest_benchmark/hookspec.py                   |    4 +-
 src/pytest_benchmark/logger.py                     |   59 +
 src/pytest_benchmark/plugin.py                     |  985 ++--------
 src/pytest_benchmark/session.py                    |  254 +++
 src/pytest_benchmark/stats.py                      |   84 +-
 .../{table.py => storage/__init__.py}              |    0
 src/pytest_benchmark/storage/elasticsearch.py      |  328 ++++
 src/pytest_benchmark/storage/file.py               |  129 ++
 src/pytest_benchmark/table.py                      |  142 ++
 src/pytest_benchmark/timers.py                     |   77 +-
 src/pytest_benchmark/utils.py                      |  289 ++-
 tests/test_benchmark.py                            |  255 ++-
 tests/test_calibration.py                          |    2 +-
 tests/test_elasticsearch_storage.py                |  175 ++
 tests/test_normal.py                               |    5 +
 tests/test_stats.py                                |    2 +-
 tests/test_storage.py                              |  233 ++-
 ...41a4cd_20150815_030419_uncommitted-changes.json |    5 +-
 tests/test_utils.py                                |   48 +
 tox.ini                                            |  668 ++++++-
 54 files changed, 6351 insertions(+), 1795 deletions(-)

diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 6db0ca2..5b9eab2 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -3,7 +3,7 @@ parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?P<pre>.*)
 serialize = 
 	{major}.{minor}.{patch}{pre}
 	{major}.{minor}.{patch}
-current_version = 3.0.0
+current_version = 3.1.0a1
 commit = True
 tag = True
 
diff --git a/.cookiecutterrc b/.cookiecutterrc
index 5e73447..c6b4c3b 100644
--- a/.cookiecutterrc
+++ b/.cookiecutterrc
@@ -1,34 +1,36 @@
-# This file exists so you can easily regenerate your project.
-#
-# Unfortunatelly cookiecutter can't use this right away so
-# you have to copy this file to ~/.cookiecutterrc
+# Generated by cookiepatcher, a small shim around cookiecutter (pip install cookiepatcher)
 
-default_context:
-
-    appveyor:                  'yes'
-    c_extension_optional:      'no'
-    c_extension_support:       'no'
-    codacy:                    'yes'
-    codeclimate:               'yes'
-    codecov:                   'yes'
-    command_line_interface:    'no'
-    coveralls:                 'yes'
-    distribution_name:         'pytest-benchmark'
-    email:                     'contact at ionelmc.ro'
-    full_name:                 'Ionel Cristian Mărieș'
-    github_username:           'ionelmc'
-    landscape:                 'yes'
-    package_name:              'pytest-benchmark'
-    project_name:              'pytest-benchmark'
-    project_short_description: 'A ``py.test`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. See: calibration_.'
-    release_date:              '2015-06-10'
-    repo_name:                 'pytest-benchmark'
-    requiresio:                'yes'
-    scrutinizer:               'yes'
-    sphinx_theme:              'sphinx-py3doc-enhanced-theme'
-    test_matrix_configurator:  'no'
-    test_runner:               'pytest'
-    travis:                    'yes'
-    version:                   '2.5.0'
-    website:                   'http://blog.ionelmc.ro'
-    year:                      '2015'
+cookiecutter:
+    appveyor: 'yes'
+    c_extension_cython: 'no'
+    c_extension_optional: 'no'
+    c_extension_support: 'no'
+    codacy: 'yes'
+    codeclimate: 'yes'
+    codecov: 'yes'
+    command_line_interface: 'no'
+    command_line_interface_bin_name: pytest-benchmark
+    coveralls: 'yes'
+    distribution_name: pytest-benchmark
+    email: contact at ionelmc.ro
+    full_name: Ionel Cristian Mărieș
+    github_username: ionelmc
+    landscape: 'yes'
+    package_name: pytest_benchmark
+    project_name: pytest-benchmark
+    project_short_description: A ``py.test`` fixture for benchmarking code. It will
+        group the tests into rounds that are calibrated to the chosen timer. See calibration_
+        and FAQ_.
+    release_date: '2015-11-08'
+    repo_name: pytest-benchmark
+    requiresio: 'yes'
+    scrutinizer: 'yes'
+    sphinx_doctest: 'no'
+    sphinx_theme: sphinx-py3doc-enhanced-theme
+    test_matrix_configurator: 'no'
+    test_matrix_separate_coverage: 'yes'
+    test_runner: pytest
+    travis: 'yes'
+    version: 3.0.0
+    website: http://blog.ionelmc.ro
+    year: 2014-2016
diff --git a/.coveragerc b/.coveragerc
index 378f8be..9f5ac5f 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -2,8 +2,10 @@
 source = src
 
 [run]
-branch = True
-source = src
+branch = true
+source =
+    src
+    tests
 parallel = true
 
 [report]
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..4000618
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+# see http://editorconfig.org
+root = true
+
+[*]
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+charset = utf-8
+
+[*.{bat,cmd,ps1}]
+end_of_line = crlf
diff --git a/.gitignore b/.gitignore
index abfa018..be3cdec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ parts
 bin
 var
 sdist
+wheelhouse
 develop-eggs
 .installed.cfg
 lib
@@ -59,6 +60,7 @@ docs/_build
 .cache
 .pytest
 .bootstrap
+.appveyor.token
 *.bak
 *.t.err
 logfile
diff --git a/.travis.yml b/.travis.yml
index a77f918..a77b44a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,65 +1,602 @@
 language: python
-python: '3.5'
 sudo: false
 env:
   global:
-    LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
-  matrix:
-    - TOXENV=check
-    - TOXENV=2.6-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=2.6-pytest28-nodist-nocov
-    - TOXENV=2.6-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=2.6-pytest28-xdist-nocov
-    - TOXENV=2.6-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=2.6-pytest27-nodist-nocov
-    - TOXENV=2.6-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=2.6-pytest27-xdist-nocov
-    - TOXENV=2.7-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=2.7-pytest28-nodist-nocov
-    - TOXENV=2.7-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=2.7-pytest28-xdist-nocov
-    - TOXENV=2.7-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=2.7-pytest27-nodist-nocov
-    - TOXENV=2.7-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=2.7-pytest27-xdist-nocov
-    - TOXENV=3.2-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=3.2-pytest28-nodist-nocov
-    - TOXENV=3.2-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=3.2-pytest28-xdist-nocov
-    - TOXENV=3.2-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=3.2-pytest27-nodist-nocov
-    - TOXENV=3.2-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=3.2-pytest27-xdist-nocov
-    - TOXENV=3.3-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=3.3-pytest28-nodist-nocov
-    - TOXENV=3.3-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=3.3-pytest28-xdist-nocov
-    - TOXENV=3.3-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=3.3-pytest27-nodist-nocov
-    - TOXENV=3.3-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=3.3-pytest27-xdist-nocov
-    - TOXENV=3.4-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=3.4-pytest28-nodist-nocov
-    - TOXENV=3.4-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=3.4-pytest28-xdist-nocov
-    - TOXENV=3.4-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=3.4-pytest27-nodist-nocov
-    - TOXENV=3.4-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=3.4-pytest27-xdist-nocov
-    - TOXENV=pypy-pytest28-nodist-cover,coveralls,codecov
-    - TOXENV=pypy-pytest28-nodist-nocov
-    - TOXENV=pypy-pytest28-xdist-cover,coveralls,codecov
-    - TOXENV=pypy-pytest28-xdist-nocov
-    - TOXENV=pypy-pytest27-nodist-cover,coveralls,codecov
-    - TOXENV=pypy-pytest27-nodist-nocov
-    - TOXENV=pypy-pytest27-xdist-cover,coveralls,codecov
-    - TOXENV=pypy-pytest27-xdist-nocov
+    - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
+    - SEGFAULT_SIGNALS=all
+matrix:
+  include:
+    - python: '3.5'
+      env: TOXENV=check
+    - python: '3.5'
+      env: TOXENV=docs
+
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal20-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal20-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal21-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal21-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal22-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal22-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal23-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest28-pygal23-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal20-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal20-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal21-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal21-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal22-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal22-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal23-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest29-pygal23-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal20-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal20-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal21-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal21-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal22-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal22-xdist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal23-nodist-nocov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.6'
+      env: TOXENV=py26-pytest30-pygal23-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal20-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal20-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal21-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal21-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal22-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal22-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal23-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest28-pygal23-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal20-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal20-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal21-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal21-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal22-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal22-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal23-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest29-pygal23-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal20-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal20-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal21-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal21-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal22-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal22-xdist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal23-nodist-nocov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: '2.7'
+      env: TOXENV=py27-pytest30-pygal23-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal20-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal20-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal21-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal21-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal22-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal22-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal23-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest28-pygal23-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal20-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal20-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal21-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal21-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal22-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal22-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal23-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest29-pygal23-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal20-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal20-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal21-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal21-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal22-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal22-xdist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal23-nodist-nocov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.3'
+      env: TOXENV=py33-pytest30-pygal23-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal20-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal20-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal21-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal21-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal22-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal22-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal23-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest28-pygal23-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal20-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal20-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal21-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal21-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal22-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal22-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal23-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest29-pygal23-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal20-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal20-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal21-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal21-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal22-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal22-xdist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal23-nodist-nocov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.4'
+      env: TOXENV=py34-pytest30-pygal23-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal20-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal20-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal21-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal21-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal22-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal22-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal23-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest28-pygal23-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal20-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal20-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal21-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal21-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal22-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal22-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal23-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest29-pygal23-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal20-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal20-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal21-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal21-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal22-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal22-xdist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal23-nodist-nocov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: '3.5'
+      env: TOXENV=py35-pytest30-pygal23-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal20-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal20-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal20-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal20-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal21-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal21-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal21-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal21-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal22-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal22-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal22-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal22-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal23-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal23-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal23-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest28-pygal23-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal20-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal20-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal20-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal20-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal21-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal21-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal21-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal21-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal22-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal22-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal22-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal22-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal23-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal23-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal23-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest29-pygal23-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal20-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal20-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal20-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal20-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal21-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal21-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal21-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal21-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal22-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal22-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal22-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal22-xdist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal23-nodist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal23-nodist-nocov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal23-xdist-cover,coveralls,codecov
+    - python: 'pypy'
+      env: TOXENV=pypy-pytest30-pygal23-xdist-nocov
+    - python: '3.2'
+      env: TOXENV=py32-pytest28
+    - python: '3.2'
+      env: TOXENV=py32-pytest29
 before_install:
   - python --version
   - uname -a
   - lsb_release -a
 install:
-  - pip install -U tox virtualenv setuptools wheel
+  - pip install -U tox setuptools wheel $(python -V |& grep -q 'Python 3.2' && echo 'pip<8.0 virtualenv<14.0')
   - virtualenv --version
   - easy_install --version
   - pip --version
@@ -69,6 +606,11 @@ script:
 after_failure:
   - more .tox/log/* | cat
   - more .tox/*/log/* | cat
+before_cache:
+  - rm -rf $HOME/.cache/pip/log
+cache:
+  directories:
+    - $HOME/.cache/pip
 notifications:
   email:
     on_success: never
diff --git a/AUTHORS.rst b/AUTHORS.rst
index ddd8a94..fd7308c 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -2,5 +2,10 @@
 Authors
 =======
 
-* Ionel Cristian Mărieș - http://blog.ionelmc.ro
+* Ionel Cristian Mărieș - https://blog.ionelmc.ro
 * Marc Abramowitz - http://marc-abramowitz.com
+* Dave Collins - https://github.com/thedavecollins
+* Stefan Krastanov - http://blog.krastanov.org/
+* Thomas Waldmann - https://github.com/ThomasWaldmann
+* Antonio Cuni - http://antocuni.eu/en/
+* Petr Šebek - https://github.com/Artimi
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index cabec0a..d937fc7 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,7 +1,36 @@
+
 Changelog
 =========
 
-3.0.0 (2015-08-11)
+3.1.0a1 (2016-10-29)
+--------------------
+
+* Added ``--benchmark-colums`` command line option. It selects what columns are displayed in the result table. Contributed by
+  Antonio Cuni in `#34 <https://github.com/ionelmc/pytest-benchmark/pull/34>`_.
+* Added support for grouping by specific test parametrization (``--benchmark-group-by=param:NAME`` where ``NAME`` is your
+  param name). Contributed by Antonio Cuni in `#37 <https://github.com/ionelmc/pytest-benchmark/pull/37>`_.
+* Added support for `name` or `fullname` in ``--benchmark-sort``.
+  Contributed by Antonio Cuni in `#37 <https://github.com/ionelmc/pytest-benchmark/pull/37>`_.
+* Changed signature for ``pytest_benchmark_generate_json`` hook to take 2 new arguments: ``machine_info`` and ``commit_info``.
+* Changed `--benchmark-histogram`` to plot groups instead of name-matching runs.
+* Changed `--benchmark-histogram`` to plot exactly what you compared against. Now it's ``1:1`` with the compare feature.
+* Changed `--benchmark-compare`` to allow globs. You can compare against all the previous runs now.
+* Changed `--benchmark-group-by`` to allow multiple values separated by comma.
+  Example: ``--benchmark-group-by=param:foo,param:bar``
+* Added a command line tool to compare previous data: ``py.test-benchmark``. It has two commands:
+
+  * ``list`` - Lists all the available files.
+  * ``compare`` - Displays result tables. Takes optional arguments:
+
+    * ``--sort=COL``
+    * ``--group-by=LABEL``
+    * ``--columns=LABELS``
+    * ``--histogram=[FILENAME-PREFIX]``
+* Added ``--benchmark-cprofile`` that profiles last run of benchmarked function.  Contributed by Petr Šebek.
+* Changed ``--benchmark-storage`` so it now allows elasticsearch storage. It allows to store data to elasticsearch instead to
+  json files. Contributed by Petr Šebek in `#58 <https://github.com/ionelmc/pytest-benchmark/pull/58>`_.
+
+3.0.0 (2015-11-08)
 ------------------
 
 * Improved ``--help`` text for ``--benchmark-histogram``, ``--benchmark-save`` and ``--benchmark-autosave``.
@@ -13,13 +42,13 @@ Changelog
 * The red warnings are only shown if ``--benchmark-verbose`` is used. They still will be always be shown in the
   pytest-warnings section.
 * Using the benchmark fixture more than one time is disallowed (will raise exception).
-* Not using the benchmark fixutre (but requiring it) will issue a warning (``WBENCHMARK-U1``).
+* Not using the benchmark fixture (but requiring it) will issue a warning (``WBENCHMARK-U1``).
 
 3.0.0rc1 (2015-10-25)
 ---------------------
 
 * Changed ``--benchmark-warmup`` to take optional value and automatically activate on PyPy (default value is ``auto``).
-  *MAY BE BACKWARDS INCOMPATIBLE*
+  **MAY BE BACKWARDS INCOMPATIBLE**
 * Removed the version check in compare mode (previously there was a warning if current version is lower than what's in
   the file).
 
@@ -37,7 +66,7 @@ Changelog
 
 * Add a ``--benchmark-disable`` option. It's automatically activated when xdist is on
 * When xdist is on or `statistics` can't be imported then ``--benchmark-disable`` is automatically activated (instead
-  of ``--benchmark-skip``). *BACKWARDS INCOMPATIBLE*
+  of ``--benchmark-skip``). **BACKWARDS INCOMPATIBLE**
 * Replace the deprecated ``__multicall__`` with the new hookwrapper system.
 * Improved description for ``--benchmark-max-time``.
 
@@ -67,7 +96,8 @@ Changelog
 3.0.0a1 (2015-09-13)
 --------------------
 
-* Added JSON report saving (the ``--benchmark-json`` command line arguments).
+* Added JSON report saving (the ``--benchmark-json`` command line arguments). Based on initial work from Dave Collins in
+  `#8 <https://github.com/ionelmc/pytest-benchmark/pull/8>`_.
 * Added benchmark data storage(the ``--benchmark-save`` and ``--benchmark-autosave`` command line arguments).
 * Added comparison to previous runs (the ``--benchmark-compare`` command line argument).
 * Added performance regression checks (the ``--benchmark-compare-fail`` command line argument).
@@ -76,8 +106,8 @@ Changelog
 * Added option to fine tune the calibration (the ``--benchmark-calibration-precision`` command line argument and
   ``calibration_precision`` marker option).
 
-* Changed ``benchmark_weave`` to no longer be a context manager. Cleanup is performed automatically. *BACKWARDS
-  INCOMPATIBLE*
+* Changed ``benchmark_weave`` to no longer be a context manager. Cleanup is performed automatically.
+  **BACKWARDS INCOMPATIBLE**
 * Added ``benchmark.weave`` method (alternative to ``benchmark_weave`` fixture).
 
 * Added new hooks to allow customization:
@@ -144,7 +174,7 @@ Changelog
 2.0.0 (2014-12-19)
 ------------------
 
-* Replace the context-manager based API with a simple callback interface. *BACKWARDS INCOMPATIBLE*
+* Replace the context-manager based API with a simple callback interface. **BACKWARDS INCOMPATIBLE**
 * Implement timer calibration for precise measurements.
 
 1.0.0 (2014-12-15)
@@ -155,5 +185,5 @@ Changelog
 ? (?)
 -----
 
-* Readme and styling fixes (contributed by Marc Abramowitz)
+* Readme and styling fixes. Contributed by Marc Abramowitz in `#4 <https://github.com/ionelmc/pytest-benchmark/pull/4>`_.
 * Lots of wild changes.
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 778e418..fe8f876 100644
--- a/CONTRIBUTING.rst
... 8946 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-pytest-benchmark.git



More information about the Python-modules-commits mailing list