- Fix: Change JujuContext.machine_id from int to str (#2108)
- Fix: Ensure that the testing context manager is exited when an exception occurs (#2117)
- 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)
- Allow actions without params or descriptions in ops[testing] (#2090)
- Ensure
ops.Pebble.pullcleans 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)
- 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
simpleCharmcraft 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)
- Re-enable testing consistency checks after disabling them (#2141)
- Expand secrets integration and state transition tests (#2130)
- 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)
- 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)
- Expose the Juju hook context in ops.JujuContext (#1996)
- In testing, separate relation data cache from mock Juju backend (#2052)
- 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)
- Nicer logging output in the release script using rich (#2017)
- Clean up PYTHONPATH in tox.ini (#2058)
- Add security event logging (#1905)
- Surface JUJU_MACHINE_ID envvar in testing env (#1961)
- Add a new log target type opentelemetry (#1937)
- 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
Layerinstead of aLayerDictin 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)
- 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)
- Release automation script (#1855)
- Add app_name and unit_id attributes to testing.context (#1920)
- 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)
- Use load_config in the httpbin example charm (#1852)
- Update HACKING.md with how to bump
opsversion 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)
- Replace Python version to 3.10 for observability charm tests (#1914)
- 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)
The minimum version of Python for Ops 3.x is 3.10.
- Be consistent with recommending self.app and self.unit (#1856)
- Hotfix, publish job for ops-tracing (#1865)
- 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)
- 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)
- 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)
- 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)
- Add Juju topology labels (#1744)
- Turn on databag access validation in
__init__(#1737) - Allow event suffixes to appear in event names in
ops.testing(#1754)
- 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)
- 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-operatorin observability charm tests (#1753) - Fix reporting to TIOBE after
ops[tracing]addition (#1755)
- Reverting "run deferred events with fresh charm instances" (#1711)
- Add best practices about status (#1689)
- Ops[tracing] (with a first-party charm lib) (#1612)
- Pebble identities (#1672)
- Run deferred events with fresh charm instances (#1631)
- Allow TLS 1.2 in ops-tracing (#1705)
- Try to fix flaky pebble exec test (#1664)
- 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)
- 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)
- Fix overly specific test that fails sometimes with tracing (#1695)
- Add a
remove_revision()method toSecretRemoveEventandSecretExpiredEvent(#1624) - Add
Relation.remote_modelproperty (#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.Containermatch the plan (#1630) ops.testing.Statecomponents are less mutable (#1617)
- Assorted fixes for Pebble layer merging in Harness and Scenario (#1627)
- 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)
- Exclude vault-k8s-operator until the system can handle monorepos (#1650)
- Use the latest version of ops-scenario in the compatibility tests (#1608)
- Expose the Juju version via Model objects (#1563)
- Support starting and stopping Pebble checks, and the checks enabled field (#1560)
- Update logo and readme by @tmihoc (#1571)
- Fill out remaining external link placeholders (#1564)
- Use noun relation and verb integrate (#1574)
- Update ref to charmcraft.yaml reference by @medubelko (#1580)
- Add a how-to for setting open ports (#1579)
- Fix links that pointed to earlier Juju docs (#1575)
- Update links to Charmcraft docs (#1582)
- Small updates to machine charm tutorial (#1583)
- Update list of charms and handle increasing uv usage (#1588)
- Handle presence/absence of "static" and "static-charm" envs (#1590)
- Ensure that the event snapshot is available when one observer defers and another does not (#1562)
- Maintain transaction integrity on first run (#1558)
- Set up intersphinx and add links (#1546)
- Don't store duplicate events in the notice queue (#1372)
- Remove ops.main.main deprecation warning, and avoid warnings in action output (#1496)
- 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)
- 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)
- Handle warnings generated by our own tests (#1469)
- Allow check to fail an additional time when running the test (#1531)
- Make
push_pathopen in binary mode so it works on non-text files (#1458)
- Use
MaintenanceStatusfor local issues (#1397) - Explicitly document that
collect-statusis is run on every hook (#1399) - Use our docs URL for the
ogp:urlproperties Sphinx generates (#1411) - Set the
READTHEDOCScontext variable (#1410) - Fix Read the Docs ad placement (#1414)
- Clarify where
StoredStateis stored, and the upgrade behaviour (#1416) - Fix copy 'n' paste error in
stop_servicesdocstring (#1457)
- 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)
- Import the ops[testing] repository (#1406)
- Update linting with the latest ruff (#1441)
- 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: ignoreit (#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
InvalidStatusErrorinstead of waiting for Juju:- Make it an error to call
CollectStatusEvent.add_statuswith error or unknown (#1386) - Document and validate settable status values in
_ModelBackend.set_status(#1354)
- Make it an error to call
- Fix type of
StatusBasesubclasses by callingStatusBase.registerin__init_subclass__(#1383) Secret.set_infoandSecret.set_contentcan be called in the same hook (#1373)
- 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-changedis triggered by Juju trust (#1357)- Typo on
CharmBaseinheritance example by @theofpa (#1349) - Docs: move Pebble to a separate page (#1392)
- 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)
- Fix tests that leaked environment variables (#1385)
- Move the content of
ops.testingtoops._private.harness(#1369) - Keep the
unittest.mocknames in the 'mock' namespace (#1379) - Deprecate
StatusBase.registerdecorator (#1384)
- 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)
- Don't alter os.environ when creating a Harness (#1359)
- Add the description field to SecretInfo in (#1338)
- Parse JUJU_* environment variables in one place in (#1313)
- Fix reading Juju secret expiry dates in (#1317)
- Correct the signature of .events() in (#1342)
- 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)
- 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)
- 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)
- Add support for Pebble check-failed and check-recovered events (#1281)
- 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)
- Clarify distinction between maintenance and waiting status (#1148)
- 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)
- Add connect timeout for exec websockets to avoid hanging (#1247)
- Adjust Harness secret behaviour to align with Juju (#1248)
- 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)
- 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)
- 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)
- Add a
__str__to ActionFailed, for better unexpected failure output (#1209)
- The
otherargument toRelatationDataContent.update(...)should be optional (#1226)
- 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)
- Refactor tests to pytest style (#1199, #1200, #1203, #1206)
- Use
ruffformatter and reformat all code (#1224) - Don't use f-strings in logging calls (#1227, 1234)
- Added support for user secrets in Harness (#1176)
- 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)
- Updated publishing a release in HACKING.md (#1173)
- Added
tox -e docs-depsto compile requirements.txt (#1172) - Updated doc to note deprecated functionality in (#1178)
- First stage of converting tests from unittest to pytest (#1191, #1192, #1196, #1193, #1195)
- Added
pebble.CheckInfo.change_idfield (#1197)
- Added
Model.get_cloud_specwhich uses thecredential-gethook command to get details of the cloud where the model is deployed (#1152)
- Update Pebble Notices
get_noticesparameter name tousers=all(previouslyselect=all) (#1146) - Warn when an observer weakref is lost (#1142)
- More robust validation of observer signatures (#1147)
- Change
Model.relation.apptype fromApplication|NonetoApplication(#1151) - Fix attaching storage in Harness before
begin(#1150) - Fixed an issue where
pebble.Client.execmight leak asocket.timeout(builtins.TimeoutError) exception (#1155) - Add a consistency check and default network to
add_relation(#1138) - Don't special-case
get_relationbehaviour inleader-elected(#1156) - Accept
type: secretfor config options (#1167)
- Refactor main.py, creating a new
_Managerclass (#1085)
- Use "integrate with" rather than "relate to" (#1145)
- Updated code examples in the docstring of
ops.testingfrom unittest to pytest style (#1157) - Add peer relation details in
Harness.add_relationdocstring (#1168) - Update Read the Docs Sphinx Furo theme to use Canonical's latest styling (#1163, #1164, #1165)
StopEvent,RemoveEvent, and allLifecycleEvents are no longer deferrable, and will raise aRuntimeErrorifdefer()is called on the event object (#1122)- Add
ActionEvent.id, exposing the JUJU_ACTION_UUID environment variable (#1124) - Add support for creating
pebble.Planobjects by passing in apebble.PlanDict, the ability to compare twoPlanobjects with==, and the ability to create an empty Plan withPlan()(#1134)
- The remote app name (and its databag) is now consistently available in relation-broken events (#1130)
- Improve the
can_connect()API documentation (#1123)
- Use ruff for linting (#1120, #1139, #1114)
- Add support for Pebble Notices (
PebbleCustomNoticeEvent,get_notices, and so on) (#1086, #1100) - Add
Relation.active, and excluded inactive relations fromModel.relations(#1091) - Add full support for charm metadata v2 (in particular, extended
ContainerMeta, and various info links inCharmMeta) (#1106) - When handling actions, print uncaught exceptions to stderr (#1087)
- Raise
ModelErrorin Harness if an invalid status is set (#1107)
- Add Pebble log targets and checks to testing plans (#1111)
- CollectStatusEvent is now a LifecycleEvent (#1080)
- 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)
- Use pyproject.toml for building (#1068)
- Update to the latest version of Pyright (#1105)
- Add log target support to
ops.pebblelayers and plans (#1074) - Add
Harness.run_action(),testing.ActionOutput, andtesting.ActionFailed(#1053)
- Secret owners no longer auto-peek, and can use refresh, in Harness, and corrected secret access for non-leaders (#1067, #1076)
- Test suite adjustments to pass with Python 3.12 (#1081)
- Refresh README (#1052)
- Clarify how custom events are emitted (#1072)
- Fix the
Harness.get_filesystem_rootexample (#1065)
- Add
Unit.reboot()andHarness.reboot_count(#1041) - Add
RelationMeta.optional(#1038) - Raise a clearer exception when the Pebble socket is missing (#1049)
- The type of a
Handle'skeywas expanded fromstrtostr|None - Narrow types of
appandunitin relation events to excludeNonewhere applicable push_pathandpull_pathnow include empty directories (#1024)- Harness's
evaluate_statusresets collected statuses (#1048)
- Notes that status changes are immediate (#1029)
- Clarifies
set_resultsmaximum size (#1047) - Expands documentation on when exceptions may be raised (#1044)
- Makes
pebble.Client.remove_pathandContainer.remove_pathdocs consistent (#1031)
- Adds type hinting across the test suite (#1017, #1015, #1022, #1023, #1025, #1028, #1030, #1018, #1034, #1032)
- Adds Unit.set_ports() (#1005)
- Type checks now allow comparing a
JujuVersionto astr - Rename
OpenPorttoPort(OpenPortremains as an alias)
- Reduces the amount of detail in open/close port methods (#1006)
- Removes you/your from docstrings (#1003)
- Minor improvements to HACKING (#1016)
- Extends the use of type hints in the test suite (#1008, #1009, #1011, #1012, #1013, #1014, #1004)