Ë
    >Øïiœ.  ã                   óä  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ eedf   Z ej4                  e«      Zd	ee   d
ee   fd„Z G d„ d«      Z	 d(dededee   d
ee   fd„Ze	dedee   d
eeee   ee   f      fd„«       Z 	 	 	 d)dedededede!dee   d
eee!   eef   fd„Z"	 	 d*dedededee   d
eee!   ef   f
d„Z#deeeee   f      de!d
eeee   f   fd„Z$ded
ee   fd„Z%	 	 	 d+ded e!d!e!d
efd"„Z&	 	 	 	 	 	 d,dee   d#eee      d$e!de!d%e!dee   d
e!fd&„Z'	 	 	 	 	 d-dee   d#eee      d$e!d%e!dee   d
eeee   f   fd'„Z(y).é    N)ÚOrderedDict)Úcontextmanager)ÚIOÚDictÚIterableÚIteratorÚMappingÚOptionalÚTupleÚUnioné   )ÚBindingÚparse_stream)Úparse_variableszos.PathLike[str]ÚmappingsÚreturnc              #   óŽ   K  — | D ]<  }|j                   r*t        j                  d|j                  j                  «       |–— Œ> y ­w)Nz;Python-dotenv could not parse statement starting at line %s)ÚerrorÚloggerÚwarningÚoriginalÚline)r   Úmappings     úE/var/www/html/aiagents/fe/lib/python3.12/site-packages/dotenv/main.pyÚwith_warn_for_invalid_linesr      sA   è ø€ Øò ˆØ�=Š=Ü�N‰NØMØ× Ñ ×%Ñ%ôð ‹ñùs   ‚AAc                   óÖ   — e Zd Z	 	 	 	 	 ddee   deee      dedee   dededdfd	„Ze	de
ee      fd
„«       Zdeeee   f   fd„Zde
eeee   f      fd„Zdefd„Zdedee   fd„Zy)ÚDotEnvNÚdotenv_pathÚstreamÚverboseÚencodingÚinterpolateÚoverrider   c                 óf   — || _         || _        d | _        || _        || _        || _        || _        y ©N)r   r   Ú_dictr    r!   r"   r#   )Úselfr   r   r    r!   r"   r#   s          r   Ú__init__zDotEnv.__init__#   s7   € ð /:ˆÔØ)/ˆŒØ9=ˆŒ
Ø$ˆŒØ'/ˆŒØ!,ˆÔØ&ˆ�ó    c              #   ó°  K  — | j                   rXt        j                  j                  | j                   «      r/t	        | j                   | j
                  ¬«      5 }|–— d d d «       y | j                  �| j                  –— y | j                  r$t        j                  d| j                   xs d«       t        j                  d«      –— y # 1 sw Y   y xY w­w)N©r!   z3Python-dotenv could not find configuration file %s.ú.envÚ )r   ÚosÚpathÚisfileÚopenr!   r   r    r   ÚinfoÚioÚStringIO)r'   r   s     r   Ú_get_streamzDotEnv._get_stream4   s    è ø€ à×Ò¤§¡§¡¨t×/?Ñ/?Ô @Ü�d×&Ñ&°·±Ô?ð À6Ø’÷ð à�[‰[Ð$Ø—+‘+Óà�|Š|Ü—‘ØIØ×$Ñ$Ò.¨ôô —+‘+˜b“/Ó!÷ð üs   ‚ACÁC
ÁA,CÃ
CÃCc                 ó  — | j                   r| j                   S | j                  «       }| j                  r1t        t	        || j
                  ¬«      «      | _         | j                   S t        |«      | _         | j                   S )zReturn dotenv as dict)r#   )r&   Úparser"   r   Úresolve_variablesr#   )r'   Ú
