Hooks make arbitrary transformations to entry data dicts. Every entry data dict generated by an importer is run through every hook before being output.
``__init__(config)``
Initializes the hook with the user's configuration.
Importers and hooks are both loaded and found dynamically when the program starts. This makes it easy to extend the program: you just need to write the class following the established pattern, no registration needed.
import2ledger finds importers by looking at all ``.py`` files in the ``importers/`` directory, skipping files whose names start with ``.`` (hidden) or ``_`` (private). It tries to import that file as a module. If it succeeds, it looks for things in the module named ``*Importer``, and adds those to the list of importers.
Hooks follow the same pattern, searching the ``hooks/`` directory and looking for things named ``*Hook``.
Note in particular that multiple importers can handle the same input file. This helps support inputs like Patreon's earnings CSV, where completely different transactions are generated from the same source.