dssg / pgdedupe

A simple command line interface to the datamade/dedupe library.
https://pgdedupe.readthedocs.io
Other
42 stars 6 forks source link

Scheduled weekly dependency update for week 38 #60

Closed pyup-bot closed 7 years ago

pyup-bot commented 7 years ago

Updates

Here'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.

numpy 1.12.1 » 1.13.1 PyPI | Changelog | Homepage
pandas 0.20.1 » 0.20.3 PyPI | Changelog | Homepage
psycopg2 2.7.1 » 2.7.3.1 PyPI | Changelog | Homepage
dedupe 1.6.13 » 1.7.8 PyPI | Changelog | Repo
fastcluster 1.1.23 » 1.1.24 PyPI | Changelog | Homepage
wheel 0.29.0 » 0.30.0 PyPI | Changelog | Repo
flake8 3.3.0 » 3.4.1 PyPI | Changelog | Repo
tox 2.7.0 » 2.8.2 PyPI | Changelog | Docs
Sphinx 1.6.1 » 1.6.3 PyPI | Changelog | Homepage
cryptography 1.8.1 » 2.0.3 PyPI | Changelog | Repo
pytest 3.0.7 » 3.2.2 PyPI | Changelog | Repo | Homepage
Faker 0.7.12 » 0.8.3 PyPI | Changelog | Repo
tqdm 4.11.2 » 4.15.0 PyPI | Changelog | Repo

Changelogs

numpy 1.12.1 -> 1.13.1

1.13.0

==========================

This release supports Python 2.7 and 3.4 - 3.6.

Highlights

  • Operations like a + b + c will reuse temporaries on some platforms, resulting in less memory use and faster execution.
  • Inplace operations check if inputs overlap outputs and create temporaries to avoid problems.
  • New __array_ufunc__ attribute provides improved ability for classes to override default ufunc behavior.
  • New np.block function for creating blocked arrays.

New functions

  • New np.positive ufunc.
  • New np.divmod ufunc provides more efficient divmod.
  • New np.isnat ufunc tests for NaT special values.
  • New np.heaviside ufunc computes the Heaviside function.
  • New np.isin function, improves on in1d.
  • New np.block function for creating blocked arrays.
  • New PyArray_MapIterArrayCopyIfOverlap added to NumPy C-API.

See below for details.

Deprecations

  • Calling np.fix, np.isposinf, and np.isneginf with f(x, y=out) is deprecated - the argument should be passed as f(x, out=out), which matches other ufunc-like interfaces.
  • Use of the C-API NPY_CHAR type number deprecated since version 1.7 will now raise deprecation warnings at runtime. Extensions built with older f2py versions need to be recompiled to remove the warning.
  • np.ma.argsort, np.ma.minimum.reduce, and np.ma.maximum.reduce should be called with an explicit axis argument when applied to arrays with more than 2 dimensions, as the default value of this argument (None) is inconsistent with the rest of numpy (-1, 0, and 0, respectively).
  • np.ma.MaskedArray.mini is deprecated, as it almost duplicates the functionality of np.MaskedArray.min. Exactly equivalent behaviour can be obtained with np.ma.minimum.reduce.
  • The single-argument form of np.ma.minimum and np.ma.maximum is deprecated. np.maximum. np.ma.minimum(x) should now be spelt np.ma.minimum.reduce(x), which is consistent with how this would be done with np.minimum.
  • Calling ndarray.conjugate on non-numeric dtypes is deprecated (it should match the behavior of np.conjugate, which throws an error).
  • Calling expand_dims when the axis keyword does not satisfy -a.ndim - 1 <= axis <= a.ndim, where a is the array being reshaped, is deprecated.

Future Changes

  • Assignment between structured arrays with different field names will change in NumPy 1.14. Previously, fields in the dst would be set to the value of the identically-named field in the src. In numpy 1.14 fields will instead be assigned 'by position': The n-th field of the dst will be set to the n-th field of the src array. Note that the FutureWarning raised in NumPy 1.12 incorrectly reported this change as scheduled for NumPy 1.13 rather than NumPy 1.14.

Build System Changes

  • numpy.distutils now automatically determines C-file dependencies with GCC compatible compilers.

Compatibility notes

Error type changes

  • numpy.hstack() now throws ValueError instead of IndexError when input is empty.
  • Functions taking an axis argument, when that argument is out of range, now throw np.AxisError instead of a mixture of IndexError and ValueError. For backwards compatibility, AxisError subclasses both of these.

Tuple object dtypes

Support has been removed for certain obscure dtypes that were unintentionally allowed, of the form (old_dtype, new_dtype), where either of the dtypes is or contains the object dtype. As an exception, dtypes of the form (object, [('name', object)]) are still supported due to evidence of existing use.

DeprecationWarning to error

See Changes section for more detail.

  • partition, TypeError when non-integer partition index is used.
  • NpyIter_AdvancedNew, ValueError when oa_ndim == 0 and op_axes is NULL
  • negative(bool_), TypeError when negative applied to booleans.
  • subtract(bool_, bool_), TypeError when subtracting boolean from boolean.
  • np.equal, np.not_equal, object identity doesn't override failed comparison.
  • np.equal, np.not_equal, object identity doesn't override non-boolean comparison.
  • Deprecated boolean indexing behavior dropped. See Changes below for details.
  • Deprecated np.alterdot() and np.restoredot() removed.

FutureWarning to changed behavior

See Changes section for more detail.

  • numpy.average preserves subclasses
  • array == None and array != None do element-wise comparison.
  • np.equal, np.not_equal, object identity doesn't override comparison result.

dtypes are now always true

Previously bool(dtype) would fall back to the default python implementation, which checked if len(dtype) > 0. Since dtype objects implement __len__ as the number of record fields, bool of scalar dtypes would evaluate to False, which was unintuitive. Now bool(dtype) == True for all dtypes.

__getslice__ and __setslice__ are no longer needed in ndarray subclasses

When subclassing np.ndarray in Python 2.7, it is no longer necessary to implement __*slice__ on the derived class, as __*item__ will intercept these calls correctly.

Any code that did implement these will work exactly as before. Code that invokesndarray.__getslice__ (e.g. through super(...).__getslice__) will now issue a DeprecationWarning - .__getitem__(slice(start, end)) should be used instead.

Indexing MaskedArrays/Constants with ... (ellipsis) now returns MaskedArray

This behavior mirrors that of np.ndarray, and accounts for nested arrays in MaskedArrays of object dtype, and ellipsis combined with other forms of indexing.

C API changes

GUfuncs on empty arrays and NpyIter axis removal

It is now allowed to remove a zero-sized axis from NpyIter. Which may mean that code removing axes from NpyIter has to add an additional check when accessing the removed dimensions later on.

