Ë
    (<çiÁ  ã                  óÀ   — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 	 ddlZdZ ed	«      Zd
ZdZe G d„ d«      «       Zdd„Zdd„Zddd„Zy# e$ r dZdZY Œ4w xY w)u—  YAML ì„¤ì • ì¤‘ì•™í™” ëª¨ë“ˆ.

ë‹¨ì¼ YAML íŒŒì¼ì—ì„œ ì‹œìŠ¤í…œ ì„¤ì •ì„ ë¡œë“œí•˜ê³  í™˜ê²½ë³€ìˆ˜ ì˜¤ë²„ë¼ì´ë“œë¥¼ ì§€ì›í•œë‹¤.
ì  í‘œê¸°ë²•(dot notation)ìœ¼ë¡œ ì¤‘ì²© í‚¤ì— ì ‘ê·¼ ê°€ëŠ¥.

YAML ë¯¸ì„¤ì¹˜ ì‹œì—ë„ graceful fallback (í™˜ê²½ë³€ìˆ˜ë§Œ ì‚¬ìš©).

Usage:
    from utils.config_loader import load_config
    cfg = load_config()
    model = cfg.get("models.default", "claude-sonnet-4-6")
é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚAnyTFz&/home/jay/workspace/config/system.yamlÚSYSTEM_Ú_c                  óV   — e Zd ZU dZ ee¬«      Zded<    eed¬«      Zded<   ddd
„Z	y	)ÚConfigu“   ì‹œìŠ¤í…œ ì„¤ì • ì»¨í…Œì´ë„ˆ.

    ì  í‘œê¸°ë²•ìœ¼ë¡œ ì¤‘ì²© í‚¤ì— ì ‘ê·¼í•œë‹¤.
    ì˜ˆ: config.get("models.default", "claude-sonnet-4-6")
    )Údefault_factoryúdict[str, Any]ÚdataF)r   Úreprúdict[str, str]Ú
_overridesNc                ó  — |j                  «       j                  dt        «      }|| j                  v r| j                  |   S |j	                  d«      }| j
                  }|D ]#  }t        |t        «      s|c S ||vr|c S ||   }Œ% |S )u;  ì  í‘œê¸°ë²•ìœ¼ë¡œ ê°’ì„ ì¡°íšŒí•œë‹¤.

        í™˜ê²½ë³€ìˆ˜ ì˜¤ë²„ë¼ì´ë“œê°€ YAML ê°’ë³´ë‹¤ ìš°ì„ í•œë‹¤.

        Args:
            key: ì  êµ¬ë¶„ í‚¤ (ì˜ˆ: "models.default").
            default: í‚¤ê°€ ì—†ì„ ë•Œ ë°˜í™˜í•  ê¸°ë³¸ê°’.

        Returns:
            í•´ë‹¹ í‚¤ì˜ ê°’ ë˜ëŠ” default.
        ú.)ÚlowerÚreplaceÚ_ENV_SEPr   Úsplitr   Ú
isinstanceÚdict)ÚselfÚkeyÚdefaultÚoverride_keyÚpartsÚcurrentÚparts          úD/home/jay/workspace/.worktrees/task-2057-dev2/utils/config_loader.pyÚgetz
Config.get0   sŠ   € ð —y‘y“{×*Ñ*¨3´Ó9ˆØ˜4Ÿ?™?Ñ*Ø—?‘? <Ñ0Ð0ð —	‘	˜#“ˆØ—y‘yˆØò 	$ˆDÜ˜g¤tÔ,Ø’Ø˜7Ñ"Ø’Ø˜d‘m‰Gð	$ð ˆó    ©N)r   Ústrr   r   Úreturnr   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__annotations__r   r"   © r#   r!   r   r   %   s.   … ññ !°Ô6€Dˆ.Ó6Ù!&°tÀ%Ô!H€JÓHõr#   r   c                 óÈ   — t         } i }t        j                  j                  «       D ]8  \  }}|j	                  | «      sŒ|t        | «      d j                  «       }|||<   Œ: |S )u¨   SYSTEM_ ì ‘ë‘ì‚¬ë¥¼ ê°€ì§„ í™˜ê²½ë³€ìˆ˜ë¥¼ ìˆ˜ì§‘í•œë‹¤.

    SYSTEM_MODELS_DEFAULT=value â†’ {"models_default": "value"}
    (ì ‘ë‘ì‚¬ ì œê±°, ì†Œë¬¸ìž ë³€í™˜)
    N)Ú_ENV_PREFIXÚosÚenvironÚitemsÚ
