






import unittest

import numpy as np

from transformers.file_utils import is_torch_available, is_vision_available
from transformers.testing_utils import require_torch, require_vision

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
			import torch

if is_vision_available():
			from PIL import Image

			from transformers import DPTImageProcessor




class 							snake_case_       (    unittest.TestCase      ):

						"""simple docstring"""



						def __init__(self:					Tuple ,					__UpperCAmelCase:					List[Any] ,					__UpperCAmelCase:					List[Any]=7 ,					__UpperCAmelCase:					Dict=3 ,					__UpperCAmelCase:					Dict=18 ,					__UpperCAmelCase:					Tuple=30 ,					__UpperCAmelCase:					Tuple=400 ,					__UpperCAmelCase:					Dict=True ,					__UpperCAmelCase:					Optional[int]=None ,					__UpperCAmelCase:					Union[str, Any]=True ,					__UpperCAmelCase:					Optional[Any]=[0.5, 0.5, 0.5] ,					__UpperCAmelCase:					Union[str, Any]=[0.5, 0.5, 0.5] ,					)    ->     Dict:




											'''simple docstring'''



											__a					:						Optional[Any]      =					size if size is not None else {"height": 18, "width": 18}
											__a					:						Tuple      =					parent
											__a					:						List[str]      =					batch_size
											__a					:						Optional[int]      =					num_channels
											__a					:						Optional[int]      =					image_size
											__a					:						Optional[Any]      =					min_resolution
											__a					:						int      =					max_resolution
											__a					:						Any      =					do_resize
											__a					:						Any      =					size
											__a					:						Any      =					do_normalize
											__a					:						Optional[int]      =					image_mean
											__a					:						List[Any]      =					image_std



						def        UpperCAmelCase__					(self:					Optional[int]   )    ->     Tuple:




											'''simple docstring'''



											return {
											    "image_mean": self.image_mean,
											    "image_std": self.image_std,
											    "do_normalize": self.do_normalize,
											    "do_resize": self.do_resize,
											    "size": self.size,
											}




@require_torch
@require_vision
class 							snake_case_       (    _UpperCamelCase		,							unittest.TestCase      ):

						"""simple docstring"""



						snake_case__        =      DPTImageProcessor if is_vision_available() else None



						def        UpperCAmelCase__					(self:					List[Any]   )    ->     Any:




											'''simple docstring'''



											__a					:						Optional[Any]      =					DPTImageProcessingTester(self   )



						@property
						def        UpperCAmelCase__					(self:					str   )    ->     Any:




											'''simple docstring'''



											return self.image_processor_tester.prepare_image_processor_dict()



						def        UpperCAmelCase__					(self:					Optional[int]   )    ->     Dict:




											'''simple docstring'''



											__a					:						Dict      =					self.image_processing_class(**self.image_processor_dict   )
											self.assertTrue(hasattr(__a ,					"image_mean"   )   )
											self.assertTrue(hasattr(__a ,					"image_std"   )   )
											self.assertTrue(hasattr(__a ,					"do_normalize"   )   )
											self.assertTrue(hasattr(__a ,					"do_resize"   )   )
											self.assertTrue(hasattr(__a ,					"size"   )   )



						def        UpperCAmelCase__					(self:					Optional[int]   )    ->     Dict:




											'''simple docstring'''



											__a					:						Dict      =					self.image_processing_class.from_dict(self.image_processor_dict   )
											self.assertEqual(image_processor.size ,					{"height": 18, "width": 18}   )

											__a					:						Optional[int]      =					self.image_processing_class.from_dict(self.image_processor_dict ,					size=42   )
											self.assertEqual(image_processor.size ,					{"height": 42, "width": 42}   )



						def        UpperCAmelCase__					(self:					Optional[Any]   )    ->     List[Any]:




											'''simple docstring'''



											__a					:						List[Any]      =					self.image_processing_class(**self.image_processor_dict   )
											# create random PIL images
											__a					:						Union[str, Any]      =					prepare_image_inputs(self.image_processor_tester ,					equal_resolution=__a   )
											for image in image_inputs:
																self.assertIsInstance(__a ,					Image.Image   )

											# Test not batched input
											__a					:						Tuple      =					image_processing(image_inputs[0] ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)

											# Test batched
											__a					:						Optional[Any]      =					image_processing(__a ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)



						def        UpperCAmelCase__					(self:					Optional[Any]   )    ->     int:




											'''simple docstring'''



											__a					:						Tuple      =					self.image_processing_class(**self.image_processor_dict   )
											# create random numpy tensors
											__a					:						str      =					prepare_image_inputs(self.image_processor_tester ,					equal_resolution=__a ,					numpify=__a   )
											for image in image_inputs:
																self.assertIsInstance(__a ,					np.ndarray   )

											# Test not batched input
											__a					:						int      =					image_processing(image_inputs[0] ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)

											# Test batched
											__a					:						Dict      =					image_processing(__a ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)



						def        UpperCAmelCase__					(self:					Optional[Any]   )    ->     Any:




											'''simple docstring'''



											__a					:						List[str]      =					self.image_processing_class(**self.image_processor_dict   )
											# create random PyTorch tensors
											__a					:						Any      =					prepare_image_inputs(self.image_processor_tester ,					equal_resolution=__a ,					torchify=__a   )
											for image in image_inputs:
																self.assertIsInstance(__a ,					torch.Tensor   )

											# Test not batched input
											__a					:						Dict      =					image_processing(image_inputs[0] ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        1,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)

											# Test batched
											__a					:						Any      =					image_processing(__a ,					return_tensors="pt"   ).pixel_values
											self.assertEqual(
											    encoded_images.shape ,					(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    ) ,					)












