Improve best_match (and thereby error messages from jsonschema.validate) in cases where there are multiple sibling errors from applying anyOf / allOf -- i.e. when multiple elements of a JSON array have errors, we now do prefer showing errors from earlier elements rather than simply showing an error for the full array (#1250).
(Micro-)optimize equality checks when comparing for JSON Schema equality by first checking for object identity, as == would.
Improve best_match (and thereby error messages from jsonschema.validate) in cases where there are multiple sibling errors from applying anyOf / allOf -- i.e. when multiple elements of a JSON array have errors, we now do prefer showing errors from earlier elements rather than simply showing an error for the full array (#1250).
(Micro-)optimize equality checks when comparing for JSON Schema equality by first checking for object identity, as == would.
Commits
9882dbe Add / ignore the new specification test suite property.
2.13.0 Testing User Secrets with Harness and Other Improvements
The main feature this release is the ability to work with user secrets (secrets that a Juju admin adds to the model) in Harness. You'll want to start with the new add_user_secret() method and from there can mostly manage them in the same way as application secrets.
Note that one of the fixes corrects the type of config values, which were previously strongly typed as str, when they may be int, float, bool, or str. This may break your existing type checks, although we have endeavoured to reach out preemptively with PRs to address this where possible.
Fix: a pragma comment on the continuation lines of a multi-line statement now excludes the statement and its body, the same as if the pragma is on the first line. This closes issue 754. The fix was contributed by Daniel Diniz.
Fix: very complex source files like this one could cause a maximum recursion error when creating an HTML report. This is now fixed, closing issue 1774.
HTML report improvements:
Support files (JavaScript and CSS) referenced by the HTML report now have hashes added to their names to ensure updated files are used instead of stale cached copies.
Missing branch coverage explanations that said "the condition was never false" now read "the condition was always true" because it's easier to understand.
Column sort order is remembered better as you move between the index pages, fixing issue 1766. Thanks, Daniel Diniz.
Fix: a pragma comment on the continuation lines of a multi-line statement
now excludes the statement and its body, the same as if the pragma is
on the first line. This closes issue 754. The fix was contributed by
Daniel Diniz <pull 1773_>.
Fix: very complex source files like this one <resolvent_lookup_>_ could
cause a maximum recursion error when creating an HTML report. This is now
fixed, closing issue 1774_.
HTML report improvements:
Support files (JavaScript and CSS) referenced by the HTML report now have
hashes added to their names to ensure updated files are used instead of
stale cached copies.
Missing branch coverage explanations that said "the condition was never
false" now read "the condition was always true" because it's easier to
understand.
Column sort order is remembered better as you move between the index pages,
fixing issue 1766. Thanks, Daniel Diniz <pull 1768_>.
#12069: A deprecation warning is now raised when implementations of one of the following hooks request a deprecated py.path.local parameter instead of the pathlib.Path parameter which replaced it:
pytest_ignore_collect{.interpreted-text role="hook"} - the path parameter - use collection_path instead.
pytest_collect_file{.interpreted-text role="hook"} - the path parameter - use file_path instead.
pytest_pycollect_makemodule{.interpreted-text role="hook"} - the path parameter - use module_path instead.
pytest_report_header{.interpreted-text role="hook"} - the startdir parameter - use start_path instead.
pytest_report_collectionfinish{.interpreted-text role="hook"} - the startdir parameter - use start_path instead.
The replacement parameters are available since pytest 7.0.0.
The old parameters will be removed in pytest 9.0.0.
See legacy-path-hooks-deprecated{.interpreted-text role="ref"} for more details.
Features
#11871: Added support for reading command line arguments from a file using the prefix character @, like e.g.: pytest @tests.txt. The file must have one argument per line.
See Read arguments from file <args-from-file>{.interpreted-text role="ref"} for details.
Improvements
#11523: pytest.importorskip{.interpreted-text role="func"} will now issue a warning if the module could be found, but raised ImportError{.interpreted-text role="class"} instead of ModuleNotFoundError{.interpreted-text role="class"}.
The warning can be suppressed by passing exc_type=ImportError to pytest.importorskip{.interpreted-text role="func"}.
See import-or-skip-import-error{.interpreted-text role="ref"} for details.
#11728: For unittest-based tests, exceptions during class cleanup (as raised by functions registered with TestCase.addClassCleanup <unittest.TestCase.addClassCleanup>{.interpreted-text role="meth"}) are now reported instead of silently failing.
#11777: Text is no longer truncated in the short test summary info section when -vv is given.
#12112: Improved namespace packages detection when consider_namespace_packages{.interpreted-text role="confval"} is enabled, covering more situations (like editable installs).
#9502: Added PYTEST_VERSION{.interpreted-text role="envvar"} environment variable which is defined at the start of the pytest session and undefined afterwards. It contains the value of pytest.__version__, and among other things can be used to easily check if code is running from within a pytest run.
Bug Fixes
#12065: Fixed a regression in pytest 8.0.0 where test classes containing setup_method and tests using @staticmethod or @classmethod would crash with AttributeError: 'NoneType' object has no attribute 'setup_method'.
Now the request.instance <pytest.FixtureRequest.instance>{.interpreted-text role="attr"} attribute of tests using @staticmethod and @classmethod is no longer None, but a fresh instance of the class, like in non-static methods.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the pip_dependencies group with 8 updates:
42.0.5
42.0.6
4.21.1
4.22.0
2.12.0
2.13.0
7.5.0
7.5.1
1.1.360
1.1.361
8.1.1
8.2.0
0.34.0
0.35.0
0.4.2
0.4.3
Updates
cryptography
from 42.0.5 to 42.0.6Changelog
Sourced from cryptography's changelog.
Commits
cfad004
Prepare backports for 42.0.6 release (#10929)Updates
jsonschema
from 4.21.1 to 4.22.0Release notes
Sourced from jsonschema's releases.
Changelog
Sourced from jsonschema's changelog.
Commits
9882dbe
Add / ignore the new specification test suite property.ebc90bb
Merge commit '8fcfc3a674a7188a4fcc822b7a91efb3e0422a20'8fcfc3a
Squashed 'json/' changes from b41167c74..54f3784a830b7537
Pin pyenchant to pre from below until pyenchant/pyenchant#302 is released.c3729db
Enable doctests for the rest of the referencing page.70a994c
Remove a now-unneeded noqa since apparently this is fixed in new ruff.e6d0ef1
Fix a minor typo in the referencing example docs.bceaf41
Another placeholder benchmark for future optimization.b20234e
Consider errors from earlier indices (in instances) to be better matches41b49c6
Minor improvement to test failure message when a best match test fails.Updates
ops
from 2.12.0 to 2.13.0Release notes
Sourced from ops's releases.
Changelog
Sourced from ops's changelog.
Commits
6cbc264
chore: 2.13.0 release notes and version bump (#1207)b5d8962
test: refactor test_framework from unittest to pytest style (#1195)c9ed805
test: refactor test_charm.py to pytest fixtures and parametrize (#1193)be7f8ac
feat: add pebble.CheckInfo.change_id field (#1197)fe9c563
test: pytest conversion for test lib and infra (#1196)e5d76c4
test: refactor some for loop tests into pytest parametrize (#1192)fa185b4
fix!: correct the model config types (#1183)d4a48fd
fix (harness): only inspect the source file if it will be used (#1181)ab239e1
test: refactor asserts to pytest style (#1191)ac21f47
docs: update docstrings with deprecated directive (#1178)Updates
coverage[toml]
from 7.5.0 to 7.5.1Release notes
Sourced from coverage[toml]'s releases.
Changelog
Sourced from coverage[toml]'s changelog.
Commits
be938ea
docs: sample HTML for 7.5.102c66d7
docs: prep for 7.5.15fa9f67
fix: avoid max recursion errors in ast code. #177434af01d
build: easier to run metasmoke on desired python version6b0cac5
perf: cache _human_key to speed html report by about 10%fdc0ee8
docs: oops, typo60e6cb4
docs: changelog for #754 and #1773277c8c4
fix: '# pragma: no branch' in multiline if statements. #754 (#1773)34d3eb7
docs: update changelog for #1786. Thanks, Daniel Diniz2bb5ef2
fix(html): make HTML column sorting consistent across index pages (fix #1766)...Updates
pyright
from 1.1.360 to 1.1.361Commits
f9cffb8
[pyright updated to 1.1.361] Update Version (#268)Updates
pytest
from 8.1.1 to 8.2.0Release notes
Sourced from pytest's releases.
... (truncated)
Commits
6bd3f31
Tweak changelog for 8.2.09b6219b
Prepare release version 8.2.0835765c
Merge pull request #12130 from bluetech/fixtures-inline7e7503c
unittest: report class cleanup exceptions (#12250)882c4da
fixtures: inlinefail_fixturefunc
2e8fb9f
fixtures: extract a_check_fixturedef
methodacf2971
fixtures: inline_getnextfixturedef
into_get_active_fixturedef
3c77aec
fixtures: move "request" check earlyd217d68
fixtures: inline_compute_fixture_value
530be28
fixtures: use early return in_get_active_fixturedef
Updates
pytest-operator
from 0.34.0 to 0.35.0Commits
Updates
ruff
from 0.4.2 to 0.4.3Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
Commits
1e91a09
Bump version to v0.4.3 (#11274)d0f51c6
Remove remainingruff_shrinking
references (#11272)8dd3811
Use function range forreimplemented-operator
diagnostics (#11271)894cd13
[refurb
] Ignore methods inreimplemented-operator
(FURB118
) (#11270)f3284fd
Remove unnecessary check for RUF020 enabled (#11268)82dd5e6
[red-knot] resolve class members (#11256)6a1e555
Upgrade to Rust 1.78 (#11260)349a4cf
Remove trailing reference section (#11257)dfbeca5
ruff server
no longer hangs after shutdown (#11222)9e69cd6
Rephrase rationale forpytest-incorrect-pytest-import
(#11255)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show