Ë
    jqj§  ã                   óp   — d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZ  G d„ de
«      Zedefd„«       Zy	)
é    )Ú	lru_cache)Ú
quote_plus)ÚFieldÚValidationInfoÚcomputed_fieldÚfield_validator)ÚBaseSettingsÚSettingsConfigDictc                   ór  — e Zd ZU dZ edd¬«      ZdZeed<   dZ	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<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   d Zeed!<   dZeed"<   dZeed#<   d$Zeed%<   d&Zeed'<    edd(¬)«      ed*ed+efd,„«       «       Z edddd(¬)«      ed*ed-e d+efd.„«       «       Z!e"e#d+efd/„«       «       Z$e"e#d+efd0„«       «       Z%e"e#d+efd1„«       «       Z&e"e#d+efd2„«       «       Z'e"e#d+efd3„«       «       Z(y4)5ÚSettingszRApplication settings loaded from environment variables (and optional `.env` file).z.envÚignore)Úenv_fileÚextrazdev-only-change-in-productionÚ
secret_keyÚHS256Ú	algorithmé<   Úaccess_token_expire_minuteszapi/v1zILeading path for all versioned API routes (slashes allowed, e.g. api/v1).)ÚdefaultÚdescriptionÚ
api_prefixÚadminzOSingle URL segment for the admin panel (no slashes), e.g. admin or nurse-admin.Úadmin_url_nameÚuserz3Single URL segment for the user panel (no slashes).Úuser_url_nameÚhealthz1Single URL segment for the health check endpoint.Úhealth_pathÚ Údb_hosti8  Údb_portÚdb_nameÚdb_userÚdb_passwordÚ	smtp_hostiK  Ú	smtp_portÚ	smtp_userÚsmtp_passwordznoreply@example.comÚ	smtp_fromTÚsmtp_tlsÚafter)ÚmodeÚvÚreturnc                 ó^   — |j                  «       j                  d«      }|st        d«      ‚|S )NÚ/zapi_prefix must not be empty)ÚstripÚ
ValueError)Úclsr,   s     ú)/var/www/html/kelly-backend/app/config.pyÚ_strip_api_prefixzSettings._strip_api_prefix0   s,   € ð �G‰G‹I�O‰O˜CÓ ˆÙÜÐ;Ó<Ð<Øˆó    Úinfoc                 ó€   — |j                  «       j                  d«      }|rd|v rt        |j                  › d�«      ‚|S )Nr/   zH must be a single path segment without slashes (e.g. nurse-admin, user).)r0   r1   Ú
field_name)r2   r,   r6   s      r3   Ú_single_segmentzSettings._single_segment8   sI   € ð �G‰G‹I�O‰O˜CÓ ˆÙ�C˜1‘HÜØ—?‘?Ð#ð $,ð ,óð ð ˆr5   c           
      óJ  — | j                   r| j                   j                  «       syt        | j                  «      }t        | j                  «      }| j                   j                  «       }| j
                  j                  «       xs d}d|› d|› d|› d| j                  › d|› �
S )Nzsqlite:///./app.dbÚpostgreszpostgresql+psycopg://Ú:Ú@r/   )r   r0   r   r"   r#   r!   r    )Úselfr   ÚpasswordÚhostÚnames        r3   Údatabase_urlzSettings.database_urlC   s�   € ð —’ §¡×!3Ñ!3Ô!5Ø'Ü˜$Ÿ,™,Ó'ˆÜ˜d×.Ñ.Ó/ˆØ�|‰|×!Ñ!Ó#ˆØ�|‰|×!Ñ!Ó#Ò1 zˆà# D 6¨¨8¨*°A°d°V¸1¸T¿\¹\¸NÈ!ÈDÈ6ÐRð	
r5   c                 ó<   — | j                   rd| j                   › �S dS )z/Path prefix for versioned APIs, e.g. `/api/v1`.r/   )r   ©r>   s    r3   Úhttp_api_prefixzSettings.http_api_prefixP   s!   € ð )-¯ª��4—?‘?Ð#Ð$Ð@¸SÐ@r5   c                 ó    — d| j                   › �S )z5Admin router prefix, e.g. `/admin` or `/nurse-admin`.r/   )r   rD   s    r3   Úadmin_router_prefixzSettings.admin_router_prefixV   s   € ð �4×&Ñ&Ð'Ð(Ð(r5   c                 ó    — d| j                   › �S )Nr/   )r   rD   s    r3   Úuser_router_prefixzSettings.user_router_prefix\   s   € ð �4×%Ñ%Ð&Ð'Ð'r5   c                 ó    — d| j                   › �S )z"Health route path, e.g. `/health`.r/   )r   rD   s    r3   Úhealth_url_pathzSettings.health_url_patha   s   € ð �4×#Ñ#Ð$Ð%Ð%r5   N))Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   Úmodel_configr   ÚstrÚ__annotations__r   r   Úintr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Úboolr   Úclassmethodr4   r   r9   r   ÚpropertyrB   rE   rG   rI   rK   © r5   r3   r   r      s#  … Ù\á%¨v¸XÔF€Là5€J�Ó5Ø€IˆsÓØ')Ð Ó)ñ ØØ_ô€J�ó ñ  ØØeô€N�Có ñ ØØIô€M�3ó ñ ØØGô€K�ó ð
 €GˆSÓØ€GˆSÓØ€GˆSÓØ€GˆSÓØ€K�Óà€IˆsÓØ€IˆsÓØ€IˆsÓØ€M�3ÓØ*€IˆsÓ*Ø€HˆdÓá�\¨Ô0Øð #ð ¨#ò ó ó 1ðñ Ð% ¸ÈGÔTØð ð ¨>ð ¸cò ó ó Uðð Øð	
˜cò 	
ó ó ð	
ð ØðA ò Aó ó ðAð Øð) Sò )ó ó ð)ð Øð( Cò (ó ó ð(ð Øð& ò &ó ó ñ&r5   r   r-   c                  ó   — t        «       S )N)r   rW   r5   r3   Úget_settingsrY   h   s
   € ä‹:Ðr5   N)Ú	functoolsr   Úurllib.parser   Úpydanticr   r   r   r   Úpydantic_settingsr	   r
   r   rY   rW   r5   r3   Ú<module>r^      s>   ðÝ Ý #ç KÓ Kß >ô]&ˆ|ô ]&ð@ ð�hò ó ñr5   