L iK(UddlmZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl ZddlmZddlmZmZmZmZddlmZddlmZdd lmZdd lmZmZmZdd l m!Z!dd l"m#Z#dd l$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7m8Z8m9Z9ddl:m;Z;mZ>ddl?m@Z@ddlAmBZBe rddlCZCddlDmEZEddlFmGZGeeHZIdeJd<dMdZKdNdZLdZMdeJd <d!ZNdeJd"<d#ZOdeJd$<d%ZPdeJd&<d'ZQdeJd(<d)ZRdeJd*<d+ZSdeJd,<d-ZTdeJd.<d/ZUdeJd0<d1ZVdeJd2<d3ZWdeJd4<d5eWd6ZXdeJd7<d8ZYdeJd9<d:ZZdeJd;<dZ\deJd?<d@Z]deJdA<GdBdCe^Z_dOdDZ`dOdEZadPdFZbdQdGZcdRdHZddRdIZeGdJdKZfdSdLZgy)T) annotationsN)Path) TYPE_CHECKINGAnyFinal) HTTPServer)cli_utilconfig file_utilutil)is_authlib_installed) ConfigOption) get_logger)Runtime RuntimeConfig RuntimeState)MemoryMediaFileStorage)MemorySessionStorage)MemoryUploadedFileManager)get_max_message_size_bytes)$create_default_cache_storage_manager)AppStaticFileHandler)BidiComponentRequestHandler)BrowserWebSocketHandler)ComponentRequestHandler)MediaFileHandler)AddSlashHandler HealthHandlerHostConfigHandlerRemoveSlashHandlerStaticFileHandler)get_cookie_secretis_tornado_version_less_thanis_xsrf_enabledmake_url_path_regex)StatsRequestHandler)UploadFileRequestHandler) Awaitable) SSLContextr_LOGGERctjd}|6t|}tds|dkrtj d||||fStdrdnd}|dfS)zGet the websocket ping interval and timeout from config or defaults. Returns ------- tuple: (ping_interval, ping_timeout) zserver.websocketPingIntervalz6.5.0aYou have set server.websocketPingInterval to %s, but Tornado >= 6.5 requires websocket_ping_interval >= websocket_ping_timeout. To comply, we are setting both the ping interval and ping timeout to %s. Depending on the specific deployment setup, this may cause connection issues.)r get_optionintr#r*warning)configured_intervalintervaldefault_intervals a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/streamlit/web/server/server.py(_get_websocket_ping_interval_and_timeoutr5Gsz!++,JK&*+,G4B OO`  !!9Aqr R c*t\}}d||ddS)zqGet Tornado settings for the server. This is a function to allow for testing and dynamic configuration. T_streamlit_xsrf)compress_responsewebsocket_ping_intervalwebsocket_ping_timeoutxsrf_cookie_name)r5) ping_interval ping_timeouts r4get_tornado_settingsr?gs. #K"LM<" $1#/-  r6dMAX_PORT_SEARCH_RETRIESzunix://UNIX_SOCKET_PREFIXz/mediaMEDIA_ENDPOINTz /componentCOMPONENT_ENDPOINTz/_stcore/bidi-componentsBIDI_COMPONENT_ENDPOINTz /app/staticSTATIC_SERVING_ENDPOINTz/_stcore/upload_fileUPLOAD_FILE_ENDPOINTz_stcore/streamSTREAM_ENDPOINTz(?:st-metrics|_stcore/metrics)METRIC_ENDPOINTz_stcore/messageMESSAGE_ENDPOINTz_stcore/healthNEW_HEALTH_ENDPOINTz (?:healthz|)HEALTH_ENDPOINTz_stcore/host-configHOST_CONFIG_ENDPOINTz3(?:script-health-check|_stcore/script-health-check)SCRIPT_HEALTH_CHECK_ENDPOINTz/oauth2callbackOAUTH2_CALLBACK_ENDPOINTz /auth/loginAUTH_LOGIN_ENDPOINTz /auth/logoutAUTH_LOGOUT_ENDPOINTc eZdZy)RetriesExceededErrorN)__name__ __module__ __qualname__r6r4rTrTsr6rTc,tjdS)N server.port)r is_manually_setrXr6r4server_port_is_manually_setr\s  ! !- 00r6cbtjd}|duxr|jtS)Nserver.address)r r. startswithrB)addresss r4server_address_is_unix_socketras/ 01G $  I7#5#56H#IIr6ctjd}tjd}t||}t|tjddzdz|}t r t |yt |y)zMakes the server start listening at the configured port. In case the port is already taken it tries listening to the next available port. It will error after MAX_PORT_SEARCH_RETRIES attempts. zserver.sslCertFilezserver.sslKeyFilezserver.maxUploadSizei)max_buffer_size ssl_optionsN)r r._get_ssl_optionsrrastart_listening_unix_socketstart_listening_tcp_socket)app cert_filekey_filerd http_servers r4start_listeningrlss!!"67I  !45H"9h7K ))*@ADH4OK %&#K0";/r6ct|t|k7r*tjdtjd|r|rt |j s+tjd|tjdt |j s+tjd|tjdddl}|j|jj} |j|||Sy#|j$r0tjd||tjdY|SwxYw)NzzOptions 'server.sslCertFile' and 'server.sslKeyFile' must be set together. Set missing options or delete existing options.r-zCert file '%s' does not exist.zKey file '%s' does not exist.rzWFailed to load SSL certificate. Make sure cert file '%s' and key file '%s' are correct.)boolr*errorsysexitrexistssslcreate_default_contextPurpose CLIENT_AUTHload_cert_chainSSLError exception)rirjrsssl_ctxs r4reres  I$x.(  O   XI%%' MM:I F HHQKH~$$& MM98 D HHQK,,S[[-D-DE   # #Ix 8 ||    @   HHQK s8D ;E  E cntjd}tjj |t t d}ddl}t|jdr-|jj|}|j|ytjdtjdy)Nr^rbind_unix_socketz@Unix socket support is not available in this version of Tornado.r-)r r.ospath expanduserlenrBtornado.netutilhasattrnetutilr| add_socketr*rorprq)rkr` file_nametornado unix_sockets r4rfrfs 01G""73/A+B+D#EFIw 23oo66yA {+ N   r6cPd}d}|tkr>tjd}tjd} |j|| |tk\rt!d|dtd y#t$r}|j t j k(r|tr,tjd|tjdnGtjd||dz }tjd|tj|dz }nYd}~nd}~wwxYw|tkr) Nrr^rZzPort %s is already in user-z3Port %s already in use, trying to use the next one.z$Cannot start Streamlit server. Port zG is already in use, and Streamlit was unable to find a free port after z attempts.)rAr r.listenOSErrorerrno EADDRINUSEr\r*rorprqdebug set_optionrSTREAMLIT_DEFINITIONrT)rk call_countportr`es r4rgrgsJ D . .##$45  /    tW - (,,"24&9>>U=VV` b  -% ww%***.0MM"=tDHHQKMMMtAID%%%t\-N-N!OJ!  . .sA,, D5BDDceZdZd dZed dZddZeddZd dZ eddZ ddZ eddZ edd Z d d Zy )Serverct|j||_d|_t t }t j|tt}tt|d||t|ttjd|_|j j"j%|y)z+Create the server. It won't be started yet.Nzserver.disconnectedSessionTTL) ttl_seconds) script_path command_linemedia_file_storageuploaded_file_managercache_storage_manageris_hellosession_storage)_set_tornado_log_levelsinitialize_mimetypes_main_script_path_bootstrap_taskrrCrinitialize_storagerrGrrrrr r._runtime stats_mgrregister_provider)selfmain_script_pathrruploaded_file_mgrs r4__init__zServer.__init__s! !!#!1 ;?4NC++,>?56JK ,!#5&7&J&L! 4 & 1 12Q R!     112DEr6ctjddtjddtjddtjddtjdd y ) zJEnsures that common mime-types are robust against system misconfiguration.z text/htmlz.htmlzapplication/javascriptz.jsz.mjsztext/cssz.cssz image/webpz.webpN) mimetypesadd_type)clss r4rzServer.initialize_mimetypes@sV ;03U;3V<:v.<1r6c,tj|SN)r repr_rs r4__repr__zServer.__repr__Iszz$r6c|jSr)rrs r4rzServer.main_script_pathLs%%%r6c Ktjd|j}t|t j d}tjd||j jd{y7w)zaStart the server. When this returns, Streamlit is ready to accept new sessions. zStarting server...rZzServer started on port %sN)r*r _create_apprlr r.rstart)rrhrs r4rz Server.startPs`  *+   / 148mm!!###sA9B;B<Bc.|jjS)z>A Future that completes when the Server's run loop has exited.)rstoppedrs r4rzServer.stopped`s}}$$$r6c tjd}t|ttdj ift|t tdfdift|ttdj jift|ttft|tdtj jj j dft|t"dt$d d ift|t&dt(d j j*ift|t,dt.d j j0ifg}tjd r,|j3t|t4tdfdifgtjdrI|j3t|t6dt8d t;j<j>ifgtArWddl!m"}m#}m$}|j3t|tJ|d|ift|tL|d|ift|tN|d|ifgtjdrtPjSdnt;jT}tPjSd||j3t|ddtVft|dtX|ddtZtgdft|dt\fgt_j`jb|ftetgtidtkS)zCreate our tornado web app.zserver.baseUrlPathruntimecallbackc0jjSr)ris_ready_for_browser_connectionrsr4z$Server._create_app..rsT]]%R%Rr6 stats_managerz)/(?P[^/]+)/(?P[^/]+))file_mgris_active_sessionz/(.*)r~registrycomponent_managerzserver.scriptHealthCheckEnabledc8jjSr)rdoes_script_run_without_errorrsr4rz$Server._create_app..s 0[0[0]r6zserver.enableStaticServingr)AuthCallbackHandlerAuthLoginHandlerAuthLogoutHandlerbase_urlglobal.developmentModez/Serving static content from the Node dev serverzServing static content from %sz (?!/)(.*)required)trailing_slashz(.*)/z index.html)r~default_filenamereserved_paths prohibited) cookie_secret xsrf_cookieswebsocket_max_message_size)6r r.r%rHrrrMrrIr&rrNrrGr'rrrCrrDrcomponent_registryrErbidi_component_registryextendrOrFrr get_app_static_dirrr )streamlit.web.server.oauth_authlib_routesrrrrPrQrRr*rget_static_dirr r!rKrrweb Applicationr"r$rr?)rbaseroutesrrr static_paths` r4rzServer._create_appes]  !56$D/:'DMM*  $D/:RS  $D/:# $--"9"9:  $D*>?!  $,--VW) $ ? ?)-)H)H $D^,  $D-D,EU*KL+$dmm&K&KL S. `   > ? MM,D2NO%&(]    9 : MM,D5L4MU2ST,!=!=d>S>S!TU  !   MM,D2JK+#T* ,D2EF(#T* ,D2FG)#T* (   5 6 MMK L#224K MM:K H MM , +j+,D&9)'2m1$50<!4 4 /  ,DN'1 @{{&&  +-(*'A'C  #$   r6cP|jjtjk(Sr)rstaterONE_OR_MORE_SESSIONS_CONNECTEDrs r4browser_is_connectedzServer.browser_is_connecteds}}""l&Q&QQQr6c@ddlm}|j|jk(S)Nr) streamlit_app)streamlit.hellorr__file__)rrs r4is_running_hellozServer.is_running_hellos1%%)?)???r6cftjdd|jjy)Nz Stopping...blue)fg)r print_to_clirstoprs r4rz Server.stops"o&9 r6N)rstrrrnreturnNonerr)rr)rzAwaitable[None])rtornado.web.Applicationrrn)rUrVrWr classmethodrrpropertyrrrrrrrrXr6r4rrs FD22 &&$ %%T lRR@@ r6rc\tjdstjdj tj tjdj tj tjdj tj yy)Nrztornado.accessztornado.applicationztornado.general)r r.logging getLoggersetLevelERRORrXr6r4rr sr   5 6 *+44W]]C/099'--H+,55gmmD 7r6)rztuple[int, int])rzdict[str, Any]r)rhrrr)ri str | NonerjrrzSSLContext | None)rkrrrr)h __future__rrrrr}rppathlibrtypingrrr tornado.webrtornado.httpserverr streamlitr r r r streamlit.auth_utilr streamlit.config_optionrstreamlit.loggerrstreamlit.runtimerrr+streamlit.runtime.memory_media_file_storager(streamlit.runtime.memory_session_storager.streamlit.runtime.memory_uploaded_file_managerrstreamlit.runtime.runtime_utilr*streamlit.web.cache_storage_manager_configr,streamlit.web.server.app_static_file_handlerr3streamlit.web.server.bidi_component_request_handlerr.streamlit.web.server.browser_websocket_handlerr.streamlit.web.server.component_request_handlerr'streamlit.web.server.media_file_handlerrstreamlit.web.server.routesrrrr r! streamlit.web.server.server_utilr"r#r$r%*streamlit.web.server.stats_request_handlerr&0streamlit.web.server.upload_file_request_handlerr'asynciocollections.abcr(rsr)rUr*__annotations__r5r?rArBrCrDrErFrGrHrIrJrKrMrNrOrPrQrR ExceptionrTr\rarlrerfrgrrrXr6r4rs#  ,,)7740'BBNITENSRD KU)H%% @2"%$&E% ! (E(!;;!..4e4**::,%,-U-'(;'>4e4:e#4%3*U*,e, 9 1J 0.$N  " JjjZEr6