raw_valuess     r   ÚdictzDotEnv.dictC   sc   € à�:Š:Ø—:‘:Ðà—Z‘Z“\ˆ
à×ÒÜ$Ô%6°zÈDÏMÉMÔ%ZÓ[ˆDŒJð �z‰zÐô % ZÓ0ˆDŒJà�z‰zÐr)   c              #   óØ   K  — | j                  «       5 }t        t        |«      «      D ])  }|j                  €Œ|j                  |j                  f–— Œ+ 	 d d d «       y # 1 sw Y   y xY w­wr%   )r5   r   r   ÚkeyÚvalue)r'   r   r   s      r   r7   zDotEnv.parseQ   s^   è ø€ Ø×ÑÓð 	5 6Ü6´|ÀFÓ7KÓLò 5�Ø—;‘;Ñ*Ø!Ÿ+™+ w§}¡}Ð4Ó4ñ5÷	5÷ 	5ñ 	5üs!   ‚A*“$A¸AÁ	A*ÁA'Á#A*c                 óÜ   — | j                  «       sy| j                  «       j                  «       D ]:  \  }}|t        j                  v r| j                  sŒ%|€Œ(|t        j                  |<   Œ< y)zI
        Load the current dotenv as system environment variable.
        FT)r:   Úitemsr.   Úenvironr#   )r'   ÚkÚvs      r   Úset_as_environment_variablesz#DotEnv.set_as_environment_variablesW   s]   € ð �y‰yŒ{Øà—I‘I“K×%Ñ%Ó'ò 	"‰DˆAˆqØ”B—J‘J‰ t§}¢}ØØ‰}Ø !”—
‘
˜1’ð		"ð r)   r<   c                 ó�   — | j                  «       }||v r||   S | j                  r!t        j                  d|| j                  «       y)z	
        zKey %s not found in %s.N)r:   r    r   r   r   )r'   r<   Údatas      r   Úgetz
DotEnv.getf   sA   € ð �y‰y‹{ˆà�$‰;Ø˜‘9Ðà�<Š<Ü�N‰NÐ4°c¸4×;KÑ;KÔLàr)   )NFNTT)Ú__name__Ú
__module__Ú__qualname__r
   ÚStrPathr   ÚstrÚboolr(   r   r   r5   r   r:   r   r7   rC   rF   © r)   r   r   r   "   sî   „ ð %)ØØ"&Ø Øñ'à˜gÑ&ð'ð ˜˜C™Ñ!ð'ð ð	'ð
 ˜3‘-ð'ð ð'ð ð'ð 
ó'ð" ð"˜X b¨¡gÑ.ò "ó ð"ð�d˜3 ¨¡Ð-Ñ.ó ð5�x  c¨8°C©=Ð&8Ñ 9Ñ:ó 5ð¨dó ð�sð ˜x¨™}ô r)   r   r   Ú
key_to_getr!   c                 ó<   — t        | d|¬«      j                  |«      S )z
    Get the value of a given key from the given .env.

    Returns `None` if the key isn't found or doesn't have a value.
    T)r    r!   )r   rF   )r   rN   r!   s      r   Úget_keyrP   t   s   € ô �+ t°hÔ?×CÑCÀJÓOÐOr)   r/   c              #   óø  K  — t         j                  j                  | «      s(t        | d|¬«      5 }|j	                  d«       d d d «       t        j                  d|d¬«      5 }	 t        | |¬«      5 }||f–— d d d «       d d d «       t        j                  j                  | «       y # 1 sw Y   ŒhxY w# 1 sw Y   Œ>xY w# t        $ r! t        j                  |j                  «       ‚ w xY w# 1 sw Y   ŒoxY w­w)NÚw)Úmoder!   r-   F)rS   r!   Údeleter+   )r.   r/   r0   r1   ÚwriteÚtempfileÚNamedTemporaryFileÚBaseExceptionÚunlinkÚnameÚshutilÚmove)r/   r!   ÚsourceÚdests       r   Úrewriter_   �   sÕ   è ø€ ô
 �7‰7�>‰>˜$ÔÜ�$˜S¨8Ô4ð 	¸Ø�L‰L˜Ô÷	ä	×	$Ñ	$¨#¸ÈÔ	Oð ÐSWð	Ü�d XÔ.ð %°&Ø˜t�nÒ$÷%÷ô ‡K�K�—	‘	˜4Õ ÷	ð 	ú÷%ð %ûäò 	Ü�I‰I�d—i‘iÔ Øð	ú÷	ð üs^   ‚.C:°B)Á C:Á"C.Á$CÁ1B5Á8CÂ )C:Â)B2Â.C:Â5B>	Â:CÃ*C+Ã+C.Ã.C7Ã3C:Ú