"""simple docstring"""


import argparse
import os
import re

import packaging.version


lowerCamelCase__						= "examples/"
lowerCamelCase__						= {
    "examples": (re.compile(R"^check_min_version\(\"[^\"]+\"\)\s*$", re.MULTILINE), "check_min_version(\"VERSION\")\n"),
    "init": (re.compile(R"^__version__\s+=\s+\"([^\"]+)\"\s*$", re.MULTILINE), "__version__ = \"VERSION\"\n"),
    "setup": (re.compile(R"^(\s*)version\s*=\s*\"[^\"]+\",", re.MULTILINE), R"\1version=\"VERSION\","),
    "doc": (re.compile(R"^(\s*)release\s*=\s*\"[^\"]+\"$", re.MULTILINE), "release = \"VERSION\"\n"),
}
lowerCamelCase__						= {
    "init": "src/transformers/__init__.py",
    "setup": "setup.py",
}
lowerCamelCase__						= "README.md"




def        lowercase__     (       lowercase_		,lowercase_		,lowercase_      )       ->		Dict:




      """simple docstring"""

      with open(lowercase_		,"r"		,encoding="utf-8"		,newline="\n"      ) as f:
            _UpperCamelCase   :						Any    =							f.read()
      _UpperCamelCase,	_UpperCamelCase   :						str    =							REPLACE_PATTERNS[pattern]
      _UpperCamelCase   :						List[str]    =							replace.replace("VERSION"		,lowercase_      )
      _UpperCamelCase   :						Any    =							re_pattern.sub(lowercase_		,lowercase_      )
      with open(lowercase_		,"w"		,encoding="utf-8"		,newline="\n"      ) as f:
            f.write(lowercase_      )




def        lowercase__     (       lowercase_      )       ->		str:




      """simple docstring"""

      for folder, directories, fnames in os.walk(lowercase_      ):
            # Removing some of the folders with non-actively maintained examples from the walk
            if "research_projects" in directories:
                  directories.remove("research_projects"      )
            if "legacy" in directories:
                  directories.remove("legacy"      )
            for fname in fnames:
                  if fname.endswith(".py"      ):
                        update_version_in_file(os.path.join(lowercase_		,lowercase_      )		,lowercase_		,pattern="examples"      )




def        lowercase__     (       lowercase_		,lowercase_=False      )       ->		Any:




      """simple docstring"""

      for pattern, fname in REPLACE_FILES.items():
            update_version_in_file(lowercase_		,lowercase_		,lowercase_      )
      if not patch:
            update_version_in_examples(lowercase_      )




