code: def release(ctx, type_, repo, prebump=PREBUMP):
      
      if prebump not in REL_TYPES:
          raise ValueError(f'{type_} not in {REL_TYPES}')
      prebump = REL_TYPES.index(prebump)
  
      version = _read_version()
      version = _bump_release(version, type_)
      _write_version(version)
  
      # Needs to happen before Towncrier deletes fragment files.
      tag_content = _render_log()
  
      ctx.run('towncrier')
  
      ctx.run(f'git commit -am "Release {version}"')
  
      tag_content = tag_content.replace('"', '\\"')
      ctx.run(f'git tag -a {version} -m "Version {version}\n\n{tag_content}"')
  
      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}')
      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.