


"""simple docstring"""



import random
import unittest

import numpy as np
import torch

from diffusers import DDIMScheduler, LDMSuperResolutionPipeline, UNetaDModel, VQModel
from diffusers.utils import PIL_INTERPOLATION, floats_tensor, load_image, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch


enable_full_determinism()







class       __a	(   unittest.TestCase       ):







				@property
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = 1
					lowerCAmelCase_			       = 3
					lowerCAmelCase_			       = (32, 32)

					lowerCAmelCase_			       = floats_tensor((batch_size, num_channels) + sizes			,  rng=random.Random(0      )      ).to(UpperCAmelCase      )
					return image







				@property
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					torch.manual_seed(0      )
					lowerCAmelCase_			       = UNetaDModel(
					    block_out_channels=(32, 64)			,  layers_per_block=2			,  sample_size=32			,  in_channels=6			,  out_channels=3			,  down_block_types=('''DownBlock2D''', '''AttnDownBlock2D''')			,  up_block_types=('''AttnUpBlock2D''', '''UpBlock2D''')			,  )
					return model







				@property
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					torch.manual_seed(0      )
					lowerCAmelCase_			       = VQModel(
					    block_out_channels=[32, 64]			,  in_channels=3			,  out_channels=3			,  down_block_types=['''DownEncoderBlock2D''', '''DownEncoderBlock2D''']			,  up_block_types=['''UpDecoderBlock2D''', '''UpDecoderBlock2D''']			,  latent_channels=3			,  )
					return model







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = '''cpu'''
					lowerCAmelCase_			       = self.dummy_uncond_unet
					lowerCAmelCase_			       = DDIMScheduler()
					lowerCAmelCase_			       = self.dummy_vq_model

					lowerCAmelCase_			       = LDMSuperResolutionPipeline(unet=UpperCAmelCase			,  vqvae=UpperCAmelCase			,  scheduler=UpperCAmelCase      )
					ldm.to(UpperCAmelCase      )
					ldm.set_progress_bar_config(disable=UpperCAmelCase      )

					lowerCAmelCase_			       = self.dummy_image.to(UpperCAmelCase      )

					lowerCAmelCase_			       = torch.Generator(device=UpperCAmelCase      ).manual_seed(0      )
					lowerCAmelCase_			       = ldm(image=UpperCAmelCase			,  generator=UpperCAmelCase			,  num_inference_steps=2			,  output_type='''numpy'''      ).images

					lowerCAmelCase_			       = image[0, -3:, -3:, -1]

					assert image.shape == (1, 64, 64, 3)
					lowerCAmelCase_			       = np.array([0.8_6_7_8, 0.8_2_4_5, 0.6_3_8_1, 0.6_8_3_0, 0.4_3_8_5, 0.5_5_9_9, 0.4_6_4_1, 0.6_2_0_1, 0.5_1_5_0]      )

					assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2







				@unittest.skipIf(torch_device != '''cuda'''			,  '''This test requires a GPU'''      )
				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = self.dummy_uncond_unet
					lowerCAmelCase_			       = DDIMScheduler()
					lowerCAmelCase_			       = self.dummy_vq_model

					# put models in fp16
					lowerCAmelCase_			       = unet.half()
					lowerCAmelCase_			       = vqvae.half()

					lowerCAmelCase_			       = LDMSuperResolutionPipeline(unet=UpperCAmelCase			,  vqvae=UpperCAmelCase			,  scheduler=UpperCAmelCase      )
					ldm.to(UpperCAmelCase      )
					ldm.set_progress_bar_config(disable=UpperCAmelCase      )

					lowerCAmelCase_			       = self.dummy_image.to(UpperCAmelCase      )

					lowerCAmelCase_			       = ldm(UpperCAmelCase			,  num_inference_steps=2			,  output_type='''numpy'''      ).images

					assert image.shape == (1, 64, 64, 3)







