





import time
from contextlib import contextmanager
from pathlib import Path

import pytest
import requests
from huggingface_hub.hf_api import HfApi, HfFolder


lowerCAmelCase_    =				'''__DUMMY_TRANSFORMERS_USER__'''
lowerCAmelCase_    =				'''Dummy User'''
lowerCAmelCase_    =				'''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'''

lowerCAmelCase_    =				'''https://hub-ci.huggingface.co'''
lowerCAmelCase_    =				CI_HUB_ENDPOINT + '''/datasets/{repo_id}/resolve/{revision}/{path}'''
lowerCAmelCase_    =				CI_HUB_ENDPOINT + '''/{repo_id}/resolve/{revision}/{filename}'''
lowerCAmelCase_    =				Path('''~/.huggingface/hub_ci_token''').expanduser()






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase )		->						str:






				"""simple docstring"""


				monkeypatch.setattr(
				    '''huggingface_hub.file_download.HUGGINGFACE_CO_URL_TEMPLATE''' ,				_UpperCamelCase )






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase )		->						Any:






				"""simple docstring"""


				monkeypatch.setattr('''datasets.config.HF_ENDPOINT''' ,				_UpperCamelCase )
				monkeypatch.setattr('''datasets.config.HUB_DATASETS_URL''' ,				_UpperCamelCase )






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase )		->						int:






				"""simple docstring"""


				monkeypatch.setattr('''huggingface_hub.hf_api.HfFolder.path_token''' ,				_UpperCamelCase )






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase )		->						str:






				"""simple docstring"""


				HfFolder.save_token(_UpperCamelCase )
				yield
				HfFolder.delete_token()






@pytest.fixture(scope='''session''' )
def      lowerCamelCase_						(				)		->						int:






				"""simple docstring"""


				return HfApi(endpoint=_UpperCamelCase )






@pytest.fixture(scope='''session''' )
def      lowerCamelCase_						(				_UpperCamelCase )		->						List[Any]:






				"""simple docstring"""


				snake_case_						:    List[Any]				=  HfFolder.get_token()
				HfFolder.save_token(_UpperCamelCase )
				yield CI_HUB_USER_TOKEN
				if previous_token is not None:
								HfFolder.save_token(_UpperCamelCase )






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase )		->						int:






				"""simple docstring"""


				def _cleanup_repo(_UpperCamelCase ):
								hf_api.delete_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' )

				return _cleanup_repo






@pytest.fixture
def      lowerCamelCase_						(				_UpperCamelCase )		->						Any:






				"""simple docstring"""


				@contextmanager
				def _temporary_repo(_UpperCamelCase ):
								try:
												yield repo_id
								finally:
												cleanup_repo(_UpperCamelCase )

				return _temporary_repo






@pytest.fixture(scope='''session''' )
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						str:






				"""simple docstring"""


				snake_case_						:    List[Any]				=  f'''repo_txt_data-{int(time.time() * 10E3 )}'''
				snake_case_						:    Tuple				=  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' ,				private=_UpperCamelCase )
				hf_api.upload_file(
				    token=_UpperCamelCase ,				path_or_fileobj=str(_UpperCamelCase ) ,				path_in_repo='''data/text_data.txt''' ,				repo_id=_UpperCamelCase ,				repo_type='''dataset''' ,				)
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' )
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						Tuple:






				"""simple docstring"""


				return hf_private_dataset_repo_txt_data_






@pytest.fixture(scope='''session''' )
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						Dict:






				"""simple docstring"""


				snake_case_						:    Any				=  f'''repo_zipped_txt_data-{int(time.time() * 10E3 )}'''
				snake_case_						:    List[Any]				=  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' ,				private=_UpperCamelCase )
				hf_api.upload_file(
				    token=_UpperCamelCase ,				path_or_fileobj=str(_UpperCamelCase ) ,				path_in_repo='''data.zip''' ,				repo_id=_UpperCamelCase ,				repo_type='''dataset''' ,				)
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' )
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						Optional[int]:






				"""simple docstring"""


				return hf_private_dataset_repo_zipped_txt_data_






