'''simple docstring'''







from __future__ import annotations

UpperCamelCase_      	=	8.9_88e9  # units = N * m^s * C^-2


def    lowerCamelCase       (			UpperCAmelCase__				:  float				,						UpperCAmelCase__				:  float				,						UpperCAmelCase__				:  float				,						UpperCAmelCase__				:  float		)			->	dict[str, float]:


							'''simple docstring'''






							SCREAMING_SNAKE_CASE__     :Union[str, Any]						    = abs(chargea * chargea		)

							if (force, chargea, chargea, distance).count(0		) != 1:
														raise ValueError('One and only one argument must be 0'		)
							if distance < 0:
														raise ValueError('Distance cannot be negative'		)
							if force == 0:
														SCREAMING_SNAKE_CASE__     :Any						    = COULOMBS_CONSTANT * charge_product / (distance**2)
														return {"force": force}
							elif chargea == 0:
														SCREAMING_SNAKE_CASE__     :str						    = abs(UpperCAmelCase__		) * (distance**2) / (COULOMBS_CONSTANT * chargea)
														return {"charge1": chargea}
							elif chargea == 0:
														SCREAMING_SNAKE_CASE__     :Tuple						    = abs(UpperCAmelCase__		) * (distance**2) / (COULOMBS_CONSTANT * chargea)
														return {"charge2": chargea}
							elif distance == 0:
														SCREAMING_SNAKE_CASE__     :Optional[int]						    = (COULOMBS_CONSTANT * charge_product / abs(UpperCAmelCase__		)) ** 0.5
														return {"distance": distance}
							raise ValueError('Exactly one argument must be 0'		)


if __name__ == "__main__":
		import doctest

		doctest.testmod()







'''simple docstring'''







import os


# All paths are set with the intent you should run this script from the root of the repo with the command
# python utils/check_doctest_list.py
UpperCamelCase_      	=	'''.'''


if __name__ == "__main__":
		UpperCamelCase_      	=	os.path.join(REPO_PATH, '''utils/documentation_tests.txt''')
		UpperCamelCase_      	=	[]
		UpperCamelCase_      	=	[]
		with open(doctest_file_path) as fp:
				for line in fp:
						UpperCamelCase_      	=	line.strip()
						UpperCamelCase_      	=	os.path.join(REPO_PATH, line)
						if not (os.path.isfile(path) or os.path.isdir(path)):
								non_existent_paths.append(line)
						all_paths.append(path)
		if len(non_existent_paths) > 0:
				UpperCamelCase_      	=	'''\n'''.join(non_existent_paths)
				raise ValueError(f"`utils/documentation_tests.txt` contains non-existent paths:\n{non_existent_paths}")
		if all_paths != sorted(all_paths):
				raise ValueError('''Files in `utils/documentation_tests.txt` are not in alphabetical order.''')