key_to_setÚvalue_to_setÚ
quote_modeÚexportc                 óŽ  — |dvrt        d|› �«      ‚|dk(  xs |dk(  xr |j                  «        }|r"dj                  |j                  dd«      «      }n|}|r
d|› d	|› d
�}n|› d	|› d
�}t	        | |¬«      5 \  }	}
d}d}t        t        |	«      «      D ]p  }|j                  |k(  r|
j                  |«       d}Œ&|
j                  |j                  j                  «       |j                  j                  j                  d
«       }Œr |s$|r|
j                  d
«       |
j                  |«       ddd«       d||fS # 1 sw Y   ŒxY w)z³
    Adds or Updates a key/value to the given .env

    If the .env path given doesn't exist, fails instead of risking creating
    an orphan .env somewhere in the filesystem
    )ÚalwaysÚautoÚneverzUnknown quote_mode: re   rf   z'{}'ú'z\'zexport ú=ú
r+   FTN)Ú
ValueErrorÚisalnumÚformatÚreplacer_   r   r   r<   rU   r   ÚstringÚendswith)r   r`   ra   rb   rc   r!   ÚquoteÚ	value_outÚline_outr]   r^   ÚreplacedÚmissing_newliner   s                 r   Úset_keyrv   “   si  € ð Ð4Ñ4ÜÐ/°
¨|Ð<Ó=Ð=ð 	�hÑò 	AØ˜&Ñ Ò?¨×)=Ñ)=Ó)?Ð%?ð 
ñ
 Ø—M‘M ,×"6Ñ"6°s¸EÓ"BÓC‰	à ˆ	ÙØ˜Z˜L¨¨)¨°BÐ7‰à �\  9 +¨RÐ0ˆä	� xÔ	0ð !±N°V¸TØˆØˆÜ2´<ÀÓ3GÓHò 	MˆGØ�{‰{˜jÒ(Ø—
‘
˜8Ô$Ø‘à—
‘
˜7×+Ñ+×2Ñ2Ô3Ø&-×&6Ñ&6×&=Ñ&=×&FÑ&FÀtÓ&LÐ"L‘ð	Mñ ÙØ—
‘
˜4Ô Ø�J‰J�xÔ ÷!ð �˜\Ð)Ð)÷!ð !ús   Á9B5D;Ä;EÚkey_to_unsetc                 ó¦  — t         j                  j                  | «      st        j	                  d| «       d|fS d}t        | |¬«      5 \  }}t        t        |«      «      D ]9  }|j                  |k(  rd}Œ|j                  |j                  j                  «       Œ; 	 ddd«       |st        j	                  d|| «       d|fS ||fS # 1 sw Y   Œ*xY w)z¢
    Removes a given key from the given `.env` file.

    If the .env path given doesn't exist, fails.
    If the given key doesn't exist in the .env, fails.
    z(Can't delete from %s - it doesn't exist.NFr+   Tz/Key %s not removed from %s - key doesn't exist.)r.   r/   Úexistsr   r   r_   r   r   r<   rU   r   ro   )r   rw   rb   r!   Úremovedr]   r^   r   s           r   Ú	unset_keyr{   Ä   sÇ   € ô �7‰7�>‰>˜+Ô&Ü�‰ÐAÀ;ÔOØ�\Ð!Ð!à€GÜ	� xÔ	0ð 4±N°V¸TÜ2´<ÀÓ3GÓHò 	4ˆGØ�{‰{˜lÒ*Ø‘à—
‘
˜7×+Ñ+×2Ñ2Õ3ñ		4÷4ñ Ü�‰ÐHÈ,ÐXcÔdØ�\Ð!Ð!à�LÐ Ð ÷4ð 4ús   Á	ACÃCÚvaluesr#   c                 óH  ‡— i }| D ]™  \  }}|€d }nŠt        |«      }i Š|r1‰j                  t        j                  «       ‰j                  |«       n0‰j                  |«       ‰j                  t        j                  «       dj	                  ˆfd„|D «       «      }|||<   Œ› |S )Nr-   c              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr%   )Úresolve)Ú.0ÚatomÚenvs     €r   ú	<genexpr>z$resolve_variables.<locals>.<genexpr>õ   s   øè ø€ ÒA°4˜TŸ\™\¨#×.ÑAùs   ƒ)r   Úupdater.   r@   Újoin)r|   r#   Ú
new_valuesrZ   r=   ÚresultÚatomsr‚   s          @r   r8   r8   ã   s—   ø€ ð ,.€Jàò "‰ˆˆuØˆ=Ø‰Fä# EÓ*ˆEØ,.ˆCÙØ—
‘
œ2Ÿ:™:Ô&Ø—
‘
˜:Õ&à—
‘
˜:Ô&Ø—
‘
œ2Ÿ:™:Ô&Ø—W‘WÓA¸5ÔAÓAˆFà!ˆ
�4Òð"ð  Ðr)   c              #   óð  K  — t         j                  j                  | «      st        d«      ‚t         j                  j	                  | «      rt         j                  j                  | «      } d}t         j                  j                  | «      }||k7  rd|–— t         j                  j                  t         j                  j                  |t         j                  j                  «      «      }||}}||k7  rŒcyy­w)zL
    Yield directories starting from the given directory up to the root
    zStarting path not foundN)	r.   r/   ry   ÚIOErrorr0   ÚdirnameÚabspathr…   Úpardir)r/   Úlast_dirÚcurrent_dirÚ
parent_dirs       r   Ú_walk_to_rootr‘   ü   s§   è ø€ ô �7‰7�>‰>˜$ÔÜÐ/Ó0Ð0ä	‡w�w‡~�~�dÔÜ�w‰w�‰˜tÓ$ˆà€HÜ—'‘'—/‘/ $Ó'€KØ
�kÒ
!ØÒÜ—W‘W—_‘_¤R§W¡W§\¡\°+¼r¿w¹w¿~¹~Ó%NÓOˆ
Ø +¨Z�+ˆð �kÕ
!ùs   ‚C1C6Ã4C6ÚfilenameÚraise_error_if_not_foundÚusecwdc                 óš  — d„ }|s |«       st        t        dd«      rt        j                  «       }n¹t        j                  «       }t
        }|j                  j                  |k(  r4|j                  €J ‚|j                  }|j                  j                  |k(  rŒ4|j                  j                  }t        j                  j                  t        j                  j                  |«      «      }t        |«      D ]E  }t        j                  j                  || «      }	t        j                  j                  |	«      sŒC|	c S  |rt        d«      ‚y)z‡
    Search in increasingly higher folders for the given file

    Returns path to the file if found, or an empty string otherwise
    c                  ó<   — t        ddddg¬«      } t        | d«       S )z> Decide whether this is running in a REPL or IPython notebook Ú__main__NÚ__file__)Úfromlist)Ú
__import__Úhasattr)Úmains    r   Ú_is_interactivez$find_dotenv.<locals>._is_interactive  s$   € ä˜* d¨D¸J¸<ÔHˆÜ˜4 Ó,Ð,Ð,r)   ÚfrozenFzFile not foundr-   )ÚgetattrÚsysr.   ÚgetcwdÚ	_getframer˜   Úf_codeÚco_filenameÚf_backr/   r‹   rŒ   r‘   r…   r0   rŠ   )
r’   r“   r”   r�   r/   ÚframeÚcurrent_fileÚframe_filenamer‹   Ú
check_paths
             r   Úfind_dotenvrª     sú   € ò-ñ
 ‘Ô"¤g¬c°8¸UÔ&Cä�y‰y‹{‰ô —‘“ˆÜˆà�l‰l×&Ñ&¨,Ò6Ø—<‘<Ð+Ð+Ð+Ø—L‘LˆEð �l‰l×&Ñ&¨,Ó6ð Ÿ™×1Ñ1ˆÜ�w‰w�‰œrŸw™wŸ™¨~Ó>Ó?ˆä  Ó&ò ˆÜ—W‘W—\‘\ '¨8Ó4ˆ
Ü�7‰7�>‰>˜*Õ%ØÒðñ
  ÜÐ&Ó'Ð'àr)   r   r    r"   c                 ó`   — | €|€
