o yfyO@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZmZddlmZmZddlmZddl mZej\ZZeejejZejddZ ejd d Z!d Z"ejd d kZ#ej$ddddZ%e ddZ&e ddZ'ddde#fde(de)fddZ*ddZ+ddZ,de#fddZ-d e)de(fd!d"Z.d#d$Z/ddde#d%fde(fd&d'Z0d?d(d)Z1d*d+Z2d,d-Z3d.d/Z4d0d1Z5d2d3Z6e7d4Z8d5d6Z9d7d8Z:d9d:Z;d;d<ZZ=dS)@N) lru_cache)cmd_argserrors) script_pathextensions_dir) startup_timer)logging_configZGITgitZ INDEX_URLZ repositoriesZWEBUI_LAUNCH_LIVE_OUTPUT1ZGRADIO_ANALYTICS_ENABLEDFalsec Cstdk}tjj}tjj}tjj}|rdg}ngd}|dkr$||vsAddl}|j d|d|d|d|r9d nd d dSdS) NWindows ) r rzV INCOMPATIBLE PYTHON VERSION This program is tested with 3.10.6 Python, but you have .a. If you encounter an error with "RuntimeError: Couldn't install torch." message, or any other error regarding unsuccessful package (library) installation, please downgrade (or upgrade) to the latest version of 3.10 Python and delete current Python and "venv" folder in WebUI's directory. You can download 3.10 Python from here: https://www.python.org/downloads/release/python-3106/ z}Alternatively, use a binary release of WebUI: https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-prer z< Use --skip-python-version-check to suppress this warning. ) platformsystemsys version_infomajorminormicroZmodules.errorsrZprint_error_explanation)Z is_windowsrrrZsupported_minorsmodulesreC:\Users\Luke\Documents\Stable diffusion\Automatic1111\stable-diffusion-webui\modules\launch_utils.pycheck_python_version!s&  rcCs6ztjtdtddgdddWStyYdSw)N-Cz rev-parseZHEADFutf8shellencoding) subprocess check_outputr rstrip Exceptionrrrr commit_hash@s   r*c CsztjtdtddgdddWStybz?tjtj tj t d}t |dd d }t d d |Dd }| dd}|WdWYS1sNwYWYdStyaYYd Sww)Nr Zdescribez--tagsFr!r"z CHANGELOG.mdrutf-8r$css |] }|r|VqdSN)r().0linerrr Qszgit_tag..r%z## r )r&r'r rr(r)ospathjoindirname__file__opennextreplace)Z changelog_mdfiler0rrrgit_tagHs   . r;livereturncCs|durt||d|durtjn|ddd}|s"tj|d<|d<tjdi|}|jdkr_|p2dd d |d |jg}|jrL|d |j|j rX|d |j t d ||jpcdS)NTr!ignore)argsr#envr$rstdoutstderrrzError running commandrz Command: z Error code: zstdout: zstderr:  r r) printr2environr&PIPErun returncoderAappendrB RuntimeErrorr4)commanddescerrdesc custom_envr<Z run_kwargsresultZ error_bitsrrrrGXs,    rGc Cs^z tj|}W|duStjjy.ztj|}Wn ty'YYdSw|duYSw)NF) importlibmetadataZ distributionZPackageNotFoundErrorutil find_specModuleNotFoundError)packageZdistspecrrr is_installedxs   rWcCstjtt|Sr.)r2r3r4r dir_repos)namerrrrepo_dirsrZcCsNtjrdStdkrdtnd}tdtd|d|d|d||dS) Nr z --index-url "z " -m pip z --prefer-binary Installing zCouldn't install )rLrMr<)r? skip_install index_urlrGpython)rKrLr<Zindex_url_linerrrrun_pips.r`codecCs tjtd|gddd}|jdkS)Nz-cTF)Zcapture_outputr#r)r&rGr_rH)rarOrrrcheck_run_pythons rbcCsXtdtd|dd|d|ddtdtd|dd |d |dddS) Nr[" -C "z" fetch --refetch --no-auto-gczFetching all contents for Couldn't fetch Tr<z" gc --aggressive --prune=nowzPruning zCouldn't prune )rGr )dirrYrrrgit_fix_workspaces**rgTcCs|ztdtd|d|||||dWSty|sYnwt|dt||tdtd|d|||||dS)Nr[rcz" )rLrMrNr<z, attempting autofix...)rGr rJrDrg)rfrYrKrLrMrNr<autofixrrrrun_gits&  $ric Csttj|ru|dur dSt||ddd|d|dd}||kr$dSt||ddd|ddd|krHt||d|d dd |dddt||d d |d d|ddt||d|d|d|d d|d|dddSztd td|d|d d|d|d d|ddWntytj |ddw|durtd td|d|dddSdS)Nzrev-parse HEADzCouldn't determine z 's hash: Frezconfig --get remote.origin.urlz 's origin URLzremote set-url origin "r[zFailed to set ZfetchzFetching updates for z...rd)rhz checkout zChecking out commit for z with hash: zCouldn't checkout commit z for Tz&" clone --config core.filemode=false "" "zCloning z into zCouldn't clone ) ignore_errorsrcz " checkout z-Couldn't checkout {name}'s hash: {commithash}) r2r3existsrir(rGr rJshutilZrmtree)ZurlrfrYZ commithashZ current_hashrrr git_clones( $$$"4< "rnc Cst|D]Q\}}}tjtj|drVzttd|ddg}td|d| d dWqtj yU}ztd |d|j d dWYd}~qd}~wwqdS) Nz.gitr Zpullz --autostashz"Pulled changes for repository in 'z': r,rCz.Couldn't perform 'git pull' on repository in ') r2walkr3rlr4r&r'r rDdecoder(ZCalledProcessErroroutput)rfZsubdir_rqerrrgit_pull_recursives$.rtc Csz@ddl}|d}|dkr+|dd|kr+tdtdtdtdWdS|dd|kr:td WdStd WdStyX}z td |WYd}~dSd}~ww) NrzQhttps://api.github.com/repos/AUTOMATIC1111/stable-diffusion-webui/branches/masterr%commitZshaz8--------------------------------------------------------z8| You are not up to date with the most recent release. |z8| Consider running `git pull` to update. |z0You are up to date with the most recent release.z-Not a git clone, can't perform version check.zversion check failed)requestsgetjsonrDr))rurvZcommitsrsrrr version_checksryc Cstj|d}tj|sdSz7tj}tjdtj|dd|d<t dt d|dd||d }|rDt |WdSWdSt y`}ztt|WYd}~dSd}~ww) Nz install.pyrZ PYTHONPATHr r[rjz'Error running install.py for extension )rMrN)r2r3r4isfilerEcopyabspathpathseprwrGr_r(rDr)rreportstr)Z extension_dirZpath_installerr@rArsrrrrun_extension_installers  &&rc si}zt|ddd }t|}Wdn1swYWn(ty)Yn tyHtjd|dddt|tj t dd Ynwt | d g| d d }|d ksgtjsgtjsgtj tsigSfd dttDS)Nr+r!r-z* Could not load settings The config file "z^" is likely corrupted It has been moved to the "tmp/config.json" Reverting config to default T)exc_infotmpz config.jsondisabled_extensionsdisable_all_extensionsZnonecsg|]}|vr|qSrr)r/xrrr sz#list_extensions..)r7rxloadFileNotFoundErrorr)rr~r2r9r3r4rsetrwr?Zdisable_extra_extensionsrisdirrlistdir) settings_fileZsettingsr:rrrrlist_extensionss"     rcCstjtsdStd.t|D] }td|tj t|}tj|r2t |t |qWddS1s>wYdS)Nzrun extensions installersr\) r2r3rrr subcategoryrloggingdebugr4rrecord)rZdirname_extensionr3rrrrun_extensions_installerss     "rz5\s*([-_a-zA-Z0-9]+)\s*(?:==\s*([-+_.a-zA-Z0-9]+))?\s*c Cs ddl}ddl}t|dddl}|D]`}|dkrqtt|}|dur.WddS|d}|d p;d}|dkrCqz|j |}Wnt y\YWddSw|j ||j |krrWddSqWdd S1s~wYd S) z Does a simple parse of a requirements.txt file to determine if all rerqirements in it are already installed. Returns True if so, False if not installed or parsing fails. rNr+r!r-r FT) importlib.metadataZpackaging.versionr7r(rematchre_requirementZgrouprQversionr)Zparse) requirements_filerPZ packagingr:r0mrUZversion_requiredZversion_installedrrrrequirements_mets:     rc Csltjdd}tjdd|}tjr?tdkr.d}tjdd|d|d |d }ntjdd }tjdd |}tjd d}tjdd}tjdd}tjdd}tjdd}tjdd}tjdd} tjdd} tjdd} tjdd } tjd!d"} tjd#d$}tjd%d&}tjd'd(}tjd)d*}zttj t d+d,tj d-d.Wn t yYnwtj sttd/t}t}td0td1tjtd2|td3|tjstd4rtd5std6td7|d8d9d:d;td<tjrd:t_tjs%td=s%td>td?td@shttps://pytorch-extension.intel.com/release-whl/stable/xpu/us/z]pip install torch==2.0.0a0 intel-extension-for-pytorch==2.0.110+gitba7f6c1 --extra-index-url Z REQS_FILEzrequirements_versions.txtZREQS_FILE_FOR_NPUzrequirements_npu.txtZXFORMERS_PACKAGEzxformers==0.0.23.post1Z CLIP_PACKAGEzShttps://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zipZOPENCLIP_PACKAGEz_https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zipZ ASSETS_REPOzBhttps://github.com/AUTOMATIC1111/stable-diffusion-webui-assets.gitZSTABLE_DIFFUSION_REPOz3https://github.com/Stability-AI/stablediffusion.gitZSTABLE_DIFFUSION_XL_REPOz5https://github.com/Stability-AI/generative-models.gitZK_DIFFUSION_REPOz,https://github.com/crowsonkb/k-diffusion.gitZ BLIP_REPOz&https://github.com/salesforce/BLIP.gitZASSETS_COMMIT_HASHZ(6f7db241d2f8ba7457bac5ca9753331f0c266917ZSTABLE_DIFFUSION_COMMIT_HASHZ(cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbfZSTABLE_DIFFUSION_XL_COMMIT_HASHZ(45c443b316737a4ab6e40413d7794a7f5657c19fZK_DIFFUSION_COMMIT_HASHZ(ab527a9a6d347f364e3d185ba6d714e22d80cb3cZBLIP_COMMIT_HASHZ(48211a1594f1321b00f14c9f7a5b4813144b2fb9rZrestartZSD_WEBUI_RESTARTINGr Zcheckszgit version infozPython z Version: z Commit hash: ZtorchZ torchvisionr[z" -m z Installing torch and torchvisionzCouldn't install torchTrez install torchz.import torch; assert torch.cuda.is_available()zkTorch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this checkztorch GPU testZclipzinstall z install clipZ open_clipzinstall open_clipxformerszinstall -U -I --no-deps zinstall xformersngrokz install ngrok)exist_okzstable-diffusion-webui-assetsZassetszstable-diffusion-stability-aizStable Diffusionzgenerative-modelszStable Diffusion XLz k-diffusionz K-diffusionZBLIPzclone repositoresz install -r "Z requirementszinstall requirementsZ torch_npuZrequirements_for_npuzinstall requirements_for_npu)rz check versionzupdate extensionsz--exitz"Exiting because of --exit argumentr)1r2rErwr?Zuse_ipexrrremover3r4r setdefaultOSErrorZskip_python_version_checkrrrr*r;rDrrZreinstall_torchrWrGr_Zskip_torch_cuda_testrbrJr`Zreinstall_xformersrrmakedirsrXrnrZrzrr]rZui_settings_fileZ update_checkryZupdate_all_extensionsrtrargvexit)Ztorch_index_urlZ torch_commandZ url_prefixrZrequirements_file_for_npuZxformers_packageZ clip_packageZopenclip_packageZ assets_repoZstable_diffusion_repoZstable_diffusion_xl_repoZk_diffusion_repoZ blip_repoZassets_commit_hashZstable_diffusion_commit_hashZstable_diffusion_xl_commit_hashZk_diffusion_commit_hashZblip_commit_hashrutagrrrprepare_environment=s  $                     rcCs|dtjvr tjddtjvr!tjdtjtjtddtjvr,tjddtjvr7tjddtjd<dS)Nz--apiz--ckptztest/test_files/empty.ptz--skip-torch-cuda-testz--disable-nan-checkr ZCOMMANDLINE_ARGS)rrrIr2r3r4rrErrrrconfigure_for_testss        rc Cs\tddtjvr dndddtjddddl}dtjvr(|dS|dS) Nz Launching z --nowebuiz API serverzWeb UIz with arguments:  rr)rDrrr4webuiZapi_only)rrrrstarts 2   rcCsrddlm}ddl}|}d|jdd}t|ddd}||Wd|S1s2wY|S) Nr)sysinfozsysinfo-z%Y-%m-%d-%H-%Mz.jsonwr!r-)rrdatetimerwZutcnowstrftimer7write)rrtextfilenamer:rrr dump_sysinfos   rr.)>rrr&r2rmrimportlib.utilrPrrrxZ functoolsrrrrZmodules.paths_internalrrZ modules.timerrrZparserZparse_known_argsr?rrZ setup_loggingZloglevel executabler_rErwr r^rXZdefault_command_liverrr*r;boolrrGrWrZr`rbrgrirnrtryrrrcompilerrrrrrrrrrs`          #