+
    •çîiÃ  ã                  ó–   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt]! ]! ]4      P                  R,          4        ! R R4      t
]
! 4       tR# )uê   
config.py â€” People Hub Interview Platform
Single source of truth for all configuration.
All values loaded from .env â€” nothing hardcoded.

Usage anywhere in the project:
    from config import settings
    settings.OPENAI_API_KEY
)Úannotations)ÚPath)Úload_dotenvNz.envc                  óž  € ] tR t^t$ ]P
                  ! RR4      tR]R&   ]! ]P
                  ! RR4      4      t	R]R&   ]P
                  ! RR4      P                  4       R8H  tR	]R&   ]P
                  ! R
R4      tR]R
&   ]P
                  ! RR4      tR]R&   ]P
                  ! RR4      tR]R&   ]P
                  ! RR4      tR]R&   ]! ]P
                  ! RR4      4      tR]R&   ]! ]P
                  ! RR4      4      tR]R&   ]P
                  ! RR4      tR]R&   ]P
                  ! RR4      tR]R&   ]P
                  ! RR4      tR]R&   ]! ]P
                  ! RR4      4      tR]R&   ]! ]P
                  ! RR 4      4      tR]R&   ]! ]P
                  ! R!R"4      4      tR]R!&   ]! ]P
                  ! R#R$4      4      tR]R#&   ]! ]P
                  ! R%R&4      4      tR']R%&   ]! ]P
                  ! R(R)4      4      tR']R(&   ]! ]P
                  ! R*R+4      4      tR']R*&   ]! ]P
                  ! R,R-4      4      tR']R,&   ]! ]P
                  ! R.R/4      4      tR']R.&   ]! ]P
                  ! R0R14      4      t R']R0&   ]P
                  ! R2R34      PC                  R44       U u. uF  p V PE                  4       NK  	  up t#R5]R2&   ]! ]P
                  ! R6R74      4      t$R]R6&   ]! ]P
                  ! R8R74      4      t%R]R8&   ]! ]P
                  ! R9R:4      4      t&R]R9&   ]! ]P
                  ! R;R<4      4      t'R]R;&   ^t(R]R=&   ^t)R]R>&   ^t*R]R?&   ^t+R]R@&   ^t,R]RA&   ^t-R]RB&   ^RC^RD^RE^RF^RG^RH/t.RI]RJ&   ^RK^RL^RM^RN^RO^RP/t/RI]RQ&   ]! ]P
                  ! RRRS4      4      t0R]RR&   ]! ]P
                  ! RTR:4      4      t1R]RT&   RU RV lt2RWt3RX# u up i )YÚSettingsÚAPP_HOSTz0.0.0.0ÚstrÚAPP_PORTÚ8000ÚintÚ	APP_DEBUGÚtrueÚboolÚAPP_NAMEu"   People Hub â€“ Candidate InterviewÚAPP_VERSIONz1.0.0ÚJWT_SECRET_KEYÚCHANGE_ME_IN_PRODUCTIONÚJWT_ALGORITHMÚHS256ÚJWT_EXPIRE_MINUTESÚ480ÚACCESS_KEY_EXPIRE_HOURSÚ72ÚOPENAI_API_KEYÚ ÚOPENAI_BASE_URLzhttps://api.openai.com/v1ÚOPENAI_MODELzgpt-4o-miniÚOPENAI_TEMPERATUREz0.0ÚfloatÚOPENAI_MAX_TOKENS_COMPILEÚ600ÚOPENAI_MAX_TOKENS_EVALÚ1200ÚOPENAI_MAX_TOKENS_CAPTCHAÚ100ÚDATA_DIRz./datar   Ú
