from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				import os as original_os
				from os import path as original_path
				from os import rename as original_rename
				from os.path import dirname as original_dirname
				from os.path import join as original_join

				assert _test_patching.os is original_os
				assert _test_patching.path is original_path
				assert _test_patching.join is original_join

				assert _test_patching.renamed_os is original_os
				assert _test_patching.renamed_path is original_path
				assert _test_patching.renamed_join is original_join

				__lowercase 			=							'''__test_patch_submodule_mock__'''
				with patch_submodule(_test_patching							,			'''os.path.join'''							,			lowercase							):
								# Every way to access os.path.join must be patched, and the rest must stay untouched

								# check os.path.join
								assert isinstance(_test_patching.os							,			_PatchedModuleObj							)
								assert isinstance(_test_patching.os.path							,			_PatchedModuleObj							)
								assert _test_patching.os.path.join is mock

								# check path.join
								assert isinstance(_test_patching.path							,			_PatchedModuleObj							)
								assert _test_patching.path.join is mock

								# check join
								assert _test_patching.join is mock

								# check that the other attributes are untouched
								assert _test_patching.os.rename is original_rename
								assert _test_patching.path.dirname is original_dirname
								assert _test_patching.os.path.dirname is original_dirname

								# Even renamed modules or objects must be patched

								# check renamed_os.path.join
								assert isinstance(_test_patching.renamed_os							,			_PatchedModuleObj							)
								assert isinstance(_test_patching.renamed_os.path							,			_PatchedModuleObj							)
								assert _test_patching.renamed_os.path.join is mock

								# check renamed_path.join
								assert isinstance(_test_patching.renamed_path							,			_PatchedModuleObj							)
								assert _test_patching.renamed_path.join is mock

								# check renamed_join
								assert _test_patching.renamed_join is mock

								# check that the other attributes are untouched
								assert _test_patching.renamed_os.rename is original_rename
								assert _test_patching.renamed_path.dirname is original_dirname
								assert _test_patching.renamed_os.path.dirname is original_dirname

				# check that everthing is back to normal when the patch is over

				assert _test_patching.os is original_os
				assert _test_patching.path is original_path
				assert _test_patching.join is original_join

				assert _test_patching.renamed_os is original_os
				assert _test_patching.renamed_path is original_path
				assert _test_patching.renamed_join is original_join





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				assert _test_patching.open is open

				__lowercase 			=							'''__test_patch_submodule_builtin_mock__'''
				# _test_patching has "open" in its globals
				assert _test_patching.open is open
				with patch_submodule(_test_patching							,			'''open'''							,			lowercase							):
								assert _test_patching.open is mock

				# check that everthing is back to normal when the patch is over

				assert _test_patching.open is open





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				__lowercase 			=							'''__test_patch_submodule_missing_mock__'''
				with patch_submodule(_test_patching							,			'''pandas.read_csv'''							,			lowercase							):
								pass





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				__lowercase 			=							'''__test_patch_submodule_missing_builtin_mock__'''
				# _test_patching doesn't have "len" in its globals
				assert getattr(_test_patching							,			'''len'''							,			lowercase							) is None
				with patch_submodule(_test_patching							,			'''len'''							,			lowercase							):
								assert _test_patching.len is mock
				assert _test_patching.len is len





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				__lowercase 			=							'''__test_patch_submodule_start_and_stop_mock__'''
				__lowercase 			=							patch_submodule(_test_patching							,			'''open'''							,			lowercase							)
				assert _test_patching.open is open
				patch.start()
				assert _test_patching.open is mock
				patch.stop()
				assert _test_patching.open is open





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				from os import rename as original_rename
				from os.path import dirname as original_dirname
				from os.path import join as original_join

				__lowercase 			=							'''__test_patch_submodule_successive_join__'''
				__lowercase 			=							'''__test_patch_submodule_successive_dirname__'''
				__lowercase 			=							'''__test_patch_submodule_successive_rename__'''
				assert _test_patching.os.path.join is original_join
				assert _test_patching.os.path.dirname is original_dirname
				assert _test_patching.os.rename is original_rename

				with patch_submodule(_test_patching							,			'''os.path.join'''							,			lowercase							):
								with patch_submodule(_test_patching							,			'''os.rename'''							,			lowercase							):
												with patch_submodule(_test_patching							,			'''os.path.dirname'''							,			lowercase							):
																assert _test_patching.os.path.join is mock_join
																assert _test_patching.os.path.dirname is mock_dirname
																assert _test_patching.os.rename is mock_rename

    # try another order
				with patch_submodule(_test_patching							,			'''os.rename'''							,			lowercase							):
								with patch_submodule(_test_patching							,			'''os.path.join'''							,			lowercase							):
												with patch_submodule(_test_patching							,			'''os.path.dirname'''							,			lowercase							):
																assert _test_patching.os.path.join is mock_join
																assert _test_patching.os.path.dirname is mock_dirname
																assert _test_patching.os.rename is mock_rename

				assert _test_patching.os.path.join is original_join
				assert _test_patching.os.path.dirname is original_dirname
				assert _test_patching.os.rename is original_rename