@slow
@require_torch
class       __a	(   unittest.TestCase       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = load_image(
					    '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'''
					    '''/vq_diffusion/teddy_bear_pool.png'''      )
					lowerCAmelCase_			       = init_image.resize((64, 64)			,  resample=PIL_INTERPOLATION['''lanczos''']      )

					lowerCAmelCase_			       = LDMSuperResolutionPipeline.from_pretrained('''duongna/ldm-super-resolution'''			,  device_map='''auto'''      )
					ldm.set_progress_bar_config(disable=UpperCAmelCase      )

					lowerCAmelCase_			       = torch.manual_seed(0      )
					lowerCAmelCase_			       = ldm(image=UpperCAmelCase			,  generator=UpperCAmelCase			,  num_inference_steps=20			,  output_type='''numpy'''      ).images

					lowerCAmelCase_			       = image[0, -3:, -3:, -1]

					assert image.shape == (1, 256, 256, 3)
					lowerCAmelCase_			       = np.array([0.7_6_4_4, 0.7_6_7_9, 0.7_6_4_2, 0.7_6_3_3, 0.7_6_6_6, 0.7_5_6_0, 0.7_4_2_5, 0.7_2_5_7, 0.6_9_0_7]      )

					assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2










"""simple docstring"""



import subprocess
from argparse import ArgumentParser
from typing import List, Union

from huggingface_hub.hf_api import HfFolder, create_repo, whoami
from requests.exceptions import HTTPError

from . import BaseTransformersCLICommand







class       __a	(   __snake_case       ):







				@staticmethod
				def     lowerCamelCase_    (   UpperCAmelCase      ):

					'''simple docstring'''






					lowerCAmelCase_			       = parser.add_parser('''login'''			,  help='''Log in using the same credentials as on huggingface.co'''      )
					login_parser.set_defaults(func=lambda UpperCAmelCase      : LoginCommand(UpperCAmelCase      )      )
					lowerCAmelCase_			       = parser.add_parser('''whoami'''			,  help='''Find out which huggingface.co account you are logged in as.'''      )
					whoami_parser.set_defaults(func=lambda UpperCAmelCase      : WhoamiCommand(UpperCAmelCase      )      )
					lowerCAmelCase_			       = parser.add_parser('''logout'''			,  help='''Log out'''      )
					logout_parser.set_defaults(func=lambda UpperCAmelCase      : LogoutCommand(UpperCAmelCase      )      )

					# new system: git-based repo system
					lowerCAmelCase_			       = parser.add_parser(
					    '''repo'''			,  help='''Deprecated: use `huggingface-cli` instead. Commands to interact with your huggingface.co repos.'''			,  )
					lowerCAmelCase_			       = repo_parser.add_subparsers(
					    help='''Deprecated: use `huggingface-cli` instead. huggingface.co repos related commands'''      )
					lowerCAmelCase_			       = repo_subparsers.add_parser(
					    '''create'''			,  help='''Deprecated: use `huggingface-cli` instead. Create a new repo on huggingface.co'''      )
					repo_create_parser.add_argument(
					    '''name'''			,  type=UpperCAmelCase			,  help='''Name for your model\'s repo. Will be namespaced under your username to build the model id.'''			,  )
					repo_create_parser.add_argument('''--organization'''			,  type=UpperCAmelCase			,  help='''Optional: organization namespace.'''      )
					repo_create_parser.add_argument('''-y'''			,  '''--yes'''			,  action='''store_true'''			,  help='''Optional: answer Yes to the prompt'''      )
					repo_create_parser.set_defaults(func=lambda UpperCAmelCase      : RepoCreateCommand(UpperCAmelCase      )      )







class       __a	:
				lowerCamelCase    :					Dict 					='\u001b[1m'
				lowerCamelCase    :					Tuple 					='\u001b[31m'
				lowerCamelCase    :					List[str] 					='\u001b[90m'
				lowerCamelCase    :					Any 					='\u001b[0m'







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._bold}{s}{cls._reset}"""







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._bold}{cls._red}{s}{cls._reset}"""







				@classmethod
				def     lowerCamelCase_    (   cls			,  UpperCAmelCase      ):

					'''simple docstring'''






					return F"""{cls._gray}{s}{cls._reset}"""




