L i*,UdZddlmZddlZddlZddlZddlZddlmZm Z m Z m Z ddl m Z ddlmZmZmZmZmZddlmZeeZded <ej2rd nd Zded <Gd de ZddZdZddZGddZddZ ddZ!ddZ"ddZ#ddZ$y)z(Manage the user's Streamlit credentials.) annotationsN)Final NamedTupleNoReturncast)uuid4)cli_utilconfigenv_util file_utilutil) get_loggerr_LOGGERz$%userprofile%/.streamlit/config.tomlz~/.streamlit/config.toml_CONFIG_FILE_PATHc"eZdZUded<ded<y) _Activation str | Noneemailboolis_validN)__name__ __module__ __qualname____annotations__c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/streamlit/runtime/credentials.pyrr's Nrrctjjdk(xr2tj xst j jd}d|rdndtjddd tjd d S) Nzutf-8 WT_SESSIONz u👋 zWelcome to Streamlit!Tboldz If you'd like to receive helpful onboarding emails, news, offers, promotions, and the occasional swag, please enter your email address below. Otherwise, leave this field blank. zEmail: bluefg) sysstdoutencodingr IS_WINDOWSosenvirongetr style_for_cli) show_emojis r email_promptr/,s $$/   ?2::>>,#? w"%h&<&<=T[_&`%ab iF34 88rzT Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false. cddl}|d|vryd} |jddj}|jdd}d d d d dd}dt td|dd|d}|j||tj|jd}|jy#t$rtj d YywxYw)z0Send the user's email for metrics, if submitted.rN@r z&https://data.streamlit.io/metrics.json)timeouturlzFailed to fetch metrics URLz*/*zen-US,en;q=0.9zapplication/jsonzlocalhost:8501zlocalhost:8501/)acceptzaccept-languagez content-typeoriginreferersubmittedEmailprovided_emailtrack) anonymous_id messageIdevent author_emailsourcetypeuserId )headersdatar3) requestsr,json Exceptionr exceptionstrrpostdumpsencoderaise_for_status)rrE metrics_url response_jsonrCrDresponses r _send_emailrQEs }5(K 4a% $& $''r2 +*"$ G\!" D}} ZZ  $ $ & H ; 78s3B,,C  C czeZdZUdZdZded<ed dZddZddZ dddZ ddd Z edd Z dd Z ddd Zy) CredentialszCredentials class.NzCredentials | None _singletoncb|j ttdtjS)zReturn the singleton instance.rS)rTrSr)clss r get_currentzCredentials.get_currentws& >> ! MM;#9#9::rc|tj tdd|_t |_|t_y)zInitialize class.Nz;Credentials already initialized. Use .get_current() instead)rSrT RuntimeError activation_get_credential_file_path _conf_fileselfs r__init__zCredentials.__init__s9  ! ! -M /38:!% rc,tj|SN)r repr_r]s r__repr__zCredentials.__repr__szz$rcF|jtjdyddl} t |j 5}|j |jd}dddtt|jd|_y#1swY1xYw#t$r#|r|j| Yytdt$rS|r%|j|j| Yyttjd|j zwxYw) zLoad from toml file.Nz/Credentials already loaded. Not rereading file.rgeneralr)show_instructionsz7Credentials not found. Please run "streamlit activate".zz Unable to load credentials from %s. Run "streamlit reset" and try again. )rZrerrortomlopenr\loadr,rY _verify_emailFileNotFoundErroractivaterGresettextwrapdedent)r^ auto_resolverhfrDs rrjzCredentials.loads  ?? & MMK L  doo& 3!yy|'' 2 3|""+DHHW,=>DO  3 3 !  L0@ AI    L0@ A ?? $  s.B!B/BBBD :8D 4,D c |j||j |j j s tdyy#ttf$r}tt |Yd}~Wd}~wwxYw)zTCheck if streamlit is activated. Used by `streamlit run script.py` NzActivation email not valid.)rjrGrY_exitrIrZr)r^rqes r_check_activatedzCredentials._check_activateds^   IIl # ?? "$//*B*B / 0+C<(  #a&MM sAA/A**A/ctj}d|_ tj|j y#t $rtjdYywxYw)zReset credentials by removing file. This is used by `streamlit activate reset` in case a user wants to start over. Nz Error removing credentials file.) rSrWrZr*remover\OSErrorrrH)rVcs rrnzCredentials.resetsO  # # %  B IIall # B   @ A Bs=AAcddlm}|jytjtj j |jdd|jji}ddl }t|jd5}|jd|i|ddd t|jjy#1swY*xYw#|$rtjd YywxYw) z!Save to toml file and send email.r)RequestExceptionNT)exist_okrwrezError saving email:)requests.exceptionsr|rZr*makedirspathdirnamer\rrhridumprQrrH)r^r|rDrhrrs rsavezCredentials.saves8 ?? "  BGGOODOO4tD../ $//3 ' ,1 IIy$' + , 5 -- .  , ,   5   3 4 5sC"CC C+*C+c  |j|jr.|jjr t dyt dyd}|s!ddl}|j tddd}t||_|jjr|jdtjd d d tjtd }tj||radtjddd dtjdddtjdd d}tj|d }ntjd|s yy#t$rYmwxYw)zCActivate Streamlit. Used by `streamlit activate`. zAlready activatedzUActivation not valid. Please run `streamlit activate reset` then `streamlit activate`FrNr )text prompt_suffixdefault show_defaultz& You can find our privacy policy at z#https://streamlit.io/privacy-policyT) underlinea- Summary: - This open source library collects usage statistics. - We cannot see and do not store information contained inside Streamlit apps, such as text, charts, images, etc. - Telemetry data is stored in servers in the United States. - If you'd like to opt out, add the following to zS, creating that file if necessary: [browser] gatherUsageStats = false z zGet started by typing:r#)r%r"$r$ zstreamlit hellor! zPlease try again.)rjrYrZrrtclickpromptr/rkrr r-r print_to_clirrg)r^rf activatedrrtelemetry_textinstructions_texts rrmzCredentials.activatesz   IIK ??'')*K I %"$!& %#0"6??++IIK*&&.&<&<=bnr&s%tu45=4J4JK\4]3^_ &N)).9(1 2vDIJK #&)*!H,B,BCT[_,`+ab-) !--.?@ $IMM"56Q !   sE33 F?F)returnrSrNonerrI)F)rqrrr)T)rfrrr)rrr__doc__rTr classmethodrWr_rcrjrvrnrrmrrrrSrSrsW%)J");; & "H 1 B B5.?7rrSc|j}t|dkDr5|jddk7r!tj dt ddSt |dS)arVerify the user's email address. The email can either be an empty string (if the user chooses not to enter it), or a string with a single '@' somewhere in it. Parameters ---------- email : str Returns ------- _Activation An _Activation object. Its 'is_valid' property will be True only if the email was validated. rr1z"That doesn't look like an email :(NFT)striplencountrrgr)rs rrkrk'sS" KKME 5zA~%++c*a/ :;4'' ud ##rcXtj|tjdy)zExit program with error.N)rrgr&exit)messages rrtrtCs MM'HHRLrc,tjdS)Nzcredentials.toml)r get_streamlit_file_pathrrrr[r[Is  , ,-? @@rcPtjjtSra)r*rexistsr[rrr_check_credential_file_existsrMs 77>>35 66rctsYtjdstjds/tjdst j t ytjjy)zCheck credentials and potentially activate. Note ---- If there is no credential file and we are in headless mode, we should not check, since credential would be automatically set to an empty string. zserver.headlesszserver.showEmailPromptzbrowser.gatherUsageStatsN) rr get_optionis_manually_setr r_TELEMETRY_HEADLESS_TEXTrSrWrvrrrcheck_credentialsrQs^ ) *+,  !9:%%&@A  ! !": ;..0rr)rrrr)rrIrr)rrIrr)rrr)%r __future__rrFr*r&rotypingrrrruuidr streamlitr r r r r streamlit.loggerrrrrr)rrr/rrQrSrkrtr[rrrrrrs/" 44AA'H%% , #5* 8( * Zr7r7j$8 A71r