from ..utils import DummyObject, requires_backends


class _lowercase					(       metaclass=_UpperCAmelCase						):





							"""simple docstring"""




							lowerCAmelCase__       =					['torch', 'transformers', 'k_diffusion']



							def __init__(    self     ,   *UpperCAmelCase     ,   **UpperCAmelCase  ):







														'''simple docstring'''






														requires_backends(self     ,   ["""torch""", """transformers""", """k_diffusion"""]  )



							@classmethod
							def     _UpperCAmelCase       (    cls     ,   *UpperCAmelCase     ,   **UpperCAmelCase  ):







														'''simple docstring'''






														requires_backends(cls     ,   ["""torch""", """transformers""", """k_diffusion"""]  )



							@classmethod
							def     _UpperCAmelCase       (    cls     ,   *UpperCAmelCase     ,   **UpperCAmelCase  ):







														'''simple docstring'''






														requires_backends(cls     ,   ["""torch""", """transformers""", """k_diffusion"""]  )



from ctypes import c_float, sizeof
from enum import Enum
from typing import TYPE_CHECKING, Optional, Union


if TYPE_CHECKING:
				from .. import AutoFeatureExtractor, AutoProcessor, AutoTokenizer  # tests_ignore


class _lowercase					(       _UpperCAmelCase						):





							"""simple docstring"""




							lowerCAmelCase__       =					c_float



							@property
							def     _UpperCAmelCase       (    self  ):







														'''simple docstring'''






														return sizeof(self.value  )






def 					__lowerCAmelCase			(  _A ,_A ,_A = 0					):



							"""simple docstring"""


							if dimension <= 0:
														_lowercase				=	fixed_dimension

							dimension -= num_token_to_add
							return dimension


def 					__lowerCAmelCase			(  _A ,_A					):



							"""simple docstring"""


							return num_parameters * dtype.size







def 					__lowerCAmelCase			(  _A					):



							"""simple docstring"""


							from .. import AutoFeatureExtractor, AutoProcessor, AutoTokenizer  # tests_ignore

							try:
														return AutoProcessor.from_pretrained(_A					)
							except (ValueError, OSError, KeyError):
														_lowercase				,       _lowercase				=	None, None
														try:
																					_lowercase				=	AutoTokenizer.from_pretrained(_A					)
														except (OSError, KeyError):
																					pass
														try:
																					_lowercase				=	AutoFeatureExtractor.from_pretrained(_A					)
														except (OSError, KeyError):
																					pass

														if tokenizer is not None and feature_extractor is not None:
																					raise ValueError(
																					    f'''Couldn\'t auto-detect preprocessor for {model_name}. Found both a tokenizer and a feature extractor.'''					)
														elif tokenizer is None and feature_extractor is None:
																					return None
														elif tokenizer is not None:
																					return tokenizer
														else:
																					return feature_extractor


