






'''simple docstring'''





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 		SCREAMING_SNAKE_CASE__   (     lowercase_    ):
		_UpperCAmelCase         =c_float



		@property
		def _lowerCAmelCase     (    self:    Union[str, Any])  ->int:






								'''simple docstring'''


								return sizeof(self.value)





def 			__UpperCAmelCase				(lowercase__	,lowercase__	,lowercase__ = 0				)		->				int:

						'''simple docstring'''


						if dimension <= 0:
												a_				     =   fixed_dimension

						dimension -= num_token_to_add
						return dimension



def 			__UpperCAmelCase				(lowercase__	,lowercase__				)		->				int:

						'''simple docstring'''


						return num_parameters * dtype.size



def 			__UpperCAmelCase				(lowercase__				)		->				Optional[Union["AutoTokenizer", "AutoFeatureExtractor", "AutoProcessor"]]:

						'''simple docstring'''


						from .. import AutoFeatureExtractor, AutoProcessor, AutoTokenizer  # tests_ignore

						try:
												return AutoProcessor.from_pretrained(lowercase__				)
						except (ValueError, OSError, KeyError):
												a_     ,       a_				     =   None, None
												try:
																		a_				     =   AutoTokenizer.from_pretrained(lowercase__				)
												except (OSError, KeyError):
																		pass
												try:
																		a_				     =   AutoFeatureExtractor.from_pretrained(lowercase__				)
												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











'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


a_      = {
    'configuration_segformer': ['SEGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP', 'SegformerConfig', 'SegformerOnnxConfig']
}

try:
							if not is_vision_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							a_      = ['SegformerFeatureExtractor']
							a_      = ['SegformerImageProcessor']

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							a_      = [
							    'SEGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
							    'SegformerDecodeHead',
							    'SegformerForImageClassification',
							    'SegformerForSemanticSegmentation',
							    'SegformerLayer',
							    'SegformerModel',
							    'SegformerPreTrainedModel',
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							a_      = [
							    'TF_SEGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
							    'TFSegformerDecodeHead',
							    'TFSegformerForImageClassification',
							    'TFSegformerForSemanticSegmentation',
							    'TFSegformerModel',
							    'TFSegformerPreTrainedModel',
							]


if TYPE_CHECKING:
							from .configuration_segformer import SEGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, SegformerConfig, SegformerOnnxConfig

							try:
														if not is_vision_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .feature_extraction_segformer import SegformerFeatureExtractor
														from .image_processing_segformer import SegformerImageProcessor

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_segformer import (
														    SEGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
														    SegformerDecodeHead,
														    SegformerForImageClassification,
														    SegformerForSemanticSegmentation,
														    SegformerLayer,
														    SegformerModel,
														    SegformerPreTrainedModel,
														)
							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_segformer import (
														    TF_SEGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFSegformerDecodeHead,
														    TFSegformerForImageClassification,
														    TFSegformerForSemanticSegmentation,
														    TFSegformerModel,
														    TFSegformerPreTrainedModel,
														)

else:
							import sys

							a_      = _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)



