
    nbj	                        d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
  ed           G d	 d
                      ZdddZdddZdddZddZdS )    )annotationsN)	dataclass)Path   )DEFAULT_RUNTIME_DIRRuntimePathsis_relative_toT)frozenc                      e Zd ZU dZded<   dZded<   dZded<    ej        e	          Z
ded	<   d
Zded<   dZded<   edd            ZdS )SettingslocalstrenvCHFbase_currencyEurope/Zurichtimezoner   runtime_pathsINFO	log_levelTboolblock_runtime_inside_reporeturnr   c                    | j         j        S N)r   db_path)selfs    {/home/agent/.hermes/worktrees/FinanceManager-sprint5-portfolio-performance-foundation/src/jarvis_finance/config/settings.pyr   zSettings.db_path   s    !))    N)r   r   )__name__
__module____qualname__r   __annotations__r   r   r   	from_baser   r   r   r   propertyr    r   r   r   r   
   s         CM#H####"8,"89L"M"MMMMMMI&****** * * X* * *r   r   startPath | Noner   r   c                    | pt          j                                                    }|g|j        D ]4}|dz                                  s|dz                                  r|c S 5|S )Nz.gitzpyproject.toml)r   cwdresolveparentsexists)r'   current	candidates      r   find_repo_rootr0      s    "

++--G00  	&&(( 	Y9I-I,Q,Q,S,S 		Nr   	repo_rootenvirondict[str, str] | Nonec                   |pt           j        }t          |                    dt	          t
                                                                        }t          j        |          }|                    d          }|rMt          
                    |dt          |                                                                                     t          |                    dd          |                    dd          |                    dd	          ||                    d
d          |                    dd          dv          }t          ||            |S )NJARVIS_FINANCE_RUNTIME_DIRJARVIS_FINANCE_DB_PATHr   JARVIS_FINANCE_ENVr   JARVIS_FINANCE_BASE_CURRENCYr   JARVIS_FINANCE_TIMEZONEr   JARVIS_FINANCE_LOG_LEVELr   (JARVIS_FINANCE_BLOCK_RUNTIME_INSIDE_REPO1>   0Falsefalse)r   r   r   r   r   r   )r1   )osr2   r   getr   r   
expanduserr   r$   object__setattr__r+   r   validate_settings)r1   r2   r   runtime_dirpathsdb_overridesettingss          r   load_settingsrJ       s4   

RZCsww;SAT=U=UVVWWbbddK";//E''233K W5)T+->->-I-I-K-K-S-S-U-UVVVGG('22gg<eDD2ODD''4f=="%''*TVY"Z"Zby"y  H h)4444Or   rI   Nonec                    |pt                                                      }| j        r6t          | j        j        |          rt          d| j        j                   | j        dk    rt          d          d S )Nz6Runtime directory must be outside the Git repository: r   zMVP 1 base currency must be CHF)r0   r+   r   r	   r   base_dir
ValueErrorr   )rI   r1   roots      r   rE   rE   3   s    )))2244D) unX=S=\^b.c.c usRZRhRqssttt&&:;;; '&r   c                8    | j                                          d S r   )r   ensure_dirs)rI   s    r   ensure_runtime_dirsrR   ;   s    &&(((((r   r   )r'   r(   r   r   )NN)r1   r(   r2   r3   r   r   )rI   r   r1   r(   r   rK   )rI   r   r   rK   )
__future__r   r@   dataclassesr   pathlibr   rG   r   r   r	   r   r0   rJ   rE   rR   r&   r   r   <module>rV      s   " " " " " " 				 ! ! ! ! ! !       D D D D D D D D D D $
* 
* 
* 
* 
* 
* 
* 
*        &< < < < <) ) ) ) ) )r   