
    -Gh
                        S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
JrJrJr  SSKr\ " S S	5      5       r\ " S
 S5      5       r\ " S S5      5       r\ " S S5      5       rSS jrSS jrSS jrg)zBConfiguration loading utilities for the Codex conversation logger.    )annotations)	dataclassfield)timezone)Path)AnyDictOptionalNc                  T    \ rS rSr% SrS\S'   SrS\S'   \R                  rS\S'   S	r	g
)RotationPolicy   iQ intwindow_seconds   zOptional[int]retention_daysr    N)
__name__
__module____qualname____firstlineno__r   __annotations__r   r   utc__static_attributes__r       codex_logger/config.pyr   r      s$    NC$&NM&!Hh%r   r   c                  2    \ rS rSr% SrS\S'   SrS\S'   Srg)	FlushPolicy   i@B r   max_buffer_bytes
   max_interval_secondsr   N)r   r   r   r   r   r   r!   r   r   r   r   r   r      s    %c% "#"r   r   c                  N    \ rS rSr% SrS\S'   SrS\S'   SrS	\S
'   SrS\S'   Sr	g)ServerConfig   z	127.0.0.1strhosti   r   portNOptional[Path]socket_pathd   backlogr   )
r   r   r   r   r&   r   r'   r)   r+   r   r   r   r   r#   r#      s*    D#D#"&K&GSr   r#   c                      \ rS rSr% \" S5      rS\S'   SrS\S'   SrS\S	'   S
r	S\S'   \
" \S9rS\S'   \
" \S9rS\S'   \
" \S9rS\S'   SrS\S'   SrS\S'   SrS\S'   \SS j5       rSrg)LoggerConfig"   z/var/log/codexr   log_dirz.tmpr%   
tmp_suffixzcodex-{stamp}.jsonfilename_templatez%Y%m%d-%H%M%Sstamp_format)default_factoryr   rotationr   flushr#   serverz/healthzhealth_pathz/ingestingest_pathz/metricsmetrics_pathc                ,    [        U R                  5      $ N)r   r/   )selfs    r   log_dir_pathLoggerConfig.log_dir_path/   s    DLL!!r   r   N)returnr   )r   r   r   r   r   r/   r   r0   r1   r2   r   r   r4   r   r5   r#   r6   r7   r8   r9   propertyr=   r   r   r   r   r-   r-   "   s    )*GT*J1s1'L#'$^DHnD{;E;; >FL>!K! K "L#"" "r   r-   c                    U R                  SSS9 n[        R                  " U5      =(       d    0 sS S S 5        $ ! , (       d  f       g = f)Nrzutf-8)encoding)openyaml	safe_load)pathhandles     r   
_load_yamlrI   4   s1    	3	)V~~f%+ 
*	)	)s	   :
Ac                4   0 nU R                   R                  5        Hq  nUR                  UR                  5      nUc  M#  [	        UR
                  S5      (       a%  UR
                  n[        XT5      X#R                  '   Mc  XBUR                  '   Ms     U " S0 UD6$ )N__dataclass_fields__r   )rK   valuesgetnamehasattrtype_merge_dataclass)dc_clsdatakwargs	field_objvalue	merge_clss         r   rQ   rQ   9   s    F00779	(=9>>#9::!I%5i%GF>>"%*9>>" : Fr   c                R    U c
  [        5       $ [        U 5      n[        [         U5      $ r;   )r-   rI   rQ   )rG   rS   s     r   load_configrY   G   s&    |~dDL$//r   )rG   r   r?   Dict[str, Any])rS   rZ   )rG   r(   r?   r-   )__doc__
__future__r   dataclassesr   r   datetimer   pathlibr   typingr   r	   r
   rE   r   r   r#   r-   rI   rQ   rY   r   r   r   <module>ra      s    H " (   & &  & & & # # #
    " " "",
0r   