'''simple docstring'''


import unittest

from diffusers.pipelines.pipeline_utils import is_safetensors_compatible





class       _a    (		unittest.TestCase      ):


  """simple docstring"""

  def 		lowerCamelCase__  (		self      :       int      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.bin""",
        """safety_checker/model.safetensors""",
        """vae/diffusion_pytorch_model.bin""",
        """vae/diffusion_pytorch_model.safetensors""",
        """text_encoder/pytorch_model.bin""",
        """text_encoder/model.safetensors""",
        """unet/diffusion_pytorch_model.bin""",
        """unet/diffusion_pytorch_model.safetensors""",
    ]
    self.assertTrue(is_safetensors_compatible(lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Optional[int]      ):







    '''simple docstring'''


    lowercase_     =       [
        """unet/diffusion_pytorch_model.bin""",
        """unet/diffusion_pytorch_model.safetensors""",
    ]
    self.assertTrue(is_safetensors_compatible(lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       List[str]      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.bin""",
        """safety_checker/model.safetensors""",
        """vae/diffusion_pytorch_model.bin""",
        """vae/diffusion_pytorch_model.safetensors""",
        """text_encoder/pytorch_model.bin""",
        """text_encoder/model.safetensors""",
        """unet/diffusion_pytorch_model.bin""",
        # Removed: 'unet/diffusion_pytorch_model.safetensors',
    ]
    self.assertFalse(is_safetensors_compatible(lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Tuple      ):







    '''simple docstring'''


    lowercase_     =       [
        """text_encoder/pytorch_model.bin""",
        """text_encoder/model.safetensors""",
    ]
    self.assertTrue(is_safetensors_compatible(lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Union[str, Any]      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.bin""",
        """safety_checker/model.safetensors""",
        """vae/diffusion_pytorch_model.bin""",
        """vae/diffusion_pytorch_model.safetensors""",
        """text_encoder/pytorch_model.bin""",
        # Removed: 'text_encoder/model.safetensors',
        """unet/diffusion_pytorch_model.bin""",
        """unet/diffusion_pytorch_model.safetensors""",
    ]
    self.assertFalse(is_safetensors_compatible(lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Optional[int]      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.fp16.bin""",
        """safety_checker/model.fp16.safetensors""",
        """vae/diffusion_pytorch_model.fp16.bin""",
        """vae/diffusion_pytorch_model.fp16.safetensors""",
        """text_encoder/pytorch_model.fp16.bin""",
        """text_encoder/model.fp16.safetensors""",
        """unet/diffusion_pytorch_model.fp16.bin""",
        """unet/diffusion_pytorch_model.fp16.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertTrue(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       List[Any]      ):







    '''simple docstring'''


    lowercase_     =       [
        """unet/diffusion_pytorch_model.fp16.bin""",
        """unet/diffusion_pytorch_model.fp16.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertTrue(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Optional[Any]      ):







    '''simple docstring'''


    lowercase_     =       [
        """unet/diffusion_pytorch_model.bin""",
        """unet/diffusion_pytorch_model.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertTrue(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Any      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.fp16.bin""",
        """safety_checker/model.fp16.safetensors""",
        """vae/diffusion_pytorch_model.fp16.bin""",
        """vae/diffusion_pytorch_model.fp16.safetensors""",
        """text_encoder/pytorch_model.fp16.bin""",
        """text_encoder/model.fp16.safetensors""",
        """unet/diffusion_pytorch_model.fp16.bin""",
        # Removed: 'unet/diffusion_pytorch_model.fp16.safetensors',
    ]
    lowercase_     =       """fp16"""
    self.assertFalse(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Any      ):







    '''simple docstring'''


    lowercase_     =       [
        """text_encoder/pytorch_model.fp16.bin""",
        """text_encoder/model.fp16.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertTrue(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )




  def 		lowerCamelCase__  (		self      :       Union[str, Any]      ):







    '''simple docstring'''


    lowercase_     =       [
        """text_encoder/pytorch_model.bin""",
        """text_encoder/model.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertTrue(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )





  def 		lowerCamelCase__  (		self      :       Optional[Any]      ):







    '''simple docstring'''


    lowercase_     =       [
        """safety_checker/pytorch_model.fp16.bin""",
        """safety_checker/model.fp16.safetensors""",
        """vae/diffusion_pytorch_model.fp16.bin""",
        """vae/diffusion_pytorch_model.fp16.safetensors""",
        """text_encoder/pytorch_model.fp16.bin""",
        # 'text_encoder/model.fp16.safetensors',
        """unet/diffusion_pytorch_model.fp16.bin""",
        """unet/diffusion_pytorch_model.fp16.safetensors""",
    ]
    lowercase_     =       """fp16"""
    self.assertFalse(is_safetensors_compatible(lowercase_   ,				variant=lowercase_      )      )


'''simple docstring'''


from dataclasses import dataclass, field
from typing import Tuple

from ..utils import cached_property, is_torch_available, is_torch_tpu_available, logging, requires_backends
from .benchmark_args_utils import BenchmarkArguments


if is_torch_available():
       import torch

if is_torch_tpu_available(check_device=False):
       import torch_xla.core.xla_model as xm


__snake_case						  =		logging.get_logger(__name__)





@dataclass
class       _a    (		__a      ):


  """simple docstring"""

  A_    							=						[
      '''no_inference''',
      '''no_cuda''',
      '''no_tpu''',
      '''no_speed''',
      '''no_memory''',
      '''no_env_print''',
      '''no_multi_process''',
  ]




  def __init__(		self      :       int   ,				**lowercase_      :       int      ):







    '''simple docstring'''


    for deprecated_arg in self.deprecated_args:
      if deprecated_arg in kwargs:
        lowercase_     =       deprecated_arg[3:]
        setattr(self   ,				lowercase_   ,				not kwargs.pop(lowercase_      )      )
        logger.warning(
            F"""{deprecated_arg} is depreciated. Please use --no_{positive_arg} or"""
            F""" {positive_arg}={kwargs[positive_arg]}"""      )

    lowercase_     =       kwargs.pop("""torchscript"""   ,				self.torchscript      )
    lowercase_     =       kwargs.pop("""torch_xla_tpu_print_metrics"""   ,				self.torch_xla_tpu_print_metrics      )
    lowercase_     =       kwargs.pop("""fp16_opt_level"""   ,				self.fpaa_opt_level      )
    super().__init__(**lowercase_      )

  A_    							=						field(default=__a ,				metadata={'''help''': '''Trace the models using torchscript'''}      )
  A_    							=						field(default=__a ,				metadata={'''help''': '''Print Xla/PyTorch tpu metrics'''}      )
  A_    							=						field(
      default='''O1''' ,				metadata={
          '''help''': (
              '''For fp16: Apex AMP optimization level selected in [\'O0\', \'O1\', \'O2\', and \'O3\']. '''
              '''See details at https://nvidia.github.io/apex/amp.html'''
          )
      } ,				)




  @cached_property
  def 		lowerCamelCase__  (		self      :       Dict      ):







    '''simple docstring'''


    requires_backends(self   ,				["""torch"""]      )
    logger.info("""PyTorch: setting up devices"""      )
    if not self.cuda:
      lowercase_     =       torch.device("""cpu"""      )
      lowercase_     =       0
    elif is_torch_tpu_available():
      lowercase_     =       xm.xla_device()
      lowercase_     =       0
    else:
      lowercase_     =       torch.device("""cuda""" if torch.cuda.is_available() else """cpu"""      )
      lowercase_     =       torch.cuda.device_count()
    return device, n_gpu




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







    '''simple docstring'''


    return is_torch_tpu_available() and self.tpu




  @property
  def 		lowerCamelCase__  (		self      :       Tuple      ):







    '''simple docstring'''


    requires_backends(self   ,				["""torch"""]      )
    # TODO(PVP): currently only single GPU is supported
    return torch.cuda.current_device()




  @property
  def 		lowerCamelCase__  (		self      :       Dict      ):







    '''simple docstring'''


    requires_backends(self   ,				["""torch"""]      )
    return self._setup_devices[0]




  @property
  def 		lowerCamelCase__  (		self      :       Any      ):







    '''simple docstring'''


    requires_backends(self   ,				["""torch"""]      )
    return self._setup_devices[1]





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







    '''simple docstring'''


    return self.n_gpu > 0

