diff --git a/CHANGELOG.md b/CHANGELOG.md index df1d0c65..33b64a16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ ### Fixed - **Test Cassette Organization**: Consolidated all VCR cassettes to `tests/cassettes/` +- **Environment Loading**: Fixed `.env` file loading to search from current working directory instead of source file directory ([#250](https://github.com/ggozad/haiku.rag/pull/250)) - thanks @tianyicui ## [0.26.7] - 2026-01-20 diff --git a/app/backend/main.py b/app/backend/main.py index 6288f75e..80a740cb 100644 --- a/app/backend/main.py +++ b/app/backend/main.py @@ -2,7 +2,7 @@ import logging import os from pathlib import Path -from dotenv import load_dotenv +from dotenv import find_dotenv, load_dotenv from pydantic_ai.ui import SSE_CONTENT_TYPE from pydantic_ai.ui.ag_ui import AGUIAdapter from starlette.applications import Starlette @@ -23,7 +23,7 @@ from haiku.rag.client import HaikuRAG from haiku.rag.config import load_yaml_config from haiku.rag.config.models import AppConfig -load_dotenv() +load_dotenv(find_dotenv(usecwd=True)) # Configure logfire (only sends data if LOGFIRE_TOKEN is present) try: diff --git a/evaluations/evaluations/benchmark.py b/evaluations/evaluations/benchmark.py index 064ce40b..b8ad5d4f 100644 --- a/evaluations/evaluations/benchmark.py +++ b/evaluations/evaluations/benchmark.py @@ -5,7 +5,7 @@ from typing import Any, cast import logfire import typer -from dotenv import load_dotenv +from dotenv import find_dotenv, load_dotenv from pydantic_evals import Case, Dataset as EvalDataset from pydantic_evals.evaluators import LLMJudge from pydantic_evals.reporting import ReportCaseFailure @@ -23,7 +23,7 @@ from haiku.rag.logging import configure_cli_logging from haiku.rag.agents.qa import get_qa_agent from haiku.rag.utils import get_model -load_dotenv() +load_dotenv(find_dotenv(usecwd=True)) logfire.configure(send_to_logfire="if-token-present", service_name="evals") logfire.instrument_pydantic_ai() diff --git a/haiku_rag_slim/haiku/rag/cli.py b/haiku_rag_slim/haiku/rag/cli.py index 9f8ac8ee..e99d0982 100644 --- a/haiku_rag_slim/haiku/rag/cli.py +++ b/haiku_rag_slim/haiku/rag/cli.py @@ -8,22 +8,23 @@ from pathlib import Path from typing import Any import typer -from dotenv import load_dotenv +from dotenv import find_dotenv, load_dotenv -from haiku.rag.app import HaikuRAGApp -from haiku.rag.config import ( +# Load environment variables from .env file for API keys and service URLs. +# Env loading needs to be before config import; usecwd=True searches from cwd, not this .py file's location +load_dotenv(find_dotenv(usecwd=True)) + +from haiku.rag.app import HaikuRAGApp # noqa: E402 +from haiku.rag.config import ( # noqa: E402 AppConfig, find_config_file, get_config, load_yaml_config, set_config, ) -from haiku.rag.logging import configure_cli_logging -from haiku.rag.store.exceptions import MigrationRequiredError -from haiku.rag.utils import is_up_to_date - -# Load environment variables from .env file for API keys and service URLs -load_dotenv() +from haiku.rag.logging import configure_cli_logging # noqa: E402 +from haiku.rag.store.exceptions import MigrationRequiredError # noqa: E402 +from haiku.rag.utils import is_up_to_date # noqa: E402 _cli = typer.Typer( context_settings={"help_option_names": ["-h", "--help"]}, no_args_is_help=True