Sourced from click's releases.
8.1.0
This is a feature release, which includes new features and removes previously deprecated features. The 8.1.x branch is now the supported bugfix branch, the 8.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.
Sourced from click's changelog.
Version 8.1.0
Released 2022-03-28
Drop support for Python 3.6. :pr:
2129
Remove previously deprecated code. :pr:
2130
Group.resultcallback
is renamed toresult_callback
.autocompletion
parameter toCommand
is renamed toshell_complete
.get_terminal_size
is removed, useshutil.get_terminal_size
instead.get_os_args
is removed, usesys.argv[1:]
instead.Rely on :pep:
538
and :pep:540
to handle selecting UTF-8 encoding instead of ASCII. Click's locale encoding detection is removed. :issue:2198
Single options boolean flags with
show_default=True
only show the default if it isTrue
. :issue:1971
The
command
andgroup
decorators can be applied with or without parentheses. :issue:1359
The
Path
type can check whether the target is executable. :issue:1961
Command.show_default
overridesContext.show_default
, instead of the other way around. :issue:1963
Parameter decorators and
@group
handlescls=None
the same as not passingcls
.@option
handleshelp=None
the same as not passinghelp
. :issue:[#1959](https://github.com/pallets/click/issues/1959)
A flag option with
required=True
requires that the flag is passed instead of choosing the implicit default value. :issue:1978
Indentation in help text passed to
Option
andCommand
is cleaned the same as using the@option
and@command
decorators does. A command'sepilog
andshort_help
are also processed. :issue:1985
Store unprocessed
Command.help
,epilog
andshort_help
strings. Processing is only done when formatting help text for output. :issue:2149
Allow empty str input for
prompt()
whenconfirmation_prompt=True
anddefault=""
. :issue:2157
Windows glob pattern expansion doesn't fail if a value is an invalid pattern. :issue:
2195
It's possible to pass a list of
params
to@command
. Any params defined with decorators are appended to the passed params. :issue:2131
.
@command
decorator is annotated as returning the correct type if acls
argument is used. :issue:2211
A
Group
withinvoke_without_command=True
andchain=False
will invoke its result callback with the group function's return value. :issue:2124
... (truncated)
e4aceee
Merge pull request #2224 from pallets/release-8.1.0f8d811e
release version 8.1.020c88f0
Merge pull request #2223 from pallets/env-var8d7f03d
treat empty auto_envvar as Noneef11be6
Merge pull request #2041 from spanglerco/shell-completion-option-valuesf2e579a
shell completion prioritizes option values over new optionsd251cb0
Merge pull request #2219 from pallets/paramtype-namee003331
fix ParamType.to_info_dict() with no name19be092
Merge pull request #2217 from pallets/group-return7d3a871
group without command passes return value to result callbackSourced from pytest's releases.
7.1.0
pytest 7.1.0 (2022-03-13)
Breaking Changes
#8838: As per our policy, the following features have been deprecated in the 6.X series and are now removed:
pytest._fillfuncargs
function.pytest_warning_captured
hook - usepytest_warning_recorded
instead.-k -foobar
syntax - use-k 'not foobar'
instead.-k foobar:
syntax.pytest.collect
module - import frompytest
directly.For more information consult Deprecations and Removals in the docs.
#9437: Dropped support for Python 3.6, which reached end-of-life at 2021-12-23.
Improvements
#5192: Fixed test output for some data types where
-v
would show less information.Also, when showing diffs for sequences,
-q
would produce full diffs instead of the expected diff.#9362: pytest now avoids specialized assert formatting when it is detected that the default
__eq__
is overridden inattrs
ordataclasses
.#9536: When
-vv
is given on command line, show skipping and xfail reasons in full instead of truncating them to fit the terminal width.#9644: More information about the location of resources that led Python to raise
ResourceWarning
{.interpreted-text role="class"} can now be obtained by enablingtracemalloc
{.interpreted-text role="mod"}.See
resource-warnings
{.interpreted-text role="ref"} for more information.#9678: More types are now accepted in the
ids
argument to@pytest.mark.parametrize
. Previously only [str]{.title-ref}, [float]{.title-ref}, [int]{.title-ref} and [bool]{.title-ref} were accepted; now [bytes]{.title-ref}, [complex]{.title-ref}, [re.Pattern]{.title-ref}, [Enum]{.title-ref} and anything with a [__name__]{.title-ref} are also accepted.#9692:
pytest.approx
{.interpreted-text role="func"} now raises aTypeError
{.interpreted-text role="class"} when given an unordered sequence (such asset
{.interpreted-text role="class"}).Note that this implies that custom classes which only implement
__iter__
and__len__
are no longer supported as they don't guarantee order.Bug Fixes
- #8242: The deprecation of raising
unittest.SkipTest
{.interpreted-text role="class"} to skip collection of tests during the pytest collection phase is reverted - this is now a supported feature again.- #9493: Symbolic link components are no longer resolved in conftest paths. This means that if a conftest appears twice in collection tree, using symlinks, it will be executed twice.
... (truncated)
1dbffcc
[pre-commit.ci] auto fixes from pre-commit.com hooksd53a5fb
Prepare release version 7.1.0d306ec0
Update upcoming trainings (#9744)3e4c14b
Merge pull request #9751 from fabianegli/main7f924b1
Fix typo in deprecation documentation4a8f8ad
build(deps): Bump django from 4.0.2 to 4.0.3 in /testing/plugins_integration ...c0fd2d8
build(deps): Bump pytest-asyncio from 0.18.1 to 0.18.2 in /testing/plugins_in...843e018
Merge pull request #9732 from nicoddemus/9730-toml-failurebc43d66
[automated] Update plugin list (#9733)e38d1ca
Improve error message for malformed pyproject.toml files8e4800e
Fixup readmedc1efca
2.1.0 releasedd9d608
Add custom hooks specifications for overriding setup_timeout and teardown_tim...ed8ecd6
module names, they're difficult3ab4319
Add changelog4f7ebae
Replace deprecated py.io.get_terminal_width() with shutil.get_terminal_size()...b8a2fa6
Prep release951972d
Update changelog748a9c3
Making detection of whether a debugger is currently attached more flexible. (...f8a46a1
Github removed the git protocol (#112)Sourced from asgiref's changelog.
3.5.0 (2022-01-22)
Python 3.6 is no longer supported, and asyncio calls have been changed to use only the modern versions of the APIs as a result
Several causes of RuntimeErrors in cases where an event loop was assigned to a thread but not running
Speed improvements in the Local class
3.4.1 (2021-07-01)
- Fixed an issue with the deadlock detection where it had false positives during exception handling.
3.4.0 (2021-06-27)
Calling sync_to_async directly from inside itself (which causes a deadlock when in the default, thread-sensitive mode) now has deadlock detection.
asyncio usage has been updated to use the new versions of get_event_loop, ensure_future, wait and gather, avoiding deprecation warnings in Python 3.10. Python 3.6 installs continue to use the old versions; this is only for 3.7+
sync_to_async and async_to_sync now have improved type hints that pass through the underlying function type correctly.
All Websocket* types are now spelled WebSocket, to match our specs and the official spelling. The old names will work until release 3.5.0, but will raise deprecation warnings.
The typing for WebSocketScope and HTTPScope's
extensions
key has been fixed.3.3.4 (2021-04-06)
- The async_to_sync type error is now a warning due the high false negative rate when trying to detect coroutine-returning callables in Python.
3.3.3 (2021-04-06)
... (truncated)
8b61513
Releasing 3.5.0b2e1c9d
Fixed pytest_asyncio deprecation warning.2eda551
Added testing for Python 3.10.02fecb6
Drop Python 3.6 (#307)6689c0a
Added stacklevel to warning in AsyncToSync.4364f9b
Changed how StatelessServer handles event loops7bc055c
Update implementations.rst (#295)c758984
Move current_task import choice to module definition timedfe87b2
Fixed #292: Use get_event_loop in class-level codeb3a65e3
Removed class variable which has been unused since a0bbe90Sourced from pytest's releases.
7.0.0
pytest 7.0.0 (2022-02-03)
(Please see the full set of changes for this release also in the 7.0.0rc1 notes below)
Deprecations
#9488: If custom subclasses of nodes like
pytest.Item
{.interpreted-text role="class"} override the__init__
method, they should take**kwargs
. Seeuncooperative-constructors-deprecated
{.interpreted-text role="ref"} for details.Note that a deprection warning is only emitted when there is a conflict in the arguments pytest expected to pass. This deprecation was already part of pytest 7.0.0rc1 but wasn't documented.
Bug Fixes
- #9355: Fixed error message prints function decorators when using assert in Python 3.8 and above.
- #9396: Ensure
pytest.Config.inifile
{.interpreted-text role="attr"} is available during thepytest_cmdline_main <_pytest.hookspec.pytest_cmdline_main>
{.interpreted-text role="func"} hook (regression during7.0.0rc1
).Improved Documentation
- #9404: Added extra documentation on alternatives to common misuses of [pytest.warns(None)]{.title-ref} ahead of its deprecation.
- #9505: Clarify where the configuration files are located. To avoid confusions documentation mentions that configuration file is located in the root of the repository.
Trivial/Internal Changes
- #9521: Add test coverage to assertion rewrite path.
pytest 7.0.0rc1 (2021-12-06)
Breaking Changes
#7259: The
Node.reportinfo() <non-python tests>
{.interpreted-text role="ref"} function first return value type has been expanded from [py.path.local | str]{.title-ref} to [os.PathLike[str] | str]{.title-ref}.Most plugins which refer to [reportinfo()]{.title-ref} only define it as part of a custom
pytest.Item
{.interpreted-text role="class"} implementation. Since [py.path.local]{.title-ref} is a [os.PathLike[str]]{.title-ref}, these plugins are unaffacted.Plugins and users which call [reportinfo()]{.title-ref}, use the first return value and interact with it as a [py.path.local]{.title-ref}, would need to adjust by calling [py.path.local(fspath)]{.title-ref}. Although preferably, avoid the legacy [py.path.local]{.title-ref} and use [pathlib.Path]{.title-ref}, or use [item.location]{.title-ref} or [item.path]{.title-ref}, instead.
Note: pytest was not able to provide a deprecation period for this change.
... (truncated)
3554b83
Add note to changelog6ea7f99
Prepare release version 7.0.0737b220
[7.0.x] releasing: Add template for major releases (#9597)7fa3972
[7.0.x] releasing: Always set doc_version (#9590)b304499
[7.0.x] Make 'warnings' and 'deselected' in assert_outcomes optional (#9566)f17525d
[7.0.x] doc: Add ellipsis to warning usecase list (#9562)0a7be97
ci: Bump up timeout (#9565)c17908c
[7.0.x] doc: Recategorize 7.0.0 changelog items (#9564)ab549bb
[7.0.x] Add missing cooperative constructor changelog (#9563)4b1707f
[7.0.x] Autouse linearization graph (#9557)Sourced from pytest-asyncio's releases.
pytest-asyncio 0.18.0
title: 'pytest-asyncio: pytest support for asyncio'
pytest-asyncio is an Apache2 licensed library, written in Python, for testing asyncio code with pytest.
asyncio code is usually written in the form of coroutines, which makes it slightly more difficult to test using normal testing tools. pytest-asyncio provides useful fixtures and markers to make testing easier.
@pytest.mark.asyncio async def test_some_asyncio_code(): res = await library.do_something() assert b"expected result" == res
pytest-asyncio has been strongly influenced by pytest-tornado.
Features
- fixtures for creating and injecting versions of the asyncio event loop
- fixtures for injecting unused tcp/udp ports
- pytest markers for treating tests as asyncio coroutines
- easy testing with non-default event loops
- support for [async def]{.title-ref} fixtures and async generator fixtures
- support auto mode to handle all async fixtures and tests automatically by asyncio; provide strict mode if a test suite should work with different async frameworks simultaneously, e.g.
asyncio
andtrio
.Installation
... (truncated)
07e9922
Prepare release of v0.18.0 (#282)a92d894
Relax dependency on typing-extensions (#284)e78b59d
Fix setuptools_scm configuration (#279)d8efa64
Support parametrized event_loop fixture (#278)dab3b51
Raise a warning if @​pytest
.mark.asyncio is applied to non-async function (#275)048a6ed
Code cleanup: drop 'request' argument from async fixtures (#270)4353327
Update changelogc919fd7
Remove unconditional test item attribute access (#268)39c6d0c
Update README547933d
Require typing-extensions on py<3.8 only (#269)Sourced from pytest-asyncio's releases.
pytest-asyncio 0.17.0
title: 'pytest-asyncio: pytest support for asyncio'
pytest-asyncio is an Apache2 licensed library, written in Python, for testing asyncio code with pytest.
asyncio code is usually written in the form of coroutines, which makes it slightly more difficult to test using normal testing tools. pytest-asyncio provides useful fixtures and markers to make testing easier.
@pytest.mark.asyncio async def test_some_asyncio_code(): res = await library.do_something() assert b"expected result" == res
pytest-asyncio has been strongly influenced by pytest-tornado.
Features
- fixtures for creating and injecting versions of the asyncio event loop
- fixtures for injecting unused tcp/udp ports
- pytest markers for treating tests as asyncio coroutines
- easy testing with non-default event loops
- support for [async def]{.title-ref} fixtures and async generator fixtures
- support auto mode to handle all async fixtures and tests automatically by asyncio; provide strict mode if a test suite should work with different async frameworks simultaneously, e.g.
asyncio
andtrio
.Installation
... (truncated)
2e2d5d2
Bump to 0.17 release90436c9
Fix pandoc installation procedured291c66
Convert README.rst to Markdown for making githun release141937b
Fix release artifacts696cf7d
Fix trove classifier for asyncio8ccb306
Build on tagcd84987
Release process automation (#252)2eb12a7
Setup GitHub Workflows linter and yaml-reformatter (#253)d28b826
Bump codecov/codecov-action from 1 to 2.1.0 (#251)2f523ba
Configure dependabot version updater (#250)Sourced from black's releases.
22.1.0
At long last, Black is no longer a beta product! This is the first non-beta release and the first release covered by our new stability policy.
Highlights
Style
- Deprecate
--experimental-string-processing
and move the functionality under--preview
(#2789)- For stubs, one blank line between class attributes and methods is now kept if there's at least one pre-existing blank line (#2736)
- Black now normalizes string prefix order (#2297)
- Remove spaces around power operators if both operands are simple (#2726)
- Work around bug that causes unstable formatting in some cases in the presence of the magic trailing comma (#2807)
- Use parentheses for attribute access on decimal float and int literals (#2799)
- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex literals (#2799)
- Treat blank lines in stubs the same inside top-level if statements (#2820)
- Fix unstable formatting with semicolons and arithmetic expressions (#2817)
- Fix unstable formatting around magic trailing comma (#2572)
Parser
- Fix mapping cases that contain as-expressions, like
case {"key": 1 | 2 as password}
(#2686)- Fix cases that contain multiple top-level as-expressions, like
case 1 as a, 2 as b
(#2716)- Fix call patterns that contain as-expressions with keyword arguments, like
case Foo(bar=baz as quux)
(#2749)- Tuple unpacking on
return
andyield
constructs now implies 3.8+ (#2700)- Unparenthesized tuples on annotated assignments (e.g
values: Tuple[int, ...] = 1, 2, 3
) now implies 3.8+ (#2708)- Fix handling of standalone
match()
orcase()
when there is a trailing newline or a comment inside of the parentheses. (#2760)from __future__ import annotations
statement now implies Python 3.7+ (#2690)Performance
- Speed-up the new backtracking parser about 4X in general (enabled when
--target-version
is set to 3.10 and higher). (#2728)- Black is now compiled with mypyc for an overall 2x speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (#1009, #2431)
Configuration
- Do not accept bare carriage return line endings in pyproject.toml (#2408)
- Add configuration option (
python-cell-magics
) to format cells with custom magics in Jupyter Notebooks (#2744)- Allow setting custom cache directory on all platforms with environment variable
BLACK_CACHE_DIR
(#2739).- Enable Python 3.10+ by default, without any extra need to specify -
-target-version=py310
. (#2758)- Make passing
SRC
or--code
mandatory and mutually exclusive (#2804)Output
- Improve error message for invalid regular expression (#2678)
- Improve error message when parsing fails during AST safety check by embedding the underlying SyntaxError (#2693)
- No longer color diff headers white as it's unreadable in light themed terminals (#2691)
- Text coloring added in the final statistics (#2712)
- Verbose mode also now describes how a project root was discovered and which paths will be formatted. (#2526)
Packaging
... (truncated)
Sourced from black's changelog.
22.1.0
At long last, Black is no longer a beta product! This is the first non-beta release and the first release covered by our new stability policy.
Highlights
Style
- Deprecate
--experimental-string-processing
and move the functionality under--preview
(#2789)- For stubs, one blank line between class attributes and methods is now kept if there's at least one pre-existing blank line (#2736)
- Black now normalizes string prefix order (#2297)
- Remove spaces around power operators if both operands are simple (#2726)
- Work around bug that causes unstable formatting in some cases in the presence of the magic trailing comma (#2807)
- Use parentheses for attribute access on decimal float and int literals (#2799)
- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex literals (#2799)
- Treat blank lines in stubs the same inside top-level
if
statements (#2820)- Fix unstable formatting with semicolons and arithmetic expressions (#2817)
- Fix unstable formatting around magic trailing comma (#2572)
Parser
- Fix mapping cases that contain as-expressions, like
case {"key": 1 | 2 as password}
(#2686)- Fix cases that contain multiple top-level as-expressions, like
case 1 as a, 2 as b
(#2716)- Fix call patterns that contain as-expressions with keyword arguments, like
case Foo(bar=baz as quux)
(#2749)- Tuple unpacking on
return
andyield
constructs now implies 3.8+ (#2700)- Unparenthesized tuples on annotated assignments (e.g
values: Tuple[int, ...] = 1, 2, 3
) now implies 3.8+ (#2708)- Fix handling of standalone
match()
orcase()
when there is a trailing newline or a comment inside of the parentheses. (#2760)from __future__ import annotations
statement now implies Python 3.7+ (#2690)Performance
... (truncated)