3.0.0 • Published 7 months ago

semantic-release-pypi v3.0.0

Weekly downloads
8
License
MIT
Repository
github
Last release
7 months ago

📦🐍 semantic-release-pypi

semantic-release plugin to publish a python package to PyPI

CI environment

Build System Interfaces

semantic-release-pypi support two build system interfaces

  • pyproject.toml based (Recommended)
    • version will be set inside pyproject.toml - PEP 621
    • The build backend can be specified inside pyproject.toml (defaults to setuptools) - PEP 518
  • setup.py based (Legacy interface)
    • setuptools is required, other packaging tools like Poetry or Hatch are not supported when using this interface
    • version will be set inside setup.cfg
    • version must not be set inside setup.py

Steps

StepDescription
verifyConditionsverify the environment variable PYPI_TOKENverify PYPI_TOKEN is authorized to publish on the specified repositorycheck if the packages setuptools, wheel and twine are installed
prepareUpdate the version in pyproject.toml (legacy: setup.cfg) and create the distribution packages
publishPublish the python package to the specified repository (default: pypi)

Environment variables

VariableDescriptionRequiredDefault
PYPI_TOKENAPI token for PyPItrue
PYPI_USERNAMEUsername for PyPIfalse__token__
PYPI_REPO_URLRepo URL for PyPIfalseSee Options

Usage

The plugin can be configured in the semantic-release configuration file. Here is a minimal example:

{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "semantic-release-pypi",
  ]
}

Note that this plugin modifies the version inside of pyproject.toml (legacy: setup.cfg). Make sure to commit pyproject.toml using the @semantic-release/git plugin, if you want to save the changes:

{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "semantic-release-pypi",
    [
      "@semantic-release/git",
      {
          "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}",
          "assets": ["pyproject.toml"]
      }
    ]
  ]
}

Working examples using Github Actions can be found here:

Options

OptionTypeDefaultDescription
srcDirstr.source directory (defaults to current directory)
distDirstrdistdirectory to put the source distribution archive(s) in, relative to the directory of setup.py
repoUrlstrhttps://upload.pypi.org/legacy/The repository (package index) to upload the package to.
pypiPublishbooltrueWhether to publish the python package to the pypi registry. If false the package version will still be updated.
gpgSignboolfalseWhether to sign the package using GPG. A valid PGP key must already be installed and configured on the host.
gpgIdentitystrnullWhen gpgSign is true, set the GPG identify to use when signing files. Leave empty to use the default identity.

Development

Pre-requisites

  • pyenv >= 2.1.0
source init.sh

Contribute

  • Fork from this repository
  • Run source init.sh
  • Add your changes
  • Make sure your code passes all unit tests by running yarn test
  • Run yarn lint to ensure your code adheres to the linting rules
  • Issue a PR

Alternatives

Python Semantic Release

3.0.0-beta.3

7 months ago

3.0.0

7 months ago

3.0.0-beta.1

7 months ago

3.0.0-beta.2

7 months ago

2.5.2

9 months ago

2.5.1

9 months ago

2.5.0

2 years ago

2.4.1

3 years ago

2.4.3

3 years ago

2.4.2

3 years ago

2.4.0

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.1.0

3 years ago

2.0.4

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago