






'''simple docstring'''





import unittest

from transformers import is_torch_available, is_vision_available
from transformers.testing_utils import require_torch, require_vision, slow, torch_device


if is_torch_available():
 import torch

 from transformers import AutoModelForImageClassification

if is_vision_available():
 from transformers import AutoImageProcessor







@require_torch
@require_vision
class 	_UpperCAmelCase  (  unittest.TestCase		):




      """simple docstring"""



      @slow
      def 			snake_case_      (   self		):



          '''simple docstring'''
          lowerCAmelCase__   :Union[str, Any]      							=				AutoImageProcessor.from_pretrained("microsoft/dit-base-finetuned-rvlcdip"		)
          lowerCAmelCase__   :List[str]      							=				AutoModelForImageClassification.from_pretrained("microsoft/dit-base-finetuned-rvlcdip"		)
          model.to(_A		)

          from datasets import load_dataset

          lowerCAmelCase__   :List[str]      							=				load_dataset("nielsr/rvlcdip-demo"		)

          lowerCAmelCase__   :int      							=				dataset["train"][0]["image"].convert("RGB"		)

          lowerCAmelCase__   :List[Any]      							=				image_processor(_A    ,	return_tensors="pt"		).to(_A		)

          # forward pass
          with torch.no_grad():
              lowerCAmelCase__   :str      							=				model(**_A		)
              lowerCAmelCase__   :Any      							=				outputs.logits

          lowerCAmelCase__   :List[Any]      							=				torch.Size((1, 16)		)
          self.assertEqual(logits.shape    ,	_A		)

          lowerCAmelCase__   :Any      							=				torch.tensor(
              [-0.4158, -0.4092, -0.4347]    ,	device=_A    ,	dtype=torch.float    ,	)
          self.assertTrue(torch.allclose(logits[0, :3]    ,	_A    ,	atol=1e-4		)		)











from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

_a    :   Optional[Any]        =			[
    """python""",
    """tqdm""",
    """regex""",
    """requests""",
    """packaging""",
    """filelock""",
    """numpy""",
    """tokenizers""",
    """huggingface-hub""",
    """safetensors""",
    """accelerate""",
    """pyyaml""",
]

for pkg in pkgs_to_check_at_runtime:
 if pkg in deps:
  if pkg == "tokenizers":
   # must be loaded here, or else tqdm check may fail
   from .utils import is_tokenizers_available

   if not is_tokenizers_available():
    continue  # not required, check version only if installed
  elif pkg == "accelerate":
   # must be loaded here, or else tqdm check may fail
   from .utils import is_accelerate_available

   # Maybe switch to is_torch_available in the future here so that Accelerate is hard dep of
   # Transformers with PyTorch
   if not is_accelerate_available():
    continue  # not required, check version only if installed

  require_version_core(deps[pkg])
 else:
  raise ValueError(f"""can't find {pkg} in {deps.keys()}, check dependency_versions_table.py""")


def 				snake_case__							(							UpperCAmelCase							:  Any    ,			UpperCAmelCase							:  Union[str, Any]=None       ):
    require_version(deps[pkg]    ,			UpperCAmelCase       )