t        «       } t        | |||||¬«      }|j                  «       S )aÑ  Parse a .env file and then load all the variables found as environment variables.

    Parameters:
        dotenv_path: Absolute or relative path to .env file.
        stream: Text stream (such as `io.StringIO`) with .env content, used if
            `dotenv_path` is `None`.
        verbose: Whether to output a warning the .env file is missing.
        override: Whether to override the system environment variables with the variables
            from the `.env` file.
        encoding: Encoding to be used to read the file.
    Returns:
        Bool: True if at least one environment variable is set else False

    If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the
    .env file.
    ©r   r   r    r"   r#   r!   )rª   r   rC   )r   r   r    r#   r"   r!   Údotenvs          r   Úload_dotenvr®   7  sB   € ð0 Ð˜v˜~Ü!“mˆäØØØØØØô€Fð ×.Ñ.Ó0Ð0r)   c                 ó\   — | €|€
t        «       } t        | |||d|¬«      j                  «       S )a‘  
    Parse a .env file and return its content as a dict.

    The returned dict will have `None` values for keys without values in the .env file.
    For example, `foo=bar` results in `{"foo": "bar"}` whereas `foo` alone results in
    `{"foo": None}`

    Parameters:
        dotenv_path: Absolute or relative path to the .env file.
        stream: `StringIO` object with .env content, used if `dotenv_path` is `None`.
        verbose: Whether to output a warning if the .env file is missing.
        encoding: Encoding to be used to read the file.

    If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the
    .env file.
    Tr¬   )rª   r   r:   )r   r   r    r"   r!   s        r   Údotenv_valuesr°   ]  s=   € ð. Ð˜v˜~Ü!“mˆäØØØØØØô÷ �dƒfðr)   )úutf-8)re   Fr±   )re   r±   )r,   FF)NNFFTr±   )NNFTr±   ))r3   Úloggingr.   r[   r    rV   Úcollectionsr   Ú