def 				UpperCAmelCase						(    ):







				"""simple docstring"""



				__lowercase 			=							'''__test_patch_submodule_doesnt_exist_mock__'''
				with patch_submodule(_test_patching							,			'''__module_that_doesn_exist__.__attribute_that_doesn_exist__'''							,			lowercase							):
								pass
				with patch_submodule(_test_patching							,			'''os.__attribute_that_doesn_exist__'''							,			lowercase							):
								pass
import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging
from ..auto import CONFIG_MAPPING


__a  :     int       =  logging.get_logger(__name__)

__a  :     str       =  {
    """ut/deta""": """https://huggingface.co/ut/deta/resolve/main/config.json""",
}




class    _UpperCamelCase      (						_UpperCAmelCase ):


			"""simple docstring"""






			__a  : Optional[int]			 =						'''deta'''
			__a  : Optional[int]			 =						{
			    '''hidden_size''': '''d_model''',
			    '''num_attention_heads''': '''encoder_attention_heads''',
			}





			def __init__(   self      ,   lowerCAmelCase__=None      ,   lowerCAmelCase__=9_00      ,   lowerCAmelCase__=20_48      ,   lowerCAmelCase__=6      ,   lowerCAmelCase__=20_48      ,   lowerCAmelCase__=8      ,   lowerCAmelCase__=6      ,   lowerCAmelCase__=10_24      ,   lowerCAmelCase__=8      ,   lowerCAmelCase__=0.0      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__="relu"      ,   lowerCAmelCase__=2_56      ,   lowerCAmelCase__=0.1      ,   lowerCAmelCase__=0.0      ,   lowerCAmelCase__=0.0      ,   lowerCAmelCase__=0.02      ,   lowerCAmelCase__=1.0      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__=False      ,   lowerCAmelCase__="sine"      ,   lowerCAmelCase__=5      ,   lowerCAmelCase__=4      ,   lowerCAmelCase__=4      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__=3_00      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__=1      ,   lowerCAmelCase__=5      ,   lowerCAmelCase__=2      ,   lowerCAmelCase__=1      ,   lowerCAmelCase__=1      ,   lowerCAmelCase__=5      ,   lowerCAmelCase__=2      ,   lowerCAmelCase__=0.1      ,   lowerCAmelCase__=0.25      ,   **lowerCAmelCase__      ,   )     ->					List[Any]:

							'''simple docstring'''


							if backbone_config is None:
											logger.info('''`backbone_config` is `None`. Initializing the config with the default `ResNet` backbone.'''						)
											__lowercase 			=							CONFIG_MAPPING['''resnet'''](out_features=['''stage2''', '''stage3''', '''stage4''']						)
							else:
											if isinstance(lowerCAmelCase__      ,   lowerCAmelCase__						):
															__lowercase 			=							backbone_config.pop('''model_type'''						)
															__lowercase 			=							CONFIG_MAPPING[backbone_model_type]
															__lowercase 			=							config_class.from_dict(lowerCAmelCase__						)

							__lowercase 			=							backbone_config
							__lowercase 			=							num_queries
							__lowercase 			=							max_position_embeddings
							__lowercase 			=							d_model
							__lowercase 			=							encoder_ffn_dim
							__lowercase 			=							encoder_layers
							__lowercase 			=							encoder_attention_heads
							__lowercase 			=							decoder_ffn_dim
							__lowercase 			=							decoder_layers
							__lowercase 			=							decoder_attention_heads
							__lowercase 			=							dropout
							__lowercase 			=							attention_dropout
							__lowercase 			=							activation_dropout
							__lowercase 			=							activation_function
							__lowercase 			=							init_std
							__lowercase 			=							init_xavier_std
							__lowercase 			=							encoder_layerdrop
							__lowercase 			=							auxiliary_loss
							__lowercase 			=							position_embedding_type
							# deformable attributes
							__lowercase 			=							num_feature_levels
							__lowercase 			=							encoder_n_points
							__lowercase 			=							decoder_n_points
							__lowercase 			=							two_stage
							__lowercase 			=							two_stage_num_proposals
							__lowercase 			=							with_box_refine
							__lowercase 			=							assign_first_stage
							if two_stage is True and with_box_refine is False:
											raise ValueError('''If two_stage is True, with_box_refine must be True.'''						)
							# Hungarian matcher
							__lowercase 			=							class_cost
							__lowercase 			=							bbox_cost
							__lowercase 			=							giou_cost
							# Loss coefficients
							__lowercase 			=							mask_loss_coefficient
							__lowercase 			=							dice_loss_coefficient
							__lowercase 			=							bbox_loss_coefficient
							__lowercase 			=							giou_loss_coefficient
							__lowercase 			=							eos_coefficient
							__lowercase 			=							focal_alpha
							super().__init__(is_encoder_decoder=lowerCAmelCase__      ,   **lowerCAmelCase__						)





			@property
			def        _SCREAMING_SNAKE_CASE			(   self						)     ->					int:

							'''simple docstring'''


							return self.encoder_attention_heads





			@property
			def        _SCREAMING_SNAKE_CASE			(   self						)     ->					int:

							'''simple docstring'''


							return self.d_model





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

							'''simple docstring'''


							__lowercase 			=							copy.deepcopy(self.__dict__						)
							__lowercase 			=							self.backbone_config.to_dict()
							__lowercase 			=							self.__class__.model_type
							return output