
"""simple docstring"""


def       _snake_case				(		snake_case__   :     Tuple	,      snake_case__   :     List[Any]     ):
	A						   =   0
	A						   =   len(snake_case__     ) - 1

	while left <= right:
		# avoid divided by 0 during interpolation
		if sorted_collection[left] == sorted_collection[right]:
			if sorted_collection[left] == item:
				return left
			else:
				return None

		A						   =   left + ((item - sorted_collection[left]) * (right - left)) // (
		    sorted_collection[right] - sorted_collection[left]
		)

		# out of range check
		if point < 0 or point >= len(snake_case__     ):
			return None

		A						   =   sorted_collection[point]
		if current_item == item:
			return point
		else:
			if point < left:
				A						   =   left
				A						   =   point
			elif point > right:
				A						   =   right
				A						   =   point
			else:
				if item < current_item:
					A						   =   point - 1
				else:
					A						   =   point + 1
	return None






def       _snake_case				(		snake_case__   :     Optional[Any]	,      snake_case__   :     int	,      snake_case__   :     Union[str, Any]	,      snake_case__   :     List[Any]     ):

	# avoid divided by 0 during interpolation
	if sorted_collection[left] == sorted_collection[right]:
		if sorted_collection[left] == item:
			return left
		else:
			return None

	A						   =   left + ((item - sorted_collection[left]) * (right - left)) // (
	    sorted_collection[right] - sorted_collection[left]
	)

	# out of range check
	if point < 0 or point >= len(snake_case__     ):
		return None

	if sorted_collection[point] == item:
		return point
	elif point < left:
		return interpolation_search_by_recursion(snake_case__	,      snake_case__	,      snake_case__	,      snake_case__     )
	elif point > right:
		return interpolation_search_by_recursion(snake_case__	,      snake_case__	,      snake_case__	,      snake_case__     )
	else:
		if sorted_collection[point] > item:
			return interpolation_search_by_recursion(
			    snake_case__	,      snake_case__	,      snake_case__	,      point - 1     )
		else:
			return interpolation_search_by_recursion(
			    snake_case__	,      snake_case__	,      point + 1	,      snake_case__     )






def       _snake_case				(		snake_case__   :     Dict     ):
	if collection != sorted(snake_case__     ):
		raise ValueError('Collection must be ascending sorted'     )
	return True


if __name__ == "__main__":
		import sys
		_lowercase							   =				0
		if debug == 1:
				_lowercase							   =				[10, 30, 40, 45, 50, 66, 77, 93]
				try:
						__assert_sorted(collection)
				except ValueError:
						sys.exit('''Sequence must be ascending sorted to apply interpolation search''')
				_lowercase							   =				67

		_lowercase							   =				interpolation_search(collection, target)
		if result is not None:
				print(F"""{target} found at positions: {result}""")
		else:
				print('''Not found''')

"""simple docstring"""


# this script reports modified .py files under the desired list of top-level sub-dirs passed as a list of arguments, e.g.:
#   python ./utils/get_modified_files.py utils src tests examples
#
# it uses git to find the forking point and which files were modified - i.e. files not under git won't be considered
# since the output of this script is fed into Makefile commands it doesn't print a newline after the results

import re
import subprocess
import sys


_lowercase							   =				subprocess.check_output('''git merge-base main HEAD'''.split()).decode('''utf-8''')
_lowercase							   =				subprocess.check_output(F"""git diff --name-only {fork_point_sha}""".split()).decode('''utf-8''').split()

_lowercase							   =				'''|'''.join(sys.argv[1:])
_lowercase							   =				re.compile(rF"""^({joined_dirs}).*?\.py$""")

_lowercase							   =				[x for x in modified_files if regex.match(x)]
print(''' '''.join(relevant_modified_files), end='''''')