


'''simple docstring'''






from __future__ import annotations

from typing import Any






class    __magic_name__				:






       def __init__(     self    ,				snake_case)		->    None:




          '''simple docstring'''
          _UpperCAmelCase  :  Optional[int]				       =num_of_nodes
          _UpperCAmelCase  :  list[list[int]]				       =[]
          _UpperCAmelCase  :  dict[int, int]				       ={}






       def      lowerCAmelCase						(     self    ,				snake_case    ,				snake_case    ,				snake_case)		->    None:




          '''simple docstring'''
          self.m_edges.append([u_node, v_node, weight])






       def      lowerCAmelCase						(     self    ,				snake_case)		->    int:




          '''simple docstring'''

          if self.m_component[u_node] == u_node:
             return u_node
          return self.find_component(self.m_component[u_node])






       def      lowerCAmelCase						(     self    ,				snake_case)		->    None:




          '''simple docstring'''

          if self.m_component[u_node] != u_node:
             for k in self.m_component:
                _UpperCAmelCase  :  Dict				       =self.find_component(snake_case)






       def      lowerCAmelCase						(     self    ,				snake_case    ,				snake_case    ,				snake_case)		->    None:




          '''simple docstring'''

          if component_size[u_node] <= component_size[v_node]:
             _UpperCAmelCase  :  Dict				       =v_node
             component_size[v_node] += component_size[u_node]
             self.set_component(snake_case)

          elif component_size[u_node] >= component_size[v_node]:
             _UpperCAmelCase  :  Optional[int]				       =self.find_component(snake_case)
             component_size[u_node] += component_size[v_node]
             self.set_component(snake_case)






       def      lowerCAmelCase						(     self)		->    None:




          '''simple docstring'''
          _UpperCAmelCase  :  Union[str, Any]				       =[]
          _UpperCAmelCase  :  str				       =0

          _UpperCAmelCase  :  list[Any]				       =[-1] * self.m_num_of_nodes

          # A list of components (initialized to all of the nodes)
          for node in range(self.m_num_of_nodes):
             self.m_component.update({node: node})
             component_size.append(1)

          _UpperCAmelCase  :  List[str]				       =self.m_num_of_nodes

          while num_of_components > 1:
             for edge in self.m_edges:
                _UpperCAmelCase       ,			_UpperCAmelCase       ,			_UpperCAmelCase  :  List[str]				       =edge

                _UpperCAmelCase  :  str				       =self.m_component[u]
                _UpperCAmelCase  :  Dict				       =self.m_component[v]

                if u_component != v_component:

                   for component in (u_component, v_component):
                      if (
                          minimum_weight_edge[component] == -1
                          or minimum_weight_edge[component][2] > w
                      ):
                         _UpperCAmelCase  :  Dict				       =[u, v, w]

             for edge in minimum_weight_edge:
                if isinstance(snake_case    ,				snake_case):
                   _UpperCAmelCase       ,			_UpperCAmelCase       ,			_UpperCAmelCase  :  Optional[int]				       =edge

                   _UpperCAmelCase  :  List[Any]				       =self.m_component[u]
                   _UpperCAmelCase  :  Optional[Any]				       =self.m_component[v]

                   if u_component != v_component:
                      mst_weight += w
                      self.union(snake_case    ,				snake_case    ,				snake_case)
                      print(f"Added edge [{u} - {v}]\nAdded weight: {w}\n")
                      num_of_components -= 1

             _UpperCAmelCase  :  List[str]				       =[-1] * self.m_num_of_nodes
          print(f"The total weight of the minimal spanning tree is: {mst_weight}")






def lowerCamelCase__     (		):







   '''simple docstring'''






if __name__ == "__main__":
 import doctest

 doctest.testmod()





'''simple docstring'''






import os

import pytest

from datasets import (
    get_dataset_config_info,
    get_dataset_config_names,
    get_dataset_infos,
    get_dataset_split_names,
    inspect_dataset,
    inspect_metric,
)


lowercase				=pytest.mark.integration





@pytest.mark.parametrize('path'			,       ['paws', 'csv']				)
def lowerCamelCase__     (		__lowerCamelCase			:				List[Any]			,       __lowerCamelCase			:				Optional[Any]				):







   '''simple docstring'''




   inspect_dataset(__lowerCamelCase			,       __lowerCamelCase				)
   _UpperCAmelCase  :  List[str]				       =path + '.py'
   assert script_name in os.listdir(__lowerCamelCase				)
   assert "__pycache__" not in os.listdir(__lowerCamelCase				)





