o yf!@sddlZddlZddlZddlZddlZddlmZddZddZddZ d d Z d d Z d dZ ddZ ddZddZddZddZddZdS)N) startup_timercCs&ddlm}|jr |jS|jrdSdS)Nrcmd_optsz0.0.0.0)modules.shared_cmd_optionsr server_namelistenrrhC:\Users\Luke\Documents\Stable diffusion\Automatic1111\stable-diffusion-webui\modules\initialize_util.pygradio_server_name s r cCsBddl}d|jvsd|jvr|j|_td|jd|_dSdS)Nrz.devz+gitz [\d.]+[\d])torch __version__Z__long_version__researchgroup)r rrr fix_torch_versions rcCs0dtjvrddl}td|jjtjd<dSdS)Nz'pytorch_lightning.utilities.distributedrzOPytorch_lightning.distributed not found, attempting pytorch_lightning.rank_zero)sysmodulespytorch_lightningprintZ utilitiesZ rank_zero)rrrr fix_pytorch_lightnings rcsNddltjdkrtdrj}nj}Gfddd|}|dS)a The default `asyncio` event loop policy only automatically creates event loops in the main threads. Other threads must create event loops explicitly or `asyncio.get_event_loop` (and therefore `.IOLoop.current`) will fail. Installing this policy allows event loops to be created automatically on any thread, matching the behavior of Tornado versions prior to 5.0 (or 5.0 on Python 2). rNwin32WindowsSelectorEventLoopPolicycs(eZdZdZdjffdd ZZS)z?fix_asyncio_event_loop_policy..AnyThreadEventLoopPolicyzEvent loop policy that allows loop creation on any thread. Usage:: asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy()) returnc s:ztWSttfy|}|||YSwN)superget_event_loop RuntimeErrorAssertionErrorZnew_event_loopZset_event_loop)selfZloop __class__rr r=s  zNfix_asyncio_event_loop_policy..AnyThreadEventLoopPolicy.get_event_loop)__name__ __module__ __qualname____doc__ZAbstractEventLoopr __classcell__rasynciorr AnyThreadEventLoopPolicy6sr()r'rplatformhasattrrZDefaultEventLoopPolicyZset_event_loop_policy)Z _BasePolicyr(rr&r fix_asyncio_event_loop_policy#s  r+cCsddlm}m}|jj}|dkrdSd|j_|j|jtj |rRt d|t |ddd}t |}||Wdn1sFwYtddS|r]t d |dSdS) Nr)shared config_statesz0*** About to restore extension state from file: rzutf-8encodingzrestore extension configz#!!! Config state backup not found: )rr,r-optsrestore_config_state_fileZsaveZconfig_filenameospathisfileropenjsonloadZrestore_extension_configrrecord)r,r-Zconfig_state_filefZ config_staterrr r3Ks    r3cCsddlm}|jr |jsdSztj|jstdtj|js*td|jdWnty>d|_|_tdYnwtdt ddS) Nrrz!Invalid path to TLS keyfile givenzInvalid path to TLS certfile: ''z,TLS setup invalid, running webui without TLSzRunning with TLSZTLS) rr tls_keyfile tls_certfiler4r5existsr TypeErrorrr:rrrr validate_tls_options_s     rAccsddlm}dd}|jr |jdD] }||}|r|Vq|jrXt|jddd#}|D]}|dD] }||}|rD|Vq9q0Wd d S1sQwYd Sd S) z Convert the gradio_auth and gradio_auth_path commandline arguments into an iterable of (username, password) tuples. rrcSs |}|sdSt|ddS)N:)striptuplesplit)srrr process_credential_lineysz6get_gradio_auth_creds..process_credential_line,r/utf8r0N)rr gradio_authrFgradio_auth_pathr7 readlinesrD)rrHZcredfilelinerrr get_gradio_auth_credsrs*  "rPc Csddl}ddl}dd|D}g}tD]9\}}|d||dd|d||D]\}}}} |d|d |d || rQ|d | q2qt d |dS) NrcSsi|]}|j|jqSr)identname).0thrrr szdumpstacks..z # Thread: r.()zFile: "z", line z, in z  ) threading traceback enumerater_current_framesitemsappendget extract_stackrDrjoin) rYrZZid2namecodeZthreadIdstackfilenamelinenorRrOrrr dumpstackss rfcs:ddlmfdd}tjdsttj|dSdS)Nrr,cs0td|d|jjrttddS)NzInterrupted with signal z in r)rr2Zdump_stacks_on_signalrfr4_exit)sigframergrr sigint_handlersz0configure_sigint_handler..sigint_handlerZ COVERAGE_RUN)rr,r4environr_signalSIGINT)rkrrgr configure_sigint_handlers   rocs ddlmmmm}mddlm}jj d|fddddjj d |fd dddjj d |fd dddj d |j j dj jj d|fddddjj d|fddddjj d|fddddt ddS)Nr)r, sd_modelssd_vae ui_tempdir sd_hijack)wrap_queued_callZsd_model_checkpointcSrZreload_model_weightsrrprr z)configure_opts_onchange..F)callrqcrurZreload_vae_weightsrrqrr rxryZ&sd_vae_overrides_per_model_preferencescrurr{rr|rr rxryZtemp_dirZ gradio_themeZcross_attention_optimizationcsjjSr)Z model_hijackZ redo_hijackZsd_modelr)rsr,rr rxsZ fp8_storagecrurrvrrwrr rxryZcache_fp16_weightcs jddS)NT)Z forced_reloadrvrrwrr rxs z opts onchange)rr,rprqrrrsmodules.call_queuertr2ZonchangeZon_tmpdir_changedZreload_gradio_themerr:)rrrtr)rsrprqr,r configure_opts_onchanges  r~cCs4ddlm}d|_|j|ddt||dS)Nr)GZipMiddlewarei)Z minimum_size)Zstarlette.middleware.gziprZmiddleware_stackadd_middlewareconfigure_cors_middlewareZbuild_middleware_stack)apprrrr setup_middlewares  rcCsdddlm}ddlm}dgdgdd}|jr|jd|d<|jr'|j|d <|j|fi|dS) Nr)CORSMiddlewarer*T)Z allow_methodsZ allow_headersZallow_credentialsrIZ allow_originsZallow_origin_regex)Zstarlette.middleware.corsrrrcors_allow_originsrFcors_allow_origins_regexr)rrrZ cors_optionsrrr rs   r)r8r4rmrr modules.timerrr rrr+r3rArPrfror~rrrrrr s$  (