The largest followup change is that gufuncs are now allowed to have zero-sized inner dimensions. This means that a gufunc now has to anticipate an empty inner dimension, while this was never possible and an error raised instead.

For most gufuncs no change should be necessary. However, it is now possible for gufuncs with a signature such as (..., N, M) -> (..., M) to return a valid result if N=0 without further wrapping code.

PyArray_MapIterArrayCopyIfOverlap added to NumPy C-API

Similar to PyArray_MapIterArray but with an additional copy_if_overlap argument. If copy_if_overlap != 0, checks if input has memory overlap with any of the other arrays and make copies as appropriate to avoid problems if the input is modified during the iteration. See the documentation for more complete documentation.

New Features

__array_ufunc__ added

This is the renamed and redesigned __numpy_ufunc__. Any class, ndarray subclass or not, can define this method or set it to None in order to override the behavior of NumPy's ufuncs. This works quite similarly to Python's __mul__ and other binary operation routines. See the documentation for a more detailed description of the implementation and behavior of this new option. The API is provisional, we do not yet guarantee backward compatibility as modifications may be made pending feedback. See the NEP and documentation for more details.

.. _NEP: https://github.com/numpy/numpy/blob/master/doc/neps/ufunc-overrides.rst .. _documentation: https://github.com/charris/numpy/blob/master/doc/source/reference/arrays.classes.rst

New positive ufunc

This ufunc corresponds to unary +, but unlike + on an ndarray it will raise an error if array values do not support numeric operations.

New divmod ufunc

This ufunc corresponds to the Python builtin divmod, and is used to implement divmod when called on numpy arrays. np.divmod(x, y) calculates a result equivalent to (np.floor_divide(x, y), np.remainder(x, y)) but is approximately twice as fast as calling the functions separately.

np.isnat ufunc tests for NaT special datetime and timedelta values

The new ufunc np.isnat finds the positions of special NaT values within datetime and timedelta arrays. This is analogous to np.isnan.

np.heaviside ufunc computes the Heaviside function

The new function np.heaviside(x, h0) (a ufunc) computes the Heaviside function:

