code: def release(ctx, type_, repo, prebump=PREBUMP, yes=False):
      
      if prebump not in REL_TYPES:
          raise ValueError(f"{type_} not in {REL_TYPES}")
      prebump = REL_TYPES.index(prebump)
  
      version = bump_version(ctx, type_, log=True)
      # Needs to happen before Towncrier deletes fragment files.
      tag_release(version, yes=yes)
  
      ctx.run(f"python setup.py sdist bdist_wheel")
  
      dist_pattern = f'{PACKAGE_NAME.replace("-", "[-_]")}-*'
      artifacts = list(ROOT.joinpath("dist").glob(dist_pattern))
      filename_display = "\n".join(f"  {a}" for a in artifacts)
      print(f"[release] Will upload:\n{filename_display}")
      if not yes:
          try:
              input("[release] Release ready. ENTER to upload, CTRL-C to abort: ")
          except KeyboardInterrupt:
              print("\nAborted!")
              return
  
      arg_display = " ".join(f'"{n}"' for n in artifacts)
      ctx.run(f'twine upload --repository="{repo}" {arg_display}')
  
      version = _prebump(version, prebump)
      _write_version(version)
  
      ctx.run(f'git commit -am "Prebump to {version}"')
docs: Make a new release.