Skip to content

Update Python dependencies (major)#78

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/major-python-dependencies
Open

Update Python dependencies (major)#78
renovate[bot] wants to merge 1 commit intomainfrom
renovate/major-python-dependencies

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Nov 28, 2025

This PR contains the following updates:

Package Change Age Confidence
data-platform-helpers ^0.1.7^1.0.1 age confidence
data-platform-helpers >=0.1.7>=1.0.1 age confidence
ops (changelog) >=2.0.0>=3.6.0 age confidence
pytest (changelog) ^8.4.2^9.0.2 age confidence

Release Notes

canonical/operator (ops)

v3.6.0

Compare Source

Features

  • Bump default Juju version in ops.testing.Context to 3.6.14 (#​2316)

Fixes

  • Correct the Model.get_binding() return type (#​2329)
  • Only show executable in ExecError.__str__, not full command line (#​2336)
  • Support Pydantic MISSING sentinel in ops.Relation.save (#​2306)

Documentation

  • Add how-to subcategory for managing containers (#​2309)
  • Remove 2.19 version in docs, tweak ops.testing title (#​2332)
  • Use "true" and "false" consistently in the reference documentation (#​2330)
  • Add CLI args as another place to not put sensitive data (#​2334)
  • Fix remote unit kwarg in testing example (#​2342)
  • Clarify that secret labels are not names (#​2337)

Tests

  • Set SCENARIO_BARE_CHARM_ERRORS=true in Ops tests that care (#​2314)

CI

  • Fix releasing on branches with no versions.md doc (#​2323)

v3.5.2

Compare Source

Fixes

  • Make testing.CheckInfo level arg type match pebble.CheckInfo.level (#​2274)
  • Make testing consistency check aware that credential-get is available on k8s in newer Juju (#​2307)
  • Drop unused setuptools_scm build dependency (#​2310)

Documentation

  • Update Pebble version in Juju 3.6 (#​2295)
  • Refresh K8s tutorial to use Concierge and uv-based Charmcraft profile (#​2285)
  • Add missing "How to" in page titles (#​2289)
  • Fix and improve observability part of K8s tutorial (#​2305)

v3.5.1

Compare Source

Fixes

  • Use parse_rfc3339 for datetime parsing to support Juju 4 (#​2264)
  • Correct the value of additional_properties in the action meta in Juju 4 (#​2250)
  • Prevent KeyError on auth-type when creating CloudCredential object (#​2268)
  • _checks_action should return empty list when there are no changes (#​2270)

Documentation

  • Provide examples in unit testing how-to, and other small improvements (#​2251)
  • Update the action how-to to explain the additionalProperties default flip (#​2249)
  • For state-transition tests, clarify about immutability and reusing state (#​2153)
  • Fix and clarify holistic example of handling storage (#​2098)
  • Remove comments from K8s tutorial and clarify about persisting data (#​2253)
  • Clarify handling of postgres relation data in K8s tutorial (#​2256)
  • Improve unit tests of httpbin demo charm (#​2254)
  • Add version information for tools in the charming ecosystem (#​2231)
  • Avoid emojis that render differently across platforms (#​2273)
  • Secrets over CMR comment added (#​2271)
  • Fix charm name in httpbin deploy command (#​2276)
  • Updated security@ubuntu.com PGP key (#​2286)

Tests

  • Remove unnecessary test module (#​2247)

CI

  • Replace git reference injection with wheel artifacts in charm test workflows (#​2252)
  • Explicitly provide the charmcraft repo location in CI (#​2277)
  • Remove outdated custom signature generation (#​2280)

v3.5.0

Compare Source

Features

  • Env var to control exception wrapping in tests (#​2142)
  • Deprecate testing.Context.charm_spec (#​2219)

Documentation

  • Fix charmcraft init command (#​2210)
  • Update CI examples to use uv and tox-uv (#​2213)
  • Update and clarify info about environment prep (#​2217)
  • Match Charmcraft profiles in tox.ini example for integration testing (#​2221)
  • Use base 24.04 for httpbin-demo charm (#​2222)
  • Clarify parts of the machine charm tutorial (#​2223)
  • Match Charmcraft profiles in "Write and structure charm code" (#​2220)
  • Use cosl binary in K8s tutorial charm to work around error (#​2232)
  • Fix URL issues by updating doc starter pack (#​2238)

Tests

  • Don't skip tests if ops[testing] isn't installed (#​2215)
  • Switch the integration test charms to use the uv plugin (#​2218)

CI

  • Avoid jitter in the best practice doc PRs (#​2193)
  • Ignore PERF401 (manual list comprehension) across the repo (#​2201)
  • The git commands need to be run in the operator directory as well (#​2197)
  • Have cycle in the sbomber manifests use the default value (#​2209)
  • Add pytest.warns to note an expected warning (#​2092)
  • Update release script to handle non-final versions (#​2199)
  • Add ops-tracing as a dependency for the observability tests (#​2239)
  • Add scheduled workflow for packing and integration testing example charms (#​2233)

v3.4.0

Compare Source

Breaking Changes

  • Fix: Change JujuContext.machine_id from int to str (#​2108)
  • Fix: Ensure that the testing context manager is exited when an exception occurs (#​2117)

Features

  • Add a low-level API for the Juju hook commands (#​2019)
  • Make PebbleClient file methods also accept pathlib.PurePath (#​2097)
  • Log the total number of deferred events (#​2161)
  • Allow setting the Juju availability zone and principal unit in the testing Context (#​2187)

Fixes

  • Allow actions without params or descriptions in ops[testing] (#​2090)
  • Ensure ops.Pebble.pull cleans up temporary files if it errors (#​2087)
  • Make secret info description visible to the charm in ops[testing] (#​2115)
  • Raise ActionFailed when using Context as a context manager (#​2121)
  • Detect categories with an exclamation mark indicating breaking changes (#​2132)
  • Normalise Secret.owner to 'app' for ops[testing] output state (#​2127)
  • Don't cache secret metadata in Ops (#​2143)
  • Secret-info-get cannot be provided with both an ID and a label (#​2170)
  • Minor hookcmds fixes (#​2175)

Documentation

  • Update referenced examples for managing interfaces (#​2068)
  • Tidy up spelling and formatting in several places (#​2060)
  • Add missing assignment to state_out in unit tests how-to (#​2075)
  • Update the holistic/delta explanation with the reconciler pattern (#​2029)
  • Fix broken setup/teardown links in README (#​2094)
  • Update info about release docs, mark testing changelog as not maintained (#​2074)
  • Switch to makefile for building the docs (#​2073)
  • Document how to extract the charm instance from the testing context (#​2084)
  • Add a how-to guide for migrating away from Harness (#​2062)
  • Rename hook tools to hook commands (#​2114)
  • Remove legacy how-to guide for Harness (#​2122)
  • Update the Juju release the metrics functionality is removed from 4.0 to 3.6.11 (#​2126)
  • Clarify that Context is the testing context not only the Juju context (#​2123)
  • Explain the Charmhub public listing process and add a reference list of best practices (#​1989)
  • Expand next steps for K8s tutorial (#​2034)
  • Remove mention of the simple Charmcraft profile (#​2138)
  • Expand landing pages with summaries of pages (#​2140)
  • Update environment setup for integration tests and K8s tutorial (#​2124)
  • Replace machine charm tutorial by an improved tutorial (#​2119)
  • Change HACKING.md instructions for maintaining Charmcraft profiles (#​2151)
  • In integration tests, use consistent approach to logging and packing (#​2150)
  • In integration testing how-to, clarify that Juju model is destroyed after all tests in the model complete (#​2154)
  • Remove Charmcraft channel specifier from machine charm tutorial (#​2148)
  • Add AI contribution note and style guideline for type annotation of return values (#​2168)
  • Add ops[testing] to the ops.testing docstring (#​2171)
  • Add links to the Juju hook from each event class (#​2176)
  • Add a short umask note (#​2184)

Tests

  • Re-enable testing consistency checks after disabling them (#​2141)
  • Expand secrets integration and state transition tests (#​2130)

Refactoring

  • Use ops.hookcmds in _ModelBackend (#​2116)
  • Don't get the storage details from --help (#​2172)
  • Drop 3.8 and 3.9 compatibility code (#​2173)
  • Use json.dumps to produce the YAML in relation-set and state-set (#​2174)
  • Rely on type annotations instead of casts in hookcmds (#​2179)

CI

  • Add integration and state transition tests for the secrets API (#​2078)
  • Temporarily disable tracing integration tests (#​2102)
  • Add secrets tests follow-up (#​2105)
  • Support monorepos in ops charm compatibility testing (#​2100)
  • Test both Charmcraft 3 and Charmcraft 4 profiles (#​2103)
  • Add automated doc checks (and related starter pack updates) (#​2099)
  • Clean up accidental workflow trigger (#​2144)
  • Test if package versions match dependency versions before publishing (#​2139)
  • Update spelling (#​2167)
  • Test against 4.0/stable (#​2186)
  • Store charmcraft logs if smoke tests fail (#​2192)
  • Use Juju channel 4/stable in Ops smoke tests (#​2190)

v3.3.1: : fix loading the Juju machine ID

Compare Source

This is a bug-fix release to fix an issue introduced in Ops 3.3.0 (in production) and Ops 3.2.0 (in testing), where loading the Juju machine ID would fail if the ID was not an integer.

The type of the machine ID (both in ops.JujuContext and testing.Context) is changed from int to str, so some code or tests may need to be adjusted to use the correct type.

What's Changed
Fixes
  • Change JujuContext.machine_id from int to str (#​2108)

Full Changelog: canonical/operator@3.3.0...3.3.1

v3.3.0

Compare Source

Features

  • Expose the Juju hook context in ops.JujuContext (#​1996)

Fixes

  • In testing, separate relation data cache from mock Juju backend (#​2052)

Documentation

  • Use uv for testing and packing the httpbin charm (#​2011)
  • Improve intro to ops.testing reference (#​2023)
  • In httpbin charm integration tests, add env var for charm file to deploy (#​2018)
  • Update get_cloud_spec doc now that credential-get works on K8s (#​2031)
  • Note that arbitrary_types_allowed is required when ops.Secret is used in a Pydantic class (#​2038)
  • Clean up Resources.fetch docstring, add ModelError exception (#​2039)
  • Note that the peer databag isn't usable during the install event (#​2051)
  • Fix testing code in actions how-to guide (#​2054)

CI

  • Nicer logging output in the release script using rich (#​2017)
  • Clean up PYTHONPATH in tox.ini (#​2058)

v3.2.0

Compare Source

Features

  • Add security event logging (#​1905)
  • Surface JUJU_MACHINE_ID envvar in testing env (#​1961)
  • Add a new log target type opentelemetry (#​1937)

Documentation

  • Update links and config for switch to documentation.ubuntu.com/ops (#​1940)
  • Update the required Python version and note the 2.x documentation site (#​1946)
  • Be consistent with recommending self.config (#​1947)
  • Use latest styles from starter pack and remove .html extensions (#​1951)
  • Remove .html extensions from hardcoded links (#​1955)
  • Fix broken URLs in sitemap (#​1956)
  • Add related doc links to homepage (#​1959)
  • Use classes from ops instead of ops. (#​1968)
  • Fix unstyled error pages (#​1969)
  • Add Google Analyics integration and cookie consent banner (#​1971)
  • Refresh docs homepage with more context about Ops (#​1964)
  • Update link to Charmlibs docs (#​1985)
  • Remove unnecessary pages from sitemap (#​1979)
  • Update the httpbin example charm to Jubilant (#​1987)
  • Update the Zero to Hero tutorial to Jubilant (#​1988)
  • Add model-config best practice note (#​1990)
  • Change some best practices to tips (#​2001)
  • Add integration test for invalid config in httpbin charm (#​2002)
  • Make a Layer instead of a LayerDict in the httpbin charm (#​2003)
  • Update how-to to feature Jubilant (#​2000, #​2004)
  • Use Charmcraft-style format and lint for example charms, not Ops-style (#​2008)
  • Update broken link to HookVars source code (#​2006)

CI

  • Fixes for the SBOM and security scan workflow, and trigger it on publishing (#​1916)
  • Store the charmcraft logs if packing fails (#​1936)
  • Install release dependencies for the TIOBE analysis (#​1930)
  • Add Juju 4/beta to the smoke test matrix (#​1963)
  • Adjust permissions block in publish workflow (#​1984)
  • Update actions/checkout to v5 (#​1993)
  • Enable doctests (#​1991)
  • Ignore juju/4 timeouts (#​1998)
  • Remove the token for SBOM and security scan workflow (#​2009)
  • Speed up integration test (#​1978)

v3.1.0

Compare Source

Features

  • Release automation script (#​1855)
  • Add app_name and unit_id attributes to testing.context (#​1920)

Fixes

  • If an event ends with _abort(0) tests should behave as if it ended successfully (#​1887)
  • If self.app is not actually set avoid a new crash location (#​1897)
  • Only add the remote unit for departed and broken relation events, fix ordering (#​1918)
  • Add the remote unit to relation.data but not relation.units (#​1925)

Documentation

  • Use load_config in the httpbin example charm (#​1852)
  • Update HACKING.md with how to bump ops version in Charmcraft profiles (#​1872)
  • Change title of docs site (#​1890)
  • Use config and action classes in the Kubernetes tutorial (#​1891)
  • Reference example charms from K8s tutorial and fix consistency (#​1898)
  • Update style guide (#​1720)
  • Fix issues in how-to guide for stored state (#​1901)
  • Link out to the 12-factor tutorials from the tutorial index page (#​1902)
  • Replace broken link in testing explanation (#​1913)
  • Expand the storage how-to with content from Juju docs scheduled for removal (#​1915)
  • Ops tracing how to (#​1853)
  • Add a security explanation doc (#​1904)

Tests

  • Replace Python version to 3.10 for observability charm tests (#​1914)

CI

  • Use httpbin demo charm for the Charmcraft pack test (#​1895)
  • Move TIOBE workflow to self-hosted runners (#​1912)
  • Add SBOM generation and secscan workflow (#​1906)
  • Build and publish in one step (#​1857)
  • Update the name and email when updating the charm pins (#​1924)
  • Drop smoke test against 20.04 (#​1923)

v3.0.0

Compare Source

The minimum version of Python for Ops 3.x is 3.10.

Documentation

  • Be consistent with recommending self.app and self.unit (#​1856)

CI

  • Hotfix, publish job for ops-tracing (#​1865)
pytest-dev/pytest (pytest)

v9.0.2

Compare Source

pytest 9.0.2 (2025-12-06)

Bug fixes

  • #​13896: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.

    You may enable it again by passing -p terminalprogress. We may enable it by default again once compatibility improves in the future.

    Additionally, when the environment variable TERM is dumb, the escape codes are no longer emitted, even if the plugin is enabled.

  • #​13904: Fixed the TOML type of the tmp_path_retention_count settings in the API reference from number to string.

  • #​13946: The private config.inicfg attribute was changed in a breaking manner in pytest 9.0.0.
    Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim.
    It will be deprecated in pytest 9.1 and removed in pytest 10.

  • #​13965: Fixed quadratic-time behavior when handling unittest subtests in Python 3.10.

Improved documentation

  • #​4492: The API Reference now contains cross-reference-able documentation of pytest's command-line flags <command-line-flags>.

v9.0.1

Compare Source

pytest 9.0.1 (2025-11-12)

Bug fixes

  • #​13895: Restore support for skipping tests via raise unittest.SkipTest.
  • #​13896: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.
  • #​13904: Fixed the TOML type of the verbosity settings in the API reference from number to string.
  • #​13910: Fixed UserWarning: Do not expect file_or_dir on some earlier Python 3.12 and 3.13 point versions.

Packaging updates and notes for downstreams

  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

Contributor-facing changes

  • #​13891, #​13942: The CI/CD part of the release automation is now capable of
    creating GitHub Releases without having a Git checkout on
    disk -- by bluetech and webknjaz.
  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

v9.0.0

Compare Source

pytest 9.0.0 (2025-11-05)

New features

  • #​1367: Support for subtests has been added.

    subtests <subtests> are an alternative to parametrization, useful in situations where the parametrization values are not all known at collection time.

    Example:

    def contains_docstring(p: Path) -> bool:
        """Return True if the given Python file contains a top-level docstring."""
        ...
    
    def test_py_files_contain_docstring(subtests: pytest.Subtests) -> None:
        for path in Path.cwd().glob("*.py"):
            with subtests.test(path=str(path)):
                assert contains_docstring(path)

    Each assert failure or error is caught by the context manager and reported individually, giving a clear picture of all files that are missing a docstring.

    In addition, unittest.TestCase.subTest is now also supported.

    This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.

    [!NOTE]
    This feature is experimental and will likely evolve in future releases. By that we mean that we might change how subtests are reported on failure, but the functionality and how to use it are stable.

  • #​13743: Added support for native TOML configuration files.

    While pytest, since version 6, supports configuration in pyproject.toml files under [tool.pytest.ini_options],
    it does so in an "INI compatibility mode", where all configuration values are treated as strings or list of strings.
    Now, pytest supports the native TOML data model.

    In pyproject.toml, the native TOML configuration is under the [tool.pytest] table.

    # pyproject.toml
    [tool.pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    The [tool.pytest.ini_options] table remains supported, but both tables cannot be used at the same time.

    If you prefer to use a separate configuration file, or don't use pyproject.toml, you can use pytest.toml or .pytest.toml:

    # pytest.toml or .pytest.toml
    [pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    The documentation now (sometimes) shows configuration snippets in both TOML and INI formats, in a tabbed interface.

    See config file formats for full details.

  • #​13823: Added a "strict mode" enabled by the strict configuration option.

    When set to true, the strict option currently enables

    • strict_config
    • strict_markers
    • strict_parametrization_ids
    • strict_xfail

    The individual strictness options can be explicitly set to override the global strict setting.

    The previously-deprecated --strict command-line flag now enables strict mode.

    If pytest adds new strictness options in the future, they will also be enabled in strict mode.
    Therefore, you should only enable strict mode if you use a pinned/locked version of pytest,
    or if you want to proactively adopt new strictness options as they are added.

    See strict mode for more details.

  • #​13737: Added the strict_parametrization_ids configuration option.

    When set, pytest emits an error if it detects non-unique parameter set IDs,
    rather than automatically making the IDs unique by adding 0, 1, ... to them.
    This can be particularly useful for catching unintended duplicates.

  • #​13072: Added support for displaying test session progress in the terminal tab using the OSC 9;4; ANSI sequence.
    When pytest runs in a supported terminal emulator like ConEmu, Gnome Terminal, Ptyxis, Windows Terminal, Kitty or Ghostty,
    you'll see the progress in the terminal tab or window,
    allowing you to monitor pytest's progress at a glance.

    This feature is automatically enabled when running in a TTY. It is implemented as an internal plugin. If needed, it can be disabled as follows:

    • On a user level, using -p no:terminalprogress on the command line or via an environment variable PYTEST_ADDOPTS='-p no:terminalprogress'.
    • On a project configuration level, using addopts = "-p no:terminalprogress".
  • #​478: Support PEP420 (implicit namespace packages) as --pyargs target when consider_namespace_packages is true in the config.

    Previously, this option only impacted package imports, now it also impacts tests discovery.

  • #​13678: Added a new faulthandler_exit_on_timeout configuration option set to "false" by default to let faulthandler interrupt the pytest process after a timeout in case of deadlock.

    Previously, a faulthandler timeout would only dump the traceback of all threads to stderr, but would not interrupt the pytest process.

    -- by ogrisel.

  • #​13829: Added support for configuration option aliases via the aliases parameter in Parser.addini() <pytest.Parser.addini>.

    Plugins can now register alternative names for configuration options,
    allowing for more flexibility in configuration naming and supporting backward compatibility when renaming options.
    The canonical name always takes precedence if both the canonical name and an alias are specified in the configuration file.

Improvements in existing functionality

  • #​13330: Having pytest configuration spread over more than one file (for example having both a pytest.ini file and pyproject.toml with a [tool.pytest.ini_options] table) will now print a warning to make it clearer to the user that only one of them is actually used.

    -- by sgaist

  • #​13574: The single argument --version no longer loads the entire plugin infrastructure, making it faster and more reliable when displaying only the pytest version.

    Passing --version twice (e.g., pytest --version --version) retains the original behavior, showing both the pytest version and plugin information.

    [!NOTE]
    Since --version is now processed early, it only takes effect when passed directly via the command line. It will not work if set through other mechanisms, such as PYTEST_ADDOPTS or addopts.

  • #​13823: Added strict_xfail as an alias to the xfail_strict option,
    strict_config as an alias to the --strict-config flag,
    and strict_markers as an alias to the --strict-markers flag.
    This makes all strictness options consistently have configuration options with the prefix strict_.

  • #​13700: --junitxml no longer prints the generated xml file summary at the end of the pytest session when --quiet is given.

  • #​13732: Previously, when filtering warnings, pytest would fail if the filter referenced a class that could not be imported. Now, this only outputs a message indicating the problem.

  • #​13859: Clarify the error message for pytest.raises() when a regex match fails.

  • #​13861: Better sentence structure in a test's expected error message. Previously, the error message would be "expected exception must be <expected>, but got <actual>". Now, it is "Expected <expected>, but got <actual>".

Removals and backward incompatible breaking changes

  • #​12083: Fixed a bug where an invocation such as pytest a/ a/b would cause only tests from a/b to run, and not other tests under a/.

    The fix entails a few breaking changes to how such overlapping arguments and duplicates are handled:

    1. pytest a/b a/ or pytest a/ a/b are equivalent to pytest a; if an argument overlaps another arguments, only the prefix remains.
    2. pytest x.py x.py is equivalent to pytest x.py; previously such an invocation was taken as an explicit request to run the tests from the file twice.

    If you rely on these behaviors, consider using --keep-duplicates <duplicate-paths>, which retains its existing behavior (including the bug).

  • #​13719: Support for Python 3.9 is dropped following its end of life.

  • #​13766: Previously, pytest would assume it was running in a CI/CD environment if either of the environment variables $CI or $BUILD_NUMBER was defined;
    now, CI mode is only activated if at least one of those variables is defined and set to a non-empty value.

  • #​13779: PytestRemovedIn9Warning deprecation warnings are now errors by default.

    Following our plan to remove deprecated features with as little disruption as
    possible, all warnings of type PytestRemovedIn9Warning now generate errors
    instead of warning messages by default.

    The affected features will be effectively removed in pytest 9.1, so please consult the
    deprecations section in the docs for directions on how to update existing code.

    In the pytest 9.0.X series, it is possible to change the errors back into warnings as a
    stopgap measure by adding this to your pytest.ini file:

    [pytest]
    filterwarnings =
        ignore::pytest.PytestRemovedIn9Warning

    But this will stop working when pytest 9.1 is released.

    If you have concerns about the removal of a specific feature, please add a
    comment to 13779.

Deprecations (removal in next major release)

  • #​13807: monkeypatch.syspath_prepend() <pytest.MonkeyPatch.syspath_prepend> now issues a deprecation warning when the prepended path contains legacy namespace packages (those using pkg_resources.declare_namespace()).
    Users should migrate to native namespace packages (420).
    See monkeypatch-fixup-namespace-packages for details.

Bug fixes

  • #​13445: Made the type annotations of pytest.skip and friends more spec-complaint to have them work across more type checkers.

  • #​13537: Fixed a bug in which ExceptionGroup with only Skipped exceptions in teardown was not handled correctly and showed as error.

  • #​13598: Fixed possible collection confusion on Windows when short paths and symlinks are involved.

  • #​13716: Fixed a bug where a nonsensical invocation like pytest x.py[a] (a file cannot be parametrized) was silently treated as pytest x.py. This is now a usage error.

  • #​13722: Fixed a misleading assertion failure message when using pytest.approx on mappings with differing lengths.

  • #​13773: Fixed the static fixture closure calculation to properly consider transitive dependencies requested by overridden fixtures.

  • #​13816: Fixed pytest.approx which now returns a clearer error message when comparing mappings with different keys.

  • #​13849: Hidden .pytest.ini files are now picked up as the config file even if empty.
    This was an inconsistency with non-hidden pytest.ini.

  • #​13865: Fixed --show-capture with --tb=line.

  • #​13522: Fixed pytester in subprocess mode ignored all :attr`pytester.plugins <pytest.Pytester.plugins>` except the first.

    Fixed pytester in subprocess mode silently ignored non-str pytester.plugins <pytest.Pytester.plugins>.
    Now it errors instead.
    If you are affected by this, specify the plugin by name, or switch the affected tests to use pytester.runpytest_inprocess <pytest.Pytester.runpytest_inprocess> explicitly instead.

Packaging updates and notes for downstreams

  • #​13791: Minimum requirements on iniconfig and packaging were bumped to 1.0.1 and 22.0.0, respectively.

Contributor-facing changes

  • #​12244: Fixed self-test failures when TERM=dumb.
  • #​12474: Added scheduled GitHub Action Workflow to run Sphinx linkchecks in repo documentation.
  • #​13621: pytest's own testsuite now handles the lsof command hanging (e.g. due to unreachable network filesystems), with the affected selftests being skipped after 10 seconds.
  • #​13638: Fixed deprecated gh pr new command in scripts/prepare-release-pr.py.
    The script now uses gh pr create which is compatible with GitHub CLI v2.0+.
  • #​13695: Flush stdout and stderr in Pytester.run to avoid truncated outputs in test_faulthandler.py::test_timeout on CI -- by ogrisel.
  • #​13771: Skip test_do_not_collect_symlink_siblings on Windows environments without symlink support to avoid false negatives.
  • #​13841: tox>=4 is now required when contributing to pytest.
  • #​13625: Added missing docstrings to pytest_addoption(), pytest_configure(), and cacheshow() functions in cacheprovider.py.

Miscellaneous internal changes

  • #​13830: Configuration overrides (-o/--override-ini) are now processed during startup rather than during config.getini() <pytest.Config.getini>.

Configuration

📅 Schedule: Branch creation - Between 03:00 AM and 03:59 AM, only on Friday ( * 3 * * 5 ) in timezone Etc/UTC, Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Copy Markdown
Member

@theoctober19th theoctober19th left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are failing tests and also conflicts, so needs some attention.

@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 5a7dfec to b6ccc7d Compare November 28, 2025 16:47
mvlassis
mvlassis previously approved these changes Dec 1, 2025
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from b6ccc7d to 0cfdc8b Compare December 19, 2025 03:34
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 0cfdc8b to 9d63194 Compare January 23, 2026 03:56
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 9d63194 to 4181362 Compare February 6, 2026 03:07
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 3fee05b to 8c764ec Compare March 13, 2026 04:53
@renovate renovate bot changed the title Update dependency pytest to v9 Update Python dependencies (major) Mar 13, 2026
@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Mar 13, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: lib/poetry.lock
Updating dependencies
Resolving dependencies...


The current project's supported Python range (>=3.8) is not compatible with some of the required packages Python requirement:
  - ops requires Python >=3.10, so it will not be installable for Python >=3.8,<3.10

Because no versions of ops match >3.6.0
 and ops (3.6.0) requires Python >=3.10, ops is forbidden.
So, because object-storage-charmlib depends on ops (>=3.6.0), version solving failed.

  * Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties

    For ops, a possible solution would be to set the `python` property to ">=3.10"

    https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
    https://python-poetry.org/docs/dependency-specification/#using-environment-markers


@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 8c764ec to d0b923d Compare March 27, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants