




def 							A__   (snake_case      :		int							)    ->	str:
					barcode //= 10  # exclude the last digit
					__UpperCamelCase				:  Any								=			False
					__UpperCamelCase				:  Dict								=			0

					# extract and check each digit
					while barcode != 0:
										__UpperCamelCase				:  int								=			1 if checker else 3
										s += mult * (barcode % 10)
										barcode //= 10
										__UpperCamelCase				:  Tuple								=			not checker

					return (10 - (s % 10)) % 10





def 							A__   (snake_case      :		int							)    ->	str:
					return len(str(UpperCamelCase__							)							) == 13 and get_check_digit(UpperCamelCase__							) == barcode % 10





def 							A__   (snake_case      :		str							)    ->	Any:
					if str(UpperCamelCase__							).isalpha():
										__UpperCamelCase				:  int								=			F'''Barcode \'{barcode}\' has alphabetic characters.'''
										raise ValueError(UpperCamelCase__							)
					elif int(UpperCamelCase__							) < 0:
										raise ValueError("""The entered barcode has a negative value. Try again."""							)
					else:
										return int(UpperCamelCase__							)


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	a__		    =    get_barcode(input('''Barcode: ''').strip())

	if is_valid(barcode):
		print(f"'{barcode}' is a valid barcode.")
	else:
		print(f"'{barcode}' is NOT a valid barcode.")












import gc
import random
import unittest

import numpy as np
import torch
from transformers import XLMRobertaTokenizerFast

from diffusers import DDIMScheduler, KandinskyPipeline, KandinskyPriorPipeline, UNetaDConditionModel, VQModel
from diffusers.pipelines.kandinsky.text_encoder import MCLIPConfig, MultilingualCLIP
from diffusers.utils import floats_tensor, load_numpy, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..test_pipelines_common import PipelineTesterMixin, assert_mean_pixel_difference


enable_full_determinism()


class       SCREAMING_SNAKE_CASE_							(					_UpperCamelCase  ,     unittest.TestCase      ):



	"""simple docstring"""


	__magic_name__      :					str			  =		KandinskyPipeline
	__magic_name__      :					Optional[Any]			  =		[
	    'prompt',
	    'image_embeds',
	    'negative_image_embeds',
	]
	__magic_name__      :					int			  =		['prompt', 'negative_prompt', 'image_embeds', 'negative_image_embeds']
	__magic_name__      :					List[str]			  =		[
	    'generator',
	    'height',
	    'width',
	    'latents',
	    'guidance_scale',
	    'negative_prompt',
	    'num_inference_steps',
	    'return_dict',
	    'guidance_scale',
	    'num_images_per_prompt',
	    'output_type',
	    'return_dict',
	]
	__magic_name__      :					Optional[Any]			  =		False






	@property
	def 				lowerCamelCase__    (				self		:	Tuple  )  ->					Dict:







						"""simple docstring"""







						return 32






	@property
	def 				lowerCamelCase__    (				self		:	Tuple  )  ->					Optional[int]:







						"""simple docstring"""







						return 32






	@property
	def 				lowerCamelCase__    (				self		:	Any  )  ->					str:







						"""simple docstring"""







						return self.time_input_dim






	@property
	def 				lowerCamelCase__    (				self		:	Optional[Any]  )  ->					str:







						"""simple docstring"""







						return self.time_input_dim * 4






	@property
	def 				lowerCamelCase__    (				self		:	List[str]  )  ->					str:







						"""simple docstring"""







						return 100






	@property
	def 				lowerCamelCase__    (				self		:	Dict  )  ->					int:







						"""simple docstring"""







						__UpperCamelCase				:  Tuple								=			XLMRobertaTokenizerFast.from_pretrained("""YiYiXu/tiny-random-mclip-base"""  )
						return tokenizer






	@property
	def 				lowerCamelCase__    (				self		:	List[Any]  )  ->					List[str]:







						"""simple docstring"""







						torch.manual_seed(0  )
						__UpperCamelCase				:  Dict								=			MCLIPConfig(
						    numDims=self.cross_attention_dim				,    transformerDimensions=self.text_embedder_hidden_size				,    hidden_size=self.text_embedder_hidden_size				,    intermediate_size=37				,    num_attention_heads=4				,    num_hidden_layers=5				,    vocab_size=1005				,    )

						__UpperCamelCase				:  Union[str, Any]								=			MultilingualCLIP(lowerCAmelCase  )
						__UpperCamelCase				:  Any								=			text_encoder.eval()

						return text_encoder






	@property
	def 				lowerCamelCase__    (				self		:	Tuple  )  ->					Dict:







						"""simple docstring"""







						torch.manual_seed(0  )

						__UpperCamelCase				:  str								=			{
						    """in_channels""": 4,
						    # Out channels is double in channels because predicts mean and variance
						    """out_channels""": 8,
						    """addition_embed_type""": """text_image""",
						    """down_block_types""": ("""ResnetDownsampleBlock2D""", """SimpleCrossAttnDownBlock2D"""),
						    """up_block_types""": ("""SimpleCrossAttnUpBlock2D""", """ResnetUpsampleBlock2D"""),
						    """mid_block_type""": """UNetMidBlock2DSimpleCrossAttn""",
						    """block_out_channels""": (self.block_out_channels_a, self.block_out_channels_a * 2),
						    """layers_per_block""": 1,
						    """encoder_hid_dim""": self.text_embedder_hidden_size,
						    """encoder_hid_dim_type""": """text_image_proj""",
						    """cross_attention_dim""": self.cross_attention_dim,
						    """attention_head_dim""": 4,
						    """resnet_time_scale_shift""": """scale_shift""",
						    """class_embed_type""": None,
						}

						__UpperCamelCase				:  int								=			UNetaDConditionModel(**lowerCAmelCase  )
						return model






	@property
	def 				lowerCamelCase__    (				self		:	str  )  ->					str:







						"""simple docstring"""







						return {
						    "block_out_channels": [32, 64],
						    "down_block_types": ["DownEncoderBlock2D", "AttnDownEncoderBlock2D"],
						    "in_channels": 3,
						    "latent_channels": 4,
						    "layers_per_block": 1,
						    "norm_num_groups": 8,
						    "norm_type": "spatial",
						    "num_vq_embeddings": 12,
						    "out_channels": 3,
						    "up_block_types": [
						        "AttnUpDecoderBlock2D",
						        "UpDecoderBlock2D",
						    ],
						    "vq_embed_dim": 4,
						}






	@property
	def 				lowerCamelCase__    (				self		:	Dict  )  ->					Optional[Any]:







						"""simple docstring"""







						torch.manual_seed(0  )
						__UpperCamelCase				:  Union[str, Any]								=			VQModel(**self.dummy_movq_kwargs  )
						return model






	def 				lowerCamelCase__    (				self		:	Any  )  ->					Optional[int]:







						"""simple docstring"""







						__UpperCamelCase				:  Union[str, Any]								=			self.dummy_text_encoder
						__UpperCamelCase				:  Optional[Any]								=			self.dummy_tokenizer
						__UpperCamelCase				:  Optional[Any]								=			self.dummy_unet
						__UpperCamelCase				:  List[str]								=			self.dummy_movq

						__UpperCamelCase				:  Any								=			DDIMScheduler(
						    num_train_timesteps=1000				,    beta_schedule="""linear"""				,    beta_start=0.0_00_85				,    beta_end=0.0_12				,    clip_sample=lowerCAmelCase				,    set_alpha_to_one=lowerCAmelCase				,    steps_offset=1				,    prediction_type="""epsilon"""				,    thresholding=lowerCAmelCase				,    )

						__UpperCamelCase				:  Any								=			{
						    """text_encoder""": text_encoder,
						    """tokenizer""": tokenizer,
						    """unet""": unet,
						    """scheduler""": scheduler,
						    """movq""": movq,
						}
						return components






	def 				lowerCamelCase__    (				self		:	Optional[int]				,    lowerCAmelCase		:	Tuple				,    lowerCAmelCase		:	Dict=0  )  ->					Optional[int]:







						"""simple docstring"""







						__UpperCamelCase				:  str								=			floats_tensor((1, self.cross_attention_dim)				,    rng=random.Random(lowerCAmelCase  )  ).to(lowerCAmelCase  )
						__UpperCamelCase				:  Dict								=			floats_tensor((1, self.cross_attention_dim)				,    rng=random.Random(seed + 1  )  ).to(lowerCAmelCase  )
						if str(lowerCAmelCase  ).startswith("""mps"""  ):
											__UpperCamelCase				:  Union[str, Any]								=			torch.manual_seed(lowerCAmelCase  )
						else:
											__UpperCamelCase				:  Dict								=			torch.Generator(device=lowerCAmelCase  ).manual_seed(lowerCAmelCase  )
						__UpperCamelCase				:  int								=			{
						    """prompt""": """horse""",
						    """image_embeds""": image_embeds,
						    """negative_image_embeds""": negative_image_embeds,
						    """generator""": generator,
						    """height""": 64,
						    """width""": 64,
						    """guidance_scale""": 4.0,
						    """num_inference_steps""": 2,
						    """output_type""": """np""",
						}
						return inputs






	def 				lowerCamelCase__    (				self		:	Optional[Any]  )  ->					List[str]:







						"""simple docstring"""







						__UpperCamelCase				:  Dict								=			"""cpu"""

						__UpperCamelCase				:  Optional[Any]								=			self.get_dummy_components()

						__UpperCamelCase				:  Optional[Any]								=			self.pipeline_class(**lowerCAmelCase  )
						__UpperCamelCase				:  Tuple								=			pipe.to(lowerCAmelCase  )

						pipe.set_progress_bar_config(disable=lowerCAmelCase  )

						__UpperCamelCase				:  Dict								=			pipe(**self.get_dummy_inputs(lowerCAmelCase  )  )
						__UpperCamelCase				:  Dict								=			output.images

						__UpperCamelCase				:  Optional[Any]								=			pipe(
						    **self.get_dummy_inputs(lowerCAmelCase  )				,    return_dict=lowerCAmelCase				,    )[0]

						__UpperCamelCase				:  Dict								=			image[0, -3:, -3:, -1]
						__UpperCamelCase				:  Dict								=			image_from_tuple[0, -3:, -3:, -1]

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

						__UpperCamelCase				:  Tuple								=			np.array(
						    [0.32_86_63, 1.0, 0.23_21_68_73, 1.0, 0.92_71_75_64, 0.4_63_90_46, 0.96_89_47_77, 0.31_71_33_78, 0.6_29_39_53]  )

						assert (
						    np.abs(image_slice.flatten() - expected_slice  ).max() < 1E-2
						), F''' expected_slice {expected_slice}, but got {image_slice.flatten()}'''
						assert (
						    np.abs(image_from_tuple_slice.flatten() - expected_slice  ).max() < 1E-2
						), F''' expected_slice {expected_slice}, but got {image_from_tuple_slice.flatten()}'''






@slow
@require_torch_gpu
class       SCREAMING_SNAKE_CASE_							(					unittest.TestCase      ):



	"""simple docstring"""


	def 				lowerCamelCase__    (				self		:	List[Any]  )  ->					Optional[Any]:







						"""simple docstring"""







						super().tearDown()
						gc.collect()
						torch.cuda.empty_cache()






	def 				lowerCamelCase__    (				self		:	List[str]  )  ->					str:







						"""simple docstring"""







						__UpperCamelCase				:  List[str]								=			load_numpy(
						    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
						    """/kandinsky/kandinsky_text2img_cat_fp16.npy"""  )

						__UpperCamelCase				:  str								=			KandinskyPriorPipeline.from_pretrained(
						    """kandinsky-community/kandinsky-2-1-prior"""				,    torch_dtype=torch.floataa  )
						pipe_prior.to(lowerCAmelCase  )

						__UpperCamelCase				:  Union[str, Any]								=			KandinskyPipeline.from_pretrained("""kandinsky-community/kandinsky-2-1"""				,    torch_dtype=torch.floataa  )
						__UpperCamelCase				:  Union[str, Any]								=			pipeline.to(lowerCAmelCase  )
						pipeline.set_progress_bar_config(disable=lowerCAmelCase  )

						__UpperCamelCase				:  List[Any]								=			"""red cat, 4k photo"""

						__UpperCamelCase				:  List[str]								=			torch.Generator(device="""cuda"""  ).manual_seed(0  )
						__UpperCamelCase			, __UpperCamelCase				:  List[Any]								=			pipe_prior(
						    lowerCAmelCase				,    generator=lowerCAmelCase				,    num_inference_steps=5				,    negative_prompt=""""""				,    ).to_tuple()

						__UpperCamelCase				:  List[Any]								=			torch.Generator(device="""cuda"""  ).manual_seed(0  )
						__UpperCamelCase				:  int								=			pipeline(
						    lowerCAmelCase				,    image_embeds=lowerCAmelCase				,    negative_image_embeds=lowerCAmelCase				,    generator=lowerCAmelCase				,    num_inference_steps=100				,    output_type="""np"""				,    )

						__UpperCamelCase				:  Optional[Any]								=			output.images[0]

						assert image.shape == (512, 512, 3)

						assert_mean_pixel_difference(lowerCAmelCase				,    lowerCAmelCase  )