def        lowercase__     (       )       ->		List[str]:




      """simple docstring"""

      _UpperCamelCase   :						int    =							"🤗 Transformers currently provides the following architectures"
      _UpperCamelCase   :						int    =							"1. Want to contribute a new model?"
      with open(lowercase_		,"r"		,encoding="utf-8"		,newline="\n"      ) as f:
            _UpperCamelCase   :						int    =							f.readlines()

      # Find the start of the list.
      _UpperCamelCase   :						Optional[Any]    =							0
      while not lines[start_index].startswith(_start_prompt      ):
            start_index += 1
      start_index += 1

      _UpperCamelCase   :						Any    =							start_index
      # Update the lines in the model list.
      while not lines[index].startswith(_end_prompt      ):
            if lines[index].startswith("1."      ):
                  _UpperCamelCase   :						Dict    =							lines[index].replace(
                      "https://huggingface.co/docs/transformers/main/model_doc"		,"https://huggingface.co/docs/transformers/model_doc"		,)
            index += 1

      with open(lowercase_		,"w"		,encoding="utf-8"		,newline="\n"      ) as f:
            f.writelines(lowercase_      )




def        lowercase__     (       )       ->		List[str]:




      """simple docstring"""

      with open(REPLACE_FILES["init"]		,"r"      ) as f:
            _UpperCamelCase   :						Dict    =							f.read()
      _UpperCamelCase   :						List[str]    =							REPLACE_PATTERNS["init"][0].search(lowercase_      ).groups()[0]
      return packaging.version.parse(lowercase_      )




def        lowercase__     (       lowercase_=False      )       ->		Any:




      """simple docstring"""

      _UpperCamelCase   :						Tuple    =							get_version()
      if patch and default_version.is_devrelease:
            raise ValueError("Can't create a patch version from the dev branch, checkout a released version!"      )
      if default_version.is_devrelease:
            _UpperCamelCase   :						Union[str, Any]    =							default_version.base_version
      elif patch:
            _UpperCamelCase   :						Union[str, Any]    =							F'''{default_version.major}.{default_version.minor}.{default_version.micro + 1}'''
      else:
            _UpperCamelCase   :						Any    =							F'''{default_version.major}.{default_version.minor + 1}.0'''

      # Now let's ask nicely if that's the right one.
      _UpperCamelCase   :						List[str]    =							input(F'''Which version are you releasing? [{default_version}]'''      )
      if len(lowercase_      ) == 0:
            _UpperCamelCase   :						Any    =							default_version

      print(F'''Updating version to {version}.'''      )
      global_version_update(lowercase_		,patch=lowercase_      )
      if not patch:
            print("Cleaning main README, don't forget to run `make fix-copies`."      )
            clean_main_ref_in_model_list()




def        lowercase__     (       )       ->		List[Any]:




      """simple docstring"""

      _UpperCamelCase   :						List[Any]    =							get_version()
      _UpperCamelCase   :						List[Any]    =							F'''{current_version.major}.{current_version.minor + 1}.0.dev0'''
      _UpperCamelCase   :						Tuple    =							current_version.base_version

      # Check with the user we got that right.
      _UpperCamelCase   :						Union[str, Any]    =							input(F'''Which version are we developing now? [{dev_version}]'''      )
      if len(lowercase_      ) == 0:
            _UpperCamelCase   :						Optional[int]    =							dev_version

      print(F'''Updating version to {version}.'''      )
      global_version_update(lowercase_      )
      print("Cleaning main README, don't forget to run `make fix-copies`."      )
      clean_main_ref_in_model_list()


if __name__ == "__main__":
  lowerCamelCase__						= argparse.ArgumentParser()
  parser.add_argument("--post_release", action="store_true", help="Whether this is pre or post release.")
  parser.add_argument("--patch", action="store_true", help="Whether or not this is a patch release.")
  lowerCamelCase__						= parser.parse_args()
  if not args.post_release:
    pre_release_work(patch=args.patch)
  elif args.patch:
    print("Nothing to do after a patch :-)")
  else:
    post_release_work()
