ok
ok copied to clipboard
Scheduled biweekly dependency update for week 32
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.
raven[flask] | 6.0.0 | » | 6.1.0 | PyPI | Changelog | Repo |
sqlalchemy | 1.1.9 | » | 1.1.13 | PyPI | Changelog | Homepage |
rq | 0.7.1 | » | 0.8.1 | PyPI | Changelog | Repo |
apache-libcloud | 1.5.0 | » | 2.1.0 | PyPI | Changelog | Homepage |
Flask-RESTful | 0.3.5 | » | 0.3.6 | PyPI | Changelog | Repo |
Flask-Migrate | 2.0.3 | » | 2.1.0 | PyPI | Changelog | Repo | Docs |
sendgrid | 3.6.3 | » | 3.6.5 | PyPI | Changelog | Repo |
requests | 2.13.0 | » | 2.18.3 | PyPI | Changelog | Homepage |
jsmin | 2.2.1 | » | 2.2.2 | PyPI | Changelog | Repo |
pygal | 2.3.1 | » | 2.4.0 | PyPI | Homepage |
pytest | 3.0.7 | » | 3.2.0 | PyPI | Changelog | Repo | Homepage |
pytest-cov | 2.4.0 | » | 2.5.1 | PyPI | Changelog | Repo |
selenium | 3.3.3 | » | 3.4.3 | PyPI | Changelog | Repo |
Changelogs
raven[flask] 6.0.0 -> 6.1.0
6.1.0
- Support both string and class values for
ignore_exceptions
parameters. Class values also support child exceptions.- Ensure consistent fingerprint for SoftTimeLimitExceeded exceptions
- Add sample_rate configuration
- fix registration of hooks for Django
sqlalchemy 1.1.9 -> 1.1.13
1.1.13
:include_notes_from: unreleased_11
.. changelog::
1.1.12
:released: July 24, 2017
.. change:: cache_order_sequence :tags: feature, oracle, posgresql :versions: 1.2.0b1
Added new keywords :paramref:`.Sequence.cache` and :paramref:`.Sequence.order` to :class:`.Sequence`, to allow rendering of the CACHE parameter understood by Oracle and PostgreSQL, and the ORDER parameter understood by Oracle. Pull request courtesy David Moore.
.. change:: 4033 :tags: bug, orm :tickets: 4033 :versions: 1.2.0b2
Fixed regression from 1.1.11 where adding additional non-entity columns to a query that includes an entity with subqueryload relationships would fail, due to an inspection added in 1.1.11 as a result of :ticket:`4011`.
.. change:: 4031 :tags: bug, orm :versions: 1.2.0b2 :tickets: 4031
Fixed bug involving JSON NULL evaluation logic added in 1.1 as part of :ticket:`3514` where the logic would not accommodate ORM mapped attributes named differently from the :class:`.Column` that was mapped.
.. change:: 4030 :tags: bug, orm :versions: 1.2.0b2 :tickets: 4030
Added ``KeyError`` checks to all methods within :class:`.WeakInstanceDict` where a check for ``key in dict`` is followed by indexed access to that key, to guard against a race against garbage collection that under load can remove the key from the dict after the code assumes its present, leading to very infrequent ``KeyError`` raises.
.. changelog::
1.1.11
:released: Monday, June 19, 2017
.. change:: 4012 :tags: bug, sql :tickets: 4012 :versions: 1.2.0b1
Fixed AttributeError which would occur in :class:`.WithinGroup` construct during an iteration of the structure.
.. change:: 4011 :tags: bug, orm :tickets: 4011 :versions: 1.2.0b1
Fixed issue with subquery eagerloading which continues on from the series of issues fixed in :ticket:`2699`, :ticket:`3106`, :ticket:`3893` involving that the "subquery" contains the correct FROM clause when beginning from a joined inheritance subclass and then subquery eager loading onto a relationship from the base class, while the query also includes criteria against the subclass. The fix in the previous tickets did not accommodate for additional subqueryload operations loading more deeply from the first level, so the fix has been further generalized.
.. change:: 4005 :tags: bug, postgresql :tickets: 4005 :versions: 1.2.0b1
Continuing with the fix that correctly handles Postgresql version string "10devel" released in 1.1.8, an additional regexp bump to handle version strings of the form "10beta1". While Postgresql now offers better ways to get this information, we are sticking w/ the regexp at least through 1.1.x for the least amount of risk to compatibility w/ older or alternate Postgresql databases.
.. change:: 4006 :tags: bug, postgresql :tickets: 4006 :versions: 1.2.0b1
Fixed bug where using :class:`.ARRAY` with a string type that features a collation would fail to produce the correct syntax within CREATE TABLE.
.. change:: 4007 :tags: bug, mysql :tickets: 4007 :versions: 1.2.0b1
MySQL 5.7 has introduced permission limiting for the "SHOW VARIABLES" command; the MySQL dialect will now handle when SHOW returns no row, in particular for the initial fetch of SQL_MODE, and will emit a warning that user permissions should be modified to allow the row to be present.
.. change:: 3994 :tags: bug, mssql :tickets: 3994 :versions: 1.2.0b1
Fixed bug where SQL Server transaction isolation must be fetched from a different view when using Azure data warehouse, the query is now attempted against both views and then a NotImplemented is raised unconditionally if failure continues to provide the best resiliency against future arbitrary API changes in new SQL Server versions.
.. change:: 3997 :tags: bug, oracle :tickets: 3997 :versions: 1.2.0b1
Support for two-phase transactions has been removed entirely for cx_Oracle when version 6.0b1 or later of the DBAPI is in use. The two- phase feature historically has never been usable under cx_Oracle 5.x in any case, and cx_Oracle 6.x has removed the connection-level "twophase" flag upon which this feature relied.
.. change:: 3973 :tags: bug, mssql :tickets: 3973 :versions: 1.2.0b1
Added a placeholder type :class:`.mssql.XML` to the SQL Server dialect, so that a reflected table which includes this type can be re-rendered as a CREATE TABLE. The type has no special round-trip behavior nor does it currently support additional qualifying arguments.
.. changelog::
1.1.10
:released: Friday, May 19, 2017
.. change:: 3986 :tags: bug, orm :versions: 1.2.0b1 :tickets: 3986
Fixed bug where a cascade such as "delete-orphan" (but others as well) would fail to locate an object linked to a relationship that itself is local to a subclass in an inheritance relationship, thus causing the operation to not take place.
.. change:: 3975 :tags: bug, oracle :versions: 1.2.0b1 :tickets: 3975
Fixed bug in cx_Oracle dialect where version string parsing would fail for cx_Oracle version 6.0b1 due to the "b" character. Version string parsing is now via a regexp rather than a simple split.
.. change:: 3949 :tags: bug, schema :versions: 1.2.0b1 :tickets: 3949
An :class:`.ArgumentError` is now raised if a :class:`.ForeignKeyConstraint` object is created with a mismatched number of "local" and "remote" columns, which otherwise causes the internal state of the constraint to be incorrect. Note that this also impacts the condition where a dialect's reflection process produces a mismatched set of columns for a foreign key constraint.
.. change:: 3980 :tags: bug, ext :versions: 1.2.0b1 :tickets: 3980
Protected against testing "None" as a class in the case where declarative classes are being garbage collected and new automap prepare() operations are taking place concurrently, very infrequently hitting a weakref that has not been fully acted upon after gc.
.. change:: :tags: bug, postgresql :versions: 1.2.0b1
Added "autocommit" support for GRANT, REVOKE keywords. Pull request courtesy Jacob Hayes.
.. change:: 3966 :tags: bug, mysql :versions: 1.2.0b1 :tickets: 3966
Removed an ancient and unnecessary intercept of the UTC_TIMESTAMP MySQL function, which was getting in the way of using it with a parameter.
.. change:: 3961 :tags: bug, mysql :versions: 1.2.0b1 :tickets: 3961
Fixed bug in MySQL dialect regarding rendering of table options in conjunction with PARTITION options when rendering CREATE TABLE. The PARTITION related options need to follow the table options, whereas previously this ordering was not enforced.
.. changelog::
rq 0.7.1 -> 0.8.1
0.8.1
- Replace
job.id
withJob
instance in local_job_stack
. Thanks katichev!job.save()
no longer implicitly callsjob.cleanup()
. Thanks katichev!- Properly catch
StopRequested
worker.heartbeat()
. Thanks fate0!- You can now pass in timeout in days. Thanks yaniv-g!
- The core logic of sending job to
FailedQueue
has been moved torq.handlers.move_to_failed_queue
. Thanks yaniv-g!- RQ cli commands now accept
--path
parameter. Thanks kirill and sjtbham!- Make
job.dependency
slightly more efficient. Thanks liangsijian!FailedQueue
now returns jobs with the correct class. Thanks amjith!- Fixed an issue where
job.save()
may fail with unpickleable return value.
0.8.0
- Refactored APIs to allow custom
Connection
,Job
,Worker
andQueue
classes via CLI. Thanks jezdez!job.delete()
now properly cleans itself from job registries. Thanks selwin!Worker
should no longer overwritejob.meta
. Thanks WeatherGod!job.save_meta()
can now be used to persist custom job data. Thanks katichev!- Added Redis Sentinel support. Thanks strawposter!
- Make
Worker.find_by_key()
more efficient. Thanks selwin!- You can now specify job
timeout
using strings such asqueue.enqueue(foo, timeout='1m')
. Thanks luojiebin!- Better unicode handling. Thanks myme5261314 and jaywink!
- Sentry should default to HTTP transport. Thanks Atala!
- Improve
HerokuWorker
termination logic. Thanks samuelcolvin!
apache-libcloud 1.5.0 -> 2.1.0
2.1.0
Common
- [AWS] Update prices and fix some region names [GITHUB-1056] (Francisco Ros)
- Fix bug in utils.decorators wrap exception method, used by vsphere driver [GITHUB-1054] (Anthony Shaw)
- Use PyTest as the unit testing runner (Anthony Shaw)
- Use of LXML is now disabled by defalt, use libcloud.utils.py3.DEFAULT_LXML = True to reenable. LXML has compatibility issues with a number of drivers and etree is a standard package [GITHUB-1038] (Anthony Shaw)
- Switch RawResponse class to use content body instead of text body, up to 10x performance improvement for methods like StorageDriver.download_object [GITHUB-1053] (Quentin Pradet)
Compute
- [OPENSTACK] Add support for Nova 2.x and Keystone 3 [GITHUB-1052] (Anthony Shaw)
- [GCE] Add loadBalancingScheme parameter for ex_create_forwarding_rule method in GCE driver. [GITHUB-1079] (sT331h0rs3)
- [GCE] Fix error codes not being parsed in certain scenarios [GITHUB-1074, LIBCLOUD-925] (micafer)
- [EC2] Fix node's Block Device Mapping was parsed from incorrect mapping. EbsInstanceBlockDevice is different from EbsBlockDevice. [GITHUB-1075] (Gennadiy Stas)
- [GANDI] Fixes the location name in image and instance type classes [GITHUB-1065] (Sayoun)
- [GCE] Fix method for create instance properties, it previously ignored the disk type parameter and defaulted to pd-standard. [GITHUB-1064] (Evan Carter)
- Fix missing return data from EC2 billing product methods [GITHUB-1062] (Alex Misstear)
- Handle [VULTR] API rate limiting [GITHUB-1058] (Francisco Ros)
- Fix Kili driver not correctly fixing the auth version for openstack to 2.0_password [GITHUB-1054] (Anthony Shaw)
- [EC2] Add i3 instance types for AWS [GITHUB-1038] (Stephen Mullins)
- [VULTR] Extend extra dict of Vultr sizes to include additional fields (plan_type and available_locations) [GITHUB-1044] (Francisco Ros)
Container
- New driver for Google Container Engine [GITHUB-1059] (Andy Maheshwari)
- [KUBERNETES] Fix get_container method responding with None [GITHUB-1054] (Anthony Shaw)
- [DOCKER] Fix for start_container method [GITHUB-1049] (johnnyWalnut)
- [DOCKER] fix add an extra check otherwise list_containers breaks with AttributeError when fromImages is specified [GITHUB-1043] (johnnyWalnut)
Storage
- [S3] Fix raise in s3.upload_object_via_stream [LIBCLOUD-914, GITHUB-1055] (Quentin Pradet)
2.0.0
Common
- Fix OpenStack drivers not correctly setting URLs when used with identity API, would default to 127.0.0.1 and service catalog URLs were not adhered to. [GITHUB-1037, LIBCLOUD-912, LIBCLOUD-904] (Anthony Shaw)
- Fix Aliyun ECS, Load balancer and storage adapters when using unicode UTF-8 characters in the names of resources in 2.0.0rc2 < it would fail as a MalformedResponseError, Python 2.7 element tree was raising a unicode error [GITHUB-1032] [GITHUB-994] (Anthony Shaw)
- Refactor the test classes to use the full libcloud.http and libcloud.common.base modules, with Connection, Response all used with requests_mock. This increases our test coverages and catches bugs in drivers' custom parse_body and auth modules [GITHUB-1031] (Anthony Shaw)
- Rename libcloud.httplib_ssl to libcloud.http now that we don't use httplib [GITHUB-1028] (Anthony Shaw)
Compute
- [GOOGLE] Add test to check that can create a GCE volume at a given location [GITHUB-1048] (Francisco Ros)
- [GOOGLE] Fix GCENodeDriver.ex_get_volume() when zone param is of class GCEZone or NodeLocation [GITHUB-1047] (Francisco Ros)
- [GOOGLE] Fix call to GCENodeDriver._ex_populate_volume_dict [GITHUB-1046] (Francisco Ros)
- [ARM] Add support for Azure Cloud Environments as well as Locations [GITHUB-969] (Peter Amstutz)
- [EC2] Add support for ModifyVolume and DescribeVolumesModifications [GITHUB-1036] (Hennadii Stas)
- [ARM] Fix string representation of the VhdImage type and fix listing of Public IP addresses [GITHUB-1035] (Anthony Shaw)
- [GOOGLE] Remove validation checks for guestOsFeatures [GITHUB-1034] (Max Illfelder)
- [VSPHERE] Fix issue with authentication methods crashing [GITHUB-1031] (Anthony Shaw)
- [ARM] Add network security groups to azure ARM [GITHUB-1033] (Joseph Hall)
- [ARM] Add the ability to list resource groups [GITHUB-1032] (Joseph Hall)
- Add 1&1 compute driver [LIBCLOUD-911] [GITHUB-1029] (Jasmin Gacic)
- Fix Azure ARM driver condition for ex_list_publishers where location is specified [GITHUB-1030] (Joseph Hall)
- Added Import Snapshot and Describe Import Snapshot to EC2 compute driver [GITHUB-1023] (Nirzari Iyer)
- Add price_monthly extra param to digitalocean sizes [GITHUB-1021] (Francisco Ros)
- Add aliyun ecs instance join leave security group [GITHUB-992] (Jie Ren)
- Add keypair management to OnApp driver [GITHUB-1018] (Tinu Cleatus)
- Add missing regions in AWS storage and compute drivers [GITHUB-1019] (Alex Misstear)
- Add SR-IOV net support to images in EC2 compute driver [GITHUB-1020] (Alex Misstear)
- Fix - update t2.small image size from 11 CPU to 1 [GITHUB-1022] (Francisco Ros)
- Added Billing Product for image in EC2 compute driver [GITHUB-1024] (Nirzari Iyer)
DNS
- Add OnApp driver [GITHUB-1017] [LIBCLOUD-907] (Tinu Cleatus)
2.0.0rc2
Common
- Fix LIBCLOUD_DEBUG trying to decompress already decompressed responses [LIBCLOUD-910] (Anthony Shaw)
- Added an integration test API and a test suite for validating functionality without mocking any libcloud subsystems [GITHUB-970] (Anthony Shaw)
- Fix for Linode classes since 2.0x [GITHUB-1026] (Anthony Shaw)
- Fix CertificateConnection not correctly signing requests in 2.0rc1, impacted Azure classic driver, OpenStack and Docker driver [GITHUB-1015] (Anthony Shaw)
- Change Cloudscale to cloudscale.ch. [GITHUB-993] (David Halter)
- Explicitly check if response is None in RawResponse class [GITHUB-1006] [LIBCLOUD-901] (Richard Xia)
Compute
- Outscale SAS doc improvements and logo update [GITHUB-950] (Javier M Mellid)
- [GCE] Allow preemptible instances to be created [GITHUB-954] (John Baublitz)
- Add support for forcing detachment of EBS volumes to EC2 driver [GITHUB-1007] (Sergey Babak)
- Fix Public IP not assigned when creating NIC on Azure ARM [GITHUB-1013] [LIBCLOUD-906] (Simone Ripamonti)
- [ONAPP] Add list images support for OnApp driver [GITHUB-1011] (Tinu Cleatus)
- [EC2] Add r4 instance types for AWS [GITHUB-997] (Jens Deppe)
- [EC2] support for AWS eu-west-2 and ca-central-1 regions [GITHUB-1009] (Marat Komarov)
- [EC2] Add P2 GPU instance types [GITHUB-996] (MJK)
- [EC2] Add method to modify snapshot attribute for EC2 [GITHUB-990] (Sayan Chowdhury)
- [Linode] Add start, stop instance methods and fix incorrect state TERMINATED to STOPPED [GITHUB-986] (Markos Gogoulos)
- [EC2] Add ENA support for EC2 compute images [GITHUB-983] (Alex Misstear)
- [Azure ARM] fix typeerror on ex_list_nics [GITHUB-979] (Choi Jongu)
- [GCE] allow delete instances from managed group [GITHUB-975] (zacharya19)
Storage
- Reintroduce S3 multipart upload support with signature v4 [GITHUB-1005] [LIBCLOUD-834] (Alex Misstear)
2.0.0rc1
Common
- Fix DEBUG mode, also add support for using io.StringIO as the file handle when calling libcloud.enable_debug. (GITHUB-978, LIBCLOUD-887) [Anthony Shaw]
- Introduction of the requests package as the mechanism for making HTTP requests for all drivers. (GITHUB-928) [Anthony Shaw]
- Fix bug where custom port and secure flag would not get propagated to connection class. (GITHUB-972) [Anthony Shaw]
- Fix bug where custom port would not get propagated to connection. (GITHUB-971) [Anthony Shaw]
- Fix bug where instantiating a connection from URL and then requesting an action with a leading / would lead to a malformed URL. (GITHUB-976) [Anthony Shaw]
Compute
- Fix a bug in profitbricks driver where listing snapshots would request a malformed URL. [GITHUB-976] (Anthony Shaw)
- Fix LIBCLOUD-806 bug where vsphere driver cannot be instantiated. (GITHUB-967) [Anthony Shaw]
- [google compute] Improve performance of list nodes by caching volume information. (GITHUB-813, LIBCLOUD-826) [Tom Melendez]
Flask-RESTful 0.3.5 -> 0.3.6
0.3.6
Released May 31, 2017
Argument.help
now supports unicode strings (564)- Flags can now be passed to
inputs.regex
(621)- Fix behavior of
action='append'
in conjunction withlocation='json'
(645)method_decorators
can be adict
to apply decorator behavior for only specific HTTP methods (532)- JSON keys are no longer sorted by default in debug mode in python3 (680)
- Various small fixes and updates to documentation
Flask-Migrate 2.0.3 -> 2.1.0
2.0.4
- Support -x arguments in "migrate" command (148)
sendgrid 3.6.3 -> 3.6.5
3.6.5
Updated
- Pull 300 Exclude test package
- Big thanks to Iryna Shcherbina for the pull request!
3.6.4
Updated
- Pull 250 Improve code quality
- Big thanks to Andrii Soldatenko for the pull request!
requests 2.13.0 -> 2.18.3
2.18.3
+++++++++++++++++++
Improvements
- Running
$ python -m requests.help
now includes the installed version of idna.
Bugfixes
- Fixed issue where Requests would raise
ConnectionError
instead ofSSLError
when encoutering SSL problems when using urllib3 v1.22.
2.18.2
+++++++++++++++++++
Bugfixes
requests.help
no longer fails on Python 2.6 due to the absence ofssl.OPENSSL_VERSION_NUMBER
.
Dependencies
- We now support urllib3 v1.22.
2.18.1
+++++++++++++++++++
Bugfixes
- Fix an error in the packaging whereby the *.whl contained incorrect data that regressed the fix in v2.17.3.
2.18.0
+++++++++++++++++++
Improvements
Response
is now a context manager, so can be used directly in awith
statement without first having to be wrapped bycontextlib.closing()
.
Bugfixes
- Resolve installation failure if multiprocessing is not available
- Resolve tests crash if multiprocessing is not able to determine the number of CPU cores
- Resolve error swallowing in utils set_environ generator
2.17.3
+++++++++++++++++++
Improvements
- Improved
packages
namespace identity support, for monkeypatching libraries.
2.17.2
+++++++++++++++++++
Improvements
- Improved
packages
namespace identity support, for monkeypatching libraries.
2.17.1
+++++++++++++++++++
Improvements
- Improved
packages
namespace identity support, for monkeypatching libraries.
2.17.0
+++++++++++++++++++
Improvements
- Removal of the 301 redirect cache. This improves thread-safety.
2.16.5
+++++++++++++++++++
- Improvements to
$ python -m requests.help
.
2.16.4
+++++++++++++++++++
- Introduction of the
$ python -m requests.help
command, for debugging with maintainers!
2.16.3
+++++++++++++++++++
- Further restored the
requests.packages
namespace for compatibility reasons.
2.16.2
+++++++++++++++++++
- Further restored the
requests.packages
namespace for compatibility reasons.
No code modification (noted below) should be neccessary any longer.
2.16.1
+++++++++++++++++++
- Restored the
requests.packages
namespace for compatibility reasons.- Bugfix for
urllib3
version parsing.
Note: code that was written to import against the
requests.packages
namespace previously will have to import code that rests at this module-level now.
For example::
from requests.packages.urllib3.poolmanager import PoolManager
Will need to be re-written to be::
from requests.packages import urllib3 urllib3.poolmanager.PoolManager
Or, even better::
from urllib3.poolmanager import PoolManager
2.16.0
+++++++++++++++++++
- Unvendor ALL the things!
2.15.1
+++++++++++++++++++
- Everyone makes mistakes.
2.15.0
+++++++++++++++++++
Improvements
- Introduction of the
Response.next
property, for getting the nextPreparedResponse
from a redirect chain (whenallow_redirects=False
).- Internal refactoring of
__version__
module.
Bugfixes
- Restored once-optional parameter for
requests.utils.get_environ_proxies()
.
2.14.2
+++++++++++++++++++
Bugfixes
- Changed a less-than to an equal-to and an or in the dependency markers to widen compatibility with older setuptools releases.
2.14.1
+++++++++++++++++++
Bugfixes
- Changed the dependency markers to widen compatibility with older pip releases.
2.14.0
+++++++++++++++++++
Improvements
- It is now possible to pass
no_proxy
as a key to theproxies
dictionary to provide handling similar to theNO_PROXY
environment variable.- When users provide invalid paths to certificate bundle files or directories Requests now raises
IOError
, rather than failing at the time of the HTTPS request with a fairly inscrutable certificate validation error.- The behavior of
SessionRedirectMixin
was slightly altered.resolve_redirects
will now detect a redirect by callingget_redirect_target(response)
instead of directly queryingResponse.is_redirect
andResponse.headers['location']
. Advanced users will be able to process malformed redirects more easily.- Changed the internal calculation of elapsed request time to have higher resolution on Windows.
- Added
win_inet_pton
as conditional dependency for the[socks]
extra on Windows with Python 2.7.- Changed the proxy bypass implementation on Windows: the proxy bypass check doesn't use forward and reverse DNS requests anymore
- URLs with schemes that begin with
http
but are nothttp
orhttps
no longer have their host parts forced to lowercase.
Bugfixes
- Much improved handling of non-ASCII
Location
header values in redirects. FewerUnicodeDecodeErrors
are encountered on Python 2, and Python 3 now correctly understands that Latin-1 is unlikely to be the correct encoding.- If an attempt to
seek
file to find out its length fails, we now appropriately handle that by aborting our content-length calculations.- Restricted
HTTPDigestAuth
to only respond to auth challenges made on 4XX responses, rather than to all auth challenges.- Fixed some code that was firing
DeprecationWarning
on Python 3.6.- The dismayed person emoticon (
/o\\
) no longer has a big head. I'm sure this is what you were all worrying about most.
Miscellaneous
- Updated bundled urllib3 to v1.21.1.
- Updated bundled chardet to v3.0.2.
- Updated bundled idna to v2.5.
- Updated bundled certifi to 2017.4.17.
jsmin 2.2.1 -> 2.2.2
2.2.2
- Add license headers to code files (fixes i17)
- Remove mercurial files (fixes 20)
pytest -> 3.2.0
3.1.3
=========================
Bug Fixes
- Fix decode error in Python 2 for doctests in docstrings. (
2434 <https://github.com/pytest-dev/pytest/issues/2434>
_)
- Exceptions raised during teardown by finalizers are now suppressed until all finalizers are called, with the initial exception reraised. (
2440 <https://github.com/pytest-dev/pytest/issues/2440>
_)
- Fix incorrect "collected items" report when specifying tests on the command- line. (
2464 <https://github.com/pytest-dev/pytest/issues/2464>
_)
deprecated_call
in context-manager form now captures deprecation warnings even if the same warning has already been raised. Also,deprecated_call
will always produce the same error message (previously it would produce different messages in context-manager vs. function-call mode). (2469 <https://github.com/pytest-dev/pytest/issues/2469>
_)
- Fix issue where paths collected by pytest could have triple leading
/
characters. (2475 <https://github.com/pytest-dev/pytest/issues/2475>
_)
- Fix internal error when trying to detect the start of a recursive traceback. (
2486 <https://github.com/pytest-dev/pytest/issues/2486>
_)
Improved Documentation
- Explicitly state for which hooks the calls stop after the first non-None result. (
2493 <https://github.com/pytest-dev/pytest/issues/2493>
_)
Trivial/Internal Changes
- Create invoke tasks for updating the vendored packages. (
2474 <https://github.com/pytest-dev/pytest/issues/2474>
_)
- Update copyright dates in LICENSE, README.rst and in the documentation. (
2499 <https://github.com/pytest-dev/pytest/issues/2499>
_)
3.1.2
=========================
Bug Fixes
- Required options added via
pytest_addoption
will no longer prevent using --help without passing them. (1999)
- Respect
python_files
in assertion rewriting. (2121)
- Fix recursion error detection when frames in the traceback contain objects that can't be compared (like
numpy
arrays). (2459)
UnicodeWarning
is issued from the internal pytest warnings plugin only when the message contains non-ascii unicode (Python 2 only). (2463)
- Added a workaround for Python 3.6
WindowsConsoleIO
breaking due to Pytests'sFDCapture
. Other code using console handles might still be affected by the very same issue and might require further workarounds/fixes, i.e.colorama
. (2467)
Improved Documentation
- Fix internal API links to
pluggy
objects. (2331)
- Make it clear that
pytest.xfail
stops test execution at the calling point and improve overall flow of theskipping
docs. (810)
3.1.1
=========================
Bug Fixes
- pytest warning capture no longer overrides existing warning filters. The previous behaviour would override all filters and caused regressions in test suites which configure warning filters to match their needs. Note that as a side-effect of this is that
DeprecationWarning
andPendingDeprecationWarning
are no longer shown by default. (2430)
- Fix issue with non-ascii contents in doctest text files. (2434)
- Fix encoding errors for unicode warnings in Python 2. (2436)
pytest.deprecated_call
now capturesPendingDeprecationWarning
in context manager form. (2441)
Improved Documentation
- Addition of towncrier for changelog management. (2390)
3.1.0
==================
New Features
- The
pytest-warnings
plugin has been integrated into the core and nowpytest
automatically captures and displays warnings at the end of the test session.
.. warning::
This feature may disrupt test suites which apply and treat warnings themselves, and can be disabled in your
pytest.ini
:
.. code-block:: ini
[pytest] addopts = -p no:warnings
See the
warnings documentation page <https://docs.pytest.org/en/latest/warnings.html>
_ for more information.
Thanks
nicoddemus
_ for the PR.
- Added
junit_suite_name
ini option to specify root<testsuite>
name for JUnit XML reports (533
_).
- Added an ini option
doctest_encoding
to specify which encoding to use for doctest files. Thankswheerd
_ for the PR (2101
_).
pytest.warns
now checks for subclass relationship rather than class equality. Thankslesteve
_ for the PR (2166
_)
pytest.raises
now asserts that the error message matches a text or regex with thematch
keyword argument. ThanksKriechi
_ for the PR.
pytest.param
can be used to declare test parameter sets with marks and test ids. ThanksRonnyPfannschmidt
_ for the PR.
Changes
- remove all internal uses of pytest_namespace hooks, this is to prepare the removal of preloadconfig in pytest 4.0 Thanks to
RonnyPfannschmidt
_ for the PR.
- pytest now warns when a callable ids raises in a parametrized test. Thanks
fogo
_ for the PR.
- It is now possible to skip test classes from being collected by setting a
__test__
attribute toFalse
in the class body (2007
). Thanks tosyre
for the report andlwm
_ for the PR.
- Change junitxml.py to produce reports that comply with Junitxml schema. If the same test fails with failure in call and then errors in teardown we split testcase element into two, one containing the error and the other the failure. (
2228
) Thanks tokkoukiou
for the PR.
- Testcase reports with a
url
attribute will now properly write this to junitxml. Thanksfushi
_ for the PR (1874
_).
- Remove common items from dict comparision output when verbosity=1. Also update the truncation message to make it clearer that pytest truncates all assertion messages if verbosity < 2 (
1512
). Thanksmattduck
for the PR
--pdbcls
no longer implies--pdb
. This makes it possible to useaddopts=--pdbcls=module.SomeClass
onpytest.ini
. Thanksdavidszotten
_ for the PR (1952
_).
- fix
2013
_: turn RecordedWarning intonamedtuple
, to give it a comprehensible repr while preventing unwarranted modification.
- fix
2208
_: ensure a iteration limit for pytest.compat.get_real_func. ThanksRonnyPfannschmidt
for the report and PR.
- Hooks are now verified after collection is complete, rather than right after loading installed plugins. This makes it easy to write hooks for plugins which will be loaded during collection, for example using the
pytest_plugins
special variable (1821
). Thanksnicoddemus
for the PR.
- Modify
pytest_make_parametrize_id()
hook to acceptargname
as an additional parameter. Thanksunsignedint
_ for the PR.
- Add
venv
to the defaultnorecursedirs
setting. ThanksThe-Compiler
_ for the PR.
PluginManager.import_plugin
now accepts unicode plugin names in Python 2. Thanksreutsharabani
_ for the PR.
- fix
2308
: When using both--lf
and--ff
, only the last failed tests are run. Thanksojii
for the PR.
- Replace minor/patch level version numbers in the documentation with placeholders. This significantly reduces change-noise as different contributors regnerate the documentation on different platforms. Thanks
RonnyPfannschmidt
_ for the PR.
- fix
2391
: consider pytest_plugins on all plugin modules ThanksRonnyPfannschmidt
for the PR.
Bug Fixes
- Fix
AttributeError
onsys.stdout.buffer
/sys.stderr.buffer
while usingcapsys
fixture in python 3. (1407
). Thanks toasottile
.
- Change capture.py's
DontReadFromInput
class to throwio.UnsupportedOperation
errors rather than ValueErrors in thefileno
method (2276
). Thanksmetasyn
andvlad-dragos
_ for the PR.
- Fix exception formatting while importing modules when the exception message contains non-ascii characters (
2336
). Thanksfabioz
for the report andnicoddemus
_ for the PR.
- Added documentation related to issue (
1937
) Thanksskylarjhdownes
for the PR.
- Allow collecting files with any file extension as Python modules (
2369
). ThanksKodiologist
for the PR.
- Show the correct error message when collect "parametrize" func with wrong args (
2383
). ThanksThe-Compiler
for the report androbin0371
_ for the PR.
.. _davidszotten: https://github.com/davidszotten .. _fabioz: https://github.com/fabioz .. _fogo: https://github.com/fogo .. _fushi: https://github.com/fushi .. _Kodiologist: https://github.com/Kodiologist .. _Kriechi: https://github.com/Kriechi .. _mandeep: https://github.com/mandeep .. _mattduck: https://github.com/mattduck .. _metasyn: https://github.com/metasyn .. _MichalTHEDUDE: https://github.com/MichalTHEDUDE .. _ojii: https://github.com/ojii .. _reutsharabani: https://github.com/reutsharabani .. _robin0371: https://github.com/robin0371 .. _skylarjhdownes: https://github.com/skylarjhdownes .. _unsignedint: https://github.com/unsignedint .. _wheerd: https://github.com/wheerd
.. _1407: https://github.com/pytest-dev/pytest/issues/1407 .. _1512: https://github.com/pytest-dev/pytest/issues/1512 .. _1821: https://github.com/pytest-dev/pytest/issues/1821 .. _1874: https://github.com/pytest-dev/pytest/pull/1874 .. _1937: https://github.com/pytest-dev/pytest/issues/1937 .. _1952: https://github.com/pytest-dev/pytest/pull/1952 .. _2007: https://github.com/pytest-dev/pytest/issues/2007 .. _2013: https://github.com/pytest-dev/pytest/issues/2013 .. _2101: https://github.com/pytest-dev/pytest/pull/2101 .. _2166: https://github.com/pytest-dev/pytest/pull/2166 .. _2208: https://github.com/pytest-dev/pytest/issues/2208 .. _2228: https://github.com/pytest-dev/pytest/issues/2228 .. _2276: https://github.com/pytest-dev/pytest/issues/2276 .. _2308: https://github.com/pytest-dev/pytest/issues/2308 .. _2336: https://github.com/pytest-dev/pytest/issues/2336 .. _2369: https://github.com/pytest-dev/pytest/issues/2369 .. _2383: https://github.com/pytest-dev/pytest/issues/2383 .. _2391: https://github.com/pytest-dev/pytest/issues/2391 .. _533: https://github.com/pytest-dev/pytest/issues/533
3.0.7
==================
- Fix issue in assertion rewriting breaking due to modules silently discarding other modules when importing fails Notably, importing the
anydbm
module is fixed. (2248
). Thankspfhayes
for the PR.
- junitxml: Fix problematic case where system-out tag occured twice per testcase element in the XML report. Thanks
kkoukiou
_ for the PR.
- Fix regression, pytest now skips unittest correctly if run with
--pdb
(2137
). Thanks togst
for the report andmbyt
_ for the PR.
- Ignore exceptions raised from descriptors (e.g. properties) during Python test collection (
2234
). Thanks tobluetech
.
--override-ini
now correctly overrides some fundamental options likepython_files
(2238
). Thankssirex
for the report andnicoddemus
_ for the PR.
- Replace
raise StopIteration
usages in the code by simplereturns
to finish generators, in accordance toPEP-479
_ (2160
). Thankstgoodlet
for the report andnicoddemus
_ for the PR.
- Fix internal errors when an unprintable
AssertionError
is raised inside a test. Thanksomerhadari
_ for the PR.
- Skipping plugin now also works with test items generated by custom collectors (
2231
). Thanks tovidartf
.
- Fix trailing whitespace in console output if no .ini file presented (
2281
). Thanksfbjorn
for the PR.
- Conditionless
xfail
markers no longer rely on the underlying test item being an instance ofPyobjMixin
, and can therefore apply to tests not collected by the built-in python test collector. Thanksbarneygale
_ for the PR.
.. _pfhayes: https://github.com/pfhayes .. _bluetech: https://github.com/bluetech .. _gst: https://github.com/gst .. _sirex: https://github.com/sirex .. _vidartf: https://github.com/vidartf .. _kkoukiou: https://github.com/KKoukiou .. _omerhadari: https://github.com/omerhadari .. _fbjorn: https://github.com/fbjorn
.. _2248: https://github.com/pytest-dev/pytest/issues/2248 .. _2137: https://github.com/pytest-dev/pytest/issues/2137 .. _2160: https://github.com/pytest-dev/pytest/issues/2160 .. _2231: https://github.com/pytest-dev/pytest/issues/2231 .. _2234: https://github.com/pytest-dev/pytest/issues/2234 .. _2238: https://github.com/pytest-dev/pytest/issues/2238 .. _2281: https://github.com/pytest-dev/pytest/issues/2281
.. _PEP-479: https://www.python.org/dev/peps/pep-0479/
3.0.6
==================
- pytest no longer generates
PendingDeprecationWarning
from its own operations, which was introduced by mistake in version3.0.5
(2118
). Thanks tonicoddemus
for the report andRonnyPfannschmidt
_ for the PR.
- pytest no longer recognizes coroutine functions as yield tests (
2129
). Thanks tomalinoff
for the PR.
- Plugins loaded by the
PYTEST_PLUGINS
environment variable are now automatically considered for assertion rewriting (2185
). Thanksnicoddemus
for the PR.
- Improve error message when pytest.warns fails (
2150
). The type(s) of the expected warnings and the list of caught warnings is added to the error message. Thankslesteve
for the PR.
- Fix
pytester
internal plugin to work correctly with latest versions ofzope.interface
(1989
). Thanksnicoddemus
for the PR.
- Assert statements of the
pytester
plugin again benefit from assertion rewriting (1920
). ThanksRonnyPfannschmidt
for the report andnicoddemus
_ for the PR.
- Specifying tests with colons like
test_foo.py::test_bar
for tests in subdirectories with ini configuration files now uses the correct ini file (2148
). Thankspelme
.
- Fail
testdir.runpytest().assert_outcomes()
explicitly if the pytest terminal output it relies on is missing. Thanks toeli-b
_ for the PR.
.. _barneygale: https://github.com/barneygale .. _lesteve: https://github.com/lesteve .. _malinoff: https://github.com/malinoff .. _pelme: https://github.com/pelme .. _eli-b: https://github.com/eli-b
.. _2118: https://github.com/pytest-dev/pytest/issues/2118
.. _1989: https://github.com/pytest-dev/pytest/issues/1989 .. _1920: https://github.com/pytest-dev/pytest/issues/1920 .. _2129: https://github.com/pytest-dev/pytest/issues/2129 .. _2148: https://github.com/pytest-dev/pytest/issues/2148 .. _2150: https://github.com/pytest-dev/pytest/issues/2150 .. _2185: https://github.com/pytest-dev/pytest/issues/2185
3.0.5
==================
- Add warning when not passing
option=value
correctly to-o/--override-ini
(2105
). Also improved the help documentation. Thanks tombukatov
for the report andlwm
_ for the PR.
- Now
--confcutdir
and--junit-xml
are properly validated if they are directories and filenames, respectively (2089
_ and2078
). Thanks tolwm
for the PR.
- Add hint to error message hinting possible missing
__init__.py
(478
). ThanksDuncanBetts
.
- More accurately describe when fixture finalization occurs in documentation (
687
). ThanksDuncanBetts
.
- Provide
:ref:
targets forrecwarn.rst
so we can use intersphinx referencing. Thanks todupuy
_ for the report andlwm
_ for the PR.
- In Python 2, use a simple
+-
ASCII string in the string representation ofpytest.approx
(for example"4 +- 4.0e-06"
) because it is brittle to handle that in different contexts and representations internally in pytest which can result in bugs such as2111
. In Python 3, the representation still uses±
(for example4 ± 4.0e-06
). Thankskerrick-lyft
for the report andnicoddemus
_ for the PR.
- Using
item.Function
,item.Module
, etc., is now issuing deprecation warnings, preferpytest.Function
,pytest.Module
, etc., instead (2034
). Thanksnmundar
for the PR.
- Fix error message using
approx
with complex numbers (2082
). Thanksadler-j
for the report andnicoddemus
_ for the PR.
- Fixed false-positives warnings from assertion rewrite hook for modules imported more than once by the
pytest_plugins
mechanism. Thanksnicoddemus
_ for the PR.
- Remove an internal cache which could cause hooks from
conftest.py
files in sub-directories to be called in other directories incorrectly (2016
). Thanksd-b-w
for the report andnicoddemus
_ for the PR.
- Remove internal code meant to support earlier Python 3 versions that produced the side effect of leaving
None
insys.modules
when expressions were evaluated by pytest (for example passing a condition as a string topytest.mark.skipif
)(2103
). Thanksjaraco
for the report andnicoddemus
_ for the PR.
- Cope gracefully with a .pyc file with no matching .py file (
2038
). Thanksnedbat
.
.. _syre: https://github.com/syre .. _adler-j: https://github.com/adler-j .. _d-b-w: https://bitbucket.org/d-b-w/ .. _DuncanBetts: https://github.com/DuncanBetts .. _dupuy: https://bitbucket.org/dupuy/ .. _kerrick-lyft: https://github.com/kerrick-lyft .. _lwm: https://github.com/lwm .. _mbukatov: https://github.com/mbukatov .. _nedbat: https://github.com/nedbat .. _nmundar: https://github.com/nmundar
.. _2016: https://github.com/pytest-dev/pytest/issues/2016 .. _2034: https://github.com/pytest-dev/pytest/issues/2034 .. _2038: https://github.com/pytest-dev/pytest/issues/2038 .. _2078: https://github.com/pytest-dev/pytest/issues/2078 .. _2082: https://github.com/pytest-dev/pytest/issues/2082 .. _2089: https://github.com/pytest-dev/pytest/issues/2089 .. _2103: https://github.com/pytest-dev/pytest/issues/2103 .. _2105: https://github.com/pytest-dev/pytest/issues/2105 .. _2111: https://github.com/pytest-dev/pytest/issues/2111 .. _478: https://github.com/pytest-dev/pytest/issues/478 .. _687: https://github.com/pytest-dev/pytest/issues/687
3.0.4
==================
- Import errors when collecting test modules now display the full traceback (
1976
). Thankscwitty
for the report andnicoddemus
_ for the PR.
- Fix confusing command-line help message for custom options with two or more
metavar
properties (2004
). Thanksokulynyak
anddavehunt
_ for the report andnicoddemus
_ for the PR.
- When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (
1998
). Thanksnicoddemus
for the PR.
- Fixed cyclic reference when
pytest.raises
is used in context-manager form (1965
). Also as a result of this fix,sys.exc_info()
is left empty in both context-manager and function call usages. Previously,sys.exc_info
would contain the exception caught by the context manager, even when the expected exception occurred. ThanksMSeifert04
for the report and the PR.
- Fixed false-positives warnings from assertion rewrite hook for modules that were rewritten but were later marked explicitly by
pytest.register_assert_rewrite
or implicitly as a plugin (2005
). ThanksRonnyPfannschmidt
for the report andnicoddemus
_ for the PR.
- Report teardown output on test failure (
442
). Thanksmatclab
for the PR.
- Fix teardown error message in generated xUnit XML. Thanks
gdyuldin
_ for the PR.
- Properly handle exceptions in
multiprocessing
tasks (1984
). Thanksadborden
for the report andnicoddemus
_ for the PR.
- Clean up unittest TestCase objects after tests are complete (
1649
). Thanksd_b_w
for the report and PR.
.. _adborden: https://github.com/adborden .. _cwitty: https://github.com/cwitty .. _d_b_w: https://github.com/d_b_w .. _gdyuldin: https://github.com/gdyuldin .. _matclab: https://github.com/matclab .. _MSeifert04: https://github.com/MSeifert04 .. _okulynyak: https://github.com/okulynyak
.. _442: https://github.com/pytest-dev/pytest/issues/442 .. _1965: https://github.com/pytest-dev/pytest/issues/1965 .. _1976: https://github.com/pytest-dev/pytest/issues/1976 .. _1984: https://github.com/pytest-dev/pytest/issues/1984 .. _1998: https://github.com/pytest-dev/pytest/issues/1998 .. _2004: https://github.com/pytest-dev/pytest/issues/2004 .. _2005: https://github.com/pytest-dev/pytest/issues/2005 .. _1649: https://github.com/pytest-dev/pytest/issues/1649
3.0.3
==================
- The
ids
argument toparametrize
again acceptsunicode
strings in Python 2 (1905
). Thanksphilpep
for the report andnicoddemus
_ for the PR.
- Assertions are now being rewritten for plugins in development mode (
pip install -e
) (1934
). Thanksnicoddemus
for the PR.
- Fix pkg_resources import error in Jython projects (
1853
). Thanksraquel-ucl
for the PR.
- Got rid of
AttributeError: 'Module' object has no attribute '_obj'
exception in Python 3 (1944
). Thanksaxil
for the PR.
- Explain a bad scope value passed to
fixture
declarations or aMetaFunc.parametrize()
call. Thankstgoodlet
_ for the PR.
- This version includes
pluggy-0.4.0
, which correctly handlesVersionConflict
errors in plugins (704
). Thanksnicoddemus
for the PR.
.. _philpep: https://github.com/philpep .. _raquel-ucl: https://github.com/raquel-ucl .. _axil: https://github.com/axil .. _tgoodlet: https://github.com/tgoodlet .. _vlad-dragos: https://github.com/vlad-dragos
.. _1853: https://github.com/pytest-dev/pytest/issues/1853 .. _1905: https://github.com/pytest-dev/pytest/issues/1905 .. _1934: https://github.com/pytest-dev/pytest/issues/1934 .. _1944: https://github.com/pytest-dev/pytest/issues/1944 .. _704: https://github.com/pytest-dev/pytest/issues/704
3.0.2
==================
- Improve error message when passing non-string ids to
pytest.mark.parametrize
(1857
). Thanksokken
for the report andnicoddemus
_ for the PR.
- Add
buffer
attribute to stdin stub classpytest.capture.DontReadFromInput
ThanksjoguSD
_ for the PR.
- Fix
UnicodeEncodeError
when string comparison with unicode has failed. (1864
) ThanksAiOO
for the PR.
pytest_plugins
is now handled correctly if defined as a string (as opposed as a sequence of strings) when modules are considered for assertion rewriting. Due to this bug, much more modules were being rewritten than necessary if a test suite usespytest_plugins
to load internal plugins (1888
). Thanksjaraco
for the report andnicoddemus
_ for the PR (1891
_).
- Do not call tearDown and cleanups when running tests from
unittest.TestCase
subclasses with--pdb
enabled. This allows proper post mortem debugging for all applications which have significant logic in their tearDown machinery (1890
). Thanksmbyt
for the PR.
- Fix use of deprecated
getfuncargvalue
method in the internal doctest plugin. ThanksViviCoder
_ for the report (1898
_).
.. _joguSD: https://github.com/joguSD .. _AiOO: https://github.com/AiOO .. _mbyt: https://github.com/mbyt .. _ViviCoder: https://github.com/ViviCoder
.. _1857: https://github.com/pytest-dev/pytest/issues/1857 .. _1864: https://github.com/pytest-dev/pytest/issues/1864 .. _1888: https://github.com/pytest-dev/pytest/issues/1888 .. _1891: https://github.com/pytest-dev/pytest/pull/1891 .. _1890: https://github.com/pytest-dev/pytest/issues/1890 .. _1898: https://github.com/pytest-dev/pytest/issues/1898
3.0.1
==================
- Fix regression when
importorskip
is used at module level (1822
). Thanksjaraco
andThe-Compiler
_ for the report andnicoddemus
_ for the PR.
- Fix parametrization scope when session fixtures are used in conjunction with normal parameters in the same call (
1832
). ThanksThe-Compiler
for the report,Kingdread
_ andnicoddemus
_ for the PR.
- Fix internal error when parametrizing tests or fixtures using an empty
ids
argument (1849
). ThanksOPpuolitaival
for the report andnicoddemus
_ for the PR.
- Fix loader error when running
pytest
embedded in a zipfile. Thanksmbachry
_ for the PR.
.. _Kingdread: https://github.com/Kingdread .. _mbachry: https://github.com/mbachry .. _OPpuolitaival: https://github.com/OPpuolitaival
.. _1822: https://github.com/pytest-dev/pytest/issues/1822 .. _1832: https://github.com/pytest-dev/pytest/issues/1832 .. _1849: https://github.com/pytest-dev/pytest/issues/1849
3.0.0
==================
Incompatible changes
A number of incompatible changes were made in this release, with the intent of removing features deprecated for a long time or change existing behaviors in order to make them less surprising/more useful.
- Reinterpretation mode has now been removed. Only plain and rewrite mode are available, consequently the
--assert=reinterp
option is no longer available. This also means files imported from plugins orconftest.py
will not benefit from improved assertions by default, you should usepytest.register_assert_rewrite()
to explicitly turn on assertion rewriting for those files. Thanksflub
_ for the PR.
- The following deprecated commandline options were removed:
--genscript
: no longer supported;--no-assert
: use--assert=plain
instead;--nomagic
: use--assert=plain
instead;--report
: use-r
instead;
Thanks to
RedBeardCode
_ for the PR (1664
_).
- ImportErrors in plugins now are a fatal error instead of issuing a pytest warning (
1479
). Thanks toThe-Compiler
for the PR.
- Removed support code for Python 3 versions < 3.3 (
1627
_).
- Removed all
py.test-X*
entry points. The versioned, suffixed entry points were never documented and a leftover from a pre-virtualenv era. These entry points also created broken entry points in wheels, so removing them also removes a source of confusion for users (1632
). Thanksobestwalter
for the PR.
pytest.skip()
now raises an error when used to decorate a test function, as opposed to its original intent (to imperatively skip a test inside a test function). Previously this usage would cause the entire module to be skipped (607
). Thanksomarkohl
for the complete PR (1519
_).
- Exit tests if a collection error occurs. A poll indicated most users will hit CTRL-C anyway as soon as they see collection errors, so pytest might as well make that the default behavior (
1421
). A--continue-on-collection-errors
option has been added to restore the previous behaviour. Thanksolegpidsadnyi
andomarkohl
_ for the complete PR (1628
_).
- Renamed the pytest
pdb
module (plugin) intodebugging
to avoid clashes with the builtinpdb
module.
- Raise a helpful failure message when requesting a parametrized fixture at runtime, e.g. with
request.getfixturevalue
. Previously these parameters were simply never defined, so a fixture decorated likepytest.fixture(params=[0, 1, 2])
only ran once (460
). Thanks tonikratio
for the bug report,RedBeardCode
_ andtomviner
_ for the PR.
_pytest.monkeypatch.monkeypatch
class has been renamed to_pytest.monkeypatch.MonkeyPatch
so it doesn't conflict with themonkeypatch
fixture.
--exitfirst / -x
can now be overridden by a following--maxfail=N
and is just a synonym for--maxfail=1
.
New Features
- Support nose-style
__test__
attribute on methods of classes, including unittest-style Classes. If set toFalse
, the test will not be collected.
- New
doctest_namespace
fixture for injecting names into the namespace in which doctests run. Thanksmilliams
_ for the complete PR (1428
_).
- New
--doctest-report
option available to change the output format of diffs when running (failing) doctests (implements1749
). Thankshartym
for the PR.
- New
name
argument topytest.fixture
decorator which allows a custom name for a fixture (to solve the funcarg-shadowing-fixture problem). Thanksnovas0x2a
_ for the complete PR (1444
_).
- New
approx()
function for easily comparing floating-point numbers in tests. Thankskalekundert
_ for the complete PR (1441
_).
- Ability to add global properties in the final xunit output file by accessing the internal
junitxml
plugin (experimental). Thankstareqalayan
_ for the complete PR1454
_).
- New
ExceptionInfo.match()
method to match a regular expression on the string representation of an exception (372
). Thanksomarkohl
for the complete PR (1502
_).
__tracebackhide__
can now also be set to a callable which then can decide whether to filter the traceback based on theExceptionInfo
object passed to it. ThanksThe-Compiler
_ for the complete PR (1526
_).
- New
pytest_make_parametrize_id(config, val)
hook which can be used by plugins to provide friendly strings for custom types. Thankspalaviv
_ for the PR.
capsys
andcapfd
now have adisabled()
context-manager method, which can be used to temporarily disable capture within a test. Thanksnicoddemus
_ for the PR.
- New cli flag
--fixtures-per-test
: shows which fixtures are being used for each selected test item. Features doc strings of fixtures by default. Can also show where fixtures are defined if combined with-v
. Thankshackebrot
_ for the PR.
- Introduce
pytest
command as recommended entry point. Note thatpy.test
still works and is not scheduled for removal. Closes proposal1629
. Thanksobestwalter
anddavehunt
_ for the complete PR (1633
_).
- New cli flags:
--setup-plan
: performs normal collection and reports the potential setup and teardown and does not execute any fixtures and tests;--setup-only
: performs normal collection, executes setup and teardown of fixtures and reports them;--setup-show
: performs normal test execution and additionally shows setup and teardown of fixtures;--keep-duplicates
: py.test now ignores duplicated paths given in the command line. To retain the previous behavior where the same test could be run multiple times by specifying it in the command-line multiple times, pass the--keep-duplicates
argument (1609
_);
Thanks
d6e
,kvas-it
,sallner
,ioggstream
andomarkohl
_ for the PRs.
- New CLI flag
--override-ini
/-o
: overrides values from the ini file. For example:"-o xfail_strict=True"
'. Thanksblueyed
_ andfengxx
_ for the PR.
- New hooks:
pytest_fixture_setup(fixturedef, request)
: executes fixture setup;pytest_fixture_post_finalizer(fixturedef)
: called after the fixture's finalizer and has access to the fixture's result cache.
Thanks
d6e
,sallner
.
- Issue warnings for asserts whose test is a tuple literal. Such asserts will never fail because tuples are always truthy and are usually a mistake (see
1562
). Thankskvas-it
, for the PR.
- Allow passing a custom debugger class (e.g.
--pdbcls=IPython.core.debugger:Pdb
). Thanks toanntzer
_ for the PR.
Changes
- Plugins now benefit from assertion rewriting. Thanks
sober7
,nicoddemus
andflub
_ for the PR.
- Change
report.outcome
forxpassed
tests to"passed"
in non-strict mode and"failed"
in strict mode. Thanks tohackebrot
_ for the PR (1795
) andgprasad84
for report (1546
_).
- Tests marked with
xfail(strict=False)
(the default) now appear in JUnitXML reports as passing tests instead of skipped. Thanks tohackebrot
_ for the PR (1795
_).
- Highlight path of the file location in the error report to make it easier to copy/paste. Thanks
suzaku
_ for the PR (1778
_).
- Fixtures marked with
pytest.fixture
can now useyield
statements exactly like those marked with thepytest.yield_fixture
decorator. This change renderspytest.yield_fixture
deprecated and makespytest.fixture
withyield
statements the preferred way to write teardown code (1461
). Thankscsaftoiu
for bringing this to attention andnicoddemus
_ for the PR.
- Explicitly passed parametrize ids do not get escaped to ascii (
1351
). Thanksceridwen
for the PR.
- Fixtures are now sorted in the error message displayed when an unknown fixture is declared in a test function. Thanks
nicoddemus
_ for the PR.
pytest_terminal_summary
hook now receives theexitstatus
of the test session as argument. Thanksblueyed
_ for the PR (1809
_).
- Parametrize ids can accept
None
as specific test id, in which case the automatically generated id for that argument will be used. Thankspalaviv
_ for the complete PR (1468
_).
- The parameter to xunit-style setup/teardown methods (
setup_method
,setup_module
, etc.) is now optional and may be omitted. Thanksokken
_ for bringing this to attention andnicoddemus
_ for the PR.
- Improved automatic id generation selection in case of duplicate ids in parametrize. Thanks
palaviv
_ for the complete PR (1474
_).
- Now pytest warnings summary is shown up by default. Added a new flag
--disable-pytest-warnings
to explicitly disable the warnings summary (1668
_).
- Make ImportError during collection more explicit by reminding the user to check the name of the test module/package(s) (
1426
). Thanksomarkohl
for the complete PR (1520
_).
- Add
build/
anddist/
to the default--norecursedirs
list. Thanksmikofski
_ for the report andtomviner
_ for the PR (1544
_).
pytest.raises
in the context manager form accepts a custommessage
to raise when no exception occurred. Thankspalaviv
_ for the complete PR (1616
_).
conftest.py
files now benefit from assertion rewriting; previously it was only available for test modules. Th