contextlibr   Útypingr   r   r   r   r	   r
   r   r   Úparserr   r   Ú	variablesr   rK   rJ   Ú	getLoggerrG   r   r   r   rP   r_   rL   rv   r{   r8   r‘   rª   r®   r°   rM   r)   r   ú<module>r¹      s"  ðÛ 	Û Û 	Û Û 
Û Ý #Ý %÷÷ ó ÷ *Ý &ð �Ð'Ð'Ñ
(€à	ˆ×	Ñ	˜8Ó	$€ð¨(°7Ñ*;ð ÀÈÑ@Qó ÷Oñ Oðj &ñ
PØð
Pàð
Pð �s‰mð
Pð ˆc�]ó	
Pð ð!Ø
ð!à�s‰mð!ð ˆe�B�s‘G˜R ™WÐ$Ñ%Ñ&ò!ó ð!ð* ØØ%ñ.*Øð.*àð.*ð ð.*ð ð	.*ð
 ð.*ð �s‰mð.*ð ˆ8�D‰>˜3 Ð#Ñ$ó.*ðh Ø%ñ	!Øð!àð!ð ð!ð �s‰mð	!ð
 ˆ8�D‰>˜3ÐÑó!ð>Ø�U˜3 ¨¡Ð-Ñ.Ñ/ðàðð ˆS�(˜3‘-ÐÑ óð28˜ð 8 ¨¡ó 8ð& Ø%*Øñ&Øð&à"ð&ð ð&ð 	ó	&ðT &*Ø $ØØØØ%ñ#1Ø˜'Ñ"ð#1à�R˜‘WÑð#1ð ð#1ð ð	#1ð
 ð#1ð �s‰mð#1ð 
ó#1ðN &*Ø $ØØØ%ñ!Ø˜'Ñ"ð!à�R˜‘WÑð!ð ð!ð ð	!ð
 �s‰mð!ð 
ˆ#ˆx˜‰}Ð
Ñô!r)   