code: def _create_sibling(
      platform,
      reponame,
      dataset=None,
      recursive=False,
      recursion_limit=None,
      name=None,
      existing="error",
      access_protocol="https",
      publish_depends=None,
      private=False,
      description=None,
      dry_run=False,
  ):
      """Helper function to conduct sibling creation on a target platform
  
      Parameters match the respective create_sibling_*() commands.
      `platform` is an instance of a subclass of `_GitHubLike`.
  
      Yields
      ------
      dict
        Result record.
      """
  
      orgname, reponame = split_org_repo(reponame)
  
      # apply whatever normalization or default selection
      name = platform.get_siblingname(name)
  
      lgr.debug("Repository organization name: '%s'", orgname)
  
      if reponame != platform.normalize_reponame(reponame):
          raise ValueError(
              f"Invalid name for a {platform.fullname} project: {reponame}"
          )
  
      lgr.debug("Repository basename: '%s'", reponame)
  
      # what to operate on
      ds = require_dataset(
          dataset,
          check_installed=True,
          purpose=f"create {platform.fullname} sibling(s)",
      )
  
      res_kwargs = dict(
          action=f"create_sibling_{platform.name} [dry-run]"
          if dry_run
          else f"create_sibling_{platform.name}",
          logger=lgr,
          refds=ds.path,
      )
  
      toprocess, filterresults = platform.get_dataset_reponame_mapping(
          ds,
          name,
          reponame,
          existing,
          recursive,
          recursion_limit,
          res_kwargs,
      )
      yield from filterresults
  
      if not toprocess:
          # all skipped
          return
  
      lgr.debug("Will process %i dataset(s)", len(toprocess))
  
      yield from platform.create_repos(
          toprocess,
          name,
          orgname,
          private,
          dry_run,
          description,
          res_kwargs,
          existing,
          access_protocol,
          publish_depends,
      )
  
imports: import logging
  import re
  from urllib.parse import urljoin, urlparse
  import requests
  from datalad import cfg
  from datalad.distribution.dataset import EnsureDataset, require_dataset
  from datalad.downloaders.credentials import Token
  from datalad.downloaders.http import DEFAULT_USER_AGENT
  from datalad.interface.common_opts import publish_depends, recursion_flag, recursion_limit
  from datalad.interface.results import get_status_dict
  from datalad.support.constraints import EnsureChoice, EnsureNone, EnsureStr
  from datalad.support.param import Parameter
  from datalad.ui import ui
  from datalad.utils import todo_interface_for_extensions
label_desc: Use image node_id 1 for calling a global function with example usage: _create_sibling(platform, reponame, dataset, recursive, recursion_limit, name, existing, access_protocol, publish_depends, private, description, dry_run) without return types