code: def fill_config_store() -> None:
      import torch_geometric
  
      config_store = get_config_store()
  
      # Register `torch_geometric.transforms` ###################################
      transforms = torch_geometric.transforms
      for cls_name in set(transforms.__all__) - set(
          [
              "BaseTransform",
              "Compose",
              "ComposeFilters",
              "LinearTransformation",
              "AddMetaPaths",  # TODO
          ]
      ):
          cls = to_dataclass(
              getattr(transforms, cls_name), base_cls=Transform
          )
          # We use an explicit additional nesting level inside each config to
          # allow for applying multiple transformations.
          # See: hydra.cc/docs/patterns/select_multiple_configs_from_config_group
          config_store.store(
              cls_name, group="transform", node={cls_name: cls}
          )
  
      # Register `torch_geometric.datasets` #####################################
      datasets = torch_geometric.datasets
      map_dataset_args: Dict[str, Any] = {
          "transform": (
              Dict[str, Transform],
              field(default_factory=dict),
          ),
          "pre_transform": (
              Dict[str, Transform],
              field(default_factory=dict),
          ),
      }
  
      for cls_name in set(datasets.__all__) - set([]):
          cls = to_dataclass(
              getattr(datasets, cls_name),
              base_cls=Dataset,
              map_args=map_dataset_args,
              exclude_args=["pre_filter"],
          )
          config_store.store(cls_name, group="dataset", node=cls)
  
      # Register `torch_geometric.models` #######################################
      models = torch_geometric.nn.models.basic_gnn
      for cls_name in set(models.__all__) - set([]):
          cls = to_dataclass(getattr(models, cls_name), base_cls=Model)
          config_store.store(cls_name, group="model", node=cls)
  
      # Register `torch.optim.Optimizer` ########################################
      for cls_name in set(
          [
              key
              for key, cls in torch.optim.__dict__.items()
              if inspect.isclass(cls)
              and issubclass(cls, torch.optim.Optimizer)
          ]
      ) - set(
          [
              "Optimizer",
          ]
      ):
          cls = to_dataclass(
              getattr(torch.optim, cls_name),
              base_cls=Optimizer,
              exclude_args=["params"],
          )
          config_store.store(cls_name, group="optimizer", node=cls)
  
      # Register `torch.optim.lr_scheduler` #####################################
      for cls_name in set(
          [
              key
              for key, cls in torch.optim.lr_scheduler.__dict__.items()
              if inspect.isclass(cls)
          ]
      ) - set(
          [
              "Optimizer",
              "_LRScheduler",
              "Counter",
              "SequentialLR",
              "ChainedScheduler",
          ]
      ):
          cls = to_dataclass(
              getattr(torch.optim.lr_scheduler, cls_name),
              base_cls=LRScheduler,
              exclude_args=["optimizer"],
          )
          config_store.store(cls_name, group="lr_scheduler", node=cls)
  
      # Register global schema ##################################################
      config_store.store("config", node=Config)
  
file_path: pytorch_geometric/torch_geometric/config_store.py
imports: import copy
  import inspect
  import typing
  from collections import defaultdict
  from dataclasses import dataclass, field, make_dataclass
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import torch
label_desc: Use image node_id 6 for calling a global function with example usage: fill_config_store() without return types