USERS_FILEz./data/users.jsonÚCODING_RESULTS_FILEz./data/coding_assessment.jsonÚFRAUD_LOG_FILEz./data/fraud_log.jsonÚSESSIONS_FILEz./data/sessions.jsonÚ	PHOTO_DIRz./data/photosÚALLOWED_ORIGINSzhttp://localhost:8000Ú,z	list[str]ÚFRAUD_MAX_TAB_SWITCHESÚ3ÚFRAUD_MAX_FACE_VIOLATIONSÚFRAUD_MAX_PASTE_EVENTSÚ5ÚFRAUD_INACTIVITY_SECONDSÚ120ÚSTAGE_ASSESSMENTÚSTAGE_ROLEPLAYÚSTAGE_CODINGÚSTAGE_TECHNICALÚSTAGE_HUMAN_INTERVIEWÚSTAGE_HR_ROUNDz/people_hub_assessmentz/people_hub_role_playz/people_hub_coding_assessmentz/interview/technicalz/interview/humanz/interview/hrzdict[int, str]ÚSTAGE_ROUTESzAI Screening Assessmentz	Role PlayzCoding TestzTechnical InterviewzHuman InterviewzHR RoundÚSTAGE_NAMESÚCODING_TIME_MINUTESÚ45ÚCODING_MAX_QUESTIONSc               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚNone© )Úformats   "Ú+D:\Python_Codes\gen_ai\people_hub\config.pyÚ__annotate__ÚSettings.__annotate__\   s   € ÷ :ñ :˜Tñ :ó    c                óz   € V P                   P                  RRR7       V P                  P                  RRR7       R# )z0Create all required data directories on startup.T)ÚparentsÚexist_okN)r%   Úmkdirr*   )Úselfs   &rE   Úensure_dirsÚSettings.ensure_dirs\   s0   € à�‰×Ñ D°4ÐÔ8Ø�‰×Ñ T°DÐÖ9rH   rC   N)4Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚosÚgetenvr   Ú__annotations__r   r	   Úlowerr   r   r   r   r   r   r   r   r   r   r   r   r   r!   r#   r   r%   r&   r'   r(   r)   r*   ÚsplitÚstripr+   r-   r/   r0   r2   r4   r5   r6   r7   r8   r9   r:   r;   r<   r>   rN   Ú__static_attributes__)Úos   0rE   r   r      så  ‡ àŸ9š9 Z°Ó;€HˆcÓ;Ù˜rŸyšy¨°VÓ<Ó=€HˆcÓ=ØŸ9š9 [°&Ó9×?Ñ?ÓAÀVÑK€IˆtÓKØŸ9š9 ZÐ1UÓV€HˆcÓVØŸ9š9 ]°GÓ<€K�Ó<ð Ÿ9š9Ð%5Ð7PÓQ€N�CÓQØŸ9š9 _°gÓ>€M�3Ó>Ù! "§)¢)Ð,@À%Ó"HÓIÐ˜ÓIÙ#& r§y¢yÐ1JÈDÓ'QÓ#RÐ˜SÓRð  ŸYšYÐ'7¸Ó<€N�CÓ<ØŸYšYÐ'8Ð:UÓV€O�SÓVØŸYšY ~°}ÓE€L�#ÓEÙ % b§i¢iÐ0DÀeÓ&LÓ MÐ˜ÓMÙ%(¨¯ªÐ3NÐPUÓ)VÓ%WÐ˜sÓWÙ%(¨¯ªÐ3KÈVÓ)TÓ%UÐ˜CÓUÙ%(¨¯ªÐ3NÐPUÓ)VÓ%WÐ˜sÓWñ $(¨¯	ª	°*¸hÓ(GÓ#H€HˆdÓHÙ#'¨¯	ª	°,Ð@SÓ(TÓ#U€J�ÓUÙ#'¨¯	ª	Ð2GÐIhÓ(iÓ#jÐ˜ÓjÙ#'¨¯	ª	Ð2BÐD[Ó(\Ó#]€N�DÓ]Ù#'¨¯	ª	°/ÐCYÓ(ZÓ#[€M�4Ó[Ù#'¨¯	ª	°+¸Ó(OÓ#P€IˆtÓPð
 —’Ð,Ð.EÓF×LÑLÈSÔQó"áQˆAð 	
�‰Ž	ÙQñ"€O�Yó ñ %(¨¯	ª	Ð2JÈCÓ(PÓ$QÐ˜CÓQÙ%(¨¯ªÐ3NÐPSÓ)TÓ%UÐ˜sÓUÙ$'¨¯	ª	Ð2JÈCÓ(PÓ$QÐ˜CÓQÙ$'¨¯	ª	Ð2LÈeÓ(TÓ$UÐ˜cÓUð "#Ð�cÓ"Ø!"€N�CÓ"Ø!"€L�#Ó"Ø!"€O�SÓ"Ø!"Ð˜3Ó"Ø!"€N�CÓ"ð 	
Ð#Ø	Ð"Ø	Ð*Ø	Ð!Ø	ÐØ	ˆ?ð$€L�.ó ð 	
Ð$Ø	ˆ;Ø	ˆ=Ø	Ð Ø	ÐØ	ˆ:ð#€K�ó ñ "% R§Y¢YÐ/DÀdÓ%KÓ!LÐ˜ÓLÙ!$ R§Y¢YÐ/EÀsÓ%KÓ!LÐ˜#ÓL÷:ñ :ùòS"s   ÊO
r   )Ú__doc__Ú
__future__r   Úpathlibr   Údotenvr   rT   Ú__file__Úparentr   ÚsettingsrC   rH   rE   Ú<module>rc      sG   ðñõ #Ý Ý Û 	ñ ‰D�‹N×!Ñ! FÕ*Ô +÷L:ñ L:ñ^ ‹:‚rH   