.. code::

                  { 0   if x < 0,

heaviside(x, h0) = { h0 if x == 0, { 1 if x > 0.

np.block function for creating blocked arrays

Add a new block function to the current stacking functions vstack, hstack, and stack. This allows concatenation across multiple axes simultaneously, with a similar syntax to array creation, but where elements can themselves be arrays. For instance::

>>> A = np.eye(2) 2 >>> B = np.eye(3) 3 >>> np.block([ ... [A, np.zeros((2, 3))], ... [np.ones((3, 2)), B ] ... ]) array([[ 2., 0., 0., 0., 0.], [ 0., 2., 0., 0., 0.], [ 1., 1., 3., 0., 0.], [ 1., 1., 0., 3., 0.], [ 1., 1., 0., 0., 3.]])

While primarily useful for block matrices, this works for arbitrary dimensions of arrays.

It is similar to Matlab's square bracket notation for creating block matrices.

isin function, improving on in1d

The new function isin tests whether each element of an N-dimensonal array is present anywhere within a second array. It is an enhancement of in1d that preserves the shape of the first array.

Temporary elision

On platforms providing the backtrace function NumPy will try to avoid creating temporaries in expression involving basic numeric types. For example d = a + b + c is transformed to d = a + b; d += c which can improve performance for large arrays as less memory bandwidth is required to perform the operation.

axes argument for unique

In an N-dimensional array, the user can now choose the axis along which to look for duplicate N-1-dimensional elements using numpy.unique. The original behaviour is recovered if axis=None (default).

np.gradient now supports unevenly spaced data

Users can now specify a not-constant spacing for data. In particular np.gradient can now take:

  1. A single scalar to specify a sample distance for all dimensions.
  2. N scalars to specify a constant sample distance for each dimension. i.e. dx, dy, dz, ...
  3. N arrays to specify the coordinates of the values along each dimension of F. The length of the array must match the size of the corresponding dimension
  4. Any combination of N scalars/arrays with the meaning of 2. and 3.

This means that, e.g., it is now possible to do the following::

>>> f = np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float) >>> dx = 2. >>> y = [1., 1.5, 3.5] >>> np.gradient(f, dx, y) [array([[ 1. , 1. , -0.5], [ 1. , 1. , -0.5]]), array([[ 2. , 2. , 2. ], [ 2. , 1.7, 0.5]])]

Support for returning arrays of arbitrary dimensions in apply_along_axis

Previously, only scalars or 1D arrays could be returned by the function passed to apply_along_axis. Now, it can return an array of any dimensionality (including 0D), and the shape of this array replaces the axis of the array being iterated over.

.ndim property added to dtype to complement .shape

For consistency with ndarray and broadcast, d.ndim is a shorthand for len(d.shape).

Support for tracemalloc in Python 3.6

NumPy now supports memory tracing with tracemalloc_ module of Python 3.6 or newer. Memory allocations from NumPy are placed into the domain defined by numpy.lib.tracemalloc_domain. Note that NumPy allocation will not show up in tracemalloc_ of earlier Python versions.

.. _tracemalloc: https://docs.python.org/3/library/tracemalloc.html

NumPy may be built with relaxed stride checking debugging

Setting NPY_RELAXED_STRIDES_DEBUG=1 in the environment when relaxed stride checking is enabled will cause NumPy to be compiled with the affected strides set to the maximum value of npy_intp in order to help detect invalid usage of the strides in downstream projects. When enabled, invalid usage often results in an error being raised, but the exact type of error depends on the details of the code. TypeError and OverflowError have been observed in the wild.

It was previously the case that this option was disabled for releases and enabled in master and changing between the two required editing the code. It is now disabled by default but can be enabled for test builds.

Improvements

Ufunc behavior for overlapping inputs

Operations where ufunc input and output operands have memory overlap produced undefined results in previous NumPy versions, due to data dependency issues. In NumPy 1.13.0, results from such operations are now defined to be the same as for equivalent operations where there is no memory overlap.

Operations affected now make temporary copies, as needed to eliminate data dependency. As detecting these cases is computationally expensive, a heuristic is used, which may in rare cases result to needless temporary copies. For operations where the data dependency is simple enough for the heuristic to analyze, temporary copies will not be made even if the arrays overlap, if it can be deduced copies are not necessary. As an example,np.add(a, b, out=a) will not involve copies.

To illustrate a previously undefined operation::

>>> x = np.arange(16).astype(float) >>> np.add(x[1:], x[:-1], out=x[1:])

In NumPy 1.13.0 the last line is guaranteed to be equivalent to::

>>> np.add(x[1:].copy(), x[:-1].copy(), out=x[1:])

A similar operation with simple non-problematic data dependence is::

>>> x = np.arange(16).astype(float) >>> np.add(x[1:], x[:-1], out=x[:-1])

It will continue to produce the same results as in previous NumPy versions, and will not involve unnecessary temporary copies.

The change applies also to in-place binary operations, for example::

>>> x = np.random.rand(500, 500) >>> x += x.T

This statement is now guaranteed to be equivalent to x[...] = x + x.T, whereas in previous NumPy versions the results were undefined.

Partial support for 64-bit f2py extensions with MinGW

Extensions that incorporate Fortran libraries can now be built using the free MinGW toolset, also under Python 3.5. This works best for extensions that only do calculations and uses the runtime modestly (reading and writing from files, for instance). Note that this does not remove the need for Mingwpy; if you make extensive use of the runtime, you will most likely run into issues. Instead, it should be regarded as a band-aid until Mingwpy is fully functional.

Extensions can also be compiled using the MinGW toolset using the runtime library from the (moveable) WinPython 3.4 distribution, which can be useful for programs with a PySide1/Qt4 front-end.

.. _MinGW: https://sf.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.2.0/threads-win32/seh/

.. _issues: https://mingwpy.github.io/issues.html

Performance improvements for packbits and unpackbits

The functions numpy.packbits with boolean input and numpy.unpackbits have been optimized to be a significantly faster for contiguous data.

Fix for PPC long double floating point information

In previous versions of NumPy, the finfo function returned invalid information about the double double_ format of the longdouble float type on Power PC (PPC). The invalid values resulted from the failure of the NumPy algorithm to deal with the variable number of digits in the significand that are a feature of PPC long doubles. This release by-passes the failing algorithm by using heuristics to detect the presence of the PPC double double format. A side-effect of using these heuristics is that the finfo function is faster than previous releases.

.. _PPC long doubles: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/com.ibm.aix.genprogc/128bit_long_double_floating-point_datatype.htm

.. _double double: https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_formatDouble-double_arithmetic

Better default repr for ndarray subclasses

Subclasses of ndarray with no repr specialization now correctly indent their data and type lines.

More reliable comparisons of masked arrays

Comparisons of masked arrays were buggy for masked scalars and failed for structured arrays with dimension higher than one. Both problems are now solved. In the process, it was ensured that in getting the result for a structured array, masked fields are properly ignored, i.e., the result is equal if all fields that are non-masked in both are equal, thus making the behaviour identical to what one gets by comparing an unstructured masked array and then doing .all() over some axis.

np.matrix with booleans elements can now be created using the string syntax

np.matrix failed whenever one attempts to use it with booleans, e.g., np.matrix('True'). Now, this works as expected.

More linalg operations now accept empty vectors and matrices

All of the following functions in np.linalg now work when given input arrays with a 0 in the last two dimensions: det, slogdet, pinv, eigvals, eigvalsh, eig, eigh.

Bundled version of LAPACK is now 3.2.2

NumPy comes bundled with a minimal implementation of lapack for systems without a lapack library installed, under the name of lapack_lite. This has been upgraded from LAPACK 3.0.0 (June 30, 1999) to LAPACK 3.2.2 (June 30, 2010). See the LAPACK changelogs_ for details on the all the changes this entails.

While no new features are exposed through numpy, this fixes some bugs regarding "workspace" sizes, and in some places may use faster algorithms.

.. _LAPACK changelogs: http://www.netlib.org/lapack/release_notes.html_4_history_of_lapack_releases

reduce of np.hypot.reduce and np.logical_xor allowed in more cases

This now works on empty arrays, returning 0, and can reduce over multiple axes. Previously, a ValueError was thrown in these cases.

Better repr of object arrays

Object arrays that contain themselves no longer cause a recursion error.

Object arrays that contain list objects are now printed in a way that makes clear the difference between a 2d object array, and a 1d object array of lists.

Changes

argsort on masked arrays takes the same default arguments as sort

By default, argsort now places the masked values at the end of the sorted array, in the same way that sort already did. Additionally, the end_with argument is added to argsort, for consistency with sort. Note that this argument is not added at the end, so breaks any code that passed fill_value as a positional argument.

average now preserves subclasses

For ndarray subclasses, numpy.average will now return an instance of the subclass, matching the behavior of most other NumPy functions such as mean. As a consequence, also calls that returned a scalar may now return a subclass array scalar.

array == None and array != None do element-wise comparison

Previously these operations returned scalars False and True respectively.

np.equal, np.not_equal for object arrays ignores object identity

Previously, these functions always treated identical objects as equal. This had the effect of overriding comparison failures, comparison of objects that did not return booleans, such as np.arrays, and comparison of objects where the results differed from object identity, such as NaNs.

Boolean indexing changes

  • Boolean array-likes (such as lists of python bools) are always treated as boolean indexes.

  • Boolean scalars (including python True) are legal boolean indexes and never treated as integers.

  • Boolean indexes must match the dimension of the axis that they index.

  • Boolean indexes used on the lhs of an assignment must match the dimensions of the rhs.

  • Boolean indexing into scalar arrays return a new 1-d array. This means that array(1)[array(True)] gives array([1]) and not the original array.

np.random.multivariate_normal behavior with bad covariance matrix

It is now possible to adjust the behavior the function will have when dealing with the covariance matrix by using two new keyword arguments:

  • tol can be used to specify a tolerance to use when checking that the covariance matrix is positive semidefinite.

  • check_valid can be used to configure what the function will do in the presence of a matrix that is not positive semidefinite. Valid options are ignore, warn and raise. The default value, warn keeps the the behavior used on previous releases.

assert_array_less compares np.inf and -np.inf now

Previously, np.testing.assert_array_less ignored all infinite values. This is not the expected behavior both according to documentation and intuitively. Now, -inf < x < inf is considered True for any real number x and all other cases fail.

assert_array_ and masked arrays assert_equal hide less warnings

Some warnings that were previously hidden by the assert_array_ functions are not hidden anymore. In most cases the warnings should be correct and, should they occur, will require changes to the tests using these functions. For the masked array assert_equal version, warnings may occur when comparing NaT. The function presently does not handle NaT or NaN specifically and it may be best to avoid it at this time should a warning show up due to this change.

offset attribute value in memmap objects

The offset attribute in a memmap object is now set to the offset into the file. This is a behaviour change only for offsets greater than mmap.ALLOCATIONGRANULARITY.

np.real and np.imag return scalars for scalar inputs

Previously, np.real and np.imag used to return array objects when provided a scalar input, which was inconsistent with other functions like np.angle and np.conj.

The polynomial convenience classes cannot be passed to ufuncs

The ABCPolyBase class, from which the convenience classes are derived, sets __array_ufun__ = None in order of opt out of ufuncs. If a polynomial convenience class instance is passed as an argument to a ufunc, a TypeError will now be raised.

Output arguments to ufuncs can be tuples also for ufunc methods

For calls to ufuncs, it was already possible, and recommended, to use an out argument with a tuple for ufuncs with multiple outputs. This has now been extended to output arguments in the reduce, accumulate, and reduceat methods. This is mostly for compatibility with __array_ufunc; there are no ufuncs yet that have more than one output.

==========================

pandas 0.20.1 -> 0.20.3

0.20.3


This is a minor bug-fix release in the 0.20.x series and includes some small regression fixes and bug fixes. We recommend that all users upgrade to this version.

.. contents:: What's new in v0.20.3 :local: :backlinks: none

.. _whatsnew_0203.bug_fixes:

Bug Fixes


- Fixed a bug in failing to compute rolling computations of a column-MultiIndexed ``DataFrame`` (:issue:`16789`, :issue:`16825`)
- Fixed a pytest marker failing downstream packages&#39; tests suites (:issue:`16680`)

Conversion
^^^^^^^^^^

- Bug in pickle compat prior to the v0.20.x series, when ``UTC`` is a timezone in a Series/DataFrame/Index (:issue:`16608`)
- Bug in ``Series`` construction when passing a ``Series`` with ``dtype=&#39;category&#39;`` (:issue:`16524`).
- Bug in :meth:`DataFrame.astype` when passing a ``Series`` as the ``dtype`` kwarg. (:issue:`16717`).

Indexing
^^^^^^^^

- 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`)
- Bug in ``MultiIndex.isin`` causing an error when passing an empty iterable (:issue:`16777`)
- Fixed a bug in a slicing DataFrame/Series that have a  ``TimedeltaIndex`` (:issue:`16637`)

I/O
^^^

- 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`)
- 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`)
- 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`)
- Fixed an issue with :meth:`DataFrame.style` where generated element ids were not unique (:issue:`16780`)
- 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`)

Plotting
^^^^^^^^

- Fixed regression that prevented RGB and RGBA tuples from being used as color arguments (:issue:`16233`)
- Fixed an issue with :meth:`DataFrame.plot.scatter` that incorrectly raised a ``KeyError`` when categorical data is used for plotting (:issue:`16199`)

Reshaping
^^^^^^^^^

- ``PeriodIndex`` / ``TimedeltaIndex.join`` was missing the ``sort=`` kwarg (:issue:`16541`) 
- Bug in joining on a ``MultiIndex`` with a ``category`` dtype for a level (:issue:`16627`).
- Bug in :func:`merge` when merging/joining with multiple categorical columns (:issue:`16767`)

Categorical
^^^^^^^^^^^

- Bug in ``DataFrame.sort_values`` not respecting the ``kind`` parameter with categorical data (:issue:`16793`)

.. _whatsnew_0101:

### 0.20.2

----------------------

This is a minor bug-fix release in the 0.20.x series and includes some small regression fixes,
bug fixes and performance improvements.
We recommend that all users upgrade to this version.

.. contents:: What&#39;s new in v0.20.2
   :local:
   :backlinks: none

.. _whatsnew_0202.enhancements:

Enhancements
  • Unblocked access to additional compression types supported in pytables: 'blosc:blosclz, 'blosc:lz4', 'blosc:lz4hc', 'blosc:snappy', 'blosc:zlib', 'blosc:zstd' (:issue:14478)

  • Series provides a to_latex method (:issue:16180)

  • A new groupby method :meth:~pandas.core.groupby.GroupBy.ngroup, parallel to the existing :meth:~pandas.core.groupby.GroupBy.cumcount, has been added to return the group order (:issue:11642); see :ref:here &lt;groupby.ngroup&gt;.

.. _whatsnew_0202.performance:

Performance Improvements


- Performance regression fix when indexing with a list-like (:issue:`16285`)
- Performance regression fix for MultiIndexes (:issue:`16319`, :issue:`16346`)
- Improved performance of ``.clip()`` with scalar arguments (:issue:`15400`)
- Improved performance of groupby with categorical groupers (:issue:`16413`)
- Improved performance of ``MultiIndex.remove_unused_levels()`` (:issue:`16556`)

.. _whatsnew_0202.bug_fixes:

Bug Fixes
  • Silenced a warning on some Windows environments about "tput: terminal attributes: No such device or address" when detecting the terminal size. This fix only applies to python 3 (:issue:16496)
  • Bug in using pathlib.Path or py.path.local objects with io functions (:issue:16291)
  • Bug in Index.symmetric_difference() on two equal MultiIndex's, results in a TypeError (:issue 13490)
  • Bug in DataFrame.update() with overwrite=False and NaN values (:issue:15593)
  • Passing an invalid engine to :func:read_csv now raises an informative ValueError rather than UnboundLocalError. (:issue:16511)
  • Bug in :func:unique on an array of tuples (:issue:16519)
  • Bug in :func:cut when labels are set, resulting in incorrect label ordering (:issue:16459)
  • Fixed a compatibility issue with IPython 6.0's tab completion showing deprecation warnings on Categoricals (:issue:16409)

Conversion ^^^^^^^^^^

  • Bug in :func:to_numeric in which empty data inputs were causing a segfault of the interpreter (:issue:16302)
  • Silence numpy warnings when broadcasting DataFrame to Series with comparison ops (:issue:16378, :issue:16306)

Indexing ^^^^^^^^

  • Bug in DataFrame.reset_index(level=) with single level index (:issue:16263)
  • Bug in partial string indexing with a monotonic, but not strictly-monotonic, index incorrectly reversing the slice bounds (:issue:16515)
  • Bug in MultiIndex.remove_unused_levels() that would not return a MultiIndex equal to the original. (:issue:16556)

I/O ^^^

  • Bug in :func:read_csv when comment is passed in a space delimited text file (:issue:16472)

  • Bug in :func:read_csv not raising an exception with nonexistent columns in usecols when it had the correct length (:issue:14671)

  • Bug that would force importing of the clipboard routines unnecessarily, potentially causing an import error on startup (:issue:16288)

  • Bug that raised IndexError when HTML-rendering an empty DataFrame (:issue:15953)

  • Bug in :func:read_csv in which tarfile object inputs were raising an error in Python 2.x for the C engine (:issue:16530)

  • Bug where DataFrame.to_html() ignored the index_names parameter (:issue:16493)

  • Bug where pd.read_hdf() returns numpy strings for index names (:issue:13492)

  • Bug in HDFStore.select_as_multiple() where start/stop arguments were not respected (:issue:16209)

Plotting ^^^^^^^^

  • Bug in DataFrame.plot with a single column and a list-like color (:issue:3486)
  • Bug in plot where NaT in DatetimeIndex results in Timestamp.min (:issue: 12405)
  • Bug in DataFrame.boxplot where figsize keyword was not respected for non-grouped boxplots (:issue:11959)

Groupby/Resample/Rolling ^^^^^^^^^^^^^^^^^^^^^^^^

  • Bug in creating a time-based rolling window on an empty DataFrame (:issue:15819)
  • Bug in rolling.cov() with offset window (:issue:16058)
  • Bug in .resample() and .groupby() when aggregating on integers (:issue:16361)

Sparse ^^^^^^

  • Bug in construction of SparseDataFrame from scipy.sparse.dok_matrix (:issue:16179)

Reshaping ^^^^^^^^^

  • Bug in DataFrame.stack with unsorted levels in MultiIndex columns (:issue:16323)
  • Bug in pd.wide_to_long() where no error was raised when i was not a unique identifier (:issue:16382)
  • Bug in Series.isin(..) with a list of tuples (:issue:16394)
  • Bug in construction of a DataFrame with mixed dtypes including an all-NaT column. (:issue:16395)
  • Bug in DataFrame.agg() and Series.agg() with aggregating on non-callable attributes (:issue:16405)

Numeric ^^^^^^^

  • Bug in .interpolate(), where limit_direction was not respected when limit=None (default) was passed (:issue:16282)

Categorical ^^^^^^^^^^^

  • Fixed comparison operations considering the order of the categories when both categoricals are unordered (:issue:16014)

Other ^^^^^

  • Bug in DataFrame.drop() with an empty-list with non-unique indices (:issue:16270)

.. _whatsnew_0191:

psycopg2 2.7.1 -> 2.7.3.1

2.7.3.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • Dropped libresolv from wheel package to avoid incompatibility with glibc 2.26 (wheels ticket 2)

2.7.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • Restored default :sql:timestamptz[] typecasting to Python !datetime. Regression introduced in Psycopg 2.7.2 (:ticket:578).

2.7.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • Fixed inconsistent state in externally closed connections (:tickets:263, 311, 443). Was fixed in 2.6.2 but not included in 2.7 by mistake.
  • Fixed Python exceptions propagation in green callback (:ticket:410).
  • Don't display the password in connection.dsn when the connection string is specified as an URI (:ticket:528).
  • Return objects with timezone parsing "infinity" :sql:timestamptz (:ticket:536).
  • Dropped dependency on VC9 runtime on Windows binary packages (:ticket:541).
  • Fixed segfault in ~connection.lobject() when mode\=\ !None (:ticket:544).
  • Fixed ~connection.lobject() keyword argument lobject_factory (:ticket:545).
  • Fixed ~psycopg2.extras.ReplicationCursor.consume_stream() keepalive_interval argument (:ticket:547).
  • Maybe fixed random import error on Python 3.6 in multiprocess environment (:ticket:550).
  • Fixed random !SystemError upon receiving abort signal (:ticket:551).
  • Accept ~psycopg2.sql.Composable objects in ~psycopg2.extras.ReplicationCursor.start_replication_expert() (:ticket:554).
  • Parse intervals returned as microseconds from Redshift (:ticket:558).
  • Added ~psycopg2.extras.Json !prepare() method to consider connection params when adapting (:ticket:562).
  • ~psycopg2.errorcodes map updated to PostgreSQL 10 beta 1.

dedupe 1.6.13 -> 1.7.8

1.7.8

  • Speed up blocking, on our way to 3-predicates

1.7.5

  • Significantly reduced memory footprint during connected_components

1.7.3

  • Significantly reduced memory footprint during scoreDuplicates

1.7.2

  • Improper release

1.7.1

  • TempShelve class that addresses various bugs related to cleaning up tempoary shelves

1.7.0

  • Added target argument to blocker and predicates for changing the behavior of the predicates for the target and source dataset if we are linking.

fastcluster 1.1.23 -> 1.1.24

1.1.24

• R 3.5 corrects the formula for the “Canberra” metric. See https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17285. The formula in the fastcluster package was changed accordingly. This concerns only the R interface. SciPy and fastcluster's Python interface always had the correct formula.

fastcluster: Fast hierarchical clustering routines for R and Python

Copyright © 2011 Daniel Müllner <http://danifold.net&gt;

Version history ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾

wheel 0.29.0 -> 0.30.0

0.30.0

======

  • Added py-limited-api {cp32|cp33|cp34|...} flag to produce cpNN.abi3.{arch} tags on CPython 3.
  • Documented the license_file metadata key
  • Improved Python, abi tagging for wheel convert. Thanks Ales Erjavec.
  • Fixed &gt; being prepended to lines starting with "From" in the long description
  • Added support for specifying a build number (as per PEP 427). Thanks Ian Cordasco.
  • Made the order of files in generated ZIP files deterministic. Thanks Matthias Bach.
  • Made the order of requirements in metadata deterministic. Thanks Chris Lamb.
  • Fixed wheel install clobbering existing files
  • Improved the error message when trying to verify an unsigned wheel file
  • Removed support for Python 2.6, 3.2 and 3.3.

flake8 3.3.0 -> 3.4.1

3.4.1


You can view the 3.4.1 milestone_ on GitLab for more details.

  • Fix minor regression when users specify only a --select list with items in the enabled/extended select list. (See also GitLab354_)

.. all links .. _3.4.1 milestone: https://gitlab.com/pycqa/flake8/milestones/19

.. issue links .. _GitLab354: https://gitlab.com/pycqa/flake8/issues/354

.. merge request links

3.4.0


You can view the 3.4.0 milestone_ on GitLab for more details.

  • Refine logic around --select and --ignore when combined with the default values for each. (See also GitLab318_)

  • Handle spaces as an alternate separate for error codes, e.g., --ignore &#39;E123 E234&#39;. (See also GitLab329_)

  • Filter out empty select and ignore codes, e.g., --ignore E123,,E234. (See also GitLab330_)

  • Specify dependencies appropriately in setup.py (See also Gitlab341_)

  • Fix bug in parsing --quiet and --verbose from config files. (See also GitLab!193_)

  • Remove unused import of os in the git hook template (See also GitLab!194_)

.. all links .. _3.4.0 milestone: https://gitlab.com/pycqa/flake8/milestones/18

.. issue links .. _GitLab318: https://gitlab.com/pycqa/flake8/issues/318 .. _GitLab329: https://gitlab.com/pycqa/flake8/issues/329 .. _GitLab330: https://gitlab.com/pycqa/flake8/issues/330 .. _GitLab341: https://gitlab.com/pycqa/flake8/issues/341

.. merge request links .. _GitLab!193: https://gitlab.com/pycqa/flake8/merge_requests/193 .. _GitLab!194: https://gitlab.com/pycqa/flake8/merge_requests/194

tox 2.7.0 -> 2.8.2

2.8.1

==================

  • :pull:599: fix problems with implementation of :issue:515. Substitutions from other sections were not made anymore if they were not in envlist. Thanks to Clark Boylan (:user:cboylan) for helping to get this fixed (:pull:597).

2.8.0

===================

  • :issue:276: Remove easy_install from docs (TL;DR: use pip). Thanks Martin Andrysík (:user:sifuraz).

  • :issue:301: Expand nested substitutions in tox.ini. Thanks :user:vlaci. Thanks to Eli Collins (:user:eli-collins) for creating a reproducer.

  • :issue:315: add --help and --version to helptox-quickstart. Thanks :user:vlaci.

  • :issue:326: Fix OSError 'Not a directory' when creating env on Jython 2.7.0. Thanks Nick Douma (:user:LordGaav).

  • :issue:429: Forward MSYSTEM by default on Windows. Thanks Marius Gedminas (:user:mgedmin) for reporting this.

  • :issue:449: add multi platform example to the docs. Thanks Aleks Bunin (:user:sashkab) and :user:rndr.

  • :issue:474: Start using setuptools_scm for tag based versioning.

  • :issue:484: Renamed py.test to pytest throughout the project. Thanks Slam (:user:3lnc).

  • :issue:504: With -a: do not show additional environments header if there are none. Thanks :user:rndr.

  • :issue:515: Don't require environment variables in test environments where they are not used. Thanks André Caron (:user:AndreLouisCaron).

  • :issue:517: Forward NUMBER_OF_PROCESSORS by default on Windows to fix multiprocessor.cpu_count(). Thanks André Caron (:user:AndreLouisCaron).

  • :issue:518: Forward USERPROFILE by default on Windows. Thanks André Caron (:user:AndreLouisCaron).

  • :pull:528: Fix some of the warnings displayed by pytest 3.1.0. Thanks Bruno Oliveira (:user:nicoddemus).

  • :pull:547: Add regression test for :issue:137. Thanks Martin Andrysík (:user:sifuraz).

  • :pull:553: Add an XFAIL test to reproduce upstream bug :issue:203. Thanks Bartolomé Sánchez Salado (:user:bartsanchez).

  • :pull:556: Report more meaningful errors on why virtualenv creation failed. Thanks :user:vlaci. Also thanks to Igor Sadchenko (:user:igor-sadchenko) for pointing out a problem with that PR before it hit the masses ☺

  • :pull:575: Add announcement doc to end all announcement docs (using only CHANGELOG and Github issues since 2.5 already).

  • :pull:580: Do not ignore Sphinx warnings anymore. Thanks Bernát Gábor (:user:gaborbernat).

  • :pull:585: Expand documentation to explain pass through of flags from deps to pip (e.g. -rrequirements.txt, -cconstraints.txt). Thanks Alexander Loechel (:user:loechel).

  • :pull:588: Run pytest wit xfail_strict and adapt affected tests.

Sphinx 1.6.1 -> 1.6.3

1.6.3

=====================================

Features added

  • latex: hint that code-block continues on next page (refs: 3764, 3792)

Bugs fixed

  • 3821: Failed to import sphinx.util.compat with docutils-0.14rc1
  • 3829: sphinx-quickstart template is incomplete regarding use of alabaster
  • 3772: 'str object' has no attribute 'filename'
  • Emit wrong warnings if citation label includes hyphens (refs: 3565)
  • 3858: Some warnings are not colored when using --color option
  • 3775: Remove unwanted whitespace in default template
  • 3835: sphinx.ext.imgmath fails to convert SVG images if project directory name contains spaces
  • 3850: Fix color handling in make mode's help command
  • 3865: use of self.env.warn in sphinx extension fails
  • 3824: production lists apply smart quotes transform since Sphinx 1.6.1
  • latex: fix \sphinxbfcode swallows initial space of argument
  • 3878: Quotes in auto-documented class attributes should be straight quotes in PDF output
  • 3881: LaTeX figure floated to next page sometimes leaves extra vertical whitespace
  • 3885: duplicated footnotes raises IndexError
  • 3873: Failure of deprecation warning mechanism of sphinx.util.compat.Directive
  • 3874: Bogus warnings for "citation not referenced" for cross-file citations
  • 3860: Don't download images when builders not supported images
  • 3860: Remote image URIs without filename break builders not supported remote images
  • 3833: command line messages are translated unintentionally with language setting.
  • 3840: make checking epub_uid strict
  • 3851, 3706: Fix about box drawing characters for PDF output
  • 3900: autosummary could not find methods
  • 3902: Emit error if latex_documents contains non-unicode string in py2

1.6.2

=====================================

Incompatible changes

  • 3789: Do not require typing module for python>=3.5

Bugs fixed

  • 3754: HTML builder crashes if HTML theme appends own stylesheets
  • 3756: epub: Entity 'mdash' not defined
  • 3758: Sphinx crashed if logs are emitted in conf.py
  • 3755: incorrectly warns about dedent with literalinclude
  • 3742: RTD &lt;https://readthedocs.org/&gt; PDF builds of Sphinx own docs are missing an index entry in the bookmarks and table of contents. This is rtfd/readthedocs.org2857 &lt;https://github.com/rtfd/readthedocs.org/issues/2857&gt; issue, a workaround is obtained using some extra LaTeX code in Sphinx's own :file:conf.py
  • 3770: Build fails when a "code-block" has the option emphasize-lines and the number indicated is higher than the number of lines
  • 3774: Incremental HTML building broken when using citations
  • 3763: got epubcheck validations error if epub_cover is set
  • 3779: 'ImportError' in sphinx.ext.autodoc due to broken 'sys.meta_path'. Thanks to Tatiana Tereshchenko.
  • 3796: env.resolve_references() crashes when non-document node given
  • 3803: Sphinx crashes with invalid PO files
  • 3791: PDF "continued on next page" for long tables isn't internationalized
  • 3788: smartquotes emits warnings for unsupported languages
  • 3807: latex Makefile for make latexpdf is only for unixen
  • 3781: double hyphens in option directive are compiled as endashes
  • 3817: latex builder raises AttributeError

cryptography 1.8.1 -> 2.0.3

2.0.2


* Marked all symbols as hidden in the ``manylinux1`` wheel to avoid a
 bug with symbol resolution in certain scenarios.

.. _v2-0-1:

### 2.0.1
  • Fixed a compilation bug affecting OpenBSD.
  • Altered the manylinux1 wheels to statically link OpenSSL instead of dynamically linking and bundling the shared object. This should resolve crashes seen when using uwsgi or other binaries that link against OpenSSL independently.
  • Fixed the stack level for the signer and verifier warnings.

.. _v2-0:

2.0


* **BACKWARDS INCOMPATIBLE:** Support for Python 3.3 has been dropped.
* We now ship ``manylinux1`` wheels linked against OpenSSL 1.1.0f. These wheels
 will be automatically used with most Linux distributions if you are running
 the latest pip.
* Deprecated the use of ``signer`` on
 :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`,
 :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`,
 and
 :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`
 in favor of ``sign``.
