





"""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       a__					(					_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


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


def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		for folder, directories, fnames in os.walk(_SCREAMING_SNAKE_CASE    ):
				# 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(_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE    )  ,	_SCREAMING_SNAKE_CASE  ,	pattern="examples"    )


def       a__					(					_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE=False    ):




		"""simple docstring"""


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


def       a__					(					):




		"""simple docstring"""


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

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

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

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


def       a__					(					):




		"""simple docstring"""


		with open(REPLACE_FILES["init"]  ,	"r"    ) as f:
				UpperCamelCase   =	f.read()
		UpperCamelCase   =	REPLACE_PATTERNS["init"][0].search(_SCREAMING_SNAKE_CASE    ).groups()[0]
		return packaging.version.parse(_SCREAMING_SNAKE_CASE    )


def       a__					(					_SCREAMING_SNAKE_CASE=False    ):




		"""simple docstring"""


		UpperCamelCase   =	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   =	default_version.base_version
		elif patch:
				UpperCamelCase   =	F"{default_version.major}.{default_version.minor}.{default_version.micro + 1}"
		else:
				UpperCamelCase   =	F"{default_version.major}.{default_version.minor + 1}.0"

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

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


def       a__					(					):




		"""simple docstring"""


		UpperCamelCase   =	get_version()
		UpperCamelCase   =	F"{current_version.major}.{current_version.minor + 1}.0.dev0"
		UpperCamelCase   =	current_version.base_version

		# Check with the user we got that right.
		UpperCamelCase   =	input(F"Which version are we developing now? [{dev_version}]"    )
		if len(_SCREAMING_SNAKE_CASE    ) == 0:
				UpperCamelCase   =	dev_version

		print(F"Updating version to {version}."    )
		global_version_update(_SCREAMING_SNAKE_CASE    )
		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()













"""simple docstring"""





def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		UpperCamelCase   =	0
		for ch in input_str:
				UpperCamelCase   =	ord(_SCREAMING_SNAKE_CASE    )
				UpperCamelCase   =	pow(2  ,	_SCREAMING_SNAKE_CASE    )

				# If we already turned on bit for current character's unicode
				if bitmap >> ch_unicode & 1 == 1:
						return False
				bitmap |= ch_bit_index_on
		return True


if __name__ == "__main__":
						import doctest

						doctest.testmod()






