.. _programmatic_usage: Running from Python ==================== The entry script (``__main__.py``) does this for you, but you can drive the pipeline directly if you need finer control (e.g. from a notebook or a custom orchestration script): .. code-block:: python import logging from pathlib import Path from kaxanuk.attribution_analysis.config_handlers.excel_configurator import ExcelConfigurator from kaxanuk.attribution_analysis.performance_attribution import main from kaxanuk.attribution_analysis.services.configuration_logger import configure_logger from kaxanuk.attribution_analysis.services.env_loader import load_config_env # Load Config/.env (e.g. FRED_API_KEY) load_config_env() configure_logger( logger_name="kaxanuk.attribution_analysis", logger_level=logging.INFO, logger_format="[%(levelname)s] %(message)s", logger_file=None, ) # Load and validate the Excel configuration configurator = ExcelConfigurator(Path("Config") / "attribution_analysis_parameters.xlsx") configuration = configurator.get_configuration() # Run the full attribution pipeline main( configuration, launch_dashboard=True, dashboard_port=configurator.get_dashboard_port(), ) See :ref:`api_reference` for the full reference on ``main()``, ``ExcelConfigurator``, and the other public entry points used above.