* Deprecated the use of ``verifier`` on
 :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`,
 :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`,
 and
 :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`
 in favor of ``verify``.
* Added support for parsing
 :class:`~cryptography.x509.certificate_transparency.SignedCertificateTimestamp`
 objects from X.509 certificate extensions.
* Added support for
 :class:`~cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305`.
* Added support for
 :class:`~cryptography.hazmat.primitives.ciphers.aead.AESCCM`.
* Added
 :class:`~cryptography.hazmat.primitives.ciphers.aead.AESGCM`, a &quot;one shot&quot;
 API for AES GCM encryption.
* Added support for :doc:`/hazmat/primitives/asymmetric/x25519`.
* Added support for serializing and deserializing Diffie-Hellman parameters
 with
 :func:`~cryptography.hazmat.primitives.serialization.load_pem_parameters`,
 :func:`~cryptography.hazmat.primitives.serialization.load_der_parameters`,
 and
 :meth:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters.parameter_bytes`
 .
* The ``extensions`` attribute on :class:`~cryptography.x509.Certificate`,
 :class:`~cryptography.x509.CertificateSigningRequest`,
 :class:`~cryptography.x509.CertificateRevocationList`, and
 :class:`~cryptography.x509.RevokedCertificate` now caches the computed
 ``Extensions`` object. There should be no performance change, just a
 performance improvement for programs accessing the ``extensions`` attribute
 multiple times.

