diff --git a/python/kicad_interface.py b/python/kicad_interface.py index f0d37eb..3b2e913 100644 --- a/python/kicad_interface.py +++ b/python/kicad_interface.py @@ -15,24 +15,32 @@ import traceback from pathlib import Path from typing import Any, Dict, List, Optional, Tuple +from annotations import AnnotationLoader from resources.resource_definitions import RESOURCE_DEFINITIONS, handle_resource_read # Import tool schemas, resource definitions, and IPC API annotations from schemas.tool_schemas import TOOL_SCHEMAS -from annotations import AnnotationLoader _annotation_loader = AnnotationLoader() # Configure logging -log_dir = os.path.join(os.path.expanduser("~"), ".kicad-mcp", "logs") -os.makedirs(log_dir, exist_ok=True) -log_file = os.path.join(log_dir, "kicad_interface.log") - -logging.basicConfig( - level=logging.DEBUG, - format="%(asctime)s [%(levelname)s] %(message)s", - handlers=[logging.FileHandler(log_file)], -) +# Try to set up a file handler in ~/.kicad-mcp/logs. If that directory isn't +# writable (e.g. sandboxed test environments, restricted CI runners), fall +# back to console-only logging so importing this module never crashes. +try: + log_dir = os.path.join(os.path.expanduser("~"), ".kicad-mcp", "logs") + os.makedirs(log_dir, exist_ok=True) + log_file = os.path.join(log_dir, "kicad_interface.log") + logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s [%(levelname)s] %(message)s", + handlers=[logging.FileHandler(log_file)], + ) +except (OSError, PermissionError): + logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s [%(levelname)s] %(message)s", + ) logger = logging.getLogger("kicad_interface") # Log Python environment details