Logging Guide ============= The ``piethorn.logging`` package is intentionally small: it provides a logger and two families of counters for tracking work. Logger ------ ``Logger`` prints tagged messages and tracks how many messages of each type were emitted. Important methods: ``base_log()`` Low-level output helper that prints raw messages when the configured debug level allows it. ``log()``, ``error()``, ``warn()``, ``info()`` Higher-level logging entry points that prefix output with a title such as ``[INFO]``. ``log_sep()`` Prints a separator line, optionally centered around a title. ``count()`` and ``percent()`` Factory helpers that create counters bound to the logger. Counters -------- ``Counter`` Tracks visible, hidden, and fractional progress. It supports absolute adds, fractional adds, tick-based progression, and formatted status messages. ``Percent`` Extends counter behavior with a cap and percent-based progress reporting. ``CounterBehavior`` Controls how reset behavior propagates through parent/child counter trees. Design Notes ------------ The counter objects are not just numeric containers. They can also: * emit messages through the logger they are bound to * create child counters that influence parent progress * distinguish visible from hidden work * support configurable reset propagation This makes the package more suitable for simple CLI progress reporting than for general-purpose structured logging.