a
    ~Ei@  ã                   @   s˜   d Z ddlZddlmZ ddlmZ z2ddlmZ eeƒj	j	d Z
e
 ¡ rTee
d W n eyp   edƒ Y n0 G d	d
„ d
ƒZeƒ Zejs”e ¡  dS )z‚
Configuration management using environment variables.

Usage:
    from config import config
    db_password = config.DB_PASSWORD
é    N)ÚPath)ÚOptional)Úload_dotenvz.env)Zdotenv_pathzGWarning: python-dotenv not installed. Using environment variables only.c                   @   sr  e Zd ZU dZe dd¡Zeed< e	e dd¡ƒZ
e	ed< e dd¡Zeed< e dd	¡Zeed< e d
d¡Zeed
< e dd	¡Zeed< e dd¡Zeed< e dd¡Zeed< e dd	¡Zeed< e dd	¡Zeed< e dd¡Zeed< e dd¡Zeed< e	e dd¡ƒZe	ed< e dd¡ d¡Zeed< e dd¡Zeed< e dd¡ ¡ d kZeed< e d!d"¡Zeed!< e	e d#d$¡ƒZe	ed#< e	e d%d&¡ƒZe	ed%< e	e d'd(¡ƒZ e	ed'< e d)d¡ ¡ d kZ!eed)< d*Z"e	ed+< d,Z#e	ed-< d.Z$e	ed/< d*Z%e	ed0< d*Z&e	ed1< g d2¢Z'eed3< d.Z(e	ed4< d,Z)e	ed5< g d6¢Z*eed7< e+d8d9„ ƒZ,e+ed:œd;d<„ƒZ-d=S )>ÚConfigz4Application configuration from environment variablesÚDB_HOSTZ	localhostÚDB_PORTZ3306ÚDB_USERÚrootÚDB_PASSWORDÚ ÚDB_NAMEZlifesimÚOPENAI_API_KEYÚCONVERSATION_MODEL_PROVIDERZopenaiÚCONVERSATION_MODEL_NAMEzgpt-5.1-2025-11-13Ú
FAL_AI_KEYÚREPLICATE_API_TOKENÚIMAGE_GENERATION_PROVIDERZimagen4Ú
JWT_SECRETúdev-secret-change-in-productionÚSESSION_TIMEOUTZ3600ÚALLOWED_ORIGINSÚ*ú,ÚENVIRONMENTZdevelopmentÚDEBUGÚfalseÚtrueÚ	LOG_LEVELÚINFOÚMAX_CONNECTIONSZ20ÚOPENAI_MAX_REQUESTS_PER_HOURZ60Ú!WEBSOCKET_MAX_MESSAGES_PER_MINUTEZ30Ú	TEST_MODEé'  ÚSPEED_PAUSEDi † ÚSPEED_QUESTION_PAUSEé   Ú	SPEED_MINÚ	SPEED_MAXÚSPEED_DEFAULT)r#   éè  éô  é2   é   r&   ÚSPEED_BUTTON_VALUESÚDEBUG_SPEED_MINÚDEBUG_SPEED_MAX)r#   r*   r+   r,   r-   é
   é   r&   ÚDEBUG_SPEED_BUTTON_VALUESc                 C   sr   g }| j s| js| d¡ | js0| js0| d¡ | jdkrN| jdkrN| d¡ |rntdd |¡› ƒ tdƒ d	S )
zValidate required configurationz6DB_PASSWORD not set (set via environment or .env file)z9OPENAI_API_KEY not set (set via environment or .env file)Ú
productionr   z(JWT_SECRET must be changed in productionzConfiguration warnings: z, z<Note: These can be ignored in test mode or local developmentN)r
   r"   Úappendr   r   r   ÚprintÚjoin)ÚclsÚerrors© r:   ú'/var/www/lichun.app/lichun/ws/config.pyÚvalidateL   s    


zConfig.validate)Úreturnc              
   C   s,   d| j › d| j› d| j› d| j› d| j› 
S )zGet database connection URLzmysql://ú:ú@ú/)r   r
   r   r   r   )r8   r:   r:   r;   Úget_database_url^   s    zConfig.get_database_urlN).Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚosÚgetenvr   ÚstrÚ__annotations__Úintr   r   r
   r   r   r   r   r   r   r   r   r   Úsplitr   Úlistr   Úlowerr   Úboolr   r   r    r!   r"   r$   r%   r'   r(   r)   r.   r/   r0   r3   Úclassmethodr<   rA   r:   r:   r:   r;   r      sF   

r   )rE   rF   Úpathlibr   Útypingr   Zdotenvr   Ú__file__ÚparentZenv_pathÚexistsÚImportErrorr6   r   Úconfigr"   r<   r:   r:   r:   r;   Ú<module>   s   N