@pytest.mark.filterwarnings('ignore:inspect_metric is deprecated:FutureWarning'				)
@pytest.mark.filterwarnings('ignore:metric_module_factory is deprecated:FutureWarning'				)
@pytest.mark.parametrize('path'			,       ['accuracy']				)
def lowerCamelCase__     (		__lowerCamelCase			:				Dict			,       __lowerCamelCase			:				str				):







   '''simple docstring'''




   inspect_metric(__lowerCamelCase			,       __lowerCamelCase				)
   _UpperCAmelCase  :  List[Any]				       =path + '.py'
   assert script_name in os.listdir(__lowerCamelCase				)
   assert "__pycache__" not in os.listdir(__lowerCamelCase				)





@pytest.mark.parametrize(
    'path, config_name, expected_splits'			,       [
        ('squad', 'plain_text', ['train', 'validation']),
        ('dalle-mini/wit', 'dalle-mini--wit', ['train']),
        ('paws', 'labeled_final', ['train', 'test', 'validation']),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				Any			,       __lowerCamelCase			:				Optional[int]			,       __lowerCamelCase			:				str				):







   '''simple docstring'''




   _UpperCAmelCase  :  str				       =get_dataset_config_info(__lowerCamelCase			,       config_name=__lowerCamelCase				)
   assert info.config_name == config_name
   assert list(info.splits.keys()				) == expected_splits





@pytest.mark.parametrize(
    'path, config_name, expected_exception'			,       [
        ('paws', None, ValueError),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				List[Any]			,       __lowerCamelCase			:				Optional[Any]			,       __lowerCamelCase			:				List[str]				):







   '''simple docstring'''




   with pytest.raises(__lowerCamelCase				):
      get_dataset_config_info(__lowerCamelCase			,       config_name=__lowerCamelCase				)





@pytest.mark.parametrize(
    'path, expected'			,       [
        ('squad', 'plain_text'),
        ('acronym_identification', 'default'),
        ('lhoestq/squad', 'plain_text'),
        ('lhoestq/test', 'default'),
        ('lhoestq/demo1', 'lhoestq--demo1'),
        ('dalle-mini/wit', 'dalle-mini--wit'),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				Tuple			,       __lowerCamelCase			:				List[str]				):







   '''simple docstring'''




   _UpperCAmelCase  :  Dict				       =get_dataset_config_names(__lowerCamelCase				)
   assert expected in config_names





@pytest.mark.parametrize(
    'path, expected_configs, expected_splits_in_first_config'			,       [
        ('squad', ['plain_text'], ['train', 'validation']),
        ('dalle-mini/wit', ['dalle-mini--wit'], ['train']),
        ('paws', ['labeled_final', 'labeled_swap', 'unlabeled_final'], ['train', 'test', 'validation']),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				Tuple			,       __lowerCamelCase			:				List[Any]			,       __lowerCamelCase			:				List[Any]				):







   '''simple docstring'''




   _UpperCAmelCase  :  Optional[int]				       =get_dataset_infos(__lowerCamelCase				)
   assert list(infos.keys()				) == expected_configs
   _UpperCAmelCase  :  Optional[int]				       =expected_configs[0]
   assert expected_config in infos
   _UpperCAmelCase  :  Optional[int]				       =infos[expected_config]
   assert info.config_name == expected_config
   assert list(info.splits.keys()				) == expected_splits_in_first_config





@pytest.mark.parametrize(
    'path, expected_config, expected_splits'			,       [
        ('squad', 'plain_text', ['train', 'validation']),
        ('dalle-mini/wit', 'dalle-mini--wit', ['train']),
        ('paws', 'labeled_final', ['train', 'test', 'validation']),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				Tuple			,       __lowerCamelCase			:				Tuple			,       __lowerCamelCase			:				int				):







   '''simple docstring'''




   _UpperCAmelCase  :  str				       =get_dataset_infos(__lowerCamelCase				)
   assert expected_config in infos
   _UpperCAmelCase  :  Dict				       =infos[expected_config]
   assert info.config_name == expected_config
   assert list(info.splits.keys()				) == expected_splits





@pytest.mark.parametrize(
    'path, config_name, expected_exception'			,       [
        ('paws', None, ValueError),
    ]			,       )
def lowerCamelCase__     (		__lowerCamelCase			:				Union[str, Any]			,       __lowerCamelCase			:				Optional[Any]			,       __lowerCamelCase			:				Any				):







   '''simple docstring'''




   with pytest.raises(__lowerCamelCase				):
      get_dataset_split_names(__lowerCamelCase			,       config_name=__lowerCamelCase				)

