Skip to content

build(deps): update dependency ops to v2.23.4 (main) - #2811

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/main-ops-2.x
Open

build(deps): update dependency ops to v2.23.4 (main)#2811
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/main-ops-2.x

Conversation

@renovate

@renovate renovate Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
ops (changelog) ==2.5.0==2.23.4 age confidence
ops (changelog) ==2.5.1==2.23.4 age confidence
ops (changelog) ==2.15.0==2.23.4 age confidence

Release Notes

canonical/operator (ops)

v2.23.4: : backport fixes from 3.x

Compare Source

2.23 is the LTS series for Ops, and this release brings it up to date with the bug fixes made in the 3.x series from 3.1.0 through to 3.8.0 (everything that was applicable to 2.23 and did not require behaviour changes or features that only exist in 3.x). There are no new features and no breaking changes.

Most of the fixes are in ops.testing (Scenario and Harness), where several long-standing sources of confusing test results are resolved. The runtime fixes are smaller in number but include two that can hang or crash a real charm.

Runtime fixes worth knowing about
  • Exec no longer leaks I/O threads when the wait fails (#​2558). If a Container.exec() change outlived the client-side wait (for example, an orphaned process holding the exec's stdio open), the non-daemon I/O pump threads stayed blocked in recv() and prevented interpreter shutdown, wedging the hook. The exec is now torn down when the wait fails.
  • No more errors during finalisation on an already-closed Pebble websocket (#​2548). Closing a socket that is already closed is now a no-op, and the race where it closes underneath us is ignored. This was showing up as noisy tracebacks at interpreter shutdown on Python 3.13+.
  • Datetimes from Juju 4 parse correctly on Python 3.10 (#​2264).
  • credential-get is recognised on Kubernetes (#​2307) and action metadata reports additional_properties correctly (#​2250) on newer Juju, both of which otherwise caused spurious failures against Juju 4.
  • ops.pebble.Client.pull cleans up its temporary file if it errors (#​2087), rather than leaving it behind.
  • ExecError.__str__ shows only the executable, not the whole command line (#​2336), so arguments that contain secrets do not end up in logs and status messages. Please avoid putting secrets in exec calls.
  • breakpoint() still works after _Manager teardown (#​2542): sys.breakpointhook is restored instead of being left patched.
  • Type annotation corrections that may surface new (correct) errors in your type checker: Model.get_binding() (#​2329) and StorageMeta.properties (#​2348).
Testing fixes worth knowing about
  • Relation data in tests is no longer shared with the mock backend (#​2052). Tests that relied on the old aliasing may now (correctly) see different data.
  • Remote units on relation events match Juju (#​1918, #​1925): the remote unit is only added for -departed and -broken events, the ordering is fixed, and the departing unit appears in Relation.data but not in Relation.units.
  • Errors inside the Context context manager are no longer swallowed (#​2117, #​2121): the manager is exited properly when an exception occurs, and ActionFailed is raised as it is outside the manager.
  • Mutable state you pass in is copied, not captured (#​2349, #​2379, #​2380): Context holds copies of user-provided meta, config and actions; secret_get and action_get return copies; and layers are deep-copied when rendering the plan. Previously a test could mutate the objects another test was about to use.
  • Resources and files are cleaned up (#​2506, #​2507): Context releases its resources, and Harness.cleanup() closes the SQLite storage instead of leaking a file handle.
  • Consistency checking is less trigger-happy: Pebble's defaults for check level, startup and threshold are taken into account (#​2567), _checks_action returns an empty list rather than erroring when nothing changed (#​2270), and testing.CheckInfo's level argument accepts the same type as pebble.CheckInfo.level (#​2274).
  • Secret.owner is normalised to 'app' in output state (#​2127), and an event that ends with _Abort(0) is treated as a success (#​1887).
  • Clearing a non-empty container now warns first (#​2365), and the testing.Container compatibility import moved so mypy-style checkers understand it (#​2343).
What's Changed
Fixes
  • If an event ends with _Abort(0), tests behave as if it ended successfully (#​1887)
  • Only add the remote unit for departed and broken relation events, and fix the ordering (#​1918)
  • Add the remote unit to Relation.data but not Relation.units (#​1925)
  • _MockModelBackend.relation_get returns a copy of the relation data (#​2052)
  • Ensure ops.pebble.Client.pull cleans up temporary files if it errors (#​2087)
  • Ensure that the testing context manager is exited when an exception occurs (#​2117)
  • Raise ActionFailed when using Context as a context manager (#​2121)
  • Normalise Secret.owner to 'app' for ops[testing] output state (#​2127)
  • Correct the value of additional_properties in the action meta in Juju 4 (#​2250)
  • Use parse_rfc3339 for datetime parsing to support Python 3.10 (#​2264)
  • _checks_action returns an empty list when there are no changes (#​2270)
  • Make testing.CheckInfo level argument type match pebble.CheckInfo.level (#​2274)
  • Support the Pydantic MISSING sentinel in ops.Relation.save (#​2306)
  • credential-get is available on Kubernetes in newer Juju (#​2307)
  • Correct the Model.get_binding() return type (#​2329)
  • Only show the executable in ExecError.__str__, not the full command line (#​2336)
  • Move the testing.Container compatibility import so that mypy-style checkers understand it (#​2343)
  • Correct the type annotation for StorageMeta.properties (#​2348)
  • Hold only copies of user provided dicts in testing.Context (#​2349)
  • Warn before clearing a non-empty container in testing (#​2365)
  • Use timezone-aware datetimes in expiry calculation (#​2378)
  • Return copies from Scenario secret_get and action_get (#​2379)
  • Deep-copy layer objects during Scenario plan rendering (#​2380)
  • Pass the endpoint name through to relation-get (#​2499)
  • Ensure resources are cleaned up in testing.Context (#​2506)
  • Close SQLite storage in Harness.cleanup() (#​2507)
  • Restore sys.breakpointhook on _Manager teardown (#​2542)
  • Avoid errors in finalisation due to an already-closed websocket (#​2548)
  • Don't leak exec I/O threads when waiting on the change fails (#​2558)
  • Drop the unused importlib-metadata dependency declaration (#​2521)
  • Take Pebble defaults into consideration when consistency checking Checks (#​2567)
  • Pin pydantic to 2-3 (#​2583)
Documentation
  • Move 2.x docs to canonical.com/juju/docs/ops (#​2546)
CI
  • Fix ops-tracing release for 2.23-maintenance (#​2324)
  • Test Ops 2.23 with Python 3.14 (#​2576)

Full Changelog: canonical/operator@2.23.2...2.23.4

v2.23.2: : fix testing package build

Compare Source

What's Changed

This release fixes a recent build failure for ops[testing].

Fixes

  • Drop unused setuptools_scm build dependency in #​2318

Documentation

  • For 2.23, update links and config for switch to documentation.ubuntu.com/ops in #​1942
  • For 2.x, fix site title and unstyled error pages in #​1945
  • For 2.x, remove .html extensions in #​1954
  • For 2.x, fix unstyled error pages in #​1973

Full Changelog: canonical/operator@2.23.1...2.23.2

v2.23.1: : Add the remote unit to Relation.data, but not Relation.units

Compare Source

This is a small bug-fix release for the 2.x series that addresses issues with the recent feature making relation data available in relation-departed events. Rather than inserting the remote unit into Relation.units, the data is available from Relation.data, without changing Relation.units.

What's Changed

Fixes
  • Add the remote unit to Relation.data but not Relation.units in #​1928
Documentation
  • Be consistent with recommending self.app and self.unit in #​1856
  • Add notice about ops 2 and ops 3 in #​1867
  • Update title and edit links for ops 2.23 docs in #​1885
CI
  • Hotfix, publish job for ops-tracing in #​1865

Full Changelog: canonical/operator@2.23.0...2.23.1

v2.23.0

Compare Source

Features

  • Support for config schema as Python classes (#​1741)
  • Support for action parameter schema as Python classes (#​1756)
  • Ops[tracing] compatibility with jhack (#​1806)
  • Support for relation data schema as Python classes (#​1701)
  • Add CheckInfo.successes field and .has_run property (#​1819)
  • Provide a method to create a testing.State from a testing.Context (#​1797)
  • Expose trace data in testing (#​1842)
  • Add a helper to generate a Layer from rockcraft.yaml (#​1831)

Fixes

  • Correctly load an empty Juju config options map (#​1778)
  • Fix type annotation of container check_infos in ops.testing (#​1784)
  • Restrict the version of a dependency, opentelemetry-sdk (#​1794)
  • Remote unit data is available in relation-departed (#​1364)
  • Juju allows access to the remote app databag in relation-broken, so Harness should too (#​1787)
  • Don't use private OpenTelemetry API (#​1798)
  • Do not return this unit in a mocked peer relation (#​1828)
  • Testing.PeerRelation properly defaults to no peers (#​1832)
  • In meter-status-changed JUJU_VERSION is not set (#​1840)
  • Only provide the units belonging to the app in Relation.units (#​1837)

Documentation

  • Remove two best practices, and drop two to tips (#​1758)
  • Update link to Charmcraft for managing app config (#​1763)
  • Update link to Juju documentation for setting up deployment (#​1781)
  • Fix external OTLP link (#​1786)
  • Distribute the ops-scenario README content across the ops docs (#​1773)
  • Improve testing.errors.UncaughtCharmError message (#​1795)
  • In the "manage the charm version" how-to, give an example of using override-build (#​1802)
  • Small adjustments to the 'how to trace charm code' doc (#​1792)
  • Replace Harness example and fix links in README (#​1820)
  • Add httpbin charm from Charmcraft as an example charm (#​1743)
  • Fix on_collect mistake in sample code (#​1829)
  • Update code in K8s tutorial, with source in repo (part 2) (#​1734)
  • Update Loki section on charming zero-to-hero tutorial (#​1847)
  • Remove expandable boxes of text (#​1844)
  • Improve httpbin charm by removing defer() and adding collect_status (#​1833)
  • Move {posargs} to the end of pytest command lines in tox.ini (#​1854)

CI

  • Install the ops[tracing] dependencies for the TIOBE action (#​1761)
  • Add ops-scenario and ops-tracing as explicit installs for TIOBE (#​1764)
  • Persist credentials for update-charm-pins workflow (#​1766)
  • Stop smoke testing Charmcraft 2 (#​1782)
  • Use Charmcraft 3.x for smoke testing 20.04 and 22.04 (#​1821)
  • Enable xdist for the 'unit' tox environments (#​1830)

v2.22.0

Compare Source

Features

Fixes

  • Turn on databag access validation in __init__ (#​1737)
  • Allow event suffixes to appear in event names in ops.testing (#​1754)

Documentation

  • Document how to manage metrics (#​1692)
  • Link to our docs from the top of our README (#​1710)
  • Update code in K8s tutorial, with source in repo (part 1) (#​1719)
  • Update links to juju.is/docs (#​1725)
  • Fix link in breakpoint output, remove link from Harness error message (#​1726)
  • Update Matrix channel name to Charm Tech (#​1740)
  • Rename configurations to configuration (#​1746)
  • Fix typos in code snippets by @​MattiaSarti (#​1750)

CI

  • Add ops[tracing] integration tests (#​1686)
  • Pin workflows by hash (#​1721)
  • Disable alertmanager compatibility tests until upstream fix (#​1745)
  • Remove explicit scopes and update HACKING.md (#​1748)
  • Pin trusted workflows by tag (#​1752)
  • Re-enable alertmanager-k8s-operator in observability charm tests (#​1753)
  • Fix reporting to TIOBE after ops[tracing] addition (#​1755)

v2.21.1

Compare Source

Reverted

  • Reverting "run deferred events with fresh charm instances" (#​1711)

Documentation

  • Add best practices about status (#​1689)

v2.21.0

Compare Source

Features

  • Ops[tracing] (with a first-party charm lib) (#​1612)
  • Pebble identities (#​1672)
  • Run deferred events with fresh charm instances (#​1631)

Fixes

  • Allow TLS 1.2 in ops-tracing (#​1705)
  • Try to fix flaky pebble exec test (#​1664)

Documentation

  • Add best practice note around using tooling provided by the charmcraft profile (#​1700)
  • Clarify guidance about designing python modules (#​1670)
  • Fix a bug in the k8s tutorial doc about unit test (#​1688)
  • Fix broken link in readme (#​1679)
  • Fix links to juju docs (#​1681)
  • Fix tox command in hacking.md (#​1661)
  • Improve landing page of kubernetes charm tutorial (#​1660)

CI

  • Add zizmor to static check github workflows (#​1656)
  • Change prerelease setting used to add latest ops and scenario (#​1682)
  • Don't pin release jobs to github environments (#​1683)
  • Don't run tests within the publish job (#​1684)
  • Fix smoke test (#​1698)
  • Post-release versioning, release process update + workflow fix (#​1658)
  • Rename "tox -e fmt" to "tox -e format" (#​1668)

Tests

  • Fix overly specific test that fails sometimes with tracing (#​1695)

v2.20.0

Compare Source

Features

  • Add a remove_revision() method to SecretRemoveEvent and SecretExpiredEvent (#​1624)
  • Add Relation.remote_model property (#​1610)
  • Efficient implementation of RelationDataContent.update (#​1586)
  • Expose the config metadata in CharmMeta (#​1648)
  • Add the ability to emit custom events in unit tests (#​1589)
  • Check that the check-infos in testing.Container match the plan (#​1630)
  • ops.testing.State components are less mutable (#​1617)

Fixes

  • Assorted fixes for Pebble layer merging in Harness and Scenario (#​1627)

Documentation

  • Add a docs link to the Harness deprecation warning (#​1513)
  • Add best practices and a "manage charms" how-to (#​1615)
  • Add section about services with long startup time (#​1604)
  • Clarify how to use mounts in ops.testing.Container (#​1637)
  • Fix code snippet indentation (#​1649)
  • Fix Scenario example (#​1616)
  • Move hooks-based charm migration guide (#​1636)
  • Putting test into each chapter of the tutorial (#​1647)
  • Refactor how-to unit test according to comments (#​1642)
  • Refactor test docs to 1 explanation and 2 how-tos (#​1628)
  • Remove the charm-tech@lists.launchpad.net email address (#​1632)
  • Remove tutorial chapters that are covered by the how-to guide (#​1511)
  • Stack args vertically for long signature lines (#​1641)
  • Testing explanation (#​1635)
  • Unify charm test docs how to (#​1639)

CI

  • Exclude vault-k8s-operator until the system can handle monorepos (#​1650)
  • Use the latest version of ops-scenario in the compatibility tests (#​1608)

v2.19.4: ops 2.19.4 and ops-scenario 7.19.4 Synchronise ops and ops-scenario versions

Compare Source

No changes since 2.19.3 and 7.19.3. This is to push packages to PyPI only.

Full Changelog: canonical/operator@2.19.3...2.19.4

v2.19.0

Compare Source

Features

  • Expose the Juju version via Model objects (#​1563)
  • Support starting and stopping Pebble checks, and the checks enabled field (#​1560)

Documentation

CI

  • Update list of charms and handle increasing uv usage (#​1588)
  • Handle presence/absence of "static" and "static-charm" envs (#​1590)

v2.18.1

Compare Source

Fixes

  • Ensure that the event snapshot is available when one observer defers and another does not (#​1562)
  • Maintain transaction integrity on first run (#​1558)

Documentation

  • Set up intersphinx and add links (#​1546)

v2.18.0

Compare Source

Features

  • Don't store duplicate events in the notice queue (#​1372)

Fixes

  • Remove ops.main.main deprecation warning, and avoid warnings in action output (#​1496)

Documentation

  • Use the right ops-scenario for building the docs (#​1470)
  • Go full Diátaxis, ingesting the relevant juju.is/docs/sdk documentation by @​tmihoc (#​1481)
  • Update boilerplate links (#​1515)
  • Fix broken links and use cross references instead of absolute links (#​1519)
  • Use explicit framework param instead of *args (#​1523)
  • Add doc style tips to HACKING.md (#​1528)
  • Fix link to Juju docs in Kubernetes charm tutorial (#​1529)
  • Remove the publish badge from the README (#​1505)
  • Add how-to for storing state (#​1534)
  • Improve info about contributing to docs (#​1533)
  • Fix formatting errors in HACKING.md (#​1539)

Continuous Integration

  • Add support for injecting the latest ops when uv is used (#​1477)
  • Don't cancel other unit tests when one fails (#​1471)
  • Use Concierge to set up the smoke test environments (#​1541)
  • Bump poetry to 2.0 to match downstream (#​1542)
  • Enable the prometheus-k8s revision updates again (#​1544)
  • Include Juju 2.9 in the smoke tests (#​1545)

Testing

  • Handle warnings generated by our own tests (#​1469)
  • Allow check to fail an additional time when running the test (#​1531)

v2.17.1

Compare Source

Fixes

  • Make push_path open in binary mode so it works on non-text files (#​1458)

Documentation

  • Use MaintenanceStatus for local issues (#​1397)
  • Explicitly document that collect-status is is run on every hook (#​1399)
  • Use our docs URL for the ogp:url properties Sphinx generates (#​1411)
  • Set the READTHEDOCS context variable (#​1410)
  • Fix Read the Docs ad placement (#​1414)
  • Clarify where StoredState is stored, and the upgrade behaviour (#​1416)
  • Fix copy 'n' paste error in stop_services docstring (#​1457)

Continuous Integration

  • Configure the labels for dependabot PRs (#​1407)
  • Disable the automatic ops[testing] releasing (#​1415)
  • Use the actual poetry command, rather than manually tweaking the file (#​1443)
  • Fix broken GitHub variable expansion (#​1446)
  • Coverage report generation should also include testing/src/scenario (#​1453)
  • Fix PR title CI job concurrency (#​1451)
  • Adjust the release process to handle publishing ops and ops[testing] (#​1432)
  • A better way than commenting out external repos (#​1463)
  • Use more descriptive names for the publish workflows (#​1464)
  • Move the XML coverage report to .report (#​1465)

Refactoring

  • Import the ops[testing] repository (#​1406)
  • Update linting with the latest ruff (#​1441)

v2.17.0

Compare Source

Features

  • Optionally install Scenario with ops[testing] and expose the names in ops.testing (#​1381)
  • Change ops.main() so that you don't need to type: ignore it (#​1345)
  • Expand the secret ID out to the full URI when only given the ID (#​1358)
  • Add a JujuVersion property for Pebble log forwarding to Loki (#​1370)
  • Preemptively raise InvalidStatusError instead of waiting for Juju:
    • Make it an error to call CollectStatusEvent.add_status with error or unknown (#​1386)
    • Document and validate settable status values in _ModelBackend.set_status (#​1354)

Fixes

  • Fix type of StatusBase subclasses by calling StatusBase.register in __init_subclass__ (#​1383)
  • Secret.set_info and Secret.set_content can be called in the same hook (#​1373)

Documentation

  • Add top-level intro and module-level intros (#​1320)
  • Update the links to the Pebble docs (#​1362)
  • Note about repeatedly setting secret value in Juju 3.6 (#​1366)
  • config-changed is triggered by Juju trust (#​1357)
  • Typo on CharmBase inheritance example by @​theofpa (#​1349)
  • Docs: move Pebble to a separate page (#​1392)

Continuous Integration

  • Periodically run the unit tests of all GitHub-hosted published charms (#​1365)
  • Update the TIOBE reporting for the changes in coverage calculation (#​1367)
  • Spell-check the code as part of linting (#​1388)
  • Run the smoke tests on a schedule (#​1387)

Testing

  • Fix tests that leaked environment variables (#​1385)

Refactoring

  • Move the content of ops.testing to ops._private.harness (#​1369)
  • Keep the unittest.mock names in the 'mock' namespace (#​1379)
  • Deprecate StatusBase.register decorator (#​1384)

Chores

  • Note Juju version on legacy workaround (#​1355)
  • Re-enable test now that Pebble directory permissions are fixed (#​1363)
  • Generate warnings for events that will be removed in Juju 4.0 (#​1374)

v2.16.1

Compare Source

Fix

  • Don't alter os.environ when creating a Harness (#​1359)

v2.16.0

Compare Source

Features

  • Add the description field to SecretInfo in (#​1338)

Refactor

  • Parse JUJU_* environment variables in one place in (#​1313)

Fixes

  • Fix reading Juju secret expiry dates in (#​1317)
  • Correct the signature of .events() in (#​1342)

Documentation

  • Security policy change to only support each active major release in (#​1297)
  • Add Juju version markers in (#​1311)
  • Use Sphinx 8 in (#​1303)
  • Live reload documentation with sphinx-autobuild in (#​1323)

Tests

  • Update the smoke test series/bases in (#​1318)
  • Run pytest in parallel with pytest xdist in (#​1319)
  • Bump Pyright to 1.1.377 in (#​1332)
  • Run tests on Python 3.12 and the install test on Python 3.13 in (#​1315)

CI

  • Add a workflow that runs the TIOBE quality checks in (#​1301)
  • Allow executing the TIOBE workflow manually in (#​1321)
  • Make Pyright report unnecessary type ignore comments in (#​1333)
  • Enable linting of docs/custom_conf.py in (#​1330)

v2.15.0

Compare Source

Features

  • Add support for Pebble check-failed and check-recovered events (#​1281)

Fixes

  • Pass secret data to Juju via files, rather than as command-line values (#​1290) fixing CVE-2024-41129
  • Include checks and log targets when merging layers in ops.testing (#​1268)

Documentation

  • Clarify distinction between maintenance and waiting status (#​1148)

CI

  • Bump the Go version to match Pebble (#​1285)
  • Run ruff format over charm pin update code (#​1278)
  • Bump certifi from 2024.2.2 to 2024.7.4 in /docs (#​1282)
  • Update charm pins (#​1269)

v2.14.1

Compare Source

Fixes

  • Add connect timeout for exec websockets to avoid hanging (#​1247)
  • Adjust Harness secret behaviour to align with Juju (#​1248)

Tests

  • Fix TypeError when running test.pebble_cli (#​1245)
  • Properly clean up after running setup_root_logging in test_log (#​1259)
  • Verify that defer() is not usable on stop,remove,secret-expired,secret-rotate (#​1233)

Documentation

  • Fix HACKING.md link on PyPI, and internal links (#​1261, #​1236)
  • Add a section to HACKING.md on PR titles (commit messages to main) (#​1252)
  • Add release step to update pinned charm tests (#​1213)
  • Add a security policy (#​1266)

CI

  • Only run tests once on push to PR (#​1242)
  • Validate PR title against conventional commit rules in (#​1262)
  • Only update ops, not all dependencies, in charm tests in (#​1275)
  • Add artefact attestation (#​1267)

v2.14.0

Compare Source

Features

  • Add a __str__ to ActionFailed, for better unexpected failure output (#​1209)

Fixes

  • The other argument to RelatationDataContent.update(...) should be optional (#​1226)

Documentation

  • Use the actual emoji character rather than GitHub markup, to show properly on PyPI (#​1221)
  • Clarify that SecretNotFound may be raised for permission errors (#​1231)

Refactoring

v2.13.0

Compare Source

Features

  • Added support for user secrets in Harness (#​1176)

Fixes

  • Corrected the model config types (#​1183)
  • In Harness, only inspect the source file if it will be used - this fixed using Harness in a Python REPL (#​1181)

Documentation

  • Updated publishing a release in HACKING.md (#​1173)
  • Added tox -e docs-deps to compile requirements.txt (#​1172)
  • Updated doc to note deprecated functionality in (#​1178)

Tests

v2.12.0

Compare Source

Features

  • Added Model.get_cloud_spec which uses the credential-get hook command to get details of the cloud where the model is deployed (#​1152)

Fixes

  • Update Pebble Notices get_notices parameter name to users=all (previously select=all) (#​1146)
  • Warn when an observer weakref is lost (#​1142)
  • More robust validation of observer signatures (#​1147)
  • Change Model.relation.app type from Application|None to Application (#​1151)
  • Fix attaching storage in Harness before begin (#​1150)
  • Fixed an issue where pebble.Client.exec might leak a socket.timeout (builtins.TimeoutError) exception (#​1155)
  • Add a consistency check and default network to add_relation (#​1138)
  • Don't special-case get_relation behaviour in leader-elected (#​1156)
  • Accept type: secret for config options (#​1167)

Refactoring

  • Refactor main.py, creating a new _Manager class (#​1085)

Documentation

  • Use "integrate with" rather than "relate to" (#​1145)
  • Updated code examples in the docstring of ops.testing from unittest to pytest style (#​1157)
  • Add peer relation details in Harness.add_relation docstring (#​1168)
  • Update Read the Docs Sphinx Furo theme to use Canonical's latest styling (#​1163, #​1164, #​1165)

v2.11.0

Compare Source

Features

  • StopEvent, RemoveEvent, and all LifecycleEvents are no longer deferrable, and will raise a RuntimeError if defer() is called on the event object (#​1122)
  • Add ActionEvent.id, exposing the JUJU_ACTION_UUID environment variable (#​1124)
  • Add support for creating pebble.Plan objects by passing in a pebble.PlanDict, the
    ability to compare two Plan objects with ==, and the ability to create an empty Plan with Plan() (#​1134)

Fixes

  • The remote app name (and its databag) is now consistently available in relation-broken events (#​1130)

Documentation

  • Improve the can_connect() API documentation (#​1123)

Tooling

v2.10.0

Compare Source

Features

  • Add support for Pebble Notices (PebbleCustomNoticeEvent, get_notices, and so on) (#​1086, #​1100)
  • Add Relation.active, and excluded inactive relations from Model.relations (#​1091)
  • Add full support for charm metadata v2 (in particular, extended ContainerMeta,
    and various info links in CharmMeta) (#​1106)
  • When handling actions, print uncaught exceptions to stderr (#​1087)
  • Raise ModelError in Harness if an invalid status is set (#​1107)

Fixes

  • Add Pebble log targets and checks to testing plans (#​1111)
  • CollectStatusEvent is now a LifecycleEvent (#​1080)

Documentation

  • Update README to reflect charmcraft init changes (#​1089)
  • Add information on pushing locked/bind-mount files (#​1094)
  • Add instructions for using a custom version of ops to HACKING (#​1092)

Tooling

  • Use pyproject.toml for building (#​1068)
  • Update to the latest version of Pyright (#​1105)

[v2.9.0](https://re

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Etc/UTC)

  • Branch creation
    • "every weekend"
  • 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.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


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

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

@renovate
renovate Bot requested a review from lengau as a code owner July 25, 2026 07:30
@renovate renovate Bot added the PR: Dependencies This PR updates project dependencies. label Jul 25, 2026
@renovate
renovate Bot requested a review from a team July 25, 2026 07:30
@renovate
renovate Bot force-pushed the renovate/main-ops-2.x branch from 7e6f5bc to 5c2f80d Compare August 1, 2026 11:25
@renovate renovate Bot changed the title build(deps): update dependency ops to v2.23.2 (main) build(deps): update dependency ops to v2.23.4 (main) Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Dependencies This PR updates project dependencies.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants