Metadata-Version: 2.4
Name: charms.reconciler
Version: 0.0.1
Summary: Charm library for unified reconciliation
Author-email: George Kraft <george.kraft@canonical.com>, Adam Dyess <adam.dyess@canonical.com>, Mateo Florido <mateo.florido@canonical.com>
License: Apache
Project-URL: Homepage, https://github.com/charmed-kubernetes/charm-lib-reconciler
Project-URL: Bug Tracker, https://github.com/charmed-kubernetes/charm-lib-reconciler/issues
Keywords: juju,charming,ops,framework
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ops
Requires-Dist: charms.contextual-status
Dynamic: license-file

# charm-lib-reconciler

Charm library for unified reconciliation.

This library aims to make it easier to write charms with a single "reconcile"
handler that handles all Juju events.

```python3
from charms.reconciler import Reconciler

class SomeCharm(ops.CharmBase):
    def __init__(self, *args):
        super().__init__(*args)
        self.reconciler = Reconciler(self, self.reconcile)

    def reconcile(self, event):
        # ...
```

In the above example, the `reconcile` method will end up being called for any
HookEvent such as `install`, `config_changed`, `*_relation_changed`, and so on.
Within the reconcile method, the charm can check and set relation data,
configure local services, and so on.
