fL i7 ddlZddlZddlmZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZddlmZddlmZddlmZddlmZmZmZmZdd lmZm Z m!Z!m"Z"e#e$Z%ed ge e#effZ&eee ee ed ffZ'Gd d e(Z)Gdd eZ*GddZ+GddZ,GddZ-ddddede#de.de e#e e#ffdZ/dede#de.de efdZ0y)N)Path) AbstractSetAnyCallableClassVarDictListMappingOptionalTupleTypeUnion) BaseConfigExtra) ModelField) BaseModel) JsonWrapper)StrPathdisplay_as_type get_originis_union) deep_updatelenient_issubclass path_type sequence_like BaseSettings.c eZdZy) SettingsErrorN)__name__ __module__ __qualname__^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pydantic/v1/env_settings.pyrrsr#rceZdZUdZedddfdeedeedeedeede ddf fd Z dd e ee fdeedeedeedeede ee ff d Z Gd d e Zeeeed<xZS)rz Base class for settings, allowing values to be overridden by environment variables. This is useful in production for secrets you do not wish to save in code, it plays nicely with docker(-compose), Heroku and any 12 factor app design. N _env_file_env_file_encoding_env_nested_delimiter _secrets_dirvaluesreturnc Lt|di|j|||||y)N)r&r'r(r)r")super__init__ _build_values)__pydantic_self__r&r'r(r)r* __class__s r$r.zBaseSettings.__init__s9  --##5&;) . r# init_kwargsc t|}t|tk7r|n|jj||n|jj ||n|jj t|jj}t|xs|jj}|jj|||} | r%tt| D cgc] } | | c} SiScc} w)Nr2env_fileenv_file_encodingenv_nested_delimiterenv_prefix_len secrets_dir) init_settings env_settingsfile_secret_settings)InitSettingsSourceEnvSettingsSourceenv_file_sentinel __config__r6r7r8len env_prefixSecretsSettingsSourcer;customise_sourcesrreversed) selfr2r&r'r(r)r<r=r>sourcessources r$r/zBaseSettings._build_values2s+{C (#,0A#AitG_G_&8&D"$//JkJk*?)J%PTP_P_PtPtt99:   5AlQUQ`Q`QlQlm//33'lYm4  W)M6&,)M NO OI *NsC3 c eZdZUdZeed<dZeeed<dZ eeed<dZ eeed<dZ ee ed<dZ eed <ej Zeed <dZeed <d Zeed <ededdfdZededededeedffdZedededefdZy)BaseSettings.ConfigrDNr6r7r8r;T validate_allextraarbitrary_types_allowedFcase_sensitivefieldr+ch|j|j}|jdxs%|jjjd}|A|j rt jdt|j|jzh}n_t|tr|h}nKt|ttfr|}n2t|r t|}nt!d|dt#|d|j$s|j'd|D}||jjd<y)Nenvzaliases are no longer used by BaseSettings to define which environment variables to read. Instead use the "env" field setting. See https://pydantic-docs.helpmanual.io/usage/settings/#environment-variable-nameszinvalid field env: z (z ); should be string, list or setc3<K|]}|jywN)lower).0ns r$ z4BaseSettings.Config.prepare_field..vs/Ma /M env_names)get_field_infonameget field_inforO has_aliaswarningswarn FutureWarningrD isinstancestrset frozensetrlist TypeErrorrrQr1)clsrRfield_info_from_configrTr\s r$ prepare_fieldz!BaseSettings.Config.prepare_field]s &)%7%7 %C "(,,U3Xu7G7G7M7M7Q7QRW7XC{??MMm&  !^^ejj89 C% E C#y!12 s# I "5cWBs?S>TTt uvv%%%///M9/MM 2;E   " "; /r#r<r=r>.c |||fSrVr")rkr<r=r>s r$rFz%BaseSettings.Config.customise_sourcesys!,0DD Dr# field_nameraw_valc$|j|SrV) json_loads)rkrorps r$ parse_env_varz!BaseSettings.Config.parse_env_vars>>'* *r#)rr r!rDrf__annotations__r6r DotenvTyper7r8r;rrNboolrforbidrOrPrQ classmethodrrmSettingsSourceCallabler rFrrsr"r#r$ConfigrLRs  C)-(:&-+/8C=/.2hsm2)- Xg&-! d!||u#(,,$$  +>+M+MN 2+22H((//1 )E%)G!,,22;? ",,x0&  /3.C.CE.J +J+?$($9$9%$JM$)6%++^"*"5"5"C"CEJJPW"X "'40)4Wd>S>STY[c>d)e%++)0%++$!(%++9 )<IE0&^2"/2I(ST0U"V\]] 3^s F,&&F22 G;GGrQc |j}|iSt|ttjfr|g}i}|D]S}t |j }|js-|jt||j|U|S)NencodingrQ) r6rerfrPathLiker expanduseris_fileupdate read_env_filer7)rHrQ env_filesrr6env_paths r$rz!EnvSettingsSource._read_env_filessMM  I i#r{{!3 4" I ! HH~002H!""!(T5K5K\jk r#rRct|jtry|jrd}d|fSt t |j r.|jr"td|jDrd}d|fSy)za Find out if a field is complex, and if so whether JSON errors should be ignored )FFFc3<K|]}|jywrV)r)rXfs r$rZz5EnvSettingsSource.field_is_complex..sKu_`ALLNKur[T) r annotationrrrrtype_ sub_fieldsany)rHrRrs r$rz"EnvSettingsSource.field_is_complexs e.. <    "'  ((( j- .53C3CKudidtdtKuHu"& ((( r#rct|jjdDcgc]}||j}}i}|jD]h\}t fd|Ds|j d}|j |j^}} } |} | D]} | j| i} || | <j|Scc}w)z Process env_vars and extract the values of keys containing env_nested_delimiter into nested dictionaries. This is applied to a single field, hence filtering by env_var prefix. r\c3@K|]}j|ywrV) startswith)rXprefixrs r$rZz5EnvSettingsSource.explode_env_vars..sJvx**62JsN)r`rOr8rrr9split setdefault) rHrRrrprefixesresultrenv_name_without_prefix_keyslast_keyenv_varkeys ` r$rz"EnvSettingsSource.explode_env_varss NSM]M]McMcdoMpqxj!:!: ;<qq!#!)!1 ( HgJJJ&.t/B/B/D&E #!8!>!>t?X?X!Y AhG 6!,,S"5 6 'GH  ( rsB5cVd|jd|jd|jdS)NzEnvSettingsSource(env_file=z, env_file_encoding=z, env_nested_delimiter=r)r6r7r8rs r$rzEnvSettingsSource.__repr__ s;)$--)::NtOeOeNhi$$($=$=#@ C r#)Nr)rr r!rr rurfintr.rrrrrvrrr rr rrr"r#r$r@r@s[I /3 2:& 2$C= 2'sm 2  2--$sCx.-^dtC#Q>Q>`>`a<<>#'>>#3#9#9#;L'')^+3+>+>+L+LUZZYe+fL,8GEKK(MM9$~iX\oM^^gh#$!  * *^"/2I(ST0U"V\]]^s"&F F#FF#c"d|jdS)Nz"SecretsSettingsSource(secrets_dir=rr:rs r$rzSecretsSettingsSource.__repr__Bs3D4D4D3GqIIr#N) rr r!rr rr.rrrfrrrr"r#r$rErEsB I:HW$5:''$sCx.'RJ#Jr#rEFr file_pathrrQr+c ddlm}|||xsd}|s2|jDcic]\}}|j |c}}S|S#t$r}td|d}~wwxYwcc}}w)Nr) dotenv_valueszBpython-dotenv is not installed, run `pip install pydantic[dotenv]`utf8)r)dotenvr ImportErrorrrW)rrrQrr file_varsrrs r$rrFsug(+8 HL^X^*_I )2):;A 1 ;; g^_effg rs jjjj0)&)MMWWM!>"2DcN"BC 7DM5#+>> ?  J p'9p'f G Gy y x0J0Jh,0  %( AE  #x}   T c 4 HUYN r#