

"""simple docstring"""




import logging
import os

from .state import PartialState





class    lowerCamelCase						(logging.LoggerAdapter			):

			@staticmethod
			def 					SCREAMING_SNAKE_CASE				(					__UpperCAmelCase				:						List[Any]       )   ->    Optional[Any]:
						SCREAMING_SNAKE_CASE__								=      PartialState()
						return not main_process_only or (main_process_only and state.is_main_process)





			def 					SCREAMING_SNAKE_CASE				(					self				:						Optional[Any]    ,				__UpperCAmelCase				:						Optional[Any]    ,				__UpperCAmelCase				:						Union[str, Any]    ,				*__UpperCAmelCase				:						Tuple    ,				**__UpperCAmelCase				:						Dict       )   ->    Optional[int]:
						if PartialState._shared_state == {}:
									raise RuntimeError(
									    """You must initialize the accelerate state by calling either `PartialState()` or `Accelerator()` before using the logging utility."""       )
						SCREAMING_SNAKE_CASE__								=      kwargs.pop("""main_process_only"""    ,				__UpperCAmelCase       )
						SCREAMING_SNAKE_CASE__								=      kwargs.pop("""in_order"""    ,				__UpperCAmelCase       )

						if self.isEnabledFor(__UpperCAmelCase       ):
									if self._should_log(__UpperCAmelCase       ):
												SCREAMING_SNAKE_CASE__							,		SCREAMING_SNAKE_CASE__								=      self.process(__UpperCAmelCase    ,				__UpperCAmelCase       )
												self.logger.log(__UpperCAmelCase    ,				__UpperCAmelCase    ,				*__UpperCAmelCase    ,				**__UpperCAmelCase       )

									elif in_order:
												SCREAMING_SNAKE_CASE__								=      PartialState()
												for i in range(state.num_processes       ):
															if i == state.process_index:
																		SCREAMING_SNAKE_CASE__							,		SCREAMING_SNAKE_CASE__								=      self.process(__UpperCAmelCase    ,				__UpperCAmelCase       )
																		self.logger.log(__UpperCAmelCase    ,				__UpperCAmelCase    ,				*__UpperCAmelCase    ,				**__UpperCAmelCase       )
															state.wait_for_everyone()

def 	A       (     snake_case__		,				snake_case__ = None    ):




			'''simple docstring'''


			if log_level is None:
						SCREAMING_SNAKE_CASE__								=      os.environ.get("""ACCELERATE_LOG_LEVEL"""		,				snake_case__    )
			SCREAMING_SNAKE_CASE__								=      logging.getLogger(snake_case__    )
			if log_level is not None:
						logger.setLevel(log_level.upper()    )
						logger.root.setLevel(log_level.upper()    )
			return MultiProcessAdapter(snake_case__		,				{}    )





"""simple docstring"""




# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

# rely on isort to merge the imports
from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


A_							:			Dict											= {
    "configuration_efficientnet": [
        "EFFICIENTNET_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "EfficientNetConfig",
        "EfficientNetOnnxConfig",
    ]
}

try:
						if not is_vision_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						A_							:			List[Any]											= ["EfficientNetImageProcessor"]

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						A_							:			Dict											= [
						    "EFFICIENTNET_PRETRAINED_MODEL_ARCHIVE_LIST",
						    "EfficientNetForImageClassification",
						    "EfficientNetModel",
						    "EfficientNetPreTrainedModel",
						]

if TYPE_CHECKING:
						from .configuration_efficientnet import (
						    EFFICIENTNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
						    EfficientNetConfig,
						    EfficientNetOnnxConfig,
						)

						try:
												if not is_vision_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .image_processing_efficientnet import EfficientNetImageProcessor

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_efficientnet import (
												    EFFICIENTNET_PRETRAINED_MODEL_ARCHIVE_LIST,
												    EfficientNetForImageClassification,
												    EfficientNetModel,
												    EfficientNetPreTrainedModel,
												)

else:
						import sys

						A_							:			List[Any]											= _LazyModule(__name__, globals()["__file__"], _import_structure)


