Merge pull request #2751 from reaperhulk/1.2.3-changelog

bump to 1.2.3
diff --git a/dev-requirements.txt b/dev-requirements.txt
index c409ff9..8c4a188 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,19 +1,8 @@
 clint
 coverage
-flake8
-flake8-import-order
 invoke
-iso8601
-pep8-naming
-pretend
-pyasn1_modules
-pytest
 requests
-sphinx==1.3.1
-sphinx_rtd_theme
-sphinxcontrib-spelling
 tox
 twine
-hypothesis
--e .
+-e .[test,docs-test,pep8-test]
 -e vectors
diff --git a/setup.py b/setup.py
index f79b0e2..b0a4807 100644
--- a/setup.py
+++ b/setup.py
@@ -57,14 +57,15 @@
     requirements.append("cffi>=1.4.1")
     setup_requirements.append("cffi>=1.4.1")
 
-# If you add a new dep here you probably need to add it in the tox.ini as well
 test_requirements = [
     "pytest",
     "pretend",
     "iso8601",
-    "hypothesis",
     "pyasn1_modules",
 ]
+if sys.version_info[:2] > (2, 6):
+    test_requirements.append("hypothesis>=1.11.4")
+
 
 # If there's no vectors locally that probably means we are in a tarball and
 # need to go and get the matching vectors package from PyPi
@@ -308,6 +309,22 @@
 
     install_requires=requirements,
     tests_require=test_requirements,
+    extras_require={
+        "test": test_requirements,
+        "docs-test": [
+            "doc8",
+            "pyenchant",
+            "readme_renderer",
+            "sphinx",
+            "sphinx_rtd_theme",
+            "sphinxcontrib-spelling",
+        ],
+        "pep8-test": [
+            "flake8",
+            "flake8-import-order",
+            "pep8-naming",
+        ],
+    },
 
     # for cffi
     zip_safe=False,
diff --git a/src/_cffi_src/openssl/bio.py b/src/_cffi_src/openssl/bio.py
index ac86683..6439e63 100644
--- a/src/_cffi_src/openssl/bio.py
+++ b/src/_cffi_src/openssl/bio.py
@@ -99,7 +99,6 @@
 BIO *BIO_next(BIO *);
 BIO *BIO_find_type(BIO *, int);
 BIO_METHOD *BIO_s_mem(void);
-BIO *BIO_new_mem_buf(void *, int);
 BIO_METHOD *BIO_s_file(void);
 BIO *BIO_new_file(const char *, const char *);
 BIO *BIO_new_fp(FILE *, int);
@@ -127,6 +126,8 @@
 """
 
 MACROS = """
+/* BIO_new_mem_buf became const void * in 1.0.2g */
+BIO *BIO_new_mem_buf(void *, int);
 long BIO_set_fd(BIO *, long, int);
 long BIO_get_fd(BIO *, char *);
 long BIO_set_mem_eof_return(BIO *, int);
diff --git a/tests/hypothesis/__init__.py b/tests/hypothesis/__init__.py
index 4b54088..0b34406 100644
--- a/tests/hypothesis/__init__.py
+++ b/tests/hypothesis/__init__.py
@@ -3,3 +3,7 @@
 # for complete details.
 
 from __future__ import absolute_import, division, print_function
+
+import pytest
+# hypothesis no longer supports Python 2.6 so we simply skip it there
+pytest.importorskip("hypothesis")
diff --git a/tox.ini b/tox.ini
index dfb6761..424dc5b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,14 +2,9 @@
 envlist = py26,py27,pypy,py33,py34,py35,docs,pep8,py3pep8
 
 [testenv]
-# If you add a new dep here you probably need to add it in setup.py as well
 deps =
     coverage
-    iso8601
-    pretend
-    pytest
-    hypothesis>=1.11.4
-    pyasn1_modules
+    .[test]
     ./vectors
 passenv = ARCHFLAGS LDFLAGS CFLAGS INCLUDE LIB LD_LIBRARY_PATH USERNAME
 commands =
@@ -24,12 +19,7 @@
 
 [testenv:docs]
 deps =
-    doc8
-    pyenchant
-    readme_renderer
-    sphinx==1.3.1
-    sphinx_rtd_theme
-    sphinxcontrib-spelling
+    .[docs-test]
 basepython = python2.7
 commands =
     sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
@@ -57,18 +47,14 @@
 
 [testenv:pep8]
 deps =
-    flake8
-    flake8-import-order
-    pep8-naming
+    .[pep8-test]
 commands =
     flake8 .
 
 [testenv:py3pep8]
 basepython = python3
 deps =
-    flake8
-    flake8-import-order
-    pep8-naming
+    .[pep8-test]
 commands =
     flake8 .