@pytest.fixture(scope='''session''' )
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						Optional[int]:






				"""simple docstring"""


				snake_case_						:    Optional[int]				=  f'''repo_zipped_img_data-{int(time.time() * 10E3 )}'''
				snake_case_						:    Union[str, Any]				=  f'''{CI_HUB_USER}/{repo_name}'''
				hf_api.create_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' ,				private=_UpperCamelCase )
				hf_api.upload_file(
				    token=_UpperCamelCase ,				path_or_fileobj=str(_UpperCamelCase ) ,				path_in_repo='''data.zip''' ,				repo_id=_UpperCamelCase ,				repo_type='''dataset''' ,				)
				yield repo_id
				try:
								hf_api.delete_repo(_UpperCamelCase ,				token=_UpperCamelCase ,				repo_type='''dataset''' )
				except (requests.exceptions.HTTPError, ValueError):  # catch http error and token invalid error
								pass






@pytest.fixture()
def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase ,				_UpperCamelCase )		->						Union[str, Any]:






				"""simple docstring"""


				return hf_private_dataset_repo_zipped_img_data_







def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase )		->						List[str]:






				"""simple docstring"""


				print('''\nThe shortest path matrix using Floyd Warshall algorithm\n''' )
				for i in range(_UpperCamelCase ):
								for j in range(_UpperCamelCase ):
												if dist[i][j] != float('''inf''' ):
																print(int(dist[i][j] ) ,				end='''\t''' )
												else:
																print('''INF''' ,				end='''\t''' )
								print()






def      lowerCamelCase_						(				_UpperCamelCase ,				_UpperCamelCase )		->						Union[str, Any]:






				"""simple docstring"""


				snake_case_						:    int				=  [[float('''inf''' ) for _ in range(_UpperCamelCase )] for _ in range(_UpperCamelCase )]

				for i in range(_UpperCamelCase ):
								for j in range(_UpperCamelCase ):
												snake_case_						:    Dict				=  graph[i][j]

												# check vertex k against all other vertices (i, j)
				for k in range(_UpperCamelCase ):
								# looping through rows of graph array
								for i in range(_UpperCamelCase ):
												# looping through columns of graph array
												for j in range(_UpperCamelCase ):
																if (
																    dist[i][k] != float('''inf''' )
																    and dist[k][j] != float('''inf''' )
																    and dist[i][k] + dist[k][j] < dist[i][j]
																):
																				snake_case_						:    List[Any]				=  dist[i][k] + dist[k][j]

				_print_dist(_UpperCamelCase ,				_UpperCamelCase )
				return dist, v


if __name__ == "__main__":
	lowerCAmelCase_    =				int(input('''Enter number of vertices: '''))
	lowerCAmelCase_    =				int(input('''Enter number of edges: '''))

	lowerCAmelCase_    =				[[float('''inf''') for i in range(v)] for j in range(v)]

	for i in range(v):
		lowerCAmelCase_    =				0.0

		# src and dst are indices that must be within the array size graph[e][v]
		# failure to follow this will result in an error
	for i in range(e):
		print('''\nEdge ''', i + 1)
		lowerCAmelCase_    =				int(input('''Enter source:'''))
		lowerCAmelCase_    =				int(input('''Enter destination:'''))
		lowerCAmelCase_    =				float(input('''Enter weight:'''))
		lowerCAmelCase_    =				weight

	floyd_warshall(graph, v)

	# Example Input
	# Enter number of vertices: 3
	# Enter number of edges: 2

	# # generated graph from vertex and edge inputs
	# [[inf, inf, inf], [inf, inf, inf], [inf, inf, inf]]
	# [[0.0, inf, inf], [inf, 0.0, inf], [inf, inf, 0.0]]

	# specify source, destination and weight for edge #1
	# Edge  1
	# Enter source:1
	# Enter destination:2
	# Enter weight:2

	# specify source, destination and weight for edge #2
	# Edge  2
	# Enter source:2
	# Enter destination:1
	# Enter weight:1

	# # Expected Output from the vertice, edge and src, dst, weight inputs!!
	# 0		INF	INF
	# INF	0	2
	# INF	1	0
