"""Bundled features. To add your own: subclass :class:`~finbot.features.base.Feature`, then include it in the list passed to the registry (see ``finbot.app.build_services``). Nothing else in the codebase needs to change. """ from __future__ import annotations from .base import ( Attachment, BotContext, CommandSpec, Feature, Reply, Services, SimpleFeature, ) from .budgets import BudgetsFeature from .coaching import CoachingFeature from .core import CoreFeature from .dashboard import DashboardFeature from .expenses import ExpensesFeature __all__ = [ "Attachment", "BotContext", "BudgetsFeature", "CoachingFeature", "CommandSpec", "CoreFeature", "ExpensesFeature", "Feature", "Reply", "Services", "SimpleFeature", "default_features", ] def default_features() -> list[Feature]: """The stock feature set, in registration order.""" return [ ExpensesFeature(), BudgetsFeature(), DashboardFeature(), CoachingFeature(), CoreFeature(), ]