2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# this scripts installs necessary requirements and launches main program in webui.py  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  subprocess  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  os  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  sys  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  importlib . util  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  shlex  
						 
					
						
							
								
									
										
										
										
											2022-10-08 16:13:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  platform  
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								dir_repos  =  " repositories "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								python  =  sys . executable  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								git  =  os . environ . get ( ' GIT ' ,  " git " )  
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:28:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								index_url  =  os . environ . get ( ' INDEX_URL ' ,  " " )  
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-21 10:25:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  extract_arg ( args ,  name ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ x  for  x  in  args  if  x  !=  name ] ,  name  in  args 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								def  run ( command ,  desc = None ,  errdesc = None ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  desc  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print ( desc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result  =  subprocess . run ( command ,  stdout = subprocess . PIPE ,  stderr = subprocess . PIPE ,  shell = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  result . returncode  !=  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message  =  f """ { errdesc  or  ' Error running command ' } . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Command :  { command }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Error  code :  { result . returncode }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								stdout :  { result . stdout . decode ( encoding = " utf8 " ,  errors = " ignore " )  if  len ( result . stdout ) > 0  else  ' <empty> ' }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								stderr :  { result . stderr . decode ( encoding = " utf8 " ,  errors = " ignore " )  if  len ( result . stderr ) > 0  else  ' <empty> ' }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								""" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        raise  RuntimeError ( message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result . stdout . decode ( encoding = " utf8 " ,  errors = " ignore " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  check_run ( command ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result  =  subprocess . run ( command ,  stdout = subprocess . PIPE ,  stderr = subprocess . PIPE ,  shell = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result . returncode  ==  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  is_installed ( package ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        spec  =  importlib . util . find_spec ( package ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  ModuleNotFoundError : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  spec  is  not  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  repo_dir ( name ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  os . path . join ( dir_repos ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  run_python ( code ,  desc = None ,  errdesc = None ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  run ( f ' " { python } "  -c  " { code } " ' ,  desc ,  errdesc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  run_pip ( args ,  desc = None ) :  
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:28:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    index_url_line  =  f '  --index-url  { index_url } '  if  index_url  !=  ' '  else  ' ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  run ( f ' " { python } "  -m pip  { args }  --prefer-binary { index_url_line } ' ,  desc = f " Installing  { desc } " ,  errdesc = f " Couldn ' t install  { desc } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  check_run_python ( code ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  check_run ( f ' " { python } "  -c  " { code } " ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  git_clone ( url ,  dir ,  name ,  commithash = None ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # TODO clone into temporary dir and move if successful 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  os . path . exists ( dir ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  commithash  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        current_hash  =  run ( f ' " { git } "  -C  { dir }  rev-parse HEAD ' ,  None ,  f " Couldn ' t determine  { name } ' s hash:  { commithash } " ) . strip ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  current_hash  ==  commithash : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        run ( f ' " { git } "  -C  { dir }  fetch ' ,  f " Fetching updates for  { name } ... " ,  f " Couldn ' t fetch  { name } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-13 16:45:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run ( f ' " { git } "  -C  { dir }  checkout  { commithash } ' ,  f " Checking out commit for  { name }  with hash:  { commithash } ... " ,  f " Couldn ' t checkout commit  { commithash }  for  { name } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    run ( f ' " { git } "  clone  " { url } "   " { dir } " ' ,  f " Cloning  { name }  into  { dir } ... " ,  f " Couldn ' t clone  { name } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  commithash  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        run ( f ' " { git } "  -C  { dir }  checkout  { commithash } ' ,  None ,  " Couldn ' t checkout  {name} ' s hash:  {commithash} " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 17:04:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  version_check ( commit ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        import  requests 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        commits  =  requests . get ( ' https://api.github.com/repos/AUTOMATIC1111/stable-diffusion-webui/branches/master ' ) . json ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  commit  !=  " <none> "  and  commits [ ' commit ' ] [ ' sha ' ]  !=  commit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " -------------------------------------------------------- " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " | You are not up to date with the most recent release. | " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " | Consider running `git pull` to update.               | " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " -------------------------------------------------------- " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elif  commits [ ' commit ' ] [ ' sha ' ]  ==  commit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " You are up to date with the most recent release. " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print ( " Not a git clone, can ' t perform version check. " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print ( " versipm check failed " , e ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 17:04:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 15:22:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  prepare_enviroment ( ) :  
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    torch_command  =  os . environ . get ( ' TORCH_COMMAND ' ,  " pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requirements_file  =  os . environ . get ( ' REQS_FILE ' ,  " requirements_versions.txt " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    commandline_args  =  os . environ . get ( ' COMMANDLINE_ARGS ' ,  " " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-06 12:08:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    gfpgan_package  =  os . environ . get ( ' GFPGAN_PACKAGE ' ,  " git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clip_package  =  os . environ . get ( ' CLIP_PACKAGE ' ,  " git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-23 20:40:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    deepdanbooru_package  =  os . environ . get ( ' DEEPDANBOORU_PACKAGE ' ,  " git+https://github.com/KichangKim/DeepDanbooru.git@d91a2963bf87c6a770d74894667e9ffa9f6de7ff " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 15:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xformers_windows_package  =  os . environ . get ( ' XFORMERS_WINDOWS_PACKAGE ' ,  ' https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stable_diffusion_repo  =  os . environ . get ( ' STABLE_DIFFUSION_REPO ' ,  " https://github.com/CompVis/stable-diffusion.git " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    taming_transformers_repo  =  os . environ . get ( ' TAMING_REANSFORMERS_REPO ' ,  " https://github.com/CompVis/taming-transformers.git " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    k_diffusion_repo  =  os . environ . get ( ' K_DIFFUSION_REPO ' ,  ' https://github.com/crowsonkb/k-diffusion.git ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    codeformer_repo  =  os . environ . get ( ' CODEFORMET_REPO ' ,  ' https://github.com/sczhou/CodeFormer.git ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    blip_repo  =  os . environ . get ( ' BLIP_REPO ' ,  ' https://github.com/salesforce/BLIP.git ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stable_diffusion_commit_hash  =  os . environ . get ( ' STABLE_DIFFUSION_COMMIT_HASH ' ,  " 69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    taming_transformers_commit_hash  =  os . environ . get ( ' TAMING_TRANSFORMERS_COMMIT_HASH ' ,  " 24268930bf1dce879235a7fddd0b2355b84d7ea6 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    k_diffusion_commit_hash  =  os . environ . get ( ' K_DIFFUSION_COMMIT_HASH ' ,  " f4e99857772fc3a126ba886aadf795a332774878 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    codeformer_commit_hash  =  os . environ . get ( ' CODEFORMER_COMMIT_HASH ' ,  " c5b4593074ba6214284d6acd5f1719b6c5d739af " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    blip_commit_hash  =  os . environ . get ( ' BLIP_COMMIT_HASH ' ,  " 48211a1594f1321b00f14c9f7a5b4813144b2fb9 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 15:18:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sys . argv  + =  shlex . split ( commandline_args ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 15:18:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sys . argv ,  skip_torch_cuda_test  =  extract_arg ( sys . argv ,  ' --skip-torch-cuda-test ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sys . argv ,  reinstall_xformers  =  extract_arg ( sys . argv ,  ' --reinstall-xformers ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sys . argv ,  update_check  =  extract_arg ( sys . argv ,  ' --update-check ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xformers  =  ' --xformers '  in  sys . argv 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    deepdanbooru  =  ' --deepdanbooru '  in  sys . argv 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ngrok  =  ' --ngrok '  in  sys . argv 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        commit  =  run ( f " { git }  rev-parse HEAD " ) . strip ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        commit  =  " <none> " 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-21 08:03:15 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    print ( f " Python  { sys . version } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print ( f " Commit hash:  { commit } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 10:49:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " torch " )  or  not  is_installed ( " torchvision " ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        run ( f ' " { python } "  -m  { torch_command } ' ,  " Installing torch and torchvision " ,  " Couldn ' t install torch " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  skip_torch_cuda_test : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        run_python ( " import torch; assert torch.cuda.is_available(),  ' Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check ' " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " gfpgan " ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run_pip ( f " install  { gfpgan_package } " ,  " gfpgan " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-02 18:21:56 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " clip " ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run_pip ( f " install  { clip_package } " ,  " clip " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-08 14:42:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-20 03:16:22 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( not  is_installed ( " xformers " )  or  reinstall_xformers )  and  xformers : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  platform . system ( )  ==  " Windows " : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-20 03:16:22 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  platform . python_version ( ) . startswith ( " 3.10 " ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                run_pip ( f " install -U -I --no-deps  { xformers_windows_package } " ,  " xformers " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                print ( " Installation of xformers is not supported in this version of Python. " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                print ( " You can also check this and build manually: https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Xformers#building-xformers-on-windows-by-duckness " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  not  is_installed ( " xformers " ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    exit ( 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        elif  platform . system ( )  ==  " Linux " : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            run_pip ( " install xformers " ,  " xformers " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-08 18:02:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " deepdanbooru " )  and  deepdanbooru : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 15:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run_pip ( f " install  { deepdanbooru_package } #egg=deepdanbooru[tensorflow] tensorflow==2.10.0 tensorflow-io==0.27.0 " ,  " deepdanbooru " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-11 16:38:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " pyngrok " )  and  ngrok : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run_pip ( " install pyngrok " ,  " ngrok " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-11 16:38:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    os . makedirs ( dir_repos ,  exist_ok = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 11:42:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 15:13:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    git_clone ( stable_diffusion_repo ,  repo_dir ( ' stable-diffusion ' ) ,  " Stable Diffusion " ,  stable_diffusion_commit_hash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    git_clone ( taming_transformers_repo ,  repo_dir ( ' taming-transformers ' ) ,  " Taming Transformers " ,  taming_transformers_commit_hash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    git_clone ( k_diffusion_repo ,  repo_dir ( ' k-diffusion ' ) ,  " K-diffusion " ,  k_diffusion_commit_hash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    git_clone ( codeformer_repo ,  repo_dir ( ' CodeFormer ' ) ,  " CodeFormer " ,  codeformer_commit_hash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    git_clone ( blip_repo ,  repo_dir ( ' BLIP ' ) ,  " BLIP " ,  blip_commit_hash ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  not  is_installed ( " lpips " ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        run_pip ( f " install -r  { os . path . join ( repo_dir ( ' CodeFormer ' ) ,  ' requirements.txt ' ) } " ,  " requirements for CodeFormer " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 10:02:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    run_pip ( f " install -r  { requirements_file } " ,  " requirements for Web UI " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 15:18:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  update_check : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 17:04:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        version_check ( commit ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-16 10:54:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 15:18:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  " --exit "  in  sys . argv : 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print ( " Exiting because of --exit argument " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        exit ( 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-13 16:48:18 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  start_webui ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print ( f " Launching Web UI with arguments:  { '   ' . join ( sys . argv [ 1 : ] ) } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    import  webui 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    webui . webui ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-20 11:56:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  __name__  ==  " __main__ " :  
						 
					
						
							
								
									
										
										
										
											2022-10-09 13:44:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    prepare_enviroment ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-20 11:56:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    start_webui ( )