startswithÚlenr   )ÚprefixÚ	overridesÚenv_keyÚenv_valÚstrippeds        r!   Ú_collect_env_overridesr9   M   sh   € ô €FØ "€IÜŸJ™J×,Ñ,Ó.ò *ÑˆØ×Ñ˜fÕ%àœs 6›{˜}Ð-×3Ñ3Ó5ˆHØ")ˆIhÒð	*ð
 Ðr#   c                óü   — t         rt        €i S | j                  «       si S 	 t        | d¬«      5 }t        j                  |«      }ddd«       t        t        «      r|S i S # 1 sw Y   ŒxY w# t        $ r i cY S w xY w)u8   YAML íŒŒì¼ì„ ë¡œë“œí•œë‹¤. ì‹¤íŒ¨ ì‹œ ë¹ˆ dict ë°˜í™˜.Nzutf-8)Úencoding)Ú_YAML_AVAILABLEÚ_yaml_moduleÚexistsÚopenÚ	safe_loadr   r   Ú	Exception)ÚpathÚfÚresults      r!   Ú
_load_yamlrE   ]   s|   € åœlÐ2Øˆ	Ø;‰;Œ=Øˆ	ðÜ$ Ô)ð 	/¨QÜ!×+Ñ+¨AÓ.ˆF÷	/äfœdÔ#ØˆMØˆ	÷		/ð 	/ûô
 ò ØŠ	ðús.   ¢A- ¯A!ÁA- ÁA- Á!A*Á&A- Á-A;Á:A;c                ón   — | €t         }nt        | «      }t        |«      }t        «       }t	        ||¬«      S )u&  YAML ì„¤ì • íŒŒì¼ì„ ë¡œë“œí•˜ê³  í™˜ê²½ë³€ìˆ˜ ì˜¤ë²„ë¼ì´ë“œë¥¼ ì ìš©í•œë‹¤.

    Args:
        path: YAML íŒŒì¼ ê²½ë¡œ. Noneì´ë©´ ê¸°ë³¸ ê²½ë¡œ ì‚¬ìš©.
              ì¡´ìž¬í•˜ì§€ ì•ŠëŠ” ê²½ë¡œëŠ” ë¹ˆ Config ë°˜í™˜ (í™˜ê²½ë³€ìˆ˜ë§Œ ì‚¬ìš©).

    Returns:
        Config ì¸ìŠ¤í„´ìŠ¤.
    )r   r   )Ú_DEFAULT_CONFIG_PATHr   rE   r9   r   )rB   Úresolvedr   r5   s       r!   Úload_configrI   m   s6   € ð €|Ü'‰ä˜“:ˆähÓ€DÜ&Ó(€IÜt¨	Ô2Ð2r#   )r&   r   )rB   r   r&   r   r$   )rB   zstr | Path | Noner&   r   )r*   Ú
__future__r   r/   Údataclassesr   r   Úpathlibr   Útypingr   Úyamlr=   r<   ÚImportErrorrG   r.   r   r   r9   rE   rI   r,   r#   r!   ú<module>rP      s‡   ðñõ #ã 	ß (Ý Ý ðÛà€Oñ
 ÐDÓEÐ ð €Ø€ð ÷$ð $ó ð$óNó õ 3øðg ò Ø€LØ‚Oðús   ¢A Á	AÁA