{"action":"closed","number":60,"pull_request":{"url":"https://api.github.com/repos/dssg/pgdedupe/pulls/60","id":141603279,"html_url":"https://github.com/dssg/pgdedupe/pull/60","diff_url":"https://github.com/dssg/pgdedupe/pull/60.diff","patch_url":"https://github.com/dssg/pgdedupe/pull/60.patch","issue_url":"https://api.github.com/repos/dssg/pgdedupe/issues/60","number":60,"state":"closed","locked":false,"title":"Scheduled weekly dependency update for week 38","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars0.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"body":"\n\n\n## Updates\nHere's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.\n<table align=\"center\">\n\n<tr>\n<td><b>numpy</b></td>\n<td align=\"center\">1.12.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.13.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/numpy\">PyPI</a> | <a href=\"https://pyup.io/changelogs/numpy/\">Changelog</a> | <a href=\"http://www.numpy.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>pandas</b></td>\n<td align=\"center\">0.20.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.20.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pandas\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pandas/\">Changelog</a> | <a href=\"http://pandas.pydata.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>psycopg2</b></td>\n<td align=\"center\">2.7.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.7.3.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/psycopg2\">PyPI</a> | <a href=\"https://pyup.io/changelogs/psycopg2/\">Changelog</a> | <a href=\"http://initd.org/psycopg/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>dedupe</b></td>\n<td align=\"center\">1.6.13</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.7.8</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/dedupe\">PyPI</a> | <a href=\"https://pyup.io/changelogs/dedupe/\">Changelog</a> | <a href=\"https://github.com/dedupeio/dedupe\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>fastcluster</b></td>\n<td align=\"center\">1.1.23</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.1.24</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/fastcluster\">PyPI</a> | <a href=\"https://pyup.io/changelogs/fastcluster/\">Changelog</a> | <a href=\"http://danifold.net\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>wheel</b></td>\n<td align=\"center\">0.29.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.30.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/wheel\">PyPI</a> | <a href=\"https://pyup.io/changelogs/wheel/\">Changelog</a> | <a href=\"https://github.com/pypa/wheel\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>flake8</b></td>\n<td align=\"center\">3.3.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">3.4.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/flake8\">PyPI</a> | <a href=\"https://pyup.io/changelogs/flake8/\">Changelog</a> | <a href=\"https://gitlab.com/pycqa/flake8\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>tox</b></td>\n<td align=\"center\">2.7.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.8.2</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/tox\">PyPI</a> | <a href=\"https://pyup.io/changelogs/tox/\">Changelog</a> | <a href=\"https://tox.readthedocs.org/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>Sphinx</b></td>\n<td align=\"center\">1.6.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.6.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/sphinx\">PyPI</a> | <a href=\"https://pyup.io/changelogs/sphinx/\">Changelog</a> | <a href=\"http://sphinx-doc.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>cryptography</b></td>\n<td align=\"center\">1.8.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.0.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/cryptography\">PyPI</a> | <a href=\"https://pyup.io/changelogs/cryptography/\">Changelog</a> | <a href=\"https://github.com/pyca/cryptography\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>pytest</b></td>\n<td align=\"center\">3.0.7</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">3.2.2</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pytest\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pytest/\">Changelog</a> | <a href=\"https://github.com/pytest-dev/pytest/issues\">Repo</a> | <a href=\"http://pytest.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>Faker</b></td>\n<td align=\"center\">0.7.12</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.8.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/faker\">PyPI</a> | <a href=\"https://pyup.io/changelogs/faker/\">Changelog</a> | <a href=\"https://github.com/joke2k/faker\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>tqdm</b></td>\n<td align=\"center\">4.11.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.15.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/tqdm\">PyPI</a> | <a href=\"https://pyup.io/changelogs/tqdm/\">Changelog</a> | <a href=\"https://github.com/tqdm/tqdm/issues\">Repo</a> \n\n</td>\n\n</tr>\n</table>\n\n\n\n## Changelogs\n\n\n### numpy 1.12.1 -> 1.13.1\n\n>### 1.13.0\n\n>==========================\n\n>This release supports Python 2.7 and 3.4 - 3.6.\n\n\n>Highlights\n>==========\n\n> * Operations like ``a + b + c`` will reuse temporaries on some platforms,\n>   resulting in less memory use and faster execution.\n> * Inplace operations check if inputs overlap outputs and create temporaries\n>   to avoid problems.\n> * New ``__array_ufunc__`` attribute provides improved ability for classes to\n>   override default ufunc behavior.\n> * New ``np.block`` function for creating blocked arrays.\n\n\n>New functions\n>=============\n\n>* New ``np.positive`` ufunc.\n>* New ``np.divmod`` ufunc provides more efficient divmod.\n>* New ``np.isnat`` ufunc tests for NaT special values.\n>* New ``np.heaviside`` ufunc computes the Heaviside function.\n>* New ``np.isin`` function, improves on ``in1d``.\n>* New ``np.block`` function for creating blocked arrays.\n>* New ``PyArray_MapIterArrayCopyIfOverlap`` added to NumPy C-API.\n\n>See below for details.\n\n\n>Deprecations\n>============\n\n>* Calling ``np.fix``, ``np.isposinf``, and ``np.isneginf`` with ``f(x, y=out)``\n>  is deprecated - the argument should be passed as ``f(x, out=out)``, which\n>  matches other ufunc-like interfaces.\n>* Use of the C-API ``NPY_CHAR`` type number deprecated since version 1.7 will\n>  now raise deprecation warnings at runtime. Extensions built with older f2py\n>  versions need to be recompiled to remove the warning.\n>* ``np.ma.argsort``, ``np.ma.minimum.reduce``, and ``np.ma.maximum.reduce``\n>  should be called with an explicit `axis` argument when applied to arrays with\n>  more than 2 dimensions, as the default value of this argument (``None``) is\n>  inconsistent with the rest of numpy (``-1``, ``0``, and ``0``, respectively).\n>* ``np.ma.MaskedArray.mini`` is deprecated, as it almost duplicates the\n>  functionality of ``np.MaskedArray.min``. Exactly equivalent behaviour\n>  can be obtained with ``np.ma.minimum.reduce``.\n>* The single-argument form of ``np.ma.minimum`` and ``np.ma.maximum`` is\n>  deprecated. ``np.maximum``. ``np.ma.minimum(x)`` should now be spelt\n>  ``np.ma.minimum.reduce(x)``, which is consistent with how this would be done\n>  with ``np.minimum``.\n>* Calling ``ndarray.conjugate`` on non-numeric dtypes is deprecated (it\n>  should match the behavior of ``np.conjugate``, which throws an error).\n>* Calling ``expand_dims`` when the ``axis`` keyword does not satisfy\n>  ``-a.ndim - 1 &lt;= axis &lt;= a.ndim``, where ``a`` is the array being reshaped,\n>  is deprecated.\n\n\n>Future Changes\n>==============\n\n>* Assignment between structured arrays with different field names will change\n>  in NumPy 1.14. Previously, fields in the dst would be set to the value of the\n>  identically-named field in the src. In numpy 1.14 fields will instead be\n>  assigned &#39;by position&#39;: The n-th field of the dst will be set to the n-th\n>  field of the src array. Note that the ``FutureWarning`` raised in NumPy 1.12\n>  incorrectly reported this change as scheduled for NumPy 1.13 rather than\n>  NumPy 1.14.\n\n\n>Build System Changes\n>====================\n\n>* ``numpy.distutils`` now automatically determines C-file dependencies with\n>  GCC compatible compilers.\n\n\n>Compatibility notes\n>===================\n\n>Error type changes\n>------------------\n\n>* ``numpy.hstack()`` now throws ``ValueError`` instead of ``IndexError`` when\n>  input is empty.\n>* Functions taking an axis argument, when that argument is out of range, now\n>  throw ``np.AxisError`` instead of a mixture of ``IndexError`` and\n>  ``ValueError``. For backwards compatibility, ``AxisError`` subclasses both of\n>  these.\n\n>Tuple object dtypes\n>-------------------\n\n>Support has been removed for certain obscure dtypes that were unintentionally\n>allowed, of the form ``(old_dtype, new_dtype)``, where either of the dtypes\n>is or contains the ``object`` dtype. As an exception, dtypes of the form\n>``(object, [(&#39;name&#39;, object)])`` are still supported due to evidence of\n>existing use.\n\n>DeprecationWarning to error\n>---------------------------\n>See Changes section for more detail.\n\n>* ``partition``, TypeError when non-integer partition index is used.\n>* ``NpyIter_AdvancedNew``, ValueError when ``oa_ndim == 0`` and ``op_axes`` is NULL\n>* ``negative(bool_)``, TypeError when negative applied to booleans.\n>* ``subtract(bool_, bool_)``, TypeError when subtracting boolean from boolean.\n>* ``np.equal, np.not_equal``, object identity doesn&#39;t override failed comparison.\n>* ``np.equal, np.not_equal``, object identity doesn&#39;t override non-boolean comparison.\n>* Deprecated boolean indexing behavior dropped. See Changes below for details.\n>* Deprecated ``np.alterdot()`` and ``np.restoredot()`` removed.\n\n>FutureWarning to changed behavior\n>---------------------------------\n>See Changes section for more detail.\n\n>* ``numpy.average`` preserves subclasses\n>* ``array == None`` and ``array != None`` do element-wise comparison.\n>* ``np.equal, np.not_equal``, object identity doesn&#39;t override comparison result.\n\n>dtypes are now always true\n>--------------------------\n\n>Previously ``bool(dtype)`` would fall back to the default python\n>implementation, which checked if ``len(dtype) &gt; 0``. Since ``dtype`` objects\n>implement ``__len__`` as the number of record fields, ``bool`` of scalar dtypes\n>would evaluate to ``False``, which was unintuitive. Now ``bool(dtype) == True``\n>for all dtypes.\n\n>``__getslice__`` and ``__setslice__`` are no longer needed in ``ndarray`` subclasses\n>------------------------------------------------------------------------------------\n>When subclassing np.ndarray in Python 2.7, it is no longer _necessary_ to\n>implement ``__*slice__`` on the derived class, as ``__*item__`` will intercept\n>these calls correctly.\n\n>Any code that did implement these will work exactly as before. Code that\n>invokes``ndarray.__getslice__`` (e.g. through ``super(...).__getslice__``) will\n>now issue a DeprecationWarning - ``.__getitem__(slice(start, end))`` should be\n>used instead.\n\n>Indexing MaskedArrays/Constants with ``...`` (ellipsis) now returns MaskedArray\n>-------------------------------------------------------------------------------\n>This behavior mirrors that of np.ndarray, and accounts for nested arrays in\n>MaskedArrays of object dtype, and ellipsis combined with other forms of\n>indexing.\n\n>C API changes\n>=============\n\n>GUfuncs on empty arrays and NpyIter axis removal\n>------------------------------------------------\n>It is now allowed to remove a zero-sized axis from NpyIter. Which may mean\n>that code removing axes from NpyIter has to add an additional check when\n>accessing the removed dimensions later on.\n\n>The largest followup change is that gufuncs are now allowed to have zero-sized\n>inner dimensions. This means that a gufunc now has to anticipate an empty inner\n>dimension, while this was never possible and an error raised instead.\n\n>For most gufuncs no change should be necessary. However, it is now possible\n>for gufuncs with a signature such as ``(..., N, M) -&gt; (..., M)`` to return\n>a valid result if ``N=0`` without further wrapping code.\n\n>``PyArray_MapIterArrayCopyIfOverlap`` added to NumPy C-API\n>----------------------------------------------------------\n>Similar to ``PyArray_MapIterArray`` but with an additional ``copy_if_overlap``\n>argument. If ``copy_if_overlap != 0``,  checks if input has memory overlap with\n>any of the other arrays and make copies as appropriate to avoid problems if the\n>input is modified during the iteration. See the documentation for more complete\n>documentation.\n\n\n>New Features\n>============\n\n>``__array_ufunc__`` added\n>-------------------------\n>This is the renamed and redesigned ``__numpy_ufunc__``. Any class, ndarray\n>subclass or not, can define this method or set it to ``None`` in order to\n>override the behavior of NumPy&#39;s ufuncs. This works quite similarly to Python&#39;s\n>``__mul__`` and other binary operation routines. See the documentation for a\n>more detailed description of the implementation and behavior of this new\n>option. The API is provisional, we do not yet guarantee backward compatibility\n>as modifications may be made pending feedback. See the NEP_ and\n>documentation_ for more details.\n\n>.. _NEP: https://github.com/numpy/numpy/blob/master/doc/neps/ufunc-overrides.rst\n>.. _documentation: https://github.com/charris/numpy/blob/master/doc/source/reference/arrays.classes.rst\n\n>New ``positive`` ufunc\n>----------------------\n>This ufunc corresponds to unary `+`, but unlike `+` on an ndarray it will raise\n>an error if array values do not support numeric operations.\n\n>New ``divmod`` ufunc\n>--------------------\n>This ufunc corresponds to the Python builtin `divmod`, and is used to implement\n>`divmod` when called on numpy arrays. ``np.divmod(x, y)`` calculates a result\n>equivalent to ``(np.floor_divide(x, y), np.remainder(x, y))`` but is\n>approximately twice as fast as calling the functions separately.\n\n>``np.isnat`` ufunc tests for NaT special datetime and timedelta values\n>----------------------------------------------------------------------\n>The new ufunc ``np.isnat`` finds the positions of special NaT values\n>within datetime and timedelta arrays. This is analogous to ``np.isnan``.\n\n>``np.heaviside`` ufunc computes the Heaviside function\n>------------------------------------------------------\n>The new function ``np.heaviside(x, h0)`` (a ufunc) computes the Heaviside\n>function:\n\n>.. code::\n\n>                       { 0   if x &lt; 0,\n>    heaviside(x, h0) = { h0  if x == 0,\n>                       { 1   if x &gt; 0.\n\n>``np.block`` function for creating blocked arrays\n>-------------------------------------------------\n>Add a new ``block`` function to the current stacking functions ``vstack``,\n>``hstack``, and ``stack``. This allows concatenation across multiple axes\n>simultaneously, with a similar syntax to array creation, but where elements\n>can themselves be arrays. For instance::\n\n>    &gt;&gt;&gt; A = np.eye(2) * 2\n>    &gt;&gt;&gt; B = np.eye(3) * 3\n>    &gt;&gt;&gt; np.block([\n>    ...     [A,               np.zeros((2, 3))],\n>    ...     [np.ones((3, 2)), B               ]\n>    ... ])\n>    array([[ 2.,  0.,  0.,  0.,  0.],\n>           [ 0.,  2.,  0.,  0.,  0.],\n>           [ 1.,  1.,  3.,  0.,  0.],\n>           [ 1.,  1.,  0.,  3.,  0.],\n>           [ 1.,  1.,  0.,  0.,  3.]])\n\n>While primarily useful for block matrices, this works for arbitrary dimensions\n>of arrays.\n\n>It is similar to Matlab&#39;s square bracket notation for creating block matrices.\n\n>``isin`` function, improving on ``in1d``\n>----------------------------------------\n>The new function ``isin`` tests whether each element of an N-dimensonal\n>array is present anywhere within a second array. It is an enhancement\n>of ``in1d`` that preserves the shape of the first array.\n\n>Temporary elision\n>-----------------\n>On platforms providing the ``backtrace`` function NumPy will try to avoid\n>creating temporaries in expression involving basic numeric types.\n>For example ``d = a + b + c`` is transformed to ``d = a + b; d += c`` which can\n>improve performance for large arrays as less memory bandwidth is required to\n>perform the operation.\n\n>``axes`` argument for ``unique``\n>--------------------------------\n>In an N-dimensional array, the user can now choose the axis along which to look\n>for duplicate N-1-dimensional elements using ``numpy.unique``. The original\n>behaviour is recovered if ``axis=None`` (default).\n\n>``np.gradient`` now supports unevenly spaced data\n>-------------------------------------------------\n>Users can now specify a not-constant spacing for data.\n>In particular ``np.gradient`` can now take:\n\n>1. A single scalar to specify a sample distance for all dimensions.\n>2. N scalars to specify a constant sample distance for each dimension.\n>   i.e. ``dx``, ``dy``, ``dz``, ...\n>3. N arrays to specify the coordinates of the values along each dimension of F.\n>   The length of the array must match the size of the corresponding dimension\n>4. Any combination of N scalars/arrays with the meaning of 2. and 3.\n\n>This means that, e.g., it is now possible to do the following::\n\n>    &gt;&gt;&gt; f = np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float)\n>    &gt;&gt;&gt; dx = 2.\n>    &gt;&gt;&gt; y = [1., 1.5, 3.5]\n>    &gt;&gt;&gt; np.gradient(f, dx, y)\n>    [array([[ 1. ,  1. , -0.5], [ 1. ,  1. , -0.5]]),\n>     array([[ 2. ,  2. ,  2. ], [ 2. ,  1.7,  0.5]])]\n\n>Support for returning arrays of arbitrary dimensions in ``apply_along_axis``\n>----------------------------------------------------------------------------\n>Previously, only scalars or 1D arrays could be returned by the function passed\n>to ``apply_along_axis``. Now, it can return an array of any dimensionality\n>(including 0D), and the shape of this array replaces the axis of the array\n>being iterated over.\n\n>``.ndim`` property added to ``dtype`` to complement ``.shape``\n>--------------------------------------------------------------\n>For consistency with ``ndarray`` and ``broadcast``, ``d.ndim`` is a shorthand\n>for ``len(d.shape)``.\n\n>Support for tracemalloc in Python 3.6\n>-------------------------------------\n>NumPy now supports memory tracing with tracemalloc_ module of Python 3.6 or\n>newer. Memory allocations from NumPy are placed into the domain defined by\n>``numpy.lib.tracemalloc_domain``.\n>Note that NumPy allocation will not show up in tracemalloc_ of earlier Python\n>versions.\n\n>.. _tracemalloc: https://docs.python.org/3/library/tracemalloc.html\n\n>NumPy may be built with relaxed stride checking debugging\n>---------------------------------------------------------\n>Setting NPY_RELAXED_STRIDES_DEBUG=1 in the environment when relaxed stride\n>checking is enabled will cause NumPy to be compiled with the affected strides\n>set to the maximum value of npy_intp in order to help detect invalid usage of\n>the strides in downstream projects. When enabled, invalid usage often results\n>in an error being raised, but the exact type of error depends on the details of\n>the code. TypeError and OverflowError have been observed in the wild.\n\n>It was previously the case that this option was disabled for releases and\n>enabled in master and changing between the two required editing the code. It is\n>now disabled by default but can be enabled for test builds.\n\n\n>Improvements\n>============\n\n>Ufunc behavior for overlapping inputs\n>-------------------------------------\n\n>Operations where ufunc input and output operands have memory overlap\n>produced undefined results in previous NumPy versions, due to data\n>dependency issues. In NumPy 1.13.0, results from such operations are\n>now defined to be the same as for equivalent operations where there is\n>no memory overlap.\n\n>Operations affected now make temporary copies, as needed to eliminate\n>data dependency. As detecting these cases is computationally\n>expensive, a heuristic is used, which may in rare cases result to\n>needless temporary copies.  For operations where the data dependency\n>is simple enough for the heuristic to analyze, temporary copies will\n>not be made even if the arrays overlap, if it can be deduced copies\n>are not necessary.  As an example,``np.add(a, b, out=a)`` will not\n>involve copies.\n\n>To illustrate a previously undefined operation::\n\n>    &gt;&gt;&gt; x = np.arange(16).astype(float)\n>    &gt;&gt;&gt; np.add(x[1:], x[:-1], out=x[1:])\n\n>In NumPy 1.13.0 the last line is guaranteed to be equivalent to::\n\n>    &gt;&gt;&gt; np.add(x[1:].copy(), x[:-1].copy(), out=x[1:])\n\n>A similar operation with simple non-problematic data dependence is::\n\n>    &gt;&gt;&gt; x = np.arange(16).astype(float)\n>    &gt;&gt;&gt; np.add(x[1:], x[:-1], out=x[:-1])\n\n>It will continue to produce the same results as in previous NumPy\n>versions, and will not involve unnecessary temporary copies.\n\n>The change applies also to in-place binary operations, for example::\n\n>    &gt;&gt;&gt; x = np.random.rand(500, 500)\n>    &gt;&gt;&gt; x += x.T\n\n>This statement is now guaranteed to be equivalent to ``x[...] = x + x.T``,\n>whereas in previous NumPy versions the results were undefined.\n\n>Partial support for 64-bit f2py extensions with MinGW\n>-----------------------------------------------------\n>Extensions that incorporate Fortran libraries can now be built using the free\n>MinGW_ toolset, also under Python 3.5. This works best for extensions that only\n>do calculations and uses the runtime modestly (reading and writing from files,\n>for instance). Note that this does not remove the need for Mingwpy; if you make\n>extensive use of the runtime, you will most likely run into issues_. Instead,\n>it should be regarded as a band-aid until Mingwpy is fully functional.\n\n>Extensions can also be compiled using the MinGW toolset using the runtime\n>library from the (moveable) WinPython 3.4 distribution, which can be useful for\n>programs with a PySide1/Qt4 front-end.\n\n>.. _MinGW: https://sf.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.2.0/threads-win32/seh/\n\n>.. _issues: https://mingwpy.github.io/issues.html\n\n>Performance improvements for ``packbits`` and ``unpackbits``\n>------------------------------------------------------------\n>The functions ``numpy.packbits`` with boolean input and ``numpy.unpackbits`` have\n>been optimized to be a significantly faster for contiguous data.\n\n>Fix for PPC long double floating point information\n>--------------------------------------------------\n>In previous versions of NumPy, the ``finfo`` function returned invalid\n>information about the `double double`_ format of the ``longdouble`` float type\n>on Power PC (PPC).  The invalid values resulted from the failure of the NumPy\n>algorithm to deal with the variable number of digits in the significand\n>that are a feature of `PPC long doubles`.  This release by-passes the failing\n>algorithm by using heuristics to detect the presence of the PPC double double\n>format.  A side-effect of using these heuristics is that the ``finfo``\n>function is faster than previous releases.\n\n>.. _PPC long doubles: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/com.ibm.aix.genprogc/128bit_long_double_floating-point_datatype.htm\n\n>.. _double double: https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_formatDouble-double_arithmetic\n\n>Better default repr for ``ndarray`` subclasses\n>----------------------------------------------\n>Subclasses of ndarray with no ``repr`` specialization now correctly indent\n>their data and type lines.\n\n>More reliable comparisons of masked arrays\n>------------------------------------------\n>Comparisons of masked arrays were buggy for masked scalars and failed for\n>structured arrays with dimension higher than one. Both problems are now\n>solved. In the process, it was ensured that in getting the result for a\n>structured array, masked fields are properly ignored, i.e., the result is equal\n>if all fields that are non-masked in both are equal, thus making the behaviour\n>identical to what one gets by comparing an unstructured masked array and then\n>doing ``.all()`` over some axis.\n\n>np.matrix with booleans elements can now be created using the string syntax\n>---------------------------------------------------------------------------\n>``np.matrix`` failed whenever one attempts to use it with booleans, e.g.,\n>``np.matrix(&#39;True&#39;)``. Now, this works as expected.\n\n>More ``linalg`` operations now accept empty vectors and matrices\n>----------------------------------------------------------------\n>All of the following functions in ``np.linalg`` now work when given input\n>arrays with a 0 in the last two dimensions: ``det``, ``slogdet``, ``pinv``,\n>``eigvals``, ``eigvalsh``, ``eig``, ``eigh``.\n\n>Bundled version of LAPACK is now 3.2.2\n>--------------------------------------\n>NumPy comes bundled with a minimal implementation of lapack for systems without\n>a lapack library installed, under the name of ``lapack_lite``. This has been\n>upgraded from LAPACK 3.0.0 (June 30, 1999) to LAPACK 3.2.2 (June 30, 2010). See\n>the `LAPACK changelogs`_ for details on the all the changes this entails.\n\n>While no new features are exposed through ``numpy``, this fixes some bugs\n>regarding &quot;workspace&quot; sizes, and in some places may use faster algorithms.\n\n>.. _`LAPACK changelogs`: http://www.netlib.org/lapack/release_notes.html_4_history_of_lapack_releases\n\n>``reduce`` of ``np.hypot.reduce`` and ``np.logical_xor`` allowed in more cases\n>------------------------------------------------------------------------------\n>This now works on empty arrays, returning 0, and can reduce over multiple axes.\n>Previously, a ``ValueError`` was thrown in these cases.\n\n>Better ``repr`` of object arrays\n>--------------------------------\n>Object arrays that contain themselves no longer cause a recursion error.\n\n>Object arrays that contain ``list`` objects are now printed in a way that makes\n>clear the difference between a 2d object array, and a 1d object array of lists.\n\n>Changes\n>=======\n\n>``argsort`` on masked arrays takes the same default arguments as ``sort``\n>-------------------------------------------------------------------------\n>By default, ``argsort`` now places the masked values at the end of the sorted\n>array, in the same way that ``sort`` already did. Additionally, the\n>``end_with`` argument is added to ``argsort``, for consistency with ``sort``.\n>Note that this argument is not added at the end, so breaks any code that\n>passed ``fill_value`` as a positional argument.\n\n>``average`` now preserves subclasses\n>------------------------------------\n>For ndarray subclasses, ``numpy.average`` will now return an instance of the\n>subclass, matching the behavior of most other NumPy functions such as ``mean``.\n>As a consequence, also calls that returned a scalar may now return a subclass\n>array scalar.\n\n>``array == None`` and ``array != None`` do element-wise comparison\n>------------------------------------------------------------------\n>Previously these operations returned scalars ``False`` and ``True`` respectively.\n\n>``np.equal, np.not_equal`` for object arrays ignores object identity\n>--------------------------------------------------------------------\n>Previously, these functions always treated identical objects as equal. This had\n>the effect of overriding comparison failures, comparison of objects that did\n>not return booleans, such as np.arrays, and comparison of objects where the\n>results differed from object identity, such as NaNs.\n\n>Boolean indexing changes\n>------------------------\n>* Boolean array-likes (such as lists of python bools) are always treated as\n>  boolean indexes.\n\n>* Boolean scalars (including python ``True``) are legal boolean indexes and\n>  never treated as integers.\n\n>* Boolean indexes must match the dimension of the axis that they index.\n\n>* Boolean indexes used on the lhs of an assignment must match the dimensions of\n>  the rhs.\n\n>* Boolean indexing into scalar arrays return a new 1-d array.  This means that\n>  ``array(1)[array(True)]`` gives ``array([1])`` and not the original array.\n\n>``np.random.multivariate_normal`` behavior with bad covariance matrix\n>---------------------------------------------------------------------\n\n>It is now possible to adjust the behavior the function will have when dealing\n>with the covariance matrix by using two new keyword arguments:\n\n>* ``tol`` can be used to specify a tolerance to use when checking that\n>  the covariance matrix is positive semidefinite.\n\n>* ``check_valid`` can be used to configure what the function will do in the\n>  presence of a matrix that is not positive semidefinite. Valid options are\n>  ``ignore``, ``warn`` and ``raise``. The default value, ``warn`` keeps the\n>  the behavior used on previous releases.\n\n>``assert_array_less`` compares ``np.inf`` and ``-np.inf`` now\n>-------------------------------------------------------------\n>Previously, ``np.testing.assert_array_less`` ignored all infinite values. This\n>is not the expected behavior both according to documentation and intuitively.\n>Now, -inf &lt; x &lt; inf is considered ``True`` for any real number x and all\n>other cases fail.\n\n>``assert_array_`` and masked arrays ``assert_equal`` hide less warnings\n>-----------------------------------------------------------------------\n>Some warnings that were previously hidden by the ``assert_array_``\n>functions are not hidden anymore. In most cases the warnings should be\n>correct and, should they occur, will require changes to the tests using\n>these functions.\n>For the masked array ``assert_equal`` version, warnings may occur when\n>comparing NaT. The function presently does not handle NaT or NaN\n>specifically and it may be best to avoid it at this time should a warning\n>show up due to this change.\n\n>``offset`` attribute value in ``memmap`` objects\n>------------------------------------------------\n>The ``offset`` attribute in a ``memmap`` object is now set to the\n>offset into the file. This is a behaviour change only for offsets\n>greater than ``mmap.ALLOCATIONGRANULARITY``.\n\n>``np.real`` and ``np.imag`` return scalars for scalar inputs\n>------------------------------------------------------------\n>Previously, ``np.real`` and ``np.imag`` used to return array objects when\n>provided a scalar input, which was inconsistent with other functions like\n>``np.angle`` and ``np.conj``.\n\n>The polynomial convenience classes cannot be passed to ufuncs\n>-------------------------------------------------------------\n>The ABCPolyBase class, from which the convenience classes are derived, sets\n>``__array_ufun__ = None`` in order of opt out of ufuncs. If a polynomial\n>convenience class instance is passed as an argument to a ufunc, a ``TypeError``\n>will now be raised.\n\n>Output arguments to ufuncs can be tuples also for ufunc methods\n>---------------------------------------------------------------\n>For calls to ufuncs, it was already possible, and recommended, to use an\n>``out`` argument with a tuple for ufuncs with multiple outputs. This has now\n>been extended to output arguments in the ``reduce``, ``accumulate``, and\n>``reduceat`` methods. This is mostly for compatibility with ``__array_ufunc``;\n>there are no ufuncs yet that have more than one output.\n\n\n>==========================\n\n\n\n\n\n\n### pandas 0.20.1 -> 0.20.3\n\n>### 0.20.3\n\n>-----------------------\n\n>This is a minor bug-fix release in the 0.20.x series and includes some small regression fixes\n>and bug fixes. We recommend that all users upgrade to this version.\n\n>.. contents:: What&#39;s new in v0.20.3\n>    :local:\n>    :backlinks: none\n\n>.. _whatsnew_0203.bug_fixes:\n\n>Bug Fixes\n>~~~~~~~~~\n\n>- Fixed a bug in failing to compute rolling computations of a column-MultiIndexed ``DataFrame`` (:issue:`16789`, :issue:`16825`)\n>- Fixed a pytest marker failing downstream packages&#39; tests suites (:issue:`16680`)\n\n>Conversion\n>^^^^^^^^^^\n\n>- Bug in pickle compat prior to the v0.20.x series, when ``UTC`` is a timezone in a Series/DataFrame/Index (:issue:`16608`)\n>- Bug in ``Series`` construction when passing a ``Series`` with ``dtype=&#39;category&#39;`` (:issue:`16524`).\n>- Bug in :meth:`DataFrame.astype` when passing a ``Series`` as the ``dtype`` kwarg. (:issue:`16717`).\n\n>Indexing\n>^^^^^^^^\n\n>- Bug in ``Float64Index`` causing an empty array instead of ``None`` to be returned from ``.get(np.nan)`` on a Series whose index did not contain any ``NaN`` s (:issue:`8569`)\n>- Bug in ``MultiIndex.isin`` causing an error when passing an empty iterable (:issue:`16777`)\n>- Fixed a bug in a slicing DataFrame/Series that have a  ``TimedeltaIndex`` (:issue:`16637`)\n\n>I/O\n>^^^\n\n>- Bug in :func:`read_csv` in which files weren&#39;t opened as binary files by the C engine on Windows, causing EOF characters mid-field, which would fail (:issue:`16039`, :issue:`16559`, :issue:`16675`)\n>- Bug in :func:`read_hdf` in which reading a ``Series`` saved to an HDF file in &#39;fixed&#39; format fails when an explicit ``mode=&#39;r&#39;`` argument is supplied (:issue:`16583`)\n>- Bug in :meth:`DataFrame.to_latex` where ``bold_rows`` was wrongly specified to be ``True`` by default, whereas in reality row labels remained non-bold whatever parameter provided. (:issue:`16707`)\n>- Fixed an issue with :meth:`DataFrame.style` where generated element ids were not unique (:issue:`16780`)\n>- Fixed loading a ``DataFrame`` with a ``PeriodIndex``, from a ``format=&#39;fixed&#39;`` HDFStore, in Python 3, that was written in Python 2 (:issue:`16781`)\n\n>Plotting\n>^^^^^^^^\n\n>- Fixed regression that prevented RGB and RGBA tuples from being used as color arguments (:issue:`16233`)\n>- Fixed an issue with :meth:`DataFrame.plot.scatter` that incorrectly raised a ``KeyError`` when categorical data is used for plotting (:issue:`16199`)\n\n>Reshaping\n>^^^^^^^^^\n\n>- ``PeriodIndex`` / ``TimedeltaIndex.join`` was missing the ``sort=`` kwarg (:issue:`16541`) \n>- Bug in joining on a ``MultiIndex`` with a ``category`` dtype for a level (:issue:`16627`).\n>- Bug in :func:`merge` when merging/joining with multiple categorical columns (:issue:`16767`)\n\n>Categorical\n>^^^^^^^^^^^\n\n>- Bug in ``DataFrame.sort_values`` not respecting the ``kind`` parameter with categorical data (:issue:`16793`)\n\n\n>.. _whatsnew_0101:\n\n\n\n>### 0.20.2\n\n>----------------------\n\n>This is a minor bug-fix release in the 0.20.x series and includes some small regression fixes,\n>bug fixes and performance improvements.\n>We recommend that all users upgrade to this version.\n\n>.. contents:: What&#39;s new in v0.20.2\n>    :local:\n>    :backlinks: none\n\n\n>.. _whatsnew_0202.enhancements:\n\n>Enhancements\n>~~~~~~~~~~~~\n\n>- Unblocked access to additional compression types supported in pytables: &#39;blosc:blosclz, &#39;blosc:lz4&#39;, &#39;blosc:lz4hc&#39;, &#39;blosc:snappy&#39;, &#39;blosc:zlib&#39;, &#39;blosc:zstd&#39; (:issue:`14478`)\n>- ``Series`` provides a ``to_latex`` method (:issue:`16180`)\n\n>- A new groupby method :meth:`~pandas.core.groupby.GroupBy.ngroup`,\n>  parallel to the existing :meth:`~pandas.core.groupby.GroupBy.cumcount`,\n>  has been added to return the group order (:issue:`11642`); see\n>  :ref:`here &lt;groupby.ngroup&gt;`.\n\n>.. _whatsnew_0202.performance:\n\n>Performance Improvements\n>~~~~~~~~~~~~~~~~~~~~~~~~\n\n>- Performance regression fix when indexing with a list-like (:issue:`16285`)\n>- Performance regression fix for MultiIndexes (:issue:`16319`, :issue:`16346`)\n>- Improved performance of ``.clip()`` with scalar arguments (:issue:`15400`)\n>- Improved performance of groupby with categorical groupers (:issue:`16413`)\n>- Improved performance of ``MultiIndex.remove_unused_levels()`` (:issue:`16556`)\n\n>.. _whatsnew_0202.bug_fixes:\n\n>Bug Fixes\n>~~~~~~~~~\n\n>- Silenced a warning on some Windows environments about &quot;tput: terminal attributes: No such device or address&quot; when\n>  detecting the terminal size. This fix only applies to python 3 (:issue:`16496`)\n>- Bug in using ``pathlib.Path`` or ``py.path.local`` objects with io functions (:issue:`16291`)\n>- Bug in ``Index.symmetric_difference()`` on two equal MultiIndex&#39;s, results in a ``TypeError`` (:issue `13490`)\n>- Bug in ``DataFrame.update()`` with ``overwrite=False`` and ``NaN values`` (:issue:`15593`)\n>- Passing an invalid engine to :func:`read_csv` now raises an informative\n>  ``ValueError`` rather than ``UnboundLocalError``. (:issue:`16511`)\n>- Bug in :func:`unique` on an array of tuples (:issue:`16519`)\n>- Bug in :func:`cut` when ``labels`` are set, resulting in incorrect label ordering (:issue:`16459`)\n>- Fixed a compatibility issue with IPython 6.0&#39;s tab completion showing deprecation warnings on ``Categoricals`` (:issue:`16409`)\n\n>Conversion\n>^^^^^^^^^^\n\n>- Bug in :func:`to_numeric` in which empty data inputs were causing a segfault of the interpreter (:issue:`16302`)\n>- Silence numpy warnings when broadcasting ``DataFrame`` to ``Series`` with comparison ops (:issue:`16378`, :issue:`16306`)\n\n\n>Indexing\n>^^^^^^^^\n\n>- Bug in ``DataFrame.reset_index(level=)`` with single level index (:issue:`16263`)\n>- Bug in partial string indexing with a monotonic, but not strictly-monotonic, index incorrectly reversing the slice bounds (:issue:`16515`)\n>- Bug in ``MultiIndex.remove_unused_levels()`` that would not return a ``MultiIndex`` equal to the original. (:issue:`16556`)\n\n>I/O\n>^^^\n\n>- Bug in :func:`read_csv` when ``comment`` is passed in a space delimited text file (:issue:`16472`)\n>- Bug in :func:`read_csv` not raising an exception with nonexistent columns in ``usecols`` when it had the correct length (:issue:`14671`)\n>- Bug that would force importing of the clipboard routines unnecessarily, potentially causing an import error on startup (:issue:`16288`)\n>- Bug that raised ``IndexError`` when HTML-rendering an empty ``DataFrame`` (:issue:`15953`)\n>- Bug in :func:`read_csv` in which tarfile object inputs were raising an error in Python 2.x for the C engine (:issue:`16530`)\n>- Bug where ``DataFrame.to_html()`` ignored the ``index_names`` parameter (:issue:`16493`)\n>- Bug where ``pd.read_hdf()`` returns numpy strings for index names (:issue:`13492`)\n\n>- Bug in ``HDFStore.select_as_multiple()`` where start/stop arguments were not respected (:issue:`16209`)\n\n>Plotting\n>^^^^^^^^\n\n>- Bug in ``DataFrame.plot`` with a single column and a list-like ``color`` (:issue:`3486`)\n>- Bug in ``plot`` where ``NaT`` in ``DatetimeIndex`` results in ``Timestamp.min`` (:issue: `12405`)\n>- Bug in ``DataFrame.boxplot`` where ``figsize`` keyword was not respected for non-grouped boxplots (:issue:`11959`)\n\n\n\n\n>Groupby/Resample/Rolling\n>^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Bug in creating a time-based rolling window on an empty ``DataFrame`` (:issue:`15819`)\n>- Bug in ``rolling.cov()`` with offset window (:issue:`16058`)\n>- Bug in ``.resample()`` and ``.groupby()`` when aggregating on integers (:issue:`16361`)\n\n\n>Sparse\n>^^^^^^\n\n>- Bug in construction of ``SparseDataFrame`` from ``scipy.sparse.dok_matrix`` (:issue:`16179`)\n\n>Reshaping\n>^^^^^^^^^\n\n>- Bug in ``DataFrame.stack`` with unsorted levels in ``MultiIndex`` columns (:issue:`16323`)\n>- Bug in ``pd.wide_to_long()`` where no error was raised when ``i`` was not a unique identifier (:issue:`16382`)\n>- Bug in ``Series.isin(..)`` with a list of tuples (:issue:`16394`)\n>- Bug in construction of a ``DataFrame`` with mixed dtypes including an all-NaT column. (:issue:`16395`)\n>- Bug in ``DataFrame.agg()`` and ``Series.agg()`` with aggregating on non-callable attributes (:issue:`16405`)\n\n\n>Numeric\n>^^^^^^^\n>- Bug in ``.interpolate()``, where ``limit_direction`` was not respected when ``limit=None`` (default) was passed (:issue:`16282`)\n\n>Categorical\n>^^^^^^^^^^^\n\n>- Fixed comparison operations considering the order of the categories when both categoricals are unordered (:issue:`16014`)\n\n>Other\n>^^^^^\n\n>- Bug in ``DataFrame.drop()`` with an empty-list with non-unique indices (:issue:`16270`)\n\n\n>.. _whatsnew_0191:\n\n\n\n\n\n\n\n### psycopg2 2.7.1 -> 2.7.3.1\n\n>### 2.7.3.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Dropped libresolv from wheel package to avoid incompatibility with\n>  glibc 2.26 (wheels ticket 2)\n\n\n\n\n>### 2.7.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`.\n>  Regression introduced in Psycopg 2.7.2 (:ticket:`578`).\n\n\n\n\n>### 2.7.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed inconsistent state in externally closed connections\n>  (:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in\n>  2.7 by mistake.\n>- Fixed Python exceptions propagation in green callback (:ticket:`410`).\n>- Don&#39;t display the password in `connection.dsn` when the connection\n>  string is specified as an URI (:ticket:`528`).\n>- Return objects with timezone parsing &quot;infinity&quot; :sql:`timestamptz`\n>  (:ticket:`536`).\n>- Dropped dependency on VC9 runtime on Windows binary packages\n>  (:ticket:`541`).\n>- Fixed segfault in `~connection.lobject()` when *mode*\\=\\ `!None`\n>  (:ticket:`544`).\n>- Fixed `~connection.lobject()` keyword argument *lobject_factory*\n>  (:ticket:`545`).\n>- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`\n>  *keepalive_interval* argument (:ticket:`547`).\n>- Maybe fixed random import error on Python 3.6 in multiprocess\n>  environment (:ticket:`550`).\n>- Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`).\n>- Accept `~psycopg2.sql.Composable` objects in\n>  `~psycopg2.extras.ReplicationCursor.start_replication_expert()`\n>  (:ticket:`554`).\n>- Parse intervals returned as microseconds from Redshift (:ticket:`558`).\n>- Added `~psycopg2.extras.Json` `!prepare()` method to consider connection\n>  params when adapting (:ticket:`562`).\n>- `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1.\n\n\n\n\n\n\n\n\n### dedupe 1.6.13 -> 1.7.8\n\n>### 1.7.8\n\n>- Speed up blocking, on our way to 3-predicates\n\n\n\n>### 1.7.5\n\n>- Significantly reduced memory footprint during connected_components\n\n\n\n>### 1.7.3\n\n>- Significantly reduced memory footprint during scoreDuplicates\n\n\n\n>### 1.7.2\n\n>- Improper release\n\n\n\n>### 1.7.1\n\n>- TempShelve class that addresses various bugs related to cleaning up tempoary shelves\n\n\n\n>### 1.7.0\n\n>- Added `target` argument to blocker and predicates for changing the behavior\n>  of the predicates for the target and source dataset if we are linking.\n\n\n\n\n\n\n\n### fastcluster 1.1.23 -> 1.1.24\n\n>### 1.1.24\n\n\n> • R 3.5 corrects the formula for the “Canberra” metric. See\n>   https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17285.\n>   The formula in the fastcluster package was changed accordingly. This\n>   concerns only the R interface. SciPy and fastcluster&#39;s Python interface\n>   always had the correct formula.\n\n\n>﻿fastcluster: Fast hierarchical clustering routines for R and Python\n\n>Copyright © 2011 Daniel Müllner\n>&lt;http://danifold.net&gt;\n\n\n>Version history\n>‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\n\n\n\n\n\n\n### wheel 0.29.0 -> 0.30.0\n\n>### 0.30.0\n\n>======\n>- Added py-limited-api {cp32|cp33|cp34|...} flag to produce cpNN.abi3.{arch}\n>  tags on CPython 3.\n>- Documented the ``license_file`` metadata key\n>- Improved Python, abi tagging for `wheel convert`. Thanks Ales Erjavec.\n>- Fixed `&gt;` being prepended to lines starting with &quot;From&quot; in the long description\n>- Added support for specifying a build number (as per PEP 427).\n>  Thanks Ian Cordasco.\n>- Made the order of files in generated ZIP files deterministic.\n>  Thanks Matthias Bach.\n>- Made the order of requirements in metadata deterministic. Thanks Chris Lamb.\n>- Fixed `wheel install` clobbering existing files\n>- Improved the error message when trying to verify an unsigned wheel file\n>- Removed support for Python 2.6, 3.2 and 3.3.\n\n\n\n\n\n\n\n### flake8 3.3.0 -> 3.4.1\n\n>### 3.4.1\n\n>-------------------\n\n>You can view the `3.4.1 milestone`_ on GitLab for more details.\n\n>- Fix minor regression when users specify only a ``--select`` list with items\n>  in the enabled/extended select list.  (See also `GitLab354`_)\n\n>.. all links\n>.. _3.4.1 milestone:\n>    https://gitlab.com/pycqa/flake8/milestones/19\n\n>.. issue links\n>.. _GitLab354:\n>    https://gitlab.com/pycqa/flake8/issues/354\n\n>.. merge request links\n\n\n\n\n>### 3.4.0\n\n>-------------------\n\n>You can view the `3.4.0 milestone`_ on GitLab for more details.\n\n>- Refine logic around ``--select`` and ``--ignore`` when combined with the\n>  default values for each. (See also `GitLab318`_)\n\n>- Handle spaces as an alternate separate for error codes, e.g.,\n>  ``--ignore &#39;E123 E234&#39;``. (See also `GitLab329`_)\n\n>- Filter out empty select and ignore codes, e.g., ``--ignore E123,,E234``.\n>  (See also `GitLab330`_)\n\n>- Specify dependencies appropriately in ``setup.py`` (See also `Gitlab341_`)\n\n>- Fix bug in parsing ``--quiet`` and ``--verbose`` from config files.\n>  (See also `GitLab!193`_)\n\n>- Remove unused import of ``os`` in the git hook template (See also\n>  `GitLab!194`_)\n\n>.. all links\n>.. _3.4.0 milestone:\n>    https://gitlab.com/pycqa/flake8/milestones/18\n\n>.. issue links\n>.. _GitLab318:\n>    https://gitlab.com/pycqa/flake8/issues/318\n>.. _GitLab329:\n>    https://gitlab.com/pycqa/flake8/issues/329\n>.. _GitLab330:\n>    https://gitlab.com/pycqa/flake8/issues/330\n>.. _GitLab341:\n>    https://gitlab.com/pycqa/flake8/issues/341\n\n>.. merge request links\n>.. _GitLab!193:\n>    https://gitlab.com/pycqa/flake8/merge_requests/193\n>.. _GitLab!194:\n>    https://gitlab.com/pycqa/flake8/merge_requests/194\n\n\n\n\n\n\n\n\n### tox 2.7.0 -> 2.8.2\n\n>### 2.8.1\n\n>==================\n\n>- :pull:`599`: fix problems with implementation of :issue:`515`.\n>  Substitutions from other sections were not made anymore if they were not in `envlist`.\n>  Thanks to Clark Boylan (:user:`cboylan`) for helping to get this fixed (:pull:`597`).\n\n\n\n>### 2.8.0\n\n>===================\n\n>- :issue:`276`: Remove easy_install from docs (TL;DR: use pip). Thanks Martin Andrysík (:user:`sifuraz`).\n\n>- :issue:`301`: Expand nested substitutions in ``tox.ini``. Thanks :user:`vlaci`. Thanks to Eli Collins\n>  (:user:`eli-collins`) for creating a reproducer.\n\n>- :issue:`315`: add ``--help`` and ``--version`` to helptox-quickstart. Thanks :user:`vlaci`.\n\n>- :issue:`326`: Fix ``OSError`` &#39;Not a directory&#39; when creating env on Jython 2.7.0. Thanks Nick Douma (:user:`LordGaav`).\n\n>- :issue:`429`: Forward ``MSYSTEM`` by default on Windows. Thanks Marius Gedminas (:user:`mgedmin`) for reporting this.\n\n>- :issue:`449`: add multi platform example to the docs. Thanks Aleks Bunin (:user:`sashkab`) and :user:`rndr`.\n\n>- :issue:`474`: Start using setuptools_scm for tag based versioning.\n\n>- :issue:`484`: Renamed `py.test` to `pytest` throughout the project. Thanks Slam (:user:`3lnc`).\n\n>- :issue:`504`: With `-a`: do not show additional environments header if there are none. Thanks :user:`rndr`.\n\n>- :issue:`515`: Don&#39;t require environment variables in test environments where they are not used.\n>  Thanks André Caron (:user:`AndreLouisCaron`).\n>- :issue:`517`: Forward ``NUMBER_OF_PROCESSORS`` by default on Windows to fix ``multiprocessor.cpu_count()``.\n>  Thanks André Caron (:user:`AndreLouisCaron`).\n\n>- :issue:`518`: Forward `USERPROFILE` by default on Windows. Thanks André Caron (:user:`AndreLouisCaron`).\n\n>- :pull:`528`: Fix some of the warnings displayed by pytest 3.1.0. Thanks Bruno Oliveira (:user:`nicoddemus`).\n\n>- :pull:`547`: Add regression test for :issue:`137`. Thanks Martin Andrysík (:user:`sifuraz`).\n\n>- :pull:`553`: Add an XFAIL test to reproduce upstream bug :issue:`203`. Thanks\n>  Bartolomé Sánchez Salado (:user:`bartsanchez`).\n\n>- :pull:`556`: Report more meaningful errors on why virtualenv creation failed. Thanks :user:`vlaci`.\n>  Also thanks to Igor Sadchenko (:user:`igor-sadchenko`) for pointing out a problem with that PR\n>  before it hit the masses ☺\n\n>- :pull:`575`: Add announcement doc to end all announcement docs\n>  (using only ``CHANGELOG`` and Github issues since 2.5 already).\n\n>- :pull:`580`: Do not ignore Sphinx warnings anymore. Thanks Bernát Gábor (:user:`gaborbernat`).\n\n>- :pull:`585`: Expand documentation to explain pass through of flags from deps to pip\n>  (e.g. ``-rrequirements.txt``, ``-cconstraints.txt``). Thanks Alexander Loechel (:user:`loechel`).\n\n>- :pull:`588`: Run pytest wit xfail_strict and adapt affected tests.\n\n\n\n\n\n\n\n### Sphinx 1.6.1 -> 1.6.3\n\n>### 1.6.3\n\n>=====================================\n\n>Features added\n>--------------\n\n>* latex: hint that code-block continues on next page (refs: 3764, 3792)\n\n>Bugs fixed\n>----------\n\n>* 3821: Failed to import sphinx.util.compat with docutils-0.14rc1\n>* 3829: sphinx-quickstart template is incomplete regarding use of alabaster\n>* 3772: &#39;str object&#39; has no attribute &#39;filename&#39;\n>* Emit wrong warnings if citation label includes hyphens (refs: 3565)\n>* 3858: Some warnings are not colored when using --color option\n>* 3775: Remove unwanted whitespace in default template\n>* 3835: sphinx.ext.imgmath fails to convert SVG images if project directory\n>  name contains spaces\n>* 3850: Fix color handling in make mode&#39;s help command\n>* 3865: use of self.env.warn in sphinx extension fails\n>* 3824: production lists apply smart quotes transform since Sphinx 1.6.1\n>* latex: fix ``\\sphinxbfcode`` swallows initial space of argument\n>* 3878: Quotes in auto-documented class attributes should be straight quotes\n>  in PDF output\n>* 3881: LaTeX figure floated to next page sometimes leaves extra vertical\n>  whitespace\n>* 3885: duplicated footnotes raises IndexError\n>* 3873: Failure of deprecation warning mechanism of\n>  ``sphinx.util.compat.Directive``\n>* 3874: Bogus warnings for &quot;citation not referenced&quot; for cross-file citations\n>* 3860: Don&#39;t download images when builders not supported images\n>* 3860: Remote image URIs without filename break builders not supported remote\n>  images\n>* 3833: command line messages are translated unintentionally with ``language``\n>  setting.\n>* 3840: make checking ``epub_uid`` strict\n>* 3851, 3706: Fix about box drawing characters for PDF output\n>* 3900: autosummary could not find methods\n>* 3902: Emit error if ``latex_documents`` contains non-unicode string in py2\n\n\n\n>### 1.6.2\n\n>=====================================\n\n>Incompatible changes\n>--------------------\n\n>* 3789: Do not require typing module for python&gt;=3.5\n\n>Bugs fixed\n>----------\n\n>* 3754: HTML builder crashes if HTML theme appends own stylesheets\n>* 3756: epub: Entity &#39;mdash&#39; not defined\n>* 3758: Sphinx crashed if logs are emitted in conf.py\n>* 3755: incorrectly warns about dedent with literalinclude\n>* 3742: `RTD &lt;https://readthedocs.org/&gt;`_ PDF builds of Sphinx own docs are\n>  missing an index entry in the bookmarks and table of contents. This is\n>  `rtfd/readthedocs.org2857\n>  &lt;https://github.com/rtfd/readthedocs.org/issues/2857&gt;`_ issue, a workaround\n>  is obtained using some extra LaTeX code in Sphinx&#39;s own :file:`conf.py`\n>* 3770: Build fails when a &quot;code-block&quot; has the option emphasize-lines and the\n>  number indicated is higher than the number of lines\n>* 3774: Incremental HTML building broken when using citations\n>* 3763: got epubcheck validations error if epub_cover is set\n>* 3779: &#39;ImportError&#39; in sphinx.ext.autodoc due to broken &#39;sys.meta_path&#39;.\n>  Thanks to Tatiana Tereshchenko.\n>* 3796: env.resolve_references() crashes when non-document node given\n>* 3803: Sphinx crashes with invalid PO files\n>* 3791: PDF &quot;continued on next page&quot; for long tables isn&#39;t internationalized\n>* 3788: smartquotes emits warnings for unsupported languages\n>* 3807: latex Makefile for ``make latexpdf`` is only for unixen\n>* 3781: double hyphens in option directive are compiled as endashes\n>* 3817: latex builder raises AttributeError\n\n\n\n\n\n\n\n### cryptography 1.8.1 -> 2.0.3\n\n>### 2.0.2\n\n>~~~~~~~~~~~~~~~~~~\n\n>* Marked all symbols as hidden in the ``manylinux1`` wheel to avoid a\n>  bug with symbol resolution in certain scenarios.\n\n\n>.. _v2-0-1:\n\n\n\n>### 2.0.1\n\n>~~~~~~~~~~~~~~~~~~\n\n>* Fixed a compilation bug affecting OpenBSD.\n>* Altered the ``manylinux1`` wheels to statically link OpenSSL instead of\n>  dynamically linking and bundling the shared object. This should resolve\n>  crashes seen when using ``uwsgi`` or other binaries that link against\n>  OpenSSL independently.\n>* Fixed the stack level for the ``signer`` and ``verifier`` warnings.\n\n\n>.. _v2-0:\n\n\n\n>### 2.0\n\n>~~~~~~~~~~~~~~~~\n\n>* **BACKWARDS INCOMPATIBLE:** Support for Python 3.3 has been dropped.\n>* We now ship ``manylinux1`` wheels linked against OpenSSL 1.1.0f. These wheels\n>  will be automatically used with most Linux distributions if you are running\n>  the latest pip.\n>* Deprecated the use of ``signer`` on\n>  :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`,\n>  :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`,\n>  and\n>  :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`\n>  in favor of ``sign``.\n>* Deprecated the use of ``verifier`` on\n>  :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`,\n>  :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`,\n>  and\n>  :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`\n>  in favor of ``verify``.\n>* Added support for parsing\n>  :class:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp`\n>  objects from X.509 certificate extensions.\n>* Added support for\n>  :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305`.\n>* Added support for\n>  :class:`~cryptography.hazmat.primitives.ciphers.aead.AESCCM`.\n>* Added\n>  :class:`~cryptography.hazmat.primitives.ciphers.aead.AESGCM`, a &quot;one shot&quot;\n>  API for AES GCM encryption.\n>* Added support for :doc:`/hazmat/primitives/asymmetric/x25519`.\n>* Added support for serializing and deserializing Diffie-Hellman parameters\n>  with\n>  :func:`~cryptography.hazmat.primitives.serialization.load_pem_parameters`,\n>  :func:`~cryptography.hazmat.primitives.serialization.load_der_parameters`,\n>  and\n>  :meth:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters.parameter_bytes`\n>  .\n>* The ``extensions`` attribute on :class:`~cryptography.x509.Certificate`,\n>  :class:`~cryptography.x509.CertificateSigningRequest`,\n>  :class:`~cryptography.x509.CertificateRevocationList`, and\n>  :class:`~cryptography.x509.RevokedCertificate` now caches the computed\n>  ``Extensions`` object. There should be no performance change, just a\n>  performance improvement for programs accessing the ``extensions`` attribute\n>  multiple times.\n\n\n>.. _v1-9:\n\n\n\n>### 1.9\n\n>~~~~~~~~~~~~~~~~\n\n>* **BACKWARDS INCOMPATIBLE:** Elliptic Curve signature verification no longer\n>  returns ``True`` on success. This brings it in line with the interface&#39;s\n>  documentation, and our intent. The correct way to use\n>  :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.verify`\n>  has always been to check whether or not\n>  :class:`~cryptography.exceptions.InvalidSignature` was raised.\n>* **BACKWARDS INCOMPATIBLE:** Dropped support for macOS 10.7 and 10.8.\n>* **BACKWARDS INCOMPATIBLE:** The minimum supported PyPy version is now 5.3.\n>* Python 3.3 support has been deprecated, and will be removed in the next\n>  ``cryptography`` release.\n>* Add support for providing ``tag`` during\n>  :class:`~cryptography.hazmat.primitives.ciphers.modes.GCM` finalization via\n>  :meth:`~cryptography.hazmat.primitives.ciphers.AEADDecryptionContext.finalize_with_tag`.\n>* Fixed an issue preventing ``cryptography`` from compiling against\n>  LibreSSL 2.5.x.\n>* Added\n>  :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.key_size`\n>  and\n>  :meth:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey.key_size`\n>  as convenience methods for determining the bit size of a secret scalar for\n>  the curve.\n>* Accessing an unrecognized extension marked critical on an X.509 object will\n>  no longer raise an ``UnsupportedExtension`` exception, instead an\n>  :class:`~cryptography.x509.UnrecognizedExtension` object will be returned.\n>  This behavior was based on a poor reading of the RFC, unknown critical\n>  extensions only need to be rejected on certificate verification.\n>* The CommonCrypto backend has been removed.\n>* MultiBackend has been removed.\n>* ``Whirlpool`` and ``RIPEMD160`` have been deprecated.\n\n\n>.. _v1-8-2:\n\n\n\n>### 1.8.2\n\n>~~~~~~~~~~~~~~~~~~\n\n>* Fixed a compilation bug affecting OpenSSL 1.1.0f.\n>* Updated Windows and macOS wheels to be compiled against OpenSSL 1.1.0f.\n\n\n>.. _v1-8-1:\n\n\n\n\n\n\n\n### pytest 3.0.7 -> 3.2.2\n\n>### 3.2.2\n\n>=========================\n\n>Bug Fixes\n>---------\n\n>- Calling the deprecated `request.getfuncargvalue()` now shows the source of\n>  the call. (`2681 &lt;https://github.com/pytest-dev/pytest/issues/2681&gt;`_)\n\n>- Allow tests declared as ``staticmethod`` to use fixtures. (`2699\n>  &lt;https://github.com/pytest-dev/pytest/issues/2699&gt;`_)\n\n>- Fixed edge-case during collection: attributes which raised ``pytest.fail``\n>  when accessed would abort the entire collection. (`2707\n>  &lt;https://github.com/pytest-dev/pytest/issues/2707&gt;`_)\n\n>- Fix ``ReprFuncArgs`` with mixed unicode and UTF-8 args. (`2731\n>  &lt;https://github.com/pytest-dev/pytest/issues/2731&gt;`_)\n\n\n>Improved Documentation\n>----------------------\n\n>- In examples on working with custom markers, add examples demonstrating the\n>  usage of ``pytest.mark.MARKER_NAME.with_args`` in comparison with\n>  ``pytest.mark.MARKER_NAME.__call__`` (`2604\n>  &lt;https://github.com/pytest-dev/pytest/issues/2604&gt;`_)\n\n>- In one of the simple examples, use `pytest_collection_modifyitems()` to skip\n>  tests based on a command-line option, allowing its sharing while preventing a\n>  user error when acessing `pytest.config` before the argument parsing. (`2653\n>  &lt;https://github.com/pytest-dev/pytest/issues/2653&gt;`_)\n\n\n>Trivial/Internal Changes\n>------------------------\n\n>- Fixed minor error in &#39;Good Practices/Manual Integration&#39; code snippet.\n>  (`2691 &lt;https://github.com/pytest-dev/pytest/issues/2691&gt;`_)\n\n>- Fixed typo in goodpractices.rst. (`2721\n>  &lt;https://github.com/pytest-dev/pytest/issues/2721&gt;`_)\n\n>- Improve user guidance regarding ``--resultlog`` deprecation. (`2739\n>  &lt;https://github.com/pytest-dev/pytest/issues/2739&gt;`_)\n\n\n\n\n>### 3.2.1\n\n>=========================\n\n>Bug Fixes\n>---------\n\n>- Fixed small terminal glitch when collecting a single test item. (`2579\n>  &lt;https://github.com/pytest-dev/pytest/issues/2579&gt;`_)\n\n>- Correctly consider ``/`` as the file separator to automatically mark plugin\n>  files for rewrite on Windows. (`2591 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2591&gt;`_)\n\n>- Properly escape test names when setting ``PYTEST_CURRENT_TEST`` environment\n>  variable. (`2644 &lt;https://github.com/pytest-dev/pytest/issues/2644&gt;`_)\n\n>- Fix error on Windows and Python 3.6+ when ``sys.stdout`` has been replaced\n>  with a stream-like object which does not implement the full ``io`` module\n>  buffer protocol. In particular this affects ``pytest-xdist`` users on the\n>  aforementioned platform. (`2666 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2666&gt;`_)\n\n\n>Improved Documentation\n>----------------------\n\n>- Explicitly document which pytest features work with ``unittest``. (`2626\n>  &lt;https://github.com/pytest-dev/pytest/issues/2626&gt;`_)\n\n\n\n\n>### 3.2.0\n\n>=========================\n\n>Deprecations and Removals\n>-------------------------\n\n>- ``pytest.approx`` no longer supports ``&gt;``, ``&gt;=``, ``&lt;`` and ``&lt;=``\n>  operators to avoid surprising/inconsistent behavior. See `the docs\n>  &lt;https://docs.pytest.org/en/latest/builtin.htmlpytest.approx&gt;`_ for more\n>  information. (`2003 &lt;https://github.com/pytest-dev/pytest/issues/2003&gt;`_)\n\n>- All old-style specific behavior in current classes in the pytest&#39;s API is\n>  considered deprecated at this point and will be removed in a future release.\n>  This affects Python 2 users only and in rare situations. (`2147\n>  &lt;https://github.com/pytest-dev/pytest/issues/2147&gt;`_)\n\n>- A deprecation warning is now raised when using marks for parameters\n>  in ``pytest.mark.parametrize``. Use ``pytest.param`` to apply marks to\n>  parameters instead. (`2427 &lt;https://github.com/pytest-dev/pytest/issues/2427&gt;`_)\n\n\n>Features\n>--------\n\n>- Add support for numpy arrays (and dicts) to approx. (`1994\n>  &lt;https://github.com/pytest-dev/pytest/issues/1994&gt;`_)\n\n>- Now test function objects have a ``pytestmark`` attribute containing a list\n>  of marks applied directly to the test function, as opposed to marks inherited\n>  from parent classes or modules. (`2516 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2516&gt;`_)\n\n>- Collection ignores local virtualenvs by default; `--collect-in-virtualenv`\n>  overrides this behavior. (`2518 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2518&gt;`_)\n\n>- Allow class methods decorated as ``staticmethod`` to be candidates for\n>  collection as a test function. (Only for Python 2.7 and above. Python 2.6\n>  will still ignore static methods.) (`2528 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2528&gt;`_)\n\n>- Introduce ``mark.with_args`` in order to allow passing functions/classes as\n>  sole argument to marks. (`2540 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2540&gt;`_)\n\n>- New ``cache_dir`` ini option: sets the directory where the contents of the\n>  cache plugin are stored. Directory may be relative or absolute path: if relative path, then\n>  directory is created relative to ``rootdir``, otherwise it is used as is.\n>  Additionally path may contain environment variables which are expanded during\n>  runtime. (`2543 &lt;https://github.com/pytest-dev/pytest/issues/2543&gt;`_)\n\n>- Introduce the ``PYTEST_CURRENT_TEST`` environment variable that is set with\n>  the ``nodeid`` and stage (``setup``, ``call`` and ``teardown``) of the test\n>  being currently executed. See the `documentation\n>  &lt;https://docs.pytest.org/en/latest/example/simple.htmlpytest-current-test-\n>  environment-variable&gt;`_ for more info. (`2583 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2583&gt;`_)\n\n>- Introduced ``pytest.mark.filterwarnings`` mark which allows overwriting the\n>  warnings filter on a per test, class or module level. See the `docs\n>  &lt;https://docs.pytest.org/en/latest/warnings.htmlpytest-mark-\n>  filterwarnings&gt;`_ for more information. (`2598 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2598&gt;`_)\n\n>- ``--last-failed`` now remembers forever when a test has failed and only\n>  forgets it if it passes again. This makes it easy to fix a test suite by\n>  selectively running files and fixing tests incrementally. (`2621\n>  &lt;https://github.com/pytest-dev/pytest/issues/2621&gt;`_)\n\n>- New ``pytest_report_collectionfinish`` hook which allows plugins to add\n>  messages to the terminal reporting after collection has been finished\n>  successfully. (`2622 &lt;https://github.com/pytest-dev/pytest/issues/2622&gt;`_)\n\n>- Added support for `PEP-415&#39;s &lt;https://www.python.org/dev/peps/pep-0415/&gt;`_\n>  ``Exception.__suppress_context__``. Now if a ``raise exception from None`` is\n>  caught by pytest, pytest will no longer chain the context in the test report.\n>  The behavior now matches Python&#39;s traceback behavior. (`2631\n>  &lt;https://github.com/pytest-dev/pytest/issues/2631&gt;`_)\n\n>- Exceptions raised by ``pytest.fail``, ``pytest.skip`` and ``pytest.xfail``\n>  now subclass BaseException, making them harder to be caught unintentionally\n>  by normal code. (`580 &lt;https://github.com/pytest-dev/pytest/issues/580&gt;`_)\n\n\n>Bug Fixes\n>---------\n\n>- Set ``stdin`` to a closed ``PIPE`` in ``pytester.py.Testdir.popen()`` for\n>  avoid unwanted interactive ``pdb`` (`2023 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2023&gt;`_)\n\n>- Add missing ``encoding`` attribute to ``sys.std*`` streams when using\n>  ``capsys`` capture mode. (`2375 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2375&gt;`_)\n\n>- Fix terminal color changing to black on Windows if ``colorama`` is imported\n>  in a ``conftest.py`` file. (`2510 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2510&gt;`_)\n\n>- Fix line number when reporting summary of skipped tests. (`2548\n>  &lt;https://github.com/pytest-dev/pytest/issues/2548&gt;`_)\n\n>- capture: ensure that EncodedFile.name is a string. (`2555\n>  &lt;https://github.com/pytest-dev/pytest/issues/2555&gt;`_)\n\n>- The options ``--fixtures`` and ``--fixtures-per-test`` will now keep\n>  indentation within docstrings. (`2574 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2574&gt;`_)\n\n>- doctests line numbers are now reported correctly, fixing `pytest-sugar122\n>  &lt;https://github.com/Frozenball/pytest-sugar/issues/122&gt;`_. (`2610\n>  &lt;https://github.com/pytest-dev/pytest/issues/2610&gt;`_)\n\n>- Fix non-determinism in order of fixture collection. Adds new dependency\n>  (ordereddict) for Python 2.6. (`920 &lt;https://github.com/pytest-\n>  dev/pytest/issues/920&gt;`_)\n\n\n>Improved Documentation\n>----------------------\n\n>- Clarify ``pytest_configure`` hook call order. (`2539\n>  &lt;https://github.com/pytest-dev/pytest/issues/2539&gt;`_)\n\n>- Extend documentation for testing plugin code with the ``pytester`` plugin.\n>  (`971 &lt;https://github.com/pytest-dev/pytest/issues/971&gt;`_)\n\n\n>Trivial/Internal Changes\n>------------------------\n\n>- Update help message for ``--strict`` to make it clear it only deals with\n>  unregistered markers, not warnings. (`2444 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2444&gt;`_)\n\n>- Internal code move: move code for pytest.approx/pytest.raises to own files in\n>  order to cut down the size of python.py (`2489 &lt;https://github.com/pytest-\n>  dev/pytest/issues/2489&gt;`_)\n\n>- Renamed the utility function ``_pytest.compat._escape_strings`` to\n>  ``_ascii_escaped`` to better communicate the function&#39;s purpose. (`2533\n>  &lt;https://github.com/pytest-dev/pytest/issues/2533&gt;`_)\n\n>- Improve error message for CollectError with skip/skipif. (`2546\n>  &lt;https://github.com/pytest-dev/pytest/issues/2546&gt;`_)\n\n>- Emit warning about ``yield`` tests being deprecated only once per generator.\n>  (`2562 &lt;https://github.com/pytest-dev/pytest/issues/2562&gt;`_)\n\n>- Ensure final collecte","created_at":"2017-09-18T13:31:36Z","updated_at":"2017-09-25T13:32:36Z","closed_at":"2017-09-25T13:32:36Z","merged_at":null,"merge_commit_sha":"fd3dd01a1f1486b8857bab52036e5adafc8c7c9c","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/dssg/pgdedupe/pulls/60/commits","review_comments_url":"https://api.github.com/repos/dssg/pgdedupe/pulls/60/comments","review_comment_url":"https://api.github.com/repos/dssg/pgdedupe/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dssg/pgdedupe/issues/60/comments","statuses_url":"https://api.github.com/repos/dssg/pgdedupe/statuses/96a1d5b6c871edd6d81c5584e46b44149d902f97","head":{"label":"dssg:pyup-scheduled-update-09-18-2017","ref":"pyup-scheduled-update-09-18-2017","sha":"96a1d5b6c871edd6d81c5584e46b44149d902f97","user":{"login":"dssg","id":3827384,"avatar_url":"https://avatars1.githubusercontent.com/u/3827384?v=4","gravatar_id":"","url":"https://api.github.com/users/dssg","html_url":"https://github.com/dssg","followers_url":"https://api.github.com/users/dssg/followers","following_url":"https://api.github.com/users/dssg/following{/other_user}","gists_url":"https://api.github.com/users/dssg/gists{/gist_id}","starred_url":"https://api.github.com/users/dssg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dssg/subscriptions","organizations_url":"https://api.github.com/users/dssg/orgs","repos_url":"https://api.github.com/users/dssg/repos","events_url":"https://api.github.com/users/dssg/events{/privacy}","received_events_url":"https://api.github.com/users/dssg/received_events","type":"Organization","site_admin":false},"repo":{"id":73857612,"name":"pgdedupe","full_name":"dssg/pgdedupe","owner":{"login":"dssg","id":3827384,"avatar_url":"https://avatars1.githubusercontent.com/u/3827384?v=4","gravatar_id":"","url":"https://api.github.com/users/dssg","html_url":"https://github.com/dssg","followers_url":"https://api.github.com/users/dssg/followers","following_url":"https://api.github.com/users/dssg/following{/other_user}","gists_url":"https://api.github.com/users/dssg/gists{/gist_id}","starred_url":"https://api.github.com/users/dssg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dssg/subscriptions","organizations_url":"https://api.github.com/users/dssg/orgs","repos_url":"https://api.github.com/users/dssg/repos","events_url":"https://api.github.com/users/dssg/events{/privacy}","received_events_url":"https://api.github.com/users/dssg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dssg/pgdedupe","description":"A simple command line interface to the datamade/dedupe library.","fork":false,"url":"https://api.github.com/repos/dssg/pgdedupe","forks_url":"https://api.github.com/repos/dssg/pgdedupe/forks","keys_url":"https://api.github.com/repos/dssg/pgdedupe/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dssg/pgdedupe/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dssg/pgdedupe/teams","hooks_url":"https://api.github.com/repos/dssg/pgdedupe/hooks","issue_events_url":"https://api.github.com/repos/dssg/pgdedupe/issues/events{/number}","events_url":"https://api.github.com/repos/dssg/pgdedupe/events","assignees_url":"https://api.github.com/repos/dssg/pgdedupe/assignees{/user}","branches_url":"https://api.github.com/repos/dssg/pgdedupe/branches{/branch}","tags_url":"https://api.github.com/repos/dssg/pgdedupe/tags","blobs_url":"https://api.github.com/repos/dssg/pgdedupe/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dssg/pgdedupe/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dssg/pgdedupe/git/refs{/sha}","trees_url":"https://api.github.com/repos/dssg/pgdedupe/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dssg/pgdedupe/statuses/{sha}","languages_url":"https://api.github.com/repos/dssg/pgdedupe/languages","stargazers_url":"https://api.github.com/repos/dssg/pgdedupe/stargazers","contributors_url":"https://api.github.com/repos/dssg/pgdedupe/contributors","subscribers_url":"https://api.github.com/repos/dssg/pgdedupe/subscribers","subscription_url":"https://api.github.com/repos/dssg/pgdedupe/subscription","commits_url":"https://api.github.com/repos/dssg/pgdedupe/commits{/sha}","git_commits_url":"https://api.github.com/repos/dssg/pgdedupe/git/commits{/sha}","comments_url":"https://api.github.com/repos/dssg/pgdedupe/comments{/number}","issue_comment_url":"https://api.github.com/repos/dssg/pgdedupe/issues/comments{/number}","contents_url":"https://api.github.com/repos/dssg/pgdedupe/contents/{+path}","compare_url":"https://api.github.com/repos/dssg/pgdedupe/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dssg/pgdedupe/merges","archive_url":"https://api.github.com/repos/dssg/pgdedupe/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dssg/pgdedupe/downloads","issues_url":"https://api.github.com/repos/dssg/pgdedupe/issues{/number}","pulls_url":"https://api.github.com/repos/dssg/pgdedupe/pulls{/number}","milestones_url":"https://api.github.com/repos/dssg/pgdedupe/milestones{/number}","notifications_url":"https://api.github.com/repos/dssg/pgdedupe/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dssg/pgdedupe/labels{/name}","releases_url":"https://api.github.com/repos/dssg/pgdedupe/releases{/id}","deployments_url":"https://api.github.com/repos/dssg/pgdedupe/deployments","created_at":"2016-11-15T21:39:47Z","updated_at":"2017-07-31T23:51:10Z","pushed_at":"2017-09-25T13:32:32Z","git_url":"git://github.com/dssg/pgdedupe.git","ssh_url":"git@github.com:dssg/pgdedupe.git","clone_url":"https://github.com/dssg/pgdedupe.git","svn_url":"https://github.com/dssg/pgdedupe","homepage":"https://pgdedupe.readthedocs.io","size":215,"stargazers_count":14,"watchers_count":14,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":8,"forks":3,"open_issues":8,"watchers":14,"default_branch":"master"}},"base":{"label":"dssg:master","ref":"master","sha":"69cc4a9674c80119a5e8aaf09ed5791bbcf63527","user":{"login":"dssg","id":3827384,"avatar_url":"https://avatars1.githubusercontent.com/u/3827384?v=4","gravatar_id":"","url":"https://api.github.com/users/dssg","html_url":"https://github.com/dssg","followers_url":"https://api.github.com/users/dssg/followers","following_url":"https://api.github.com/users/dssg/following{/other_user}","gists_url":"https://api.github.com/users/dssg/gists{/gist_id}","starred_url":"https://api.github.com/users/dssg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dssg/subscriptions","organizations_url":"https://api.github.com/users/dssg/orgs","repos_url":"https://api.github.com/users/dssg/repos","events_url":"https://api.github.com/users/dssg/events{/privacy}","received_events_url":"https://api.github.com/users/dssg/received_events","type":"Organization","site_admin":false},"repo":{"id":73857612,"name":"pgdedupe","full_name":"dssg/pgdedupe","owner":{"login":"dssg","id":3827384,"avatar_url":"https://avatars1.githubusercontent.com/u/3827384?v=4","gravatar_id":"","url":"https://api.github.com/users/dssg","html_url":"https://github.com/dssg","followers_url":"https://api.github.com/users/dssg/followers","following_url":"https://api.github.com/users/dssg/following{/other_user}","gists_url":"https://api.github.com/users/dssg/gists{/gist_id}","starred_url":"https://api.github.com/users/dssg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dssg/subscriptions","organizations_url":"https://api.github.com/users/dssg/orgs","repos_url":"https://api.github.com/users/dssg/repos","events_url":"https://api.github.com/users/dssg/events{/privacy}","received_events_url":"https://api.github.com/users/dssg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dssg/pgdedupe","description":"A simple command line interface to the datamade/dedupe library.","fork":false,"url":"https://api.github.com/repos/dssg/pgdedupe","forks_url":"https://api.github.com/repos/dssg/pgdedupe/forks","keys_url":"https://api.github.com/repos/dssg/pgdedupe/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dssg/pgdedupe/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dssg/pgdedupe/teams","hooks_url":"https://api.github.com/repos/dssg/pgdedupe/hooks","issue_events_url":"https://api.github.com/repos/dssg/pgdedupe/issues/events{/number}","events_url":"https://api.github.com/repos/dssg/pgdedupe/events","assignees_url":"https://api.github.com/repos/dssg/pgdedupe/assignees{/user}","branches_url":"https://api.github.com/repos/dssg/pgdedupe/branches{/branch}","tags_url":"https://api.github.com/repos/dssg/pgdedupe/tags","blobs_url":"https://api.github.com/repos/dssg/pgdedupe/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dssg/pgdedupe/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dssg/pgdedupe/git/refs{/sha}","trees_url":"https://api.github.com/repos/dssg/pgdedupe/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dssg/pgdedupe/statuses/{sha}","languages_url":"https://api.github.com/repos/dssg/pgdedupe/languages","stargazers_url":"https://api.github.com/repos/dssg/pgdedupe/stargazers","contributors_url":"https://api.github.com/repos/dssg/pgdedupe/contributors","subscribers_url":"https://api.github.com/repos/dssg/pgdedupe/subscribers","subscription_url":"https://api.github.com/repos/dssg/pgdedupe/subscription","commits_url":"https://api.github.com/repos/dssg/pgdedupe/commits{/sha}","git_commits_url":"https://api.github.com/repos/dssg/pgdedupe/git/commits{/sha}","comments_url":"https://api.github.com/repos/dssg/pgdedupe/comments{/number}","issue_comment_url":"https://api.github.com/repos/dssg/pgdedupe/issues/comments{/number}","contents_url":"https://api.github.com/repos/dssg/pgdedupe/contents/{+path}","compare_url":"https://api.github.com/repos/dssg/pgdedupe/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dssg/pgdedupe/merges","archive_url":"https://api.github.com/repos/dssg/pgdedupe/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dssg/pgdedupe/downloads","issues_url":"https://api.github.com/repos/dssg/pgdedupe/issues{/number}","pulls_url":"https://api.github.com/repos/dssg/pgdedupe/pulls{/number}","milestones_url":"https://api.github.com/repos/dssg/pgdedupe/milestones{/number}","notifications_url":"https://api.github.com/repos/dssg/pgdedupe/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dssg/pgdedupe/labels{/name}","releases_url":"https://api.github.com/repos/dssg/pgdedupe/releases{/id}","deployments_url":"https://api.github.com/repos/dssg/pgdedupe/deployments","created_at":"2016-11-15T21:39:47Z","updated_at":"2017-07-31T23:51:10Z","pushed_at":"2017-09-25T13:32:32Z","git_url":"git://github.com/dssg/pgdedupe.git","ssh_url":"git@github.com:dssg/pgdedupe.git","clone_url":"https://github.com/dssg/pgdedupe.git","svn_url":"https://github.com/dssg/pgdedupe","homepage":"https://pgdedupe.readthedocs.io","size":215,"stargazers_count":14,"watchers_count":14,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":8,"forks":3,"open_issues":8,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dssg/pgdedupe/pulls/60"},"html":{"href":"https://github.com/dssg/pgdedupe/pull/60"},"issue":{"href":"https://api.github.com/repos/dssg/pgdedupe/issues/60"},"comments":{"href":"https://api.github.com/repos/dssg/pgdedupe/issues/60/comments"},"review_comments":{"href":"https://api.github.com/repos/dssg/pgdedupe/pulls/60/comments"},"review_comment":{"href":"https://api.github.com/repos/dssg/pgdedupe/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dssg/pgdedupe/pulls/60/commits"},"statuses":{"href":"https://api.github.com/repos/dssg/pgdedupe/statuses/96a1d5b6c871edd6d81c5584e46b44149d902f97"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"unstable","merged_by":null,"comments":2,"review_comments":0,"maintainer_can_modify":false,"commits":17,"additions":17,"deletions":17,"changed_files":2}}
{"actor":{"display_login":"pyup-bot"}}