def     UpperCAmelCase    (					_lowercase   :      List[List[Union[str, int]]] ,      _lowercase   :      List[str]  )	->   str:


	"""simple docstring"""




	lowerCAmelCase_			       = [max(len(str(_lowercase  )  ) for x in col  ) for col in zip(*_lowercase ,      _lowercase  )]
	lowerCAmelCase_			       = ('''{{:{}}} ''' * len(_lowercase  )).format(*_lowercase  )
	lowerCAmelCase_			       = []
	lines.append(row_format.format(*_lowercase  )  )
	lines.append(row_format.format(*['''-''' * w for w in col_widths]  )  )
	for row in rows:
		lines.append(row_format.format(*_lowercase  )  )
	return "\n".join(_lowercase  )







class       __a	:







				def __init__(   self			,  UpperCAmelCase      ):

					'''simple docstring'''






					lowerCAmelCase_			       = args







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''ERROR! `huggingface-cli login` uses an outdated login mechanism '''
					        '''that is not compatible with the Hugging Face Hub backend anymore. '''
					        '''Please use `huggingface-cli login instead.'''      )      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''WARNING! `transformers-cli whoami` is deprecated and will be removed in v5. Please use '''
					        '''`huggingface-cli whoami` instead.'''      )      )
					lowerCAmelCase_			       = HfFolder.get_token()
					if token is None:
						print('''Not logged in'''      )
						exit()
					try:
						lowerCAmelCase_       ,  lowerCAmelCase_			       = whoami(UpperCAmelCase      )
						print(UpperCAmelCase      )
						if orgs:
							print(ANSI.bold('''orgs: '''      )			,  ''','''.join(UpperCAmelCase      )      )
					except HTTPError as e:
						print(UpperCAmelCase      )
						print(ANSI.red(e.response.text      )      )
						exit(1      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''ERROR! `transformers-cli logout` uses an outdated logout mechanism '''
					        '''that is not compatible with the Hugging Face Hub backend anymore. '''
					        '''Please use `huggingface-cli logout instead.'''      )      )







class       __a	(   __snake_case       ):







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					print(
					    ANSI.red(
					        '''WARNING! Managing repositories through transformers-cli is deprecated. '''
					        '''Please use `huggingface-cli` instead.'''      )      )
					lowerCAmelCase_			       = HfFolder.get_token()
					if token is None:
						print('''Not logged in'''      )
						exit(1      )
					try:
						lowerCAmelCase_			       = subprocess.check_output(['''git''', '''--version''']      ).decode('''utf-8'''      )
						print(ANSI.gray(stdout.strip()      )      )
					except FileNotFoundError:
						print('''Looks like you do not have git installed, please install.'''      )

					try:
						lowerCAmelCase_			       = subprocess.check_output(['''git-lfs''', '''--version''']      ).decode('''utf-8'''      )
						print(ANSI.gray(stdout.strip()      )      )
					except FileNotFoundError:
						print(
						    ANSI.red(
						        '''Looks like you do not have git-lfs installed, please install.'''
						        ''' You can install from https://git-lfs.github.com/.'''
						        ''' Then run `git lfs install` (you only have to do this once).'''      )      )
					print(''''''      )

					lowerCAmelCase_       ,  lowerCAmelCase_			       = whoami(UpperCAmelCase      )
					lowerCAmelCase_			       = self.args.organization if self.args.organization is not None else user
					lowerCAmelCase_			       = F"""{namespace}/{self.args.name}"""
					print(F"""You are about to create {ANSI.bold(UpperCAmelCase      )}"""      )

					if not self.args.yes:
						lowerCAmelCase_			       = input('''Proceed? [Y/n] '''      ).lower()
						if not (choice == "" or choice == "y" or choice == "yes"):
							print('''Abort'''      )
							exit()
					try:
						lowerCAmelCase_			       = create_repo(UpperCAmelCase			,  name=self.args.name			,  organization=self.args.organization      )
					except HTTPError as e:
						print(UpperCAmelCase      )
						print(ANSI.red(e.response.text      )      )
						exit(1      )
					print('''\nYour repo now lives at:'''      )
					print(F"""  {ANSI.bold(UpperCAmelCase      )}"""      )
					print('''\nYou can clone it locally with the command below, and commit/push as usual.'''      )
					print(F"""\n  git clone {url}"""      )
					print(''''''      )