.. _v1-9:

### 1.9
  • BACKWARDS INCOMPATIBLE: Elliptic Curve signature verification no longer returns True on success. This brings it in line with the interface's documentation, and our intent. The correct way to use :meth:~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.verify has always been to check whether or not :class:~cryptography.exceptions.InvalidSignature was raised.
  • BACKWARDS INCOMPATIBLE: Dropped support for macOS 10.7 and 10.8.
  • BACKWARDS INCOMPATIBLE: The minimum supported PyPy version is now 5.3.
  • Python 3.3 support has been deprecated, and will be removed in the next cryptography release.
  • Add support for providing tag during :class:~cryptography.hazmat.primitives.ciphers.modes.GCM finalization via :meth:~cryptography.hazmat.primitives.ciphers.AEADDecryptionContext.finalize_with_tag.
  • Fixed an issue preventing cryptography from compiling against LibreSSL 2.5.x.
  • Added :meth:~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey.key_size and :meth:~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey.key_size as convenience methods for determining the bit size of a secret scalar for the curve.
  • Accessing an unrecognized extension marked critical on an X.509 object will no longer raise an UnsupportedExtension exception, instead an :class:~cryptography.x509.UnrecognizedExtension object will be returned. This behavior was based on a poor reading of the RFC, unknown critical extensions only need to be rejected on certificate verification.
  • The CommonCrypto backend has been removed.
  • MultiBackend has been removed.
  • Whirlpool and RIPEMD160 have been deprecated.

