code: def main(args: argparse.Namespace) -> None:
      """Start a release preparation."""
  
      print(
          "The release script will increase the version number, "
          "create a changelog and create a release branch. Let's go!"
      )
  
      ensure_clean_git()
      version = next_version(args)
      confirm_version(version)
  
      validate_code_is_release_ready(version)
  
      write_version_file(version)
      write_version_to_pyproject(version)
  
      if not version.pre:
          # never update changelog on a prerelease version
          generate_changelog(version)
  
      # alpha workflow on feature branch when a version bump is required
      if (
          version.is_alpha
          and not git_current_branch_is_main_or_release()
      ):
          create_commit(version)
          push_changes()
  
          print_done_message_same_branch(version)
      else:
          base = git_current_branch()
          branch = create_release_branch(version)
  
          create_commit(version)
          push_changes()
  
          print_done_message(branch, base, version)
  
imports: import argparse
  import os
  import re
  import sys
  from pathlib import Path
  from subprocess import CalledProcessError, check_call, check_output
  from typing import Text, Set
  import questionary
  import toml
  from pep440_version_utils import Version, is_valid_version
label_desc: Use image node_id 24 for calling a global function with example usage: main(args) without return types