.. _v1-8-2:

1.8.2



* Fixed a compilation bug affecting OpenSSL 1.1.0f.
* Updated Windows and macOS wheels to be compiled against OpenSSL 1.1.0f.

.. _v1-8-1:

pytest 3.0.7 -> 3.2.2

3.2.2

=========================

Bug Fixes

  • Calling the deprecated request.getfuncargvalue() now shows the source of the call. (2681 &lt;https://github.com/pytest-dev/pytest/issues/2681&gt;_)

  • Allow tests declared as staticmethod to use fixtures. (2699 &lt;https://github.com/pytest-dev/pytest/issues/2699&gt;_)

  • Fixed edge-case during collection: attributes which raised pytest.fail when accessed would abort the entire collection. (2707 &lt;https://github.com/pytest-dev/pytest/issues/2707&gt;_)

  • Fix ReprFuncArgs with mixed unicode and UTF-8 args. (2731 &lt;https://github.com/pytest-dev/pytest/issues/2731&gt;_)

Improved Documentation

  • In examples on working with custom markers, add examples demonstrating the usage of pytest.mark.MARKER_NAME.with_args in comparison with pytest.mark.MARKER_NAME.__call__ (2604 &lt;https://github.com/pytest-dev/pytest/issues/2604&gt;_)

  • In one of the simple examples, use pytest_collection_modifyitems() to skip tests based on a command-line option, allowing its sharing while preventing a user error when acessing pytest.config before the argument parsing. (2653 &lt;https://github.com/pytest-dev/pytest/issues/2653&gt;_)

Trivial/Internal Changes

  • Fixed minor error in 'Good Practices/Manual Integration' code snippet. (2691 &lt;https://github.com/pytest-dev/pytest/issues/2691&gt;_)

  • Fixed typo in goodpractices.rst. (2721 &lt;https://github.com/pytest-dev/pytest/issues/2721&gt;_)

  • Improve user guidance regarding --resultlog deprecation. (2739 &lt;https://github.com/pytest-dev/pytest/issues/2739&gt;_)

3.2.1

=========================

Bug Fixes

  • Fixed small terminal glitch when collecting a single test item. (2579 &lt;https://github.com/pytest-dev/pytest/issues/2579&gt;_)

  • Correctly consider / as the file separator to automatically mark plugin files for rewrite on Windows. (2591 &lt;https://github.com/pytest- dev/pytest/issues/2591&gt;_)

  • Properly escape test names when setting PYTEST_CURRENT_TEST environment variable. (2644 &lt;https://github.com/pytest-dev/pytest/issues/2644&gt;_)

  • Fix error on Windows and Python 3.6+ when sys.stdout has been replaced with a stream-like object which does not implement the full io module buffer protocol. In particular this affects pytest-xdist users on the aforementioned platform. (2666 &lt;https://github.com/pytest- dev/pytest/issues/2666&gt;_)

Improved Documentation

  • Explicitly document which pytest features work with unittest. (2626 &lt;https://github.com/pytest-dev/pytest/issues/2626&gt;_)

3.2.0

=========================

Deprecations and Removals

  • pytest.approx no longer supports &gt;, &gt;=, &lt; and &lt;= operators to avoid surprising/inconsistent behavior. See the docs &lt;https://docs.pytest.org/en/latest/builtin.htmlpytest.approx&gt; for more information. (2003 &lt;https://github.com/pytest-dev/pytest/issues/2003&gt;)

  • All old-style specific behavior in current classes in the pytest's API is considered deprecated at this point and will be removed in a future release. This affects Python 2 users only and in rare situations. (2147 &lt;https://github.com/pytest-dev/pytest/issues/2147&gt;_)

  • A deprecation warning is now raised when using marks for parameters in pytest.mark.parametrize. Use pytest.param to apply marks to parameters instead. (2427 &lt;https://github.com/pytest-dev/pytest/issues/2427&gt;_)

Features

  • Add support for numpy arrays (and dicts) to approx. (1994 &lt;https://github.com/pytest-dev/pytest/issues/1994&gt;_)

  • Now test function objects have a pytestmark attribute containing a list of marks applied directly to the test function, as opposed to marks inherited from parent classes or modules. (2516 &lt;https://github.com/pytest- dev/pytest/issues/2516&gt;_)

  • Collection ignores local virtualenvs by default; --collect-in-virtualenv overrides this behavior. (2518 &lt;https://github.com/pytest- dev/pytest/issues/2518&gt;_)

  • Allow class methods decorated as staticmethod to be candidates for collection as a test function. (Only for Python 2.7 and above. Python 2.6 will still ignore static methods.) (2528 &lt;https://github.com/pytest- dev/pytest/issues/2528&gt;_)

  • Introduce mark.with_args in order to allow passing functions/classes as sole argument to marks. (2540 &lt;https://github.com/pytest- dev/pytest/issues/2540&gt;_)

  • New cache_dir ini option: sets the directory where the contents of the cache plugin are stored. Directory may be relative or absolute path: if relative path, then directory is created relative to rootdir, otherwise it is used as is. Additionally path may contain environment variables which are expanded during runtime. (2543 &lt;https://github.com/pytest-dev/pytest/issues/2543&gt;_)

  • Introduce the PYTEST_CURRENT_TEST environment variable that is set with the nodeid and stage (setup, call and teardown) of the test being currently executed. See the documentation &lt;https://docs.pytest.org/en/latest/example/simple.htmlpytest-current-test- environment-variable&gt; for more info. (2583 &lt;https://github.com/pytest- dev/pytest/issues/2583&gt;)

  • Introduced pytest.mark.filterwarnings mark which allows overwriting the warnings filter on a per test, class or module level. See the docs &lt;https://docs.pytest.org/en/latest/warnings.htmlpytest-mark- filterwarnings&gt; for more information. (2598 &lt;https://github.com/pytest- dev/pytest/issues/2598&gt;)

  • --last-failed now remembers forever when a test has failed and only forgets it if it passes again. This makes it easy to fix a test suite by selectively running files and fixing tests incrementally. (2621 &lt;https://github.com/pytest-dev/pytest/issues/2621&gt;_)

  • New pytest_report_collectionfinish hook which allows plugins to add messages to the terminal reporting after collection has been finished successfully. (2622 &lt;https://github.com/pytest-dev/pytest/issues/2622&gt;_)

  • Added support for PEP-415&#39;s &lt;https://www.python.org/dev/peps/pep-0415/&gt;_ Exception.__suppress_context__. Now if a raise exception from None is caught by pytest, pytest will no longer chain the context in the test report. The behavior now matches Python's traceback behavior. (2631 &lt;https://github.com/pytest-dev/pytest/issues/2631&gt;_)

  • Exceptions raised by pytest.fail, pytest.skip and pytest.xfail now subclass BaseException, making them harder to be caught unintentionally by normal code. (580 &lt;https://github.com/pytest-dev/pytest/issues/580&gt;_)

Bug Fixes

  • Set stdin to a closed PIPE in pytester.py.Testdir.popen() for avoid unwanted interactive pdb (2023 &lt;https://github.com/pytest- dev/pytest/issues/2023&gt;_)

  • Add missing encoding attribute to sys.std* streams when using capsys capture mode. (2375 &lt;https://github.com/pytest- dev/pytest/issues/2375&gt;_)

  • Fix terminal color changing to black on Windows if colorama is imported in a conftest.py file. (2510 &lt;https://github.com/pytest- dev/pytest/issues/2510&gt;_)

  • Fix line number when reporting summary of skipped tests. (2548 &lt;https://github.com/pytest-dev/pytest/issues/2548&gt;_)

  • capture: ensure that EncodedFile.name is a string. (2555 &lt;https://github.com/pytest-dev/pytest/issues/2555&gt;_)

  • The options --fixtures and --fixtures-per-test will now keep indentation within docstrings. (2574 &lt;https://github.com/pytest- dev/pytest/issues/2574&gt;_)

  • doctests line numbers are now reported correctly, fixing pytest-sugar122 &lt;https://github.com/Frozenball/pytest-sugar/issues/122&gt;. (2610 &lt;https://github.com/pytest-dev/pytest/issues/2610&gt;)

  • Fix non-determinism in order of fixture collection. Adds new dependency (ordereddict) for Python 2.6. (920 &lt;https://github.com/pytest- dev/pytest/issues/920&gt;_)

Improved Documentation

  • Clarify pytest_configure hook call order. (2539 &lt;https://github.com/pytest-dev/pytest/issues/2539&gt;_)

  • Extend documentation for testing plugin code with the pytester plugin. (971 &lt;https://github.com/pytest-dev/pytest/issues/971&gt;_)

Trivial/Internal Changes

  • Update help message for --strict to make it clear it only deals with unregistered markers, not warnings. (2444 &lt;https://github.com/pytest- dev/pytest/issues/2444&gt;_)

  • Internal code move: move code for pytest.approx/pytest.raises to own files in order to cut down the size of python.py (2489 &lt;https://github.com/pytest- dev/pytest/issues/2489&gt;_)

  • Renamed the utility function _pytest.compat._escape_strings to _ascii_escaped to better communicate the function's purpose. (2533 &lt;https://github.com/pytest-dev/pytest/issues/2533&gt;_)

  • Improve error message for CollectError with skip/skipif. (2546 &lt;https://github.com/pytest-dev/pytest/issues/2546&gt;_)

  • Emit warning about yield tests being deprecated only once per generator. (2562 &lt;https://github.com/pytest-dev/pytest/issues/2562&gt;_)

  • Ensure final collecte

codecov-io commented 7 years ago

Codecov Report

Merging #60 into master will increase coverage by 0.71%. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #60      +/-   ##
==========================================
+ Coverage   93.23%   93.95%   +0.71%     
==========================================
  Files           3        3              
  Lines         281      281              
==========================================
+ Hits          262      264       +2     
+ Misses         19       17       -2
Impacted Files Coverage Δ
pgdedupe/cli.py 92.7% <0%> (+0.85%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 69cc4a9...96a1d5b. Read the comment docs.

pyup-bot commented 7 years ago

Closing this in favor of #61