diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 88a8d5807..bc6ec4f7a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -20,7 +20,7 @@ also more difficult to evaluate for edge cases. @@ -29,3 +29,21 @@ mention the rationale here. ## How to Verify + + +--- + +## PR Completion Checklist + +- [ ] Reviewed & followed the [Contributor Guidelines](https://python-semantic-release.readthedocs.io/en/stable/contributing/contributing_guide.html) + +- [ ] Changes Implemented & Validation pipeline succeeds + +- [ ] Commits follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard + and are separated into the proper commit type and scope (recommended order: test, build, feat/fix, docs) + +- [ ] Appropriate Unit tests added/updated + +- [ ] Appropriate End-to-End tests added/updated + +- [ ] Appropriate Documentation added/updated and syntax validated for sphinx build (see Contributor Guidelines) diff --git a/.github/changed-files-spec.yml b/.github/changed-files-spec.yml index 7f8e40353..8d479d1db 100644 --- a/.github/changed-files-spec.yml +++ b/.github/changed-files-spec.yml @@ -2,8 +2,6 @@ build: - MANIFEST.in - - Dockerfile - - .dockerignore - scripts/** docs: - docs/** @@ -11,8 +9,15 @@ docs: - AUTHORS.rst - CONTRIBUTING.rst - CHANGELOG.rst +gha_src: + - src/gh_action/** src: - - src/** + - src/semantic_release/** - pyproject.toml +gha_tests: + - tests/gh_action/** tests: - - tests/** + - tests/e2e/** + - tests/fixtures/** + - tests/unit/** + - tests/*.py diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..97a92c06a --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,550 @@ +# Copilot Instructions for python-semantic-release + +This document explains how GitHub Copilot-like automated agents should interact with +the python-semantic-release repository. + +## Project Overview + +Python Semantic Release is a tool for automating semantic versioning and marking releases for +various types of software projects. It analyzes commit messages with various commit parsers +(the most notable being the Conventional Commits specification) to determine what the next +version should be and facilitates release steps that the developer generally has to do. This +includes generating changelogs, stamping the code with version strings, creating a repository +tag and annotating releases on a remote Git server with version-specific release notes. + +**Key Components:** +- **CLI**: Command-line interface for version management, changelog generation, and publishing +- **Commit Parsers**: Parse commit messages to determine version bumps + (Supports Conventional-Commits, Emoji, and Scipy format) +- **HVCS Integration**: Integrations with GitHub, GitLab, Gitea, and Bitbucket for releasing +- **Version Management**: Semantic versioning logic and version calculation +- **Changelog Generation**: Automated and customizable changelog creation using Jinja2 templates + +## Development Setup + +### Installation + +Requires 3.9+ for development dependencies, but runtime supports 3.8+. + +```bash +# Set up for development +pip install -e .[build,dev,docs,mypy,test] +``` + +### Running the Application + +```bash +# See the CLI help +semantic-release --help + +# Common commands +semantic-release version +semantic-release changelog +semantic-release publish +``` + +### Making Changes + +Minimal PR checklist (run locally before proposing a PR): + +- [ ] Run pre-PR checklist script (see below) +- [ ] If you added dependencies: update `pyproject.toml` and mention them in the PR. +- [ ] Review the helpful tips at the bottom of this document to ensure best practices. +- [ ] Verify that commit messages follow the Commit Message Conventions section below. + +Runnable pre-PR checklist script (copyable): + +```bash +# lint & format +ruff format . +ruff check --unsafe-fixes . +# run type checks +mypy . +# run unit tests +pytest -m unit +# run e2e tests +pytest -m e2e +# optional docs build when docs changed +sphinx-build -b html docs docs/_build/html +``` + +## Code Style and Quality + +### Linting and Formatting + +- **Ruff**: Primary linter and formatter (replaces Black, isort, flake8) + + ```bash + # run check for lint errors + ruff check --unsafe-fixes . + + # apply lint fixes + ruff check --unsafe-fixes --fix . + + # check for formatting issues + ruff format --check . + + # apply formatting fixes + ruff format . + ``` + +- **Type Checking**: Use mypy for type checking + + ```bash + mypy . + ``` + +### Code Style Guidelines + +1. **Type Hints**: All functions must have complete type hints (enforced by mypy) + +2. **Docstrings**: Use sphinx-style docstrings (though currently many are missing - add + only when modifying a function or adding new code) + +3. **Line Length**: 88 characters (enforced by Ruff) + +4. **Import Style**: + + - Absolute imports only (no relative imports) + - All files must use `from __future__ import annotations` for ignoring type hints at runtime + - Prefer `from module import Class` over `import module` when using classes/functions + - Running Ruff with `--unsafe-fixes` and `--fix` will automatically sort and group imports + - All files should have a `if TYPE_CHECKING: # pragma: no cover` block for type-only imports + - Prefer renaming `re` imports for clarity (e.g. `from re import compile as regexp, escape as regexp_escape`) + +5. **String Quotes**: Use double quotes for strings + +6. **Error Handling**: Create specific exception classes inheriting from `SemanticReleaseBaseError` + and defined in `errors.py` + +### Common Patterns + +- Configuration uses Pydantic models (v2) for validation +- CLI uses Click framework with click-option-group for organization +- Git operations use GitPython library +- Templating uses Jinja2 for changelogs and release notes + +## Testing + +### Test Structure + +- **Unit Tests**: `tests/unit/` - Fast, isolated tests + +- **E2E Tests**: `tests/e2e/` - End-to-end integration tests performed on real git repos + (as little mocking as possible, external network calls to HVCS should be mocked). Repos are + cached into `.pytest_cache/` for faster test setup/runs after the first build. E2E tests are + built to exercise the CLI commands and options against real git repositories with various commit + histories and configurations. + +- **Fixtures**: `tests/fixtures/` - Reusable test data and fixtures + +- **Repository Fixtures**: `tests/fixtures/repos/` - Example git repositories for testing and rely on + `tests/fixtures/example_project.py` and `tests/fixtures/git_repo.py` for setup + +- **Monorepo Fixtures**: `tests/fixtures/monorepo/` - Example monorepos for testing monorepo support + +- **GitHub Action Tests**: `tests/gh_action/` - Tests for simulating GitHub Docker Action functionality + +### Running Tests + +```bash +# Run only unit tests +pytest -m unit + +# Run only e2e tests +pytest -m e2e + +# Run comprehensive (unit & e2e) test suite with full verbosity (all variations of repositories) +# Warning: long runtime (14mins+) only necessary for testing all git repository variations +pytest -vv --comprehensive + +# Run GitHub Docker Action tests (requires Docker, see .github/workflows/validate.yml for setup) +# Only required when modifying the GitHub Action code (src/gh_action/, and action.yml) +bash tests/gh_action/run.sh +``` + +### Testing Guidelines + +1. **Test Organization**: + + - Group unit tests by module structure mirroring `src/` under `tests/unit/` + - Group e2e tests by CLI command under `tests/e2e/` + - Use descriptive test function names that clearly indicate the scenario being tested + - Test docstrings should follow the format: `"""Given , when , then ."""` + +2. **Fixtures**: Use pytest fixtures from `tests/conftest.py` and `tests/fixtures/` + +3. **Markers**: Apply appropriate markers (`@pytest.mark.unit`, `@pytest.mark.e2e`, `@pytest.mark.comprehensive`) + +4. **Mocking**: Use `pytest-mock` for mocking, `responses` for HTTP mocking + +5. **Parametrization**: Use `@pytest.mark.parametrize` for testing multiple scenarios + +6. **Test Data**: Use `tests/fixtures/repos/` for specific git repository workflow strategies + + - Git repository strategies include: + + - Git Flow: + - branch & merge commit strategy + - varying number of branches & release branches + + - GitHub Flow: + - squash merge strategy + - branch & merge commit strategy + - varying number of release branches & simulated simultaneous work branches + - varying branch update strategies (e.g. rebasing, merging) + + - Trunk-Based Development (no branches): + - unreleased repo (no tags) + - trunk with only official release tags + - trunk with mixed release and pre-release tags + - concurrent major version support + + - ReleaseFlow (Not supported yet) + + - Monorepo (multiple packages): + - trunk based development with only official release tags + - github flow with squash merge strategy + - github flow with branch & merge commit strategy + +### Test Coverage + +- Maintain high test coverage for core functionality +- Unit tests should be fast and not touch filesystem/network when possible +- E2E tests should test realistic workflows with actual git operations + +### Pull Request testing + +Each PR will be evaluated through an GitHub Actions workflow before it can be merged. +The workflow is very specialized to run the tests in a specific order and with specific +parameters. Please refer to `.github/workflows/ci.yml` for details on how the tests are +structured and run. + +## Commit Message Conventions + +This project uses **Conventional Commits** specification and is versioned by itself. See +the `CHANGELOG.rst` for reference of how the conventional commits and specific rules this +project uses are used in practice to communicate changes to users. + +It is highly important to separate the code changes into their respective commit types +and scopes to ensure that the changelog is generated correctly and that users can +understand the changes in each release. The commit message format is strictly enforced +and should be followed for all commits. + +When submitting a pull request, it is recommended to commit any end-2-end test cases +first as a `test` type commit, then the implementation changes as `feat`, `fix`, etc. +This order allows reviewers to run the test which demonstrates the failure case before +validating the implementation changes by doing a `git merge origin/` to run the +test again and see it pass. Unit test cases will need to be committed after the source +code implementation changes as they will not run without the implementation code. +Documentation changes should be committed last and the commit scope should be a short +reference to the page its modifying (e.g. `docs(github-actions): ` or +`docs(configuration): `). Commit types should be chosen based on reference +to the default branch as opposed to its previous commits on the branch. For example, if +you are fixing a bug in a feature that was added in the same branch, the commit type +should be `refactor` instead of `fix` since the bug was introduced in the same branch +and is not present in the default branch. + +### Format + +``` +(): + + + +[optional footer(s)] +``` + +Scopes by the specification are optional but for this project, they are required and +only by exception can they be omitted. + +Footers include: + +- `BREAKING CHANGE: ` for breaking changes + +- `NOTICE: ` for additional release information that should be included + in the changelog to give users more context about the release + +- `Resolves: #` for linking to bug fixes. Use `Implements: #` + for new features. + +You should not have a breaking change and a notice in the same commit. If you have a +breaking change, the breaking change description should include all relevant information +about the change and how to update. + +### Types + +- `feat`: New feature (minor version bump) +- `fix`: Bug fix (patch version bump) +- `perf`: Performance improvement (patch version bump) +- `docs`: Documentation only changes +- `style`: Code style changes (formatting, missing semicolons, etc.) +- `refactor`: Code refactoring without feature changes or bug fixes +- `test`: Adding or updating tests +- `build`: Changes to build system or dependencies +- `ci`: Changes to CI configuration +- `chore`: Other changes that don't modify src or test files + +### Breaking Changes + +- Add `!` after the scope: `feat(scope)!: breaking change` and add + `BREAKING CHANGE:` in footer with detailed description of what was changed, + why, and how to update. + +### Notices + +- Add `NOTICE: ` in footer to include important information about the + release that should be included in the changelog. This is for things that require + more explanation than a simple commit message and are not breaking changes. + +### Scopes + +Use scopes as categories to indicate the area of change. They are most important for the +types of changes that are included in the changelog (bug fixes, features, performance +improvements, documentation, build dependencies) to tell the user what area was changed. + +Common scopes include: + +- `changelog`: Changes related to changelog generation +- `config`: Changes related to user configuration +- `fixtures`: Changes related to test fixtures +- `deps`: Changes related to runtime dependencies +- `deps-dev`: Changes related to development dependencies + (as defined in `pyproject.toml:project.optional-dependencies.dev`) +- `deps-build`: Changes related to build dependencies + (as defined in `pyproject.toml:project.optional-dependencies.build`) +- `deps-docs`: Changes related to documentation dependencies + (as defined in `pyproject.toml:project.optional-dependencies.docs`) +- `deps-test`: Changes related to testing dependencies + (as defined in `pyproject.toml:project.optional-dependencies.test`) + +We use hyphenated scopes to group related changes together in a category to subcategory +format. The most common categories are: + +- `cmd-`: Changes related to a specific CLI command +- `parser-`: Changes related to a specific commit parser +- `hvcs-`: Changes related to a specific hosting service integration + +## Architecture + +The project's primary entrypoint is `src/semantic_release/__main__.py:main`, as defined +in `pyproject.toml:project.scripts`. This is the CLI interface that users interact with. +The CLI is built using Click and lazy-loaded subcommands for version management, +changelog generation, and publishing. + +Although the project is primarily a CLI tool, the code is under development to become +more modular and pluggable to allow for more flexible usage in other contexts (e.g. as a +library). + +This repository also is provided as a GitHub Action (see `src/gh_action/`) for users +who want a pre-built solution for their GitHub repositories. The action is built using Docker +and wraps the built wheel of the project before it runs the CLI version command in a +containerized environment. The publish command is also available as a GitHub Action but +that code is hosted in a separate repository (https://github.com/python-semantic-release/publish-action). + +### Key Components + +- `src/semantic_release/cli/`: Click-based CLI interface + - `commands/`: Individual CLI commands (version, changelog, publish) + - `config.py`: Configuration loading and validation with Pydantic + +- `src/semantic_release/commit_parser/`: Commit message parsers + - `_base.py`: Base parser interface + - `conventional/parser.py`: Conventional Commits parser + - `conventional/options.py`: Conventional Commits parser options + - `conventional/parser_monorepo.py`: Conventional Commits parser for monorepos + - `conventional/options_monorepo.py`: Conventional Commits monorepo parser options + - `angular.py`, `emoji.py`, `scipy.py`, `tag.py`: Parser implementations + +- `src/semantic_release/hvcs/`: Hosting service integrations + - `_base.py`: Base HVCS interface + - `remote_hvcs_base.py`: Base class for remote HVCS implementations + - `github.py`, `gitlab.py`, `gitea.py`, `bitbucket.py`: Service implementations + +- `src/semantic_release/version/`: Version management + - `version.py`: Version class and comparison logic + - `declarations/`: Implementations of how to stamp versions into various types of code + from users' configuration + - `translator.py`: Version translation between different formats + +- `src/gh_action/`: GitHub Docker Action implementation + - `action.sh`: Main entrypoint for the action + - `Dockerfile`: Dockerfile for the action + +- `action.yml`: GitHub Action definition + +### Design Patterns + +- **Strategy Pattern**: Commit parsers and HVCS implementations are pluggable +- **Template Method**: Base classes define workflow, subclasses implement specifics +- **Builder Pattern**: Version calculation builds up changes from commits +- **Factory Pattern**: Parser and HVCS selection based on configuration +- **Composition Pattern**: The future of the project's design for pluggable components + +## Building and Releasing + +### Local Build + +```bash +pip install -e .[build] +bash scripts/build.sh +``` + +### Release Process + +This project is released via GitHub Actions (see `.github/workflows/cicd.yml`) after +a successful validation workflow. During release, it runs a previous version of +itself to perform the release steps. The release process includes: + +1. Commits are analyzed from the last tag that exists on the current branch +2. Version is determined based on commit types +3. Changelog is generated from commits +4. Source code is stamped with new version +5. Documentation is stamped with the new version (`$NEW_VERSION`) + or new release tag (`$NEW_RELEASE_TAG`) (see `scripts/bump_version_in_docs.py` for details) +6. Package is built with stamped version +7. Code changes from steps 4-6 are committed and pushed to the repository +8. A new tag is created for the release and pushed to the repository +9. A new release is created on the hosting service with version-specific generated release notes +10. Assets are uploaded to the release +11. The package is published to PyPI +12. ReadTheDocs is triggered to build & publish the documentation + +### Version Configuration + +- Version stored in `pyproject.toml:project.version` +- Additional version locations in `tool.semantic_release.version_variables` +- Follows semantic versioning: MAJOR.MINOR.PATCH + +## Common Tasks + +### Adding a New Commit Parser + +1. Create new parser in `src/semantic_release/commit_parser/` +2. Inherit from `CommitParser` base class +3. Implement `parse()` method +4. Add parser to `KNOWN_COMMIT_PARSERS` in config +5. Add tests in `tests/unit/semantic_release/commit_parser/` +6. Add fixtures that can select the new parser for e2e tests + +### Adding a New HVCS Integration + +1. Create new HVCS in `src/semantic_release/hvcs/` +2. Inherit from `HvcsBase` base class or `RemoteHvcsBase` if it is a remote service +3. Implement required methods (token creation, asset upload, release creation) +4. Add HVCS to configuration options +5. Add tests in `tests/unit/semantic_release/hvcs/` +6. Add fixtures that can select the new HVCS for e2e tests + +### Adding a New CLI Command + +1. Create command in `src/semantic_release/cli/commands/` +2. Use Click decorators for arguments/options +3. Access shared context via `ctx.obj` (RuntimeContext) +4. Add command to main command group in `src/semantic_release/cli/commands/main.py` +5. Add tests in `tests/e2e/cmd_/` +6. Add documentation for the command in `docs/api/commands.rst` + +### Modifying the included default changelog templates source + +1. Update the default templates in `src/semantic_release/data/templates///` +2. Update the fixtures in `tests/fixtures/git_repo.py` to correctly replicate the + format of the new templates via code. +3. Update the unit tests for changelog generation + +### Adding a new configuration option + +1. Update the Pydantic models in `cli/config.py` with validation +2. Add option over into the RuntimeContext if necessary +3. Add option description to documentation in + `docs/configuration/configuration.rst` +4. Add unit tests for the validation of the option in `tests/unit/semantic_release/cli/config.py` +5. Add e2e tests for the option in `tests/e2e/` depending on the option's scope + and functionality. + +### Adding a new command line option + +1. Add the option to the appropriate CLI command in + `src/semantic_release/cli/commands/` +2. Add the option to the GitHub Action if it is for the `version` command +3. Add the option to the documentation in `docs/api/commands.rst` +4. Add the option to the GitHub Action documentation in + `docs/configuration/automatic-releases/github-actions.rst` +5. Add e2e tests for the option in `tests/e2e/cmd_/` + +### Adding a new changelog context filter + +1. Implement the filter in `src/semantic_release/changelog/context.py` +2. Add the filter to the changelog context and release notes context objects +3. Add unit tests for the filter in `tests/unit/semantic_release/changelog/**` +4. Add description and example of how to use the filter in the documentation + in `docs/concepts/changelog_templates.rst` + +## Important Files + +- `pyproject.toml`: Project configuration, dependencies, tool settings +- `action.yml`: GitHub Action definition +- `config/release-templates/`: Project-specific Jinja2 templates for changelog and release notes +- `.pre-commit-config.yaml`: Pre-commit hooks configuration +- `.readthedocs.yml`: ReadTheDocs configuration +- `CONTRIBUTING.rst`: Contribution guidelines + +## Documentation + +- Hosted on ReadTheDocs: https://python-semantic-release.readthedocs.io +- Source in `docs/` directory +- Uses Sphinx with Furo theme +- Build locally: `sphinx-build -b html docs docs/_build/html` +- View locally: open `docs/_build/html/index.html` + +## Python Version Support + +- Runtime Minimum: Python 3.8 +- Development Dependencies: Python 3.9+ +- Tested on: Python 3.8, 3.14 +- Target version for type checking: Python 3.8 + +## Dependencies to Know + +- **Click**: CLI framework +- **GitPython**: Git operations +- **Pydantic v2**: Configuration validation and models +- **Jinja2**: Template engine for changelogs +- **requests**: HTTP client for HVCS APIs +- **python-gitlab**: GitLab API client +- **tomlkit**: TOML parsing with formatting preservation +- **rich**: Rich terminal output + +## Helpful Tips + +- Never add real secrets, tokens, or credentials to source, commits, fixtures, or logs. + +- All proposed changes must include tests (unit and/or e2e as appropriate) and pass the + local quality gate before creating a PR. + +- When modifying configuration, update the Pydantic models in `cli/config.py` + +- Jinja2 changelog templates for this project are in `config/release-templates/`, whereas + the default changelog templates provided to users as a part of this project are in + `src/semantic_release/data/templates///**`. + +- The `RuntimeContext` object holds shared state across CLI commands + +- Use `--noop` flag to test commands without making changes + +- Version detection respects git tags - use annotated tags + +- The project uses its own tool for versioning, so commit messages matter! + +- When creating a Pull Request, create a PR description that fills out the + PR template found in `.github/PULL_REQUEST_TEMPLATE.md`. This will help + reviewers understand the changes and the impact of the PR. + +- If creating an issue, fill out one of the issue templates found in + `.github/ISSUE_TEMPLATE/` related to the type of issue (bug, feature request, etc.). + This will help maintainers understand the issue and its impact. + +- When adding new features, consider how they will affect the changelog and + versioning. Make as few breaking changes as possible by adding backwards compatibility + and if you do make a breaking change, be sure to include a detailed description in the + `BREAKING CHANGE` footer of the commit message. diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 85652f7c5..b1115d0c4 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -20,7 +20,7 @@ updates: # Maintain dependencies for Docker (ie our GitHub Action) - package-ecosystem: "docker" - directory: "/" + directory: "src/gh_action" schedule: interval: "monthly" labels: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cca7e057a..1d7930dfc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,18 +9,25 @@ on: # default token permissions = none permissions: {} +# If a new push is made to the branch, cancel the previous run +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: - commitlint: + lint-commits: # condition: Execute IFF it is protected branch update, or a PR that is NOT in a draft state if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Setup | Checkout Repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - - uses: wagoid/commitlint-github-action@v6 + - name: Lint | Commit Messages + uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1 eval-changes: @@ -30,19 +37,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Setup | Checkout Repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: - fetch-depth: 100 + fetch-depth: 0 - name: Evaluate | Check common file types for changes id: core-changed-files - uses: tj-actions/changed-files@v45.0.4 + uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 #v47.0.1 with: files_yaml_from_source_file: .github/changed-files-spec.yml - name: Evaluate | Check specific file types for changes id: ci-changed-files - uses: tj-actions/changed-files@v45.0.4 + uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 #v47.0.1 with: files_yaml: | ci: @@ -57,8 +65,10 @@ jobs: [ "${{ steps.ci-changed-files.outputs.ci_any_changed }}" == "true" ] || \ [ "${{ steps.core-changed-files.outputs.docs_any_changed }}" == "true" ] || \ [ "${{ steps.core-changed-files.outputs.src_any_changed }}" == "true" ] || \ - [ "${{ steps.core-changed-files.outputs.tests_any_changed }}" == "true" ]; then - printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT + [ "${{ steps.core-changed-files.outputs.tests_any_changed }}" == "true" ] || \ + [ "${{ steps.core-changed-files.outputs.gha_src_any_changed }}" == "true" ] || \ + [ "${{ steps.core-changed-files.outputs.gha_tests_any_changed }}" == "true" ]; then + printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT fi outputs: @@ -69,13 +79,18 @@ jobs: doc-changes: ${{ steps.core-changed-files.outputs.docs_any_changed }} src-changes: ${{ steps.core-changed-files.outputs.src_any_changed }} test-changes: ${{ steps.core-changed-files.outputs.tests_any_changed }} + gha-src-changes: ${{ steps.core-changed-files.outputs.gha_src_any_changed }} + gha-test-changes: ${{ steps.core-changed-files.outputs.gha_tests_any_changed }} validate: needs: eval-changes uses: ./.github/workflows/validate.yml with: - python-versions-linux: '["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]' + # It was a bit of overkill before testing every minor version, and since this project is all about + # SemVer, we should expect Python to adhere to that model to. Therefore Only test across 2 OS's but + # the lowest supported minor version and the latest stable minor version (just in case). + python-versions-linux: '["3.8", "3.14"]' # Since the test suite takes ~4 minutes to complete on windows, and windows is billed higher # we are only going to run it on the oldest version of python we support. The older version # will be the most likely area to fail as newer minor versions maintain compatibility. @@ -86,5 +101,7 @@ jobs: doc-files-changed: ${{ needs.eval-changes.outputs.doc-changes }} src-files-changed: ${{ needs.eval-changes.outputs.src-changes }} test-files-changed: ${{ needs.eval-changes.outputs.test-changes }} + gha-src-files-changed: ${{ needs.eval-changes.outputs.gha-src-changes }} + gha-test-files-changed: ${{ needs.eval-changes.outputs.gha-test-changes }} permissions: {} secrets: {} diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 74b1ff9ab..49d5f7cf4 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -19,21 +19,21 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Setup | Checkout Repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: - fetch-depth: 100 # Must at least retrieve a set of commits to compare changes - # primarily because of any 'Rebase and Merge' PR action in GitHub + fetch-depth: 0 - name: Evaluate | Check common file types for changes id: core-changed-files - uses: tj-actions/changed-files@v45.0.4 + uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 #v47.0.1 with: base_sha: ${{ github.event.push.before }} files_yaml_from_source_file: .github/changed-files-spec.yml - name: Evaluate | Check specific file types for changes id: ci-changed-files - uses: tj-actions/changed-files@v45.0.4 + uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 #v47.0.1 with: base_sha: ${{ github.event.push.before }} files_yaml: | @@ -49,8 +49,10 @@ jobs: [ "${{ steps.ci-changed-files.outputs.ci_any_changed }}" == "true" ] || \ [ "${{ steps.core-changed-files.outputs.docs_any_changed }}" == "true" ] || \ [ "${{ steps.core-changed-files.outputs.src_any_changed }}" == "true" ] || \ - [ "${{ steps.core-changed-files.outputs.tests_any_changed }}" == "true" ]; then - printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT + [ "${{ steps.core-changed-files.outputs.tests_any_changed }}" == "true" ] || \ + [ "${{ steps.core-changed-files.outputs.gha_src_any_changed }}" == "true" ] || \ + [ "${{ steps.core-changed-files.outputs.gha_tests_any_changed }}" == "true" ]; then + printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT fi outputs: @@ -60,23 +62,30 @@ jobs: doc-changes: ${{ steps.core-changed-files.outputs.docs_any_changed }} src-changes: ${{ steps.core-changed-files.outputs.src_any_changed }} test-changes: ${{ steps.core-changed-files.outputs.tests_any_changed }} + gha-src-changes: ${{ steps.core-changed-files.outputs.gha_src_any_changed }} + gha-test-changes: ${{ steps.core-changed-files.outputs.gha_tests_any_changed }} validate: uses: ./.github/workflows/validate.yml needs: eval-changes + concurrency: + group: ${{ github.workflow }}-validate-${{ github.ref_name }} + cancel-in-progress: true with: - python-versions-linux: '["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]' - # Since the test suite takes ~4 minutes to complete on windows, and windows is billed higher - # we are only going to run it on the oldest version of python we support. The older version - # will be the most likely area to fail as newer minor versions maintain compatibility. - python-versions-windows: '["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]' + # It was a bit of overkill before testing every minor version, and since this project is all about + # SemVer, we should expect Python to adhere to that model to. Therefore Only test across 2 OS's but + # the lowest supported minor version and the latest stable minor version. + python-versions-linux: '["3.8", "3.14"]' + python-versions-windows: '["3.8", "3.14"]' files-changed: ${{ needs.eval-changes.outputs.any-file-changes }} build-files-changed: ${{ needs.eval-changes.outputs.build-changes }} ci-files-changed: ${{ needs.eval-changes.outputs.ci-changes }} doc-files-changed: ${{ needs.eval-changes.outputs.doc-changes }} src-files-changed: ${{ needs.eval-changes.outputs.src-changes }} test-files-changed: ${{ needs.eval-changes.outputs.test-changes }} + gha-src-files-changed: ${{ needs.eval-changes.outputs.gha-src-changes }} + gha-test-files-changed: ${{ needs.eval-changes.outputs.gha-test-changes }} permissions: {} secrets: {} @@ -84,10 +93,13 @@ jobs: release: name: Semantic Release runs-on: ubuntu-latest - concurrency: push needs: validate if: ${{ needs.validate.outputs.new-release-detected == 'true' }} + concurrency: + group: ${{ github.workflow }}-release-${{ github.ref_name }} + cancel-in-progress: false + permissions: contents: write @@ -96,65 +108,57 @@ jobs: GITHUB_ACTIONS_AUTHOR_EMAIL: actions@users.noreply.github.com steps: - # Note: we need to checkout the repository at the workflow sha in case during the workflow - # the branch was updated. To keep PSR working with the configured release branches, - # we force a checkout of the desired release branch but at the workflow sha HEAD. - - name: Setup | Checkout Repository at workflow sha - uses: actions/checkout@v4 + # Note: We checkout the repository at the branch that triggered the workflow + # with the entire history to ensure to match PSR's release branch detection + # and history evaluation. + # However, we forcefully reset the branch to the workflow sha because it is + # possible that the branch was updated while the workflow was running. This + # prevents accidentally releasing un-evaluated changes. + - name: Setup | Checkout Repository on Release Branch + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: + ref: ${{ github.ref_name }} fetch-depth: 0 - ref: ${{ github.sha }} - - name: Setup | Force correct release branch on workflow sha + - name: Setup | Force release branch to be at workflow sha run: | - git checkout -B ${{ github.ref_name }} + git reset --hard ${{ github.sha }} - name: Setup | Download Build Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 id: artifact-download with: name: ${{ needs.validate.outputs.distribution-artifacts }} path: dist + - name: Release | Bump Version in Docs + if: needs.validate.outputs.new-release-is-prerelease == 'false' + env: + NEW_VERSION: ${{ needs.validate.outputs.new-release-version }} + NEW_RELEASE_TAG: ${{ needs.validate.outputs.new-release-tag }} + run: | + python -m scripts.bump_version_in_docs + git add docs/* + - name: Release | Python Semantic Release id: release - uses: ./ + uses: python-semantic-release/python-semantic-release@350c48fcb3ffcdfd2e0a235206bc2ecea6b69df0 # v10.5.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - root_options: "-v" + verbosity: 1 build: false - name: Release | Add distribution artifacts to GitHub Release Assets - uses: python-semantic-release/publish-action@v9.14.0 + uses: python-semantic-release/publish-action@310a9983a0ae878b29f3aac778d7c77c1db27378 # v10.5.3 + if: steps.release.outputs.released == 'true' with: github_token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ steps.release.outputs.tag }} - - name: Release | Update Minor Release Tag Reference - if: steps.release.outputs.released == 'true' && steps.release.outputs.is_prerelease == 'false' - env: - FULL_VERSION_TAG: ${{ steps.release.outputs.tag }} - GIT_COMMITTER_NAME: ${{ env.GITHUB_ACTIONS_AUTHOR_NAME }} - GIT_COMMITTER_EMAIL: ${{ env.GITHUB_ACTIONS_AUTHOR_EMAIL }} - run: | - MINOR_VERSION_TAG="$(echo "$FULL_VERSION_TAG" | cut -d. -f1,2)" - git tag --force --annotate "$MINOR_VERSION_TAG" "${FULL_VERSION_TAG}^{}" -m "$MINOR_VERSION_TAG" - git push -u origin "$MINOR_VERSION_TAG" --force - - - name: Release | Update Major Release Tag Reference - if: steps.release.outputs.released == 'true' && steps.release.outputs.is_prerelease == 'false' - env: - FULL_VERSION_TAG: ${{ steps.release.outputs.tag }} - GIT_COMMITTER_NAME: ${{ env.GITHUB_ACTIONS_AUTHOR_NAME }} - GIT_COMMITTER_EMAIL: ${{ env.GITHUB_ACTIONS_AUTHOR_EMAIL }} - run: | - MAJOR_VERSION_TAG="$(echo "$FULL_VERSION_TAG" | cut -d. -f1)" - git tag --force --annotate "$MAJOR_VERSION_TAG" "${FULL_VERSION_TAG}^{}" -m "$MAJOR_VERSION_TAG" - git push -u origin "$MAJOR_VERSION_TAG" --force - outputs: - released: ${{ steps.release.outputs.released }} - tag: ${{ steps.release.outputs.tag }} + released: ${{ steps.release.outputs.released || 'false' }} + new-release-version: ${{ steps.release.outputs.version }} + new-release-tag: ${{ steps.release.outputs.tag }} deploy: @@ -174,21 +178,8 @@ jobs: id-token: write # needed for PyPI upload steps: - # Note: we need to checkout the repository at the workflow sha in case during the workflow - # the branch was updated. To keep PSR working with the configured release branches, - # we force a checkout of the desired release branch but at the workflow sha HEAD. - - name: Setup | Checkout Repository at workflow sha - uses: actions/checkout@v4 - with: - fetch-depth: 1 - ref: ${{ github.sha }} - - - name: Setup | Force correct release branch on workflow sha - run: | - git checkout -B ${{ github.ref_name }} - - name: Setup | Download Build Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 id: artifact-download with: name: ${{ needs.validate.outputs.distribution-artifacts }} @@ -197,6 +188,8 @@ jobs: # see https://docs.pypi.org/trusted-publishers/ - name: Publish package distributions to PyPI id: pypi-publish - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0 with: + packages-dir: dist + print-hash: true verbose: true diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 4e54606dd..67d256fea 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -14,6 +14,11 @@ on: type: boolean required: true default: true + python3-14: + description: 'Test Python 3.14?' + type: boolean + required: true + default: true python3-13: description: 'Test Python 3.13?' type: boolean @@ -60,12 +65,12 @@ jobs: steps: - name: Setup | Install Python ${{ env.COMMON_PYTHON_VERSION }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ env.COMMON_PYTHON_VERSION }} - name: Setup | Write file - uses: DamianReeves/write-file-action@v1.3 + uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42 #v1.3 with: path: .github/manual_eval_input.py write-mode: overwrite @@ -79,6 +84,7 @@ jobs: "3.11" if str(os.getenv("INPUT_PY3_11", False)).lower() == str(True).lower() else None, "3.12" if str(os.getenv("INPUT_PY3_12", False)).lower() == str(True).lower() else None, "3.13" if str(os.getenv("INPUT_PY3_13", False)).lower() == str(True).lower() else None, + "3.14" if str(os.getenv("INPUT_PY3_14", False)).lower() == str(True).lower() else None, ])) linux_versions = ( @@ -105,6 +111,7 @@ jobs: INPUT_PY3_11: ${{ inputs.python3-11 }} INPUT_PY3_12: ${{ inputs.python3-12 }} INPUT_PY3_13: ${{ inputs.python3-13 }} + INPUT_PY3_14: ${{ inputs.python3-14 }} INPUT_LINUX: ${{ inputs.linux }} INPUT_WINDOWS: ${{ inputs.windows }} run: | @@ -133,6 +140,8 @@ jobs: doc-files-changed: true src-files-changed: true test-files-changed: true + gha-src-files-changed: true + gha-test-files-changed: true files-changed: true permissions: {} secrets: {} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index de75b9be0..ba5c00d1c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -23,12 +23,12 @@ jobs: STALE_PR_CLOSURE_DAYS: 10 UNRESPONSIVE_WARNING_DAYS: 14 UNRESPONSIVE_CLOSURE_DAYS: 7 - REMINDER_WINDOW: 60 + REMINDER_WINDOW: 90 OPERATIONS_RATE_LIMIT: 330 # 1000 api/hr / 3 jobs steps: - name: Stale Issues/PRs - uses: actions/stale@v9 + uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 with: # default: 30, GitHub Actions API Rate limit is 1000/hr operations-per-run: ${{ env.OPERATIONS_RATE_LIMIT }} @@ -67,7 +67,7 @@ jobs: # that point the submitter has 14 days before a reminder/warning is given. If # no response has been received within 3 weeks, the issue is closed. There are # no exemptions besides removing the awaiting-reply label. - uses: actions/stale@v9 + uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 with: # GitHub Actions API Rate limit is 1000/hr operations-per-run: ${{ env.OPERATIONS_RATE_LIMIT }} @@ -97,7 +97,7 @@ jobs: # forgotten completely, this job will post a reminder message to the maintainers # No closures will occur and there are no exemptions besides removing the confirmed # label. - uses: actions/stale@v9 + uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 with: # GitHub Actions API Rate limit is 1000/hr operations-per-run: ${{ env.OPERATIONS_RATE_LIMIT }} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index ea1e214ea..4ee55db53 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -43,10 +43,29 @@ on: type: string required: false default: 'false' + gha-src-files-changed: + description: 'Boolean string result for if GitHub Action source files have changed' + type: string + required: false + default: 'false' + gha-test-files-changed: + description: 'Boolean string result for if GitHub Action test files have changed' + type: string + required: false + default: 'false' outputs: new-release-detected: description: Boolean string result for if new release is available value: ${{ jobs.build.outputs.new-release-detected }} + new-release-version: + description: Version string for the new release + value: ${{ jobs.build.outputs.new-release-version }} + new-release-tag: + description: Tag string for the new release + value: ${{ jobs.build.outputs.new-release-tag }} + new-release-is-prerelease: + description: Boolean string result for if new release is a pre-release + value: ${{ jobs.build.outputs.new-release-is-prerelease }} distribution-artifacts: description: Artifact Download name for the distribution artifacts value: ${{ jobs.build.outputs.distribution-artifacts }} @@ -67,11 +86,11 @@ jobs: build: name: Build runs-on: ubuntu-latest - if: ${{ inputs.build-files-changed == 'true' || inputs.src-files-changed == 'true' || inputs.test-files-changed == 'true' || inputs.ci-files-changed == 'true' }} + if: ${{ inputs.build-files-changed == 'true' || inputs.src-files-changed == 'true' || inputs.test-files-changed == 'true' || inputs.ci-files-changed == 'true' || inputs.gha-src-files-changed == 'true' || inputs.gha-test-files-changed == 'true' }} steps: - name: Setup | Checkout Repository at workflow sha - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.sha }} fetch-depth: 0 @@ -81,7 +100,7 @@ jobs: git checkout -B ${{ github.ref_name }} - name: Setup | Install Python ${{ env.COMMON_PYTHON_VERSION }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ env.COMMON_PYTHON_VERSION }} cache: 'pip' @@ -91,22 +110,36 @@ jobs: python -m pip install --upgrade pip setuptools wheel pip install -e .[build] - - name: Build | Create the distribution artifacts + - name: Build | Build next version artifacts + id: version + uses: python-semantic-release/python-semantic-release@350c48fcb3ffcdfd2e0a235206bc2ecea6b69df0 # v10.5.3 + with: + github_token: "" + verbosity: 1 + build: true + changelog: true + commit: false + push: false + tag: false + vcs_release: false + + - name: Build | Annotate next version + if: steps.version.outputs.released == 'true' + run: | + printf '%s\n' "::notice::Next release will be '${{ steps.version.outputs.tag }}'" + + - name: Build | Create non-versioned distribution artifact + if: steps.version.outputs.released == 'false' + run: python -m build . + + - name: Build | Set distribution artifact variables id: build run: | - if new_version="$(semantic-release --strict version --print)"; then - printf '%s\n' "::notice::Next version will be '$new_version'" - printf '%s\n' "new_release_detected=true" >> $GITHUB_OUTPUT - semantic-release version --changelog --no-commit --no-tag - else - printf '%s\n' "new_release_detected=false" >> $GITHUB_OUTPUT - python -m build . - fi printf '%s\n' "dist_dir=dist/*" >> $GITHUB_OUTPUT printf '%s\n' "artifacts_name=dist" >> $GITHUB_OUTPUT - name: Upload | Distribution Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: ${{ steps.build.outputs.artifacts_name }} path: ${{ steps.build.outputs.dist_dir }} @@ -114,7 +147,10 @@ jobs: retention-days: 2 outputs: - new-release-detected: ${{ steps.build.outputs.new_release_detected }} + new-release-detected: ${{ steps.version.outputs.released }} + new-release-version: ${{ steps.version.outputs.version }} + new-release-tag: ${{ steps.version.outputs.tag }} + new-release-is-prerelease: ${{ steps.version.outputs.is_prerelease }} distribution-artifacts: ${{ steps.build.outputs.artifacts_name }} @@ -125,13 +161,13 @@ jobs: steps: - name: Setup | Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.sha }} fetch-depth: 1 - name: Setup | Install Python ${{ env.LOWEST_PYTHON_VERSION }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ env.LOWEST_PYTHON_VERSION }} cache: 'pip' @@ -144,6 +180,8 @@ jobs: - name: Test | Run pytest -m unit --comprehensive id: tests + env: + COLUMNS: 150 run: | pytest \ -vv \ @@ -157,7 +195,7 @@ jobs: --junit-xml=tests/reports/pytest-results.xml - name: Report | Upload Test Results - uses: mikepenz/action-junit-report@v5.0.0 + uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1 if: ${{ always() && steps.tests.outcome != 'skipped' }} with: report_paths: ./tests/reports/*.xml @@ -179,19 +217,19 @@ jobs: steps: - name: Setup | Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.sha }} fetch-depth: 1 - name: Setup | Install Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ matrix.python-version }} cache: 'pip' - name: Setup | Download Distribution Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: ${{ needs.build.outputs.distribution-artifacts }} path: ./dist @@ -212,6 +250,8 @@ jobs: - name: Test | Run pytest -m e2e --comprehensive id: tests + env: + COLUMNS: 150 run: | pytest \ -vv \ @@ -225,7 +265,7 @@ jobs: --junit-xml=tests/reports/pytest-results.xml - name: Report | Upload Cached Repos on Failure - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() && steps.tests.outcome == 'failure' }} with: name: ${{ format('cached-repos-{0}-{1}', matrix.os, matrix.python-version) }} @@ -235,7 +275,7 @@ jobs: retention-days: 1 - name: Report | Upload Tested Repos on Failure - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() && steps.tests.outcome == 'failure' }} with: name: ${{ format('tested-repos-{0}-{1}', matrix.os, matrix.python-version) }} @@ -245,7 +285,7 @@ jobs: retention-days: 1 - name: Report | Upload Test Results - uses: mikepenz/action-junit-report@v5.0.0 + uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1 if: ${{ always() && steps.tests.outcome != 'skipped' }} with: report_paths: ./tests/reports/*.xml @@ -266,19 +306,19 @@ jobs: steps: - name: Setup | Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.sha }} fetch-depth: 1 - name: Setup | Install Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ matrix.python-version }} cache: 'pip' - name: Setup | Download Distribution Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: ${{ needs.build.outputs.distribution-artifacts }} path: dist @@ -304,12 +344,15 @@ jobs: - name: Test | Run pytest -m e2e id: tests shell: pwsh + # env: # Required for GitPython to work on Windows because of getpass.getuser() # USERNAME: "runneradmin" + # COLUMNS: 150 # Because GHA is currently broken on Windows to pass these varables, we do it manually run: | $env:USERNAME = "runneradmin" + $env:COLUMNS = 150 pytest ` -vv ` -nauto ` @@ -320,7 +363,7 @@ jobs: `--junit-xml=tests/reports/pytest-results.xml - name: Report | Upload Cached Repos on Failure - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() && steps.tests.outcome == 'failure' }} with: name: ${{ format('cached-repos-{0}-{1}', matrix.os, matrix.python-version) }} @@ -330,23 +373,72 @@ jobs: retention-days: 1 - name: Report | Upload Tested Repos on Failure - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() && steps.tests.outcome == 'failure' }} with: name: ${{ format('tested-repos-{0}-{1}', matrix.os, matrix.python-version) }} - path: /tmp/pytest-of-runner/pytest-current/* + path: ~/AppData/Local/Temp/pytest-of-runneradmin/pytest-current/* include-hidden-files: true if-no-files-found: error retention-days: 1 - name: Report | Upload Test Results - uses: mikepenz/action-junit-report@v5.0.0 + uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1 if: ${{ always() && steps.tests.outcome != 'skipped' }} with: report_paths: ./tests/reports/*.xml annotate_only: true + test-gh-action: + name: Validate Action Build & Execution + runs-on: ubuntu-latest + if: ${{ inputs.gha-src-files-changed == 'true' || inputs.gha-test-files-changed == 'true' || inputs.ci-files-changed == 'true' }} + + needs: + - build + + env: + TEST_CONTAINER_TAG: psr-action:latest + ACTION_SRC_DIR: src/gh_action + + steps: + - name: Setup | Checkout Repository + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + fetch-depth: 1 + ref: ${{ github.sha }} + + - name: Setup | Download Distribution Artifacts + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 + with: + name: ${{ needs.build.outputs.distribution-artifacts }} + path: ${{ env.ACTION_SRC_DIR }} + + - name: Setup | Update Dependency list with latest version + working-directory: ${{ env.ACTION_SRC_DIR }} + run: | + find . -name '*.whl' > requirements.txt + + - name: Setup | Allow Docker build to include wheel files + working-directory: ${{ env.ACTION_SRC_DIR }} + run: | + printf '%s\n' "!*.whl" >> .dockerignore + + - name: Build | Action Container + id: container-builder + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + with: + context: ${{ env.ACTION_SRC_DIR }} + load: true # add to `docker images` + push: false + platforms: linux/amd64 + tags: ${{ env.TEST_CONTAINER_TAG }} + + - name: Test | Action Container + run: bash tests/gh_action/run.sh + + lint: name: Lint if: ${{ inputs.files-changed == 'true' }} @@ -354,13 +446,13 @@ jobs: steps: - name: Setup | Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.sha }} fetch-depth: 1 - name: Setup | Install Python ${{ env.COMMON_PYTHON_VERSION }} - uses: actions/setup-python@v5 + uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ env.COMMON_PYTHON_VERSION }} cache: 'pip' @@ -368,7 +460,9 @@ jobs: - name: Setup | Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install -e .[dev,mypy] + pip install -e .[dev,mypy,test] + # needs test because we run mypy over the tests as well and without the dependencies + # mypy will throw import errors - name: Lint | Ruff Evaluation id: lint @@ -382,7 +476,7 @@ jobs: id: type-check if: ${{ always() && steps.lint.outcome != 'skipped' }} run: | - mypy --ignore-missing-imports src/ + mypy . - name: Format-Check | Ruff Evaluation id: format-check diff --git a/.gitignore b/.gitignore index 7b02cda5b..db2c6f98d 100644 --- a/.gitignore +++ b/.gitignore @@ -61,7 +61,7 @@ coverage.xml # Sphinx documentation docs/_build/ -docs/api/ +docs/api/modules/ # PyBuilder target/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5d1f5b795..5ae875b90 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -50,14 +50,14 @@ repos: name: ruff (format) - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.13.0" + rev: "v1.16.1" hooks: - id: mypy additional_dependencies: - "pydantic>=2,<3" - "types-requests" log_file: "mypy.log" - files: "^src/.*" + files: "^(src|tests)/.*" pass_filenames: false - repo: https://github.com/pre-commit/pygrep-hooks diff --git a/AUTHORS.rst b/AUTHORS.rst deleted file mode 100644 index 0a7309b92..000000000 --- a/AUTHORS.rst +++ /dev/null @@ -1,7 +0,0 @@ -Contributors ------------- - -|contributors| - -.. |contributors| image:: https://contributors-img.web.app/image?repo=relekang/python-semantic-release - :target: https://github.com/relekang/python-semantic-release/graphs/contributors diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index bcbfb9497..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,4695 +0,0 @@ -# CHANGELOG - - -## v9.14.0 (2024-11-11) - -### Bug Fixes - -- **release-notes**: Override default wordwrap to non-wrap for in default template - ([`99ab99b`](https://github.com/python-semantic-release/python-semantic-release/commit/99ab99bb0ba350ca1913a2bde9696f4242278972)) - -### Documentation - -- **changelog-templates**: Document new `mask_initial_release` changelog context variable - ([`f294957`](https://github.com/python-semantic-release/python-semantic-release/commit/f2949577dfb2dbf9c2ac952c1bbcc4ab84da080b)) - -- **configuration**: Document new `mask_initial_release` option usage & effect - ([`3cabcdc`](https://github.com/python-semantic-release/python-semantic-release/commit/3cabcdcd9473e008604e74cc2d304595317e921d)) - -- **homepage**: Fix reference to new ci workflow for test status badge - ([`6760069`](https://github.com/python-semantic-release/python-semantic-release/commit/6760069e7489f50635beb5aedbbeb2cb82b7c584)) - -### Features - -- **context**: Add `mask_initial_release` setting to changelog context - ([`6f2ee39`](https://github.com/python-semantic-release/python-semantic-release/commit/6f2ee39414b3cf75c0b67dee4db0146bbc1041bb)) - -- **configuration**: Add `changelog.default_templates.mask_initial_release` option - ([`595a70b`](https://github.com/python-semantic-release/python-semantic-release/commit/595a70bcbc8fea1f8ccf6c5069c41c35ec4efb8d)) - -- **release-notes**: Define first release w/o change descriptions in default template - ([`83167a3`](https://github.com/python-semantic-release/python-semantic-release/commit/83167a3dcceb7db16b790e1b0efd5fc75fee8942)) - -- **changelog**: Define first release w/o change descriptions for default RST template - ([`e30c94b`](https://github.com/python-semantic-release/python-semantic-release/commit/e30c94bffe62b42e8dc6ed4fed6260e57b4d532b)) - -- **changelog**: Define first release w/o change descriptions for default MD template - ([`fa89dec`](https://github.com/python-semantic-release/python-semantic-release/commit/fa89dec239efbae7544b187f624a998fa9ecc309)) - -- **changelog**: Add md to rst conversion for markdown inline links - ([`cb2af1f`](https://github.com/python-semantic-release/python-semantic-release/commit/cb2af1f17cf6c8ae037c6cd8bb8b4d9c019bb47e)) - -- **changelog-md**: Add markdown inline link format macro - ([`c6d8211`](https://github.com/python-semantic-release/python-semantic-release/commit/c6d8211c859442df17cb41d2ff19fdb7a81cdb76)) - -- **changelogs**: Prefix scopes on commit descriptions in default template - ([#1093](https://github.com/python-semantic-release/python-semantic-release/pull/1093), - [`560fd2c`](https://github.com/python-semantic-release/python-semantic-release/commit/560fd2c0d58c97318377cb83af899a336d24cfcc)) - -* test(changelog): update default changelog unit tests to handle commit scope - -* test(release-notes): update default release notes unit tests to handle commit scope - -* test(fixtures): update changelog generator fixture to handle scope additions - -* test(cmd-version): update implementation for test resiliency - -* feat(changelog-md): prefix scopes on commit descriptions in Markdown changelog template - -* feat(changelog-rst): prefix scopes on commit descriptions in ReStructuredText template - - -## v9.13.0 (2024-11-10) - -### Bug Fixes - -- **changelog-rst**: Ignore unknown parsed commit types in default RST changelog - ([`77609b1`](https://github.com/python-semantic-release/python-semantic-release/commit/77609b1917a00b106ce254e6f6d5edcd1feebba7)) - -- **parser-angular**: Drop the `breaking` category but still maintain a major level bump - ([`f1ffa54`](https://github.com/python-semantic-release/python-semantic-release/commit/f1ffa5411892de34cdc842fd55c460a24b6685c6)) - -- **parsers**: Improve reliability of text unwordwrap of descriptions - ([`436374b`](https://github.com/python-semantic-release/python-semantic-release/commit/436374b04128d1550467ae97ba90253f1d1b3878)) - -### Documentation - -- **changelog-templates**: Fix api class reference links - ([`7a5bdf2`](https://github.com/python-semantic-release/python-semantic-release/commit/7a5bdf29b3df0f9a1346ea5301d2a7fee953667b)) - -- **changelog-templates**: Add `linked_merge_request` field to examples - ([`d4376bc`](https://github.com/python-semantic-release/python-semantic-release/commit/d4376bc2ae4d3708d501d91211ec3ee3a923e9b5)) - -- **commit-parsing**: Add `linked_merge_request` field to Parsed Commit definition - ([`ca61889`](https://github.com/python-semantic-release/python-semantic-release/commit/ca61889d4ac73e9864fbf637fb87ab2d5bc053ea)) - -### Features - -- **changelog**: Add PR/MR url linking to default reStructuredText template - ([`5f018d6`](https://github.com/python-semantic-release/python-semantic-release/commit/5f018d630b4c625bdf6d329b27fd966eba75b017)) - -Resolves: #924, #953 - -- **changelog**: Add PR/MR url linking to default Markdown changelog - ([`cd8d131`](https://github.com/python-semantic-release/python-semantic-release/commit/cd8d1310a4000cc79b529fbbdc58933f4c6373c6)) - -Resolves: #924, #953 - -- **parser-scipy**: Automatically parse PR/MR numbers from subject lines in commits - ([`2b3f738`](https://github.com/python-semantic-release/python-semantic-release/commit/2b3f73801f5760bac29acd93db3ffb2bc790cda0)) - -- **parser-emoji**: Automatically parse PR/MR numbers from subject lines in commits - ([`bca9909`](https://github.com/python-semantic-release/python-semantic-release/commit/bca9909c1b61fdb1f9ccf823fceb6951cd059820)) - -- **parser-angular**: Automatically parse PR/MR numbers from subject lines in commits - ([`2ac798f`](https://github.com/python-semantic-release/python-semantic-release/commit/2ac798f92e0c13c1db668747f7e35a65b99ae7ce)) - -- **parsed-commit**: Add linked merge requests list to the `ParsedCommit` object - ([`9a91062`](https://github.com/python-semantic-release/python-semantic-release/commit/9a9106212d6c240e9d3358e139b4c4694eaf9c4b)) - -### Performance Improvements - -- **parser-scipy**: Increase speed & decrease complexity of commit parsing - ([`2b661ed`](https://github.com/python-semantic-release/python-semantic-release/commit/2b661ed122a6f0357a6b92233ac1351c54c7794e)) - -- **parser-emoji**: Increase speed of commit parsing - ([`2c9c468`](https://github.com/python-semantic-release/python-semantic-release/commit/2c9c4685a66feb35cd78571cf05f76344dd6d66a)) - -- **parser-angular**: Simplify commit parsing type pre-calculation - ([`a86a28c`](https://github.com/python-semantic-release/python-semantic-release/commit/a86a28c5e26ed766cda71d26b9382c392e377c61)) - - -## v9.12.2 (2024-11-07) - -### Bug Fixes - -- **hvcs-***: Add flexibility to issue & MR/PR url jinja filters - ([#1089](https://github.com/python-semantic-release/python-semantic-release/pull/1089), - [`275ec88`](https://github.com/python-semantic-release/python-semantic-release/commit/275ec88e6d1637c47065bb752a60017ceba9876c)) - -* fix(github): fix `issue_url` filter to ignore an issue prefix gracefully - -* fix(github): fix `pull_request_url` filter to ignore an PR prefix gracefully - -* fix(gitlab): fix `issue_url` filter to ignore an issue prefix gracefully - -* fix(gitlab): fix `merge_request_url` filter to ignore an PR prefix gracefully - -* fix(gitea): fix `issue_url` filter to ignore an issue prefix gracefully - -* fix(gitea): fix `pull_request_url` filter to ignore an PR prefix gracefully - -* fix(bitbucket): fix `pull_request_url` filter to ignore an PR prefix gracefully - -* test(bitbucket): add test case for prefixed PR numbers - -* test(gitea): add test case for prefixed PR & issue numbers - -* test(gitlab): add test case for prefixed PR & issue numbers - -* test(github): add test case for prefixed PR & issue numbers - -* style(hvcs): fix logical lint errors - -* docs(changelog-templates): update descriptions of issue & MR/PR url jinja filters - -- **cli**: Gracefully capture all exceptions unless in very verbose debug mode - ([#1088](https://github.com/python-semantic-release/python-semantic-release/pull/1088), - [`13ca44f`](https://github.com/python-semantic-release/python-semantic-release/commit/13ca44f4434098331f70e6937684679cf1b4106a)) - -* refactor(cli): consolidate entrypoints into the module execute file - - -## v9.12.1 (2024-11-06) - -### Bug Fixes - -- **cmd-version**: Fix `--as-prerelease` when no commit change from last full release - ([#1076](https://github.com/python-semantic-release/python-semantic-release/pull/1076), - [`3b7b772`](https://github.com/python-semantic-release/python-semantic-release/commit/3b7b77246100cedd8cc8f289395f7641187ffdec)) - -- **changelog**: Fix raw-inline pattern replacement in `convert_md_to_rst` filter - ([`2dc70a6`](https://github.com/python-semantic-release/python-semantic-release/commit/2dc70a6106776106b0fba474b0029071317d639f)) - -- **release-notes**: Add context variable shorthand `ctx` like docs claim & changelog has - ([`d618d83`](https://github.com/python-semantic-release/python-semantic-release/commit/d618d83360c4409fc149f70b97c5fe338fa89968)) - -### Documentation - -- **contributing**: Update local testing instructions - ([`74f03d4`](https://github.com/python-semantic-release/python-semantic-release/commit/74f03d44684b7b2d84f9f5e471425b02f8bf91c3)) - - -## v9.12.0 (2024-10-18) - -### Bug Fixes - -- **parser-emoji**: Enable the default bump level option - ([`bc27995`](https://github.com/python-semantic-release/python-semantic-release/commit/bc27995255a96b9d6cc743186e7c35098822a7f6)) - -- **changelog**: Ignore commit exclusion when a commit causes a version bump - ([`e8f886e`](https://github.com/python-semantic-release/python-semantic-release/commit/e8f886ef2abe8ceaea0a24a0112b92a167abd6a9)) - -- **parser-angular**: Change `Fixes` commit type heading to `Bug Fixes` - ([#1064](https://github.com/python-semantic-release/python-semantic-release/pull/1064), - [`09e3a4d`](https://github.com/python-semantic-release/python-semantic-release/commit/09e3a4da6237740de8e9932d742b18d990e9d079)) - -* test(fixtures): update expected changelog heading to `Bug Fixes` - -* test(unit): update expected changelog heading to `Bug Fixes` - -### Documentation - -- **configuration**: Add deprecation message for the tag parser - ([`a83b7e4`](https://github.com/python-semantic-release/python-semantic-release/commit/a83b7e43e4eaa99790969a6c85f44e01cde80d0a)) - -- **commit-parsers**: Add deprecation message for the tag parser - ([`af94540`](https://github.com/python-semantic-release/python-semantic-release/commit/af94540f2b1c63bf8a4dc977d5d0f66176962b64)) - -### Features - -- **changelog**: Add `autofit_text_width` filter to template environment - ([#1062](https://github.com/python-semantic-release/python-semantic-release/pull/1062), - [`83e4b86`](https://github.com/python-semantic-release/python-semantic-release/commit/83e4b86abd4754c2f95ec2e674f04deb74b9a1e6)) - -This change adds an equivalent style formatter that can apply a text alignment to a maximum width - and also maintain an indent over paragraphs of text - -* docs(changelog-templates): add definition & usage of `autofit_text_width` template filter - -* test(changelog-context): add test cases to check `autofit_text_width` filter use - - -## v9.11.1 (2024-10-15) - -### Bug Fixes - -- **changelog**: Prevent custom template errors when components are in hidden folders - ([#1060](https://github.com/python-semantic-release/python-semantic-release/pull/1060), - [`a7614b0`](https://github.com/python-semantic-release/python-semantic-release/commit/a7614b0db8ce791e4252209e66f42b5b5275dffd)) - - -## v9.11.0 (2024-10-12) - -### Features - -- **changelog**: Add default changelog template in reStructuredText format - ([#1055](https://github.com/python-semantic-release/python-semantic-release/pull/1055), - [`c2e8831`](https://github.com/python-semantic-release/python-semantic-release/commit/c2e883104d3c11e56f229638e988d8b571f86e34)) - -* test(fixtures): update repo generation to create rst & md changelogs - -* test(release-history): refactor fragile test to utilize repo fixture definitions - -* test(changelog-cmd): update tests to evaluate rst changelog generation & updates - -* test(version-cmd): update tests to evaluate rst changelog generation & updates - -* test(version-cmd): update test code to match new commit definition functions - -* test(config): add test to validate `insertion_flag` default determination - -* feat(changelog): add `convert_md_to_rst` filter to changelog environment - -* feat(changelog): add default changelog in re-structured text format - -This change adds the templates to create an equivalent CHANGELOG.RST file in angular changelog - style. It can be enabled via the `output_format` configuration setting. - -Resolves: #399 - -* feat(config): enable target changelog filename to trigger RST output format - -Resolves: #399 - -* feat(config): enable default `changelog.insertion_flag` based on output format - -* refactor(config): move `changelog_file` setting under `changelog.default_templates` - -This change adds a secondary `changelog_file` setting under the default_templates section while - deprecating the top level one. Since this is not intended to be a breaking change we provided a - warning message and compatibility code to pass along the current `changelog_file` value to the new - setting location while giving the user a notification to update before the next version. - -* fix(changelog): correct spacing for default markdown template during updates - -* docs(configuration): update details of `insertion_flag`'s dynamic defaults with rst - -* docs(configuration): update `output_format` description for reStructuredText support - -* docs(configuration): update `changelog_file` with deprecation notice of setting relocation - -* docs(changelog): clarify the `convert_md_to_rst` filter added to the template environment - -* docs(changelog): increase detail about configuration options of default changelog creation - - -## v9.10.1 (2024-10-10) - -### Bug Fixes - -- **config**: Handle branch match regex errors gracefully - ([#1054](https://github.com/python-semantic-release/python-semantic-release/pull/1054), - [`4d12251`](https://github.com/python-semantic-release/python-semantic-release/commit/4d12251c678a38de6b71cac5b9c1390eb9dd8ad6)) - -prevents stacktrace error when user provided regex for a branch name match is invalid. Translates - most common failure of a plain wildcard `*` character to the implied proper regex - - -## v9.10.0 (2024-10-08) - -### Documentation - -- **github-actions**: Update primary example with workflow sha controlled pipeline - ([`14f04df`](https://github.com/python-semantic-release/python-semantic-release/commit/14f04dffc7366142faecebb162d4449501cbf1fd)) - -### Features - -- **changelog**: Modify changelog template to support changelog updates - ([#1045](https://github.com/python-semantic-release/python-semantic-release/pull/1045), - [`c18c245`](https://github.com/python-semantic-release/python-semantic-release/commit/c18c245df51a9778af09b9dc7a315e3f11cdcda0)) - -* feat(changelog): add `read_file` function to changelog template context - -This feature adds a filter that will enable jinja templates to read a file from the repository into - memory to then use as output within the template. The primary use for this is to read in a - previous changelog file which then the template can give the illusion of insertion as it re-writes - the entire file. - -* feat(changelog): add `changelog_mode` to changelog template context - -Adds a flag that can be passed to the templating environment to allow for triggering an update mode - of a changelog versions an initialization mode. The usage is up to the template developer but for - PSR it is used to handle changelog generation vs changelog updating. - -* feat(changelog): add `prev_changelog_file` to changelog template context - -This adds a string that represents a filename to a previous changelog file which can be read from - inside the template context. The primary use is for enabling the updating of a changelog through - jinja templating. - -* feat(changelog): add `changelog_insertion_flag` to changelog template context - -This adds a customizable string to the jinja templating context which allows users to use the PSR - configuration to pass a custom insertion flag into the templating context. This is intended for - use with initializing a changelog and then updating it from that point forward. - -* feat(changelog): add shorthand `ctx` variable to changelog template env - -* refactor(changelog): change recursive render to not use file streaming - -It would be nice to maintain file streaming for better memory usage but it prevents the ability to - read the file contents previously from within the template which is a desire in order to insert - into a previous changelog. In this case, the memory usage is likely not a problem for large text - files. - -* fix(config): prevent jinja from autoescaping markdown content by default - -Since this project is generally rendering non-html content such as RST or MD, change the default of - the jinja autoescape parameter to false instead of true. When it was true, it would automatically - convert any `&` ampersands to its htmlentity equivalent `&` which is completely unnecessary - and unreadable in non-html documents. - -* docs(configuration): update `changelog.environment.autoescape` default to `false` to match code - -* docs(configuration): standardize all true/false to lowercase ensuring toml-compatibility - -* feat(config): add `changelog.mode` as configuration option - -* feat(config): add `changelog.insertion_flag` as configuration option - -* refactor(config): use `changelog.changelog_file` as previous changelog file for target for update - -* style(config): alphabetize changelog configuration options - -* docs(configuration): add `changelog.mode` and `changelog.insertion_flag` config definitions - -* fix(changelog): adjust angular heading names for readability - -* feat(changelog): modify changelog template to support changelog updates - -By popular demand, the desire to only prepend new information to the changelog is now possible given - the `changelog.mode = update` configuration option. - -Resolves: #858, #722 - -* refactor(errors): add new generic internal error for tragic improbable flaws - -* fix(changelog): ensure changelog templates can handle complex directory includes - -* feat(config): add `changelog.default_templates.output_format` config option - -* fix(changelog): only render user templates when files exist - -This change ensures that we will use our default even when the user only overrides the release notes - template. It also must have jinja templates in the folder otherwise we will render the default - changelog. - -* refactor(changelog): enable default changelog rendering of multiple template parts - -* refactor(changelog): change rendering of default release notes to new template structure - -* refactor(context): use pathlib instead of context manager to read file - -* test(fixtures): update changelog generator format & angular heading names - -* test(angular): adjust test of commit type to section header - -* test(changelog): update make changelog context function call - -* test(release-notes): update test related to release notes generation - -* test(fixtures): add processing to filter out repo definitions for partial changelogs - -* test(fixtures): update repo generators to update changelogs w/ every version - -* test(fixtures): slow down repo generators to prevent git failures from same timestamps - -* test(fixtures): update changelog generator to include insertion flag - -* refactor(changelog): fix template to handle update when no releases exist - -* refactor(changelog): adjust template to use improved release object - -* refactor(changelog): improve resilence & non-existant initial changelog - -* style(changelog-templates): maintain 2-spaces indentation throughout jinja templates - -* refactor(changelog): ensure cross-platform template includes with jinja compatibility - -* test(changelog-cmd): add tests to evaluate variations of the changelog update mode - -* test(version-cmd): add tests to evaluate variations of the changelog update mode - -* refactor(release-notes): normalize line endings to universal newlines & always end with newline - -* refactor(changelog): ensure default changelog renders w/ universal newlines & writes as - os-specific - -* test(changelog): update changelog testing implementation to be newline aware - -* test: update tests to use cross-platform newlines where appropriate - -* docs(changelog-templates): improve detail & describe new `changelog.mode="update"` - -* docs(configuration): mark version of configuration setting introduction - -* docs(homepage): update custom changelog reference - -* refactor(changelog): adjust read_file filter to read file as os-newline aware - -* refactor(changelog): apply forced universal newline normalizer on default changelog - -* test(changelog): adjust implementation to consistently work on windows - -* test(version): adjust implementation to consistently work on windows - -* refactor(changelog-template): only add insertion flag if in update mode - -* test(changelog): adjust test to handle changelog regeneration in init mode - -* refactor(changelog-templates): adjust init template to clean up extra newlines - -* test(changelog): adjust expected output after cleaned up newlines - -* docs(configuration): define the new `changelog.default_templates.output_format` option - -- **github-actions**: Add an action `build` directive to toggle the `--skip-build` option - ([#1044](https://github.com/python-semantic-release/python-semantic-release/pull/1044), - [`26597e2`](https://github.com/python-semantic-release/python-semantic-release/commit/26597e24a80a37500264aa95a908ba366699099e)) - -* docs(commands): update definition of the version commands `--skip-build` option - -* docs(github-actions): add description of the `build` input directive - - -## v9.9.0 (2024-09-28) - -### Documentation - -- **github-actions**: Clarify & consolidate GitHub Actions usage docs - ([#1011](https://github.com/python-semantic-release/python-semantic-release/pull/1011), - [`2135c68`](https://github.com/python-semantic-release/python-semantic-release/commit/2135c68ccbdad94378809902b52fcad546efd5b3)) - -Resolves: #907 - -* chore(scripts): remove non-existant file from version bump script - -* docs(automatic-releases): drop extrenous github push configuration - -* docs(homepage): remove link to old github config & update token scope config - -* docs(github-actions): expand descriptions & clarity of actions configs - -* docs(github-actions): add configuration & description of publish action - -* docs(github-actions): revert removal of namespace prefix from examples - -### Features - -- **github-actions**: Add `is_prerelease` output to the version action - ([#1038](https://github.com/python-semantic-release/python-semantic-release/pull/1038), - [`6a5d35d`](https://github.com/python-semantic-release/python-semantic-release/commit/6a5d35d0d9124d6a6ee7910711b4154b006b8773)) - -* test(github-actions): add test to ensure `is_prerelease` is a action output - -* docs(github-actions): add description of new `is_prerelease` output for version action - - -## v9.8.9 (2024-09-27) - -### Bug Fixes - -- **version-cmd**: Improve `version_variables` flexibility w/ quotes (ie. json, yaml, etc) - ([#1028](https://github.com/python-semantic-release/python-semantic-release/pull/1028), - [`156915c`](https://github.com/python-semantic-release/python-semantic-release/commit/156915c7d759098f65cf9de7c4e980b40b38d5f1)) - -* fix(version-cmd): increase `version_variable` flexibility with quotations (ie. json, yaml, etc) - -Previously json would not work due to the key being wrapped in quotes, yaml also has issues when it - does not usually use quotes. The regex we created originally only wrapped the version to be - replaced in quotes but now both the key and version can optionally be wrapped in different kind of - quotations. - -Resolves: #601, #706, #962, #1026 - -* docs(configuration): add clarity to `version_variables` usage & limitations - -Ref: #941 - -* fix(version-cmd): ensure `version_variables` do not match partial variable names - -* build(deps-test): add `PyYAML` as a test dependency - -* test(fixtures): refactor location of fixture for global use of cli runner - -* test(stamp-version): add test cases to stamp json, python, & yaml files - -### Documentation - -- Update docstrings to resolve sphinx failures - ([#1030](https://github.com/python-semantic-release/python-semantic-release/pull/1030), - [`d84efc7`](https://github.com/python-semantic-release/python-semantic-release/commit/d84efc7719a8679e6979d513d1c8c60904af7384)) - -set `ignore-module-all` for `autodoc_default_options` to resolve some Sphinx errors about duplicate - / ambiguous references https://github.com/sphinx-doc/sphinx/issues/4961#issuecomment-1543858623 - -Standardize some non-standard (Google-ish) docstrings to Sphinx format, to avoid ruff and Sphinx - arguing about underline length. - -Fix indents and other minor whitespace / formatting changes. - -Fixes #1029 - - -## v9.8.8 (2024-09-01) - -### Bug Fixes - -- **config**: Fix path traversal detection for windows compatibility - ([#1014](https://github.com/python-semantic-release/python-semantic-release/pull/1014), - [`16e6daa`](https://github.com/python-semantic-release/python-semantic-release/commit/16e6daaf851ce1eabf5fbd5aa9fe310a8b0f22b3)) - -The original implementation of the path traversal detection expected that `resolve()` works the same - on windows as it does with Linux/Mac. Windows requires the folder paths to exist to be resolved - and that is not the case when the `template_dir` is not being used. - -Resolves: #994 - -### Documentation - -- **configuration**: Update `build_command` env table for windows to use all capital vars - ([`0e8451c`](https://github.com/python-semantic-release/python-semantic-release/commit/0e8451cf9003c6a3bdcae6878039d7d9a23d6d5b)) - -- **github-actions**: Update version in examples to latest version - ([`3c894ea`](https://github.com/python-semantic-release/python-semantic-release/commit/3c894ea8a555d20b454ebf34785e772959bbb4fe)) - - -## v9.8.7 (2024-08-20) - -### Bug Fixes - -- Provide `context.history` global in release notes templates - ([#1005](https://github.com/python-semantic-release/python-semantic-release/pull/1005), - [`5bd91b4`](https://github.com/python-semantic-release/python-semantic-release/commit/5bd91b4d7ac33ddf10446f3e66d7d11e0724aeb2)) - -* fix(release-notes): provide `context.history` global in release note templates - -Temporarily return the `context.history` variable to release notes generation as many users are - using it in their release documentation. It was never intended to be provided and will be removed - in the future. - -context was removed in `v9.8.3` during a refactor and condensing of changelog and release notes - functionality. - -Resolves: #984 - -* fix(release-notes): fix noop-changelog to print raw release notes - -Some markdown sequences can be interpreted as ansi escape sequences which dilute debugging of - release note templates by the user. This change ensures the raw content is displayed to the - console as expected. - -### Documentation - -- Use pinned version for GHA examples - ([#1004](https://github.com/python-semantic-release/python-semantic-release/pull/1004), - [`5fdf761`](https://github.com/python-semantic-release/python-semantic-release/commit/5fdf7614c036a77ffb051cd30f57d0a63c062c0d)) - -* docs(github-actions): use pinned version for GHA examples - -Fixes #1003 - -* chore(scripts): add auto version bump to non dynamic docs text (i.e. code snippets) - -* docs(github-actions): adjust formatting & version warning in code snippets - -* style(docs-github-actions): adjust formatting for readability - ---------- - -Co-authored-by: codejedi365 - -- **configuration**: Fix build_command_env table rendering - ([#996](https://github.com/python-semantic-release/python-semantic-release/pull/996), - [`a5eff0b`](https://github.com/python-semantic-release/python-semantic-release/commit/a5eff0bfe41d2fd5d9ead152a132010b718b7772)) - -- **changelog**: Clarify description of the default changelog generation process - ([`399fa65`](https://github.com/python-semantic-release/python-semantic-release/commit/399fa6521d5c6c4397b1d6e9b13ea7945ae92543)) - -- **configuration**: Clarify `changelog_file` vs `template_dir` option usage - ([`a7199c8`](https://github.com/python-semantic-release/python-semantic-release/commit/a7199c8cd6041a9de017694302e49b139bbcb034)) - -Provided additional description that warns about the mutually-exclusive nature of the - `changelog_file` option and the `template_dir` option. - -Resolves: #983 - - -## v9.8.6 (2024-07-20) - -### Bug Fixes - -- **version-cmd**: Resolve build command execution in powershell - ([#980](https://github.com/python-semantic-release/python-semantic-release/pull/980), - [`32c8e70`](https://github.com/python-semantic-release/python-semantic-release/commit/32c8e70915634d8e560b470c3cf38c27cebd7ae0)) - -Fixes the command line option for passing a shell command to Powershell. Also included a similar - shell detection result for pwsh (Powershell Core) - -### Documentation - -- **configuration**: Correct GHA parameter name for commit email - ([#981](https://github.com/python-semantic-release/python-semantic-release/pull/981), - [`ce9ffdb`](https://github.com/python-semantic-release/python-semantic-release/commit/ce9ffdb82c2358184b288fa18e83a4075f333277)) - -`git_committer_name` was repeated; replace one instance of it with `git_committer_email` - - -## v9.8.5 (2024-07-06) - -### Bug Fixes - -- Enable `--print-last-released*` when in detached head or non-release branch - ([#926](https://github.com/python-semantic-release/python-semantic-release/pull/926), - [`782c0a6`](https://github.com/python-semantic-release/python-semantic-release/commit/782c0a6109fb49e168c37f279928c0a4959f8ac6)) - -* test(version-cmd): add tests to print when detached or non-release branch - -ref: #900 - -* fix(version-cmd): drop branch restriction for `--print-last-released*` opts - -Resolves: #900 - -### Performance Improvements - -- Improve git history processing for changelog generation - ([#972](https://github.com/python-semantic-release/python-semantic-release/pull/972), - [`bfda159`](https://github.com/python-semantic-release/python-semantic-release/commit/bfda1593af59e9e728c584dd88d7927fc52c879f)) - -* perf(changelog): improve git history parser changelog generation - -This converts the double for-loop (`O(n^2)`) down to `O(n)` using a lookup table to match the - current commit with a known tag rather than iterating through all the tags of the repository every - time. - -* fix(changelog): resolve commit ordering issue when dates are similar - - -## v9.8.4 (2024-07-04) - -### Bug Fixes - -- **changelog-cmd**: Remove usage strings when error occured - ([`348a51d`](https://github.com/python-semantic-release/python-semantic-release/commit/348a51db8a837d951966aff3789aa0c93d473829)) - -Resolves: #810 - -- **publish-cmd**: Remove usage strings when error occured - ([`afbb187`](https://github.com/python-semantic-release/python-semantic-release/commit/afbb187d6d405fdf6765082e2a1cecdcd7d357df)) - -Resolves: #810 - -- **config**: Prevent path traversal manipulation of target changelog location - ([`43e35d0`](https://github.com/python-semantic-release/python-semantic-release/commit/43e35d0972e8a29239d18ed079d1e2013342fcbd)) - -- **version-cmd**: Remove usage strings when error occurred - ([`a7c17c7`](https://github.com/python-semantic-release/python-semantic-release/commit/a7c17c73fd7becb6d0e042e45ff6765605187e2a)) - -Resolves: #810 - -- **publish-cmd**: Prevent error when provided tag does not exist locally - ([`16afbbb`](https://github.com/python-semantic-release/python-semantic-release/commit/16afbbb8fbc3a97243e96d7573f4ad2eba09aab9)) - -- **config**: Prevent path traversal manipulation of target changelog location - ([`3eb3dba`](https://github.com/python-semantic-release/python-semantic-release/commit/3eb3dbafec4223ee463b90e927e551639c69426b)) - -- **changelog-cmd**: Render default changelog when user template directory exist but is empty - ([`bded8de`](https://github.com/python-semantic-release/python-semantic-release/commit/bded8deae6c92f6dde9774802d9f3716a5cb5705)) - - -## v9.8.3 (2024-06-18) - -### Bug Fixes - -- **parser**: Strip DOS carriage-returns in commits - ([#956](https://github.com/python-semantic-release/python-semantic-release/pull/956), - [`0b005df`](https://github.com/python-semantic-release/python-semantic-release/commit/0b005df0a8c7730ee0c71453c9992d7b5d2400a4)) - -The default template can result in mixed (UNIX / DOS style) carriage returns in the generated - changelog. Use a string replace in the commit parser to strip the DOS CRs ("\r"). This is only - needed in the case when we are _not_ byte decoding. - -Fixes #955 - - -## v9.8.2 (2024-06-17) - -### Bug Fixes - -- **templates**: Suppress extra newlines in default changelog - ([#954](https://github.com/python-semantic-release/python-semantic-release/pull/954), - [`7b0079b`](https://github.com/python-semantic-release/python-semantic-release/commit/7b0079bf3e17c0f476bff520b77a571aeac469d0)) - -Suppress extra newlines in default generated changelog output - - -## v9.8.1 (2024-06-05) - -### Bug Fixes - -- Improve build cmd env on windows - ([#942](https://github.com/python-semantic-release/python-semantic-release/pull/942), - [`d911fae`](https://github.com/python-semantic-release/python-semantic-release/commit/d911fae993d41a8cb1497fa8b2a7e823576e0f22)) - -* fix(version-cmd): pass windows specific env vars to build cmd when on windows - -* test(version-cmd): extend build cmd tests to include windows vars - -* docs(configuration): define windows specific env vars for build cmd - -* refactor(version-cmd): only add windows vars when windows is detected - ---------- - -Co-authored-by: Juan Cruz Mencia Naranjo - - -## v9.8.0 (2024-05-27) - -### Documentation - -- **migration-v8**: Update version references in migration instructions - ([#938](https://github.com/python-semantic-release/python-semantic-release/pull/938), - [`d6ba16a`](https://github.com/python-semantic-release/python-semantic-release/commit/d6ba16aa8e01bae1a022a9b06cd0b9162c51c345)) - -### Features - -- Extend gitlab to edit a previous release if exists - ([#934](https://github.com/python-semantic-release/python-semantic-release/pull/934), - [`23e02b9`](https://github.com/python-semantic-release/python-semantic-release/commit/23e02b96dfb2a58f6b4ecf7b7812e4c1bc50573d)) - -* style(hvcs-github): update function docstrings for params - -* feat(hvcs-gitlab): enable gitlab to edit a previous release if found - -* fix(hvcs-gitlab): add tag message to release creation - -* fix(gitlab): adjust release name to mirror other hvcs release names - -* refactor(gitlab): consolidate & simplify usage of gitlab client - -* test(gitlab): neuter test cases that used the internet & add new tests - -* refactor(gitlab): handle errors in release retrieval gracefully - -* refactor(gitlab): update release notes editing implementation - ---------- - -Co-authored-by: bdorsey - -- **gha**: Configure ssh signed tags in GitHub Action - ([#937](https://github.com/python-semantic-release/python-semantic-release/pull/937), - [`dfb76b9`](https://github.com/python-semantic-release/python-semantic-release/commit/dfb76b94b859a7f3fa3ad778eec7a86de2874d68)) - -Resolves: #936 - -- **version-cmd**: Add toggle of `--no-verify` option to `git commit` - ([#927](https://github.com/python-semantic-release/python-semantic-release/pull/927), - [`1de6f78`](https://github.com/python-semantic-release/python-semantic-release/commit/1de6f7834c6d37a74bc53f91609d40793556b52d)) - -* test(version-cmd): add test w/ failing pre-commit hook--preventing version commit - -* feat(version-cmd): add toggle of `--no-verify` option to `git commit` - -This commit adds a configuration option that toggles the addition of `--no-verify` command line - switch on git commit operations that are run with the `version` command. - -* docs(configuration): add `no_git_verify` description to the configuration page - ---------- - -Co-authored-by: bdorsey - - -## v9.7.3 (2024-05-15) - -### Bug Fixes - -- Enabled `prelease-token` parameter in github action - ([#929](https://github.com/python-semantic-release/python-semantic-release/pull/929), - [`1bb26b0`](https://github.com/python-semantic-release/python-semantic-release/commit/1bb26b0762d94efd97c06a3f1b6b10fb76901f6d)) - - -## v9.7.2 (2024-05-13) - -### Bug Fixes - -- Enable user configuration of `build_command` env vars - ([#925](https://github.com/python-semantic-release/python-semantic-release/pull/925), - [`6b5b271`](https://github.com/python-semantic-release/python-semantic-release/commit/6b5b271453874b982fbf2827ec1f6be6db1c2cc7)) - -- test(version): add test of user defined env variables in build command - -ref: #922 - -- fix(version): enable user config of `build_command` env variables - -Resolves: #922 - -- docs(configuration): document `build_command_env` configuration option - -### Documentation - -- **configuration**: Clarify TOC & alphabetize configuration descriptions - ([`19add16`](https://github.com/python-semantic-release/python-semantic-release/commit/19add16dcfdfdb812efafe2d492a933d0856df1d)) - -- **configuration**: Clarify TOC & standardize heading links - ([`3a41995`](https://github.com/python-semantic-release/python-semantic-release/commit/3a4199542d0ea4dbf88fa35e11bec41d0c27dd17)) - - -## v9.7.1 (2024-05-07) - -### Bug Fixes - -- **gha**: Fix missing `git_committer_*` definition in action - ([#919](https://github.com/python-semantic-release/python-semantic-release/pull/919), - [`ccef9d8`](https://github.com/python-semantic-release/python-semantic-release/commit/ccef9d8521be12c0640369b3c3a80b81a7832662)) - -Resolves: #918 - - -## v9.7.0 (2024-05-06) - -### Bug Fixes - -- **gha**: Add missing `tag` option to GitHub Action definition - ([#908](https://github.com/python-semantic-release/python-semantic-release/pull/908), - [`6b24288`](https://github.com/python-semantic-release/python-semantic-release/commit/6b24288a96302cd6982260e46fad128ec4940da9)) - -Resolves: #906 - -### Documentation - -- **configuration**: Add description of build command available env variables - ([`c882dc6`](https://github.com/python-semantic-release/python-semantic-release/commit/c882dc62b860b2aeaa925c21d1524f4ae25ef567)) - -### Features - -- **version-cmd**: Pass `NEW_VERSION` & useful env vars to build command - ([`ee6b246`](https://github.com/python-semantic-release/python-semantic-release/commit/ee6b246df3bb211ab49c8bce075a4c3f6a68ed77)) - - -## v9.6.0 (2024-04-29) - -### Bug Fixes - -- **parser-custom**: Gracefully handle custom parser import errors - ([`67f6038`](https://github.com/python-semantic-release/python-semantic-release/commit/67f60389e3f6e93443ea108c0e1b4d30126b8e06)) - -- Correct version `--prerelease` use & enable `--as-prerelease` - ([#647](https://github.com/python-semantic-release/python-semantic-release/pull/647), - [`2acb5ac`](https://github.com/python-semantic-release/python-semantic-release/commit/2acb5ac35ae79d7ae25ca9a03fb5c6a4a68b3673)) - -* test(version): add validation of `--as-prerelease` and `--prerelease opts` - -* fix(version-cmd): correct `--prerelease` use - -Prior to this change, `--prerelease` performed the role of converting whichever forced version into - a prerelease version declaration, which was an unintentional breaking change to the CLI compared - to v7. - -`--prerelease` now forces the next version to increment the prerelease revision, which makes it - consistent with `--patch`, `--minor` and `--major`. Temporarily disabled the ability to force a - prerelease. - -Resolves: #639 - -* feat(version-cmd): add `--as-prerelease` option to force the next version to be a prerelease - -Prior to this change, `--prerelease` performed the role that `--as-prerelease` now does, which was - an unintentional breaking change to the CLI compared to v7. - -`--prerelease` is used to force the next version to increment the prerelease revision, which makes - it consistent with `--patch`, `--minor` and `--major`, while `--as-prerelease` forces for the next - version to be converted to a prerelease version type before it is applied to the project - regardless of the bump level. - -Resolves: #639 - -* docs(commands): update version command options definition about prereleases - ---------- - -Co-authored-by: codejedi365 - -### Features - -- Changelog filters are specialized per vcs type - ([#890](https://github.com/python-semantic-release/python-semantic-release/pull/890), - [`76ed593`](https://github.com/python-semantic-release/python-semantic-release/commit/76ed593ea33c851005994f0d1a6a33cc890fb908)) - -* test(github): sync pr url expectation with GitHub api documentation - -* fix(github): correct changelog filter for pull request urls - -* refactor(hvcs-base): change to an abstract class & simplify interface - -* refactor(remote-hvcs-base): extend the base abstract class with common remote base class - -* refactor(github): adapt to new abstract base class - -* refactor(gitea): adapt to new abstract base class - -* refactor(gitlab): adapt to new abstract base class - -* refactor(bitbucket): adapt to new abstract base class - -* refactor(cmds): prevent hvcs from executing if not remote hosted vcs - -* feat(changelog): changelog filters are hvcs focused - -* test(hvcs): add validation for issue_url generation - -* feat(changelog-github): add issue url filter to changelog context - -* feat(changelog-gitea): add issue url filter to changelog context - -* refactor(cmd-version): consolidate asset uploads with release creation - -* style: resolve ruff errors - -* feat(changelog-context): add flag to jinja env for which hvcs is available - -* test(changelog-context): demonstrate per hvcs filters upon render - -* docs(changelog-context): explain new hvcs specific context filters - -* refactor(config): adjust default token resolution w/ subclasses - - -## v9.5.0 (2024-04-23) - -### Build System - -- **deps**: Bump ruff from 0.3.5 to 0.3.7 - ([#894](https://github.com/python-semantic-release/python-semantic-release/pull/894), - [`6bf2849`](https://github.com/python-semantic-release/python-semantic-release/commit/6bf28496d8631ada9009aec5f1000f68b7f7ee16)) - -### Features - -- Extend support to on-prem GitHub Enterprise Server - ([#896](https://github.com/python-semantic-release/python-semantic-release/pull/896), - [`4fcb737`](https://github.com/python-semantic-release/python-semantic-release/commit/4fcb737958d95d1a3be24db7427e137b46f5075f)) - -* test(github): adjust init test to match the Enterprise Server api url - -* feat(github): extend support to on-prem GitHub Enterprise Server - -Resolves: #895 - - -## v9.4.2 (2024-04-14) - -### Bug Fixes - -- **hvcs**: Allow insecure http connections if configured - ([#886](https://github.com/python-semantic-release/python-semantic-release/pull/886), - [`db13438`](https://github.com/python-semantic-release/python-semantic-release/commit/db1343890f7e0644bc8457f995f2bd62087513d3)) - -* fix(gitlab): allow insecure http connections if configured - -* test(hvcs-gitlab): fix tests for clarity & insecure urls - -* test(conftest): refactor netrc generation into common fixture - -* refactor(hvcsbase): remove extrenous non-common functionality - -* fix(gitea): allow insecure http connections if configured - -* test(hvcs-gitea): fix tests for clarity & insecure urls - -* refactor(gitlab): adjust init function signature - -* fix(github): allow insecure http connections if configured - -* test(hvcs-github): fix tests for clarity & insecure urls - -* fix(bitbucket): allow insecure http connections if configured - -* test(hvcs-bitbucket): fix tests for clarity & insecure urls - -* fix(config): add flag to allow insecure connections - -* fix(version-cmd): handle HTTP exceptions more gracefully - -* style(hvcs): resolve typing issues & mimetype executions - -* test(cli-config): adapt default token test for env resolution - -* test(changelog-cmd): isolate env & correct the expected api url - -* test(fixtures): adapt repo builder for new hvcs init() signature - -* style: update syntax for 3.8 compatiblity & formatting - -* docs(configuration): update `remote` settings section with missing values - -Resolves: #868 - -* style(docs): improve configuration & api readability - -- **hvcs**: Prevent double url schemes urls in changelog - ([#676](https://github.com/python-semantic-release/python-semantic-release/pull/676), - [`5cfdb24`](https://github.com/python-semantic-release/python-semantic-release/commit/5cfdb248c003a2d2be5fe65fb61d41b0d4c45db5)) - -* fix(hvcs): prevent double protocol scheme urls in changelogs - -Due to a typo and conditional stripping of the url scheme the hvcs_domain and hvcs_api_domain values - would contain protocol schemes when a user specified one but the defaults would not. It would - cause the api_url and remote_url to end up as "https://https://domain.com" - -* fix(bitbucket): correct url parsing & prevent double url schemes - -* fix(gitea): correct url parsing & prevent double url schemes - -* fix(github): correct url parsing & prevent double url schemes - -* fix(gitlab): correct url parsing & prevent double url schemes - -* test(hvcs): ensure api domains are derived correctly - ---------- - -Co-authored-by: codejedi365 - -### Build System - -- **deps**: Update rich requirement from ~=12.5 to ~=13.0 - ([#877](https://github.com/python-semantic-release/python-semantic-release/pull/877), - [`4a22a8c`](https://github.com/python-semantic-release/python-semantic-release/commit/4a22a8c1a69bcf7b1ddd6db56e6883c617a892b3)) - -Updates the requirements on [rich](https://github.com/Textualize/rich) to permit the latest version. - - [Release notes](https://github.com/Textualize/rich/releases) - - [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md) - -Resolves: #888 - -Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] - <49699333+dependabot[bot]@users.noreply.github.com> - - -## v9.4.1 (2024-04-06) - -### Bug Fixes - -- **gh-actions-output**: Fixed trailing newline to match GITHUB_OUTPUT format - ([#885](https://github.com/python-semantic-release/python-semantic-release/pull/885), - [`2c7b6ec`](https://github.com/python-semantic-release/python-semantic-release/commit/2c7b6ec85b6e3182463d7b695ee48e9669a25b3b)) - -* test(gh-actions-output): fix unit tests to manage proper whitespace - -tests were adjusted for clarity and to replicate error detailed in #884. - -* fix(gh-actions-output): fixed trailing newline to match GITHUB_OUTPUT format - -Resolves: #884 - - -## v9.4.0 (2024-03-31) - -### Features - -- **gitea**: Derives gitea api domain from base domain when unspecified - ([#675](https://github.com/python-semantic-release/python-semantic-release/pull/675), - [`2ee3f8a`](https://github.com/python-semantic-release/python-semantic-release/commit/2ee3f8a918d2e5ea9ab64df88f52e62a1f589c38)) - -* test(gitea): add test of custom server path & custom api domain - -* feat(gitea): derives gitea api domain from base domain when unspecified - -* refactor(hvcs-gitea): uniformly handle protocol prefixes - ---------- - -Co-authored-by: codejedi365 - - -## v9.3.1 (2024-03-24) - -### Bug Fixes - -- **cli-version**: Change implementation to only push the tag we generated - ([`8a9da4f`](https://github.com/python-semantic-release/python-semantic-release/commit/8a9da4feb8753e3ab9ea752afa25decd2047675a)) - -Restricts the git push command to only push the explicit tag we created which will eliminate the - possibility of pushing another tag that could cause an error. - -Resolves: #803 - -- **algorithm**: Handle merge-base errors gracefully - ([`4c998b7`](https://github.com/python-semantic-release/python-semantic-release/commit/4c998b77a3fe5e12783d1ab2d47789a10b83f247)) - -Merge-base errors generally occur from a shallow clone that is primarily used by CI environments and - will cause PSR to explode prior to this change. Now it exits with an appropriate error. - -Resolves: #724 - -### Performance Improvements - -- **algorithm**: Simplify logs & use lookup when searching for commit & tag match - ([`3690b95`](https://github.com/python-semantic-release/python-semantic-release/commit/3690b9511de633ab38083de4d2505b6d05853346)) - - -## v9.3.0 (2024-03-21) - -### Features - -- **cmd-version**: Changelog available to bundle - ([#779](https://github.com/python-semantic-release/python-semantic-release/pull/779), - [`37fdb28`](https://github.com/python-semantic-release/python-semantic-release/commit/37fdb28e0eb886d682b5dea4cc83a7c98a099422)) - -* test(util): fix overlooked file differences in folder comparison - -* test(version): tracked changelog as changed file on version create - -Removes the temporary release_notes hack to prevent CHANGELOG generation on execution of version - command. Now that it is implemented we can remove the fixture to properly pass the tests. - -* feat(cmd-version): create changelog prior to build enabling doc bundling - - -## v9.2.2 (2024-03-19) - -### Bug Fixes - -- **cli**: Enable subcommand help even if config is invalid - ([`91d221a`](https://github.com/python-semantic-release/python-semantic-release/commit/91d221a01266e5ca6de5c73296b0a90987847494)) - -Refactors configuration loading to use lazy loading by subcommands triggered by the property access - of the runtime_ctx object. Resolves the issues when running `--help` on subcommands when a - configuration is invalid - -Resolves: #840 - - -## v9.2.1 (2024-03-19) - -### Bug Fixes - -- **parse-git-url**: Handle urls with url-safe special characters - ([`27cd93a`](https://github.com/python-semantic-release/python-semantic-release/commit/27cd93a0a65ee3787ca51be4c91c48f6ddb4269c)) - - -## v9.2.0 (2024-03-18) - -### Bug Fixes - -- **changelog-generation**: Fix incorrect release timezone determination - ([`f802446`](https://github.com/python-semantic-release/python-semantic-release/commit/f802446bd0693c4c9f6bdfdceae8b89c447827d2)) - -- **changelog**: Make sure default templates render ending in 1 newline - ([`0b4a45e`](https://github.com/python-semantic-release/python-semantic-release/commit/0b4a45e3673d0408016dc8e7b0dce98007a763e3)) - -### Build System - -- **deps**: Add click-option-group for grouping exclusive flags - ([`bd892b8`](https://github.com/python-semantic-release/python-semantic-release/commit/bd892b89c26df9fccc9335c84e2b3217e3e02a37)) - -### Documentation - -- **configuration**: Clarify the `major_on_zero` configuration option - ([`f7753cd`](https://github.com/python-semantic-release/python-semantic-release/commit/f7753cdabd07e276bc001478d605fca9a4b37ec4)) - -- **configuration**: Add description of `allow-zero-version` configuration option - ([`4028f83`](https://github.com/python-semantic-release/python-semantic-release/commit/4028f8384a0181c8d58c81ae81cf0b241a02a710)) - -### Features - -- **version-config**: Add option to disable 0.x.x versions - ([`dedb3b7`](https://github.com/python-semantic-release/python-semantic-release/commit/dedb3b765c8530379af61d3046c3bb9c160d54e5)) - -- **version**: Add new version print flags to display the last released version and tag - ([`814240c`](https://github.com/python-semantic-release/python-semantic-release/commit/814240c7355df95e9be9a6ed31d004b800584bc0)) - - -## v9.1.1 (2024-02-25) - -### Bug Fixes - -- **parse_git_url**: Fix bad url with dash - ([`1c25b8e`](https://github.com/python-semantic-release/python-semantic-release/commit/1c25b8e6f1e43c15ca7d5a59dca0a13767f9bc33)) - - -## v9.1.0 (2024-02-14) - -### Bug Fixes - -- Remove unofficial environment variables - ([`a5168e4`](https://github.com/python-semantic-release/python-semantic-release/commit/a5168e40b9a14dbd022f62964f382b39faf1e0df)) - -### Build System - -- **deps**: Bump minimum required `tomlkit` to `>=0.11.0` - ([`291aace`](https://github.com/python-semantic-release/python-semantic-release/commit/291aacea1d0429a3b27e92b0a20b598f43f6ea6b)) - -TOMLDocument is missing the `unwrap()` function in `v0.10.2` which causes an AttributeError to occur - when attempting to read a the text in `pyproject.toml` as discovered with #834 - -Resolves: #834 - -### Documentation - -- Add bitbucket to token table - ([`56f146d`](https://github.com/python-semantic-release/python-semantic-release/commit/56f146d9f4c0fc7f2a84ad11b21c8c45e9221782)) - -- Add bitbucket authentication - ([`b78a387`](https://github.com/python-semantic-release/python-semantic-release/commit/b78a387d8eccbc1a6a424a183254fc576126199c)) - -- Fix typo - ([`b240e12`](https://github.com/python-semantic-release/python-semantic-release/commit/b240e129b180d45c1d63d464283b7dfbcb641d0c)) - -### Features - -- Add bitbucket hvcs - ([`bbbbfeb`](https://github.com/python-semantic-release/python-semantic-release/commit/bbbbfebff33dd24b8aed2d894de958d532eac596)) - - -## v9.0.3 (2024-02-08) - -### Bug Fixes - -- **algorithm**: Correct bfs to not abort on previously visited node - ([`02df305`](https://github.com/python-semantic-release/python-semantic-release/commit/02df305db43abfc3a1f160a4a52cc2afae5d854f)) - -### Performance Improvements - -- **algorithm**: Refactor bfs search to use queue rather than recursion - ([`8b742d3`](https://github.com/python-semantic-release/python-semantic-release/commit/8b742d3db6652981a7b5f773a74b0534edc1fc15)) - - -## v9.0.2 (2024-02-08) - -### Bug Fixes - -- **util**: Properly parse windows line-endings in commit messages - ([`70193ba`](https://github.com/python-semantic-release/python-semantic-release/commit/70193ba117c1a6d3690aed685fee8a734ba174e5)) - -Due to windows line-endings `\r\n`, it would improperly split the commit description (it failed to - split at all) and cause detection of Breaking changes to fail. The breaking changes regular - expression looks to the start of the line for the proper syntax. - -Resolves: #820 - -### Documentation - -- Remove duplicate note in configuration.rst - ([#807](https://github.com/python-semantic-release/python-semantic-release/pull/807), - [`fb6f243`](https://github.com/python-semantic-release/python-semantic-release/commit/fb6f243a141642c02469f1080180ecaf4f3cec66)) - - -## v9.0.1 (2024-02-06) - -### Bug Fixes - -- **config**: Set commit parser opt defaults based on parser choice - ([#782](https://github.com/python-semantic-release/python-semantic-release/pull/782), - [`9c594fb`](https://github.com/python-semantic-release/python-semantic-release/commit/9c594fb6efac7e4df2b0bfbd749777d3126d03d7)) - - -## v9.0.0 (2024-02-06) - -### Bug Fixes - -- Drop support for Python 3.7 - ([#828](https://github.com/python-semantic-release/python-semantic-release/pull/828), - [`ad086f5`](https://github.com/python-semantic-release/python-semantic-release/commit/ad086f5993ae4741d6e20fee618d1bce8df394fb)) - - -## v8.7.2 (2024-01-03) - -### Bug Fixes - -- **lint**: Correct linter errors - ([`c9556b0`](https://github.com/python-semantic-release/python-semantic-release/commit/c9556b0ca6df6a61e9ce909d18bc5be8b6154bf8)) - - -## v8.7.1 (2024-01-03) - -### Bug Fixes - -- **cli-generate-config**: Ensure configuration types are always toml parsable - ([#785](https://github.com/python-semantic-release/python-semantic-release/pull/785), - [`758e649`](https://github.com/python-semantic-release/python-semantic-release/commit/758e64975fe46b961809f35977574729b7c44271)) - -### Documentation - -- **contributing**: Add docs-build, testing conf, & build instructions - ([#787](https://github.com/python-semantic-release/python-semantic-release/pull/787), - [`011b072`](https://github.com/python-semantic-release/python-semantic-release/commit/011b0729cba3045b4e7291fd970cb17aad7bae60)) - -- **configuration**: Change defaults definition of token default to table - ([#786](https://github.com/python-semantic-release/python-semantic-release/pull/786), - [`df1df0d`](https://github.com/python-semantic-release/python-semantic-release/commit/df1df0de8bc655cbf8f86ae52aff10efdc66e6d2)) - -- Add note on default envvar behaviour - ([#780](https://github.com/python-semantic-release/python-semantic-release/pull/780), - [`0b07cae`](https://github.com/python-semantic-release/python-semantic-release/commit/0b07cae71915c5c82d7784898b44359249542a64)) - - -## v8.7.0 (2023-12-22) - -### Features - -- **config**: Enable default environment token per hvcs - ([#774](https://github.com/python-semantic-release/python-semantic-release/pull/774), - [`26528eb`](https://github.com/python-semantic-release/python-semantic-release/commit/26528eb8794d00dfe985812269702fbc4c4ec788)) - - -## v8.6.0 (2023-12-22) - -### Documentation - -- Minor correction to commit-parsing documentation - ([#777](https://github.com/python-semantic-release/python-semantic-release/pull/777), - [`245e878`](https://github.com/python-semantic-release/python-semantic-release/commit/245e878f02d5cafec6baf0493c921c1e396b56e8)) - -### Features - -- **utils**: Expand parsable valid git remote url formats - ([#771](https://github.com/python-semantic-release/python-semantic-release/pull/771), - [`cf75f23`](https://github.com/python-semantic-release/python-semantic-release/commit/cf75f237360488ebb0088e5b8aae626e97d9cbdd)) - -Git remote url parsing now supports additional formats (ssh, https, file, git) - - -## v8.5.2 (2023-12-19) - -### Bug Fixes - -- **cli**: Gracefully output configuration validation errors - ([#772](https://github.com/python-semantic-release/python-semantic-release/pull/772), - [`e8c9d51`](https://github.com/python-semantic-release/python-semantic-release/commit/e8c9d516c37466a5dce75a73766d5be0f9e74627)) - -* test(fixtures): update example project workflow & add config modifier - -* test(cli-main): add test for raw config validation error - -* fix(cli): gracefully output configuration validation errors - - -## v8.5.1 (2023-12-12) - -### Bug Fixes - -- **config**: Gracefully fail when repo is in a detached HEAD state - ([#765](https://github.com/python-semantic-release/python-semantic-release/pull/765), - [`ac4f9aa`](https://github.com/python-semantic-release/python-semantic-release/commit/ac4f9aacb72c99f2479ae33369822faad011a824)) - -* fix(config): cleanly handle repository in detached HEAD state - -* test(cli-main): add detached head cli test - -- **cmd-version**: Handle committing of git-ignored file gracefully - ([#764](https://github.com/python-semantic-release/python-semantic-release/pull/764), - [`ea89fa7`](https://github.com/python-semantic-release/python-semantic-release/commit/ea89fa72885e15da91687172355426a22c152513)) - -* fix(version): only commit non git-ignored files during version commit - -* test(version): set version file as ignored file - -Tweaks tests to use one committed change file and the version file as an ignored change file. This - allows us to verify that our commit mechanism does not crash if a file that is changed is ignored - by user - -### Documentation - -- **configuration**: Adjust wording and improve clarity - ([#766](https://github.com/python-semantic-release/python-semantic-release/pull/766), - [`6b2fc8c`](https://github.com/python-semantic-release/python-semantic-release/commit/6b2fc8c156e122ee1b43fdb513b2dc3b8fd76724)) - -* docs(configuration): fix typo in text - -* docs(configuration): adjust wording and improve clarity - - -## v8.5.0 (2023-12-07) - -### Features - -- Allow template directories to contain a '.' at the top-level - ([#762](https://github.com/python-semantic-release/python-semantic-release/pull/762), - [`07b232a`](https://github.com/python-semantic-release/python-semantic-release/commit/07b232a3b34be0b28c6af08aea4852acb1b9bd56)) - - -## v8.4.0 (2023-12-07) - -### Documentation - -- **migration**: Fix comments about publish command - ([#747](https://github.com/python-semantic-release/python-semantic-release/pull/747), - [`90380d7`](https://github.com/python-semantic-release/python-semantic-release/commit/90380d797a734dcca5040afc5fa00e3e01f64152)) - -### Features - -- **cmd-version**: Add `--tag/--no-tag` option to version command - ([#752](https://github.com/python-semantic-release/python-semantic-release/pull/752), - [`de6b9ad`](https://github.com/python-semantic-release/python-semantic-release/commit/de6b9ad921e697b5ea2bb2ea8f180893cecca920)) - -* fix(version): separate push tags from commit push when not committing changes - -* feat(version): add `--no-tag` option to turn off tag creation - -* test(version): add test for `--tag` option & `--no-tag/commit` - -* docs(commands): update `version` subcommand options - - -## v8.3.0 (2023-10-23) - -### Features - -- **action**: Use composite action for semantic release - ([#692](https://github.com/python-semantic-release/python-semantic-release/pull/692), - [`4648d87`](https://github.com/python-semantic-release/python-semantic-release/commit/4648d87bac8fb7e6cc361b765b4391b30a8caef8)) - -Co-authored-by: Bernard Cooke - - -## v8.2.0 (2023-10-23) - -### Documentation - -- Add PYTHONPATH mention for commit parser - ([`3284258`](https://github.com/python-semantic-release/python-semantic-release/commit/3284258b9fa1a3fe165f336181aff831d50fddd3)) - -### Features - -- Allow user customization of release notes template - ([#736](https://github.com/python-semantic-release/python-semantic-release/pull/736), - [`94a1311`](https://github.com/python-semantic-release/python-semantic-release/commit/94a131167e1b867f8bc112a042b9766e050ccfd1)) - -Signed-off-by: Bryant Finney - - -## v8.1.2 (2023-10-13) - -### Bug Fixes - -- Correct lint errors - ([`a13a6c3`](https://github.com/python-semantic-release/python-semantic-release/commit/a13a6c37e180dc422599939a5725835306c18ff2)) - -GitHub.upload_asset now raises ValueError instead of requests.HTTPError - -- Error when running build command on windows systems - ([#732](https://github.com/python-semantic-release/python-semantic-release/pull/732), - [`2553657`](https://github.com/python-semantic-release/python-semantic-release/commit/25536574760b407410f435441da533fafbf94402)) - - -## v8.1.1 (2023-09-19) - -### Bug Fixes - -- Attribute error when logging non-strings - ([#711](https://github.com/python-semantic-release/python-semantic-release/pull/711), - [`75e6e48`](https://github.com/python-semantic-release/python-semantic-release/commit/75e6e48129da8238a62d5eccac1ae55d0fee0f9f)) - - -## v8.1.0 (2023-09-19) - -### Documentation - -- Update project urls - ([#715](https://github.com/python-semantic-release/python-semantic-release/pull/715), - [`5fd5485`](https://github.com/python-semantic-release/python-semantic-release/commit/5fd54856dfb6774feffc40d36d5bb0f421f04842)) - -- Fix typos ([#708](https://github.com/python-semantic-release/python-semantic-release/pull/708), - [`2698b0e`](https://github.com/python-semantic-release/python-semantic-release/commit/2698b0e006ff7e175430b98450ba248ed523b341)) - -### Features - -- Upgrade pydantic to v2 - ([#714](https://github.com/python-semantic-release/python-semantic-release/pull/714), - [`5a5c5d0`](https://github.com/python-semantic-release/python-semantic-release/commit/5a5c5d0ee347750d7c417c3242d52e8ada50b217)) - - -## v8.0.8 (2023-08-26) - -### Bug Fixes - -- Dynamic_import() import path split - ([#686](https://github.com/python-semantic-release/python-semantic-release/pull/686), - [`1007a06`](https://github.com/python-semantic-release/python-semantic-release/commit/1007a06d1e16beef6d18f44ff2e0e09921854b54)) - - -## v8.0.7 (2023-08-16) - -### Bug Fixes - -- Use correct upload url for github - ([#661](https://github.com/python-semantic-release/python-semantic-release/pull/661), - [`8a515ca`](https://github.com/python-semantic-release/python-semantic-release/commit/8a515caf1f993aa653e024beda2fdb9e629cc42a)) - -Co-authored-by: github-actions - - -## v8.0.6 (2023-08-13) - -### Bug Fixes - -- **publish**: Improve error message when no tags found - ([#683](https://github.com/python-semantic-release/python-semantic-release/pull/683), - [`bdc06ea`](https://github.com/python-semantic-release/python-semantic-release/commit/bdc06ea061c19134d5d74bd9f168700dd5d9bcf5)) - - -## v8.0.5 (2023-08-10) - -### Bug Fixes - -- Don't warn about vcs token if ignore_token_for_push is true. - ([#670](https://github.com/python-semantic-release/python-semantic-release/pull/670), - [`f1a54a6`](https://github.com/python-semantic-release/python-semantic-release/commit/f1a54a6c9a05b225b6474d50cd610eca19ec0c34)) - -* fix: don't warn about vcs token if ignore_token_for_push is true. - -* docs: `password` should be `token`. - -### Documentation - -- Fix typo missing 's' in version_variable[s] in configuration.rst - ([#668](https://github.com/python-semantic-release/python-semantic-release/pull/668), - [`879186a`](https://github.com/python-semantic-release/python-semantic-release/commit/879186aa09a3bea8bbe2b472f892cf7c0712e557)) - - -## v8.0.4 (2023-07-26) - -### Bug Fixes - -- **changelog**: Use version as semver tag by default - ([#653](https://github.com/python-semantic-release/python-semantic-release/pull/653), - [`5984c77`](https://github.com/python-semantic-release/python-semantic-release/commit/5984c7771edc37f0d7d57894adecc2591efc414d)) - -### Documentation - -- Clarify usage of assets config option - ([#655](https://github.com/python-semantic-release/python-semantic-release/pull/655), - [`efa2b30`](https://github.com/python-semantic-release/python-semantic-release/commit/efa2b3019b41eb427f0e1c8faa21ad10664295d0)) - -- Add Python 3.11 to classifiers in metadata - ([#651](https://github.com/python-semantic-release/python-semantic-release/pull/651), - [`5a32a24`](https://github.com/python-semantic-release/python-semantic-release/commit/5a32a24bf4128c39903f0c5d3bd0cb1ccba57e18)) - - -## v8.0.3 (2023-07-21) - -### Bug Fixes - -- Skip unparseable versions when calculating next version - ([#649](https://github.com/python-semantic-release/python-semantic-release/pull/649), - [`88f25ea`](https://github.com/python-semantic-release/python-semantic-release/commit/88f25eae62589cdf53dbc3dfcb167a3ae6cba2d3)) - - -## v8.0.2 (2023-07-18) - -### Bug Fixes - -- Handle missing configuration - ([#644](https://github.com/python-semantic-release/python-semantic-release/pull/644), - [`f15753c`](https://github.com/python-semantic-release/python-semantic-release/commit/f15753ce652f36cc03b108c667a26ab74bcbf95d)) - -### Documentation - -- Correct version_toml example in migrating_from_v7.rst - ([#641](https://github.com/python-semantic-release/python-semantic-release/pull/641), - [`325d5e0`](https://github.com/python-semantic-release/python-semantic-release/commit/325d5e048bd89cb2a94c47029d4878b27311c0f0)) - -- Clarify v8 breaking changes in GitHub action inputs - ([#643](https://github.com/python-semantic-release/python-semantic-release/pull/643), - [`cda050c`](https://github.com/python-semantic-release/python-semantic-release/commit/cda050cd9e789d81458157ee240ff99ec65c6f25)) - -- Better description for tag_format usage - ([`2129b72`](https://github.com/python-semantic-release/python-semantic-release/commit/2129b729837eccc41a33dbb49785a8a30ce6b187)) - - -## v8.0.1 (2023-07-17) - -### Bug Fixes - -- Invalid version in Git history should not cause a release failure - ([#632](https://github.com/python-semantic-release/python-semantic-release/pull/632), - [`254430b`](https://github.com/python-semantic-release/python-semantic-release/commit/254430b5cc5f032016b4c73168f0403c4d87541e)) - -### Documentation - -- Reduce readthedocs formats and add entries to migration from v7 guide - ([`9b6ddfe`](https://github.com/python-semantic-release/python-semantic-release/commit/9b6ddfef448f9de30fa2845034f76655d34a9912)) - -- **migration**: Fix hyperlink - ([#631](https://github.com/python-semantic-release/python-semantic-release/pull/631), - [`5fbd52d`](https://github.com/python-semantic-release/python-semantic-release/commit/5fbd52d7de4982b5689651201a0e07b445158645)) - - -## v8.0.0 (2023-07-16) - -### Features - -- V8 ([#619](https://github.com/python-semantic-release/python-semantic-release/pull/619), - [`ec30564`](https://github.com/python-semantic-release/python-semantic-release/commit/ec30564b4ec732c001d76d3c09ba033066d2b6fe)) - -* feat!: 8.0.x (#538) - -Co-authored-by: Johan Co-authored-by: U-NEO\johan - -* fix: correct Dockerfile CLI command and GHA fetch - -* fix: resolve branch checkout logic in GHA - -* fix: remove commit amending behaviour - -this was not working when there were no source code changes to be made, as it lead to attempting to - amend a HEAD commit that wasn't produced by PSR - -* 8.0.0-alpha.1 - -Automatically generated by python-semantic-release - -* fix: correct logic for generating release notes (#550) - -* fix: cleanup comments and unused logic - -* fix(action): mark container fs as safe for git to operate on - -* style: beautify 49080c510a68cccd2f6c7a8d540b483751901207 - -* fix(action): quotation for git config command - -* 8.0.0-alpha.2 - -Automatically generated by python-semantic-release - -* fix: resolve bug in changelog logic, enable upload to pypi - -* 8.0.0-alpha.3 - -Automatically generated by python-semantic-release - -* test: add tests for ReleaseHistory.release - -* fix: resolve loss of tag_format configuration - -* 8.0.0-alpha.4 - -Automatically generated by python-semantic-release - -* feat: various improvements - -* Added sorting to test parameterisation, so that pytest-xdist works again - dramatic speedup for - testing * Reworked the CI verification code so it's a bit prettier * Added more testing for the - version CLI command, and split some logic out of the command itself * Removed a redundant - double-regex match in VersionTranslator and Version, for some speedup - -* chore(test): proper env patching for tests in CI - -* style: beautify bcb27a4a8ce4789d083226f088c1810f45cd4c77 - -* refactor!: remove verify-ci command - -* 8.0.0-alpha.5 - -Automatically generated by python-semantic-release - -* fix(docs): fixup docs and remove reference to dist publication - -* feat!: remove publication of dists to artefact repository - -* feat: rename 'upload' configuration section to 'publish' - -* feat!: removed build status checking - -* feat: add GitHub Actions output - -* fix(action): remove default for 'force' - -* fix(ci): different workflow for v8 - -* fix(action): correct input parsing - -* fix: correct handling of build commands - -* feat: make it easier to access commit messages in ParsedCommits - -* fix: make additional attributes available for template authors - -* fix: add logging for token auth, use token for push - -* ci: add verbosity - -* fix: caching for repo owner and name - -* ci: contents permission for workflow - -* 8.0.0-alpha.6 - -Automatically generated by python-semantic-release - -* docs: update docs with additional required permissions - -* feat: add option to specify tag to publish to in publish command - -* feat: add Strict Mode - -* docs: convert to Furo theme - -* feat: add --skip-build option - -* 8.0.0-alpha.7 - -Automatically generated by python-semantic-release - -* test: separate command line tests by stdout and stderr - -* ci: pass tag output and conditionally execute publish steps - -* fix: correct assets type in configuration (#603) - -* change raw config assets type - -* fix: correct assets type-annotation for RuntimeContext - ---------- - -Co-authored-by: Bernard Cooke - -* 8.0.0-alpha.8 - -Automatically generated by python-semantic-release - -* fix: pin Debian version in Dockerfile - -* feat: promote to rc - -* 8.0.0-rc.1 - -Automatically generated by python-semantic-release - -* ci: fix conditionals in workflow and update documentation - -* ci: correct conditionals - -* fix: only call Github Action output callback once defaults are set - -* 8.0.0-rc.2 - -Automatically generated by python-semantic-release - -* fix: create_or_update_release for Gitlab hvcs - -* ci: remove separate v8 workflow - -* chore: tweak issue templates - -* chore: bump docs dependencies - -* 8.0.0-rc.3 - -Automatically generated by python-semantic-release - -* fix(deps): add types-click, and downgrade sphinx/furo for 3.7 - -* 8.0.0-rc.4 - -Automatically generated by python-semantic-release - -* docs: fix typo (#623) - -* docs: correct typo in docs/changelog_templates.rst - -Co-authored-by: Micael Jarniac - ---------- - -Co-authored-by: Johan Co-authored-by: U-NEO\johan - Co-authored-by: semantic-release Co-authored-by: github-actions - Co-authored-by: smeng9 <38666763+smeng9@users.noreply.github.com> - Co-authored-by: Micael Jarniac - - -## v7.34.6 (2023-06-17) - -### Bug Fixes - -- Relax invoke dependency constraint - ([`18ea200`](https://github.com/python-semantic-release/python-semantic-release/commit/18ea200633fd67e07f3d4121df5aa4c6dd29d154)) - - -## v7.34.5 (2023-06-17) - -### Bug Fixes - -- Consider empty commits - ([#608](https://github.com/python-semantic-release/python-semantic-release/pull/608), - [`6f2e890`](https://github.com/python-semantic-release/python-semantic-release/commit/6f2e8909636595d3cb5e858f42c63820cda45974)) - - -## v7.34.4 (2023-06-15) - -### Bug Fixes - -- Docker build fails installing git - ([#605](https://github.com/python-semantic-release/python-semantic-release/pull/605), - [`9e3eb97`](https://github.com/python-semantic-release/python-semantic-release/commit/9e3eb979783bc39ca564c2967c6c77eecba682e6)) - -git was installed from bullseye-backports, but base image is referencing latest python:3.10 since - bookworm was recently released, this now points at bookworm and installing the backport of git is - actually trying to downgrade, resulting in this error: - -> E: Packages were downgraded and -y was used without --allow-downgrades. - -> ERROR: failed to solve: process "/bin/sh -c echo \"deb http://deb.debian.org/debian - bullseye-backports main\" >> /etc/apt/sources.list; apt-get update; apt-get install -y - git/bullseye-backports" did not complete successfully: exit code: 100 - - -## v7.34.3 (2023-06-01) - -### Bug Fixes - -- Generate markdown linter compliant changelog headers & lists - ([#597](https://github.com/python-semantic-release/python-semantic-release/pull/597), - [`cc87400`](https://github.com/python-semantic-release/python-semantic-release/commit/cc87400d4a823350de7d02dc3172d2488c9517db)) - -In #594, I missed that there are 2 places where the version header is formatted - - -## v7.34.2 (2023-05-29) - -### Bug Fixes - -- Open all files with explicit utf-8 encoding - ([#596](https://github.com/python-semantic-release/python-semantic-release/pull/596), - [`cb71f35`](https://github.com/python-semantic-release/python-semantic-release/commit/cb71f35c26c1655e675fa735fa880d39a2c8af9c)) - - -## v7.34.1 (2023-05-28) - -### Bug Fixes - -- Generate markdown linter compliant changelog headers & lists - ([#594](https://github.com/python-semantic-release/python-semantic-release/pull/594), - [`9d9d403`](https://github.com/python-semantic-release/python-semantic-release/commit/9d9d40305c499c907335abe313e3ed122db0b154)) - -Add an extra new line after each header and between sections to fix 2 markdownlint errors for - changelogs generated by this package - - -## v7.34.0 (2023-05-28) - -### Features - -- Add option to only parse commits for current working directory - ([#509](https://github.com/python-semantic-release/python-semantic-release/pull/509), - [`cdf8116`](https://github.com/python-semantic-release/python-semantic-release/commit/cdf8116c1e415363b10a01f541873e04ad874220)) - -When running the application from a sub-directory in the VCS, the option use_only_cwd_commits will - filter out commits that does not changes the current working directory, similar to running - commands like `git log -- .` in a sub-directory. - - -## v7.33.5 (2023-05-19) - -### Bug Fixes - -- Update docs and default config for gitmoji changes - ([#590](https://github.com/python-semantic-release/python-semantic-release/pull/590), - [`192da6e`](https://github.com/python-semantic-release/python-semantic-release/commit/192da6e1352298b48630423d50191070a1c5ab24)) - -* fix: update docs and default config for gitmoji changes - -PR #582 updated to the latest Gitmojis release however the documentation and default config options - still referenced old and unsupported Gitmojis. - -* fix: update sphinx dep - -I could only build the documentation locally by updating Sphinx to the latest 1.x version. - -### Documentation - -- Update broken badge and add links - ([#591](https://github.com/python-semantic-release/python-semantic-release/pull/591), - [`0c23447`](https://github.com/python-semantic-release/python-semantic-release/commit/0c234475d27ad887b19170c82deb80293b3a95f1)) - -The "Test Status" badge was updated to address a recent breaking change in the GitHub actions API. - All the badges updated to add links to the appropriate resources for end-user convenience. - - -## v7.33.4 (2023-05-14) - -### Bug Fixes - -- If prerelease, publish prerelease - ([#587](https://github.com/python-semantic-release/python-semantic-release/pull/587), - [`927da9f`](https://github.com/python-semantic-release/python-semantic-release/commit/927da9f8feb881e02bc08b33dc559bd8e7fc41ab)) - -Co-authored-by: Ondrej Winter - - -## v7.33.3 (2023-04-24) - -### Bug Fixes - -- Update Gitmojis according to official node module - ([#582](https://github.com/python-semantic-release/python-semantic-release/pull/582), - [`806fcfa`](https://github.com/python-semantic-release/python-semantic-release/commit/806fcfa4cfdd3df4b380afd015a68dc90d54215a)) - -- Trim emojis from config - ([#583](https://github.com/python-semantic-release/python-semantic-release/pull/583), - [`02902f7`](https://github.com/python-semantic-release/python-semantic-release/commit/02902f73ee961565c2470c000f00947d9ef06cb1)) - -### Documentation - -- Update repository name - ([#559](https://github.com/python-semantic-release/python-semantic-release/pull/559), - [`5cdb05e`](https://github.com/python-semantic-release/python-semantic-release/commit/5cdb05e20f17b12890e1487c42d317dcbadd06c8)) - -In order to avoid 'Repository not found: relekang/python-semantic-release.' - -- Spelling and grammar in `travis.rst` - ([#556](https://github.com/python-semantic-release/python-semantic-release/pull/556), - [`3a76e9d`](https://github.com/python-semantic-release/python-semantic-release/commit/3a76e9d7505c421009eb3e953c32cccac2e70e07)) - -- spelling - subject-verb agreement - remove verbiage - -Signed-off-by: Vladislav Doster - -- Grammar in `docs/troubleshooting.rst` - ([#557](https://github.com/python-semantic-release/python-semantic-release/pull/557), - [`bbe754a`](https://github.com/python-semantic-release/python-semantic-release/commit/bbe754a3db9ce7132749e7902fe118b52f48ee42)) - -- change contraction to a possessive pronoun - -Signed-off-by: Vladislav Doster - - -## v7.33.2 (2023-02-17) - -### Bug Fixes - -- Inconsistent versioning between print-version and publish - ([#524](https://github.com/python-semantic-release/python-semantic-release/pull/524), - [`17d60e9`](https://github.com/python-semantic-release/python-semantic-release/commit/17d60e9bf66f62e5845065486c9d5e450f74839a)) - - -## v7.33.1 (2023-02-01) - -### Bug Fixes - -- **action**: Mark container fs as safe for git - ([#552](https://github.com/python-semantic-release/python-semantic-release/pull/552), - [`2a55f68`](https://github.com/python-semantic-release/python-semantic-release/commit/2a55f68e2b3cb9ffa9204c00ddbf12706af5c070)) - -See https://github.com/actions/runner-images/issues/6775#issuecomment-1409268124 and - https://github.com/actions/runner-images/issues/6775#issuecomment-1410270956 - - -## v7.33.0 (2023-01-15) - -### Bug Fixes - -- Changelog release commit search logic - ([#530](https://github.com/python-semantic-release/python-semantic-release/pull/530), - [`efb3410`](https://github.com/python-semantic-release/python-semantic-release/commit/efb341036196c39b4694ca4bfa56c6b3e0827c6c)) - -* Fixes changelog release commit search logic - -Running `semantic-release changelog` currently fails to identify "the last commit in [a] release" - because the compared commit messages have superfluous whitespace. Likely related to the issue - causing: https://github.com/relekang/python-semantic-release/issues/490 - -* Removes a couple of extra `strip()`s. - -- Bump Dockerfile to use Python 3.10 image - ([#536](https://github.com/python-semantic-release/python-semantic-release/pull/536), - [`8f2185d`](https://github.com/python-semantic-release/python-semantic-release/commit/8f2185d570b3966b667ac591ae523812e9d2e00f)) - -Fixes #533 - -Co-authored-by: Bernard Cooke - -- Fix mypy errors for publish - ([`b40dd48`](https://github.com/python-semantic-release/python-semantic-release/commit/b40dd484387c1b3f78df53ee2d35e281e8e799c8)) - -- Formatting in docs - ([`2e8227a`](https://github.com/python-semantic-release/python-semantic-release/commit/2e8227a8a933683250f8dace019df15fdb35a857)) - -- Update documentaton - ([`5cbdad2`](https://github.com/python-semantic-release/python-semantic-release/commit/5cbdad296034a792c9bf05e3700eac4f847eb469)) - -- **action**: Fix environment variable names - ([`3c66218`](https://github.com/python-semantic-release/python-semantic-release/commit/3c66218640044adf263fcf9b2714cfc4b99c2e90)) - -### Features - -- Add signing options to action - ([`31ad5eb`](https://github.com/python-semantic-release/python-semantic-release/commit/31ad5eb5a25f0ea703afc295351104aefd66cac1)) - -- **repository**: Add support for TWINE_CERT - ([#522](https://github.com/python-semantic-release/python-semantic-release/pull/522), - [`d56e85d`](https://github.com/python-semantic-release/python-semantic-release/commit/d56e85d1f2ac66fb0b59af2178164ca915dbe163)) - -Fixes #521 - -- Update action with configuration options - ([#518](https://github.com/python-semantic-release/python-semantic-release/pull/518), - [`4664afe`](https://github.com/python-semantic-release/python-semantic-release/commit/4664afe5f80a04834e398fefb841b166a51d95b7)) - -Co-authored-by: Kevin Watson - - -## v7.32.2 (2022-10-22) - -### Bug Fixes - -- Fix changelog generation in tag-mode - ([#171](https://github.com/python-semantic-release/python-semantic-release/pull/171), - [`482a62e`](https://github.com/python-semantic-release/python-semantic-release/commit/482a62ec374208b2d57675cb0b7f0ab9695849b9)) - -### Documentation - -- Fix code blocks - ([#506](https://github.com/python-semantic-release/python-semantic-release/pull/506), - [`24b7673`](https://github.com/python-semantic-release/python-semantic-release/commit/24b767339fcef1c843f7dd3188900adab05e03b1)) - -Previously: https://i.imgur.com/XWFhG7a.png - - -## v7.32.1 (2022-10-07) - -### Bug Fixes - -- Corrections for deprecation warnings - ([#505](https://github.com/python-semantic-release/python-semantic-release/pull/505), - [`d47afb6`](https://github.com/python-semantic-release/python-semantic-release/commit/d47afb6516238939e174f946977bf4880062a622)) - -### Documentation - -- Correct spelling mistakes - ([#504](https://github.com/python-semantic-release/python-semantic-release/pull/504), - [`3717e0d`](https://github.com/python-semantic-release/python-semantic-release/commit/3717e0d8810f5d683847c7b0e335eeefebbf2921)) - - -## v7.32.0 (2022-09-25) - -### Documentation - -- Correct documented default behaviour for `commit_version_number` - ([#497](https://github.com/python-semantic-release/python-semantic-release/pull/497), - [`ffae2dc`](https://github.com/python-semantic-release/python-semantic-release/commit/ffae2dc68f7f4bc13c5fd015acd43b457e568ada)) - -### Features - -- Add setting for enforcing textual changelog sections - ([#502](https://github.com/python-semantic-release/python-semantic-release/pull/502), - [`988437d`](https://github.com/python-semantic-release/python-semantic-release/commit/988437d21e40d3e3b1c95ed66b535bdd523210de)) - -Resolves #498 - -Add the `use_textual_changelog_sections` setting flag for enforcing that changelog section headings - will always be regular ASCII when using the Emoji parser. - - -## v7.31.4 (2022-08-23) - -### Bug Fixes - -- Account for trailing newlines in commit messages - ([#495](https://github.com/python-semantic-release/python-semantic-release/pull/495), - [`111b151`](https://github.com/python-semantic-release/python-semantic-release/commit/111b1518e8c8e2bd7535bd4c4b126548da384605)) - -Fixes #490 - - -## v7.31.3 (2022-08-22) - -### Bug Fixes - -- Use `commit_subject` when searching for release commits - ([#488](https://github.com/python-semantic-release/python-semantic-release/pull/488), - [`3849ed9`](https://github.com/python-semantic-release/python-semantic-release/commit/3849ed992c3cff9054b8690bcf59e49768f84f47)) - -Co-authored-by: Dzmitry Ryzhykau - - -## v7.31.2 (2022-07-29) - -### Bug Fixes - -- Add better handling of missing changelog placeholder - ([`e7a0e81`](https://github.com/python-semantic-release/python-semantic-release/commit/e7a0e81c004ade73ed927ba4de8c3e3ccaf0047c)) - -There is still one case where we don't add it, but in those corner cases it would be better to do it - manually than to make it mangled. - -Fixes #454 - -- Add repo=None when not in git repo - ([`40be804`](https://github.com/python-semantic-release/python-semantic-release/commit/40be804c09ab8a036fb135c9c38a63f206d2742c)) - -Fixes #422 - -### Documentation - -- Add example for pyproject.toml - ([`2a4b8af`](https://github.com/python-semantic-release/python-semantic-release/commit/2a4b8af1c2893a769c02476bb92f760c8522bd7a)) - - -## v7.31.1 (2022-07-29) - -### Bug Fixes - -- Update git email in action - ([`0ece6f2`](https://github.com/python-semantic-release/python-semantic-release/commit/0ece6f263ff02a17bb1e00e7ed21c490f72e3d00)) - -Fixes #473 - - -## v7.31.0 (2022-07-29) - -### Bug Fixes - -- :bug: fix get_current_release_version for tag_only version_source - ([`cad09be`](https://github.com/python-semantic-release/python-semantic-release/commit/cad09be9ba067f1c882379c0f4b28115a287fc2b)) - -### Features - -- Override repository_url w REPOSITORY_URL env var - ([#439](https://github.com/python-semantic-release/python-semantic-release/pull/439), - [`cb7578c`](https://github.com/python-semantic-release/python-semantic-release/commit/cb7578cf005b8bd65d9b988f6f773e4c060982e3)) - -- Add prerelease-patch and no-prerelease-patch flags for whether to auto-bump prereleases - ([`b4e5b62`](https://github.com/python-semantic-release/python-semantic-release/commit/b4e5b626074f969e4140c75fdac837a0625cfbf6)) - - -## v7.30.2 (2022-07-26) - -### Bug Fixes - -- Declare additional_options as action inputs - ([#481](https://github.com/python-semantic-release/python-semantic-release/pull/481), - [`cb5d8c7`](https://github.com/python-semantic-release/python-semantic-release/commit/cb5d8c7ce7d013fcfabd7696b5ffb846a8a6f853)) - - -## v7.30.1 (2022-07-25) - -### Bug Fixes - -- Don't use commit_subject for tag pattern matching - ([#480](https://github.com/python-semantic-release/python-semantic-release/pull/480), - [`ac3f11e`](https://github.com/python-semantic-release/python-semantic-release/commit/ac3f11e689f4a290d20b68b9c5c214098eb61b5f)) - - -## v7.30.0 (2022-07-25) - -### Bug Fixes - -- Allow empty additional options - ([#479](https://github.com/python-semantic-release/python-semantic-release/pull/479), - [`c9b2514`](https://github.com/python-semantic-release/python-semantic-release/commit/c9b2514d3e164b20e78b33f60989d78c2587e1df)) - -### Features - -- Add `additional_options` input for GitHub Action - ([#477](https://github.com/python-semantic-release/python-semantic-release/pull/477), - [`aea60e3`](https://github.com/python-semantic-release/python-semantic-release/commit/aea60e3d290c6fe3137bff21e0db1ed936233776)) - - -## v7.29.7 (2022-07-24) - -### Bug Fixes - -- Ignore dependency version bumps when parsing version from commit logs - ([#476](https://github.com/python-semantic-release/python-semantic-release/pull/476), - [`51bcb78`](https://github.com/python-semantic-release/python-semantic-release/commit/51bcb780a9f55fadfaf01612ff65c1f92642c2c1)) - - -## v7.29.6 (2022-07-15) - -### Bug Fixes - -- Allow changing prerelease tag using CLI flags - ([#466](https://github.com/python-semantic-release/python-semantic-release/pull/466), - [`395bf4f`](https://github.com/python-semantic-release/python-semantic-release/commit/395bf4f2de73663c070f37cced85162d41934213)) - -Delay construction of version and release patterns until runtime. This will allow to use non-default - prerelease tag. - -Co-authored-by: Dzmitry Ryzhykau - - -## v7.29.5 (2022-07-14) - -### Bug Fixes - -- **publish**: Get version bump for current release - ([#467](https://github.com/python-semantic-release/python-semantic-release/pull/467), - [`dd26888`](https://github.com/python-semantic-release/python-semantic-release/commit/dd26888a923b2f480303c19f1916647de48b02bf)) - -Replicate the behavior of "version" command in version calculation. - -Co-authored-by: Dzmitry Ryzhykau - -- Add packaging module requirement - ([#469](https://github.com/python-semantic-release/python-semantic-release/pull/469), - [`b99c9fa`](https://github.com/python-semantic-release/python-semantic-release/commit/b99c9fa88dc25e5ceacb131cd93d9079c4fb2c86)) - - -## v7.29.4 (2022-06-29) - -### Bug Fixes - -- Add text for empty ValueError - ([#461](https://github.com/python-semantic-release/python-semantic-release/pull/461), - [`733254a`](https://github.com/python-semantic-release/python-semantic-release/commit/733254a99320d8c2f964d799ac4ec29737867faa)) - - -## v7.29.3 (2022-06-26) - -### Bug Fixes - -- Ensure that assets can be uploaded successfully on custom GitHub servers - ([#458](https://github.com/python-semantic-release/python-semantic-release/pull/458), - [`32b516d`](https://github.com/python-semantic-release/python-semantic-release/commit/32b516d7aded4afcafe4aa56d6a5a329b3fc371d)) - -Signed-off-by: Chris Butler - - -## v7.29.2 (2022-06-20) - -### Bug Fixes - -- Ensure should_bump checks against release version if not prerelease - ([#457](https://github.com/python-semantic-release/python-semantic-release/pull/457), - [`da0606f`](https://github.com/python-semantic-release/python-semantic-release/commit/da0606f0d67ada5f097c704b9423ead3b5aca6b2)) - -Co-authored-by: Sebastian Seith - - -## v7.29.1 (2022-06-01) - -### Bug Fixes - -- Capture correct release version when patch has more than one digit - ([#448](https://github.com/python-semantic-release/python-semantic-release/pull/448), - [`426cdc7`](https://github.com/python-semantic-release/python-semantic-release/commit/426cdc7d7e0140da67f33b6853af71b2295aaac2)) - - -## v7.29.0 (2022-05-27) - -### Bug Fixes - -- Fix and refactor prerelease - ([#435](https://github.com/python-semantic-release/python-semantic-release/pull/435), - [`94c9494`](https://github.com/python-semantic-release/python-semantic-release/commit/94c94942561f85f48433c95fd3467e03e0893ab4)) - -### Features - -- Allow using ssh-key to push version while using token to publish to hvcs - ([#419](https://github.com/python-semantic-release/python-semantic-release/pull/419), - [`7b2dffa`](https://github.com/python-semantic-release/python-semantic-release/commit/7b2dffadf43c77d5e0eea307aefcee5c7744df5c)) - -* feat(config): add ignore_token_for_push param - -Add ignore_token_for_push parameter that allows using the underlying git authentication mechanism - for pushing a new version commit and tags while also using an specified token to upload dists - -* test(config): add test for ignore_token_for_push - -Test push_new_version with token while ignore_token_for_push is True and False - -* docs: add documentation for ignore_token_for_push - -* fix(test): override GITHUB_ACTOR env - -push_new_version is using GITHUB_ACTOR env var but we did not contemplate in our new tests that - actually Github actions running the tests will populate that var and change the test outcome - -Now we control the value of that env var and test for it being present or not - - -## v7.28.1 (2022-04-14) - -### Bug Fixes - -- Fix getting current version when `version_source=tag_only` - ([#437](https://github.com/python-semantic-release/python-semantic-release/pull/437), - [`b247936`](https://github.com/python-semantic-release/python-semantic-release/commit/b247936a81c0d859a34bf9f17ab8ca6a80488081)) - - -## v7.28.0 (2022-04-11) - -### Features - -- Add `tag_only` option for `version_source` - ([#436](https://github.com/python-semantic-release/python-semantic-release/pull/436), - [`cf74339`](https://github.com/python-semantic-release/python-semantic-release/commit/cf743395456a86c62679c2c0342502af043bfc3b)) - -Fixes #354 - - -## v7.27.1 (2022-04-03) - -### Bug Fixes - -- **prerelase**: Pass prerelease option to get_current_version - ([#432](https://github.com/python-semantic-release/python-semantic-release/pull/432), - [`aabab0b`](https://github.com/python-semantic-release/python-semantic-release/commit/aabab0b7ce647d25e0c78ae6566f1132ece9fcb9)) - -The `get_current_version` function accepts a `prerelease` argument which was never passed. - - -## v7.27.0 (2022-03-15) - -### Features - -- Add git-lfs to docker container - ([#427](https://github.com/python-semantic-release/python-semantic-release/pull/427), - [`184e365`](https://github.com/python-semantic-release/python-semantic-release/commit/184e3653932979b82e5a62b497f2a46cbe15ba87)) - - -## v7.26.0 (2022-03-07) - -### Features - -- Add prerelease functionality - ([#413](https://github.com/python-semantic-release/python-semantic-release/pull/413), - [`7064265`](https://github.com/python-semantic-release/python-semantic-release/commit/7064265627a2aba09caa2873d823b594e0e23e77)) - -* chore: add initial todos * feat: add prerelease tag option * feat: add prerelease cli flag * feat: - omit_pattern for previouse and current version getters * feat: print_version with prerelease bump - * feat: make print_version prerelease ready * feat: move prerelease determination to - get_new_version * test: improve get_last_version test * docs: added basic infos about prereleases - * feat: add prerelease flag to version and publish * feat: remove leftover todos - -Co-authored-by: Mario Jäckle - - -## v7.25.2 (2022-02-24) - -### Bug Fixes - -- **gitea**: Use form-data from asset upload - ([#421](https://github.com/python-semantic-release/python-semantic-release/pull/421), - [`e011944`](https://github.com/python-semantic-release/python-semantic-release/commit/e011944987885f75b80fe16a363f4befb2519a91)) - - -## v7.25.1 (2022-02-23) - -### Bug Fixes - -- **gitea**: Build status and asset upload - ([#420](https://github.com/python-semantic-release/python-semantic-release/pull/420), - [`57db81f`](https://github.com/python-semantic-release/python-semantic-release/commit/57db81f4c6b96da8259e3bad9137eaccbcd10f6e)) - -* fix(gitea): handle list build status response * fix(gitea): use form-data for upload_asset - - -## v7.25.0 (2022-02-17) - -### Documentation - -- Document tag_commit - ([`b631ca0`](https://github.com/python-semantic-release/python-semantic-release/commit/b631ca0a79cb2d5499715d43688fc284cffb3044)) - -Fixes #410 - -### Features - -- **hvcs**: Add gitea support - ([#412](https://github.com/python-semantic-release/python-semantic-release/pull/412), - [`b7e7936`](https://github.com/python-semantic-release/python-semantic-release/commit/b7e7936331b7939db09abab235c8866d800ddc1a)) - - -## v7.24.0 (2022-01-24) - -### Features - -- Include additional changes in release commits - ([`3e34f95`](https://github.com/python-semantic-release/python-semantic-release/commit/3e34f957ff5a3ec6e6f984cc4a79a38ce4391ea9)) - -Add new config keys, `pre_commit_command` and `commit_additional_files`, to allow custom file - changes alongside the release commits. - - -## v7.23.0 (2021-11-30) - -### Features - -- Support Github Enterprise server - ([`b4e01f1`](https://github.com/python-semantic-release/python-semantic-release/commit/b4e01f1b7e841263fa84f57f0ac331f7c0b31954)) - - -## v7.22.0 (2021-11-21) - -### Bug Fixes - -- Address PR feedback for `parser_angular.py` - ([`f7bc458`](https://github.com/python-semantic-release/python-semantic-release/commit/f7bc45841e6a5c762f99f936c292cee25fabcd02)) - -- `angular_parser_default_level_bump` should have plain-english settings - rename `TYPES` variable - to `LONG_TYPE_NAMES` - -### Features - -- **parser_angular**: Allow customization in parser - ([`298eebb`](https://github.com/python-semantic-release/python-semantic-release/commit/298eebbfab5c083505036ba1df47a5874a1eed6e)) - -- `parser_angular_allowed_types` controls allowed types - defaults stay the same: build, chore, ci, - docs, feat, fix, perf, style, refactor, test - `parser_angular_default_level_bump` controls the - default level to bump the version by - default stays at 0 - `parser_angular_minor_types` controls - which types trigger a minor version bump - default stays at only 'feat' - - `parser_angular_patch_types` controls which types trigger a patch version - default stays at 'fix' - or 'perf' - - -## v7.21.0 (2021-11-21) - -### Bug Fixes - -- Remove invalid repository exception - ([`746b62d`](https://github.com/python-semantic-release/python-semantic-release/commit/746b62d4e207a5d491eecd4ca96d096eb22e3bed)) - -### Features - -- Use gitlab-ci or github actions env vars - ([`8ca8dd4`](https://github.com/python-semantic-release/python-semantic-release/commit/8ca8dd40f742f823af147928bd75a9577c50d0fd)) - -return owner and project name from Gitlab/Github environment variables if available - -Issue #363 - - -## v7.20.0 (2021-11-21) - -### Bug Fixes - -- Mypy errors in vcs_helpers - ([`13ca0fe`](https://github.com/python-semantic-release/python-semantic-release/commit/13ca0fe650125be2f5e953f6193fdc4d44d3c75a)) - -- Skip removing the build folder if it doesn't exist - ([`8e79fdc`](https://github.com/python-semantic-release/python-semantic-release/commit/8e79fdc107ffd852a91dfb5473e7bd1dfaba4ee5)) - -https://github.com/relekang/python-semantic-release/issues/391#issuecomment-950667599 - -- Don't use linux commands on windows - ([#393](https://github.com/python-semantic-release/python-semantic-release/pull/393), - [`5bcccd2`](https://github.com/python-semantic-release/python-semantic-release/commit/5bcccd21cc8be3289db260e645fec8dc6a592abd)) - -### Documentation - -- Clean typos and add section for repository upload - ([`1efa18a`](https://github.com/python-semantic-release/python-semantic-release/commit/1efa18a3a55134d6bc6e4572ab025e24082476cd)) - -Add more details and external links - -### Features - -- Rewrite Twine adapter for uploading to artifact repositories - ([`cfb20af`](https://github.com/python-semantic-release/python-semantic-release/commit/cfb20af79a8e25a77aee9ff72deedcd63cb7f62f)) - -Artifact upload generalised to fully support custom repositories like GitLab. Rewritten to use twine - python api instead of running the executable. No-op mode now respected by artifact upload. - -- Allow custom environment variable names - ([#392](https://github.com/python-semantic-release/python-semantic-release/pull/392), - [`372cda3`](https://github.com/python-semantic-release/python-semantic-release/commit/372cda3497f16ead2209e6e1377d38f497144883)) - -* GH_TOKEN can now be customized by setting github_token_var * GL_TOKEN can now be customized by - setting gitlab_token_var * PYPI_PASSWORD can now be customized by setting pypi_pass_var * - PYPI_TOKEN can now be customized by setting pypi_token_var * PYPI_USERNAME can now be customized - by setting pypi_user_var - - -## v7.19.2 (2021-09-04) - -### Bug Fixes - -- Fixed ImproperConfig import error - ([#377](https://github.com/python-semantic-release/python-semantic-release/pull/377), - [`b011a95`](https://github.com/python-semantic-release/python-semantic-release/commit/b011a9595df4240cb190bfb1ab5b6d170e430dfc)) - - -## v7.19.1 (2021-08-17) - -### Bug Fixes - -- Add get_formatted_tag helper instead of hardcoded v-prefix in the git tags - ([`1a354c8`](https://github.com/python-semantic-release/python-semantic-release/commit/1a354c86abad77563ebce9a6944256461006f3c7)) - - -## v7.19.0 (2021-08-16) - -### Documentation - -- **parser**: Documentation for scipy-parser - ([`45ee34a`](https://github.com/python-semantic-release/python-semantic-release/commit/45ee34aa21443860a6c2cd44a52da2f353b960bf)) - -### Features - -- Custom git tag format support - ([#373](https://github.com/python-semantic-release/python-semantic-release/pull/373), - [`1d76632`](https://github.com/python-semantic-release/python-semantic-release/commit/1d76632043bf0b6076d214a63c92013624f4b95e)) - -* feat: custom git tag format support * test: add git tag format check * docs: add tag_format config - option - - -## v7.18.0 (2021-08-09) - -### Documentation - -- Clarify second argument of ParsedCommit - ([`086ddc2`](https://github.com/python-semantic-release/python-semantic-release/commit/086ddc28f06522453328f5ea94c873bd202ff496)) - -### Features - -- Add support for non-prefixed tags - ([#366](https://github.com/python-semantic-release/python-semantic-release/pull/366), - [`0fee4dd`](https://github.com/python-semantic-release/python-semantic-release/commit/0fee4ddb5baaddf85ed6b76e76a04474a5f97d0a)) - - -## v7.17.0 (2021-08-07) - -### Features - -- **parser**: Add scipy style parser - ([#369](https://github.com/python-semantic-release/python-semantic-release/pull/369), - [`51a3921`](https://github.com/python-semantic-release/python-semantic-release/commit/51a39213ea120c4bbd7a57b74d4f0cc3103da9f5)) - - -## v7.16.4 (2021-08-03) - -### Bug Fixes - -- Correct rendering of gitlab issue references - ([`07429ec`](https://github.com/python-semantic-release/python-semantic-release/commit/07429ec4a32d32069f25ec77b4bea963bd5d2a00)) - -resolves #358 - - -## v7.16.3 (2021-07-29) - -### Bug Fixes - -- Print right info if token is not set (#360) - ([#361](https://github.com/python-semantic-release/python-semantic-release/pull/361), - [`a275a7a`](https://github.com/python-semantic-release/python-semantic-release/commit/a275a7a17def85ff0b41d254e4ee42772cce1981)) - -Co-authored-by: Laercio Barbosa - - -## v7.16.2 (2021-06-25) - -### Bug Fixes - -- Use release-api for gitlab - ([`1ef5cab`](https://github.com/python-semantic-release/python-semantic-release/commit/1ef5caba2d8dd0f2647bc51ede0ef7152d8b7b8d)) - -### Documentation - -- Update trove classifiers to reflect supported versions - ([#344](https://github.com/python-semantic-release/python-semantic-release/pull/344), - [`7578004`](https://github.com/python-semantic-release/python-semantic-release/commit/7578004ed4b20c2bd553782443dfd77535faa377)) - -- Recommend setting a concurrency group for GitHub Actions - ([`34b0735`](https://github.com/python-semantic-release/python-semantic-release/commit/34b07357ab3f4f4aa787b71183816ec8aaf334a8)) - - -## v7.16.1 (2021-06-08) - -### Bug Fixes - -- Tomlkit should stay at 0.7.0 - ([`769a5f3`](https://github.com/python-semantic-release/python-semantic-release/commit/769a5f31115cdb1f43f19a23fe72b96a8c8ba0fc)) - -See https://github.com/relekang/python-semantic-release/pull/339#discussion_r647629387 - - -## v7.16.0 (2021-06-08) - -### Features - -- Add option to omit tagging - ([#341](https://github.com/python-semantic-release/python-semantic-release/pull/341), - [`20603e5`](https://github.com/python-semantic-release/python-semantic-release/commit/20603e53116d4f05e822784ce731b42e8cbc5d8f)) - - -## v7.15.6 (2021-06-08) - -### Bug Fixes - -- Update click and tomlkit - ([#339](https://github.com/python-semantic-release/python-semantic-release/pull/339), - [`947ea3b`](https://github.com/python-semantic-release/python-semantic-release/commit/947ea3bc0750735941446cf4a87bae20e750ba12)) - - -## v7.15.5 (2021-05-26) - -### Bug Fixes - -- Pin tomlkit to 0.7.0 - ([`2cd0db4`](https://github.com/python-semantic-release/python-semantic-release/commit/2cd0db4537bb9497b72eb496f6bab003070672ab)) - - -## v7.15.4 (2021-04-29) - -### Bug Fixes - -- Change log level of failed toml loading - ([`24bb079`](https://github.com/python-semantic-release/python-semantic-release/commit/24bb079cbeff12e7043dd35dd0b5ae03192383bb)) - -Fixes #235 - - -## v7.15.3 (2021-04-03) - -### Bug Fixes - -- Add venv to path in github action - ([`583c5a1`](https://github.com/python-semantic-release/python-semantic-release/commit/583c5a13e40061fc544b82decfe27a6c34f6d265)) - - -## v7.15.2 (2021-04-03) - -### Bug Fixes - -- Use absolute path for venv in github action - ([`d4823b3`](https://github.com/python-semantic-release/python-semantic-release/commit/d4823b3b6b1fcd5c33b354f814643c9aaf85a06a)) - -- Set correct path for venv in action script - ([`aac02b5`](https://github.com/python-semantic-release/python-semantic-release/commit/aac02b5a44a6959328d5879578aa3536bdf856c2)) - -- Run semantic-release in virtualenv in the github action - ([`b508ea9`](https://github.com/python-semantic-release/python-semantic-release/commit/b508ea9f411c1cd4f722f929aab9f0efc0890448)) - -Fixes #331 - -### Documentation - -- Clarify that HVCS should be lowercase - ([`da0ab0c`](https://github.com/python-semantic-release/python-semantic-release/commit/da0ab0c62c4ce2fa0d815e5558aeec1a1e23bc89)) - -Fixes #330 - - -## v7.15.1 (2021-03-26) - -### Bug Fixes - -- Add support for setting build_command to "false" - ([`520cf1e`](https://github.com/python-semantic-release/python-semantic-release/commit/520cf1eaa7816d0364407dbd17b5bc7c79806086)) - -Fixes #328 - -- Upgrade python-gitlab range - ([`abfacc4`](https://github.com/python-semantic-release/python-semantic-release/commit/abfacc432300941d57488842e41c06d885637e6c)) - -Keeping both 1.x and 2.x since only change that is breaking is dropping python 3.6 support. I hope - that leaving the lower limit will make it still work with python 3.6. - -Fixes #329 - -### Documentation - -- Add common options to documentation - ([`20d79a5`](https://github.com/python-semantic-release/python-semantic-release/commit/20d79a51bffa26d40607c1b77d10912992279112)) - -These can be found by running `semantic-release --help`, but including them in the documentation - will be helpful for CI users who don't have the command installed locally. - -Related to #327. - - -## v7.15.0 (2021-02-18) - -### Documentation - -- Add documentation for releasing on a Jenkins instance - ([#324](https://github.com/python-semantic-release/python-semantic-release/pull/324), - [`77ad988`](https://github.com/python-semantic-release/python-semantic-release/commit/77ad988a2057be59e4559614a234d6871c06ee37)) - -### Features - -- Allow the use of .pypirc for twine uploads - ([#325](https://github.com/python-semantic-release/python-semantic-release/pull/325), - [`6bc56b8`](https://github.com/python-semantic-release/python-semantic-release/commit/6bc56b8aa63069a25a828a2d1a9038ecd09b7d5d)) - - -## v7.14.0 (2021-02-11) - -### Documentation - -- Correct casing on proper nouns - ([#320](https://github.com/python-semantic-release/python-semantic-release/pull/320), - [`d51b999`](https://github.com/python-semantic-release/python-semantic-release/commit/d51b999a245a4e56ff7a09d0495c75336f2f150d)) - -* docs: correcting Semantic Versioning casing - -Semantic Versioning is the name of the specification. Therefore it is a proper noun. This patch - corrects the incorrect casing for Semantic Versioning. - -* docs: correcting Python casing - -This patch corrects the incorrect casing for Python. - -### Features - -- **checks**: Add support for Jenkins CI - ([#322](https://github.com/python-semantic-release/python-semantic-release/pull/322), - [`3e99855`](https://github.com/python-semantic-release/python-semantic-release/commit/3e99855c6bc72b3e9a572c58cc14e82ddeebfff8)) - -Includes a ci check handler to verify jenkins. Unlike other ci systems jenkins doesn't generally - prefix things with `JENKINS` or simply inject `JENKINS=true` Really the only thing that is - immediately identifiable is `JENKINS_URL` - - -## v7.13.2 (2021-01-29) - -### Bug Fixes - -- Fix crash when TOML has no PSR section - ([#319](https://github.com/python-semantic-release/python-semantic-release/pull/319), - [`5f8ab99`](https://github.com/python-semantic-release/python-semantic-release/commit/5f8ab99bf7254508f4b38fcddef2bdde8dd15a4c)) - -* test: reproduce issue with TOML without PSR section - -* fix: crash when TOML has no PSR section - -* chore: remove unused imports - -### Documentation - -- Fix `version_toml` example for Poetry - ([#318](https://github.com/python-semantic-release/python-semantic-release/pull/318), - [`39acb68`](https://github.com/python-semantic-release/python-semantic-release/commit/39acb68bfffe8242040e476893639ba26fa0d6b5)) - - -## v7.13.1 (2021-01-26) - -### Bug Fixes - -- Use multiline version_pattern match in replace - ([#315](https://github.com/python-semantic-release/python-semantic-release/pull/315), - [`1a85af4`](https://github.com/python-semantic-release/python-semantic-release/commit/1a85af434325ce52e11b49895e115f7a936e417e)) - -Fixes #306 - - -## v7.13.0 (2021-01-26) - -### Features - -- Support toml files for version declaration - ([#307](https://github.com/python-semantic-release/python-semantic-release/pull/307), - [`9b62a7e`](https://github.com/python-semantic-release/python-semantic-release/commit/9b62a7e377378667e716384684a47cdf392093fa)) - -This introduce a new `version_toml` configuration property that behaves like `version_pattern` and - `version_variable`. - -For poetry support, user should now set `version_toml = pyproject.toml:tool.poetry.version`. - -This introduce an ABC class, `VersionDeclaration`, that can be implemented to add other version - declarations with ease. - -`toml` dependency has been replaced by `tomlkit`, as this is used the library used by poetry to - generate the `pyproject.toml` file, and is able to keep the ordering of data defined in the file. - -Existing `VersionPattern` class has been renamed to `PatternVersionDeclaration` and now implements - `VersionDeclaration`. - -`load_version_patterns()` function has been renamed to `load_version_declarations()` and now return - a list of `VersionDeclaration` implementations. - -Close #245 Close #275 - - -## v7.12.0 (2021-01-25) - -### Documentation - -- **actions**: Pat must be passed to checkout step too - ([`e2d8e47`](https://github.com/python-semantic-release/python-semantic-release/commit/e2d8e47d2b02860881381318dcc088e150c0fcde)) - -Fixes #311 - -### Features - -- **github**: Retry GitHub API requests on failure - ([#314](https://github.com/python-semantic-release/python-semantic-release/pull/314), - [`ac241ed`](https://github.com/python-semantic-release/python-semantic-release/commit/ac241edf4de39f4fc0ff561a749fa85caaf9e2ae)) - -* refactor(github): use requests.Session to call raise_for_status - -* fix(github): add retries to github API requests - - -## v7.11.0 (2021-01-08) - -### Bug Fixes - -- **actions**: Fix github actions with new main location - ([`6666672`](https://github.com/python-semantic-release/python-semantic-release/commit/6666672d3d97ab7cdf47badfa3663f1a69c2dbdf)) - -- Avoid Unknown bump level 0 message - ([`8ab624c`](https://github.com/python-semantic-release/python-semantic-release/commit/8ab624cf3508b57a9656a0a212bfee59379d6f8b)) - -This issue occurs when some commits are available but are all to level 0. - -- Add dot to --define option help - ([`eb4107d`](https://github.com/python-semantic-release/python-semantic-release/commit/eb4107d2efdf8c885c8ae35f48f1b908d1fced32)) - -### Build System - -- Add __main__.py magic file - ([`e93f36a`](https://github.com/python-semantic-release/python-semantic-release/commit/e93f36a7a10e48afb42c1dc3d860a5e2a07cf353)) - -This file allow to run the package from sources properly with `python -m semantic_release`. - -### Features - -- **print-version**: Add print-version command to output version - ([`512e3d9`](https://github.com/python-semantic-release/python-semantic-release/commit/512e3d92706055bdf8d08b7c82927d3530183079)) - -This new command can be integrated in the build process before the effective release, ie. to rename - some files with the version number. - -Users may invoke `VERSION=$(semantic-release print-version)` to retrieve the version that will be - generated during the release before it really occurs. - - -## v7.10.0 (2021-01-08) - -### Documentation - -- Fix incorrect reference syntax - ([`42027f0`](https://github.com/python-semantic-release/python-semantic-release/commit/42027f0d2bb64f4c9eaec65112bf7b6f67568e60)) - -- Rewrite getting started page - ([`97a9046`](https://github.com/python-semantic-release/python-semantic-release/commit/97a90463872502d1207890ae1d9dd008b1834385)) - -### Features - -- **build**: Allow falsy values for build_command to disable build step - ([`c07a440`](https://github.com/python-semantic-release/python-semantic-release/commit/c07a440f2dfc45a2ad8f7c454aaac180c4651f70)) - - -## v7.9.0 (2020-12-21) - -### Bug Fixes - -- **history**: Coerce version to string - ([#298](https://github.com/python-semantic-release/python-semantic-release/pull/298), - [`d4cdc3d`](https://github.com/python-semantic-release/python-semantic-release/commit/d4cdc3d3cd2d93f2a78f485e3ea107ac816c7d00)) - -The changes in #297 mistakenly omitted coercing the return value to a string. This resulted in - errors like: "can only concatenate str (not "VersionInfo") to str" - -Add test case asserting it's type str - -- **history**: Require semver >= 2.10 - ([`5087e54`](https://github.com/python-semantic-release/python-semantic-release/commit/5087e549399648cf2e23339a037b33ca8b62d954)) - -This resolves deprecation warnings, and updates this to a more 3.x compatible syntax - -### Features - -- **hvcs**: Add hvcs_domain config option - ([`ab3061a`](https://github.com/python-semantic-release/python-semantic-release/commit/ab3061ae93c49d71afca043b67b361e2eb2919e6)) - -While Gitlab already has an env var that should provide the vanity URL, this supports a generic - 'hvcs_domain' parameter that makes the hostname configurable for both GHE and Gitlab. - -This will also use the configured hostname (from either source) in the changelog links - -Fixes: #277 - - -## v7.8.2 (2020-12-19) - -### Bug Fixes - -- **cli**: Skip remove_dist where not needed - ([`04817d4`](https://github.com/python-semantic-release/python-semantic-release/commit/04817d4ecfc693195e28c80455bfbb127485f36b)) - -Skip removing dist files when upload_pypi or upload_release are not set - -### Features - -- **repository**: Add to settings artifact repository - ([`f4ef373`](https://github.com/python-semantic-release/python-semantic-release/commit/f4ef3733b948282fba5a832c5c0af134609b26d2)) - -- Add new config var to set repository (repository_url) - Remove 'Pypi' word when it refers - generically to an artifact repository system - Depreciate 'PYPI_USERNAME' and 'PYPI_PASSWORD' and - prefer 'REPOSITORY_USERNAME' and 'REPOSITORY_PASSWORD' env vars - Depreciate every config key with - 'pypi' and prefer repository - Update doc in accordance with those changes - - -## v7.8.1 (2020-12-18) - -### Bug Fixes - -- **logs**: Fix TypeError when enabling debug logs - ([`2591a94`](https://github.com/python-semantic-release/python-semantic-release/commit/2591a94115114c4a91a48f5b10b3954f6ac932a1)) - -Some logger invocation were raising the following error: TypeError: not all arguments converted - during string formatting. - -This also refactor some other parts to use f-strings as much as possible. - -- Filenames with unknown mimetype are now properly uploaded to github release - ([`f3ece78`](https://github.com/python-semantic-release/python-semantic-release/commit/f3ece78b2913e70f6b99907b192a1e92bbfd6b77)) - -When mimetype can't be guessed, content-type header is set to None. But it's mandatory for the file - upload to work properly. In this case, application/octect-stream is now used as a fallback. - - -## v7.8.0 (2020-12-18) - -### Bug Fixes - -- **netrc**: Prefer using token defined in GH_TOKEN instead of .netrc file - ([`3af32a7`](https://github.com/python-semantic-release/python-semantic-release/commit/3af32a738f2f2841fd75ec961a8f49a0b1c387cf)) - -.netrc file will only be used when available and no GH_TOKEN environment variable is defined. - -This also add a test to make sure .netrc is used properly when no GH_TOKEN is defined. - -- **changelog**: Use "issues" link vs "pull" - ([`93e48c9`](https://github.com/python-semantic-release/python-semantic-release/commit/93e48c992cb8b763f430ecbb0b7f9c3ca00036e4)) - -While, e.g., https://github.com/owner/repos/pull/123 will work, - https://github.com/owner/repos/issues/123 should be safer / more consistent, and should avoid a - failure if someone adds an issue link at the end of a PR that is merged via rebase merge or merge - commit. - -### Features - -- Add `upload_to_pypi_glob_patterns` option - ([`42305ed`](https://github.com/python-semantic-release/python-semantic-release/commit/42305ed499ca08c819c4e7e65fcfbae913b8e6e1)) - - -## v7.7.0 (2020-12-12) - -### Features - -- **changelog**: Add PR links in markdown - ([#282](https://github.com/python-semantic-release/python-semantic-release/pull/282), - [`0448f6c`](https://github.com/python-semantic-release/python-semantic-release/commit/0448f6c350bbbf239a81fe13dc5f45761efa7673)) - -GitHub release notes automagically link to the PR, but changelog markdown doesn't. Replace a PR - number at the end of a message with a markdown link. - - -## v7.6.0 (2020-12-06) - -### Documentation - -- Add documentation for option `major_on_zero` - ([`2e8b26e`](https://github.com/python-semantic-release/python-semantic-release/commit/2e8b26e4ee0316a2cf2a93c09c783024fcd6b3ba)) - -### Features - -- Add `major_on_zero` option - ([`d324154`](https://github.com/python-semantic-release/python-semantic-release/commit/d3241540e7640af911eb24c71e66468feebb0d46)) - -To control if bump major or not when current major version is zero. - - -## v7.5.0 (2020-12-04) - -### Features - -- **logs**: Include scope in changelogs - ([#281](https://github.com/python-semantic-release/python-semantic-release/pull/281), - [`21c96b6`](https://github.com/python-semantic-release/python-semantic-release/commit/21c96b688cc44cc6f45af962ffe6d1f759783f37)) - -When the scope is set, include it in changelogs, e.g. "feat(x): some description" becomes "**x**: - some description". This is similar to how the Node semantic release (and - conventional-changelog-generator) generates changelogs. If scope is not given, it's omitted. - -Add a new config parameter changelog_scope to disable this behavior when set to 'False' - - -## v7.4.1 (2020-12-04) - -### Bug Fixes - -- Add "changelog_capitalize" to flags - ([#279](https://github.com/python-semantic-release/python-semantic-release/pull/279), - [`37716df`](https://github.com/python-semantic-release/python-semantic-release/commit/37716dfa78eb3f848f57a5100d01d93f5aafc0bf)) - -Fixes #278 (or so I hope). - - -## v7.4.0 (2020-11-24) - -### Documentation - -- Fix broken internal references - ([#270](https://github.com/python-semantic-release/python-semantic-release/pull/270), - [`da20b9b`](https://github.com/python-semantic-release/python-semantic-release/commit/da20b9bdd3c7c87809c25ccb2a5993a7ea209a22)) - -- Update links to Github docs - ([#268](https://github.com/python-semantic-release/python-semantic-release/pull/268), - [`c53162e`](https://github.com/python-semantic-release/python-semantic-release/commit/c53162e366304082a3bd5d143b0401da6a16a263)) - -### Features - -- Add changelog_capitalize configuration - ([`7cacca1`](https://github.com/python-semantic-release/python-semantic-release/commit/7cacca1eb436a7166ba8faf643b53c42bc32a6a7)) - -Fixes #260 - - -## v7.3.0 (2020-09-28) - -### Documentation - -- Fix docstring - ([`5a5e2cf`](https://github.com/python-semantic-release/python-semantic-release/commit/5a5e2cfb5e6653fb2e95e6e23e56559953b2c2b4)) - -Stumbled upon this docstring which first line seems copy/pasted from the method above. - -### Features - -- Generate `changelog.md` file - ([#266](https://github.com/python-semantic-release/python-semantic-release/pull/266), - [`2587dfe`](https://github.com/python-semantic-release/python-semantic-release/commit/2587dfed71338ec6c816f58cdf0882382c533598)) - - -## v7.2.5 (2020-09-16) - -### Bug Fixes - -- Add required to inputs in action metadata - ([#264](https://github.com/python-semantic-release/python-semantic-release/pull/264), - [`e76b255`](https://github.com/python-semantic-release/python-semantic-release/commit/e76b255cf7d3d156e3314fc28c54d63fa126e973)) - -According to the documentation, `inputs..required` is a required field. - - -## v7.2.4 (2020-09-14) - -### Bug Fixes - -- Use range for toml dependency - ([`45707e1`](https://github.com/python-semantic-release/python-semantic-release/commit/45707e1b7dcab48103a33de9d7f9fdb5a34dae4a)) - -Fixes #241 - - -## v7.2.3 (2020-09-12) - -### Bug Fixes - -- Support multiline version_pattern matching by default - ([`82f7849`](https://github.com/python-semantic-release/python-semantic-release/commit/82f7849dcf29ba658e0cb3b5d21369af8bf3c16f)) - -### Documentation - -- Link to getting started guide in README - ([`f490e01`](https://github.com/python-semantic-release/python-semantic-release/commit/f490e0194fa818db4d38c185bc5e6245bfde546b)) - -- Create 'getting started' instructions - ([#256](https://github.com/python-semantic-release/python-semantic-release/pull/256), - [`5f4d000`](https://github.com/python-semantic-release/python-semantic-release/commit/5f4d000c3f153d1d23128acf577e389ae879466e)) - - -## v7.2.2 (2020-07-26) - -### Bug Fixes - -- **changelog**: Send changelog to stdout - ([`87e2bb8`](https://github.com/python-semantic-release/python-semantic-release/commit/87e2bb881387ff3ac245ab9923347a5a616e197b)) - -Fixes #250 - -### Documentation - -- Add quotation marks to the pip commands in CONTRIBUTING.rst - ([#253](https://github.com/python-semantic-release/python-semantic-release/pull/253), - [`e20fa43`](https://github.com/python-semantic-release/python-semantic-release/commit/e20fa43098c06f5f585c81b9cd7e287dcce3fb5d)) - - -## v7.2.1 (2020-06-29) - -### Bug Fixes - -- Commit all files with bumped versions - ([#249](https://github.com/python-semantic-release/python-semantic-release/pull/249), - [`b3a1766`](https://github.com/python-semantic-release/python-semantic-release/commit/b3a1766be7edb7d2eb76f2726d35ab8298688b3b)) - -### Documentation - -- Give example of multiple build commands - ([#248](https://github.com/python-semantic-release/python-semantic-release/pull/248), - [`65f1ffc`](https://github.com/python-semantic-release/python-semantic-release/commit/65f1ffcc6cac3bf382f4b821ff2be59d04f9f867)) - -I had a little trouble figuring out how to use a non-setup.py build command, so I thought it would - be helpful to update the docs with an example of how to do this. - - -## v7.2.0 (2020-06-15) - -### Features - -- Bump versions in multiple files - ([#246](https://github.com/python-semantic-release/python-semantic-release/pull/246), - [`0ba2c47`](https://github.com/python-semantic-release/python-semantic-release/commit/0ba2c473c6e44cc326b3299b6ea3ddde833bdb37)) - -- Add the `version_pattern` setting, which allows version numbers to be identified using arbitrary - regular expressions. - Refactor the config system to allow non-string data types to be specified - in `pyproject.toml`. - Multiple files can now be specified by setting `version_variable` or - `version_pattern` to a list in `pyproject.toml`. - -Fixes #175 - - -## v7.1.1 (2020-05-28) - -### Bug Fixes - -- **changelog**: Swap sha and message in table changelog - ([`6741370`](https://github.com/python-semantic-release/python-semantic-release/commit/6741370ab09b1706ff6e19b9fbe57b4bddefc70d)) - - -## v7.1.0 (2020-05-24) - -### Features - -- **changelog**: Add changelog_table component - ([#242](https://github.com/python-semantic-release/python-semantic-release/pull/242), - [`fe6a7e7`](https://github.com/python-semantic-release/python-semantic-release/commit/fe6a7e7fa014ffb827a1430dbcc10d1fc84c886b)) - -Add an alternative changelog component which displays each section as a row in a table. - -Fixes #237 - - -## v7.0.0 (2020-05-22) - -### Documentation - -- Add conda-forge badge - ([`e9536bb`](https://github.com/python-semantic-release/python-semantic-release/commit/e9536bbe119c9e3b90c61130c02468e0e1f14141)) - -### Features - -- **changelog**: Add changelog components - ([#240](https://github.com/python-semantic-release/python-semantic-release/pull/240), - [`3e17a98`](https://github.com/python-semantic-release/python-semantic-release/commit/3e17a98d7fa8468868a87e62651ac2c010067711)) - -* feat(changelog): add changelog components - -Add the ability to configure sections of the changelog using a `changelog_components` option. - Component outputs are separated by a blank line and appear in the same order as they were - configured. - -It is possible to create your own custom components. Each component is a function which returns - either some text to be added, or None in which case it will be skipped. - -BREAKING CHANGE: The `compare_url` option has been removed in favor of using `changelog_components`. - This functionality is now available as the `semantic_release.changelog.compare_url` component. - -* docs: add documentation for changelog_components - -* feat: pass changelog_sections to components - -Changelog components may now receive the value of `changelog_sections`, split and ready to use. - - -## v6.4.1 (2020-05-15) - -### Bug Fixes - -- Convert \r\n to \n in commit messages - ([`34acbbc`](https://github.com/python-semantic-release/python-semantic-release/commit/34acbbcd25320a9d18dcd1a4f43e1ce1837b2c9f)) - -Fixes #239 - - -## v6.4.0 (2020-05-15) - -### Features - -- **history**: Create emoji parser - ([#238](https://github.com/python-semantic-release/python-semantic-release/pull/238), - [`2e1c50a`](https://github.com/python-semantic-release/python-semantic-release/commit/2e1c50a865628b372f48945a039a3edb38a7cdf0)) - -Add a commit parser which uses emojis from https://gitmoji.carloscuesta.me/ to determine the type of - change. - -* fix: add emojis to default changelog_sections - -* fix: include all parsed types in changelog - -This allows emojis to appear in the changelog, as well as configuring other types to appear with the - Angular parser (I remember someone asking for that feature a while ago). All filtering is now done - in the markdown_changelog function. - -* refactor(history): get breaking changes in parser - -Move the task of detecting breaking change descriptions into the commit parser function, instead of - during changelog generation. - -This has allowed the emoji parser to also return the regular descriptions as breaking change - descriptions for commits with :boom:. - -BREAKING CHANGE: Custom commit parser functions are now required to pass a fifth argument to - `ParsedCommit`, which is a list of breaking change descriptions. - -* docs: add documentation for emoji parser - - -## v6.3.1 (2020-05-11) - -### Bug Fixes - -- Use getboolean for commit_version_number - ([`a60e0b4`](https://github.com/python-semantic-release/python-semantic-release/commit/a60e0b4e3cadf310c3e0ad67ebeb4e69d0ee50cb)) - -Fixes #186 - - -## v6.3.0 (2020-05-09) - -### Documentation - -- Rewrite commit-log-parsing.rst - ([`4c70f4f`](https://github.com/python-semantic-release/python-semantic-release/commit/4c70f4f2aa3343c966d1b7ab8566fcc782242ab9)) - -- Document compare_link option - ([`e52c355`](https://github.com/python-semantic-release/python-semantic-release/commit/e52c355c0d742ddd2cfa65d42888296942e5bec5)) - -### Features - -- **history**: Support linking compare page in changelog - ([`79a8e02`](https://github.com/python-semantic-release/python-semantic-release/commit/79a8e02df82fbc2acecaad9e9ff7368e61df3e54)) - -Fixes #218 - - -## v6.2.0 (2020-05-02) - -### Documentation - -- Add = to verbosity option - ([`a0f4c9c`](https://github.com/python-semantic-release/python-semantic-release/commit/a0f4c9cd397fcb98f880097319c08160adb3c3e6)) - -Fixes #227 - -- Use references where possible - ([`f38e5d4`](https://github.com/python-semantic-release/python-semantic-release/commit/f38e5d4a1597cddb69ce47a4d79b8774e796bf41)) - -Fixes #221 - -### Features - -- **history**: Check all paragraphs for breaking changes - ([`fec08f0`](https://github.com/python-semantic-release/python-semantic-release/commit/fec08f0dbd7ae15f95ca9c41a02c9fe6d448ede0)) - -Check each paragraph of the commit's description for breaking changes, instead of only a body and - footer. This ensures that breaking changes are detected when squashing commits together. - -Fixes #200 - - -## v6.1.0 (2020-04-26) - -### Documentation - -- Add documentation for PYPI_TOKEN - ([`a8263a0`](https://github.com/python-semantic-release/python-semantic-release/commit/a8263a066177d1d42f2844e4cb42a76a23588500)) - -### Features - -- **actions**: Support PYPI_TOKEN on GitHub Actions - ([`df2c080`](https://github.com/python-semantic-release/python-semantic-release/commit/df2c0806f0a92186e914cfc8cc992171d74422df)) - -Add support for the new PYPI_TOKEN environment variable to be used on GitHub Actions. - -- **pypi**: Support easier use of API tokens - ([`bac135c`](https://github.com/python-semantic-release/python-semantic-release/commit/bac135c0ae7a6053ecfc7cdf2942c3c89640debf)) - -Allow setting the environment variable PYPI_TOKEN to automatically fill the username as __token__. - -Fixes #213 - - -## v6.0.1 (2020-04-15) - -### Bug Fixes - -- **hvcs**: Convert get_hvcs to use LoggedFunction - ([`3084249`](https://github.com/python-semantic-release/python-semantic-release/commit/308424933fd3375ca3730d9eaf8abbad2435830b)) - -This was missed in 213530fb0c914e274b81d1dacf38ea7322b5b91f - - -## v6.0.0 (2020-04-15) - -### Documentation - -- Create Read the Docs config file - ([`aa5a1b7`](https://github.com/python-semantic-release/python-semantic-release/commit/aa5a1b700a1c461c81c6434686cb6f0504c4bece)) - -- Include README.rst in index.rst - ([`8673a9d`](https://github.com/python-semantic-release/python-semantic-release/commit/8673a9d92a9bf348bb3409e002a830741396c8ca)) - -These files were very similar so it makes sense to simply include one inside the other. - -- Rewrite README.rst - ([`e049772`](https://github.com/python-semantic-release/python-semantic-release/commit/e049772cf14cdd49538cf357db467f0bf3fe9587)) - -- Move action.rst into main documentation - ([`509ccaf`](https://github.com/python-semantic-release/python-semantic-release/commit/509ccaf307a0998eced69ad9fee1807132babe28)) - -- Rewrite troubleshooting page - ([`0285de2`](https://github.com/python-semantic-release/python-semantic-release/commit/0285de215a8dac3fcc9a51f555fa45d476a56dff)) - -### Refactoring - -- **debug**: Use logging and click_log instead of ndebug - ([`15b1f65`](https://github.com/python-semantic-release/python-semantic-release/commit/15b1f650f29761e1ab2a91b767cbff79b2057a4c)) - -BREAKING CHANGE: `DEBUG="*"` no longer has an effect, instead use `--verbosity DEBUG`. - - -## v5.2.0 (2020-04-09) - -### Documentation - -- Automate API docs - ([`7d4fea2`](https://github.com/python-semantic-release/python-semantic-release/commit/7d4fea266cc75007de51609131eb6d1e324da608)) - -Automatically create pages in the API docs section using sphinx-autodoc. This is added as an event - handler in conf.py. - -### Features - -- **github**: Add tag as default release name - ([`2997908`](https://github.com/python-semantic-release/python-semantic-release/commit/2997908f80f4fcec56917d237a079b961a06f990)) - - -## v5.1.0 (2020-04-04) - -### Documentation - -- Update index.rst - ([`b27c26c`](https://github.com/python-semantic-release/python-semantic-release/commit/b27c26c66e7e41843ab29076f7e724908091b46e)) - -- Improve formatting of envvars page - ([`b376a56`](https://github.com/python-semantic-release/python-semantic-release/commit/b376a567bfd407a507ce0752614b0ca75a0f2973)) - -- Improve formatting of configuration page - ([`9a8e22e`](https://github.com/python-semantic-release/python-semantic-release/commit/9a8e22e838d7dbf3bfd941397c3b39560aca6451)) - -### Features - -- **history**: Allow customizing changelog_sections - ([#207](https://github.com/python-semantic-release/python-semantic-release/pull/207), - [`d5803d5`](https://github.com/python-semantic-release/python-semantic-release/commit/d5803d5c1668d86482a31ac0853bac7ecfdc63bc)) - - -## v5.0.3 (2020-03-26) - -### Bug Fixes - -- Bump dependencies and fix Windows issues on Development - ([#173](https://github.com/python-semantic-release/python-semantic-release/pull/173), - [`0a6f8c3`](https://github.com/python-semantic-release/python-semantic-release/commit/0a6f8c3842b05f5f424dad5ce1fa5e3823c7e688)) - -* Bump dependencies and fix windows issues - -* Correctly pass temp dir to test settings - -* Remove print call on test settings - -* chore: remove py34 and py35 classifiers - -* chore: bump twine, requests and python-gitlab - -* chore: update tox config to be more granular - -* fix: missing mime types on Windows - -* chore: bump circleCI and tox python to 3.8 - -* chore: remove py36 from tox envlist - -* chore: isort errors - - -## v5.0.2 (2020-03-22) - -### Bug Fixes - -- **history**: Leave case of other characters unchanged - ([`96ba94c`](https://github.com/python-semantic-release/python-semantic-release/commit/96ba94c4b4593997343ec61ecb6c823c1494d0e2)) - -Previously, use of str.capitalize() would capitalize the first letter as expected, but all - subsequent letters became lowercase. Now, the other letters remain unchanged. - - -## v5.0.1 (2020-03-22) - -### Bug Fixes - -- Make action use current version of semantic-release - ([`123984d`](https://github.com/python-semantic-release/python-semantic-release/commit/123984d735181c622f3d99088a1ad91321192a11)) - -This gives two benefits: * In this repo it will work as a smoketest * In other repos when they - specify version int the github workflow they will get the version they specify. - - -## v5.0.0 (2020-03-22) - -### Bug Fixes - -- Rename default of build_command config - ([`d5db22f`](https://github.com/python-semantic-release/python-semantic-release/commit/d5db22f9f7acd05d20fd60a8b4b5a35d4bbfabb8)) - -### Documentation - -- **pypi**: Update docstings in pypi.py - ([`6502d44`](https://github.com/python-semantic-release/python-semantic-release/commit/6502d448fa65e5dc100e32595e83fff6f62a881a)) - -### Features - -- **build**: Allow config setting for build command - ([#195](https://github.com/python-semantic-release/python-semantic-release/pull/195), - [`740f4bd`](https://github.com/python-semantic-release/python-semantic-release/commit/740f4bdb26569362acfc80f7e862fc2c750a46dd)) - -* feat(build): allow config setting for build command - -BREAKING CHANGE: Previously the build_commands configuration variable set the types of bundles sent - to `python setup.py`. It has been replaced by the configuration variable `build_command` which - takes the full command e.g. `python setup.py sdist` or `poetry build`. - -Closes #188 - - -## v4.11.0 (2020-03-22) - -### Documentation - -- Make AUTHORS.rst dynamic - ([`db2e076`](https://github.com/python-semantic-release/python-semantic-release/commit/db2e0762f3189d0f1a6ba29aad32bdefb7e0187f)) - -- **readme**: Fix minor typo - ([`c22f69f`](https://github.com/python-semantic-release/python-semantic-release/commit/c22f69f62a215ff65e1ab6dcaa8e7e9662692e64)) - -### Features - -- **actions**: Create GitHub Action - ([`350245d`](https://github.com/python-semantic-release/python-semantic-release/commit/350245dbfb07ed6a1db017b1d9d1072b368b1497)) - - -## v4.10.0 (2020-03-03) - -### Features - -- Make commit message configurable - ([#184](https://github.com/python-semantic-release/python-semantic-release/pull/184), - [`eb0762c`](https://github.com/python-semantic-release/python-semantic-release/commit/eb0762ca9fea5cecd5c7b182504912a629be473b)) - - -## v4.9.0 (2020-03-02) - -### Bug Fixes - -- **pypi**: Change bdist_wheels to bdist_wheel - ([`c4db509`](https://github.com/python-semantic-release/python-semantic-release/commit/c4db50926c03f3d551c8331932c567c7bdaf4f3d)) - -Change the incorrect command bdist_wheels to bdist_wheel. - -### Features - -- **pypi**: Add build_commands config - ([`22146ea`](https://github.com/python-semantic-release/python-semantic-release/commit/22146ea4b94466a90d60b94db4cc65f46da19197)) - -Add a config option to set the commands passed to setup.py when building distributions. This allows - for things like adding custom commands to the build process. - - -## v4.8.0 (2020-02-28) - -### Features - -- **git**: Add a new config for commit author - ([`aa2c22c`](https://github.com/python-semantic-release/python-semantic-release/commit/aa2c22c469448fe57f02bea67a02f998ce519ac3)) - - -## v4.7.1 (2020-02-28) - -### Bug Fixes - -- Repair parsing of remotes in the gitlab ci format - ([`0fddbe2`](https://github.com/python-semantic-release/python-semantic-release/commit/0fddbe2fb70d24c09ceddb789a159162a45942dc)) - -Format is: "https://gitlab-ci-token:MySuperToken@gitlab.example.com/group/project.git" - -Problem was due to the regex modification for #179 - -Fixes #181 - - -## v4.7.0 (2020-02-28) - -### Bug Fixes - -- Support repository owner names containing dots - ([`a6c4da4`](https://github.com/python-semantic-release/python-semantic-release/commit/a6c4da4c0e6bd8a37f64544f7813fa027f5054ed)) - -Fixes #179 - -- **github**: Use application/octet-stream for .whl files - ([`90a7e47`](https://github.com/python-semantic-release/python-semantic-release/commit/90a7e476a04d26babc88002e9035cad2ed485b07)) - -application/octet-stream is more generic, but it is better than using a non-official MIME type. - -### Features - -- Upload distribution files to GitHub Releases - ([#177](https://github.com/python-semantic-release/python-semantic-release/pull/177), - [`e427658`](https://github.com/python-semantic-release/python-semantic-release/commit/e427658e33abf518191498c3142a0f18d3150e07)) - -* refactor(github): create upload_asset function - -Create a function to call the asset upload API. This will soon be used to upload assets specified by - the user. - -* refactor(github): infer Content-Type from file extension - -Infer the Content-Type header based on the file extension instead of setting it manually. - -* refactor(pypi): move building of dists to cli.py - -Refactor to have the building/removal of distributions in cli.py instead of within the - upload_to_pypi function. This makes way for uploading to other locations, such as GitHub Releases, - too. - -* feat(github): upload dists to release - -Upload Python wheels to the GitHub release. Configured with the option upload_to_release, on by - default if using GitHub. - -* docs: document upload_to_release config option - -* test(github): add tests for Github.upload_dists - -* fix(github): fix upload of .whl files - -Fix uploading of .whl files due to a missing MIME type (defined custom type as - application/x-wheel+zip). Additionally, continue with other uploads even if one fails. - -* refactor(cli): additional output during publish - -Add some additional output during the publish command. - -* refactor(github): move api calls to separate methods - -Move each type of GitHub API request into its own method to improve readability. - -Re-implementation of #172 - -* fix: post changelog after PyPI upload - -Post the changelog in-between uploading to PyPI and uploading to GitHub Releases. This is so that if - the PyPI upload fails, GitHub users will not be notified. GitHub uploads still need to be - processed after creating the changelog as the release notes must be published to upload assets to - them. - - -## v4.6.0 (2020-02-19) - -### Bug Fixes - -- Only overwrite with patch if bump is None - ([`1daa4e2`](https://github.com/python-semantic-release/python-semantic-release/commit/1daa4e23ec2dd40c6b490849276524264787e24e)) - -Fixes #159 - -- Add more debug statements in logs - ([`bc931ec`](https://github.com/python-semantic-release/python-semantic-release/commit/bc931ec46795fde4c1ccee004eec83bf73d5de7a)) - -### Features - -- **history**: Capitalize changelog messages - ([`1a8e306`](https://github.com/python-semantic-release/python-semantic-release/commit/1a8e3060b8f6d6362c27903dcfc69d17db5f1d36)) - -Capitalize the first letter of messages in the changelog regardless of whether they are capitalized - in the commit itself. - - -## v4.5.1 (2020-02-16) - -### Bug Fixes - -- **github**: Send token in request header - ([`be9972a`](https://github.com/python-semantic-release/python-semantic-release/commit/be9972a7b1fb183f738fb31bd370adb30281e4d5)) - -Use an Authorization header instead of deprecated query parameter authorization. - -Fixes relekang/python-semantic-release#167 - -### Documentation - -- Fix broken list in readme - ([`7aa572b`](https://github.com/python-semantic-release/python-semantic-release/commit/7aa572b2a323ddbc69686309226395f40c52b469)) - -Fix the syntax of a broken bullet-point list in README.rst. - -- Add note about automatic releases in readme - ([`e606e75`](https://github.com/python-semantic-release/python-semantic-release/commit/e606e7583a30167cf7679c6bcada2f9e768b3abe)) - -- Update readme and getting started docs - ([`07b3208`](https://github.com/python-semantic-release/python-semantic-release/commit/07b3208ff64301e544c4fdcb48314e49078fc479)) - - -## v4.5.0 (2020-02-08) - -### Bug Fixes - -- Remove erroneous submodule - ([`762bfda`](https://github.com/python-semantic-release/python-semantic-release/commit/762bfda728c266b8cd14671d8da9298fc99c63fb)) - -- **cli**: --noop flag works when before command - ([`4fcc781`](https://github.com/python-semantic-release/python-semantic-release/commit/4fcc781d1a3f9235db552f0f4431c9f5e638d298)) - -The entry point of the app is changed from main() to entry(). Entry takes any arguments before - commands and moves them to after commands, then calls main() - -Closes #73 - -### Features - -- **history**: Enable colon defined version - ([`7837f50`](https://github.com/python-semantic-release/python-semantic-release/commit/7837f5036269328ef29996b9ea63cccd5a6bc2d5)) - -The get_current_version_by_config_file and the replace_version_string methods now check for both - variables defined as "variable= version" and "variable: version" This allows for using a yaml file - to store the version. - -Closes #165 - - -## v4.4.1 (2020-01-18) - -### Bug Fixes - -- Add quotes around twine arguments - ([`46a83a9`](https://github.com/python-semantic-release/python-semantic-release/commit/46a83a94b17c09d8f686c3ae7b199d7fd0e0e5e5)) - -Fixes #163 - - -## v4.4.0 (2020-01-17) - -### Bug Fixes - -- **github**: Add check for GITHUB_ACTOR for git push - ([#162](https://github.com/python-semantic-release/python-semantic-release/pull/162), - [`c41e9bb`](https://github.com/python-semantic-release/python-semantic-release/commit/c41e9bb986d01b92d58419cbdc88489d630a11f1)) - -### Features - -- **parser**: Make BREAKING-CHANGE synonymous with BREAKING CHANGE - ([`beedccf`](https://github.com/python-semantic-release/python-semantic-release/commit/beedccfddfb360aeebef595342ee980446012ec7)) - -According to point 16 in the conventional commit specification, this should be implemented. They - especially mention the footer, but I kept the body for backwards compatibility. This should - probably be removed one day. The regex is in the helpers to make it easier to re-use, but I didn't - updated parser_tag since it looks like a legacy parser. - -- **parser**: Add support for exclamation point for breaking changes - ([`a4f8a10`](https://github.com/python-semantic-release/python-semantic-release/commit/a4f8a10afcc358a8fbef83be2041129480350be2)) - -According to the documentation for conventional commits, breaking changes can be described using - exclamation points, just before the colon between type/scope and subject. In that case, the - breaking change footer is optional, and the subject is used as description of the breaking change. - If the footer exists, it is used for the description. - -Fixes #156 - - -## v4.3.4 (2019-12-17) - -### Bug Fixes - -- Fallback to whole log if correct tag is not available - ([#157](https://github.com/python-semantic-release/python-semantic-release/pull/157), - [`252bffd`](https://github.com/python-semantic-release/python-semantic-release/commit/252bffd3be7b6dfcfdb384d24cb1cd83d990fc9a)) - -The method getting all commits to consider for the release will now test whether the version in - input is a valid reference. If it is not, it will consider the whole log for the repository. - -evaluate_version_bump will still consider a message starting with the version number as a breaking - condition to stop analyzing. - -Fixes #51 - - -## v4.3.3 (2019-11-06) - -### Bug Fixes - -- Set version of click to >=2.0,<8.0. - ([#155](https://github.com/python-semantic-release/python-semantic-release/pull/155), - [`f07c7f6`](https://github.com/python-semantic-release/python-semantic-release/commit/f07c7f653be1c018e443f071d9a196d9293e9521)) - -* fix: Upgrade to click 7.0. - -Fixes #117 - -* fix: Instead of requiring click 7.0, looks like all tests will pass with at least 2.0. - -* Upstream is at ~=7.0, so let's set the range to less than 8.0. - -* The string template has no variables, so remove the call to .format() - - -## v4.3.2 (2019-10-05) - -### Bug Fixes - -- Update regex to get repository owner and name for project with dots - ([`2778e31`](https://github.com/python-semantic-release/python-semantic-release/commit/2778e316a0c0aa931b1012cb3862d04659c05e73)) - -Remove the dot from the second capture group to allow project names containing dots to be matched. - Instead of a greedy '+' operator, use '*?' to allow the second group to give back the '.git' (to - avoid including it in the project name) - -Fixes #151 - - -## v4.3.1 (2019-09-29) - -### Bug Fixes - -- Support repo urls without git terminator - ([`700e9f1`](https://github.com/python-semantic-release/python-semantic-release/commit/700e9f18dafde1833f482272a72bb80b54d56bb3)) - - -## v4.3.0 (2019-09-06) - -### Bug Fixes - -- Update list of commit types to include build, ci and perf - ([`41ea12f`](https://github.com/python-semantic-release/python-semantic-release/commit/41ea12fa91f97c0046178806bce3be57c3bc2308)) - -Also added perf to the types that trigger a patch update - -Fixes #145 - -- Manage subgroups in git remote url - ([`4b11875`](https://github.com/python-semantic-release/python-semantic-release/commit/4b118754729094e330389712cf863e1c6cefee69)) - -This is a necessary fix for gitlab integration. For an illustration of the need and use for this - fix, test was edited. - -Fixes #139 Fixes #140 - -### Features - -- Allow users to get version from tag and write/commit bump to file - ([`1f9fe1c`](https://github.com/python-semantic-release/python-semantic-release/commit/1f9fe1cc7666d47cc0c348c4705b63c39bf10ecc)) - -Before this commit, version was bumped in the file, but only committed if version was obtained from - `version_variable` (version_source == `commit`). Also added a relevant test and a description for - this new option. - -Fixes #104 - -- Make the vcs functionalities work with gitlab - ([`82d555d`](https://github.com/python-semantic-release/python-semantic-release/commit/82d555d45b9d9e295ef3f9546a6ca2a38ca4522e)) - -Adds python-gitlab as requirement. Refactored github specific methods while keeping default - behavior. Also removed an unused return value for post_release_changelog. Also refactored the - secret filtering method. Updated the related tests. - -Fixes #121 - -- Allow the override of configuration options from cli - ([`f0ac82f`](https://github.com/python-semantic-release/python-semantic-release/commit/f0ac82fe59eb59a768a73a1bf2ea934b9d448c58)) - -config can now be overriden with the "-D" flag. Also adds the related tests and documentation. - -Also introduces a fixture in tests/__init__.py that reloads module using config. It is necessary - since all tests run in the same environment. A better way would be to box the execution of tests - (using the --forked option of pytest for example) but it does not work in non-unix systems. Also - some tests should not break if config is changed, but it is outside of the scope of this issue. - -Fixes #119 - -- Add the possibility to load configuration from pyproject.toml - ([`35f8bfe`](https://github.com/python-semantic-release/python-semantic-release/commit/35f8bfef443c8b69560c918f4b13bc766fb3daa2)) - -Adds the toml library to base requirements. Also adds the related tests and documentation. Also adds - the description of the version_source configuration option - -Relates to #119 - - -## v4.2.0 (2019-08-05) - -### Bug Fixes - -- Remove deletion of build folder - ([`b45703d`](https://github.com/python-semantic-release/python-semantic-release/commit/b45703dad38c29b28575060b21e5fb0f8482c6b1)) - -Fixes #115 - -- Updated the tag tests - ([`3303eef`](https://github.com/python-semantic-release/python-semantic-release/commit/3303eefa49a0474bbd85df10ae186ccbf9090ec1)) - -- Kept setting new version for tag source - ([`0e24a56`](https://github.com/python-semantic-release/python-semantic-release/commit/0e24a5633f8f94b48da97b011634d4f9d84f7b4b)) - -- Add commit hash when generating breaking changes - ([`0c74faf`](https://github.com/python-semantic-release/python-semantic-release/commit/0c74fafdfa81cf2e13db8f4dcf0a6f7347552504)) - -Fixes #120 - -- Upgrade click to 7.0 - ([`2c5dd80`](https://github.com/python-semantic-release/python-semantic-release/commit/2c5dd809b84c2157a5e6cdcc773c43ec864f0328)) - -### Features - -- Add support for showing unreleased changelog - ([`41ef794`](https://github.com/python-semantic-release/python-semantic-release/commit/41ef7947ad8a07392c96c7540980476e989c1d83)) - -Fixes #134 - -- Add support for configuring branch - ([`14abb05`](https://github.com/python-semantic-release/python-semantic-release/commit/14abb05e7f878e88002f896812d66b4ea5c219d4)) - -Fixes #43 - -- Add configuration to customize handling of dists - ([`2af6f41`](https://github.com/python-semantic-release/python-semantic-release/commit/2af6f41b21205bdd192514a434fca2feba17725a)) - -Relates to #115 - - -## v4.1.2 (2019-08-04) - -### Bug Fixes - -- Make sure the history only breaks loop for version commit - ([`5dc6cfc`](https://github.com/python-semantic-release/python-semantic-release/commit/5dc6cfc634254f09997bb3cb0f17abd296e2c01f)) - -Fixes #135 - -- Correct isort build fail - ([`0037210`](https://github.com/python-semantic-release/python-semantic-release/commit/00372100b527ff9308d9e43fe5c65cdf179dc4dc)) - -build fail: https://circleci.com/gh/relekang/python-semantic-release/379 - -- **vcs**: Allow cli to be run from subdirectory - ([`fb7bb14`](https://github.com/python-semantic-release/python-semantic-release/commit/fb7bb14300e483626464795b8ff4f033a194cf6f)) - -### Documentation - -- **circleci**: Point badge to master branch - ([`9c7302e`](https://github.com/python-semantic-release/python-semantic-release/commit/9c7302e184a1bd88f39b3039691b55cd77f0bb07)) - - -## v4.1.1 (2019-02-15) - -### Documentation - -- Debug usage and related - ([`f08e594`](https://github.com/python-semantic-release/python-semantic-release/commit/f08e5943a9876f2d17a7c02f468720995c7d9ffd)) - -Debug functionality lack documentation. Thoubleshooting is helped by documenting other environment - variables as well. - -- Correct usage of changelog - ([`f4f59b0`](https://github.com/python-semantic-release/python-semantic-release/commit/f4f59b08c73700c6ee04930221bfcb1355cbc48d)) - -- Describing the commands - ([`b6fa04d`](https://github.com/python-semantic-release/python-semantic-release/commit/b6fa04db3044525a1ee1b5952fb175a706842238)) - -The commands is lacking from the documentation. - -- Update url for commit guidelinesThe guidelines can now be found in theDEVELOPERS.md in angular. - ([`90c1b21`](https://github.com/python-semantic-release/python-semantic-release/commit/90c1b217f86263301b91d19d641c7b348e37d960)) - - -## v4.1.0 (2019-01-31) - -### Bug Fixes - -- Maintain version variable formatting on bump - ([#103](https://github.com/python-semantic-release/python-semantic-release/pull/103), - [`bf63156`](https://github.com/python-semantic-release/python-semantic-release/commit/bf63156f60340614fae94c255fb2f097cf317b2b)) - -Small change to the way the version is written to the config file it is read from. This allows the - formatting to be the same as before semantic-release changed it. - -Prior behavior `my_version_var="1.2.3"` => `my_version_var = '1.2.4'` - -New behavior `my_version_var="1.2.3"` => `my_version_var="1.2.4"` - -I am using python-semantic-release with a Julia project and this change will allow for consistent - formatting in my Project.toml file where the version is maintained - -- Initialize git Repo from current folder - ([`c7415e6`](https://github.com/python-semantic-release/python-semantic-release/commit/c7415e634c0affbe6396e0aa2bafe7c1b3368914)) - -This allows to run the program also from inner repository folders - -- Use same changelog code for command as post - ([`248f622`](https://github.com/python-semantic-release/python-semantic-release/commit/248f62283c59182868c43ff105a66d85c923a894)) - -See #27 for background. - -### Documentation - -- **readme**: Add testing instructions - ([`bb352f5`](https://github.com/python-semantic-release/python-semantic-release/commit/bb352f5b6616cc42c9f2f2487c51dedda1c68295)) - -- Add installation instructions for development - ([#106](https://github.com/python-semantic-release/python-semantic-release/pull/106), - [`9168d0e`](https://github.com/python-semantic-release/python-semantic-release/commit/9168d0ea56734319a5d77e890f23ff6ba51cc97d)) - -### Features - -- **ci_checks**: Add support for bitbucket - ([`9fc120d`](https://github.com/python-semantic-release/python-semantic-release/commit/9fc120d1a7e4acbbca609628e72651685108b364)) - - -## v4.0.1 (2019-01-12) - -### Bug Fixes - -- Use correct syntax to exclude tests in package - ([`3e41e91`](https://github.com/python-semantic-release/python-semantic-release/commit/3e41e91c318663085cd28c8165ece21d7e383475)) - -This implements #92 without deleting __init__.py files. - -- Filter out pypi secrets from exceptions - ([`5918371`](https://github.com/python-semantic-release/python-semantic-release/commit/5918371c1e82b06606087c9945d8eaf2604a0578)) - -Fixes #41 - -- Clean out dist and build before building - ([`b628e46`](https://github.com/python-semantic-release/python-semantic-release/commit/b628e466f86bc27cbe45ec27a02d4774a0efd3bb)) - -This should fix the problem with uploading old versions. - -Fixes #86 - -- Add better error message when pypi credentials are empty - ([`c4e5dcb`](https://github.com/python-semantic-release/python-semantic-release/commit/c4e5dcbeda0ce8f87d25faefb4d9ae3581029a8f)) - -Fixes #96 - -- Unfreeze dependencies - ([`847833b`](https://github.com/python-semantic-release/python-semantic-release/commit/847833bf48352a4935f906d0c3f75e1db596ca1c)) - -This uses ~= for most dependencies instead of pinning them. - -Fixes #100 - -- **parser_angular**: Fix non-match when special chars in scope - ([`8a33123`](https://github.com/python-semantic-release/python-semantic-release/commit/8a331232621b26767e4268079f9295bf695047ab)) - -### Documentation - -- Remove reference to gitter - ([`896e37b`](https://github.com/python-semantic-release/python-semantic-release/commit/896e37b95cc43218e8f593325dd4ea63f8b895d9)) - -Fixes #90 - - -## v4.0.0 (2018-11-22) - -### Bug Fixes - -- Add credentials check - ([`0694604`](https://github.com/python-semantic-release/python-semantic-release/commit/0694604f3b3d2159a4037620605ded09236cdef5)) - -- Add check of credentials - ([`7d945d4`](https://github.com/python-semantic-release/python-semantic-release/commit/7d945d44b36b3e8c0b7771570cb2305e9e09d0b2)) - -- Add dists to twine call - ([`1cec2df`](https://github.com/python-semantic-release/python-semantic-release/commit/1cec2df8bcb7f877c813d6470d454244630b050a)) - -- Re-add skip-existing - ([`366e9c1`](https://github.com/python-semantic-release/python-semantic-release/commit/366e9c1d0b9ffcde755407a1de18e8295f6ad3a1)) - -- Use twine through cli call - ([`ab84beb`](https://github.com/python-semantic-release/python-semantic-release/commit/ab84beb8f809e39ae35cd3ce5c15df698d8712fd)) - -- Use new interface for twine - ([`c04872d`](https://github.com/python-semantic-release/python-semantic-release/commit/c04872d00a26e9bf0f48eeacb360b37ce0fba01e)) - -- Remove repository argument in twine - ([`e24543b`](https://github.com/python-semantic-release/python-semantic-release/commit/e24543b96adb208897f4ce3eaab96b2f4df13106)) - -- Update twine - ([`c4ae7b8`](https://github.com/python-semantic-release/python-semantic-release/commit/c4ae7b8ecc682855a8568b247690eaebe62d2d26)) - -- Remove universal from setup config - ([`18b2402`](https://github.com/python-semantic-release/python-semantic-release/commit/18b24025e397aace03dd5bb9eed46cfdd13491bd)) - -- Remove support for python 2 - ([`85fe638`](https://github.com/python-semantic-release/python-semantic-release/commit/85fe6384c15db317bc7142f4c8bbf2da58cece58)) - -BREAKING CHANGE: This will only work with python 3 after this commit. - -- Change requests from fixed version to version range - ([#93](https://github.com/python-semantic-release/python-semantic-release/pull/93), - [`af3ad59`](https://github.com/python-semantic-release/python-semantic-release/commit/af3ad59f018876e11cc3acdda0b149f8dd5606bd)) - -* Change requests version to be more flexible to aid in using this with dev requirements for a - release. - -* revert changes to vcs helpers - -### Documentation - -- Add type hints and more complete docstrings - ([`a6d5e9b`](https://github.com/python-semantic-release/python-semantic-release/commit/a6d5e9b1ccbe75d59e7240528593978a19d8d040)) - -Includes a few style changes suggested by pylint and type safety checks suggested by mypy - -re #81 - -- Fix typo in documentation index - ([`da6844b`](https://github.com/python-semantic-release/python-semantic-release/commit/da6844bce0070a0020bf13950bd136fe28262602)) - -The word role -- 'an actor's part in a play, movie, etc.' does not fit in this context. "ready to - roll" is a phrase meaning "fully prepared to start functioning or moving" or simply "ready". I - believe this is what was meant to be written. - -### Features - -- Add support for commit_message config variable - ([`4de5400`](https://github.com/python-semantic-release/python-semantic-release/commit/4de540011ab10483ee1865f99c623526cf961bb9)) - -This variable can allow you to skip CI pipelines in CI tools like GitLab CI by adding [CI skip] in - the body. There are likely many uses for this beyond that particular example... - -BREAKING CHANGE: If you rely on the commit message to be the version number only, this will break - your code - -re #88 #32 - -- **CI checks**: Add support for GitLab CI checks - ([`8df5e2b`](https://github.com/python-semantic-release/python-semantic-release/commit/8df5e2bdd33a620e683f3adabe174e94ceaa88d9)) - -Check `GITLAB_CI` environment variable and then verify `CI_COMMIT_REF_NAME` matches the given - branch. - -Includes tests - -Closes #88 re #32 - - -## v3.11.2 (2018-06-10) - -### Bug Fixes - -- Upgrade twine - ([`9722313`](https://github.com/python-semantic-release/python-semantic-release/commit/9722313eb63c7e2c32c084ad31bed7ee1c48a928)) - - -## v3.11.1 (2018-06-06) - -### Bug Fixes - -- Change Gitpython version number - ([`23c9d4b`](https://github.com/python-semantic-release/python-semantic-release/commit/23c9d4b6a1716e65605ed985881452898d5cf644)) - -Change the Gitpython version number to fix a bug described in #80. - -### Documentation - -- Add retry option to cli docs - ([`021da50`](https://github.com/python-semantic-release/python-semantic-release/commit/021da5001934f3199c98d7cf29f62a3ad8c2e56a)) - - -## v3.11.0 (2018-04-12) - -### Bug Fixes - -- Make repo non if it is not a git repository - ([`1dc306b`](https://github.com/python-semantic-release/python-semantic-release/commit/1dc306b9b1db2ac360211bdc61fd815302d0014c)) - -Fixes #74 - -- Add pytest cache to gitignore - ([`b8efd5a`](https://github.com/python-semantic-release/python-semantic-release/commit/b8efd5a6249c79c8378bffea3e245657e7094ec9)) - -### Documentation - -- Remove old notes about trello board - ([`7f50c52`](https://github.com/python-semantic-release/python-semantic-release/commit/7f50c521a522bb0c4579332766248778350e205b)) - -- Update status badges - ([`cfa13b8`](https://github.com/python-semantic-release/python-semantic-release/commit/cfa13b8260e3f3b0bfcb395f828ad63c9c5e3ca5)) - -### Features - -- Add support to finding previous version from tags if not using commit messages - ([#68](https://github.com/python-semantic-release/python-semantic-release/pull/68), - [`6786487`](https://github.com/python-semantic-release/python-semantic-release/commit/6786487ebf4ab481139ef9f43cd74e345debb334)) - -* feat: Be a bit more forgiving to find previous tags - -Now grabs the previous version from tag names if it can't find it in the commit - -* quantifiedcode and flake8 fixes - -* Update cli.py - -* Switch to ImproperConfigurationError - -- Add --retry cli option - ([#78](https://github.com/python-semantic-release/python-semantic-release/pull/78), - [`3e312c0`](https://github.com/python-semantic-release/python-semantic-release/commit/3e312c0ce79a78d25016a3b294b772983cfb5e0f)) - -* Add --retry cli option * Post changelog correctly * Add comments * Add --retry to the docs - - -## v3.10.3 (2018-01-29) - -### Bug Fixes - -- Error when not in git repository - ([#75](https://github.com/python-semantic-release/python-semantic-release/pull/75), - [`251b190`](https://github.com/python-semantic-release/python-semantic-release/commit/251b190a2fd5df68892346926d447cbc1b32475a)) - -Fix an error when the program was run in a non-git repository. It would not allow the help options - to be run. - -issue #74 - - -## v3.10.2 (2017-08-03) - -### Bug Fixes - -- Update call to upload to work with twine 1.9.1 - ([#72](https://github.com/python-semantic-release/python-semantic-release/pull/72), - [`8f47643`](https://github.com/python-semantic-release/python-semantic-release/commit/8f47643c54996e06c358537115e7e17b77cb02ca)) - - -## v3.10.1 (2017-07-22) - -### Bug Fixes - -- Update Twine ([#69](https://github.com/python-semantic-release/python-semantic-release/pull/69), - [`9f268c3`](https://github.com/python-semantic-release/python-semantic-release/commit/9f268c373a932621771abbe9607b739b1e331409)) - -The publishing API is under development and older versions of Twine have problems to deal with newer - versions of the API. Namely the logic of register/upload has changed (it was simplified). - - -## v3.10.0 (2017-05-05) - -### Bug Fixes - -- Make changelog problems not fail whole publish - ([`b5a68cf`](https://github.com/python-semantic-release/python-semantic-release/commit/b5a68cf6177dc0ed80eda722605db064f3fe2062)) - -Can be fixed with changelog command later. - -### Documentation - -- Fix typo in cli.py docstring - ([#64](https://github.com/python-semantic-release/python-semantic-release/pull/64), - [`0d13985`](https://github.com/python-semantic-release/python-semantic-release/commit/0d139859cd71f2d483f4360f196d6ef7c8726c18)) - -### Features - -- Add git hash to the changelog - ([#65](https://github.com/python-semantic-release/python-semantic-release/pull/65), - [`628170e`](https://github.com/python-semantic-release/python-semantic-release/commit/628170ebc440fc6abf094dd3e393f40576dedf9b)) - -* feat(*): add git hash to the changelog - -Add git hash to the changelog to ease finding the specific commit. The hash now is also easily - viewable in Github's tag. see #63 for more information. - -* chore(test_history): fix test errors - -Fix the test errors that would happen after the modification of get_commit_log. - - -## v3.9.0 (2016-07-03) - -### Bug Fixes - -- Can't get the proper last tag from commit history - ([`5a0e681`](https://github.com/python-semantic-release/python-semantic-release/commit/5a0e681e256ec511cd6c6a8edfee9d905891da10)) - -repo.tags returns a list sorted by the name rather than date, fix it by sorting them before - iteration - -### Features - -- Add option for choosing between versioning by commit or tag - ([`c0cd1f5`](https://github.com/python-semantic-release/python-semantic-release/commit/c0cd1f5b2e0776d7b636c3dd9e5ae863125219e6)) - -default versioning behaviour is commiting - -- Don't use file to track version, only tag to commit for versioning - ([`cd25862`](https://github.com/python-semantic-release/python-semantic-release/commit/cd258623ee518c009ae921cd6bb3119dafae43dc)) - -- Get repo version from historical tags instead of config file - ([`a45a9bf`](https://github.com/python-semantic-release/python-semantic-release/commit/a45a9bfb64538efeb7f6f42bb6e7ede86a4ddfa8)) - -repo version will get from historical tags. init 0.0.0 if fail of find any version tag - - -## v3.8.1 (2016-04-17) - -### Bug Fixes - -- Add search_parent_directories option to gitpython - ([#62](https://github.com/python-semantic-release/python-semantic-release/pull/62), - [`8bf9ce1`](https://github.com/python-semantic-release/python-semantic-release/commit/8bf9ce11137399906f18bc8b25698b6e03a65034)) - - -## v3.8.0 (2016-03-21) - -### Bug Fixes - -- Refactoring cli.py to improve --help and error messages - ([`c79fc34`](https://github.com/python-semantic-release/python-semantic-release/commit/c79fc3469fb99bf4c7f52434fa9c0891bca757f9)) - -- Add git fetch to frigg after success - ([`74a6cae`](https://github.com/python-semantic-release/python-semantic-release/commit/74a6cae2b46c5150e63136fde0599d98b9486e36)) - -- Make tag parser work correctly with breaking changes - ([`9496f6a`](https://github.com/python-semantic-release/python-semantic-release/commit/9496f6a502c79ec3acb4e222e190e76264db02cf)) - -The tag parser did not work correctly, this went undiscovered for a while because the tests was not - ran by pytest. - -### Documentation - -- Add info about trello board in readme - ([`5229557`](https://github.com/python-semantic-release/python-semantic-release/commit/5229557099d76b3404ea3677292332442a57ae2e)) - -- Update info about releases in contributing.md - ([`466f046`](https://github.com/python-semantic-release/python-semantic-release/commit/466f0460774cad86e7e828ffb50c7d1332b64e7b)) - -- Add info about correct commit guidelines - ([`af35413`](https://github.com/python-semantic-release/python-semantic-release/commit/af35413fae80889e2c5fc6b7d28f77f34b3b4c02)) - -- Fix badges in readme - ([`7f4e549`](https://github.com/python-semantic-release/python-semantic-release/commit/7f4e5493edb6b3fb3510d0bb78fcc8d23434837f)) - -### Features - -- Add ci checks for circle ci - ([`151d849`](https://github.com/python-semantic-release/python-semantic-release/commit/151d84964266c8dca206cef8912391cb73c8f206)) - - -## v3.7.2 (2016-03-19) - -### Bug Fixes - -- Move code around a bit to make flake8 happy - ([`41463b4`](https://github.com/python-semantic-release/python-semantic-release/commit/41463b49b5d44fd94c11ab6e0a81e199510fabec)) - - -## v3.7.1 (2016-03-15) - -### Documentation - -- **configuration**: Fix typo in setup.cfg section - ([`725d87d`](https://github.com/python-semantic-release/python-semantic-release/commit/725d87dc45857ef2f9fb331222845ac83a3af135)) - - -## v3.7.0 (2016-01-10) - -### Features - -- Add ci_checks for Frigg CI - ([`577c374`](https://github.com/python-semantic-release/python-semantic-release/commit/577c374396fe303b6fe7d64630d2959998d3595c)) - - -## v3.6.1 (2016-01-10) - -### Bug Fixes - -- Add requests as dependency - ([`4525a70`](https://github.com/python-semantic-release/python-semantic-release/commit/4525a70d5520b44720d385b0307e46fae77a7463)) - - -## v3.6.0 (2015-12-28) - -### Documentation - -- Add step by step guide for configuring travis ci - ([`6f23414`](https://github.com/python-semantic-release/python-semantic-release/commit/6f2341442f61f0284b1119a2c49e96f0be678929)) - -- Remove duplicate readme - ([`42a9421`](https://github.com/python-semantic-release/python-semantic-release/commit/42a942131947cd1864c1ba29b184caf072408742)) - -It was created by pandoc earlier when the original readme was written in markdown. - -- Add note about node semantic release - ([`0d2866c`](https://github.com/python-semantic-release/python-semantic-release/commit/0d2866c528098ecaf1dd81492f28d3022a2a54e0)) - -- Move automatic-releases to subfolder - ([`ed68e5b`](https://github.com/python-semantic-release/python-semantic-release/commit/ed68e5b8d3489463e244b078ecce8eab2cba2bb1)) - -- Add documentation for configuring on CI - ([`7806940`](https://github.com/python-semantic-release/python-semantic-release/commit/7806940ae36cb0d6ac0f966e5d6d911bd09a7d11)) - -### Features - -- Add checks for semaphore - ([`2d7ef15`](https://github.com/python-semantic-release/python-semantic-release/commit/2d7ef157b1250459060e99601ec53a00942b6955)) - -Fixes #44 - - -## v3.5.0 (2015-12-22) - -### Bug Fixes - -- Remove " from git push command - ([`031318b`](https://github.com/python-semantic-release/python-semantic-release/commit/031318b3268bc37e6847ec049b37425650cebec8)) - -### Documentation - -- Convert readme to rst - ([`e8a8d26`](https://github.com/python-semantic-release/python-semantic-release/commit/e8a8d265aa2147824f18065b39a8e7821acb90ec)) - -### Features - -- Checkout master before publishing - ([`dc4077a`](https://github.com/python-semantic-release/python-semantic-release/commit/dc4077a2d07e0522b625336dcf83ee4e0e1640aa)) - -Related to #39 - -- Add author in commit - ([`020efaa`](https://github.com/python-semantic-release/python-semantic-release/commit/020efaaadf588e3fccd9d2f08a273c37e4158421)) - -Fixes #40 - - -## v3.4.0 (2015-12-22) - -### Features - -- Add travis environment checks - ([`f386db7`](https://github.com/python-semantic-release/python-semantic-release/commit/f386db75b77acd521d2f5bde2e1dde99924dc096)) - -These checks will ensure that semantic release only runs against master and not in a pull-request. - - -## v3.3.3 (2015-12-22) - -### Bug Fixes - -- Do git push and git push --tags instead of --follow-tags - ([`8bc70a1`](https://github.com/python-semantic-release/python-semantic-release/commit/8bc70a183fd72f595c72702382bc0b7c3abe99c8)) - - -## v3.3.2 (2015-12-21) - -### Bug Fixes - -- Change build badge - ([`0dc068f`](https://github.com/python-semantic-release/python-semantic-release/commit/0dc068fff2f8c6914f4abe6c4e5fb2752669159e)) - -### Documentation - -- Update docstrings for generate_changelog - ([`987c6a9`](https://github.com/python-semantic-release/python-semantic-release/commit/987c6a96d15997e38c93a9d841c618c76a385ce7)) - - -## v3.3.1 (2015-12-21) - -### Bug Fixes - -- Only list commits from the last version tag - ([`191369e`](https://github.com/python-semantic-release/python-semantic-release/commit/191369ebd68526e5b1afcf563f7d13e18c8ca8bf)) - -Fixes #28 - -- Add pandoc to travis settings - ([`17d40a7`](https://github.com/python-semantic-release/python-semantic-release/commit/17d40a73062ffa774542d0abc0f59fc16b68be37)) - - -## v3.3.0 (2015-12-20) - -### Bug Fixes - -- Downgrade twine to version 1.5.0 - ([`66df378`](https://github.com/python-semantic-release/python-semantic-release/commit/66df378330448a313aff7a7c27067adda018904f)) - -- Add missing parameters to twine.upload - ([`4bae22b`](https://github.com/python-semantic-release/python-semantic-release/commit/4bae22bae9b9d9abf669b028ea3af4b3813a1df0)) - -- Push to master by default - ([`a0bb023`](https://github.com/python-semantic-release/python-semantic-release/commit/a0bb023438a1503f9fdb690d976d71632f19a21f)) - -- Better filtering of github token in push error - ([`9b31da4`](https://github.com/python-semantic-release/python-semantic-release/commit/9b31da4dc27edfb01f685e6036ddbd4c715c9f60)) - -- Make sure the github token is not in the output - ([`55356b7`](https://github.com/python-semantic-release/python-semantic-release/commit/55356b718f74d94dd92e6c2db8a15423a6824eb5)) - -### Features - -- Add support for environment variables for pypi credentials - ([`3b383b9`](https://github.com/python-semantic-release/python-semantic-release/commit/3b383b92376a7530e89b11de481c4dfdfa273f7b)) - - -## v3.2.1 (2015-12-20) - -### Bug Fixes - -- Add requirements to manifest - ([`ed25ecb`](https://github.com/python-semantic-release/python-semantic-release/commit/ed25ecbaeec0e20ad3040452a5547bb7d6faf6ad)) - -- **pypi**: Add sdist as default in addition to bdist_wheel - ([`a1a35f4`](https://github.com/python-semantic-release/python-semantic-release/commit/a1a35f43175187091f028474db2ebef5bfc77bc0)) - -There are a lot of outdated pip installations around which leads to confusions if a package have had - an sdist release at some point and then suddenly is only available as wheel packages, because old - pip clients will then download the latest sdist package available. - - -## v3.2.0 (2015-12-20) - -### Bug Fixes - -- **deps**: Use one file for requirements - ([`4868543`](https://github.com/python-semantic-release/python-semantic-release/commit/486854393b24803bb2356324e045ccab17510d46)) - -### Features - -- **git**: Add push to GH_TOKEN@github-url - ([`546b5bf`](https://github.com/python-semantic-release/python-semantic-release/commit/546b5bf15466c6f5dfe93c1c03ca34604b0326f2)) - -- **angular-parser**: Remove scope requirement - ([`90c9d8d`](https://github.com/python-semantic-release/python-semantic-release/commit/90c9d8d4cd6d43be094cda86579e00b507571f98)) - - -## v3.1.0 (2015-08-31) - -### Features - -- **pypi**: Add option to disable pypi upload - ([`f5cd079`](https://github.com/python-semantic-release/python-semantic-release/commit/f5cd079edb219de5ad03a71448d578f5f477da9c)) - - -## v3.0.0 (2015-08-25) - -### Bug Fixes - -- **errors**: Add exposing of errors in package - ([`3662d76`](https://github.com/python-semantic-release/python-semantic-release/commit/3662d7663291859dd58a91b4b4ccde4f0edc99b2)) - -- **version**: Parse file instead for version - ([`005dba0`](https://github.com/python-semantic-release/python-semantic-release/commit/005dba0094eeb4098315ef383a746e139ffb504d)) - -This makes it possible to use the version command without a setup.py file. - -### Features - -- **parser**: Add tag parser - ([`a7f392f`](https://github.com/python-semantic-release/python-semantic-release/commit/a7f392fd4524cc9207899075631032e438e2593c)) - -This parser is based on the same commit style as 1.x.x of python-semantic-release. However, it - requires "BREAKING CHANGE: for a breaking change - - -## v2.1.4 (2015-08-24) - -### Bug Fixes - -- **github**: Fix property calls - ([`7ecdeb2`](https://github.com/python-semantic-release/python-semantic-release/commit/7ecdeb22de96b6b55c5404ebf54a751911c4d8cd)) - -Properties can only be used from instances. - - -## v2.1.3 (2015-08-22) - -### Bug Fixes - -- **hvcs**: Make Github.token an property - ([`37d5e31`](https://github.com/python-semantic-release/python-semantic-release/commit/37d5e3110397596a036def5f1dccf0860964332c)) - -### Documentation - -- **readme**: Update readme with information about the changelog command - ([`56a745e`](https://github.com/python-semantic-release/python-semantic-release/commit/56a745ef6fa4edf6f6ba09c78fcc141102cf2871)) - -- **parsers**: Add documentation about commit parsers - ([`9b55422`](https://github.com/python-semantic-release/python-semantic-release/commit/9b554222768036024a133153a559cdfc017c1d91)) - -- **api**: Update apidocs - ([`6185380`](https://github.com/python-semantic-release/python-semantic-release/commit/6185380babedbbeab2a2a342f17b4ff3d4df6768)) - - -## v2.1.2 (2015-08-20) - -### Bug Fixes - -- **cli**: Fix call to generate_changelog in publish - ([`5f8bce4`](https://github.com/python-semantic-release/python-semantic-release/commit/5f8bce4cbb5e1729e674efd6c651e2531aea2a16)) - - -## v2.1.1 (2015-08-20) - -### Bug Fixes - -- **history**: Fix issue in get_previous_version - ([`f961786`](https://github.com/python-semantic-release/python-semantic-release/commit/f961786aa3eaa3a620f47cc09243340fd329b9c2)) - - -## v2.1.0 (2015-08-20) - -### Bug Fixes - -- **cli**: Fix check of token in changelog command - ([`cc6e6ab`](https://github.com/python-semantic-release/python-semantic-release/commit/cc6e6abe1e91d3aa24e8d73e704829669bea5fd7)) - -- **github**: Fix the github releases integration - ([`f0c3c1d`](https://github.com/python-semantic-release/python-semantic-release/commit/f0c3c1db97752b71f2153ae9f623501b0b8e2c98)) - -- **history**: Fix changelog generation - ([`f010272`](https://github.com/python-semantic-release/python-semantic-release/commit/f01027203a8ca69d21b4aff689e60e8c8d6f9af5)) - -This enables regeneration of a given versions changelog. - -### Features - -- **cli**: Add the possibility to repost the changelog - ([`4d028e2`](https://github.com/python-semantic-release/python-semantic-release/commit/4d028e21b9da01be8caac8f23f2c11e0c087e485)) - - -## v2.0.0 (2015-08-19) - -### Bug Fixes - -- **cli**: Change output indentation on changelog - ([`2ca41d3`](https://github.com/python-semantic-release/python-semantic-release/commit/2ca41d3bd1b8b9d9fe7e162772560e3defe2a41e)) - -- **history**: Support unexpected types in changelog generator - ([`13deacf`](https://github.com/python-semantic-release/python-semantic-release/commit/13deacf5d33ed500e4e94ea702a2a16be2aa7c48)) - -- **history**: Fix regex in angular parser - ([`974ccda`](https://github.com/python-semantic-release/python-semantic-release/commit/974ccdad392d768af5e187dabc184be9ac3e133d)) - -This fixes a problem where multiline commit messages where not correctly parsed. - -- **history**: Fix level id's in angular parser - ([`2918d75`](https://github.com/python-semantic-release/python-semantic-release/commit/2918d759bf462082280ede971a5222fe01634ed8)) - -### Features - -- **publish**: Add publishing of changelog to github - ([`74324ba`](https://github.com/python-semantic-release/python-semantic-release/commit/74324ba2749cdbbe80a92b5abbecfeab04617699)) - -- **github**: Add github release changelog helper - ([`da18795`](https://github.com/python-semantic-release/python-semantic-release/commit/da187951af31f377ac57fe17462551cfd776dc6e)) - -- **history**: Add markdown changelog formatter - ([`d77b58d`](https://github.com/python-semantic-release/python-semantic-release/commit/d77b58db4b66aec94200dccab94f483def4dacc9)) - -- **cli**: Add command for printing the changelog - ([`336b8bc`](https://github.com/python-semantic-release/python-semantic-release/commit/336b8bcc01fc1029ff37a79c92935d4b8ea69203)) - -Usage: `semantic_release changelog` - -- **history**: Add generate_changelog function - ([`347f21a`](https://github.com/python-semantic-release/python-semantic-release/commit/347f21a1f8d655a71a0e7d58b64d4c6bc6d0bf31)) - -It generates a dict with changelog information to each of the given section types. - -- **history**: Set angular parser as the default - ([`c2cf537`](https://github.com/python-semantic-release/python-semantic-release/commit/c2cf537a42beaa60cd372c7c9f8fb45db8085917)) - -BREAKING CHANGE: This changes the default parser. Thus, the default behaviour of the commit log - evaluator will change. From now on it will use the angular commit message spec to determine the - new version. - -- **settings**: Add loading of current parser - ([`7bd0916`](https://github.com/python-semantic-release/python-semantic-release/commit/7bd0916f87a1f9fe839c853eab05cae1af420cd2)) - -- **history**: Add angular parser - ([`91e4f0f`](https://github.com/python-semantic-release/python-semantic-release/commit/91e4f0f4269d01b255efcd6d7121bbfd5a682e12)) - -This adds a parser that follows the angular specification. The parser is not hooked into the history - evaluation yet. However, it will become the default parser of commit messages when the evaluator - starts using exchangeable parsers. - -Related to #17 - - -## v1.0.0 (2015-08-04) - - -## v0.9.1 (2015-08-04) - - -## v0.9.0 (2015-08-03) - - -## v0.8.0 (2015-08-03) - - -## v0.7.0 (2015-08-02) - - -## v0.6.0 (2015-08-02) - - -## v0.5.4 (2015-07-29) - - -## v0.5.3 (2015-07-28) - - -## v0.5.2 (2015-07-28) - - -## v0.5.1 (2015-07-28) - - -## v0.5.0 (2015-07-28) - - -## v0.4.0 (2015-07-28) - - -## v0.3.2 (2015-07-28) - - -## v0.3.1 (2015-07-28) - - -## v0.3.0 (2015-07-27) - - -## v0.2.0 (2015-07-27) - - -## v0.1.1 (2015-07-27) - - -## v0.1.0 (2015-07-27) diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 000000000..ff44a7ec7 --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,6416 @@ +.. _changelog: + +========= +CHANGELOG +========= + +.. _changelog-v10.5.3: + +v10.5.3 (2025-12-14) +==================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Resolve unauthenticated git repo issues for upstream verification, closes + `#1373`_ (`PR#1388`_, `e164f68`_) + +* **github-action**: Fix failed signing issue when ssh was missing from action environment, closes + `#1376`_ (`PR#1389`_, `18b7eda`_) + +* **parser-conventional-monorepo**: Fix parser opts validator for outside dir path matches, closes + `#1380`_ (`PR#1382`_, `a51eadd`_) + +.. _#1373: https://github.com/python-semantic-release/python-semantic-release/issues/1373 +.. _#1376: https://github.com/python-semantic-release/python-semantic-release/issues/1376 +.. _#1380: https://github.com/python-semantic-release/python-semantic-release/issues/1380 +.. _18b7eda: https://github.com/python-semantic-release/python-semantic-release/commit/18b7edadd7e7dfe42ec43110acf5e1bd8bcd7eb3 +.. _a51eadd: https://github.com/python-semantic-release/python-semantic-release/commit/a51eadd8414a7e9cbfa66837ee5a840a6331dfa1 +.. _e164f68: https://github.com/python-semantic-release/python-semantic-release/commit/e164f682bfa4ca1e7cbe77aa068202fd8094eec7 +.. _PR#1382: https://github.com/python-semantic-release/python-semantic-release/pull/1382 +.. _PR#1388: https://github.com/python-semantic-release/python-semantic-release/pull/1388 +.. _PR#1389: https://github.com/python-semantic-release/python-semantic-release/pull/1389 + + +.. _changelog-v10.5.2: + +v10.5.2 (2025-11-10) +==================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Toggle verify upstream off when no version commit is made (`PR#1370`_, + `e0b3b70`_) + +.. _e0b3b70: https://github.com/python-semantic-release/python-semantic-release/commit/e0b3b7075a4c98cd7af97e0b8470872c11e7aeb9 +.. _PR#1370: https://github.com/python-semantic-release/python-semantic-release/pull/1370 + + +.. _changelog-v10.5.1: + +v10.5.1 (2025-11-10) +==================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Fix upstream change detection to succeed without branch tracking (`PR#1369`_, + `7086257`_) + +.. _7086257: https://github.com/python-semantic-release/python-semantic-release/commit/7086257b641e241dc9a8d742bd62e3698a8b8173 +.. _PR#1369: https://github.com/python-semantic-release/python-semantic-release/pull/1369 + + +.. _changelog-v10.5.0: + +v10.5.0 (2025-11-09) +==================== + +✨ Features +----------- + +* **cmd-version**: Add automatic repository un-shallowing to version workflow (`PR#1366`_, + `90a1ffa`_) + +* **cmd-version**: Add functionality to create & update partial version tags (`PR#1115`_, + `a28f940`_) + +* **cmd-version**: Adds c-macro style version definition support to ``version_variables``, closes + `#1348`_ (`PR#1349`_, `4ce1fca`_) + +* **cmd-version**: Adds upstream check into workflow to prevent commit push collisions (`PR#1360`_, + `d77193e`_) + +🪲 Bug Fixes +------------ + +* **cmd-version**: Prevent regular expression errors on ``tag_format`` (`PR#1367`_, `e7d7aa7`_) + +📖 Documentation +---------------- + +* **commands**: Add description of automated upstream version checking upon version creation + (`PR#1360`_, `d77193e`_) + +* **configuration**: Add description for ``add_partial_tags`` setting & usage examples (`PR#1115`_, + `a28f940`_) + +* **configuration**: Fix ``tag_format`` definition (`PR#1367`_, `e7d7aa7`_) + +* **configuration**: Update ``version_variables`` examples with a c-macro style replacement + (`PR#1349`_, `4ce1fca`_) + +* **github-actions**: Adds release job outputs definition to example (`PR#1344`_, `0fb4875`_) + +* **github-actions**: Removed verify upstream status step from example workflow (`PR#1360`_, + `d77193e`_) + +* **github-actions**: Update example to remove need to specify repo checkout's fetch depth + (`PR#1366`_, `90a1ffa`_) + +* **uv-integration**: Remove verify upstream check from uv integration example (`PR#1360`_, + `d77193e`_) + +* **uv-integration**: Update example to remove need to specify repo checkout's fetch depth + (`PR#1366`_, `90a1ffa`_) + +⚙️ Build System +---------------- + +* **deps**: Bump ``tomlkit`` dependency from ~=0.11.0 to ~=0.13.0 (`PR#1355`_, `55c94ec`_) + +* **deps**: Change github-actions container image to ``python:3.14-slim-trixie`` (`PR#1346`_, + `1a23712`_) + +💡 Additional Release Information +--------------------------------- + +* **cmd-version**: If you were previously handling the unshallowing of a repository clone in your + CI/CD pipelines, you may now remove that step from your workflow. PSR will now detect a shallow + repository and unshallow it before evaluating the commit history. + +.. _#1348: https://github.com/python-semantic-release/python-semantic-release/issues/1348 +.. _0fb4875: https://github.com/python-semantic-release/python-semantic-release/commit/0fb4875fa24ed283ed2d97ff6ab1879669a787ca +.. _1a23712: https://github.com/python-semantic-release/python-semantic-release/commit/1a237125badcb597ae7a92db4e01c2ff3293bce8 +.. _4ce1fca: https://github.com/python-semantic-release/python-semantic-release/commit/4ce1fcac60ac73657a4aaaaa3cb7c4afc7eac2c1 +.. _55c94ec: https://github.com/python-semantic-release/python-semantic-release/commit/55c94ecde1aec47b88aa172d031ab33afa7f795d +.. _90a1ffa: https://github.com/python-semantic-release/python-semantic-release/commit/90a1ffa55c5a1605c59cb26a1797f9a37fdfa784 +.. _a28f940: https://github.com/python-semantic-release/python-semantic-release/commit/a28f9401c4b285aa1007b72eb051d42567f33f93 +.. _d77193e: https://github.com/python-semantic-release/python-semantic-release/commit/d77193e30807968ba6a26bd356a868db62dc1098 +.. _e7d7aa7: https://github.com/python-semantic-release/python-semantic-release/commit/e7d7aa74a216cd2fdd78afc1e0e8b6b8044954ec +.. _PR#1115: https://github.com/python-semantic-release/python-semantic-release/pull/1115 +.. _PR#1344: https://github.com/python-semantic-release/python-semantic-release/pull/1344 +.. _PR#1346: https://github.com/python-semantic-release/python-semantic-release/pull/1346 +.. _PR#1349: https://github.com/python-semantic-release/python-semantic-release/pull/1349 +.. _PR#1355: https://github.com/python-semantic-release/python-semantic-release/pull/1355 +.. _PR#1360: https://github.com/python-semantic-release/python-semantic-release/pull/1360 +.. _PR#1366: https://github.com/python-semantic-release/python-semantic-release/pull/1366 +.. _PR#1367: https://github.com/python-semantic-release/python-semantic-release/pull/1367 + + +.. _changelog-v10.4.1: + +v10.4.1 (2025-09-13) +==================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Fix error where ``--no-tag`` is not respected, closes `#1304`_ (`PR#1329`_, + `b090fa2`_) + +📖 Documentation +---------------- + +* **CHANGELOG**: Update hyperlink in v10.4.0's additional info paragraph (`PR#1323`_, `98ef722`_) + +* **getting-started-guide**: Remove notice about lack of monorepo support, closes `#1326`_ + (`PR#1327`_, `3f21f3f`_) + +* **github-actions**: Fix recommended upstream detection script's upstream name parsing (`PR#1328`_, + `ccc91c0`_) + +.. _#1304: https://github.com/python-semantic-release/python-semantic-release/issues/1304 +.. _#1326: https://github.com/python-semantic-release/python-semantic-release/issues/1326 +.. _3f21f3f: https://github.com/python-semantic-release/python-semantic-release/commit/3f21f3fc47a0dacc11ec95feb2a23f8cf132e77b +.. _98ef722: https://github.com/python-semantic-release/python-semantic-release/commit/98ef722b65bd6a37492cf7ec8b0425800f719114 +.. _b090fa2: https://github.com/python-semantic-release/python-semantic-release/commit/b090fa2efc0ebfb40bdc572fea307d356af95a3f +.. _ccc91c0: https://github.com/python-semantic-release/python-semantic-release/commit/ccc91c09fab45358c7e52b42e6c0607c68c9d8f3 +.. _PR#1323: https://github.com/python-semantic-release/python-semantic-release/pull/1323 +.. _PR#1327: https://github.com/python-semantic-release/python-semantic-release/pull/1327 +.. _PR#1328: https://github.com/python-semantic-release/python-semantic-release/pull/1328 +.. _PR#1329: https://github.com/python-semantic-release/python-semantic-release/pull/1329 + + +.. _changelog-v10.4.0: + +v10.4.0 (2025-09-08) +==================== + +✨ Features +----------- + +* **config**: Add ``conventional-monorepo`` as valid ``commit_parser`` type (`PR#1143`_, `e18f866`_) + +* **parser**: Add new conventional-commits standard parser for monorepos, closes `#614`_ + (`PR#1143`_, `e18f866`_) + +📖 Documentation +---------------- + +* Add configuration guide for monorepo use with PSR (`PR#1143`_, `e18f866`_) + +* **commit-parsers**: Introduce conventional commit monorepo parser options & features (`PR#1143`_, + `e18f866`_) + +* **configuration**: Update ``commit_parser`` option with new ``conventional-monorepo`` value + (`PR#1143`_, `e18f866`_) + +💡 Additional Release Information +--------------------------------- + +* **config**: This release introduces a new built-in parser type that can be utilized for monorepo + projects. The type value is ``conventional-monorepo`` and when specified it will apply the + conventional commit parser to a monorepo environment. This parser has specialized options to help + handle monorepo projects as well. For more information, please refer to the `Monorepo Docs`_. + +.. _#614: https://github.com/python-semantic-release/python-semantic-release/issues/614 +.. _e18f866: https://github.com/python-semantic-release/python-semantic-release/commit/e18f86640a78b374a327848b9e2ba868003d1a43 +.. _Monorepo Docs: /configuration/configuration-guides/monorepos.html +.. _PR#1143: https://github.com/python-semantic-release/python-semantic-release/pull/1143 + + +.. _changelog-v10.3.2: + +v10.3.2 (2025-09-06) +==================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Prevent errors when PSR is executed in non-GitHub CI environments, closes + `#1315`_ (`PR#1322`_, `4df4be4`_) + +⚡ Performance Improvements +--------------------------- + +* **cmd-version**: Re-order operations for faster parsing in version determination (`PR#1310`_, + `63e435b`_) + +📖 Documentation +---------------- + +* **uv-integration**: Add ``--no-changelog`` to build step to increase job speed (`PR#1316`_, + `e1aece1`_) + +💡 Additional Release Information +--------------------------------- + +* **cmd-version**: Unfortunately, PSR introduced a bug in 10.3.0 when attempting to provide more CI + outputs for GitHub Actions. It required our GitHub client interface to be loaded and even if it + was not using GitHub CI to be run. This caused errors in Gitea and likely GitLab/Bitbucket + environments. This change prevents that from happening but if any users pipelines were + intentionally presenting the environment variable "GITHUB_OUTPUT" to enable action output to + enable passing along internal outputs of PSR then their hack will no longer work after this + change. + +.. _#1315: https://github.com/python-semantic-release/python-semantic-release/issues/1315 +.. _4df4be4: https://github.com/python-semantic-release/python-semantic-release/commit/4df4be465710e3b31ba65487069eccef1eeb8be1 +.. _63e435b: https://github.com/python-semantic-release/python-semantic-release/commit/63e435ba466e1e980b9680d0f759950e5e598a61 +.. _e1aece1: https://github.com/python-semantic-release/python-semantic-release/commit/e1aece18ae1998b1523be65b1e569837a7054251 +.. _PR#1310: https://github.com/python-semantic-release/python-semantic-release/pull/1310 +.. _PR#1316: https://github.com/python-semantic-release/python-semantic-release/pull/1316 +.. _PR#1322: https://github.com/python-semantic-release/python-semantic-release/pull/1322 + + +.. _changelog-v10.3.1: + +v10.3.1 (2025-08-06) +==================== + +🪲 Bug Fixes +------------ + +* **github-actions**: Refactor the action output error checking for non-release executions, closes + `#1307`_ (`PR#1308`_, `5385724`_) + +📖 Documentation +---------------- + +* **github-actions**: Adjust docs for direct links to action example workflows, closes `#1303`_ + (`PR#1309`_, `8efebe2`_) + +.. _#1303: https://github.com/python-semantic-release/python-semantic-release/issues/1303 +.. _#1307: https://github.com/python-semantic-release/python-semantic-release/issues/1307 +.. _5385724: https://github.com/python-semantic-release/python-semantic-release/commit/538572426cb30dd4d8c99cea660e290b56361f75 +.. _8efebe2: https://github.com/python-semantic-release/python-semantic-release/commit/8efebe281be2deab1b203cd01d9aedf1542c4ad4 +.. _PR#1308: https://github.com/python-semantic-release/python-semantic-release/pull/1308 +.. _PR#1309: https://github.com/python-semantic-release/python-semantic-release/pull/1309 + + +.. _changelog-v10.3.0: + +v10.3.0 (2025-08-04) +==================== + +✨ Features +----------- + +* **github-actions**: Add ``commit_sha`` as a GitHub Actions output value, closes `#717`_ + (`PR#1289`_, `39b647b`_) + +* **github-actions**: Add ``previous_version`` as a GitHub Actions output value (`PR#1302`_, + `c0197b7`_) + +* **github-actions**: Add ``release_notes`` as a GitHub Actions output value (`PR#1300`_, + `a3fd23c`_) + +* **github-actions**: Add release ``link`` as a GitHub Actions output value (`PR#1301`_, `888aea1`_) + +🪲 Bug Fixes +------------ + +* **github-actions**: Fix variable output newlines (`PR#1300`_, `a3fd23c`_) + +* **util**: Fixes no-op log output when commit message contains square-brackets, closes `#1251`_ + (`PR#1287`_, `f25883f`_) + +📖 Documentation +---------------- + +* **getting-started**: Fixes ``changelog.exclude_commit_patterns`` example in startup guide, closes + `#1291`_ (`PR#1292`_, `2ce2e94`_) + +* **github-actions**: Add description of ``commit_sha`` GitHub Action output in docs (`PR#1289`_, + `39b647b`_) + +* **github-actions**: Add description of ``previous_release`` GitHub Action output (`PR#1302`_, + `c0197b7`_) + +* **github-actions**: Add description of ``release_notes`` GitHub Action output (`PR#1300`_, + `a3fd23c`_) + +* **github-actions**: Add description of release ``link`` GitHub Action output (`PR#1301`_, + `888aea1`_) + +* **README**: Update broken links to match re-located destinations (`PR#1285`_, `f4ec792`_) + +.. _#1251: https://github.com/python-semantic-release/python-semantic-release/issues/1251 +.. _#1291: https://github.com/python-semantic-release/python-semantic-release/issues/1291 +.. _#717: https://github.com/python-semantic-release/python-semantic-release/issues/717 +.. _2ce2e94: https://github.com/python-semantic-release/python-semantic-release/commit/2ce2e94e1930987a88c0a5e3d59baa7cb717f557 +.. _39b647b: https://github.com/python-semantic-release/python-semantic-release/commit/39b647ba62e242342ef5a0d07cb0cfdfa7769865 +.. _888aea1: https://github.com/python-semantic-release/python-semantic-release/commit/888aea1e450513ac7339c72d8b50fabdb4ac177b +.. _a3fd23c: https://github.com/python-semantic-release/python-semantic-release/commit/a3fd23cb0e49f74cb4a345048609d3643a665782 +.. _c0197b7: https://github.com/python-semantic-release/python-semantic-release/commit/c0197b711cfa83f5b13f9ae4f37e555b26f544d9 +.. _f25883f: https://github.com/python-semantic-release/python-semantic-release/commit/f25883f8403365b787e7c3e86d2d982906804621 +.. _f4ec792: https://github.com/python-semantic-release/python-semantic-release/commit/f4ec792d73acb34b8f5183ec044a301b593f16f0 +.. _PR#1285: https://github.com/python-semantic-release/python-semantic-release/pull/1285 +.. _PR#1287: https://github.com/python-semantic-release/python-semantic-release/pull/1287 +.. _PR#1289: https://github.com/python-semantic-release/python-semantic-release/pull/1289 +.. _PR#1292: https://github.com/python-semantic-release/python-semantic-release/pull/1292 +.. _PR#1300: https://github.com/python-semantic-release/python-semantic-release/pull/1300 +.. _PR#1301: https://github.com/python-semantic-release/python-semantic-release/pull/1301 +.. _PR#1302: https://github.com/python-semantic-release/python-semantic-release/pull/1302 + + +.. _changelog-v10.2.0: + +v10.2.0 (2025-06-29) +==================== + +✨ Features +----------- + +* **cmd-version**: Adds ``PACKAGE_NAME`` value into build command environment (`db9bc13`_) + +📖 Documentation +---------------- + +* **configuration**: Update build command environment definition to include ``PACKAGE_NAME`` + variable (`4aa3805`_) + +* **uv-integration**: Fix configuration guide for ``uv`` usage to ensure lock file update + (`5390145`_) + +.. _4aa3805: https://github.com/python-semantic-release/python-semantic-release/commit/4aa38059ce6b33ca23a547473e9fb8a19d3ffbe1 +.. _5390145: https://github.com/python-semantic-release/python-semantic-release/commit/5390145503b4d5dcca8f323e1ba6c5bec0bd079b +.. _db9bc13: https://github.com/python-semantic-release/python-semantic-release/commit/db9bc132c8a0398f2cce647730c69a32ca35ba51 + + +.. _changelog-v10.1.0: + +v10.1.0 (2025-06-12) +==================== + +✨ Features +----------- + +* **cmd-version**: Always stage version stamped files & changelog even with ``--no-commit``, closes + `#1211`_ (`PR#1214`_, `de62334`_) + +📖 Documentation +---------------- + +* **cmd-version**: Improve command description & include common uses (`PR#1214`_, `de62334`_) + +* **configuration-guide**: Add how-to guide for ``uv`` integration (`PR#1214`_, `de62334`_) + +* **github-actions**: Clarify with examples of the ``root_options`` v10 migration change + (`PR#1271`_, `fbb63ec`_) + +⚙️ Build System +---------------- + +* **deps**: Expand ``python-gitlab`` dependency to include ``v6.0.0`` (`PR#1273`_, `99fc9cc`_) + +.. _#1211: https://github.com/python-semantic-release/python-semantic-release/issues/1211 +.. _99fc9cc: https://github.com/python-semantic-release/python-semantic-release/commit/99fc9ccabbae9adf5646731591080366eacbe03c +.. _de62334: https://github.com/python-semantic-release/python-semantic-release/commit/de623344cd18b3dbe05823eb90fdd010c5505c92 +.. _fbb63ec: https://github.com/python-semantic-release/python-semantic-release/commit/fbb63ec76142ea903d8a0401369ec251abbec0fe +.. _PR#1214: https://github.com/python-semantic-release/python-semantic-release/pull/1214 +.. _PR#1271: https://github.com/python-semantic-release/python-semantic-release/pull/1271 +.. _PR#1273: https://github.com/python-semantic-release/python-semantic-release/pull/1273 + + +.. _changelog-v10.0.2: + +v10.0.2 (2025-05-26) +==================== + +🪲 Bug Fixes +------------ + +* **github-actions**: Add filesystem UID/GID fixer after action workspace modification (`PR#1262`_, + `93e23c8`_) + +.. _93e23c8: https://github.com/python-semantic-release/python-semantic-release/commit/93e23c8993fe6f113095bfcd5089684f403cc6b9 +.. _PR#1262: https://github.com/python-semantic-release/python-semantic-release/pull/1262 + + +.. _changelog-v10.0.1: + +v10.0.1 (2025-05-25) +==================== + +🪲 Bug Fixes +------------ + +* **github-actions**: Bump the github-actions dependency to ``v10.0.0`` (`PR#1255`_, `2803676`_) + +.. _2803676: https://github.com/python-semantic-release/python-semantic-release/commit/2803676cf26c52177fa98d9144934853744a22bb +.. _PR#1255: https://github.com/python-semantic-release/python-semantic-release/pull/1255 + + +.. _changelog-v10.0.0: + +v10.0.0 (2025-05-25) +==================== + +✨ Features +----------- + +* **cmd-version**: Enable ``version_variables`` version stamp of vars with double-equals + (`PR#1244`_, `080e4bc`_) + +* **parser-conventional**: Set parser to evaluate all squashed commits by default (`6fcdc99`_) + +* **parser-conventional**: Set parser to ignore merge commits by default (`59bf084`_) + +* **parser-emoji**: Set parser to evaluate all squashed commits by default (`514a922`_) + +* **parser-emoji**: Set parser to ignore merge commits by default (`8a51525`_) + +* **parser-scipy**: Set parser to evaluate all squashed commits by default (`634fffe`_) + +* **parser-scipy**: Set parser to ignore merge commits by default (`d4f128e`_) + +🪲 Bug Fixes +------------ + +* **changelog-md**: Change to 1-line descriptions in markdown template, closes `#733`_ (`e7ac155`_) + +* **changelog-rst**: Change to 1-line descriptions in the default ReStructuredText template, closes + `#733`_ (`731466f`_) + +* **cli**: Adjust verbosity parameter to enable silly-level logging (`bd3e7bf`_) + +* **github-action**: Resolve command injection vulnerability in action script (`fb3da27`_) + +* **parser-conventional**: Remove breaking change footer messages from commit descriptions + (`b271cbb`_) + +* **parser-conventional**: Remove issue footer messages from commit descriptions (`b1bb0e5`_) + +* **parser-conventional**: Remove PR/MR references from commit subject line (`eed63fa`_) + +* **parser-conventional**: Remove release notice footer messages from commit descriptions + (`7e8dc13`_) + +* **parser-emoji**: Remove issue footer messages from commit descriptions (`b757603`_) + +* **parser-emoji**: Remove PR/MR references from commit subject line (`16465f1`_) + +* **parser-emoji**: Remove release notice footer messages from commit descriptions (`b6307cb`_) + +* **parser-scipy**: Remove issue footer messages from commit descriptions (`3cfee76`_) + +* **parser-scipy**: Remove PR/MR references from commit subject line (`da4140f`_) + +* **parser-scipy**: Remove release notice footer messages from commit descriptions (`58308e3`_) + +📖 Documentation +---------------- + +* Refactor documentation page navigation (`4e52f4b`_) + +* **algorithm**: Remove out-of-date algorithm description (`6cd0fbe`_) + +* **commit-parsing**: Define limitation of revert commits with the scipy parser (`5310d0c`_) + +* **configuration**: Change default value for ``allow_zero_version`` in the description (`203d29d`_) + +* **configuration**: Change the default for the base changelog's ``mask_initial_release`` value + (`5fb02ab`_) + +* **configuration**: Change the default value for ``changelog.mode`` in the setting description + (`0bed906`_) + +* **configuration**: Update ``version_variables`` section to include double-equals operand support + (`PR#1244`_, `080e4bc`_) + +* **contributing**: Refactor contributing & contributors layout (`8bed5bc`_) + +* **github-actions**: Add reference to manual release workflow example (`6aad7f1`_) + +* **github-actions**: Change recommended workflow to separate release from deploy (`67b2ae0`_) + +* **github-actions**: Update ``python-semantic-release/publish-action`` parameter notes (`c4d45ec`_) + +* **github-actions**: Update PSR action parameter documentation (`a082896`_) + +* **upgrading**: Re-locate version upgrade guides into ``Upgrading PSR`` (`a5f5e04`_) + +* **upgrading-v10**: Added migration guide for v9 to v10 (`4ea92ec`_) + +⚙️ Build System +---------------- + +* **deps**: Prevent update to ``click@8.2.0`` (`PR#1245`_, `4aa6a6e`_) + +♻️ Refactoring +--------------- + +* **config**: Change ``allow_zero_version`` default to ``false`` (`c6b6eab`_) + +* **config**: Change ``changelog.default_templates.mask_initial_release`` default to ``true`` + (`0e114c3`_) + +* **config**: Change ``changelog.mode`` default to ``update`` (`7d39e76`_) + +💥 Breaking Changes +------------------- + +.. seealso:: + *For a summarized walkthrough, check out our* |v10 migration guide|_ *as well.* + +.. _v10 migration guide: ../upgrading/10-upgrade.html +.. |v10 migration guide| replace:: *v10 migration guide* + +* **changelog-md**: The default Markdown changelog template and release notes template will no + longer print out the entire commit message contents, instead, it will only print the commit + subject line. This comes to meet the high demand of better formatted changelogs and requests for + subject line only. Originally, it was a decision to not hide commit subjects that were included in + the commit body via the ``git merge --squash`` command and PSR did not have another alternative. + At this point, all the built-in parsers have the ability to parse squashed commits and separate + them out into their own entry on the changelog. Therefore, the default template no longer needs to + write out the full commit body. See the commit parser options if you want to enable/disable + parsing squash commits. + +* **changelog-rst**: The default ReStructured changelog template will no longer print out the entire + commit message contents, instead, it will only print the commit subject line. This comes to meet + the high demand of better formatted changelogs and requests for subject line only. Originally, it + was a decision to not hide commit subjects that were included in the commit body via the ``git + merge --squash`` command and PSR did not have another alternative. At this point, all the built-in + parsers have the ability to parse squashed commits and separate them out into their own entry on + the changelog. Therefore, the default template no longer needs to write out the full commit body. + See the commit parser options if you want to enable/disable parsing squash commits. + +* **config**: This release switches the ``allow_zero_version`` default to ``false``. This change is + to encourage less ``0.x`` releases as the default but rather allow the experienced developer to + choose when ``0.x`` is appropriate. There are way too many projects in the ecosystems that never + leave ``0.x`` and that is problematic for the industry tools that help auto-update based on + SemVer. We should strive for publishing usable tools and maintaining good forethought for when + compatibility must break. If your configuration already sets the ``allow_zero_version`` value, + this change will have no effect on your project. If you want to use ``0.x`` versions, from the + start then change ``allow_zero_version`` to ``true`` in your configuration. + +* **config**: This release switches the ``changelog.default_templates.mask_initial_release`` default + to ``true``. This change is intended to toggle better recommended outputs of the default + changelog. Conceptually, the very first release is hard to describe--one can only provide new + features as nothing exists yet for the end user. No changelog should be written as there is no + start point to compare the "changes" to. The recommendation instead is to only list a simple + message as ``Initial Release``. This is now the default for PSR when providing the very first + release (no pre-existing tags) in the changelog and release notes. If your configuration already + sets the ``changelog.default_templates.mask_initial_release`` value, then this change will have no + effect on your project. If you do NOT want to mask the first release information, then set + ``changelog.default_templates.mask_initial_release`` to ``false`` in your configuration. + +* **config**: This release switches the ``changelog.mode`` default to ``update``. In this mode, if a + changelog exists, PSR will update the changelog **IF AND ONLY IF** the configured insertion flag + exists in the changelog. The Changelog output will remain unchanged if no insertion flag exists. + The insertion flag may be configured with the ``changelog.insertion_flag`` setting. When upgrading + to ``v10``, you must add the insertion flag manually or you can just delete the changelog file and + run PSR's changelog generation and it will rebuild the changelog (similar to init mode) but it + will add the insertion flag. If your configuration already sets the ``changelog.mode`` value, then + this change will have no effect on your project. If you would rather the changelog be generated + from scratch every release, than set the ``changelog.mode`` value to ``init`` in your + configuration. + +* **github-action**: The ``root_options`` action input parameter has been removed because it created + a command injection vulnerability for arbitrary code to execute within the container context of + the GitHub action if a command injection code was provided as part of the ``root_options`` + parameter string. To eliminate the vulnerability, each relevant option that can be provided to + ``semantic-release`` has been individually added as its own parameter and will be processed + individually to prevent command injection. Please review our `Github Actions Configuration`__ page + to review the newly available configuration options that replace the ``root_options`` parameter. + + __ https://github.com/python-semantic-release/python-semantic-release/blob/v10.0.0/docs/configuration/automatic-releases/github-actions.rst + +* **parser-conventional**: Any breaking change footer messages that the conventional commit parser + detects will now be removed from the ``commit.descriptions[]`` list but maintained in and only in + the ``commit.breaking_descriptions[]`` list. Previously, the descriptions included all text from + the commit message but that was redundant as the default changelog now handles breaking change + footers in its own section. + +* **parser-conventional, parser-emoji, parser-scipy**: Any issue resolution footers that the parser + detects will now be removed from the ``commit.descriptions[]`` list. Previously, the descriptions + included all text from the commit message but now that the parser pulls out the issue numbers the + numbers will be included in the ``commit.linked_issues`` tuple for user extraction in any + changelog generation. + +* **parser-conventional, parser-emoji, parser-scipy**: Any release notice footer messages that the + commit parser detects will now be removed from the ``commit.descriptions[]`` list but maintained + in and only in the ``commit.notices[]`` list. Previously, the descriptions included all text from + the commit message but that was redundant as the default changelog now handles release notice + footers in its own section. + +* **parser-conventional, parser-emoji, parser-scipy**: Generally, a pull request or merge request + number reference is included in the subject line at the end within parentheses on some common + VCS's like GitHub. PSR now looks for this reference and extracts it into the + ``commit.linked_merge_request`` and the ``commit.linked_pull_request`` attributes of a commit + object. Since this is now pulled out individually, it is cleaner to remove this from the first + line of the ``commit.descriptions`` list (ie. the subject line) so that changelog macros do not + have to replace the text but instead only append a PR/MR link to the end of the line. The + reference does maintain the PR/MR prefix indicator (`#` or ``!``). + +* **parser-conventional, parser-emoji, parser-scipy**: The configuration setting + ``commit_parser_options.ignore_merge_commits`` is now set to ``true`` by default. The feature to + ignore squash commits was introduced in ``v9.18.0`` and was originally set to ``false`` to + prevent unexpected results on a non-breaking update. The ignore merge commits feature prevents + additional unnecessary processing on a commit message that likely will not match a commit message + syntax. Most merge commits are syntactically pre-defined by Git or Remote Version Control System + (ex. GitHub, etc.) and do not follow a commit convention (nor should they). The larger issue with + merge commits is that they ultimately are a full copy of all the changes that were previously + created and committed. The merge commit itself ensures that the previous commit tree is + maintained in history, therefore the commit message always exists. If merge commits are parsed, + it generally creates duplicate messages that will end up in your changelog, which is less than + desired in most cases. If you have previously used the ``changelog.exclude_commit_patterns`` + functionality to ignore merge commit messages then you will want this setting set to ``true`` to + improve parsing speed. You can also now remove the merge commit exclude pattern from the list as + well to improve parsing speed. If this functionality is not desired, you will need to update your + configuration to change the new setting to ``false``. + +* **parser-conventional, parser-emoji, parser-scipy**: The configuration setting + ``commit_parser_options.parse_squash_commits`` is now set to ``true`` by default. The feature to + parse squash commits was introduced in ``v9.17.0`` and was originally set to ``false`` to prevent + unexpected results on a non-breaking update. The parse squash commits feature attempts to find + additional commits of the same commit type within the body of a single commit message. When + squash commits are found, Python Semantic Release will separate out each commit into its own + artificial commit object and parse them individually. This potentially can change the resulting + version bump if a larger bump was detected within the squashed components. It also allows for the + changelog and release notes to separately order and display each commit as originally written. If + this is not desired, you will need to update your configuration to change the new setting to + ``false``. + +.. _#733: https://github.com/python-semantic-release/python-semantic-release/issues/733 +.. _080e4bc: https://github.com/python-semantic-release/python-semantic-release/commit/080e4bcb14048a2dd10445546a7ee3159b3ab85c +.. _0bed906: https://github.com/python-semantic-release/python-semantic-release/commit/0bed9069df67ae806ad0a15f8434ac4efcc6ba31 +.. _0e114c3: https://github.com/python-semantic-release/python-semantic-release/commit/0e114c3458a24b87bfd2d6b0cd3f5cfdc9497084 +.. _16465f1: https://github.com/python-semantic-release/python-semantic-release/commit/16465f133386b09627d311727a6f8d24dd8f174f +.. _203d29d: https://github.com/python-semantic-release/python-semantic-release/commit/203d29d9d6b8e862eabe2f99dbd27eabf04e75e2 +.. _3cfee76: https://github.com/python-semantic-release/python-semantic-release/commit/3cfee76032662bda6fbdd7e2585193213e4f9da2 +.. _4aa6a6e: https://github.com/python-semantic-release/python-semantic-release/commit/4aa6a6edbff75889e09f32f7cba52cb90c9fb626 +.. _4e52f4b: https://github.com/python-semantic-release/python-semantic-release/commit/4e52f4bba46e96a4762f97d306f15ae52c5cea1b +.. _4ea92ec: https://github.com/python-semantic-release/python-semantic-release/commit/4ea92ec34dcd45d8cbab24e38e55289617b2d728 +.. _514a922: https://github.com/python-semantic-release/python-semantic-release/commit/514a922fa87721e2500062dcae841bedd84dc1fe +.. _5310d0c: https://github.com/python-semantic-release/python-semantic-release/commit/5310d0c700840538f27874394b9964bf09cd69b1 +.. _58308e3: https://github.com/python-semantic-release/python-semantic-release/commit/58308e31bb6306aac3a985af01eb779dc923d3f0 +.. _59bf084: https://github.com/python-semantic-release/python-semantic-release/commit/59bf08440a15269afaac81d78dd03ee418f9fd6b +.. _5fb02ab: https://github.com/python-semantic-release/python-semantic-release/commit/5fb02ab6e3b8278ecbf92ed35083ffb595bc19b8 +.. _634fffe: https://github.com/python-semantic-release/python-semantic-release/commit/634fffea29157e9b6305b21802c78ac245454265 +.. _67b2ae0: https://github.com/python-semantic-release/python-semantic-release/commit/67b2ae0050cce540a4126fe280cca6dc4bcf5d3f +.. _6aad7f1: https://github.com/python-semantic-release/python-semantic-release/commit/6aad7f17e64fb4717ddd7a9e94d2a730be6a3bd9 +.. _6cd0fbe: https://github.com/python-semantic-release/python-semantic-release/commit/6cd0fbeb44e16d394c210216c7099afa51f5a4a3 +.. _6fcdc99: https://github.com/python-semantic-release/python-semantic-release/commit/6fcdc99e9462b1186ea9488fc14e4e18f8c7fdb3 +.. _731466f: https://github.com/python-semantic-release/python-semantic-release/commit/731466fec4e06fe71f6c4addd4ae2ec2182ae9c1 +.. _7d39e76: https://github.com/python-semantic-release/python-semantic-release/commit/7d39e7675f859463b54751d59957b869d5d8395c +.. _7e8dc13: https://github.com/python-semantic-release/python-semantic-release/commit/7e8dc13c0b048a95d01f7aecfbe4eeedcddec9a4 +.. _8a51525: https://github.com/python-semantic-release/python-semantic-release/commit/8a5152573b9175f01be06d0c4531ea0ca4de8dd4 +.. _8bed5bc: https://github.com/python-semantic-release/python-semantic-release/commit/8bed5bcca4a5759af0e3fb24eadf14aa4e4f53c9 +.. _a082896: https://github.com/python-semantic-release/python-semantic-release/commit/a08289693085153effdafe3c6ff235a1777bb1fa +.. _a5f5e04: https://github.com/python-semantic-release/python-semantic-release/commit/a5f5e042ae9af909ee9e3ddf57c78adbc92ce378 +.. _b1bb0e5: https://github.com/python-semantic-release/python-semantic-release/commit/b1bb0e55910715754eebef6cb5b21ebed5ee8d68 +.. _b271cbb: https://github.com/python-semantic-release/python-semantic-release/commit/b271cbb2d3e8b86d07d1358b2e7424ccff6ae186 +.. _b6307cb: https://github.com/python-semantic-release/python-semantic-release/commit/b6307cb649043bbcc7ad9f15ac5ac6728914f443 +.. _b757603: https://github.com/python-semantic-release/python-semantic-release/commit/b757603e77ebe26d8a14758d78fd21163a9059b2 +.. _bd3e7bf: https://github.com/python-semantic-release/python-semantic-release/commit/bd3e7bfa86d53a03f03ac419399847712c523b02 +.. _c4d45ec: https://github.com/python-semantic-release/python-semantic-release/commit/c4d45ec46dfa81f645c25ea18ffffe9635922603 +.. _c6b6eab: https://github.com/python-semantic-release/python-semantic-release/commit/c6b6eabbfe100d2c741620eb3fa12a382531fa94 +.. _d4f128e: https://github.com/python-semantic-release/python-semantic-release/commit/d4f128e75e33256c0163fbb475c7c41e18f65147 +.. _da4140f: https://github.com/python-semantic-release/python-semantic-release/commit/da4140f3e3a2ed03c05064f35561b4584f517105 +.. _e7ac155: https://github.com/python-semantic-release/python-semantic-release/commit/e7ac155a91fc2e735d3cbf9b66fb4e5ff40a1466 +.. _eed63fa: https://github.com/python-semantic-release/python-semantic-release/commit/eed63fa9f6e762f55700fc85ef3ebdc0d3144f21 +.. _fb3da27: https://github.com/python-semantic-release/python-semantic-release/commit/fb3da27650ff15bcdb3b7badc919bd8a9a73238d +.. _PR#1244: https://github.com/python-semantic-release/python-semantic-release/pull/1244 +.. _PR#1245: https://github.com/python-semantic-release/python-semantic-release/pull/1245 + + +.. _changelog-v9.21.1: + +v9.21.1 (2025-05-05) +==================== + +🪲 Bug Fixes +------------ + +* **changelog-filters**: Fixes url resolution when prefix & path share letters, closes `#1204`_ + (`PR#1239`_, `f61f8a3`_) + +📖 Documentation +---------------- + +* **github-actions**: Expound on monorepo example to include publishing actions (`PR#1229`_, + `550e85f`_) + +⚙️ Build System +---------------- + +* **deps**: Bump ``rich`` dependency from ``13.0`` to ``14.0`` (`PR#1224`_, `691536e`_) + +* **deps**: Expand ``python-gitlab`` dependency to include ``v5.0.0`` (`PR#1228`_, `a0cd1be`_) + +.. _#1204: https://github.com/python-semantic-release/python-semantic-release/issues/1204 +.. _550e85f: https://github.com/python-semantic-release/python-semantic-release/commit/550e85f5ec2695d5aa680014127846d58c680e31 +.. _691536e: https://github.com/python-semantic-release/python-semantic-release/commit/691536e98f311d0fc6d29a72c41ce5a65f1f4b6c +.. _a0cd1be: https://github.com/python-semantic-release/python-semantic-release/commit/a0cd1be4e3aa283cbdc544785e5f895c8391dfb8 +.. _f61f8a3: https://github.com/python-semantic-release/python-semantic-release/commit/f61f8a38a1a3f44a7a56cf9dcb7dde748f90ca1e +.. _PR#1224: https://github.com/python-semantic-release/python-semantic-release/pull/1224 +.. _PR#1228: https://github.com/python-semantic-release/python-semantic-release/pull/1228 +.. _PR#1229: https://github.com/python-semantic-release/python-semantic-release/pull/1229 +.. _PR#1239: https://github.com/python-semantic-release/python-semantic-release/pull/1239 + + +.. _changelog-v9.21.0: + +v9.21.0 (2025-02-23) +==================== + +✨ Features +----------- + +* Add package name variant, ``python-semantic-release``, project script, closes `#1195`_ + (`PR#1199`_, `1ac97bc`_) + +📖 Documentation +---------------- + +* **github-actions**: Update example workflow to handle rapid merges (`PR#1200`_, `1a4116a`_) + +.. _#1195: https://github.com/python-semantic-release/python-semantic-release/issues/1195 +.. _1a4116a: https://github.com/python-semantic-release/python-semantic-release/commit/1a4116af4b999144998cf94cf84c9c23ff2e352f +.. _1ac97bc: https://github.com/python-semantic-release/python-semantic-release/commit/1ac97bc74c69ce61cec98242c19bf8adc1d37fb9 +.. _PR#1199: https://github.com/python-semantic-release/python-semantic-release/pull/1199 +.. _PR#1200: https://github.com/python-semantic-release/python-semantic-release/pull/1200 + + +.. _changelog-v9.20.0: + +v9.20.0 (2025-02-17) +==================== + +✨ Features +----------- + +* **cmd-version**: Enable stamping of tag formatted versions into files, closes `#846`_ (`PR#1190`_, + `8906d8e`_) + +* **cmd-version**: Extend ``version_variables`` to stamp versions with ``@`` symbol separator, + closes `#1156`_ (`PR#1185`_, `23f69b6`_) + +📖 Documentation +---------------- + +* **configuration**: Add usage information for tag format version stamping (`PR#1190`_, `8906d8e`_) + +* **configuration**: Clarify ``version_variables`` config description & ``@`` separator usage + (`PR#1185`_, `23f69b6`_) + +⚙️ Build System +---------------- + +* **deps**: Add ``deprecated~=1.2`` for deprecation notices & sphinx documentation (`PR#1190`_, + `8906d8e`_) + +.. _#1156: https://github.com/python-semantic-release/python-semantic-release/issues/1156 +.. _#846: https://github.com/python-semantic-release/python-semantic-release/issues/846 +.. _23f69b6: https://github.com/python-semantic-release/python-semantic-release/commit/23f69b6ac206d111b1e566367f9b2f033df5c87a +.. _8906d8e: https://github.com/python-semantic-release/python-semantic-release/commit/8906d8e70467af1489d797ec8cb09b1f95e5d409 +.. _PR#1185: https://github.com/python-semantic-release/python-semantic-release/pull/1185 +.. _PR#1190: https://github.com/python-semantic-release/python-semantic-release/pull/1190 + + +.. _changelog-v9.19.1: + +v9.19.1 (2025-02-11) +==================== + +🪲 Bug Fixes +------------ + +* **changelog**: Standardize heading format for across all version sections (`PR#1182`_, `81f9e80`_) + +* **changelog-md**: Standardize heading format for extra release information (`PR#1182`_, + `81f9e80`_) + +* **changelog-rst**: Standardize heading format for extra release information (`PR#1182`_, + `81f9e80`_) + +* **config**: Handle invalid ``commit_parser`` type gracefully (`PR#1180`_, `903c8ba`_) + +* **release-notes**: Standardize heading format for extra release information (`PR#1182`_, + `81f9e80`_) + +📖 Documentation +---------------- + +* Fix spelling errors & inaccurate descriptions (`55d4a05`_) + +* **automatic-releases**: Declutter the table of contents for automatic release guides (`e8343ee`_) + +* **commit-parsing**: Update reference to section name of additional release info (`PR#1182`_, + `81f9e80`_) + +.. _55d4a05: https://github.com/python-semantic-release/python-semantic-release/commit/55d4a05ff56321cf9874f8f302fbe7e5163ad4f7 +.. _81f9e80: https://github.com/python-semantic-release/python-semantic-release/commit/81f9e80c3df185ef5e553e024b903ce153e14304 +.. _903c8ba: https://github.com/python-semantic-release/python-semantic-release/commit/903c8ba68d797f7cd9e5025c9a3a3ad471c805ae +.. _e8343ee: https://github.com/python-semantic-release/python-semantic-release/commit/e8343eeb38d3b4e18953ac0f97538df396d22b76 +.. _PR#1180: https://github.com/python-semantic-release/python-semantic-release/pull/1180 +.. _PR#1182: https://github.com/python-semantic-release/python-semantic-release/pull/1182 + + +.. _changelog-v9.19.0: + +v9.19.0 (2025-02-10) +==================== + +✨ Features +----------- + +* **parser-conventional**: Add official ``conventional-commits`` parser (`PR#1177`_, `27ddf84`_) + +📖 Documentation +---------------- + +* Update references to Angular parser to Conventional Commit Parser (`PR#1177`_, `27ddf84`_) + +💡 Additional Release Information +--------------------------------- + +* **parser-conventional**: The 'angular' commit parser has been renamed to 'conventional' to match + the official conventional-commits standard for which the 'angular' parser has evolved into. Please + update your configurations to specify 'conventional' as the 'commit_parser' value in place of + 'angular'. The 'angular' type will be removed in v11. + +.. _27ddf84: https://github.com/python-semantic-release/python-semantic-release/commit/27ddf840f8c812361c60bac9cf0b110d401f33d6 +.. _PR#1177: https://github.com/python-semantic-release/python-semantic-release/pull/1177 + + +.. _changelog-v9.18.1: + +v9.18.1 (2025-02-08) +==================== + +🪲 Bug Fixes +------------ + +* **config**: Refactors default token resolution to prevent pre-mature insecure URL error, closes + `#1074`_, `#1169`_ (`PR#1173`_, `37db258`_) + +.. _#1074: https://github.com/python-semantic-release/python-semantic-release/issues/1074 +.. _#1169: https://github.com/python-semantic-release/python-semantic-release/issues/1169 +.. _37db258: https://github.com/python-semantic-release/python-semantic-release/commit/37db2581620ad02e66716a4b3b365aa28abe65f8 +.. _PR#1173: https://github.com/python-semantic-release/python-semantic-release/pull/1173 + + +.. _changelog-v9.18.0: + +v9.18.0 (2025-02-06) +==================== + +✨ Features +----------- + +* Add ``create_release_url`` & ``format_w_official_vcs_name`` filters (`PR#1161`_, `f853cf0`_) + +* **changelog**: Add ``create_pypi_url`` filter to jinja template render context (`PR#1160`_, + `45d49c3`_) + +* **changelog**: Add additional release info to changeling from commit ``NOTICE``'s (`PR#1166`_, + `834ce32`_) + +* **changelog-md**: Add additional release info section to default markdown template, closes `#223`_ + (`PR#1166`_, `834ce32`_) + +* **changelog-rst**: Add additional release info section to default ReStructuredText template, + closes `#223`_ (`PR#1166`_, `834ce32`_) + +* **commit-parser**: Enable parsers to identify additional release notices from commit msgs + (`PR#1166`_, `834ce32`_) + +* **parser-angular**: Add a ``ignore_merge_commits`` option to discard parsing merge commits + (`PR#1164`_, `463e43b`_) + +* **parser-angular**: Add functionality to parse out ``NOTICE:`` prefixed statements in commits, + closes `#223`_ (`PR#1166`_, `834ce32`_) + +* **parser-emoji**: Add a ``ignore_merge_commits`` option to discard parsing merge commits + (`PR#1164`_, `463e43b`_) + +* **parser-emoji**: Add functionality to parse out ``NOTICE:`` prefixed statements in commits, + closes `#223`_ (`PR#1166`_, `834ce32`_) + +* **parsers**: Add option ``ignore_merge_commits`` to discard parsing merge commits (`PR#1164`_, + `463e43b`_) + +* **release-notes**: Add license information to default release notes template, closes `#228`_ + (`PR#1167`_, `41172c1`_) + +* **vcs-bitbucket**: Add ``format_w_official_vcs_name`` filter function (`PR#1161`_, `f853cf0`_) + +* **vcs-gitea**: Add ``create_release_url`` & ``format_w_official_vcs_name`` filter functions + (`PR#1161`_, `f853cf0`_) + +* **vcs-github**: Add ``create_release_url`` & ``format_w_official_vcs_name`` filter functions + (`PR#1161`_, `f853cf0`_) + +* **vcs-gitlab**: Add ``create_release_url`` & ``format_w_official_vcs_name`` filter functions + (`PR#1161`_, `f853cf0`_) + +🪲 Bug Fixes +------------ + +* Refactor parsing compatibility function to support older custom parsers (`PR#1165`_, `cf340c5`_) + +* **changelog**: Fix parsing compatibility w/ custom parsers, closes `#1162`_ (`PR#1165`_, + `cf340c5`_) + +* **changelog-templates**: Adjust default templates to avoid empty version sections (`PR#1164`_, + `463e43b`_) + +* **parser-angular**: Adjust parser to prevent empty message extractions (`PR#1166`_, `834ce32`_) + +* **parser-emoji**: Adjust parser to prevent empty message extractions (`PR#1166`_, `834ce32`_) + +* **version**: Fix parsing compatibility w/ custom parsers, closes `#1162`_ (`PR#1165`_, `cf340c5`_) + +📖 Documentation +---------------- + +* **changelog**: Add formatted changelog into hosted documentation (`PR#1155`_, `2f18a6d`_) + +* **changelog-templates**: Add description for new ``create_pypi_url`` filter function (`PR#1160`_, + `45d49c3`_) + +* **changelog-templates**: Add details about license specification in the release notes (`PR#1167`_, + `41172c1`_) + +* **changelog-templates**: Define ``create_release_url`` & ``format_w_official_vcs_name`` filters + (`PR#1161`_, `f853cf0`_) + +* **changelog-templates**: Document special separate sections of commit descriptions (`ebb4c67`_) + +* **commit-parsing**: Document new release notice footer detection feature of built-in parsers + (`cd14e92`_) + +.. _#1162: https://github.com/python-semantic-release/python-semantic-release/issues/1162 +.. _#223: https://github.com/python-semantic-release/python-semantic-release/issues/223 +.. _#228: https://github.com/python-semantic-release/python-semantic-release/issues/228 +.. _2f18a6d: https://github.com/python-semantic-release/python-semantic-release/commit/2f18a6debfa6ef3afcc5611a3e09262998f2d4bf +.. _41172c1: https://github.com/python-semantic-release/python-semantic-release/commit/41172c1272a402e94e3c68571d013cbdcb5b9023 +.. _45d49c3: https://github.com/python-semantic-release/python-semantic-release/commit/45d49c3da75a7f08c86fc9bab5d232a9b37d9e72 +.. _463e43b: https://github.com/python-semantic-release/python-semantic-release/commit/463e43b897ee80dfaf7ce9d88d22ea8e652bcf55 +.. _834ce32: https://github.com/python-semantic-release/python-semantic-release/commit/834ce323007c58229abf115ef2016a348de9ee66 +.. _cd14e92: https://github.com/python-semantic-release/python-semantic-release/commit/cd14e9209d4e54f0876e737d1f802dded294a48c +.. _cf340c5: https://github.com/python-semantic-release/python-semantic-release/commit/cf340c5256dea58aedad71a6bdf50b17eee53d2f +.. _ebb4c67: https://github.com/python-semantic-release/python-semantic-release/commit/ebb4c67d46b86fdf79e32edf744a2ec2b09d6a93 +.. _f853cf0: https://github.com/python-semantic-release/python-semantic-release/commit/f853cf059b3323d7888b06fde09142184e7964e8 +.. _PR#1155: https://github.com/python-semantic-release/python-semantic-release/pull/1155 +.. _PR#1160: https://github.com/python-semantic-release/python-semantic-release/pull/1160 +.. _PR#1161: https://github.com/python-semantic-release/python-semantic-release/pull/1161 +.. _PR#1164: https://github.com/python-semantic-release/python-semantic-release/pull/1164 +.. _PR#1165: https://github.com/python-semantic-release/python-semantic-release/pull/1165 +.. _PR#1166: https://github.com/python-semantic-release/python-semantic-release/pull/1166 +.. _PR#1167: https://github.com/python-semantic-release/python-semantic-release/pull/1167 + + +.. _changelog-v9.17.0: + +v9.17.0 (2025-01-26) +==================== + +✨ Features +----------- + +* **changelog**: Add ``sort_numerically`` filter function to template environment (`PR#1146`_, + `7792388`_) + +* **changelog**: Parse squashed commits individually (`PR#1112`_, `cf785ca`_) + +* **config**: Extend support of remote urls aliased using git ``insteadOf`` configurations, closes + `#1150`_ (`PR#1151`_, `4045037`_) + +* **parsers**: Parse squashed commits individually (`PR#1112`_, `cf785ca`_) + +* **parser-angular**: Apply PR/MR numbers to all parsed commits from a squash merge (`PR#1112`_, + `cf785ca`_) + +* **parser-angular**: Upgrade angular parser to parse squashed commits individually, closes `#1085`_ + (`PR#1112`_, `cf785ca`_) + +* **parser-emoji**: Add functionality to interpret scopes from gitmoji commit messages (`PR#1112`_, + `cf785ca`_) + +* **parser-emoji**: Upgrade emoji parser to parse squashed commits individually (`PR#1112`_, + `cf785ca`_) + +* **version**: Parse squashed commits individually (`PR#1112`_, `cf785ca`_) + +🪲 Bug Fixes +------------ + +* **github-action**: Disable writing python bytecode in action execution (`PR#1152`_, `315ae21`_) + +⚡ Performance Improvements +--------------------------- + +* **logging**: Remove irrelevant debug logging statements (`PR#1147`_, `f1ef4ec`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Add description for new ``sort_numerically`` filter function (`PR#1146`_, + `7792388`_) + +* **commit-parsing**: Add description for squash commit evaluation option of default parsers + (`PR#1112`_, `cf785ca`_) + +* **configuration**: Update the ``commit_parser_options`` setting description (`PR#1112`_, + `cf785ca`_) + +.. _#1085: https://github.com/python-semantic-release/python-semantic-release/issues/1085 +.. _#1150: https://github.com/python-semantic-release/python-semantic-release/issues/1150 +.. _315ae21: https://github.com/python-semantic-release/python-semantic-release/commit/315ae2176e211b00b13374560d81e127a3065d1a +.. _4045037: https://github.com/python-semantic-release/python-semantic-release/commit/40450375c7951dafddb09bef8001db7180d95f3a +.. _7792388: https://github.com/python-semantic-release/python-semantic-release/commit/77923885c585171e8888aacde989837ecbabf3fc +.. _cf785ca: https://github.com/python-semantic-release/python-semantic-release/commit/cf785ca79a49eb4ee95c148e0ae6a19e230e915c +.. _f1ef4ec: https://github.com/python-semantic-release/python-semantic-release/commit/f1ef4ecf5f22684a870b958f87d1ca2650e612db +.. _PR#1112: https://github.com/python-semantic-release/python-semantic-release/pull/1112 +.. _PR#1146: https://github.com/python-semantic-release/python-semantic-release/pull/1146 +.. _PR#1147: https://github.com/python-semantic-release/python-semantic-release/pull/1147 +.. _PR#1151: https://github.com/python-semantic-release/python-semantic-release/pull/1151 +.. _PR#1152: https://github.com/python-semantic-release/python-semantic-release/pull/1152 + + +.. _changelog-v9.16.1: + +v9.16.1 (2025-01-12) +==================== + +🪲 Bug Fixes +------------ + +* **parser-custom**: Handle relative parent directory paths to module file better (`PR#1142`_, + `c4056fc`_) + +📖 Documentation +---------------- + +* **github-actions**: Update PSR versions in github workflow examples (`PR#1140`_, `9bdd626`_) + +.. _9bdd626: https://github.com/python-semantic-release/python-semantic-release/commit/9bdd626bf8f8359d35725cebe803931063260cac +.. _c4056fc: https://github.com/python-semantic-release/python-semantic-release/commit/c4056fc2e1fb3bddb78728793716ac6fb8522b1a +.. _PR#1140: https://github.com/python-semantic-release/python-semantic-release/pull/1140 +.. _PR#1142: https://github.com/python-semantic-release/python-semantic-release/pull/1142 + + +.. _changelog-v9.16.0: + +v9.16.0 (2025-01-12) +==================== + +✨ Features +----------- + +* **config**: Expand dynamic parser import to handle a filepath to module (`PR#1135`_, `0418fd8`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Fixes PSR release commit exclusions for customized commit messages (`PR#1139`_, + `f9a2078`_) + +* **cmd-version**: Fixes ``--print-tag`` result to match configured tag format (`PR#1134`_, + `a990aa7`_) + +* **cmd-version**: Fixes tag format on default version when force bump for initial release, closes + `#1137`_ (`PR#1138`_, `007fd00`_) + +* **config-changelog**: Validate ``changelog.exclude_commit_patterns`` on config load (`PR#1139`_, + `f9a2078`_) + +📖 Documentation +---------------- + +* **commit-parsing**: Add the new custom parser import spec description for direct path imports, + closes `#687`_ (`PR#1135`_, `0418fd8`_) + +* **configuration**: Adjust ``commit_parser`` option definition for direct path imports (`PR#1135`_, + `0418fd8`_) + +.. _#687: https://github.com/python-semantic-release/python-semantic-release/issues/687 +.. _#1137: https://github.com/python-semantic-release/python-semantic-release/issues/1137 +.. _007fd00: https://github.com/python-semantic-release/python-semantic-release/commit/007fd00a3945ed211ece4baab0b79ad93dc018f5 +.. _0418fd8: https://github.com/python-semantic-release/python-semantic-release/commit/0418fd8d27aac14925aafa50912e751e3aeff2f7 +.. _a990aa7: https://github.com/python-semantic-release/python-semantic-release/commit/a990aa7ab0a9d52d295c04d54d20e9c9f2db2ca5 +.. _f9a2078: https://github.com/python-semantic-release/python-semantic-release/commit/f9a20787437d0f26074fe2121bf0a29576a96df0 +.. _PR#1134: https://github.com/python-semantic-release/python-semantic-release/pull/1134 +.. _PR#1135: https://github.com/python-semantic-release/python-semantic-release/pull/1135 +.. _PR#1138: https://github.com/python-semantic-release/python-semantic-release/pull/1138 +.. _PR#1139: https://github.com/python-semantic-release/python-semantic-release/pull/1139 + + +.. _changelog-v9.15.2: + +v9.15.2 (2024-12-16) +==================== + +🪲 Bug Fixes +------------ + +* **changelog**: Ensures user rendered files are trimmed to end with a single newline (`PR#1118`_, + `6dfbbb0`_) + +* **cli**: Add error message of how to gather full error output (`PR#1116`_, `ba85532`_) + +* **cmd-version**: Enable maintenance prereleases (`PR#864`_, `b88108e`_) + +* **cmd-version**: Fix handling of multiple prerelease token variants & git flow merges (`PR#1120`_, + `8784b9a`_) + +* **cmd-version**: Fix version determination algorithm to capture commits across merged branches + (`PR#1120`_, `8784b9a`_) + +* **cmd-version**: Forces tag timestamp to be same time as release commit (`PR#1117`_, `7898b11`_) + +* **cmd-version**: Handle multiple prerelease token variants properly, closes `#789`_ (`PR#1120`_, + `8784b9a`_) + +* **config**: Ensure default config loads on network mounted windows environments, closes `#1123`_ + (`PR#1124`_, `a64cbc9`_) + +* **version**: Remove some excessive log msgs from debug to silly level (`PR#1120`_, `8784b9a`_) + +* **version-bump**: Increment based on current commit's history only, closes `#861`_ (`PR#864`_, + `b88108e`_) + +⚡ Performance Improvements +--------------------------- + +* **cmd-version**: Refactor version determination algorithm for accuracy & speed (`PR#1120`_, + `8784b9a`_) + +.. _#789: https://github.com/python-semantic-release/python-semantic-release/issues/789 +.. _#861: https://github.com/python-semantic-release/python-semantic-release/issues/861 +.. _#1123: https://github.com/python-semantic-release/python-semantic-release/issues/1123 +.. _6dfbbb0: https://github.com/python-semantic-release/python-semantic-release/commit/6dfbbb0371aef6b125cbcbf89b80dc343ed97360 +.. _7898b11: https://github.com/python-semantic-release/python-semantic-release/commit/7898b1185fc1ad10e96bf3f5e48d9473b45d2b51 +.. _8784b9a: https://github.com/python-semantic-release/python-semantic-release/commit/8784b9ad4bc59384f855b5af8f1b8fb294397595 +.. _a64cbc9: https://github.com/python-semantic-release/python-semantic-release/commit/a64cbc96c110e32f1ec5d1a7b61e950472491b87 +.. _b88108e: https://github.com/python-semantic-release/python-semantic-release/commit/b88108e189e1894e36ae4fdf8ad8a382b5c8c90a +.. _ba85532: https://github.com/python-semantic-release/python-semantic-release/commit/ba85532ddd6fcf1a2205f7ce0b88ea5be76cb621 +.. _PR#864: https://github.com/python-semantic-release/python-semantic-release/pull/864 +.. _PR#1116: https://github.com/python-semantic-release/python-semantic-release/pull/1116 +.. _PR#1117: https://github.com/python-semantic-release/python-semantic-release/pull/1117 +.. _PR#1118: https://github.com/python-semantic-release/python-semantic-release/pull/1118 +.. _PR#1120: https://github.com/python-semantic-release/python-semantic-release/pull/1120 +.. _PR#1124: https://github.com/python-semantic-release/python-semantic-release/pull/1124 + + +.. _changelog-v9.15.1: + +v9.15.1 (2024-12-03) +==================== + +🪲 Bug Fixes +------------ + +* **changelog-md**: Fix commit sort of breaking descriptions section (`75b342e`_) + +* **parser-angular**: Ensure issues are sorted by numeric value rather than text sorted (`3858add`_) + +* **parser-emoji**: Ensure issues are sorted by numeric value rather than text sorted (`7b8d2d9`_) + +.. _3858add: https://github.com/python-semantic-release/python-semantic-release/commit/3858add582fe758dc2ae967d0cd051d43418ecd0 +.. _75b342e: https://github.com/python-semantic-release/python-semantic-release/commit/75b342e6259412cb82d8b7663e5ee4536d14f407 +.. _7b8d2d9: https://github.com/python-semantic-release/python-semantic-release/commit/7b8d2d92e135ab46d1be477073ccccc8c576f121 + + +.. _changelog-v9.15.0: + +v9.15.0 (2024-12-02) +==================== + +✨ Features +----------- + +* **changelog-md**: Add a breaking changes section to default Markdown template, closes `#244`_ + (`PR#1110`_, `4fde30e`_) + +* **changelog-md**: Alphabetize breaking change descriptions in markdown changelog template + (`PR#1110`_, `4fde30e`_) + +* **changelog-md**: Alphabetize commit summaries & scopes in markdown changelog template + (`PR#1111`_, `8327068`_) + +* **changelog-rst**: Add a breaking changes section to default reStructuredText template, closes + `#244`_ (`PR#1110`_, `4fde30e`_) + +* **changelog-rst**: Alphabetize breaking change descriptions in ReStructuredText template + (`PR#1110`_, `4fde30e`_) + +* **changelog-rst**: Alphabetize commit summaries & scopes in ReStructuredText template (`PR#1111`_, + `8327068`_) + +* **commit-parser**: Enable parsers to flag commit to be ignored for changelog, closes `#778`_ + (`PR#1108`_, `0cc668c`_) + +* **default-changelog**: Add a separate formatted breaking changes section, closes `#244`_ + (`PR#1110`_, `4fde30e`_) + +* **default-changelog**: Alphabetize commit summaries & scopes in change sections (`PR#1111`_, + `8327068`_) + +* **parsers**: Add ``other_allowed_tags`` option for commit parser options (`PR#1109`_, `f90b8dc`_) + +* **parsers**: Enable parsers to identify linked issues on a commit (`PR#1109`_, `f90b8dc`_) + +* **parser-angular**: Automatically parse angular issue footers from commit messages (`PR#1109`_, + `f90b8dc`_) + +* **parser-custom**: Enable custom parsers to identify linked issues on a commit (`PR#1109`_, + `f90b8dc`_) + +* **parser-emoji**: Parse issue reference footers from commit messages (`PR#1109`_, `f90b8dc`_) + +* **release-notes**: Add tag comparison link to release notes when supported (`PR#1107`_, + `9073344`_) + +🪲 Bug Fixes +------------ + +* **cmd-version**: Ensure release utilizes a timezone aware datetime (`ca817ed`_) + +* **default-changelog**: Alphabetically sort commit descriptions in version type sections + (`bdaaf5a`_) + +* **util**: Prevent git footers from being collapsed during parse (`PR#1109`_, `f90b8dc`_) + +📖 Documentation +---------------- + +* **api-parsers**: Add option documentation to parser options (`PR#1109`_, `f90b8dc`_) + +* **changelog-templates**: Update examples using new ``commit.linked_issues`` attribute (`PR#1109`_, + `f90b8dc`_) + +* **commit-parsing**: Improve & expand commit parsing w/ parser descriptions (`PR#1109`_, + `f90b8dc`_) + +.. _#244: https://github.com/python-semantic-release/python-semantic-release/issues/244 +.. _#778: https://github.com/python-semantic-release/python-semantic-release/issues/778 +.. _0cc668c: https://github.com/python-semantic-release/python-semantic-release/commit/0cc668c36490401dff26bb2c3141f6120a2c47d0 +.. _4fde30e: https://github.com/python-semantic-release/python-semantic-release/commit/4fde30e0936ecd186e448f1caf18d9ba377c55ad +.. _8327068: https://github.com/python-semantic-release/python-semantic-release/commit/83270683fd02b626ed32179d94fa1e3c7175d113 +.. _9073344: https://github.com/python-semantic-release/python-semantic-release/commit/9073344164294360843ef5522e7e4c529985984d +.. _bdaaf5a: https://github.com/python-semantic-release/python-semantic-release/commit/bdaaf5a460ca77edc40070ee799430122132dc45 +.. _ca817ed: https://github.com/python-semantic-release/python-semantic-release/commit/ca817ed9024cf84b306a047675534cc36dc116b2 +.. _f90b8dc: https://github.com/python-semantic-release/python-semantic-release/commit/f90b8dc6ce9f112ef2c98539d155f9de24398301 +.. _PR#1107: https://github.com/python-semantic-release/python-semantic-release/pull/1107 +.. _PR#1108: https://github.com/python-semantic-release/python-semantic-release/pull/1108 +.. _PR#1109: https://github.com/python-semantic-release/python-semantic-release/pull/1109 +.. _PR#1110: https://github.com/python-semantic-release/python-semantic-release/pull/1110 +.. _PR#1111: https://github.com/python-semantic-release/python-semantic-release/pull/1111 + + +.. _changelog-v9.14.0: + +v9.14.0 (2024-11-11) +==================== + +✨ Features +----------- + +* **changelog**: Add md to rst conversion for markdown inline links (`cb2af1f`_) + +* **changelog**: Define first release w/o change descriptions for default MD template (`fa89dec`_) + +* **changelog**: Define first release w/o change descriptions for default RST template (`e30c94b`_) + +* **changelog**: Prefix scopes on commit descriptions in default template (`PR#1093`_, `560fd2c`_) + +* **changelog-md**: Add markdown inline link format macro (`c6d8211`_) + +* **changelog-md**: Prefix scopes on commit descriptions in Markdown changelog template (`PR#1093`_, + `560fd2c`_) + +* **changelog-rst**: Prefix scopes on commit descriptions in ReStructuredText template (`PR#1093`_, + `560fd2c`_) + +* **configuration**: Add ``changelog.default_templates.mask_initial_release`` option (`595a70b`_) + +* **context**: Add ``mask_initial_release`` setting to changelog context (`6f2ee39`_) + +* **release-notes**: Define first release w/o change descriptions in default template (`83167a3`_) + +🪲 Bug Fixes +------------ + +* **release-notes**: Override default word-wrap to non-wrap for in default template (`99ab99b`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Document new ``mask_initial_release`` changelog context variable + (`f294957`_) + +* **configuration**: Document new ``mask_initial_release`` option usage & effect (`3cabcdc`_) + +* **homepage**: Fix reference to new ci workflow for test status badge (`6760069`_) + +.. _3cabcdc: https://github.com/python-semantic-release/python-semantic-release/commit/3cabcdcd9473e008604e74cc2d304595317e921d +.. _560fd2c: https://github.com/python-semantic-release/python-semantic-release/commit/560fd2c0d58c97318377cb83af899a336d24cfcc +.. _595a70b: https://github.com/python-semantic-release/python-semantic-release/commit/595a70bcbc8fea1f8ccf6c5069c41c35ec4efb8d +.. _6760069: https://github.com/python-semantic-release/python-semantic-release/commit/6760069e7489f50635beb5aedbbeb2cb82b7c584 +.. _6f2ee39: https://github.com/python-semantic-release/python-semantic-release/commit/6f2ee39414b3cf75c0b67dee4db0146bbc1041bb +.. _83167a3: https://github.com/python-semantic-release/python-semantic-release/commit/83167a3dcceb7db16b790e1b0efd5fc75fee8942 +.. _99ab99b: https://github.com/python-semantic-release/python-semantic-release/commit/99ab99bb0ba350ca1913a2bde9696f4242278972 +.. _c6d8211: https://github.com/python-semantic-release/python-semantic-release/commit/c6d8211c859442df17cb41d2ff19fdb7a81cdb76 +.. _cb2af1f: https://github.com/python-semantic-release/python-semantic-release/commit/cb2af1f17cf6c8ae037c6cd8bb8b4d9c019bb47e +.. _e30c94b: https://github.com/python-semantic-release/python-semantic-release/commit/e30c94bffe62b42e8dc6ed4fed6260e57b4d532b +.. _f294957: https://github.com/python-semantic-release/python-semantic-release/commit/f2949577dfb2dbf9c2ac952c1bbcc4ab84da080b +.. _fa89dec: https://github.com/python-semantic-release/python-semantic-release/commit/fa89dec239efbae7544b187f624a998fa9ecc309 +.. _PR#1093: https://github.com/python-semantic-release/python-semantic-release/pull/1093 + + +.. _changelog-v9.13.0: + +v9.13.0 (2024-11-10) +==================== + +✨ Features +----------- + +* **changelog**: Add PR/MR url linking to default Markdown changelog, closes `#924`_, `#953`_ + (`cd8d131`_) + +* **changelog**: Add PR/MR url linking to default reStructuredText template, closes `#924`_, `#953`_ + (`5f018d6`_) + +* **parsed-commit**: Add linked merge requests list to the ``ParsedCommit`` object (`9a91062`_) + +* **parser-angular**: Automatically parse PR/MR numbers from subject lines in commits (`2ac798f`_) + +* **parser-emoji**: Automatically parse PR/MR numbers from subject lines in commits (`bca9909`_) + +* **parser-scipy**: Automatically parse PR/MR numbers from subject lines in commits (`2b3f738`_) + +🪲 Bug Fixes +------------ + +* **changelog-rst**: Ignore unknown parsed commit types in default RST changelog (`77609b1`_) + +* **parser-angular**: Drop the ``breaking`` category but still maintain a major level bump + (`f1ffa54`_) + +* **parsers**: Improve reliability of descriptions after reverse word-wrap (`436374b`_) + +⚡ Performance Improvements +--------------------------- + +* **parser-angular**: Simplify commit parsing type pre-calculation (`a86a28c`_) + +* **parser-emoji**: Increase speed of commit parsing (`2c9c468`_) + +* **parser-scipy**: Increase speed & decrease complexity of commit parsing (`2b661ed`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Add ``linked_merge_request`` field to examples (`d4376bc`_) + +* **changelog-templates**: Fix api class reference links (`7a5bdf2`_) + +* **commit-parsing**: Add ``linked_merge_request`` field to Parsed Commit definition (`ca61889`_) + +.. _#924: https://github.com/python-semantic-release/python-semantic-release/issues/924 +.. _#953: https://github.com/python-semantic-release/python-semantic-release/issues/953 +.. _2ac798f: https://github.com/python-semantic-release/python-semantic-release/commit/2ac798f92e0c13c1db668747f7e35a65b99ae7ce +.. _2b3f738: https://github.com/python-semantic-release/python-semantic-release/commit/2b3f73801f5760bac29acd93db3ffb2bc790cda0 +.. _2b661ed: https://github.com/python-semantic-release/python-semantic-release/commit/2b661ed122a6f0357a6b92233ac1351c54c7794e +.. _2c9c468: https://github.com/python-semantic-release/python-semantic-release/commit/2c9c4685a66feb35cd78571cf05f76344dd6d66a +.. _436374b: https://github.com/python-semantic-release/python-semantic-release/commit/436374b04128d1550467ae97ba90253f1d1b3878 +.. _5f018d6: https://github.com/python-semantic-release/python-semantic-release/commit/5f018d630b4c625bdf6d329b27fd966eba75b017 +.. _77609b1: https://github.com/python-semantic-release/python-semantic-release/commit/77609b1917a00b106ce254e6f6d5edcd1feebba7 +.. _7a5bdf2: https://github.com/python-semantic-release/python-semantic-release/commit/7a5bdf29b3df0f9a1346ea5301d2a7fee953667b +.. _9a91062: https://github.com/python-semantic-release/python-semantic-release/commit/9a9106212d6c240e9d3358e139b4c4694eaf9c4b +.. _a86a28c: https://github.com/python-semantic-release/python-semantic-release/commit/a86a28c5e26ed766cda71d26b9382c392e377c61 +.. _bca9909: https://github.com/python-semantic-release/python-semantic-release/commit/bca9909c1b61fdb1f9ccf823fceb6951cd059820 +.. _ca61889: https://github.com/python-semantic-release/python-semantic-release/commit/ca61889d4ac73e9864fbf637fb87ab2d5bc053ea +.. _cd8d131: https://github.com/python-semantic-release/python-semantic-release/commit/cd8d1310a4000cc79b529fbbdc58933f4c6373c6 +.. _d4376bc: https://github.com/python-semantic-release/python-semantic-release/commit/d4376bc2ae4d3708d501d91211ec3ee3a923e9b5 +.. _f1ffa54: https://github.com/python-semantic-release/python-semantic-release/commit/f1ffa5411892de34cdc842fd55c460a24b6685c6 + + +.. _changelog-v9.12.2: + +v9.12.2 (2024-11-07) +==================== + +🪲 Bug Fixes +------------ + +* **bitbucket**: Fix ``pull_request_url`` filter to ignore an PR prefix gracefully (`PR#1089`_, + `275ec88`_) + +* **cli**: Gracefully capture all exceptions unless in very verbose debug mode (`PR#1088`_, + `13ca44f`_) + +* **gitea**: Fix ``issue_url`` filter to ignore an issue prefix gracefully (`PR#1089`_, `275ec88`_) + +* **gitea**: Fix ``pull_request_url`` filter to ignore an PR prefix gracefully (`PR#1089`_, + `275ec88`_) + +* **github**: Fix ``issue_url`` filter to ignore an issue prefix gracefully (`PR#1089`_, `275ec88`_) + +* **github**: Fix ``pull_request_url`` filter to ignore an PR prefix gracefully (`PR#1089`_, + `275ec88`_) + +* **gitlab**: Fix ``issue_url`` filter to ignore an issue prefix gracefully (`PR#1089`_, `275ec88`_) + +* **gitlab**: Fix ``merge_request_url`` filter to ignore an PR prefix gracefully (`PR#1089`_, + `275ec88`_) + +* **hvcs**: Add flexibility to issue & MR/PR url jinja filters (`PR#1089`_, `275ec88`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Update descriptions of issue & MR/PR url jinja filters (`PR#1089`_, + `275ec88`_) + +.. _13ca44f: https://github.com/python-semantic-release/python-semantic-release/commit/13ca44f4434098331f70e6937684679cf1b4106a +.. _275ec88: https://github.com/python-semantic-release/python-semantic-release/commit/275ec88e6d1637c47065bb752a60017ceba9876c +.. _PR#1088: https://github.com/python-semantic-release/python-semantic-release/pull/1088 +.. _PR#1089: https://github.com/python-semantic-release/python-semantic-release/pull/1089 + + +.. _changelog-v9.12.1: + +v9.12.1 (2024-11-06) +==================== + +🪲 Bug Fixes +------------ + +* **changelog**: Fix raw-inline pattern replacement in ``convert_md_to_rst`` filter (`2dc70a6`_) + +* **cmd-version**: Fix ``--as-prerelease`` when no commit change from last full release (`PR#1076`_, + `3b7b772`_) + +* **release-notes**: Add context variable shorthand ``ctx`` like docs claim & changelog has + (`d618d83`_) + +📖 Documentation +---------------- + +* **contributing**: Update local testing instructions (`74f03d4`_) + +.. _2dc70a6: https://github.com/python-semantic-release/python-semantic-release/commit/2dc70a6106776106b0fba474b0029071317d639f +.. _3b7b772: https://github.com/python-semantic-release/python-semantic-release/commit/3b7b77246100cedd8cc8f289395f7641187ffdec +.. _74f03d4: https://github.com/python-semantic-release/python-semantic-release/commit/74f03d44684b7b2d84f9f5e471425b02f8bf91c3 +.. _d618d83: https://github.com/python-semantic-release/python-semantic-release/commit/d618d83360c4409fc149f70b97c5fe338fa89968 +.. _PR#1076: https://github.com/python-semantic-release/python-semantic-release/pull/1076 + + +.. _changelog-v9.12.0: + +v9.12.0 (2024-10-18) +==================== + +✨ Features +----------- + +* **changelog**: Add ``autofit_text_width`` filter to template environment (`PR#1062`_, `83e4b86`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Ignore commit exclusion when a commit causes a version bump (`e8f886e`_) + +* **parser-angular**: Change ``Fixes`` commit type heading to ``Bug Fixes`` (`PR#1064`_, `09e3a4d`_) + +* **parser-emoji**: Enable the default bump level option (`bc27995`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Add definition & usage of ``autofit_text_width`` template filter + (`PR#1062`_, `83e4b86`_) + +* **commit-parsers**: Add deprecation message for the tag parser (`af94540`_) + +* **configuration**: Add deprecation message for the tag parser (`a83b7e4`_) + +.. _09e3a4d: https://github.com/python-semantic-release/python-semantic-release/commit/09e3a4da6237740de8e9932d742b18d990e9d079 +.. _83e4b86: https://github.com/python-semantic-release/python-semantic-release/commit/83e4b86abd4754c2f95ec2e674f04deb74b9a1e6 +.. _a83b7e4: https://github.com/python-semantic-release/python-semantic-release/commit/a83b7e43e4eaa99790969a6c85f44e01cde80d0a +.. _af94540: https://github.com/python-semantic-release/python-semantic-release/commit/af94540f2b1c63bf8a4dc977d5d0f66176962b64 +.. _bc27995: https://github.com/python-semantic-release/python-semantic-release/commit/bc27995255a96b9d6cc743186e7c35098822a7f6 +.. _e8f886e: https://github.com/python-semantic-release/python-semantic-release/commit/e8f886ef2abe8ceaea0a24a0112b92a167abd6a9 +.. _PR#1062: https://github.com/python-semantic-release/python-semantic-release/pull/1062 +.. _PR#1064: https://github.com/python-semantic-release/python-semantic-release/pull/1064 + + +.. _changelog-v9.11.1: + +v9.11.1 (2024-10-15) +==================== + +🪲 Bug Fixes +------------ + +* **changelog**: Prevent custom template errors when components are in hidden folders (`PR#1060`_, + `a7614b0`_) + +.. _a7614b0: https://github.com/python-semantic-release/python-semantic-release/commit/a7614b0db8ce791e4252209e66f42b5b5275dffd +.. _PR#1060: https://github.com/python-semantic-release/python-semantic-release/pull/1060 + + +.. _changelog-v9.11.0: + +v9.11.0 (2024-10-12) +==================== + +✨ Features +----------- + +* **changelog**: Add ``convert_md_to_rst`` filter to changelog environment (`PR#1055`_, `c2e8831`_) + +* **changelog**: Add default changelog in re-structured text format, closes `#399`_ (`PR#1055`_, + `c2e8831`_) + +* **changelog**: Add default changelog template in reStructuredText format (`PR#1055`_, `c2e8831`_) + +* **config**: Enable default ``changelog.insertion_flag`` based on output format (`PR#1055`_, + `c2e8831`_) + +* **config**: Enable target changelog filename to trigger RST output format, closes `#399`_ + (`PR#1055`_, `c2e8831`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Correct spacing for default markdown template during updates (`PR#1055`_, + `c2e8831`_) + +📖 Documentation +---------------- + +* **changelog**: Clarify the ``convert_md_to_rst`` filter added to the template environment + (`PR#1055`_, `c2e8831`_) + +* **changelog**: Increase detail about configuration options of default changelog creation + (`PR#1055`_, `c2e8831`_) + +* **configuration**: Update ``changelog_file`` with deprecation notice of setting relocation + (`PR#1055`_, `c2e8831`_) + +* **configuration**: Update ``output_format`` description for reStructuredText support (`PR#1055`_, + `c2e8831`_) + +* **configuration**: Update details of ``insertion_flag``'s dynamic defaults with rst (`PR#1055`_, + `c2e8831`_) + +.. _#399: https://github.com/python-semantic-release/python-semantic-release/issues/399 +.. _c2e8831: https://github.com/python-semantic-release/python-semantic-release/commit/c2e883104d3c11e56f229638e988d8b571f86e34 +.. _PR#1055: https://github.com/python-semantic-release/python-semantic-release/pull/1055 + + +.. _changelog-v9.10.1: + +v9.10.1 (2024-10-10) +==================== + +🪲 Bug Fixes +------------ + +* **config**: Handle branch match regex errors gracefully (`PR#1054`_, `4d12251`_) + +.. _4d12251: https://github.com/python-semantic-release/python-semantic-release/commit/4d12251c678a38de6b71cac5b9c1390eb9dd8ad6 +.. _PR#1054: https://github.com/python-semantic-release/python-semantic-release/pull/1054 + + +.. _changelog-v9.10.0: + +v9.10.0 (2024-10-08) +==================== + +✨ Features +----------- + +* **changelog**: Add ``changelog_insertion_flag`` to changelog template context (`PR#1045`_, + `c18c245`_) + +* **changelog**: Add ``changelog_mode`` to changelog template context (`PR#1045`_, `c18c245`_) + +* **changelog**: Add ``prev_changelog_file`` to changelog template context (`PR#1045`_, `c18c245`_) + +* **changelog**: Add ``read_file`` function to changelog template context (`PR#1045`_, `c18c245`_) + +* **changelog**: Add shorthand ``ctx`` variable to changelog template env (`PR#1045`_, `c18c245`_) + +* **changelog**: Modify changelog template to support changelog updates, closes `#858`_ + (`PR#1045`_, `c18c245`_) + +* **config**: Add ``changelog.default_templates.output_format`` config option (`PR#1045`_, + `c18c245`_) + +* **config**: Add ``changelog.insertion_flag`` as configuration option (`PR#1045`_, `c18c245`_) + +* **config**: Add ``changelog.mode`` as configuration option (`PR#1045`_, `c18c245`_) + +* **github-actions**: Add an action ``build`` directive to toggle the ``--skip-build`` option + (`PR#1044`_, `26597e2`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Adjust angular heading names for readability (`PR#1045`_, `c18c245`_) + +* **changelog**: Ensure changelog templates can handle complex directory includes (`PR#1045`_, + `c18c245`_) + +* **changelog**: Only render user templates when files exist (`PR#1045`_, `c18c245`_) + +* **config**: Prevent jinja from autoescaping markdown content by default (`PR#1045`_, `c18c245`_) + +📖 Documentation +---------------- + +* **changelog-templates**: Improve detail & describe new ``changelog.mode="update"`` (`PR#1045`_, + `c18c245`_) + +* **commands**: Update definition of the version commands ``--skip-build`` option (`PR#1044`_, + `26597e2`_) + +* **configuration**: Add ``changelog.mode`` and ``changelog.insertion_flag`` config definitions + (`PR#1045`_, `c18c245`_) + +* **configuration**: Define the new ``changelog.default_templates.output_format`` option + (`PR#1045`_, `c18c245`_) + +* **configuration**: Mark version of configuration setting introduction (`PR#1045`_, `c18c245`_) + +* **configuration**: Standardize all true/false to lowercase ensuring toml-compatibility + (`PR#1045`_, `c18c245`_) + +* **configuration**: Update ``changelog.environment.autoescape`` default to ``false`` to match code + (`PR#1045`_, `c18c245`_) + +* **github-actions**: Add description of the ``build`` input directive (`PR#1044`_, `26597e2`_) + +* **github-actions**: Update primary example with workflow sha controlled pipeline (`14f04df`_) + +* **homepage**: Update custom changelog reference (`PR#1045`_, `c18c245`_) + +.. _#722: https://github.com/python-semantic-release/python-semantic-release/issues/722 +.. _#858: https://github.com/python-semantic-release/python-semantic-release/issues/858 +.. _14f04df: https://github.com/python-semantic-release/python-semantic-release/commit/14f04dffc7366142faecebb162d4449501cbf1fd +.. _26597e2: https://github.com/python-semantic-release/python-semantic-release/commit/26597e24a80a37500264aa95a908ba366699099e +.. _c18c245: https://github.com/python-semantic-release/python-semantic-release/commit/c18c245df51a9778af09b9dc7a315e3f11cdcda0 +.. _PR#1044: https://github.com/python-semantic-release/python-semantic-release/pull/1044 +.. _PR#1045: https://github.com/python-semantic-release/python-semantic-release/pull/1045 + + +.. _changelog-v9.9.0: + +v9.9.0 (2024-09-28) +=================== + +✨ Features +----------- + +* **github-actions**: Add ``is_prerelease`` output to the version action (`PR#1038`_, `6a5d35d`_) + +📖 Documentation +---------------- + +* **automatic-releases**: Drop extraneous github push configuration (`PR#1011`_, `2135c68`_) + +* **github-actions**: Add configuration & description of publish action (`PR#1011`_, `2135c68`_) + +* **github-actions**: Add description of new ``is_prerelease`` output for version action + (`PR#1038`_, `6a5d35d`_) + +* **github-actions**: Clarify & consolidate GitHub Actions usage docs, closes `#907`_ (`PR#1011`_, + `2135c68`_) + +* **github-actions**: Expand descriptions & clarity of actions configs (`PR#1011`_, `2135c68`_) + +* **github-actions**: Revert removal of namespace prefix from examples (`PR#1011`_, `2135c68`_) + +* **homepage**: Remove link to old github config & update token scope config (`PR#1011`_, + `2135c68`_) + +.. _#907: https://github.com/python-semantic-release/python-semantic-release/issues/907 +.. _2135c68: https://github.com/python-semantic-release/python-semantic-release/commit/2135c68ccbdad94378809902b52fcad546efd5b3 +.. _6a5d35d: https://github.com/python-semantic-release/python-semantic-release/commit/6a5d35d0d9124d6a6ee7910711b4154b006b8773 +.. _PR#1011: https://github.com/python-semantic-release/python-semantic-release/pull/1011 +.. _PR#1038: https://github.com/python-semantic-release/python-semantic-release/pull/1038 + + +.. _changelog-v9.8.9: + +v9.8.9 (2024-09-27) +=================== + +🪲 Bug Fixes +------------ + +* **version-cmd**: Ensure ``version_variables`` do not match partial variable names (`PR#1028`_, + `156915c`_) + +* **version-cmd**: Improve ``version_variables`` flexibility w/ quotes (ie. json, yaml, etc) + (`PR#1028`_, `156915c`_) + +* **version-cmd**: Increase ``version_variable`` flexibility with quotations (ie. json, yaml, etc), + closes `#601`_, `#706`_, `#962`_, `#1026`_ (`PR#1028`_, `156915c`_) + +📖 Documentation +---------------- + +* Update docstrings to resolve sphinx failures, closes `#1029`_ (`PR#1030`_, `d84efc7`_) + +* **configuration**: Add clarity to ``version_variables`` usage & limitations (`PR#1028`_, + `156915c`_) + +* **homepage**: Re-structure homepage to be separate from project readme (`PR#1032`_, `2307ed2`_) + +* **README**: Simplify README to point at official docs (`PR#1032`_, `2307ed2`_) + +.. _#1026: https://github.com/python-semantic-release/python-semantic-release/issues/1026 +.. _#1029: https://github.com/python-semantic-release/python-semantic-release/issues/1029 +.. _#601: https://github.com/python-semantic-release/python-semantic-release/issues/601 +.. _#706: https://github.com/python-semantic-release/python-semantic-release/issues/706 +.. _#962: https://github.com/python-semantic-release/python-semantic-release/issues/962 +.. _156915c: https://github.com/python-semantic-release/python-semantic-release/commit/156915c7d759098f65cf9de7c4e980b40b38d5f1 +.. _2307ed2: https://github.com/python-semantic-release/python-semantic-release/commit/2307ed29d9990bf1b6821403a4b8db3365ef8bb5 +.. _d84efc7: https://github.com/python-semantic-release/python-semantic-release/commit/d84efc7719a8679e6979d513d1c8c60904af7384 +.. _PR#1028: https://github.com/python-semantic-release/python-semantic-release/pull/1028 +.. _PR#1030: https://github.com/python-semantic-release/python-semantic-release/pull/1030 +.. _PR#1032: https://github.com/python-semantic-release/python-semantic-release/pull/1032 + + +.. _changelog-v9.8.8: + +v9.8.8 (2024-09-01) +=================== + +🪲 Bug Fixes +------------ + +* **config**: Fix path traversal detection for windows compatibility, closes `#994`_ (`PR#1014`_, + `16e6daa`_) + +📖 Documentation +---------------- + +* **configuration**: Update ``build_command`` env table for windows to use all capital vars + (`0e8451c`_) + +* **github-actions**: Update version in examples to latest version (`3c894ea`_) + +.. _#994: https://github.com/python-semantic-release/python-semantic-release/issues/994 +.. _0e8451c: https://github.com/python-semantic-release/python-semantic-release/commit/0e8451cf9003c6a3bdcae6878039d7d9a23d6d5b +.. _16e6daa: https://github.com/python-semantic-release/python-semantic-release/commit/16e6daaf851ce1eabf5fbd5aa9fe310a8b0f22b3 +.. _3c894ea: https://github.com/python-semantic-release/python-semantic-release/commit/3c894ea8a555d20b454ebf34785e772959bbb4fe +.. _PR#1014: https://github.com/python-semantic-release/python-semantic-release/pull/1014 + + +.. _changelog-v9.8.7: + +v9.8.7 (2024-08-20) +=================== + +🪲 Bug Fixes +------------ + +* Provide ``context.history`` global in release notes templates (`PR#1005`_, `5bd91b4`_) + +* **release-notes**: Fix noop-changelog to print raw release notes (`PR#1005`_, `5bd91b4`_) + +* **release-notes**: Provide ``context.history`` global in release note templates, closes `#984`_ + (`PR#1005`_, `5bd91b4`_) + +📖 Documentation +---------------- + +* Use pinned version for GHA examples (`PR#1004`_, `5fdf761`_) + +* **changelog**: Clarify description of the default changelog generation process (`399fa65`_) + +* **configuration**: Clarify ``changelog_file`` vs ``template_dir`` option usage, closes `#983`_ + (`a7199c8`_) + +* **configuration**: Fix build_command_env table rendering (`PR#996`_, `a5eff0b`_) + +* **github-actions**: Adjust formatting & version warning in code snippets (`PR#1004`_, `5fdf761`_) + +* **github-actions**: Use pinned version for GHA examples, closes `#1003`_ (`PR#1004`_, `5fdf761`_) + +.. _#1003: https://github.com/python-semantic-release/python-semantic-release/issues/1003 +.. _#983: https://github.com/python-semantic-release/python-semantic-release/issues/983 +.. _#984: https://github.com/python-semantic-release/python-semantic-release/issues/984 +.. _399fa65: https://github.com/python-semantic-release/python-semantic-release/commit/399fa6521d5c6c4397b1d6e9b13ea7945ae92543 +.. _5bd91b4: https://github.com/python-semantic-release/python-semantic-release/commit/5bd91b4d7ac33ddf10446f3e66d7d11e0724aeb2 +.. _5fdf761: https://github.com/python-semantic-release/python-semantic-release/commit/5fdf7614c036a77ffb051cd30f57d0a63c062c0d +.. _a5eff0b: https://github.com/python-semantic-release/python-semantic-release/commit/a5eff0bfe41d2fd5d9ead152a132010b718b7772 +.. _a7199c8: https://github.com/python-semantic-release/python-semantic-release/commit/a7199c8cd6041a9de017694302e49b139bbcb034 +.. _PR#1004: https://github.com/python-semantic-release/python-semantic-release/pull/1004 +.. _PR#1005: https://github.com/python-semantic-release/python-semantic-release/pull/1005 +.. _PR#996: https://github.com/python-semantic-release/python-semantic-release/pull/996 + + +.. _changelog-v9.8.6: + +v9.8.6 (2024-07-20) +=================== + +🪲 Bug Fixes +------------ + +* **version-cmd**: Resolve build command execution in powershell (`PR#980`_, `32c8e70`_) + +📖 Documentation +---------------- + +* **configuration**: Correct GHA parameter name for commit email (`PR#981`_, `ce9ffdb`_) + +.. _32c8e70: https://github.com/python-semantic-release/python-semantic-release/commit/32c8e70915634d8e560b470c3cf38c27cebd7ae0 +.. _ce9ffdb: https://github.com/python-semantic-release/python-semantic-release/commit/ce9ffdb82c2358184b288fa18e83a4075f333277 +.. _PR#980: https://github.com/python-semantic-release/python-semantic-release/pull/980 +.. _PR#981: https://github.com/python-semantic-release/python-semantic-release/pull/981 + + +.. _changelog-v9.8.5: + +v9.8.5 (2024-07-06) +=================== + +🪲 Bug Fixes +------------ + +* Enable ``--print-last-released*`` when in detached head or non-release branch (`PR#926`_, + `782c0a6`_) + +* **changelog**: Resolve commit ordering issue when dates are similar (`PR#972`_, `bfda159`_) + +* **version-cmd**: Drop branch restriction for ``--print-last-released*`` opts, closes `#900`_ + (`PR#926`_, `782c0a6`_) + +⚡ Performance Improvements +--------------------------- + +* Improve git history processing for changelog generation (`PR#972`_, `bfda159`_) + +* **changelog**: Improve git history parser changelog generation (`PR#972`_, `bfda159`_) + +.. _#900: https://github.com/python-semantic-release/python-semantic-release/issues/900 +.. _782c0a6: https://github.com/python-semantic-release/python-semantic-release/commit/782c0a6109fb49e168c37f279928c0a4959f8ac6 +.. _bfda159: https://github.com/python-semantic-release/python-semantic-release/commit/bfda1593af59e9e728c584dd88d7927fc52c879f +.. _PR#926: https://github.com/python-semantic-release/python-semantic-release/pull/926 +.. _PR#972: https://github.com/python-semantic-release/python-semantic-release/pull/972 + + +.. _changelog-v9.8.4: + +v9.8.4 (2024-07-04) +=================== + +🪲 Bug Fixes +------------ + +* **changelog-cmd**: Remove usage strings when error occurred, closes `#810`_ (`348a51d`_) + +* **changelog-cmd**: Render default changelog when user template directory exist but is empty + (`bded8de`_) + +* **config**: Prevent path traversal manipulation of target changelog location (`43e35d0`_) + +* **config**: Prevent path traversal manipulation of target changelog location (`3eb3dba`_) + +* **publish-cmd**: Prevent error when provided tag does not exist locally (`16afbbb`_) + +* **publish-cmd**: Remove usage strings when error occurred, closes `#810`_ (`afbb187`_) + +* **version-cmd**: Remove usage strings when error occurred, closes `#810`_ (`a7c17c7`_) + +.. _#810: https://github.com/python-semantic-release/python-semantic-release/issues/810 +.. _16afbbb: https://github.com/python-semantic-release/python-semantic-release/commit/16afbbb8fbc3a97243e96d7573f4ad2eba09aab9 +.. _348a51d: https://github.com/python-semantic-release/python-semantic-release/commit/348a51db8a837d951966aff3789aa0c93d473829 +.. _3eb3dba: https://github.com/python-semantic-release/python-semantic-release/commit/3eb3dbafec4223ee463b90e927e551639c69426b +.. _43e35d0: https://github.com/python-semantic-release/python-semantic-release/commit/43e35d0972e8a29239d18ed079d1e2013342fcbd +.. _a7c17c7: https://github.com/python-semantic-release/python-semantic-release/commit/a7c17c73fd7becb6d0e042e45ff6765605187e2a +.. _afbb187: https://github.com/python-semantic-release/python-semantic-release/commit/afbb187d6d405fdf6765082e2a1cecdcd7d357df +.. _bded8de: https://github.com/python-semantic-release/python-semantic-release/commit/bded8deae6c92f6dde9774802d9f3716a5cb5705 + + +.. _changelog-v9.8.3: + +v9.8.3 (2024-06-18) +=================== + +🪲 Bug Fixes +------------ + +* **parser**: Strip DOS carriage-returns in commits, closes `#955`_ (`PR#956`_, `0b005df`_) + +.. _#955: https://github.com/python-semantic-release/python-semantic-release/issues/955 +.. _0b005df: https://github.com/python-semantic-release/python-semantic-release/commit/0b005df0a8c7730ee0c71453c9992d7b5d2400a4 +.. _PR#956: https://github.com/python-semantic-release/python-semantic-release/pull/956 + + +.. _changelog-v9.8.2: + +v9.8.2 (2024-06-17) +=================== + +🪲 Bug Fixes +------------ + +* **templates**: Suppress extra newlines in default changelog (`PR#954`_, `7b0079b`_) + +.. _7b0079b: https://github.com/python-semantic-release/python-semantic-release/commit/7b0079bf3e17c0f476bff520b77a571aeac469d0 +.. _PR#954: https://github.com/python-semantic-release/python-semantic-release/pull/954 + + +.. _changelog-v9.8.1: + +v9.8.1 (2024-06-05) +=================== + +🪲 Bug Fixes +------------ + +* Improve build cmd env on windows (`PR#942`_, `d911fae`_) + +* **version-cmd**: Pass windows specific env vars to build cmd when on windows (`PR#942`_, + `d911fae`_) + +📖 Documentation +---------------- + +* **configuration**: Define windows specific env vars for build cmd (`PR#942`_, `d911fae`_) + +.. _d911fae: https://github.com/python-semantic-release/python-semantic-release/commit/d911fae993d41a8cb1497fa8b2a7e823576e0f22 +.. _PR#942: https://github.com/python-semantic-release/python-semantic-release/pull/942 + + +.. _changelog-v9.8.0: + +v9.8.0 (2024-05-27) +=================== + +✨ Features +----------- + +* Extend gitlab to edit a previous release if exists (`PR#934`_, `23e02b9`_) + +* **gha**: Configure ssh signed tags in GitHub Action, closes `#936`_ (`PR#937`_, `dfb76b9`_) + +* **hvcs-gitlab**: Enable gitlab to edit a previous release if found (`PR#934`_, `23e02b9`_) + +* **version-cmd**: Add toggle of ``--no-verify`` option to ``git commit`` (`PR#927`_, `1de6f78`_) + +🪲 Bug Fixes +------------ + +* **gitlab**: Adjust release name to mirror other hvcs release names (`PR#934`_, `23e02b9`_) + +* **hvcs-gitlab**: Add tag message to release creation (`PR#934`_, `23e02b9`_) + +📖 Documentation +---------------- + +* **configuration**: Add ``no_git_verify`` description to the configuration page (`PR#927`_, + `1de6f78`_) + +* **migration-v8**: Update version references in migration instructions (`PR#938`_, `d6ba16a`_) + +.. _#936: https://github.com/python-semantic-release/python-semantic-release/issues/936 +.. _1de6f78: https://github.com/python-semantic-release/python-semantic-release/commit/1de6f7834c6d37a74bc53f91609d40793556b52d +.. _23e02b9: https://github.com/python-semantic-release/python-semantic-release/commit/23e02b96dfb2a58f6b4ecf7b7812e4c1bc50573d +.. _d6ba16a: https://github.com/python-semantic-release/python-semantic-release/commit/d6ba16aa8e01bae1a022a9b06cd0b9162c51c345 +.. _dfb76b9: https://github.com/python-semantic-release/python-semantic-release/commit/dfb76b94b859a7f3fa3ad778eec7a86de2874d68 +.. _PR#927: https://github.com/python-semantic-release/python-semantic-release/pull/927 +.. _PR#934: https://github.com/python-semantic-release/python-semantic-release/pull/934 +.. _PR#937: https://github.com/python-semantic-release/python-semantic-release/pull/937 +.. _PR#938: https://github.com/python-semantic-release/python-semantic-release/pull/938 + + +.. _changelog-v9.7.3: + +v9.7.3 (2024-05-15) +=================== + +🪲 Bug Fixes +------------ + +* Enabled ``prerelease-token`` parameter in github action (`PR#929`_, `1bb26b0`_) + +.. _1bb26b0: https://github.com/python-semantic-release/python-semantic-release/commit/1bb26b0762d94efd97c06a3f1b6b10fb76901f6d +.. _PR#929: https://github.com/python-semantic-release/python-semantic-release/pull/929 + + +.. _changelog-v9.7.2: + +v9.7.2 (2024-05-13) +=================== + +🪲 Bug Fixes +------------ + +* Enable user configuration of ``build_command`` env vars (`PR#925`_, `6b5b271`_) + +* **version**: Enable user config of ``build_command`` env variables, closes `#922`_ (`PR#925`_, + `6b5b271`_) + +📖 Documentation +---------------- + +* **configuration**: Clarify TOC & alphabetize configuration descriptions (`19add16`_) + +* **configuration**: Clarify TOC & standardize heading links (`3a41995`_) + +* **configuration**: Document ``build_command_env`` configuration option (`PR#925`_, `6b5b271`_) + +* **CONTRIBUTING**: Update build command definition for developers (`PR#921`_, `b573c4d`_) + +.. _#922: https://github.com/python-semantic-release/python-semantic-release/issues/922 +.. _19add16: https://github.com/python-semantic-release/python-semantic-release/commit/19add16dcfdfdb812efafe2d492a933d0856df1d +.. _3a41995: https://github.com/python-semantic-release/python-semantic-release/commit/3a4199542d0ea4dbf88fa35e11bec41d0c27dd17 +.. _6b5b271: https://github.com/python-semantic-release/python-semantic-release/commit/6b5b271453874b982fbf2827ec1f6be6db1c2cc7 +.. _b573c4d: https://github.com/python-semantic-release/python-semantic-release/commit/b573c4d4a2c212be9bdee918501bb5e046c6a806 +.. _PR#921: https://github.com/python-semantic-release/python-semantic-release/pull/921 +.. _PR#925: https://github.com/python-semantic-release/python-semantic-release/pull/925 + + +.. _changelog-v9.7.1: + +v9.7.1 (2024-05-07) +=================== + +🪲 Bug Fixes +------------ + +* **gha**: Fix missing ``git_committer_*`` definition in action, closes `#918`_ (`PR#919`_, + `ccef9d8`_) + +.. _#918: https://github.com/python-semantic-release/python-semantic-release/issues/918 +.. _ccef9d8: https://github.com/python-semantic-release/python-semantic-release/commit/ccef9d8521be12c0640369b3c3a80b81a7832662 +.. _PR#919: https://github.com/python-semantic-release/python-semantic-release/pull/919 + + +.. _changelog-v9.7.0: + +v9.7.0 (2024-05-06) +=================== + +✨ Features +----------- + +* **version-cmd**: Pass ``NEW_VERSION`` & useful env vars to build command (`ee6b246`_) + +🪲 Bug Fixes +------------ + +* **gha**: Add missing ``tag`` option to GitHub Action definition, closes `#906`_ (`PR#908`_, + `6b24288`_) + +* **gha**: Correct use of ``prerelease`` option for GitHub Action (`PR#914`_, `85e27b7`_) + +📖 Documentation +---------------- + +* **configuration**: Add description of build command available env variables (`c882dc6`_) + +* **gha**: Update GitHub Actions doc with all available options (`PR#914`_, `85e27b7`_) + +⚙️ Build System +---------------- + +* **deps**: Bump GitHub Action container to use ``python3.12``, closes `#801`_ (`PR#914`_, + `85e27b7`_) + +.. _#801: https://github.com/python-semantic-release/python-semantic-release/issues/801 +.. _#906: https://github.com/python-semantic-release/python-semantic-release/issues/906 +.. _6b24288: https://github.com/python-semantic-release/python-semantic-release/commit/6b24288a96302cd6982260e46fad128ec4940da9 +.. _85e27b7: https://github.com/python-semantic-release/python-semantic-release/commit/85e27b7f486e6b0e6cc9e85e101a97e676bc3d60 +.. _c882dc6: https://github.com/python-semantic-release/python-semantic-release/commit/c882dc62b860b2aeaa925c21d1524f4ae25ef567 +.. _ee6b246: https://github.com/python-semantic-release/python-semantic-release/commit/ee6b246df3bb211ab49c8bce075a4c3f6a68ed77 +.. _PR#908: https://github.com/python-semantic-release/python-semantic-release/pull/908 +.. _PR#914: https://github.com/python-semantic-release/python-semantic-release/pull/914 + + +.. _changelog-v9.6.0: + +v9.6.0 (2024-04-29) +=================== + +✨ Features +----------- + +* Changelog filters are specialized per vcs type (`PR#890`_, `76ed593`_) + +* **changelog**: Changelog filters are hvcs focused (`PR#890`_, `76ed593`_) + +* **changelog-context**: Add flag to jinja env for which hvcs is available (`PR#890`_, `76ed593`_) + +* **changelog-gitea**: Add issue url filter to changelog context (`PR#890`_, `76ed593`_) + +* **changelog-github**: Add issue url filter to changelog context (`PR#890`_, `76ed593`_) + +* **version-cmd**: Add ``--as-prerelease`` option to force the next version to be a prerelease, + closes `#639`_ (`PR#647`_, `2acb5ac`_) + +🪲 Bug Fixes +------------ + +* Correct version ``--prerelease`` use & enable ``--as-prerelease`` (`PR#647`_, `2acb5ac`_) + +* **github**: Correct changelog filter for pull request urls (`PR#890`_, `76ed593`_) + +* **parser-custom**: Gracefully handle custom parser import errors (`67f6038`_) + +* **version-cmd**: Correct ``--prerelease`` use, closes `#639`_ (`PR#647`_, `2acb5ac`_) + +📖 Documentation +---------------- + +* **changelog-context**: Explain new hvcs specific context filters (`PR#890`_, `76ed593`_) + +* **commands**: Update version command options definition about prereleases (`PR#647`_, `2acb5ac`_) + +.. _#639: https://github.com/python-semantic-release/python-semantic-release/issues/639 +.. _2acb5ac: https://github.com/python-semantic-release/python-semantic-release/commit/2acb5ac35ae79d7ae25ca9a03fb5c6a4a68b3673 +.. _67f6038: https://github.com/python-semantic-release/python-semantic-release/commit/67f60389e3f6e93443ea108c0e1b4d30126b8e06 +.. _76ed593: https://github.com/python-semantic-release/python-semantic-release/commit/76ed593ea33c851005994f0d1a6a33cc890fb908 +.. _PR#647: https://github.com/python-semantic-release/python-semantic-release/pull/647 +.. _PR#890: https://github.com/python-semantic-release/python-semantic-release/pull/890 + + +.. _changelog-v9.5.0: + +v9.5.0 (2024-04-23) +=================== + +✨ Features +----------- + +* Extend support to on-prem GitHub Enterprise Server (`PR#896`_, `4fcb737`_) + +* **github**: Extend support to on-prem GitHub Enterprise Server, closes `#895`_ (`PR#896`_, + `4fcb737`_) + +.. _#895: https://github.com/python-semantic-release/python-semantic-release/issues/895 +.. _4fcb737: https://github.com/python-semantic-release/python-semantic-release/commit/4fcb737958d95d1a3be24db7427e137b46f5075f +.. _PR#896: https://github.com/python-semantic-release/python-semantic-release/pull/896 + + +.. _changelog-v9.4.2: + +v9.4.2 (2024-04-14) +=================== + +🪲 Bug Fixes +------------ + +* **bitbucket**: Allow insecure http connections if configured (`PR#886`_, `db13438`_) + +* **bitbucket**: Correct url parsing & prevent double url schemes (`PR#676`_, `5cfdb24`_) + +* **config**: Add flag to allow insecure connections (`PR#886`_, `db13438`_) + +* **gitea**: Allow insecure http connections if configured (`PR#886`_, `db13438`_) + +* **gitea**: Correct url parsing & prevent double url schemes (`PR#676`_, `5cfdb24`_) + +* **github**: Allow insecure http connections if configured (`PR#886`_, `db13438`_) + +* **github**: Correct url parsing & prevent double url schemes (`PR#676`_, `5cfdb24`_) + +* **gitlab**: Allow insecure http connections if configured (`PR#886`_, `db13438`_) + +* **gitlab**: Correct url parsing & prevent double url schemes (`PR#676`_, `5cfdb24`_) + +* **hvcs**: Allow insecure http connections if configured (`PR#886`_, `db13438`_) + +* **hvcs**: Prevent double protocol scheme urls in changelogs (`PR#676`_, `5cfdb24`_) + +* **version-cmd**: Handle HTTP exceptions more gracefully (`PR#886`_, `db13438`_) + +📖 Documentation +---------------- + +* **configuration**: Update ``remote`` settings section with missing values, closes `#868`_ + (`PR#886`_, `db13438`_) + +⚙️ Build System +---------------- + +* **deps**: Update rich requirement from ~=12.5 to ~=13.0, closes `#888`_ (`PR#877`_, `4a22a8c`_) + +.. _#868: https://github.com/python-semantic-release/python-semantic-release/issues/868 +.. _#888: https://github.com/python-semantic-release/python-semantic-release/issues/888 +.. _4a22a8c: https://github.com/python-semantic-release/python-semantic-release/commit/4a22a8c1a69bcf7b1ddd6db56e6883c617a892b3 +.. _5cfdb24: https://github.com/python-semantic-release/python-semantic-release/commit/5cfdb248c003a2d2be5fe65fb61d41b0d4c45db5 +.. _db13438: https://github.com/python-semantic-release/python-semantic-release/commit/db1343890f7e0644bc8457f995f2bd62087513d3 +.. _PR#676: https://github.com/python-semantic-release/python-semantic-release/pull/676 +.. _PR#877: https://github.com/python-semantic-release/python-semantic-release/pull/877 +.. _PR#886: https://github.com/python-semantic-release/python-semantic-release/pull/886 + + +.. _changelog-v9.4.1: + +v9.4.1 (2024-04-06) +=================== + +🪲 Bug Fixes +------------ + +* **gh-actions-output**: Fixed trailing newline to match GITHUB_OUTPUT format (`PR#885`_, + `2c7b6ec`_) + +* **gh-actions-output**: Fixed trailing newline to match GITHUB_OUTPUT format, closes `#884`_ + (`PR#885`_, `2c7b6ec`_) + +.. _#884: https://github.com/python-semantic-release/python-semantic-release/issues/884 +.. _2c7b6ec: https://github.com/python-semantic-release/python-semantic-release/commit/2c7b6ec85b6e3182463d7b695ee48e9669a25b3b +.. _PR#885: https://github.com/python-semantic-release/python-semantic-release/pull/885 + + +.. _changelog-v9.4.0: + +v9.4.0 (2024-03-31) +=================== + +✨ Features +----------- + +* **gitea**: Derives gitea api domain from base domain when unspecified (`PR#675`_, `2ee3f8a`_) + +.. _2ee3f8a: https://github.com/python-semantic-release/python-semantic-release/commit/2ee3f8a918d2e5ea9ab64df88f52e62a1f589c38 +.. _PR#675: https://github.com/python-semantic-release/python-semantic-release/pull/675 + + +.. _changelog-v9.3.1: + +v9.3.1 (2024-03-24) +=================== + +🪲 Bug Fixes +------------ + +* **algorithm**: Handle merge-base errors gracefully, closes `#724`_ (`4c998b7`_) + +* **cli-version**: Change implementation to only push the tag we generated, closes `#803`_ + (`8a9da4f`_) + +⚡ Performance Improvements +--------------------------- + +* **algorithm**: Simplify logs & use lookup when searching for commit & tag match (`3690b95`_) + +.. _#724: https://github.com/python-semantic-release/python-semantic-release/issues/724 +.. _#803: https://github.com/python-semantic-release/python-semantic-release/issues/803 +.. _3690b95: https://github.com/python-semantic-release/python-semantic-release/commit/3690b9511de633ab38083de4d2505b6d05853346 +.. _4c998b7: https://github.com/python-semantic-release/python-semantic-release/commit/4c998b77a3fe5e12783d1ab2d47789a10b83f247 +.. _8a9da4f: https://github.com/python-semantic-release/python-semantic-release/commit/8a9da4feb8753e3ab9ea752afa25decd2047675a + + +.. _changelog-v9.3.0: + +v9.3.0 (2024-03-21) +=================== + +✨ Features +----------- + +* **cmd-version**: Changelog available to bundle (`PR#779`_, `37fdb28`_) + +* **cmd-version**: Create changelog prior to build enabling doc bundling (`PR#779`_, `37fdb28`_) + +.. _37fdb28: https://github.com/python-semantic-release/python-semantic-release/commit/37fdb28e0eb886d682b5dea4cc83a7c98a099422 +.. _PR#779: https://github.com/python-semantic-release/python-semantic-release/pull/779 + + +.. _changelog-v9.2.2: + +v9.2.2 (2024-03-19) +=================== + +🪲 Bug Fixes +------------ + +* **cli**: Enable subcommand help even if config is invalid, closes `#840`_ (`91d221a`_) + +.. _#840: https://github.com/python-semantic-release/python-semantic-release/issues/840 +.. _91d221a: https://github.com/python-semantic-release/python-semantic-release/commit/91d221a01266e5ca6de5c73296b0a90987847494 + + +.. _changelog-v9.2.1: + +v9.2.1 (2024-03-19) +=================== + +🪲 Bug Fixes +------------ + +* **parse-git-url**: Handle urls with url-safe special characters (`27cd93a`_) + +.. _27cd93a: https://github.com/python-semantic-release/python-semantic-release/commit/27cd93a0a65ee3787ca51be4c91c48f6ddb4269c + + +.. _changelog-v9.2.0: + +v9.2.0 (2024-03-18) +=================== + +✨ Features +----------- + +* **version**: Add new version print flags to display the last released version and tag (`814240c`_) + +* **version-config**: Add option to disable 0.x.x versions (`dedb3b7`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Make sure default templates render ending in 1 newline (`0b4a45e`_) + +* **changelog-generation**: Fix incorrect release timezone determination (`f802446`_) + +📖 Documentation +---------------- + +* **configuration**: Add description of ``allow-zero-version`` configuration option (`4028f83`_) + +* **configuration**: Clarify the ``major_on_zero`` configuration option (`f7753cd`_) + +⚙️ Build System +---------------- + +* **deps**: Add click-option-group for grouping exclusive flags (`bd892b8`_) + +.. _0b4a45e: https://github.com/python-semantic-release/python-semantic-release/commit/0b4a45e3673d0408016dc8e7b0dce98007a763e3 +.. _4028f83: https://github.com/python-semantic-release/python-semantic-release/commit/4028f8384a0181c8d58c81ae81cf0b241a02a710 +.. _814240c: https://github.com/python-semantic-release/python-semantic-release/commit/814240c7355df95e9be9a6ed31d004b800584bc0 +.. _bd892b8: https://github.com/python-semantic-release/python-semantic-release/commit/bd892b89c26df9fccc9335c84e2b3217e3e02a37 +.. _dedb3b7: https://github.com/python-semantic-release/python-semantic-release/commit/dedb3b765c8530379af61d3046c3bb9c160d54e5 +.. _f7753cd: https://github.com/python-semantic-release/python-semantic-release/commit/f7753cdabd07e276bc001478d605fca9a4b37ec4 +.. _f802446: https://github.com/python-semantic-release/python-semantic-release/commit/f802446bd0693c4c9f6bdfdceae8b89c447827d2 + + +.. _changelog-v9.1.1: + +v9.1.1 (2024-02-25) +=================== + +🪲 Bug Fixes +------------ + +* **parse_git_url**: Fix bad url with dash (`1c25b8e`_) + +.. _1c25b8e: https://github.com/python-semantic-release/python-semantic-release/commit/1c25b8e6f1e43c15ca7d5a59dca0a13767f9bc33 + + +.. _changelog-v9.1.0: + +v9.1.0 (2024-02-14) +=================== + +✨ Features +----------- + +* Add bitbucket hvcs (`bbbbfeb`_) + +🪲 Bug Fixes +------------ + +* Remove unofficial environment variables (`a5168e4`_) + +📖 Documentation +---------------- + +* Add bitbucket authentication (`b78a387`_) + +* Add bitbucket to token table (`56f146d`_) + +* Fix typo (`b240e12`_) + +⚙️ Build System +---------------- + +* **deps**: Bump minimum required ``tomlkit`` to ``>=0.11.0``, closes `#834`_ (`291aace`_) + +.. _#834: https://github.com/python-semantic-release/python-semantic-release/issues/834 +.. _291aace: https://github.com/python-semantic-release/python-semantic-release/commit/291aacea1d0429a3b27e92b0a20b598f43f6ea6b +.. _56f146d: https://github.com/python-semantic-release/python-semantic-release/commit/56f146d9f4c0fc7f2a84ad11b21c8c45e9221782 +.. _a5168e4: https://github.com/python-semantic-release/python-semantic-release/commit/a5168e40b9a14dbd022f62964f382b39faf1e0df +.. _b240e12: https://github.com/python-semantic-release/python-semantic-release/commit/b240e129b180d45c1d63d464283b7dfbcb641d0c +.. _b78a387: https://github.com/python-semantic-release/python-semantic-release/commit/b78a387d8eccbc1a6a424a183254fc576126199c +.. _bbbbfeb: https://github.com/python-semantic-release/python-semantic-release/commit/bbbbfebff33dd24b8aed2d894de958d532eac596 + + +.. _changelog-v9.0.3: + +v9.0.3 (2024-02-08) +=================== + +🪲 Bug Fixes +------------ + +* **algorithm**: Correct bfs to not abort on previously visited node (`02df305`_) + +⚡ Performance Improvements +--------------------------- + +* **algorithm**: Refactor bfs search to use queue rather than recursion (`8b742d3`_) + +.. _02df305: https://github.com/python-semantic-release/python-semantic-release/commit/02df305db43abfc3a1f160a4a52cc2afae5d854f +.. _8b742d3: https://github.com/python-semantic-release/python-semantic-release/commit/8b742d3db6652981a7b5f773a74b0534edc1fc15 + + +.. _changelog-v9.0.2: + +v9.0.2 (2024-02-08) +=================== + +🪲 Bug Fixes +------------ + +* **util**: Properly parse windows line-endings in commit messages, closes `#820`_ (`70193ba`_) + +📖 Documentation +---------------- + +* Remove duplicate note in configuration.rst (`PR#807`_, `fb6f243`_) + +.. _#820: https://github.com/python-semantic-release/python-semantic-release/issues/820 +.. _70193ba: https://github.com/python-semantic-release/python-semantic-release/commit/70193ba117c1a6d3690aed685fee8a734ba174e5 +.. _fb6f243: https://github.com/python-semantic-release/python-semantic-release/commit/fb6f243a141642c02469f1080180ecaf4f3cec66 +.. _PR#807: https://github.com/python-semantic-release/python-semantic-release/pull/807 + + +.. _changelog-v9.0.1: + +v9.0.1 (2024-02-06) +=================== + +🪲 Bug Fixes +------------ + +* **config**: Set commit parser opt defaults based on parser choice (`PR#782`_, `9c594fb`_) + +.. _9c594fb: https://github.com/python-semantic-release/python-semantic-release/commit/9c594fb6efac7e4df2b0bfbd749777d3126d03d7 +.. _PR#782: https://github.com/python-semantic-release/python-semantic-release/pull/782 + + +.. _changelog-v9.0.0: + +v9.0.0 (2024-02-06) +=================== + +♻️ Refactoring +--------------- + +* Drop support for Python 3.7 (`PR#828`_, `ad086f5`_) + +💥 BREAKING CHANGES +-------------------- + +* Removed Python 3.7 specific control flows and made more modern implementations the default + control flow without a bypass or workaround. Will break on Python 3.7 now. If you require Python + 3.7, you should lock your major version at v8. Since we only have enough manpower to maintain the + latest major release, unfortunately there will not be any more updates to v8. + +* We decided to remove support for Python 3.7 because it has been officially deprecated by the + Python Foundation over a year ago and our codebase is starting to have limitations and custom + implementations just to maintain support for 3.7. + +.. _ad086f5: https://github.com/python-semantic-release/python-semantic-release/commit/ad086f5993ae4741d6e20fee618d1bce8df394fb +.. _PR#828: https://github.com/python-semantic-release/python-semantic-release/pull/828 + + +.. _changelog-v8.7.2: + +v8.7.2 (2024-01-03) +=================== + +🪲 Bug Fixes +------------ + +* **lint**: Correct linter errors (`c9556b0`_) + +.. _c9556b0: https://github.com/python-semantic-release/python-semantic-release/commit/c9556b0ca6df6a61e9ce909d18bc5be8b6154bf8 + + +.. _changelog-v8.7.1: + +v8.7.1 (2024-01-03) +=================== + +🪲 Bug Fixes +------------ + +* **cli-generate-config**: Ensure configuration types are always toml parsable (`PR#785`_, + `758e649`_) + +📖 Documentation +---------------- + +* Add note on default envvar behavior (`PR#780`_, `0b07cae`_) + +* **configuration**: Change defaults definition of token default to table (`PR#786`_, `df1df0d`_) + +* **contributing**: Add docs-build, testing conf, & build instructions (`PR#787`_, `011b072`_) + +.. _011b072: https://github.com/python-semantic-release/python-semantic-release/commit/011b0729cba3045b4e7291fd970cb17aad7bae60 +.. _0b07cae: https://github.com/python-semantic-release/python-semantic-release/commit/0b07cae71915c5c82d7784898b44359249542a64 +.. _758e649: https://github.com/python-semantic-release/python-semantic-release/commit/758e64975fe46b961809f35977574729b7c44271 +.. _df1df0d: https://github.com/python-semantic-release/python-semantic-release/commit/df1df0de8bc655cbf8f86ae52aff10efdc66e6d2 +.. _PR#780: https://github.com/python-semantic-release/python-semantic-release/pull/780 +.. _PR#785: https://github.com/python-semantic-release/python-semantic-release/pull/785 +.. _PR#786: https://github.com/python-semantic-release/python-semantic-release/pull/786 +.. _PR#787: https://github.com/python-semantic-release/python-semantic-release/pull/787 + + +.. _changelog-v8.7.0: + +v8.7.0 (2023-12-22) +=================== + +✨ Features +----------- + +* **config**: Enable default environment token per hvcs (`PR#774`_, `26528eb`_) + +.. _26528eb: https://github.com/python-semantic-release/python-semantic-release/commit/26528eb8794d00dfe985812269702fbc4c4ec788 +.. _PR#774: https://github.com/python-semantic-release/python-semantic-release/pull/774 + + +.. _changelog-v8.6.0: + +v8.6.0 (2023-12-22) +=================== + +✨ Features +----------- + +* **utils**: Expand parsable valid git remote url formats (`PR#771`_, `cf75f23`_) + +📖 Documentation +---------------- + +* Minor correction to commit-parsing documentation (`PR#777`_, `245e878`_) + +.. _245e878: https://github.com/python-semantic-release/python-semantic-release/commit/245e878f02d5cafec6baf0493c921c1e396b56e8 +.. _cf75f23: https://github.com/python-semantic-release/python-semantic-release/commit/cf75f237360488ebb0088e5b8aae626e97d9cbdd +.. _PR#771: https://github.com/python-semantic-release/python-semantic-release/pull/771 +.. _PR#777: https://github.com/python-semantic-release/python-semantic-release/pull/777 + + +.. _changelog-v8.5.2: + +v8.5.2 (2023-12-19) +=================== + +🪲 Bug Fixes +------------ + +* **cli**: Gracefully output configuration validation errors (`PR#772`_, `e8c9d51`_) + +.. _e8c9d51: https://github.com/python-semantic-release/python-semantic-release/commit/e8c9d516c37466a5dce75a73766d5be0f9e74627 +.. _PR#772: https://github.com/python-semantic-release/python-semantic-release/pull/772 + + +.. _changelog-v8.5.1: + +v8.5.1 (2023-12-12) +=================== + +🪲 Bug Fixes +------------ + +* **cmd-version**: Handle committing of git-ignored file gracefully (`PR#764`_, `ea89fa7`_) + +* **config**: Cleanly handle repository in detached HEAD state (`PR#765`_, `ac4f9aa`_) + +* **config**: Gracefully fail when repo is in a detached HEAD state (`PR#765`_, `ac4f9aa`_) + +* **version**: Only commit non git-ignored files during version commit (`PR#764`_, `ea89fa7`_) + +📖 Documentation +---------------- + +* **configuration**: Adjust wording and improve clarity (`PR#766`_, `6b2fc8c`_) + +* **configuration**: Fix typo in text (`PR#766`_, `6b2fc8c`_) + +.. _6b2fc8c: https://github.com/python-semantic-release/python-semantic-release/commit/6b2fc8c156e122ee1b43fdb513b2dc3b8fd76724 +.. _ac4f9aa: https://github.com/python-semantic-release/python-semantic-release/commit/ac4f9aacb72c99f2479ae33369822faad011a824 +.. _ea89fa7: https://github.com/python-semantic-release/python-semantic-release/commit/ea89fa72885e15da91687172355426a22c152513 +.. _PR#764: https://github.com/python-semantic-release/python-semantic-release/pull/764 +.. _PR#765: https://github.com/python-semantic-release/python-semantic-release/pull/765 +.. _PR#766: https://github.com/python-semantic-release/python-semantic-release/pull/766 + + +.. _changelog-v8.5.0: + +v8.5.0 (2023-12-07) +=================== + +✨ Features +----------- + +* Allow template directories to contain a '.' at the top-level (`PR#762`_, `07b232a`_) + +.. _07b232a: https://github.com/python-semantic-release/python-semantic-release/commit/07b232a3b34be0b28c6af08aea4852acb1b9bd56 +.. _PR#762: https://github.com/python-semantic-release/python-semantic-release/pull/762 + + +.. _changelog-v8.4.0: + +v8.4.0 (2023-12-07) +=================== + +✨ Features +----------- + +* **cmd-version**: Add ``--tag/--no-tag`` option to version command (`PR#752`_, `de6b9ad`_) + +* **version**: Add ``--no-tag`` option to turn off tag creation (`PR#752`_, `de6b9ad`_) + +🪲 Bug Fixes +------------ + +* **version**: Separate push tags from commit push when not committing changes (`PR#752`_, + `de6b9ad`_) + +📖 Documentation +---------------- + +* **commands**: Update ``version`` subcommand options (`PR#752`_, `de6b9ad`_) + +* **migration**: Fix comments about publish command (`PR#747`_, `90380d7`_) + +.. _90380d7: https://github.com/python-semantic-release/python-semantic-release/commit/90380d797a734dcca5040afc5fa00e3e01f64152 +.. _de6b9ad: https://github.com/python-semantic-release/python-semantic-release/commit/de6b9ad921e697b5ea2bb2ea8f180893cecca920 +.. _PR#747: https://github.com/python-semantic-release/python-semantic-release/pull/747 +.. _PR#752: https://github.com/python-semantic-release/python-semantic-release/pull/752 + + +.. _changelog-v8.3.0: + +v8.3.0 (2023-10-23) +=================== + +✨ Features +----------- + +* **action**: Use composite action for semantic release (`PR#692`_, `4648d87`_) + +.. _4648d87: https://github.com/python-semantic-release/python-semantic-release/commit/4648d87bac8fb7e6cc361b765b4391b30a8caef8 +.. _PR#692: https://github.com/python-semantic-release/python-semantic-release/pull/692 + + +.. _changelog-v8.2.0: + +v8.2.0 (2023-10-23) +=================== + +✨ Features +----------- + +* Allow user customization of release notes template (`PR#736`_, `94a1311`_) + +📖 Documentation +---------------- + +* Add PYTHONPATH mention for commit parser (`3284258`_) + +.. _3284258: https://github.com/python-semantic-release/python-semantic-release/commit/3284258b9fa1a3fe165f336181aff831d50fddd3 +.. _94a1311: https://github.com/python-semantic-release/python-semantic-release/commit/94a131167e1b867f8bc112a042b9766e050ccfd1 +.. _PR#736: https://github.com/python-semantic-release/python-semantic-release/pull/736 + + +.. _changelog-v8.1.2: + +v8.1.2 (2023-10-13) +=================== + +🪲 Bug Fixes +------------ + +* Correct lint errors (`a13a6c3`_) + +* Error when running build command on windows systems (`PR#732`_, `2553657`_) + +.. _2553657: https://github.com/python-semantic-release/python-semantic-release/commit/25536574760b407410f435441da533fafbf94402 +.. _a13a6c3: https://github.com/python-semantic-release/python-semantic-release/commit/a13a6c37e180dc422599939a5725835306c18ff2 +.. _PR#732: https://github.com/python-semantic-release/python-semantic-release/pull/732 + + +.. _changelog-v8.1.1: + +v8.1.1 (2023-09-19) +=================== + +🪲 Bug Fixes +------------ + +* Attribute error when logging non-strings (`PR#711`_, `75e6e48`_) + +.. _75e6e48: https://github.com/python-semantic-release/python-semantic-release/commit/75e6e48129da8238a62d5eccac1ae55d0fee0f9f +.. _PR#711: https://github.com/python-semantic-release/python-semantic-release/pull/711 + + +.. _changelog-v8.1.0: + +v8.1.0 (2023-09-19) +=================== + +✨ Features +----------- + +* Upgrade pydantic to v2 (`PR#714`_, `5a5c5d0`_) + +📖 Documentation +---------------- + +* Fix typos (`PR#708`_, `2698b0e`_) + +* Update project urls (`PR#715`_, `5fd5485`_) + +.. _2698b0e: https://github.com/python-semantic-release/python-semantic-release/commit/2698b0e006ff7e175430b98450ba248ed523b341 +.. _5a5c5d0: https://github.com/python-semantic-release/python-semantic-release/commit/5a5c5d0ee347750d7c417c3242d52e8ada50b217 +.. _5fd5485: https://github.com/python-semantic-release/python-semantic-release/commit/5fd54856dfb6774feffc40d36d5bb0f421f04842 +.. _PR#708: https://github.com/python-semantic-release/python-semantic-release/pull/708 +.. _PR#714: https://github.com/python-semantic-release/python-semantic-release/pull/714 +.. _PR#715: https://github.com/python-semantic-release/python-semantic-release/pull/715 + + +.. _changelog-v8.0.8: + +v8.0.8 (2023-08-26) +=================== + +🪲 Bug Fixes +------------ + +* Dynamic_import() import path split (`PR#686`_, `1007a06`_) + +.. _1007a06: https://github.com/python-semantic-release/python-semantic-release/commit/1007a06d1e16beef6d18f44ff2e0e09921854b54 +.. _PR#686: https://github.com/python-semantic-release/python-semantic-release/pull/686 + + +.. _changelog-v8.0.7: + +v8.0.7 (2023-08-16) +=================== + +🪲 Bug Fixes +------------ + +* Use correct upload url for github (`PR#661`_, `8a515ca`_) + +.. _8a515ca: https://github.com/python-semantic-release/python-semantic-release/commit/8a515caf1f993aa653e024beda2fdb9e629cc42a +.. _PR#661: https://github.com/python-semantic-release/python-semantic-release/pull/661 + + +.. _changelog-v8.0.6: + +v8.0.6 (2023-08-13) +=================== + +🪲 Bug Fixes +------------ + +* **publish**: Improve error message when no tags found (`PR#683`_, `bdc06ea`_) + +.. _bdc06ea: https://github.com/python-semantic-release/python-semantic-release/commit/bdc06ea061c19134d5d74bd9f168700dd5d9bcf5 +.. _PR#683: https://github.com/python-semantic-release/python-semantic-release/pull/683 + + +.. _changelog-v8.0.5: + +v8.0.5 (2023-08-10) +=================== + +🪲 Bug Fixes +------------ + +* Don't warn about vcs token if ignore_token_for_push is true. (`PR#670`_, `f1a54a6`_) + +📖 Documentation +---------------- + +* ``password`` should be ``token``. (`PR#670`_, `f1a54a6`_) + +* Fix typo missing 's' in version_variable[s] in configuration.rst (`PR#668`_, `879186a`_) + +.. _879186a: https://github.com/python-semantic-release/python-semantic-release/commit/879186aa09a3bea8bbe2b472f892cf7c0712e557 +.. _f1a54a6: https://github.com/python-semantic-release/python-semantic-release/commit/f1a54a6c9a05b225b6474d50cd610eca19ec0c34 +.. _PR#668: https://github.com/python-semantic-release/python-semantic-release/pull/668 +.. _PR#670: https://github.com/python-semantic-release/python-semantic-release/pull/670 + + +.. _changelog-v8.0.4: + +v8.0.4 (2023-07-26) +=================== + +🪲 Bug Fixes +------------ + +* **changelog**: Use version as semver tag by default (`PR#653`_, `5984c77`_) + +📖 Documentation +---------------- + +* Add Python 3.11 to classifiers in metadata (`PR#651`_, `5a32a24`_) + +* Clarify usage of assets config option (`PR#655`_, `efa2b30`_) + +.. _5984c77: https://github.com/python-semantic-release/python-semantic-release/commit/5984c7771edc37f0d7d57894adecc2591efc414d +.. _5a32a24: https://github.com/python-semantic-release/python-semantic-release/commit/5a32a24bf4128c39903f0c5d3bd0cb1ccba57e18 +.. _efa2b30: https://github.com/python-semantic-release/python-semantic-release/commit/efa2b3019b41eb427f0e1c8faa21ad10664295d0 +.. _PR#651: https://github.com/python-semantic-release/python-semantic-release/pull/651 +.. _PR#653: https://github.com/python-semantic-release/python-semantic-release/pull/653 +.. _PR#655: https://github.com/python-semantic-release/python-semantic-release/pull/655 + + +.. _changelog-v8.0.3: + +v8.0.3 (2023-07-21) +=================== + +🪲 Bug Fixes +------------ + +* Skip non-parsable versions when calculating next version (`PR#649`_, `88f25ea`_) + +.. _88f25ea: https://github.com/python-semantic-release/python-semantic-release/commit/88f25eae62589cdf53dbc3dfcb167a3ae6cba2d3 +.. _PR#649: https://github.com/python-semantic-release/python-semantic-release/pull/649 + + +.. _changelog-v8.0.2: + +v8.0.2 (2023-07-18) +=================== + +🪲 Bug Fixes +------------ + +* Handle missing configuration (`PR#644`_, `f15753c`_) + +📖 Documentation +---------------- + +* Better description for tag_format usage (`2129b72`_) + +* Clarify v8 breaking changes in GitHub action inputs (`PR#643`_, `cda050c`_) + +* Correct version_toml example in migrating_from_v7.rst (`PR#641`_, `325d5e0`_) + +.. _2129b72: https://github.com/python-semantic-release/python-semantic-release/commit/2129b729837eccc41a33dbb49785a8a30ce6b187 +.. _325d5e0: https://github.com/python-semantic-release/python-semantic-release/commit/325d5e048bd89cb2a94c47029d4878b27311c0f0 +.. _cda050c: https://github.com/python-semantic-release/python-semantic-release/commit/cda050cd9e789d81458157ee240ff99ec65c6f25 +.. _f15753c: https://github.com/python-semantic-release/python-semantic-release/commit/f15753ce652f36cc03b108c667a26ab74bcbf95d +.. _PR#641: https://github.com/python-semantic-release/python-semantic-release/pull/641 +.. _PR#643: https://github.com/python-semantic-release/python-semantic-release/pull/643 +.. _PR#644: https://github.com/python-semantic-release/python-semantic-release/pull/644 + + +.. _changelog-v8.0.1: + +v8.0.1 (2023-07-17) +=================== + +🪲 Bug Fixes +------------ + +* Invalid version in Git history should not cause a release failure (`PR#632`_, `254430b`_) + +📖 Documentation +---------------- + +* Reduce readthedocs formats and add entries to migration from v7 guide (`9b6ddfe`_) + +* **migration**: Fix hyperlink (`PR#631`_, `5fbd52d`_) + +.. _254430b: https://github.com/python-semantic-release/python-semantic-release/commit/254430b5cc5f032016b4c73168f0403c4d87541e +.. _5fbd52d: https://github.com/python-semantic-release/python-semantic-release/commit/5fbd52d7de4982b5689651201a0e07b445158645 +.. _9b6ddfe: https://github.com/python-semantic-release/python-semantic-release/commit/9b6ddfef448f9de30fa2845034f76655d34a9912 +.. _PR#631: https://github.com/python-semantic-release/python-semantic-release/pull/631 +.. _PR#632: https://github.com/python-semantic-release/python-semantic-release/pull/632 + + +.. _changelog-v8.0.0: + +v8.0.0 (2023-07-16) +=================== + +✨ Features +----------- + +* **publish-cmd**: Add ``--post-to-release-tag`` option to control where to publish (`PR#619`_, + `ec30564`_) + +* Make it easier to access commit messages in ParsedCommits (`PR#619`_, `ec30564`_) + +* Remove publication of ``dists/`` to artifact repository (`PR#619`_, `ec30564`_) + +* Rename 'upload' configuration section to 'publish' (`PR#619`_, `ec30564`_) + +* **github-action**: Add GitHub Actions output variables (`PR#619`_, `ec30564`_) + +* **version-cmd**: Add ``--skip-build`` option (`PR#619`_, `ec30564`_) + +* **version-cmd** Add ``--strict`` version mode (`PR#619`_, `ec30564`_) + +🪲 Bug Fixes +------------ + +* Add logging for token auth, use token for push (`PR#619`_, `ec30564`_) + +* Caching for repo owner and name (`PR#619`_, `ec30564`_) + +* Correct assets type in configuration (`PR#619`_, `ec30564`_) + +* Correct assets type-annotation for RuntimeContext (`PR#619`_, `ec30564`_) + +* Correct Dockerfile CLI command and GHA fetch (`PR#619`_, `ec30564`_) + +* Correct handling of build commands (`PR#619`_, `ec30564`_) + +* Correct logic for generating release notes (`PR#619`_, `ec30564`_) + +* Create_or_update_release for Gitlab hvcs (`PR#619`_, `ec30564`_) + +* Make additional attributes available for template authors (`PR#619`_, `ec30564`_) + +* Only call Github Action output callback once defaults are set (`PR#619`_, `ec30564`_) + +* Remove commit amending behavior (`PR#619`_, `ec30564`_) + +* Resolve branch checkout logic in GHA (`PR#619`_, `ec30564`_) + +* Resolve bug in changelog logic, enable upload to pypi (`PR#619`_, `ec30564`_) + +* Resolve loss of tag_format configuration (`PR#619`_, `ec30564`_) + +* **github-action**: Pin Debian version in Dockerfile (`PR#619`_, `ec30564`_) + +* **github-action**: Correct input parsing (`PR#619`_, `ec30564`_) + +* **github-action**: Mark container fs as safe for git to operate on (`PR#619`_, `ec30564`_) + +* **github-action**: Quotation for git config command (`PR#619`_, `ec30564`_) + +* **github-action**: Remove default for 'force' (`PR#619`_, `ec30564`_) + +📖 Documentation +---------------- + +* Convert to Furo theme (`PR#619`_, `ec30564`_) + +* Fix typo (`PR#619`_, `ec30564`_) + +* Remove reference to dist publication (`PR#619`_, `ec30564`_) + +* Update docs with additional required permissions (`PR#619`_, `ec30564`_) + +* **changelog-templates**: fix typo (`PR#619`_, `ec30564`_) + +♻️ Refactoring +--------------- + +* Remove verify-ci command (`PR#619`_, `ec30564`_) + +💥 BREAKING CHANGES +-------------------- + +* numerous breaking changes, see :ref:`upgrade_v8` for more information + +.. _ec30564: https://github.com/python-semantic-release/python-semantic-release/commit/ec30564b4ec732c001d76d3c09ba033066d2b6fe +.. _PR#619: https://github.com/python-semantic-release/python-semantic-release/pull/619 + + +.. _changelog-v7.34.6: + +v7.34.6 (2023-06-17) +==================== + +🪲 Bug Fixes +------------ + +* Relax invoke dependency constraint (`18ea200`_) + +.. _18ea200: https://github.com/python-semantic-release/python-semantic-release/commit/18ea200633fd67e07f3d4121df5aa4c6dd29d154 + + +.. _changelog-v7.34.5: + +v7.34.5 (2023-06-17) +==================== + +🪲 Bug Fixes +------------ + +* Consider empty commits (`PR#608`_, `6f2e890`_) + +.. _6f2e890: https://github.com/python-semantic-release/python-semantic-release/commit/6f2e8909636595d3cb5e858f42c63820cda45974 +.. _PR#608: https://github.com/python-semantic-release/python-semantic-release/pull/608 + + +.. _changelog-v7.34.4: + +v7.34.4 (2023-06-15) +==================== + +🪲 Bug Fixes +------------ + +* Docker build fails installing git (`PR#605`_, `9e3eb97`_) + +.. _9e3eb97: https://github.com/python-semantic-release/python-semantic-release/commit/9e3eb979783bc39ca564c2967c6c77eecba682e6 +.. _PR#605: https://github.com/python-semantic-release/python-semantic-release/pull/605 + + +.. _changelog-v7.34.3: + +v7.34.3 (2023-06-01) +==================== + +🪲 Bug Fixes +------------ + +* Generate markdown linter compliant changelog headers & lists (`PR#597`_, `cc87400`_) + +.. _cc87400: https://github.com/python-semantic-release/python-semantic-release/commit/cc87400d4a823350de7d02dc3172d2488c9517db +.. _PR#597: https://github.com/python-semantic-release/python-semantic-release/pull/597 + + +.. _changelog-v7.34.2: + +v7.34.2 (2023-05-29) +==================== + +🪲 Bug Fixes +------------ + +* Open all files with explicit utf-8 encoding (`PR#596`_, `cb71f35`_) + +.. _cb71f35: https://github.com/python-semantic-release/python-semantic-release/commit/cb71f35c26c1655e675fa735fa880d39a2c8af9c +.. _PR#596: https://github.com/python-semantic-release/python-semantic-release/pull/596 + + +.. _changelog-v7.34.1: + +v7.34.1 (2023-05-28) +==================== + +🪲 Bug Fixes +------------ + +* Generate markdown linter compliant changelog headers & lists (`PR#594`_, `9d9d403`_) + +.. _9d9d403: https://github.com/python-semantic-release/python-semantic-release/commit/9d9d40305c499c907335abe313e3ed122db0b154 +.. _PR#594: https://github.com/python-semantic-release/python-semantic-release/pull/594 + + +.. _changelog-v7.34.0: + +v7.34.0 (2023-05-28) +==================== + +✨ Features +----------- + +* Add option to only parse commits for current working directory (`PR#509`_, `cdf8116`_) + +.. _cdf8116: https://github.com/python-semantic-release/python-semantic-release/commit/cdf8116c1e415363b10a01f541873e04ad874220 +.. _PR#509: https://github.com/python-semantic-release/python-semantic-release/pull/509 + + +.. _changelog-v7.33.5: + +v7.33.5 (2023-05-19) +==================== + +🪲 Bug Fixes +------------ + +* Update docs and default config for gitmoji changes (`PR#590`_, `192da6e`_) + +* Update sphinx dep (`PR#590`_, `192da6e`_) + +📖 Documentation +---------------- + +* Update broken badge and add links (`PR#591`_, `0c23447`_) + +.. _0c23447: https://github.com/python-semantic-release/python-semantic-release/commit/0c234475d27ad887b19170c82deb80293b3a95f1 +.. _192da6e: https://github.com/python-semantic-release/python-semantic-release/commit/192da6e1352298b48630423d50191070a1c5ab24 +.. _PR#590: https://github.com/python-semantic-release/python-semantic-release/pull/590 +.. _PR#591: https://github.com/python-semantic-release/python-semantic-release/pull/591 + + +.. _changelog-v7.33.4: + +v7.33.4 (2023-05-14) +==================== + +🪲 Bug Fixes +------------ + +* If prerelease, publish prerelease (`PR#587`_, `927da9f`_) + +.. _927da9f: https://github.com/python-semantic-release/python-semantic-release/commit/927da9f8feb881e02bc08b33dc559bd8e7fc41ab +.. _PR#587: https://github.com/python-semantic-release/python-semantic-release/pull/587 + + +.. _changelog-v7.33.3: + +v7.33.3 (2023-04-24) +==================== + +🪲 Bug Fixes +------------ + +* Trim emojis from config (`PR#583`_, `02902f7`_) + +* Update Gitmojis according to official node module (`PR#582`_, `806fcfa`_) + +📖 Documentation +---------------- + +* Grammar in ``docs/troubleshooting.rst`` (`PR#557`_, `bbe754a`_) + +* Spelling and grammar in ``travis.rst`` (`PR#556`_, `3a76e9d`_) + +* Update repository name (`PR#559`_, `5cdb05e`_) + +.. _02902f7: https://github.com/python-semantic-release/python-semantic-release/commit/02902f73ee961565c2470c000f00947d9ef06cb1 +.. _3a76e9d: https://github.com/python-semantic-release/python-semantic-release/commit/3a76e9d7505c421009eb3e953c32cccac2e70e07 +.. _5cdb05e: https://github.com/python-semantic-release/python-semantic-release/commit/5cdb05e20f17b12890e1487c42d317dcbadd06c8 +.. _806fcfa: https://github.com/python-semantic-release/python-semantic-release/commit/806fcfa4cfdd3df4b380afd015a68dc90d54215a +.. _bbe754a: https://github.com/python-semantic-release/python-semantic-release/commit/bbe754a3db9ce7132749e7902fe118b52f48ee42 +.. _PR#556: https://github.com/python-semantic-release/python-semantic-release/pull/556 +.. _PR#557: https://github.com/python-semantic-release/python-semantic-release/pull/557 +.. _PR#559: https://github.com/python-semantic-release/python-semantic-release/pull/559 +.. _PR#582: https://github.com/python-semantic-release/python-semantic-release/pull/582 +.. _PR#583: https://github.com/python-semantic-release/python-semantic-release/pull/583 + + +.. _changelog-v7.33.2: + +v7.33.2 (2023-02-17) +==================== + +🪲 Bug Fixes +------------ + +* Inconsistent versioning between print-version and publish (`PR#524`_, `17d60e9`_) + +.. _17d60e9: https://github.com/python-semantic-release/python-semantic-release/commit/17d60e9bf66f62e5845065486c9d5e450f74839a +.. _PR#524: https://github.com/python-semantic-release/python-semantic-release/pull/524 + + +.. _changelog-v7.33.1: + +v7.33.1 (2023-02-01) +==================== + +🪲 Bug Fixes +------------ + +* **action**: Mark container fs as safe for git (`PR#552`_, `2a55f68`_) + +.. _2a55f68: https://github.com/python-semantic-release/python-semantic-release/commit/2a55f68e2b3cb9ffa9204c00ddbf12706af5c070 +.. _PR#552: https://github.com/python-semantic-release/python-semantic-release/pull/552 + + +.. _changelog-v7.33.0: + +v7.33.0 (2023-01-15) +==================== + +✨ Features +----------- + +* Add signing options to action (`31ad5eb`_) + +* Update action with configuration options (`PR#518`_, `4664afe`_) + +* **repository**: Add support for TWINE_CERT, closes `#521`_ (`PR#522`_, `d56e85d`_) + +🪲 Bug Fixes +------------ + +* Changelog release commit search logic (`PR#530`_, `efb3410`_) + +* **github-actions**: Bump Dockerfile to use Python 3.10 image, closes `#533`_ (`PR#536`_, + `8f2185d`_) + +* **action**: Fix environment variable names (`3c66218`_) + +📖 Documentation +---------------- + +* Update documentation (`5cbdad2`_) + +.. _#521: https://github.com/python-semantic-release/python-semantic-release/issues/521 +.. _#533: https://github.com/python-semantic-release/python-semantic-release/issues/533 +.. _31ad5eb: https://github.com/python-semantic-release/python-semantic-release/commit/31ad5eb5a25f0ea703afc295351104aefd66cac1 +.. _3c66218: https://github.com/python-semantic-release/python-semantic-release/commit/3c66218640044adf263fcf9b2714cfc4b99c2e90 +.. _4664afe: https://github.com/python-semantic-release/python-semantic-release/commit/4664afe5f80a04834e398fefb841b166a51d95b7 +.. _5cbdad2: https://github.com/python-semantic-release/python-semantic-release/commit/5cbdad296034a792c9bf05e3700eac4f847eb469 +.. _8f2185d: https://github.com/python-semantic-release/python-semantic-release/commit/8f2185d570b3966b667ac591ae523812e9d2e00f +.. _d56e85d: https://github.com/python-semantic-release/python-semantic-release/commit/d56e85d1f2ac66fb0b59af2178164ca915dbe163 +.. _efb3410: https://github.com/python-semantic-release/python-semantic-release/commit/efb341036196c39b4694ca4bfa56c6b3e0827c6c +.. _PR#518: https://github.com/python-semantic-release/python-semantic-release/pull/518 +.. _PR#522: https://github.com/python-semantic-release/python-semantic-release/pull/522 +.. _PR#530: https://github.com/python-semantic-release/python-semantic-release/pull/530 +.. _PR#536: https://github.com/python-semantic-release/python-semantic-release/pull/536 +.. _PR#541: https://github.com/python-semantic-release/python-semantic-release/pull/541 + + +.. _changelog-v7.32.2: + +v7.32.2 (2022-10-22) +==================== + +🪲 Bug Fixes +------------ + +* Fix changelog generation in tag-mode (`PR#171`_, `482a62e`_) + +📖 Documentation +---------------- + +* Fix code blocks (`PR#506`_, `24b7673`_) + +.. _24b7673: https://github.com/python-semantic-release/python-semantic-release/commit/24b767339fcef1c843f7dd3188900adab05e03b1 +.. _482a62e: https://github.com/python-semantic-release/python-semantic-release/commit/482a62ec374208b2d57675cb0b7f0ab9695849b9 +.. _PR#171: https://github.com/python-semantic-release/python-semantic-release/pull/171 +.. _PR#506: https://github.com/python-semantic-release/python-semantic-release/pull/506 + + +.. _changelog-v7.32.1: + +v7.32.1 (2022-10-07) +==================== + +🪲 Bug Fixes +------------ + +* Corrections for deprecation warnings (`PR#505`_, `d47afb6`_) + +📖 Documentation +---------------- + +* Correct spelling mistakes (`PR#504`_, `3717e0d`_) + +.. _3717e0d: https://github.com/python-semantic-release/python-semantic-release/commit/3717e0d8810f5d683847c7b0e335eeefebbf2921 +.. _d47afb6: https://github.com/python-semantic-release/python-semantic-release/commit/d47afb6516238939e174f946977bf4880062a622 +.. _PR#504: https://github.com/python-semantic-release/python-semantic-release/pull/504 +.. _PR#505: https://github.com/python-semantic-release/python-semantic-release/pull/505 + + +.. _changelog-v7.32.0: + +v7.32.0 (2022-09-25) +==================== + +✨ Features +----------- + +* Add setting for enforcing textual changelog sections, closes `#498`_ (`PR#502`_, `988437d`_) + +📖 Documentation +---------------- + +* Correct documented default behavior for ``commit_version_number`` (`PR#497`_, `ffae2dc`_) + +.. _#498: https://github.com/python-semantic-release/python-semantic-release/issues/498 +.. _988437d: https://github.com/python-semantic-release/python-semantic-release/commit/988437d21e40d3e3b1c95ed66b535bdd523210de +.. _ffae2dc: https://github.com/python-semantic-release/python-semantic-release/commit/ffae2dc68f7f4bc13c5fd015acd43b457e568ada +.. _PR#497: https://github.com/python-semantic-release/python-semantic-release/pull/497 +.. _PR#502: https://github.com/python-semantic-release/python-semantic-release/pull/502 + + +.. _changelog-v7.31.4: + +v7.31.4 (2022-08-23) +==================== + +🪲 Bug Fixes +------------ + +* Account for trailing newlines in commit messages, closes `#490`_ (`PR#495`_, `111b151`_) + +.. _#490: https://github.com/python-semantic-release/python-semantic-release/issues/490 +.. _111b151: https://github.com/python-semantic-release/python-semantic-release/commit/111b1518e8c8e2bd7535bd4c4b126548da384605 +.. _PR#495: https://github.com/python-semantic-release/python-semantic-release/pull/495 + + +.. _changelog-v7.31.3: + +v7.31.3 (2022-08-22) +==================== + +🪲 Bug Fixes +------------ + +* Use ``commit_subject`` when searching for release commits (`PR#488`_, `3849ed9`_) + +.. _3849ed9: https://github.com/python-semantic-release/python-semantic-release/commit/3849ed992c3cff9054b8690bcf59e49768f84f47 +.. _PR#488: https://github.com/python-semantic-release/python-semantic-release/pull/488 + + +.. _changelog-v7.31.2: + +v7.31.2 (2022-07-29) +==================== + +🪲 Bug Fixes +------------ + +* Add better handling of missing changelog placeholder, closes `#454`_ (`e7a0e81`_) + +* Add repo=None when not in git repo, closes `#422`_ (`40be804`_) + +📖 Documentation +---------------- + +* Add example for pyproject.toml (`2a4b8af`_) + +.. _#422: https://github.com/python-semantic-release/python-semantic-release/issues/422 +.. _#454: https://github.com/python-semantic-release/python-semantic-release/issues/454 +.. _2a4b8af: https://github.com/python-semantic-release/python-semantic-release/commit/2a4b8af1c2893a769c02476bb92f760c8522bd7a +.. _40be804: https://github.com/python-semantic-release/python-semantic-release/commit/40be804c09ab8a036fb135c9c38a63f206d2742c +.. _e7a0e81: https://github.com/python-semantic-release/python-semantic-release/commit/e7a0e81c004ade73ed927ba4de8c3e3ccaf0047c + + +.. _changelog-v7.31.1: + +v7.31.1 (2022-07-29) +==================== + +🪲 Bug Fixes +------------ + +* Update git email in action, closes `#473`_ (`0ece6f2`_) + +.. _#473: https://github.com/python-semantic-release/python-semantic-release/issues/473 +.. _0ece6f2: https://github.com/python-semantic-release/python-semantic-release/commit/0ece6f263ff02a17bb1e00e7ed21c490f72e3d00 + + +.. _changelog-v7.31.0: + +v7.31.0 (2022-07-29) +==================== + +✨ Features +----------- + +* Add prerelease-patch and no-prerelease-patch flags for whether to auto-bump prereleases + (`b4e5b62`_) + +* Override repository_url w REPOSITORY_URL env var (`PR#439`_, `cb7578c`_) + +🪲 Bug Fixes +------------ + +* :bug: fix get_current_release_version for tag_only version_source (`cad09be`_) + +.. _b4e5b62: https://github.com/python-semantic-release/python-semantic-release/commit/b4e5b626074f969e4140c75fdac837a0625cfbf6 +.. _cad09be: https://github.com/python-semantic-release/python-semantic-release/commit/cad09be9ba067f1c882379c0f4b28115a287fc2b +.. _cb7578c: https://github.com/python-semantic-release/python-semantic-release/commit/cb7578cf005b8bd65d9b988f6f773e4c060982e3 +.. _PR#439: https://github.com/python-semantic-release/python-semantic-release/pull/439 + + +.. _changelog-v7.30.2: + +v7.30.2 (2022-07-26) +==================== + +🪲 Bug Fixes +------------ + +* Declare additional_options as action inputs (`PR#481`_, `cb5d8c7`_) + +.. _cb5d8c7: https://github.com/python-semantic-release/python-semantic-release/commit/cb5d8c7ce7d013fcfabd7696b5ffb846a8a6f853 +.. _PR#481: https://github.com/python-semantic-release/python-semantic-release/pull/481 + + +.. _changelog-v7.30.1: + +v7.30.1 (2022-07-25) +==================== + +🪲 Bug Fixes +------------ + +* Don't use commit_subject for tag pattern matching (`PR#480`_, `ac3f11e`_) + +.. _ac3f11e: https://github.com/python-semantic-release/python-semantic-release/commit/ac3f11e689f4a290d20b68b9c5c214098eb61b5f +.. _PR#480: https://github.com/python-semantic-release/python-semantic-release/pull/480 + + +.. _changelog-v7.30.0: + +v7.30.0 (2022-07-25) +==================== + +✨ Features +----------- + +* Add ``additional_options`` input for GitHub Action (`PR#477`_, `aea60e3`_) + +🪲 Bug Fixes +------------ + +* Allow empty additional options (`PR#479`_, `c9b2514`_) + +.. _aea60e3: https://github.com/python-semantic-release/python-semantic-release/commit/aea60e3d290c6fe3137bff21e0db1ed936233776 +.. _c9b2514: https://github.com/python-semantic-release/python-semantic-release/commit/c9b2514d3e164b20e78b33f60989d78c2587e1df +.. _PR#477: https://github.com/python-semantic-release/python-semantic-release/pull/477 +.. _PR#479: https://github.com/python-semantic-release/python-semantic-release/pull/479 + + +.. _changelog-v7.29.7: + +v7.29.7 (2022-07-24) +==================== + +🪲 Bug Fixes +------------ + +* Ignore dependency version bumps when parsing version from commit logs (`PR#476`_, `51bcb78`_) + +.. _51bcb78: https://github.com/python-semantic-release/python-semantic-release/commit/51bcb780a9f55fadfaf01612ff65c1f92642c2c1 +.. _PR#476: https://github.com/python-semantic-release/python-semantic-release/pull/476 + + +.. _changelog-v7.29.6: + +v7.29.6 (2022-07-15) +==================== + +🪲 Bug Fixes +------------ + +* Allow changing prerelease tag using CLI flags (`PR#466`_, `395bf4f`_) + +.. _395bf4f: https://github.com/python-semantic-release/python-semantic-release/commit/395bf4f2de73663c070f37cced85162d41934213 +.. _PR#466: https://github.com/python-semantic-release/python-semantic-release/pull/466 + + +.. _changelog-v7.29.5: + +v7.29.5 (2022-07-14) +==================== + +🪲 Bug Fixes +------------ + +* Add packaging module requirement (`PR#469`_, `b99c9fa`_) + +* **publish**: Get version bump for current release (`PR#467`_, `dd26888`_) + +.. _b99c9fa: https://github.com/python-semantic-release/python-semantic-release/commit/b99c9fa88dc25e5ceacb131cd93d9079c4fb2c86 +.. _dd26888: https://github.com/python-semantic-release/python-semantic-release/commit/dd26888a923b2f480303c19f1916647de48b02bf +.. _PR#467: https://github.com/python-semantic-release/python-semantic-release/pull/467 +.. _PR#469: https://github.com/python-semantic-release/python-semantic-release/pull/469 + + +.. _changelog-v7.29.4: + +v7.29.4 (2022-06-29) +==================== + +🪲 Bug Fixes +------------ + +* Add text for empty ValueError (`PR#461`_, `733254a`_) + +.. _733254a: https://github.com/python-semantic-release/python-semantic-release/commit/733254a99320d8c2f964d799ac4ec29737867faa +.. _PR#461: https://github.com/python-semantic-release/python-semantic-release/pull/461 + + +.. _changelog-v7.29.3: + +v7.29.3 (2022-06-26) +==================== + +🪲 Bug Fixes +------------ + +* Ensure that assets can be uploaded successfully on custom GitHub servers (`PR#458`_, `32b516d`_) + +.. _32b516d: https://github.com/python-semantic-release/python-semantic-release/commit/32b516d7aded4afcafe4aa56d6a5a329b3fc371d +.. _PR#458: https://github.com/python-semantic-release/python-semantic-release/pull/458 + + +.. _changelog-v7.29.2: + +v7.29.2 (2022-06-20) +==================== + +🪲 Bug Fixes +------------ + +* Ensure should_bump checks against release version if not prerelease (`PR#457`_, `da0606f`_) + +.. _da0606f: https://github.com/python-semantic-release/python-semantic-release/commit/da0606f0d67ada5f097c704b9423ead3b5aca6b2 +.. _PR#457: https://github.com/python-semantic-release/python-semantic-release/pull/457 + + +.. _changelog-v7.29.1: + +v7.29.1 (2022-06-01) +==================== + +🪲 Bug Fixes +------------ + +* Capture correct release version when patch has more than one digit (`PR#448`_, `426cdc7`_) + +.. _426cdc7: https://github.com/python-semantic-release/python-semantic-release/commit/426cdc7d7e0140da67f33b6853af71b2295aaac2 +.. _PR#448: https://github.com/python-semantic-release/python-semantic-release/pull/448 + + +.. _changelog-v7.29.0: + +v7.29.0 (2022-05-27) +==================== + +✨ Features +----------- + +* Allow using ssh-key to push version while using token to publish to hvcs (`PR#419`_, `7b2dffa`_) + +* **config**: Add ignore_token_for_push param (`PR#419`_, `7b2dffa`_) + +🪲 Bug Fixes +------------ + +* Fix and refactor prerelease (`PR#435`_, `94c9494`_) + +* **test**: Override GITHUB_ACTOR env (`PR#419`_, `7b2dffa`_) + +📖 Documentation +---------------- + +* Add documentation for ignore_token_for_push (`PR#419`_, `7b2dffa`_) + +.. _7b2dffa: https://github.com/python-semantic-release/python-semantic-release/commit/7b2dffadf43c77d5e0eea307aefcee5c7744df5c +.. _94c9494: https://github.com/python-semantic-release/python-semantic-release/commit/94c94942561f85f48433c95fd3467e03e0893ab4 +.. _PR#419: https://github.com/python-semantic-release/python-semantic-release/pull/419 +.. _PR#435: https://github.com/python-semantic-release/python-semantic-release/pull/435 + + +.. _changelog-v7.28.1: + +v7.28.1 (2022-04-14) +==================== + +🪲 Bug Fixes +------------ + +* Fix getting current version when ``version_source=tag_only`` (`PR#437`_, `b247936`_) + +.. _b247936: https://github.com/python-semantic-release/python-semantic-release/commit/b247936a81c0d859a34bf9f17ab8ca6a80488081 +.. _PR#437: https://github.com/python-semantic-release/python-semantic-release/pull/437 + + +.. _changelog-v7.28.0: + +v7.28.0 (2022-04-11) +==================== + +✨ Features +----------- + +* Add ``tag_only`` option for ``version_source``, closes `#354`_ (`PR#436`_, `cf74339`_) + +.. _#354: https://github.com/python-semantic-release/python-semantic-release/issues/354 +.. _cf74339: https://github.com/python-semantic-release/python-semantic-release/commit/cf743395456a86c62679c2c0342502af043bfc3b +.. _PR#436: https://github.com/python-semantic-release/python-semantic-release/pull/436 + + +.. _changelog-v7.27.1: + +v7.27.1 (2022-04-03) +==================== + +🪲 Bug Fixes +------------ + +* **prerelease**: Pass prerelease option to get_current_version (`PR#432`_, `aabab0b`_) + +.. _aabab0b: https://github.com/python-semantic-release/python-semantic-release/commit/aabab0b7ce647d25e0c78ae6566f1132ece9fcb9 +.. _PR#432: https://github.com/python-semantic-release/python-semantic-release/pull/432 + + +.. _changelog-v7.27.0: + +v7.27.0 (2022-03-15) +==================== + +✨ Features +----------- + +* Add git-lfs to docker container (`PR#427`_, `184e365`_) + +.. _184e365: https://github.com/python-semantic-release/python-semantic-release/commit/184e3653932979b82e5a62b497f2a46cbe15ba87 +.. _PR#427: https://github.com/python-semantic-release/python-semantic-release/pull/427 + + +.. _changelog-v7.26.0: + +v7.26.0 (2022-03-07) +==================== + +✨ Features +----------- + +* **publish-cmd**: add ``--prerelease`` cli flag to enable prerelease versioning (`PR#413`_, + `7064265`_) + +* **version-cmd**: add ``--prerelease`` cli flag to enable prerelease versioning (`PR#413`_, + `7064265`_) + +📖 Documentation +---------------- + +* Added basic info about prerelease versioning (`PR#413`_, `7064265`_) + +.. _7064265: https://github.com/python-semantic-release/python-semantic-release/commit/7064265627a2aba09caa2873d823b594e0e23e77 +.. _PR#413: https://github.com/python-semantic-release/python-semantic-release/pull/413 + + +.. _changelog-v7.25.2: + +v7.25.2 (2022-02-24) +==================== + +🪲 Bug Fixes +------------ + +* **gitea**: Use form-data from asset upload (`PR#421`_, `e011944`_) + +.. _e011944: https://github.com/python-semantic-release/python-semantic-release/commit/e011944987885f75b80fe16a363f4befb2519a91 +.. _PR#421: https://github.com/python-semantic-release/python-semantic-release/pull/421 + + +.. _changelog-v7.25.1: + +v7.25.1 (2022-02-23) +==================== + +🪲 Bug Fixes +------------ + +* **gitea**: Build status and asset upload (`PR#420`_, `57db81f`_) + +* **gitea**: Handle list build status response (`PR#420`_, `57db81f`_) + +.. _57db81f: https://github.com/python-semantic-release/python-semantic-release/commit/57db81f4c6b96da8259e3bad9137eaccbcd10f6e +.. _PR#420: https://github.com/python-semantic-release/python-semantic-release/pull/420 + + +.. _changelog-v7.25.0: + +v7.25.0 (2022-02-17) +==================== + +✨ Features +----------- + +* **hvcs**: Add gitea support (`PR#412`_, `b7e7936`_) + +📖 Documentation +---------------- + +* Document tag_commit, closes `#410`_ (`b631ca0`_) + + +.. _#410: https://github.com/python-semantic-release/python-semantic-release/issues/410 +.. _b631ca0: https://github.com/python-semantic-release/python-semantic-release/commit/b631ca0a79cb2d5499715d43688fc284cffb3044 +.. _b7e7936: https://github.com/python-semantic-release/python-semantic-release/commit/b7e7936331b7939db09abab235c8866d800ddc1a +.. _PR#412: https://github.com/python-semantic-release/python-semantic-release/pull/412 + + +.. _changelog-v7.24.0: + +v7.24.0 (2022-01-24) +==================== + +✨ Features +----------- + +* Include additional changes in release commits (`3e34f95`_) + +.. _3e34f95: https://github.com/python-semantic-release/python-semantic-release/commit/3e34f957ff5a3ec6e6f984cc4a79a38ce4391ea9 + + +.. _changelog-v7.23.0: + +v7.23.0 (2021-11-30) +==================== + +✨ Features +----------- + +* Support Github Enterprise server (`b4e01f1`_) + +.. _b4e01f1: https://github.com/python-semantic-release/python-semantic-release/commit/b4e01f1b7e841263fa84f57f0ac331f7c0b31954 + + +.. _changelog-v7.22.0: + +v7.22.0 (2021-11-21) +==================== + +✨ Features +----------- + +* **parser_angular**: Allow customization in parser (`298eebb`_) + +🪲 Bug Fixes +------------ + +* Address PR feedback for ``parser_angular.py`` (`f7bc458`_) + +.. _298eebb: https://github.com/python-semantic-release/python-semantic-release/commit/298eebbfab5c083505036ba1df47a5874a1eed6e +.. _f7bc458: https://github.com/python-semantic-release/python-semantic-release/commit/f7bc45841e6a5c762f99f936c292cee25fabcd02 + + +.. _changelog-v7.21.0: + +v7.21.0 (2021-11-21) +==================== + +✨ Features +----------- + +* Use gitlab-ci or github actions env vars, closes `#363`_ (`8ca8dd4`_) + +🪲 Bug Fixes +------------ + +* Remove invalid repository exception (`746b62d`_) + +.. _#363: https://github.com/python-semantic-release/python-semantic-release/issues/363 +.. _746b62d: https://github.com/python-semantic-release/python-semantic-release/commit/746b62d4e207a5d491eecd4ca96d096eb22e3bed +.. _8ca8dd4: https://github.com/python-semantic-release/python-semantic-release/commit/8ca8dd40f742f823af147928bd75a9577c50d0fd + + +.. _changelog-v7.20.0: + +v7.20.0 (2021-11-21) +==================== + +✨ Features +----------- + +* Allow custom environment variable names (`PR#392`_, `372cda3`_) + +* Rewrite Twine adapter for uploading to artifact repositories (`cfb20af`_) + +🪲 Bug Fixes +------------ + +* Don't use linux commands on windows (`PR#393`_, `5bcccd2`_) + +* Mypy errors in vcs_helpers (`13ca0fe`_) + +* Skip removing the build folder if it doesn't exist (`8e79fdc`_) + +📖 Documentation +---------------- + +* Clean typos and add section for repository upload (`1efa18a`_) + +.. _13ca0fe: https://github.com/python-semantic-release/python-semantic-release/commit/13ca0fe650125be2f5e953f6193fdc4d44d3c75a +.. _1efa18a: https://github.com/python-semantic-release/python-semantic-release/commit/1efa18a3a55134d6bc6e4572ab025e24082476cd +.. _372cda3: https://github.com/python-semantic-release/python-semantic-release/commit/372cda3497f16ead2209e6e1377d38f497144883 +.. _5bcccd2: https://github.com/python-semantic-release/python-semantic-release/commit/5bcccd21cc8be3289db260e645fec8dc6a592abd +.. _8e79fdc: https://github.com/python-semantic-release/python-semantic-release/commit/8e79fdc107ffd852a91dfb5473e7bd1dfaba4ee5 +.. _cfb20af: https://github.com/python-semantic-release/python-semantic-release/commit/cfb20af79a8e25a77aee9ff72deedcd63cb7f62f +.. _PR#392: https://github.com/python-semantic-release/python-semantic-release/pull/392 +.. _PR#393: https://github.com/python-semantic-release/python-semantic-release/pull/393 + + +.. _changelog-v7.19.2: + +v7.19.2 (2021-09-04) +==================== + +🪲 Bug Fixes +------------ + +* Fixed ImproperConfig import error (`PR#377`_, `b011a95`_) + +.. _b011a95: https://github.com/python-semantic-release/python-semantic-release/commit/b011a9595df4240cb190bfb1ab5b6d170e430dfc +.. _PR#377: https://github.com/python-semantic-release/python-semantic-release/pull/377 + + +.. _changelog-v7.19.1: + +v7.19.1 (2021-08-17) +==================== + +🪲 Bug Fixes +------------ + +* Add get_formatted_tag helper instead of hardcoded v-prefix in the git tags (`1a354c8`_) + +.. _1a354c8: https://github.com/python-semantic-release/python-semantic-release/commit/1a354c86abad77563ebce9a6944256461006f3c7 + + +.. _changelog-v7.19.0: + +v7.19.0 (2021-08-16) +==================== + +✨ Features +----------- + +* Custom git tag format support (`PR#373`_, `1d76632`_) + +📖 Documentation +---------------- + +* **configuration**: define ``tag_format`` usage & resulting effect (`PR#373`_, `1d76632`_) + +* **parser**: Documentation for scipy-parser (`45ee34a`_) + +.. _1d76632: https://github.com/python-semantic-release/python-semantic-release/commit/1d76632043bf0b6076d214a63c92013624f4b95e +.. _45ee34a: https://github.com/python-semantic-release/python-semantic-release/commit/45ee34aa21443860a6c2cd44a52da2f353b960bf +.. _PR#373: https://github.com/python-semantic-release/python-semantic-release/pull/373 + + +.. _changelog-v7.18.0: + +v7.18.0 (2021-08-09) +==================== + +✨ Features +----------- + +* Add support for non-prefixed tags (`PR#366`_, `0fee4dd`_) + +📖 Documentation +---------------- + +* Clarify second argument of ParsedCommit (`086ddc2`_) + +.. _086ddc2: https://github.com/python-semantic-release/python-semantic-release/commit/086ddc28f06522453328f5ea94c873bd202ff496 +.. _0fee4dd: https://github.com/python-semantic-release/python-semantic-release/commit/0fee4ddb5baaddf85ed6b76e76a04474a5f97d0a +.. _PR#366: https://github.com/python-semantic-release/python-semantic-release/pull/366 + + +.. _changelog-v7.17.0: + +v7.17.0 (2021-08-07) +==================== + +✨ Features +----------- + +* **parser**: Add scipy style parser (`PR#369`_, `51a3921`_) + +.. _51a3921: https://github.com/python-semantic-release/python-semantic-release/commit/51a39213ea120c4bbd7a57b74d4f0cc3103da9f5 +.. _PR#369: https://github.com/python-semantic-release/python-semantic-release/pull/369 + + +.. _changelog-v7.16.4: + +v7.16.4 (2021-08-03) +==================== + +🪲 Bug Fixes +------------ + +* Correct rendering of gitlab issue references, closes `#358`_ (`07429ec`_) + +.. _#358: https://github.com/python-semantic-release/python-semantic-release/issues/358 +.. _07429ec: https://github.com/python-semantic-release/python-semantic-release/commit/07429ec4a32d32069f25ec77b4bea963bd5d2a00 + + +.. _changelog-v7.16.3: + +v7.16.3 (2021-07-29) +==================== + +🪲 Bug Fixes +------------ + +* Print right info if token is not set, closes `#360`_ (`PR#361`_, `a275a7a`_) + +.. _#360: https://github.com/python-semantic-release/python-semantic-release/issues/360 +.. _a275a7a: https://github.com/python-semantic-release/python-semantic-release/commit/a275a7a17def85ff0b41d254e4ee42772cce1981 +.. _PR#361: https://github.com/python-semantic-release/python-semantic-release/pull/361 + + +.. _changelog-v7.16.2: + +v7.16.2 (2021-06-25) +==================== + +🪲 Bug Fixes +------------ + +* Use release-api for gitlab (`1ef5cab`_) + +📖 Documentation +---------------- + +* Recommend setting a concurrency group for GitHub Actions (`34b0735`_) + +* Update trove classifiers to reflect supported versions (`PR#344`_, `7578004`_) + +.. _1ef5cab: https://github.com/python-semantic-release/python-semantic-release/commit/1ef5caba2d8dd0f2647bc51ede0ef7152d8b7b8d +.. _34b0735: https://github.com/python-semantic-release/python-semantic-release/commit/34b07357ab3f4f4aa787b71183816ec8aaf334a8 +.. _7578004: https://github.com/python-semantic-release/python-semantic-release/commit/7578004ed4b20c2bd553782443dfd77535faa377 +.. _PR#344: https://github.com/python-semantic-release/python-semantic-release/pull/344 + + +.. _changelog-v7.16.1: + +v7.16.1 (2021-06-08) +==================== + +🪲 Bug Fixes +------------ + +* Tomlkit should stay at 0.7.0 (`769a5f3`_) + +.. _769a5f3: https://github.com/python-semantic-release/python-semantic-release/commit/769a5f31115cdb1f43f19a23fe72b96a8c8ba0fc + + +.. _changelog-v7.16.0: + +v7.16.0 (2021-06-08) +==================== + +✨ Features +----------- + +* Add option to omit tagging (`PR#341`_, `20603e5`_) + +.. _20603e5: https://github.com/python-semantic-release/python-semantic-release/commit/20603e53116d4f05e822784ce731b42e8cbc5d8f +.. _PR#341: https://github.com/python-semantic-release/python-semantic-release/pull/341 + + +.. _changelog-v7.15.6: + +v7.15.6 (2021-06-08) +==================== + +🪲 Bug Fixes +------------ + +* Update click and tomlkit (`PR#339`_, `947ea3b`_) + +.. _947ea3b: https://github.com/python-semantic-release/python-semantic-release/commit/947ea3bc0750735941446cf4a87bae20e750ba12 +.. _PR#339: https://github.com/python-semantic-release/python-semantic-release/pull/339 + + +.. _changelog-v7.15.5: + +v7.15.5 (2021-05-26) +==================== + +🪲 Bug Fixes +------------ + +* Pin tomlkit to 0.7.0 (`2cd0db4`_) + +.. _2cd0db4: https://github.com/python-semantic-release/python-semantic-release/commit/2cd0db4537bb9497b72eb496f6bab003070672ab + + +.. _changelog-v7.15.4: + +v7.15.4 (2021-04-29) +==================== + +🪲 Bug Fixes +------------ + +* Change log level of failed toml loading, closes `#235`_ (`24bb079`_) + +.. _#235: https://github.com/python-semantic-release/python-semantic-release/issues/235 +.. _24bb079: https://github.com/python-semantic-release/python-semantic-release/commit/24bb079cbeff12e7043dd35dd0b5ae03192383bb + + +.. _changelog-v7.15.3: + +v7.15.3 (2021-04-03) +==================== + +🪲 Bug Fixes +------------ + +* Add venv to path in github action (`583c5a1`_) + +.. _583c5a1: https://github.com/python-semantic-release/python-semantic-release/commit/583c5a13e40061fc544b82decfe27a6c34f6d265 + + +.. _changelog-v7.15.2: + +v7.15.2 (2021-04-03) +==================== + +🪲 Bug Fixes +------------ + +* Run semantic-release in virtualenv in the github action, closes `#331`_ (`b508ea9`_) + +* Set correct path for venv in action script (`aac02b5`_) + +* Use absolute path for venv in github action (`d4823b3`_) + +📖 Documentation +---------------- + +* Clarify that HVCS should be lowercase, closes `#330`_ (`da0ab0c`_) + +.. _#330: https://github.com/python-semantic-release/python-semantic-release/issues/330 +.. _#331: https://github.com/python-semantic-release/python-semantic-release/issues/331 +.. _aac02b5: https://github.com/python-semantic-release/python-semantic-release/commit/aac02b5a44a6959328d5879578aa3536bdf856c2 +.. _b508ea9: https://github.com/python-semantic-release/python-semantic-release/commit/b508ea9f411c1cd4f722f929aab9f0efc0890448 +.. _d4823b3: https://github.com/python-semantic-release/python-semantic-release/commit/d4823b3b6b1fcd5c33b354f814643c9aaf85a06a +.. _da0ab0c: https://github.com/python-semantic-release/python-semantic-release/commit/da0ab0c62c4ce2fa0d815e5558aeec1a1e23bc89 + + +.. _changelog-v7.15.1: + +v7.15.1 (2021-03-26) +==================== + +🪲 Bug Fixes +------------ + +* Add support for setting build_command to "false", closes `#328`_ (`520cf1e`_) + +* Upgrade python-gitlab range, closes `#329`_ (`abfacc4`_) + +📖 Documentation +---------------- + +* Add common options to documentation, closes `#327`_ (`20d79a5`_) + +.. _#327: https://github.com/python-semantic-release/python-semantic-release/issues/327 +.. _#328: https://github.com/python-semantic-release/python-semantic-release/issues/328 +.. _#329: https://github.com/python-semantic-release/python-semantic-release/issues/329 +.. _20d79a5: https://github.com/python-semantic-release/python-semantic-release/commit/20d79a51bffa26d40607c1b77d10912992279112 +.. _520cf1e: https://github.com/python-semantic-release/python-semantic-release/commit/520cf1eaa7816d0364407dbd17b5bc7c79806086 +.. _abfacc4: https://github.com/python-semantic-release/python-semantic-release/commit/abfacc432300941d57488842e41c06d885637e6c + + +.. _changelog-v7.15.0: + +v7.15.0 (2021-02-18) +==================== + +✨ Features +----------- + +* Allow the use of .pypirc for twine uploads (`PR#325`_, `6bc56b8`_) + +📖 Documentation +---------------- + +* Add documentation for releasing on a Jenkins instance (`PR#324`_, `77ad988`_) + +.. _6bc56b8: https://github.com/python-semantic-release/python-semantic-release/commit/6bc56b8aa63069a25a828a2d1a9038ecd09b7d5d +.. _77ad988: https://github.com/python-semantic-release/python-semantic-release/commit/77ad988a2057be59e4559614a234d6871c06ee37 +.. _PR#324: https://github.com/python-semantic-release/python-semantic-release/pull/324 +.. _PR#325: https://github.com/python-semantic-release/python-semantic-release/pull/325 + + +.. _changelog-v7.14.0: + +v7.14.0 (2021-02-11) +==================== + +✨ Features +----------- + +* **checks**: Add support for Jenkins CI (`PR#322`_, `3e99855`_) + +📖 Documentation +---------------- + +* Correct casing on proper nouns (`PR#320`_, `d51b999`_) + +* Correcting Python casing (`PR#320`_, `d51b999`_) + +* Correcting Semantic Versioning casing (`PR#320`_, `d51b999`_) + +.. _3e99855: https://github.com/python-semantic-release/python-semantic-release/commit/3e99855c6bc72b3e9a572c58cc14e82ddeebfff8 +.. _d51b999: https://github.com/python-semantic-release/python-semantic-release/commit/d51b999a245a4e56ff7a09d0495c75336f2f150d +.. _PR#320: https://github.com/python-semantic-release/python-semantic-release/pull/320 +.. _PR#322: https://github.com/python-semantic-release/python-semantic-release/pull/322 + + +.. _changelog-v7.13.2: + +v7.13.2 (2021-01-29) +==================== + +🪲 Bug Fixes +------------ + +* Crash when TOML has no PSR section (`PR#319`_, `5f8ab99`_) + +* Fix crash when TOML has no PSR section (`PR#319`_, `5f8ab99`_) + +📖 Documentation +---------------- + +* Fix ``version_toml`` example for Poetry (`PR#318`_, `39acb68`_) + +.. _39acb68: https://github.com/python-semantic-release/python-semantic-release/commit/39acb68bfffe8242040e476893639ba26fa0d6b5 +.. _5f8ab99: https://github.com/python-semantic-release/python-semantic-release/commit/5f8ab99bf7254508f4b38fcddef2bdde8dd15a4c +.. _PR#318: https://github.com/python-semantic-release/python-semantic-release/pull/318 +.. _PR#319: https://github.com/python-semantic-release/python-semantic-release/pull/319 + + +.. _changelog-v7.13.1: + +v7.13.1 (2021-01-26) +==================== + +🪲 Bug Fixes +------------ + +* Use multiline version_pattern match in replace, closes `#306`_ (`PR#315`_, `1a85af4`_) + +.. _#306: https://github.com/python-semantic-release/python-semantic-release/issues/306 +.. _1a85af4: https://github.com/python-semantic-release/python-semantic-release/commit/1a85af434325ce52e11b49895e115f7a936e417e +.. _PR#315: https://github.com/python-semantic-release/python-semantic-release/pull/315 + + +.. _changelog-v7.13.0: + +v7.13.0 (2021-01-26) +==================== + +✨ Features +----------- + +* Support toml files for version declaration, closes `#245`_, `#275`_ (`PR#307`_, `9b62a7e`_) + +.. _#245: https://github.com/python-semantic-release/python-semantic-release/issues/245 +.. _#275: https://github.com/python-semantic-release/python-semantic-release/issues/275 +.. _9b62a7e: https://github.com/python-semantic-release/python-semantic-release/commit/9b62a7e377378667e716384684a47cdf392093fa +.. _PR#307: https://github.com/python-semantic-release/python-semantic-release/pull/307 + + +.. _changelog-v7.12.0: + +v7.12.0 (2021-01-25) +==================== + +✨ Features +----------- + +* **github**: Retry GitHub API requests on failure (`PR#314`_, `ac241ed`_) + +🪲 Bug Fixes +------------ + +* **github**: Add retries to github API requests (`PR#314`_, `ac241ed`_) + +📖 Documentation +---------------- + +* **actions**: Pat must be passed to checkout step too, closes `#311`_ (`e2d8e47`_) + +.. _#311: https://github.com/python-semantic-release/python-semantic-release/issues/311 +.. _ac241ed: https://github.com/python-semantic-release/python-semantic-release/commit/ac241edf4de39f4fc0ff561a749fa85caaf9e2ae +.. _e2d8e47: https://github.com/python-semantic-release/python-semantic-release/commit/e2d8e47d2b02860881381318dcc088e150c0fcde +.. _PR#314: https://github.com/python-semantic-release/python-semantic-release/pull/314 + + +.. _changelog-v7.11.0: + +v7.11.0 (2021-01-08) +==================== + +✨ Features +----------- + +* **print-version**: Add print-version command to output version (`512e3d9`_) + +🪲 Bug Fixes +------------ + +* Add dot to --define option help (`eb4107d`_) + +* Avoid Unknown bump level 0 message (`8ab624c`_) + +* **actions**: Fix github actions with new main location (`6666672`_) + +⚙️ Build System +---------------- + +* Add __main__.py magic file (`e93f36a`_) + +.. _512e3d9: https://github.com/python-semantic-release/python-semantic-release/commit/512e3d92706055bdf8d08b7c82927d3530183079 +.. _6666672: https://github.com/python-semantic-release/python-semantic-release/commit/6666672d3d97ab7cdf47badfa3663f1a69c2dbdf +.. _8ab624c: https://github.com/python-semantic-release/python-semantic-release/commit/8ab624cf3508b57a9656a0a212bfee59379d6f8b +.. _e93f36a: https://github.com/python-semantic-release/python-semantic-release/commit/e93f36a7a10e48afb42c1dc3d860a5e2a07cf353 +.. _eb4107d: https://github.com/python-semantic-release/python-semantic-release/commit/eb4107d2efdf8c885c8ae35f48f1b908d1fced32 + + +.. _changelog-v7.10.0: + +v7.10.0 (2021-01-08) +==================== + +✨ Features +----------- + +* **build**: Allow falsy values for build_command to disable build step (`c07a440`_) + +📖 Documentation +---------------- + +* Fix incorrect reference syntax (`42027f0`_) + +* Rewrite getting started page (`97a9046`_) + +.. _42027f0: https://github.com/python-semantic-release/python-semantic-release/commit/42027f0d2bb64f4c9eaec65112bf7b6f67568e60 +.. _97a9046: https://github.com/python-semantic-release/python-semantic-release/commit/97a90463872502d1207890ae1d9dd008b1834385 +.. _c07a440: https://github.com/python-semantic-release/python-semantic-release/commit/c07a440f2dfc45a2ad8f7c454aaac180c4651f70 + + +.. _changelog-v7.9.0: + +v7.9.0 (2020-12-21) +=================== + +✨ Features +----------- + +* **hvcs**: Add hvcs_domain config option, closes `#277`_ (`ab3061a`_) + +🪲 Bug Fixes +------------ + +* **history**: Coerce version to string (`PR#298`_, `d4cdc3d`_) + +* **history**: Require semver >= 2.10 (`5087e54`_) + +.. _#277: https://github.com/python-semantic-release/python-semantic-release/issues/277 +.. _5087e54: https://github.com/python-semantic-release/python-semantic-release/commit/5087e549399648cf2e23339a037b33ca8b62d954 +.. _ab3061a: https://github.com/python-semantic-release/python-semantic-release/commit/ab3061ae93c49d71afca043b67b361e2eb2919e6 +.. _d4cdc3d: https://github.com/python-semantic-release/python-semantic-release/commit/d4cdc3d3cd2d93f2a78f485e3ea107ac816c7d00 +.. _PR#298: https://github.com/python-semantic-release/python-semantic-release/pull/298 + + +.. _changelog-v7.8.2: + +v7.8.2 (2020-12-19) +=================== + +✨ Features +----------- + +* **repository**: Add to settings artifact repository (`f4ef373`_) + +🪲 Bug Fixes +------------ + +* **cli**: Skip remove_dist where not needed (`04817d4`_) + +.. _04817d4: https://github.com/python-semantic-release/python-semantic-release/commit/04817d4ecfc693195e28c80455bfbb127485f36b +.. _f4ef373: https://github.com/python-semantic-release/python-semantic-release/commit/f4ef3733b948282fba5a832c5c0af134609b26d2 + + +.. _changelog-v7.8.1: + +v7.8.1 (2020-12-18) +=================== + +🪲 Bug Fixes +------------ + +* Filenames with unknown mimetype are now properly uploaded to github release (`f3ece78`_) + +* **logs**: Fix TypeError when enabling debug logs (`2591a94`_) + +.. _2591a94: https://github.com/python-semantic-release/python-semantic-release/commit/2591a94115114c4a91a48f5b10b3954f6ac932a1 +.. _f3ece78: https://github.com/python-semantic-release/python-semantic-release/commit/f3ece78b2913e70f6b99907b192a1e92bbfd6b77 + + +.. _changelog-v7.8.0: + +v7.8.0 (2020-12-18) +=================== + +✨ Features +----------- + +* Add ``upload_to_pypi_glob_patterns`` option (`42305ed`_) + +🪲 Bug Fixes +------------ + +* **changelog**: Use "issues" link vs "pull" (`93e48c9`_) + +* **netrc**: Prefer using token defined in GH_TOKEN instead of .netrc file (`3af32a7`_) + +.. _3af32a7: https://github.com/python-semantic-release/python-semantic-release/commit/3af32a738f2f2841fd75ec961a8f49a0b1c387cf +.. _42305ed: https://github.com/python-semantic-release/python-semantic-release/commit/42305ed499ca08c819c4e7e65fcfbae913b8e6e1 +.. _93e48c9: https://github.com/python-semantic-release/python-semantic-release/commit/93e48c992cb8b763f430ecbb0b7f9c3ca00036e4 + + +.. _changelog-v7.7.0: + +v7.7.0 (2020-12-12) +=================== + +✨ Features +----------- + +* **changelog**: Add PR links in markdown (`PR#282`_, `0448f6c`_) + +.. _0448f6c: https://github.com/python-semantic-release/python-semantic-release/commit/0448f6c350bbbf239a81fe13dc5f45761efa7673 +.. _PR#282: https://github.com/python-semantic-release/python-semantic-release/pull/282 + + +.. _changelog-v7.6.0: + +v7.6.0 (2020-12-06) +=================== + +✨ Features +----------- + +* Add ``major_on_zero`` option (`d324154`_) + +📖 Documentation +---------------- + +* Add documentation for option ``major_on_zero`` (`2e8b26e`_) + +.. _2e8b26e: https://github.com/python-semantic-release/python-semantic-release/commit/2e8b26e4ee0316a2cf2a93c09c783024fcd6b3ba +.. _d324154: https://github.com/python-semantic-release/python-semantic-release/commit/d3241540e7640af911eb24c71e66468feebb0d46 + + +.. _changelog-v7.5.0: + +v7.5.0 (2020-12-04) +=================== + +✨ Features +----------- + +* **logs**: Include scope in changelogs (`PR#281`_, `21c96b6`_) + +.. _21c96b6: https://github.com/python-semantic-release/python-semantic-release/commit/21c96b688cc44cc6f45af962ffe6d1f759783f37 +.. _PR#281: https://github.com/python-semantic-release/python-semantic-release/pull/281 + + +.. _changelog-v7.4.1: + +v7.4.1 (2020-12-04) +=================== + +🪲 Bug Fixes +------------ + +* Add "changelog_capitalize" to flags, closes `#278`_ (`PR#279`_, `37716df`_) + +.. _#278: https://github.com/python-semantic-release/python-semantic-release/issues/278 +.. _37716df: https://github.com/python-semantic-release/python-semantic-release/commit/37716dfa78eb3f848f57a5100d01d93f5aafc0bf +.. _PR#279: https://github.com/python-semantic-release/python-semantic-release/pull/279 + + +.. _changelog-v7.4.0: + +v7.4.0 (2020-11-24) +=================== + +✨ Features +----------- + +* Add changelog_capitalize configuration, closes `#260`_ (`7cacca1`_) + +📖 Documentation +---------------- + +* Fix broken internal references (`PR#270`_, `da20b9b`_) + +* Update links to Github docs (`PR#268`_, `c53162e`_) + +.. _#260: https://github.com/python-semantic-release/python-semantic-release/issues/260 +.. _7cacca1: https://github.com/python-semantic-release/python-semantic-release/commit/7cacca1eb436a7166ba8faf643b53c42bc32a6a7 +.. _c53162e: https://github.com/python-semantic-release/python-semantic-release/commit/c53162e366304082a3bd5d143b0401da6a16a263 +.. _da20b9b: https://github.com/python-semantic-release/python-semantic-release/commit/da20b9bdd3c7c87809c25ccb2a5993a7ea209a22 +.. _PR#268: https://github.com/python-semantic-release/python-semantic-release/pull/268 +.. _PR#270: https://github.com/python-semantic-release/python-semantic-release/pull/270 + + +.. _changelog-v7.3.0: + +v7.3.0 (2020-09-28) +=================== + +✨ Features +----------- + +* Generate ``changelog.md`` file (`PR#266`_, `2587dfe`_) + +📖 Documentation +---------------- + +* Fix docstring (`5a5e2cf`_) + +.. _2587dfe: https://github.com/python-semantic-release/python-semantic-release/commit/2587dfed71338ec6c816f58cdf0882382c533598 +.. _5a5e2cf: https://github.com/python-semantic-release/python-semantic-release/commit/5a5e2cfb5e6653fb2e95e6e23e56559953b2c2b4 +.. _PR#266: https://github.com/python-semantic-release/python-semantic-release/pull/266 + + +.. _changelog-v7.2.5: + +v7.2.5 (2020-09-16) +=================== + +🪲 Bug Fixes +------------ + +* Add required to inputs in action metadata (`PR#264`_, `e76b255`_) + +.. _e76b255: https://github.com/python-semantic-release/python-semantic-release/commit/e76b255cf7d3d156e3314fc28c54d63fa126e973 +.. _PR#264: https://github.com/python-semantic-release/python-semantic-release/pull/264 + + +.. _changelog-v7.2.4: + +v7.2.4 (2020-09-14) +=================== + +🪲 Bug Fixes +------------ + +* Use range for toml dependency, closes `#241`_ (`45707e1`_) + +.. _#241: https://github.com/python-semantic-release/python-semantic-release/issues/241 +.. _45707e1: https://github.com/python-semantic-release/python-semantic-release/commit/45707e1b7dcab48103a33de9d7f9fdb5a34dae4a + + +.. _changelog-v7.2.3: + +v7.2.3 (2020-09-12) +=================== + +🪲 Bug Fixes +------------ + +* Support multiline version_pattern matching by default (`82f7849`_) + +📖 Documentation +---------------- + +* Create 'getting started' instructions (`PR#256`_, `5f4d000`_) + +* Link to getting started guide in README (`f490e01`_) + +.. _5f4d000: https://github.com/python-semantic-release/python-semantic-release/commit/5f4d000c3f153d1d23128acf577e389ae879466e +.. _82f7849: https://github.com/python-semantic-release/python-semantic-release/commit/82f7849dcf29ba658e0cb3b5d21369af8bf3c16f +.. _f490e01: https://github.com/python-semantic-release/python-semantic-release/commit/f490e0194fa818db4d38c185bc5e6245bfde546b +.. _PR#256: https://github.com/python-semantic-release/python-semantic-release/pull/256 + + +.. _changelog-v7.2.2: + +v7.2.2 (2020-07-26) +=================== + +🪲 Bug Fixes +------------ + +* **changelog**: Send changelog to stdout, closes `#250`_ (`87e2bb8`_) + +📖 Documentation +---------------- + +* Add quotation marks to the pip commands in CONTRIBUTING.rst (`PR#253`_, `e20fa43`_) + +.. _#250: https://github.com/python-semantic-release/python-semantic-release/issues/250 +.. _87e2bb8: https://github.com/python-semantic-release/python-semantic-release/commit/87e2bb881387ff3ac245ab9923347a5a616e197b +.. _e20fa43: https://github.com/python-semantic-release/python-semantic-release/commit/e20fa43098c06f5f585c81b9cd7e287dcce3fb5d +.. _PR#253: https://github.com/python-semantic-release/python-semantic-release/pull/253 + + +.. _changelog-v7.2.1: + +v7.2.1 (2020-06-29) +=================== + +🪲 Bug Fixes +------------ + +* Commit all files with bumped versions (`PR#249`_, `b3a1766`_) + +📖 Documentation +---------------- + +* Give example of multiple build commands (`PR#248`_, `65f1ffc`_) + +.. _65f1ffc: https://github.com/python-semantic-release/python-semantic-release/commit/65f1ffcc6cac3bf382f4b821ff2be59d04f9f867 +.. _b3a1766: https://github.com/python-semantic-release/python-semantic-release/commit/b3a1766be7edb7d2eb76f2726d35ab8298688b3b +.. _PR#248: https://github.com/python-semantic-release/python-semantic-release/pull/248 +.. _PR#249: https://github.com/python-semantic-release/python-semantic-release/pull/249 + + +.. _changelog-v7.2.0: + +v7.2.0 (2020-06-15) +=================== + +✨ Features +----------- + +* Bump versions in multiple files, closes `#175`_ (`PR#246`_, `0ba2c47`_) + +.. _#175: https://github.com/python-semantic-release/python-semantic-release/issues/175 +.. _0ba2c47: https://github.com/python-semantic-release/python-semantic-release/commit/0ba2c473c6e44cc326b3299b6ea3ddde833bdb37 +.. _PR#246: https://github.com/python-semantic-release/python-semantic-release/pull/246 + + +.. _changelog-v7.1.1: + +v7.1.1 (2020-05-28) +=================== + +🪲 Bug Fixes +------------ + +* **changelog**: Swap sha and message in table changelog (`6741370`_) + +.. _6741370: https://github.com/python-semantic-release/python-semantic-release/commit/6741370ab09b1706ff6e19b9fbe57b4bddefc70d + + +.. _changelog-v7.1.0: + +v7.1.0 (2020-05-24) +=================== + +✨ Features +----------- + +* **changelog**: Add changelog_table component, closes `#237`_ (`PR#242`_, `fe6a7e7`_) + +.. _#237: https://github.com/python-semantic-release/python-semantic-release/issues/237 +.. _fe6a7e7: https://github.com/python-semantic-release/python-semantic-release/commit/fe6a7e7fa014ffb827a1430dbcc10d1fc84c886b +.. _PR#242: https://github.com/python-semantic-release/python-semantic-release/pull/242 + + +.. _changelog-v7.0.0: + +v7.0.0 (2020-05-22) +=================== + +✨ Features +----------- + +* Pass changelog_sections to components (`PR#240`_, `3e17a98`_) + +* **changelog**: Add changelog components (`PR#240`_, `3e17a98`_) + +📖 Documentation +---------------- + +* Add conda-forge badge (`e9536bb`_) + +* Add documentation for changelog_components (`PR#240`_, `3e17a98`_) + +💥 BREAKING CHANGES +------------------- + +* **changelog**: The ``compare_url`` option has been removed in favor of using + ``changelog_components``. This functionality is now available as the + ``semantic_release.changelog.compare_url`` component. + +.. _3e17a98: https://github.com/python-semantic-release/python-semantic-release/commit/3e17a98d7fa8468868a87e62651ac2c010067711 +.. _e9536bb: https://github.com/python-semantic-release/python-semantic-release/commit/e9536bbe119c9e3b90c61130c02468e0e1f14141 +.. _PR#240: https://github.com/python-semantic-release/python-semantic-release/pull/240 + + +.. _changelog-v6.4.1: + +v6.4.1 (2020-05-15) +=================== + +🪲 Bug Fixes +------------ + +* Convert ``\r\n`` to ``\n`` in commit messages, closes `#239`_ (`34acbbc`_) + +.. _#239: https://github.com/python-semantic-release/python-semantic-release/issues/239 +.. _34acbbc: https://github.com/python-semantic-release/python-semantic-release/commit/34acbbcd25320a9d18dcd1a4f43e1ce1837b2c9f + + +.. _changelog-v6.4.0: + +v6.4.0 (2020-05-15) +=================== + +✨ Features +----------- + +* **history**: Create emoji parser (`PR#238`_, `2e1c50a`_) + +🪲 Bug Fixes +------------ + +* Add emojis to default changelog_sections (`PR#238`_, `2e1c50a`_) + +* Include all parsed types in changelog (`PR#238`_, `2e1c50a`_) + +📖 Documentation +---------------- + +* Add documentation for emoji parser (`PR#238`_, `2e1c50a`_) + +♻️ Refactoring +--------------- + +* **history**: Get breaking changes in parser (`PR#238`_, `2e1c50a`_) + +.. _2e1c50a: https://github.com/python-semantic-release/python-semantic-release/commit/2e1c50a865628b372f48945a039a3edb38a7cdf0 +.. _PR#238: https://github.com/python-semantic-release/python-semantic-release/pull/238 + + +.. _changelog-v6.3.1: + +v6.3.1 (2020-05-11) +=================== + +🪲 Bug Fixes +------------ + +* Use getboolean for commit_version_number, closes `#186`_ (`a60e0b4`_) + +.. _#186: https://github.com/python-semantic-release/python-semantic-release/issues/186 +.. _a60e0b4: https://github.com/python-semantic-release/python-semantic-release/commit/a60e0b4e3cadf310c3e0ad67ebeb4e69d0ee50cb + + +.. _changelog-v6.3.0: + +v6.3.0 (2020-05-09) +=================== + +✨ Features +----------- + +* **history**: Support linking compare page in changelog, closes `#218`_ (`79a8e02`_) + +📖 Documentation +---------------- + +* Document compare_link option (`e52c355`_) + +* Rewrite commit-log-parsing.rst (`4c70f4f`_) + +.. _#218: https://github.com/python-semantic-release/python-semantic-release/issues/218 +.. _4c70f4f: https://github.com/python-semantic-release/python-semantic-release/commit/4c70f4f2aa3343c966d1b7ab8566fcc782242ab9 +.. _79a8e02: https://github.com/python-semantic-release/python-semantic-release/commit/79a8e02df82fbc2acecaad9e9ff7368e61df3e54 +.. _e52c355: https://github.com/python-semantic-release/python-semantic-release/commit/e52c355c0d742ddd2cfa65d42888296942e5bec5 + + +.. _changelog-v6.2.0: + +v6.2.0 (2020-05-02) +=================== + +✨ Features +----------- + +* **history**: Check all paragraphs for breaking changes, closes `#200`_ (`fec08f0`_) + +📖 Documentation +---------------- + +* Add = to verbosity option, closes `#227`_ (`a0f4c9c`_) + +* Use references where possible, closes `#221`_ (`f38e5d4`_) + + +.. _#200: https://github.com/python-semantic-release/python-semantic-release/issues/200 +.. _#221: https://github.com/python-semantic-release/python-semantic-release/issues/221 +.. _#227: https://github.com/python-semantic-release/python-semantic-release/issues/227 +.. _a0f4c9c: https://github.com/python-semantic-release/python-semantic-release/commit/a0f4c9cd397fcb98f880097319c08160adb3c3e6 +.. _f38e5d4: https://github.com/python-semantic-release/python-semantic-release/commit/f38e5d4a1597cddb69ce47a4d79b8774e796bf41 +.. _fec08f0: https://github.com/python-semantic-release/python-semantic-release/commit/fec08f0dbd7ae15f95ca9c41a02c9fe6d448ede0 + + +.. _changelog-v6.1.0: + +v6.1.0 (2020-04-26) +=================== + +✨ Features +----------- + +* **actions**: Support PYPI_TOKEN on GitHub Actions (`df2c080`_) + +* **pypi**: Support easier use of API tokens, closes `#213`_ (`bac135c`_) + +📖 Documentation +---------------- + +* Add documentation for PYPI_TOKEN (`a8263a0`_) + +.. _#213: https://github.com/python-semantic-release/python-semantic-release/issues/213 +.. _a8263a0: https://github.com/python-semantic-release/python-semantic-release/commit/a8263a066177d1d42f2844e4cb42a76a23588500 +.. _bac135c: https://github.com/python-semantic-release/python-semantic-release/commit/bac135c0ae7a6053ecfc7cdf2942c3c89640debf +.. _df2c080: https://github.com/python-semantic-release/python-semantic-release/commit/df2c0806f0a92186e914cfc8cc992171d74422df + + +.. _changelog-v6.0.1: + +v6.0.1 (2020-04-15) +=================== + +🪲 Bug Fixes +------------ + +* **hvcs**: Convert get_hvcs to use LoggedFunction (`3084249`_) + +.. _3084249: https://github.com/python-semantic-release/python-semantic-release/commit/308424933fd3375ca3730d9eaf8abbad2435830b + + +.. _changelog-v6.0.0: + +v6.0.0 (2020-04-15) +=================== + +📖 Documentation +---------------- + +* Create Read the Docs config file (`aa5a1b7`_) + +* Include README.rst in index.rst (`8673a9d`_) + +* Move action.rst into main documentation (`509ccaf`_) + +* Rewrite README.rst (`e049772`_) + +* Rewrite troubleshooting page (`0285de2`_) + +♻️ Refactoring +--------------- + +* **debug**: Use logging and click_log instead of ndebug (`15b1f65`_) + +💥 BREAKING CHANGES +------------------- + +* **debug**: ``debug="*"`` no longer has an effect, instead use ``--verbosity DEBUG``. + +.. _0285de2: https://github.com/python-semantic-release/python-semantic-release/commit/0285de215a8dac3fcc9a51f555fa45d476a56dff +.. _15b1f65: https://github.com/python-semantic-release/python-semantic-release/commit/15b1f650f29761e1ab2a91b767cbff79b2057a4c +.. _509ccaf: https://github.com/python-semantic-release/python-semantic-release/commit/509ccaf307a0998eced69ad9fee1807132babe28 +.. _8673a9d: https://github.com/python-semantic-release/python-semantic-release/commit/8673a9d92a9bf348bb3409e002a830741396c8ca +.. _aa5a1b7: https://github.com/python-semantic-release/python-semantic-release/commit/aa5a1b700a1c461c81c6434686cb6f0504c4bece +.. _e049772: https://github.com/python-semantic-release/python-semantic-release/commit/e049772cf14cdd49538cf357db467f0bf3fe9587 + + +.. _changelog-v5.2.0: + +v5.2.0 (2020-04-09) +=================== + +✨ Features +----------- + +* **github**: Add tag as default release name (`2997908`_) + +📖 Documentation +---------------- + +* Automate API docs (`7d4fea2`_) + +.. _2997908: https://github.com/python-semantic-release/python-semantic-release/commit/2997908f80f4fcec56917d237a079b961a06f990 +.. _7d4fea2: https://github.com/python-semantic-release/python-semantic-release/commit/7d4fea266cc75007de51609131eb6d1e324da608 + + +.. _changelog-v5.1.0: + +v5.1.0 (2020-04-04) +=================== + +✨ Features +----------- + +* **history**: Allow customizing changelog_sections (`PR#207`_, `d5803d5`_) + +📖 Documentation +---------------- + +* Improve formatting of configuration page (`9a8e22e`_) + +* Improve formatting of envvars page (`b376a56`_) + +* Update index.rst (`b27c26c`_) + +.. _9a8e22e: https://github.com/python-semantic-release/python-semantic-release/commit/9a8e22e838d7dbf3bfd941397c3b39560aca6451 +.. _b27c26c: https://github.com/python-semantic-release/python-semantic-release/commit/b27c26c66e7e41843ab29076f7e724908091b46e +.. _b376a56: https://github.com/python-semantic-release/python-semantic-release/commit/b376a567bfd407a507ce0752614b0ca75a0f2973 +.. _d5803d5: https://github.com/python-semantic-release/python-semantic-release/commit/d5803d5c1668d86482a31ac0853bac7ecfdc63bc +.. _PR#207: https://github.com/python-semantic-release/python-semantic-release/pull/207 + + +.. _changelog-v5.0.3: + +v5.0.3 (2020-03-26) +=================== + +🪲 Bug Fixes +------------ + +* Bump dependencies and fix Windows issues on Development (`PR#173`_, `0a6f8c3`_) + +* Missing mime types on Windows (`PR#173`_, `0a6f8c3`_) + +.. _0a6f8c3: https://github.com/python-semantic-release/python-semantic-release/commit/0a6f8c3842b05f5f424dad5ce1fa5e3823c7e688 +.. _PR#173: https://github.com/python-semantic-release/python-semantic-release/pull/173 + + +.. _changelog-v5.0.2: + +v5.0.2 (2020-03-22) +=================== + +🪲 Bug Fixes +------------ + +* **history**: Leave case of other characters unchanged (`96ba94c`_) + +.. _96ba94c: https://github.com/python-semantic-release/python-semantic-release/commit/96ba94c4b4593997343ec61ecb6c823c1494d0e2 + + +.. _changelog-v5.0.1: + +v5.0.1 (2020-03-22) +=================== + +🪲 Bug Fixes +------------ + +* Make action use current version of semantic-release (`123984d`_) + +.. _123984d: https://github.com/python-semantic-release/python-semantic-release/commit/123984d735181c622f3d99088a1ad91321192a11 + + +.. _changelog-v5.0.0: + +v5.0.0 (2020-03-22) +=================== + +✨ Features +----------- + +* **build**: Allow config setting for build command, closes `#188`_ (`PR#195`_, `740f4bd`_) + +🪲 Bug Fixes +------------ + +* Rename default of build_command config (`d5db22f`_) + +📖 Documentation +---------------- + +* **pypi**: Update docstrings in pypi.py (`6502d44`_) + +💥 BREAKING CHANGES +------------------- + +* **build**: Previously the build_commands configuration variable set the types of bundles sent to + ``python setup.py``. It has been replaced by the configuration variable ``build_command`` which + takes the full command e.g. ``python setup.py sdist`` or ``poetry build``. + +.. _#188: https://github.com/python-semantic-release/python-semantic-release/issues/188 +.. _6502d44: https://github.com/python-semantic-release/python-semantic-release/commit/6502d448fa65e5dc100e32595e83fff6f62a881a +.. _740f4bd: https://github.com/python-semantic-release/python-semantic-release/commit/740f4bdb26569362acfc80f7e862fc2c750a46dd +.. _d5db22f: https://github.com/python-semantic-release/python-semantic-release/commit/d5db22f9f7acd05d20fd60a8b4b5a35d4bbfabb8 +.. _PR#195: https://github.com/python-semantic-release/python-semantic-release/pull/195 + + +.. _changelog-v4.11.0: + +v4.11.0 (2020-03-22) +==================== + +✨ Features +----------- + +* **actions**: Create GitHub Action (`350245d`_) + +📖 Documentation +---------------- + +* Make AUTHORS.rst dynamic (`db2e076`_) + +* **readme**: Fix minor typo (`c22f69f`_) + +.. _350245d: https://github.com/python-semantic-release/python-semantic-release/commit/350245dbfb07ed6a1db017b1d9d1072b368b1497 +.. _c22f69f: https://github.com/python-semantic-release/python-semantic-release/commit/c22f69f62a215ff65e1ab6dcaa8e7e9662692e64 +.. _db2e076: https://github.com/python-semantic-release/python-semantic-release/commit/db2e0762f3189d0f1a6ba29aad32bdefb7e0187f + + +.. _changelog-v4.10.0: + +v4.10.0 (2020-03-03) +==================== + +✨ Features +----------- + +* Make commit message configurable (`PR#184`_, `eb0762c`_) + +.. _eb0762c: https://github.com/python-semantic-release/python-semantic-release/commit/eb0762ca9fea5cecd5c7b182504912a629be473b +.. _PR#184: https://github.com/python-semantic-release/python-semantic-release/pull/184 + + +.. _changelog-v4.9.0: + +v4.9.0 (2020-03-02) +=================== + +✨ Features +----------- + +* **pypi**: Add build_commands config (`22146ea`_) + +🪲 Bug Fixes +------------ + +* **pypi**: Change bdist_wheels to bdist_wheel (`c4db509`_) + +.. _22146ea: https://github.com/python-semantic-release/python-semantic-release/commit/22146ea4b94466a90d60b94db4cc65f46da19197 +.. _c4db509: https://github.com/python-semantic-release/python-semantic-release/commit/c4db50926c03f3d551c8331932c567c7bdaf4f3d + + +.. _changelog-v4.8.0: + +v4.8.0 (2020-02-28) +=================== + +✨ Features +----------- + +* **git**: Add a new config for commit author (`aa2c22c`_) + +.. _aa2c22c: https://github.com/python-semantic-release/python-semantic-release/commit/aa2c22c469448fe57f02bea67a02f998ce519ac3 + + +.. _changelog-v4.7.1: + +v4.7.1 (2020-02-28) +=================== + +🪲 Bug Fixes +------------ + +* Repair parsing of remotes in the gitlab ci format, closes `#181`_ (`0fddbe2`_) + +.. _#181: https://github.com/python-semantic-release/python-semantic-release/issues/181 +.. _0fddbe2: https://github.com/python-semantic-release/python-semantic-release/commit/0fddbe2fb70d24c09ceddb789a159162a45942dc + + +.. _changelog-v4.7.0: + +v4.7.0 (2020-02-28) +=================== + +✨ Features +----------- + +* Upload distribution files to GitHub Releases (`PR#177`_, `e427658`_) + +* **github**: Upload dists to release (`PR#177`_, `e427658`_) + +🪲 Bug Fixes +------------ + +* Post changelog after PyPI upload (`PR#177`_, `e427658`_) + +* Support repository owner names containing dots, closes `#179`_ (`a6c4da4`_) + +* **github**: Fix upload of .whl files (`PR#177`_, `e427658`_) + +* **github**: Use application/octet-stream for .whl files (`90a7e47`_) + +📖 Documentation +---------------- + +* Document upload_to_release config option (`PR#177`_, `e427658`_) + +.. _#179: https://github.com/python-semantic-release/python-semantic-release/issues/179 +.. _90a7e47: https://github.com/python-semantic-release/python-semantic-release/commit/90a7e476a04d26babc88002e9035cad2ed485b07 +.. _a6c4da4: https://github.com/python-semantic-release/python-semantic-release/commit/a6c4da4c0e6bd8a37f64544f7813fa027f5054ed +.. _e427658: https://github.com/python-semantic-release/python-semantic-release/commit/e427658e33abf518191498c3142a0f18d3150e07 +.. _PR#177: https://github.com/python-semantic-release/python-semantic-release/pull/177 + + +.. _changelog-v4.6.0: + +v4.6.0 (2020-02-19) +=================== + +✨ Features +----------- + +* **history**: Capitalize changelog messages (`1a8e306`_) + +🪲 Bug Fixes +------------ + +* Add more debug statements in logs (`bc931ec`_) + +* Only overwrite with patch if bump is None, closes `#159`_ (`1daa4e2`_) + +.. _#159: https://github.com/python-semantic-release/python-semantic-release/issues/159 +.. _1a8e306: https://github.com/python-semantic-release/python-semantic-release/commit/1a8e3060b8f6d6362c27903dcfc69d17db5f1d36 +.. _1daa4e2: https://github.com/python-semantic-release/python-semantic-release/commit/1daa4e23ec2dd40c6b490849276524264787e24e +.. _bc931ec: https://github.com/python-semantic-release/python-semantic-release/commit/bc931ec46795fde4c1ccee004eec83bf73d5de7a + + +.. _changelog-v4.5.1: + +v4.5.1 (2020-02-16) +=================== + +🪲 Bug Fixes +------------ + +* **github**: Send token in request header, closes `#167`_ (`be9972a`_) + +📖 Documentation +---------------- + +* Add note about automatic releases in readme (`e606e75`_) + +* Fix broken list in readme (`7aa572b`_) + +* Update readme and getting started docs (`07b3208`_) + +.. _#167: https://github.com/python-semantic-release/python-semantic-release/issues/167 +.. _07b3208: https://github.com/python-semantic-release/python-semantic-release/commit/07b3208ff64301e544c4fdcb48314e49078fc479 +.. _7aa572b: https://github.com/python-semantic-release/python-semantic-release/commit/7aa572b2a323ddbc69686309226395f40c52b469 +.. _be9972a: https://github.com/python-semantic-release/python-semantic-release/commit/be9972a7b1fb183f738fb31bd370adb30281e4d5 +.. _e606e75: https://github.com/python-semantic-release/python-semantic-release/commit/e606e7583a30167cf7679c6bcada2f9e768b3abe + + +.. _changelog-v4.5.0: + +v4.5.0 (2020-02-08) +=================== + +✨ Features +----------- + +* **history**: Enable colon defined version, closes `#165`_ (`7837f50`_) + +🪲 Bug Fixes +------------ + +* Remove erroneous submodule (`762bfda`_) + +* **cli**: --noop flag works when before command, closes `#73`_ (`4fcc781`_) + +.. _#73: https://github.com/python-semantic-release/python-semantic-release/issues/73 +.. _#165: https://github.com/python-semantic-release/python-semantic-release/issues/165 +.. _4fcc781: https://github.com/python-semantic-release/python-semantic-release/commit/4fcc781d1a3f9235db552f0f4431c9f5e638d298 +.. _762bfda: https://github.com/python-semantic-release/python-semantic-release/commit/762bfda728c266b8cd14671d8da9298fc99c63fb +.. _7837f50: https://github.com/python-semantic-release/python-semantic-release/commit/7837f5036269328ef29996b9ea63cccd5a6bc2d5 + + +.. _changelog-v4.4.1: + +v4.4.1 (2020-01-18) +=================== + +🪲 Bug Fixes +------------ + +* Add quotes around twine arguments, closes `#163`_ (`46a83a9`_) + +.. _#163: https://github.com/python-semantic-release/python-semantic-release/issues/163 +.. _46a83a9: https://github.com/python-semantic-release/python-semantic-release/commit/46a83a94b17c09d8f686c3ae7b199d7fd0e0e5e5 + + +.. _changelog-v4.4.0: + +v4.4.0 (2020-01-17) +=================== + +✨ Features +----------- + +* **parser**: Add support for exclamation point for breaking changes, closes `#156`_ (`a4f8a10`_) + +* **parser**: Make BREAKING-CHANGE synonymous with BREAKING CHANGE (`beedccf`_) + +🪲 Bug Fixes +------------ + +* **github**: Add check for GITHUB_ACTOR for git push (`PR#162`_, `c41e9bb`_) + +.. _#156: https://github.com/python-semantic-release/python-semantic-release/issues/156 +.. _a4f8a10: https://github.com/python-semantic-release/python-semantic-release/commit/a4f8a10afcc358a8fbef83be2041129480350be2 +.. _beedccf: https://github.com/python-semantic-release/python-semantic-release/commit/beedccfddfb360aeebef595342ee980446012ec7 +.. _c41e9bb: https://github.com/python-semantic-release/python-semantic-release/commit/c41e9bb986d01b92d58419cbdc88489d630a11f1 +.. _PR#162: https://github.com/python-semantic-release/python-semantic-release/pull/162 + + +.. _changelog-v4.3.4: + +v4.3.4 (2019-12-17) +=================== + +🪲 Bug Fixes +------------ + +* Fallback to whole log if correct tag is not available, closes `#51`_ (`PR#157`_, `252bffd`_) + +.. _#51: https://github.com/python-semantic-release/python-semantic-release/issues/51 +.. _252bffd: https://github.com/python-semantic-release/python-semantic-release/commit/252bffd3be7b6dfcfdb384d24cb1cd83d990fc9a +.. _PR#157: https://github.com/python-semantic-release/python-semantic-release/pull/157 + + +.. _changelog-v4.3.3: + +v4.3.3 (2019-11-06) +=================== + +🪲 Bug Fixes +------------ + +* Instead of requiring click 7.0, looks like all tests will pass with at least 2.0. (`PR#155`_, + `f07c7f6`_) + +* Set version of click to >=2.0,<8.0. (`PR#155`_, `f07c7f6`_) + +* Upgrade to click 7.0, closes `#117`_ (`PR#155`_, `f07c7f6`_) + +.. _#117: https://github.com/python-semantic-release/python-semantic-release/issues/117 +.. _f07c7f6: https://github.com/python-semantic-release/python-semantic-release/commit/f07c7f653be1c018e443f071d9a196d9293e9521 +.. _PR#155: https://github.com/python-semantic-release/python-semantic-release/pull/155 + + +.. _changelog-v4.3.2: + +v4.3.2 (2019-10-05) +=================== + +🪲 Bug Fixes +------------ + +* Update regex to get repository owner and name for project with dots, closes `#151`_ (`2778e31`_) + +.. _#151: https://github.com/python-semantic-release/python-semantic-release/issues/151 +.. _2778e31: https://github.com/python-semantic-release/python-semantic-release/commit/2778e316a0c0aa931b1012cb3862d04659c05e73 + + +.. _changelog-v4.3.1: + +v4.3.1 (2019-09-29) +=================== + +🪲 Bug Fixes +------------ + +* Support repo urls without git terminator (`700e9f1`_) + +.. _700e9f1: https://github.com/python-semantic-release/python-semantic-release/commit/700e9f18dafde1833f482272a72bb80b54d56bb3 + + +.. _changelog-v4.3.0: + +v4.3.0 (2019-09-06) +=================== + +✨ Features +----------- + +* Add the possibility to load configuration from pyproject.toml (`35f8bfe`_) + +* Allow the override of configuration options from cli, closes `#119`_ (`f0ac82f`_) + +* Allow users to get version from tag and write/commit bump to file, closes `#104`_ (`1f9fe1c`_) + +* Make the vcs functionalities work with gitlab, closes `#121`_ (`82d555d`_) + +🪲 Bug Fixes +------------ + +* Manage subgroups in git remote url, closes `#139`_, `#140`_ (`4b11875`_) + +* Update list of commit types to include build, ci and perf, closes `#145`_ (`41ea12f`_) + +.. _#104: https://github.com/python-semantic-release/python-semantic-release/issues/104 +.. _#119: https://github.com/python-semantic-release/python-semantic-release/issues/119 +.. _#121: https://github.com/python-semantic-release/python-semantic-release/issues/121 +.. _#139: https://github.com/python-semantic-release/python-semantic-release/issues/139 +.. _#140: https://github.com/python-semantic-release/python-semantic-release/issues/140 +.. _#145: https://github.com/python-semantic-release/python-semantic-release/issues/145 +.. _1f9fe1c: https://github.com/python-semantic-release/python-semantic-release/commit/1f9fe1cc7666d47cc0c348c4705b63c39bf10ecc +.. _35f8bfe: https://github.com/python-semantic-release/python-semantic-release/commit/35f8bfef443c8b69560c918f4b13bc766fb3daa2 +.. _41ea12f: https://github.com/python-semantic-release/python-semantic-release/commit/41ea12fa91f97c0046178806bce3be57c3bc2308 +.. _4b11875: https://github.com/python-semantic-release/python-semantic-release/commit/4b118754729094e330389712cf863e1c6cefee69 +.. _82d555d: https://github.com/python-semantic-release/python-semantic-release/commit/82d555d45b9d9e295ef3f9546a6ca2a38ca4522e +.. _f0ac82f: https://github.com/python-semantic-release/python-semantic-release/commit/f0ac82fe59eb59a768a73a1bf2ea934b9d448c58 + + +.. _changelog-v4.2.0: + +v4.2.0 (2019-08-05) +=================== + +✨ Features +----------- + +* Add configuration to customize handling of dists, closes `#115`_ (`2af6f41`_) + +* Add support for configuring branch, closes `#43`_ (`14abb05`_) + +* Add support for showing unreleased changelog, closes `#134`_ (`41ef794`_) + +🪲 Bug Fixes +------------ + +* Add commit hash when generating breaking changes, closes `#120`_ (`0c74faf`_) + +* Kept setting new version for tag source (`0e24a56`_) + +* Remove deletion of build folder, closes `#115`_ (`b45703d`_) + +* Updated the tag tests (`3303eef`_) + +* Upgrade click to 7.0 (`2c5dd80`_) + +.. _#43: https://github.com/python-semantic-release/python-semantic-release/issues/43 +.. _#115: https://github.com/python-semantic-release/python-semantic-release/issues/115 +.. _#120: https://github.com/python-semantic-release/python-semantic-release/issues/120 +.. _#134: https://github.com/python-semantic-release/python-semantic-release/issues/134 +.. _0c74faf: https://github.com/python-semantic-release/python-semantic-release/commit/0c74fafdfa81cf2e13db8f4dcf0a6f7347552504 +.. _0e24a56: https://github.com/python-semantic-release/python-semantic-release/commit/0e24a5633f8f94b48da97b011634d4f9d84f7b4b +.. _14abb05: https://github.com/python-semantic-release/python-semantic-release/commit/14abb05e7f878e88002f896812d66b4ea5c219d4 +.. _2af6f41: https://github.com/python-semantic-release/python-semantic-release/commit/2af6f41b21205bdd192514a434fca2feba17725a +.. _2c5dd80: https://github.com/python-semantic-release/python-semantic-release/commit/2c5dd809b84c2157a5e6cdcc773c43ec864f0328 +.. _3303eef: https://github.com/python-semantic-release/python-semantic-release/commit/3303eefa49a0474bbd85df10ae186ccbf9090ec1 +.. _41ef794: https://github.com/python-semantic-release/python-semantic-release/commit/41ef7947ad8a07392c96c7540980476e989c1d83 +.. _b45703d: https://github.com/python-semantic-release/python-semantic-release/commit/b45703dad38c29b28575060b21e5fb0f8482c6b1 + + +.. _changelog-v4.1.2: + +v4.1.2 (2019-08-04) +=================== + +🪲 Bug Fixes +------------ + +* Correct isort build fail (`0037210`_) + +* Make sure the history only breaks loop for version commit, closes `#135`_ (`5dc6cfc`_) + +* **vcs**: Allow cli to be run from subdirectory (`fb7bb14`_) + +📖 Documentation +---------------- + +* **circleci**: Point badge to master branch (`9c7302e`_) + +.. _#135: https://github.com/python-semantic-release/python-semantic-release/issues/135 +.. _0037210: https://github.com/python-semantic-release/python-semantic-release/commit/00372100b527ff9308d9e43fe5c65cdf179dc4dc +.. _5dc6cfc: https://github.com/python-semantic-release/python-semantic-release/commit/5dc6cfc634254f09997bb3cb0f17abd296e2c01f +.. _9c7302e: https://github.com/python-semantic-release/python-semantic-release/commit/9c7302e184a1bd88f39b3039691b55cd77f0bb07 +.. _fb7bb14: https://github.com/python-semantic-release/python-semantic-release/commit/fb7bb14300e483626464795b8ff4f033a194cf6f + + +.. _changelog-v4.1.1: + +v4.1.1 (2019-02-15) +=================== + +📖 Documentation +---------------- + +* Correct usage of changelog (`f4f59b0`_) + +* Debug usage and related (`f08e594`_) + +* Describing the commands (`b6fa04d`_) + +* Update url for commit guidelinesThe guidelines can now be found in theDEVELOPERS.md in angular. + (`90c1b21`_) + +.. _90c1b21: https://github.com/python-semantic-release/python-semantic-release/commit/90c1b217f86263301b91d19d641c7b348e37d960 +.. _b6fa04d: https://github.com/python-semantic-release/python-semantic-release/commit/b6fa04db3044525a1ee1b5952fb175a706842238 +.. _f08e594: https://github.com/python-semantic-release/python-semantic-release/commit/f08e5943a9876f2d17a7c02f468720995c7d9ffd +.. _f4f59b0: https://github.com/python-semantic-release/python-semantic-release/commit/f4f59b08c73700c6ee04930221bfcb1355cbc48d + + +.. _changelog-v4.1.0: + +v4.1.0 (2019-01-31) +=================== + +✨ Features +----------- + +* **ci_checks**: Add support for bitbucket (`9fc120d`_) + +🪲 Bug Fixes +------------ + +* Initialize git Repo from current folder (`c7415e6`_) + +* Maintain version variable formatting on bump (`PR#103`_, `bf63156`_) + +* Use same changelog code for command as post (`248f622`_) + +📖 Documentation +---------------- + +* Add installation instructions for development (`PR#106`_, `9168d0e`_) + +* **readme**: Add testing instructions (`bb352f5`_) + +.. _248f622: https://github.com/python-semantic-release/python-semantic-release/commit/248f62283c59182868c43ff105a66d85c923a894 +.. _9168d0e: https://github.com/python-semantic-release/python-semantic-release/commit/9168d0ea56734319a5d77e890f23ff6ba51cc97d +.. _9fc120d: https://github.com/python-semantic-release/python-semantic-release/commit/9fc120d1a7e4acbbca609628e72651685108b364 +.. _bb352f5: https://github.com/python-semantic-release/python-semantic-release/commit/bb352f5b6616cc42c9f2f2487c51dedda1c68295 +.. _bf63156: https://github.com/python-semantic-release/python-semantic-release/commit/bf63156f60340614fae94c255fb2f097cf317b2b +.. _c7415e6: https://github.com/python-semantic-release/python-semantic-release/commit/c7415e634c0affbe6396e0aa2bafe7c1b3368914 +.. _PR#103: https://github.com/python-semantic-release/python-semantic-release/pull/103 +.. _PR#106: https://github.com/python-semantic-release/python-semantic-release/pull/106 + + +.. _changelog-v4.0.1: + +v4.0.1 (2019-01-12) +=================== + +🪲 Bug Fixes +------------ + +* Add better error message when pypi credentials are empty, closes `#96`_ (`c4e5dcb`_) + +* Clean out dist and build before building, closes `#86`_ (`b628e46`_) + +* Filter out pypi secrets from exceptions, closes `#41`_ (`5918371`_) + +* Unfreeze dependencies, closes `#100`_ (`847833b`_) + +* Use correct syntax to exclude tests in package, closes `#92`_ (`3e41e91`_) + +* **parser_angular**: Fix non-match when special chars in scope (`8a33123`_) + +📖 Documentation +---------------- + +* Remove reference to gitter, closes `#90`_ (`896e37b`_) + +.. _#41: https://github.com/python-semantic-release/python-semantic-release/issues/41 +.. _#86: https://github.com/python-semantic-release/python-semantic-release/issues/86 +.. _#90: https://github.com/python-semantic-release/python-semantic-release/issues/90 +.. _#92: https://github.com/python-semantic-release/python-semantic-release/issues/92 +.. _#96: https://github.com/python-semantic-release/python-semantic-release/issues/96 +.. _#100: https://github.com/python-semantic-release/python-semantic-release/issues/100 +.. _3e41e91: https://github.com/python-semantic-release/python-semantic-release/commit/3e41e91c318663085cd28c8165ece21d7e383475 +.. _5918371: https://github.com/python-semantic-release/python-semantic-release/commit/5918371c1e82b06606087c9945d8eaf2604a0578 +.. _847833b: https://github.com/python-semantic-release/python-semantic-release/commit/847833bf48352a4935f906d0c3f75e1db596ca1c +.. _896e37b: https://github.com/python-semantic-release/python-semantic-release/commit/896e37b95cc43218e8f593325dd4ea63f8b895d9 +.. _8a33123: https://github.com/python-semantic-release/python-semantic-release/commit/8a331232621b26767e4268079f9295bf695047ab +.. _b628e46: https://github.com/python-semantic-release/python-semantic-release/commit/b628e466f86bc27cbe45ec27a02d4774a0efd3bb +.. _c4e5dcb: https://github.com/python-semantic-release/python-semantic-release/commit/c4e5dcbeda0ce8f87d25faefb4d9ae3581029a8f + + +.. _changelog-v4.0.0: + +v4.0.0 (2018-11-22) +=================== + +✨ Features +----------- + +* Add support for commit_message config variable (`4de5400`_) + +* **CI checks**: Add support for GitLab CI checks, closes `#88`_ (`8df5e2b`_) + +🪲 Bug Fixes +------------ + +* Add check of credentials (`7d945d4`_) + +* Add credentials check (`0694604`_) + +* Add dists to twine call (`1cec2df`_) + +* Change requests from fixed version to version range (`PR#93`_, `af3ad59`_) + +* Re-add skip-existing (`366e9c1`_) + +* Remove repository argument in twine (`e24543b`_) + +* Remove universal from setup config (`18b2402`_) + +* Update twine (`c4ae7b8`_) + +* Use new interface for twine (`c04872d`_) + +* Use twine through cli call (`ab84beb`_) + +📖 Documentation +---------------- + +* Add type hints and more complete docstrings, closes `#81`_ (`a6d5e9b`_) + +* Fix typo in documentation index (`da6844b`_) + +♻️ Refactoring +--------------- + +* Remove support for python 2 (`85fe638`_) + +💥 BREAKING CHANGES +------------------- + +* If you rely on the commit message to be the version number only, this will break your code + +* This will only work with python 3 after this commit. + +.. _#81: https://github.com/python-semantic-release/python-semantic-release/issues/81 +.. _#88: https://github.com/python-semantic-release/python-semantic-release/issues/88 +.. _0694604: https://github.com/python-semantic-release/python-semantic-release/commit/0694604f3b3d2159a4037620605ded09236cdef5 +.. _18b2402: https://github.com/python-semantic-release/python-semantic-release/commit/18b24025e397aace03dd5bb9eed46cfdd13491bd +.. _1cec2df: https://github.com/python-semantic-release/python-semantic-release/commit/1cec2df8bcb7f877c813d6470d454244630b050a +.. _366e9c1: https://github.com/python-semantic-release/python-semantic-release/commit/366e9c1d0b9ffcde755407a1de18e8295f6ad3a1 +.. _4de5400: https://github.com/python-semantic-release/python-semantic-release/commit/4de540011ab10483ee1865f99c623526cf961bb9 +.. _7d945d4: https://github.com/python-semantic-release/python-semantic-release/commit/7d945d44b36b3e8c0b7771570cb2305e9e09d0b2 +.. _85fe638: https://github.com/python-semantic-release/python-semantic-release/commit/85fe6384c15db317bc7142f4c8bbf2da58cece58 +.. _8df5e2b: https://github.com/python-semantic-release/python-semantic-release/commit/8df5e2bdd33a620e683f3adabe174e94ceaa88d9 +.. _a6d5e9b: https://github.com/python-semantic-release/python-semantic-release/commit/a6d5e9b1ccbe75d59e7240528593978a19d8d040 +.. _ab84beb: https://github.com/python-semantic-release/python-semantic-release/commit/ab84beb8f809e39ae35cd3ce5c15df698d8712fd +.. _af3ad59: https://github.com/python-semantic-release/python-semantic-release/commit/af3ad59f018876e11cc3acdda0b149f8dd5606bd +.. _c04872d: https://github.com/python-semantic-release/python-semantic-release/commit/c04872d00a26e9bf0f48eeacb360b37ce0fba01e +.. _c4ae7b8: https://github.com/python-semantic-release/python-semantic-release/commit/c4ae7b8ecc682855a8568b247690eaebe62d2d26 +.. _da6844b: https://github.com/python-semantic-release/python-semantic-release/commit/da6844bce0070a0020bf13950bd136fe28262602 +.. _e24543b: https://github.com/python-semantic-release/python-semantic-release/commit/e24543b96adb208897f4ce3eaab96b2f4df13106 +.. _PR#93: https://github.com/python-semantic-release/python-semantic-release/pull/93 + + +.. _changelog-v3.11.2: + +v3.11.2 (2018-06-10) +==================== + +🪲 Bug Fixes +------------ + +* Upgrade twine (`9722313`_) + +.. _9722313: https://github.com/python-semantic-release/python-semantic-release/commit/9722313eb63c7e2c32c084ad31bed7ee1c48a928 + + +.. _changelog-v3.11.1: + +v3.11.1 (2018-06-06) +==================== + +🪲 Bug Fixes +------------ + +* Change Gitpython version number, closes `#80`_ (`23c9d4b`_) + +📖 Documentation +---------------- + +* Add retry option to cli docs (`021da50`_) + +.. _#80: https://github.com/python-semantic-release/python-semantic-release/issues/80 +.. _021da50: https://github.com/python-semantic-release/python-semantic-release/commit/021da5001934f3199c98d7cf29f62a3ad8c2e56a +.. _23c9d4b: https://github.com/python-semantic-release/python-semantic-release/commit/23c9d4b6a1716e65605ed985881452898d5cf644 + + +.. _changelog-v3.11.0: + +v3.11.0 (2018-04-12) +==================== + +✨ Features +----------- + +* Add --retry cli option (`PR#78`_, `3e312c0`_) + +* Add support to finding previous version from tags if not using commit messages (`PR#68`_, + `6786487`_) + +* Be a bit more forgiving to find previous tags (`PR#68`_, `6786487`_) + +🪲 Bug Fixes +------------ + +* Add pytest cache to gitignore (`b8efd5a`_) + +* Make repo non if it is not a git repository, closes `#74`_ (`1dc306b`_) + +📖 Documentation +---------------- + +* Define ``--retry`` usage (`3e312c0`_) + +* Remove old notes about trello board (`7f50c52`_) + +* Update status badges (`cfa13b8`_) + +.. _#74: https://github.com/python-semantic-release/python-semantic-release/issues/74 +.. _1dc306b: https://github.com/python-semantic-release/python-semantic-release/commit/1dc306b9b1db2ac360211bdc61fd815302d0014c +.. _3e312c0: https://github.com/python-semantic-release/python-semantic-release/commit/3e312c0ce79a78d25016a3b294b772983cfb5e0f +.. _6786487: https://github.com/python-semantic-release/python-semantic-release/commit/6786487ebf4ab481139ef9f43cd74e345debb334 +.. _7f50c52: https://github.com/python-semantic-release/python-semantic-release/commit/7f50c521a522bb0c4579332766248778350e205b +.. _b8efd5a: https://github.com/python-semantic-release/python-semantic-release/commit/b8efd5a6249c79c8378bffea3e245657e7094ec9 +.. _cfa13b8: https://github.com/python-semantic-release/python-semantic-release/commit/cfa13b8260e3f3b0bfcb395f828ad63c9c5e3ca5 +.. _PR#68: https://github.com/python-semantic-release/python-semantic-release/pull/68 +.. _PR#78: https://github.com/python-semantic-release/python-semantic-release/pull/78 + + +.. _changelog-v3.10.3: + +v3.10.3 (2018-01-29) +==================== + +🪲 Bug Fixes +------------ + +* Error when not in git repository, closes `#74`_ (`PR#75`_, `251b190`_) + +.. _#74: https://github.com/python-semantic-release/python-semantic-release/issues/74 +.. _251b190: https://github.com/python-semantic-release/python-semantic-release/commit/251b190a2fd5df68892346926d447cbc1b32475a +.. _PR#75: https://github.com/python-semantic-release/python-semantic-release/pull/75 + + +.. _changelog-v3.10.2: + +v3.10.2 (2017-08-03) +==================== + +🪲 Bug Fixes +------------ + +* Update call to upload to work with twine 1.9.1 (`PR#72`_, `8f47643`_) + +.. _8f47643: https://github.com/python-semantic-release/python-semantic-release/commit/8f47643c54996e06c358537115e7e17b77cb02ca +.. _PR#72: https://github.com/python-semantic-release/python-semantic-release/pull/72 + + +.. _changelog-v3.10.1: + +v3.10.1 (2017-07-22) +==================== + +🪲 Bug Fixes +------------ + +* Update Twine (`PR#69`_, `9f268c3`_) + +.. _9f268c3: https://github.com/python-semantic-release/python-semantic-release/commit/9f268c373a932621771abbe9607b739b1e331409 +.. _PR#69: https://github.com/python-semantic-release/python-semantic-release/pull/69 + + +.. _changelog-v3.10.0: + +v3.10.0 (2017-05-05) +==================== + +✨ Features +----------- + +* Add git hash to the changelog (`PR#65`_, `628170e`_) + +🪲 Bug Fixes +------------ + +* Make changelog problems not fail whole publish (`b5a68cf`_) + +📖 Documentation +---------------- + +* Fix typo in cli.py docstring (`PR#64`_, `0d13985`_) + +.. _0d13985: https://github.com/python-semantic-release/python-semantic-release/commit/0d139859cd71f2d483f4360f196d6ef7c8726c18 +.. _628170e: https://github.com/python-semantic-release/python-semantic-release/commit/628170ebc440fc6abf094dd3e393f40576dedf9b +.. _b5a68cf: https://github.com/python-semantic-release/python-semantic-release/commit/b5a68cf6177dc0ed80eda722605db064f3fe2062 +.. _PR#64: https://github.com/python-semantic-release/python-semantic-release/pull/64 +.. _PR#65: https://github.com/python-semantic-release/python-semantic-release/pull/65 + + +.. _changelog-v3.9.0: + +v3.9.0 (2016-07-03) +=================== + +✨ Features +----------- + +* Add option for choosing between versioning by commit or tag (`c0cd1f5`_) + +* Don't use file to track version, only tag to commit for versioning (`cd25862`_) + +* Get repo version from historical tags instead of config file (`a45a9bf`_) + +🪲 Bug Fixes +------------ + +* Can't get the proper last tag from commit history (`5a0e681`_) + +.. _5a0e681: https://github.com/python-semantic-release/python-semantic-release/commit/5a0e681e256ec511cd6c6a8edfee9d905891da10 +.. _a45a9bf: https://github.com/python-semantic-release/python-semantic-release/commit/a45a9bfb64538efeb7f6f42bb6e7ede86a4ddfa8 +.. _c0cd1f5: https://github.com/python-semantic-release/python-semantic-release/commit/c0cd1f5b2e0776d7b636c3dd9e5ae863125219e6 +.. _cd25862: https://github.com/python-semantic-release/python-semantic-release/commit/cd258623ee518c009ae921cd6bb3119dafae43dc + + +.. _changelog-v3.8.1: + +v3.8.1 (2016-04-17) +=================== + +🪲 Bug Fixes +------------ + +* Add search_parent_directories option to gitpython (`PR#62`_, `8bf9ce1`_) + +.. _8bf9ce1: https://github.com/python-semantic-release/python-semantic-release/commit/8bf9ce11137399906f18bc8b25698b6e03a65034 +.. _PR#62: https://github.com/python-semantic-release/python-semantic-release/pull/62 + + +.. _changelog-v3.8.0: + +v3.8.0 (2016-03-21) +=================== + +✨ Features +----------- + +* Add ci checks for circle ci (`151d849`_) + +🪲 Bug Fixes +------------ + +* Add git fetch to frigg after success (`74a6cae`_) + +* Make tag parser work correctly with breaking changes (`9496f6a`_) + +* Refactoring cli.py to improve --help and error messages (`c79fc34`_) + +📖 Documentation +---------------- + +* Add info about correct commit guidelines (`af35413`_) + +* Add info about trello board in readme (`5229557`_) + +* Fix badges in readme (`7f4e549`_) + +* Update info about releases in contributing.md (`466f046`_) + +.. _151d849: https://github.com/python-semantic-release/python-semantic-release/commit/151d84964266c8dca206cef8912391cb73c8f206 +.. _466f046: https://github.com/python-semantic-release/python-semantic-release/commit/466f0460774cad86e7e828ffb50c7d1332b64e7b +.. _5229557: https://github.com/python-semantic-release/python-semantic-release/commit/5229557099d76b3404ea3677292332442a57ae2e +.. _74a6cae: https://github.com/python-semantic-release/python-semantic-release/commit/74a6cae2b46c5150e63136fde0599d98b9486e36 +.. _7f4e549: https://github.com/python-semantic-release/python-semantic-release/commit/7f4e5493edb6b3fb3510d0bb78fcc8d23434837f +.. _9496f6a: https://github.com/python-semantic-release/python-semantic-release/commit/9496f6a502c79ec3acb4e222e190e76264db02cf +.. _af35413: https://github.com/python-semantic-release/python-semantic-release/commit/af35413fae80889e2c5fc6b7d28f77f34b3b4c02 +.. _c79fc34: https://github.com/python-semantic-release/python-semantic-release/commit/c79fc3469fb99bf4c7f52434fa9c0891bca757f9 + + +.. _changelog-v3.7.2: + +v3.7.2 (2016-03-19) +=================== + +🪲 Bug Fixes +------------ + +* Move code around a bit to make flake8 happy (`41463b4`_) + +.. _41463b4: https://github.com/python-semantic-release/python-semantic-release/commit/41463b49b5d44fd94c11ab6e0a81e199510fabec + + +.. _changelog-v3.7.1: + +v3.7.1 (2016-03-15) +=================== + +📖 Documentation +---------------- + +* **configuration**: Fix typo in setup.cfg section (`725d87d`_) + +.. _725d87d: https://github.com/python-semantic-release/python-semantic-release/commit/725d87dc45857ef2f9fb331222845ac83a3af135 + + +.. _changelog-v3.7.0: + +v3.7.0 (2016-01-10) +=================== + +✨ Features +----------- + +* Add ci_checks for Frigg CI (`577c374`_) + +.. _577c374: https://github.com/python-semantic-release/python-semantic-release/commit/577c374396fe303b6fe7d64630d2959998d3595c + + +.. _changelog-v3.6.1: + +v3.6.1 (2016-01-10) +=================== + +🪲 Bug Fixes +------------ + +* Add requests as dependency (`4525a70`_) + +.. _4525a70: https://github.com/python-semantic-release/python-semantic-release/commit/4525a70d5520b44720d385b0307e46fae77a7463 + + +.. _changelog-v3.6.0: + +v3.6.0 (2015-12-28) +=================== + +✨ Features +----------- + +* Add checks for semaphore, closes `#44`_ (`2d7ef15`_) + +📖 Documentation +---------------- + +* Add documentation for configuring on CI (`7806940`_) + +* Add note about node semantic release (`0d2866c`_) + +* Add step by step guide for configuring travis ci (`6f23414`_) + +* Move automatic-releases to subfolder (`ed68e5b`_) + +* Remove duplicate readme (`42a9421`_) + +.. _#44: https://github.com/python-semantic-release/python-semantic-release/issues/44 +.. _0d2866c: https://github.com/python-semantic-release/python-semantic-release/commit/0d2866c528098ecaf1dd81492f28d3022a2a54e0 +.. _2d7ef15: https://github.com/python-semantic-release/python-semantic-release/commit/2d7ef157b1250459060e99601ec53a00942b6955 +.. _42a9421: https://github.com/python-semantic-release/python-semantic-release/commit/42a942131947cd1864c1ba29b184caf072408742 +.. _6f23414: https://github.com/python-semantic-release/python-semantic-release/commit/6f2341442f61f0284b1119a2c49e96f0be678929 +.. _7806940: https://github.com/python-semantic-release/python-semantic-release/commit/7806940ae36cb0d6ac0f966e5d6d911bd09a7d11 +.. _ed68e5b: https://github.com/python-semantic-release/python-semantic-release/commit/ed68e5b8d3489463e244b078ecce8eab2cba2bb1 + + +.. _changelog-v3.5.0: + +v3.5.0 (2015-12-22) +=================== + +✨ Features +----------- + +* Add author in commit, closes `#40`_ (`020efaa`_) + +* Checkout master before publishing (`dc4077a`_) + +🪲 Bug Fixes +------------ + +* Remove " from git push command (`031318b`_) + +📖 Documentation +---------------- + +* Convert readme to rst (`e8a8d26`_) + +.. _#40: https://github.com/python-semantic-release/python-semantic-release/issues/40 +.. _020efaa: https://github.com/python-semantic-release/python-semantic-release/commit/020efaaadf588e3fccd9d2f08a273c37e4158421 +.. _031318b: https://github.com/python-semantic-release/python-semantic-release/commit/031318b3268bc37e6847ec049b37425650cebec8 +.. _dc4077a: https://github.com/python-semantic-release/python-semantic-release/commit/dc4077a2d07e0522b625336dcf83ee4e0e1640aa +.. _e8a8d26: https://github.com/python-semantic-release/python-semantic-release/commit/e8a8d265aa2147824f18065b39a8e7821acb90ec + + +.. _changelog-v3.4.0: + +v3.4.0 (2015-12-22) +=================== + +✨ Features +----------- + +* Add travis environment checks (`f386db7`_) + +.. _f386db7: https://github.com/python-semantic-release/python-semantic-release/commit/f386db75b77acd521d2f5bde2e1dde99924dc096 + + +.. _changelog-v3.3.3: + +v3.3.3 (2015-12-22) +=================== + +🪲 Bug Fixes +------------ + +* Do git push and git push --tags instead of --follow-tags (`8bc70a1`_) + +.. _8bc70a1: https://github.com/python-semantic-release/python-semantic-release/commit/8bc70a183fd72f595c72702382bc0b7c3abe99c8 + + +.. _changelog-v3.3.2: + +v3.3.2 (2015-12-21) +=================== + +🪲 Bug Fixes +------------ + +* Change build badge (`0dc068f`_) + +📖 Documentation +---------------- + +* Update docstrings for generate_changelog (`987c6a9`_) + +.. _0dc068f: https://github.com/python-semantic-release/python-semantic-release/commit/0dc068fff2f8c6914f4abe6c4e5fb2752669159e +.. _987c6a9: https://github.com/python-semantic-release/python-semantic-release/commit/987c6a96d15997e38c93a9d841c618c76a385ce7 + + +.. _changelog-v3.3.1: + +v3.3.1 (2015-12-21) +=================== + +🪲 Bug Fixes +------------ + +* Add pandoc to travis settings (`17d40a7`_) + +* Only list commits from the last version tag, closes `#28`_ (`191369e`_) + +.. _#28: https://github.com/python-semantic-release/python-semantic-release/issues/28 +.. _17d40a7: https://github.com/python-semantic-release/python-semantic-release/commit/17d40a73062ffa774542d0abc0f59fc16b68be37 +.. _191369e: https://github.com/python-semantic-release/python-semantic-release/commit/191369ebd68526e5b1afcf563f7d13e18c8ca8bf + + +.. _changelog-v3.3.0: + +v3.3.0 (2015-12-20) +=================== + +✨ Features +----------- + +* Add support for environment variables for pypi credentials (`3b383b9`_) + +🪲 Bug Fixes +------------ + +* Add missing parameters to twine.upload (`4bae22b`_) + +* Better filtering of github token in push error (`9b31da4`_) + +* Downgrade twine to version 1.5.0 (`66df378`_) + +* Make sure the github token is not in the output (`55356b7`_) + +* Push to master by default (`a0bb023`_) + +.. _3b383b9: https://github.com/python-semantic-release/python-semantic-release/commit/3b383b92376a7530e89b11de481c4dfdfa273f7b +.. _4bae22b: https://github.com/python-semantic-release/python-semantic-release/commit/4bae22bae9b9d9abf669b028ea3af4b3813a1df0 +.. _55356b7: https://github.com/python-semantic-release/python-semantic-release/commit/55356b718f74d94dd92e6c2db8a15423a6824eb5 +.. _66df378: https://github.com/python-semantic-release/python-semantic-release/commit/66df378330448a313aff7a7c27067adda018904f +.. _9b31da4: https://github.com/python-semantic-release/python-semantic-release/commit/9b31da4dc27edfb01f685e6036ddbd4c715c9f60 +.. _a0bb023: https://github.com/python-semantic-release/python-semantic-release/commit/a0bb023438a1503f9fdb690d976d71632f19a21f + + +.. _changelog-v3.2.1: + +v3.2.1 (2015-12-20) +=================== + +🪲 Bug Fixes +------------ + +* Add requirements to manifest (`ed25ecb`_) + +* **pypi**: Add sdist as default in addition to bdist_wheel (`a1a35f4`_) + +.. _a1a35f4: https://github.com/python-semantic-release/python-semantic-release/commit/a1a35f43175187091f028474db2ebef5bfc77bc0 +.. _ed25ecb: https://github.com/python-semantic-release/python-semantic-release/commit/ed25ecbaeec0e20ad3040452a5547bb7d6faf6ad + + +.. _changelog-v3.2.0: + +v3.2.0 (2015-12-20) +=================== + +✨ Features +----------- + +* **angular-parser**: Remove scope requirement (`90c9d8d`_) + +* **git**: Add push to GH_TOKEN@github-url (`546b5bf`_) + +🪲 Bug Fixes +------------ + +* **deps**: Use one file for requirements (`4868543`_) + +.. _4868543: https://github.com/python-semantic-release/python-semantic-release/commit/486854393b24803bb2356324e045ccab17510d46 +.. _546b5bf: https://github.com/python-semantic-release/python-semantic-release/commit/546b5bf15466c6f5dfe93c1c03ca34604b0326f2 +.. _90c9d8d: https://github.com/python-semantic-release/python-semantic-release/commit/90c9d8d4cd6d43be094cda86579e00b507571f98 + + +.. _changelog-v3.1.0: + +v3.1.0 (2015-08-31) +=================== + +✨ Features +----------- + +* **pypi**: Add option to disable pypi upload (`f5cd079`_) + +.. _f5cd079: https://github.com/python-semantic-release/python-semantic-release/commit/f5cd079edb219de5ad03a71448d578f5f477da9c + + +.. _changelog-v3.0.0: + +v3.0.0 (2015-08-25) +=================== + +✨ Features +----------- + +* **parser**: Add tag parser (`a7f392f`_) + +🪲 Bug Fixes +------------ + +* **errors**: Add exposing of errors in package (`3662d76`_) + +* **version**: Parse file instead for version (`005dba0`_) + +.. _005dba0: https://github.com/python-semantic-release/python-semantic-release/commit/005dba0094eeb4098315ef383a746e139ffb504d +.. _3662d76: https://github.com/python-semantic-release/python-semantic-release/commit/3662d7663291859dd58a91b4b4ccde4f0edc99b2 +.. _a7f392f: https://github.com/python-semantic-release/python-semantic-release/commit/a7f392fd4524cc9207899075631032e438e2593c + + +.. _changelog-v2.1.4: + +v2.1.4 (2015-08-24) +=================== + +🪲 Bug Fixes +------------ + +* **github**: Fix property calls (`7ecdeb2`_) + +.. _7ecdeb2: https://github.com/python-semantic-release/python-semantic-release/commit/7ecdeb22de96b6b55c5404ebf54a751911c4d8cd + + +.. _changelog-v2.1.3: + +v2.1.3 (2015-08-22) +=================== + +🪲 Bug Fixes +------------ + +* **hvcs**: Make Github.token an property (`37d5e31`_) + +📖 Documentation +---------------- + +* **api**: Update apidocs (`6185380`_) + +* **parsers**: Add documentation about commit parsers (`9b55422`_) + +* **readme**: Update readme with information about the changelog command (`56a745e`_) + +.. _37d5e31: https://github.com/python-semantic-release/python-semantic-release/commit/37d5e3110397596a036def5f1dccf0860964332c +.. _56a745e: https://github.com/python-semantic-release/python-semantic-release/commit/56a745ef6fa4edf6f6ba09c78fcc141102cf2871 +.. _6185380: https://github.com/python-semantic-release/python-semantic-release/commit/6185380babedbbeab2a2a342f17b4ff3d4df6768 +.. _9b55422: https://github.com/python-semantic-release/python-semantic-release/commit/9b554222768036024a133153a559cdfc017c1d91 + + +.. _changelog-v2.1.2: + +v2.1.2 (2015-08-20) +=================== + +🪲 Bug Fixes +------------ + +* **cli**: Fix call to generate_changelog in publish (`5f8bce4`_) + +.. _5f8bce4: https://github.com/python-semantic-release/python-semantic-release/commit/5f8bce4cbb5e1729e674efd6c651e2531aea2a16 + + +.. _changelog-v2.1.1: + +v2.1.1 (2015-08-20) +=================== + +🪲 Bug Fixes +------------ + +* **history**: Fix issue in get_previous_version (`f961786`_) + +.. _f961786: https://github.com/python-semantic-release/python-semantic-release/commit/f961786aa3eaa3a620f47cc09243340fd329b9c2 + + +.. _changelog-v2.1.0: + +v2.1.0 (2015-08-20) +=================== + +✨ Features +----------- + +* **cli**: Add the possibility to re-post the changelog (`4d028e2`_) + +🪲 Bug Fixes +------------ + +* **cli**: Fix check of token in changelog command (`cc6e6ab`_) + +* **github**: Fix the github releases integration (`f0c3c1d`_) + +* **history**: Fix changelog generation (`f010272`_) + +.. _4d028e2: https://github.com/python-semantic-release/python-semantic-release/commit/4d028e21b9da01be8caac8f23f2c11e0c087e485 +.. _cc6e6ab: https://github.com/python-semantic-release/python-semantic-release/commit/cc6e6abe1e91d3aa24e8d73e704829669bea5fd7 +.. _f010272: https://github.com/python-semantic-release/python-semantic-release/commit/f01027203a8ca69d21b4aff689e60e8c8d6f9af5 +.. _f0c3c1d: https://github.com/python-semantic-release/python-semantic-release/commit/f0c3c1db97752b71f2153ae9f623501b0b8e2c98 + + +.. _changelog-v2.0.0: + +v2.0.0 (2015-08-19) +=================== + +✨ Features +----------- + +* **cli**: Add command for printing the changelog (`336b8bc`_) + +* **github**: Add github release changelog helper (`da18795`_) + +* **history**: Add angular parser (`91e4f0f`_) + +* **history**: Add generate_changelog function (`347f21a`_) + +* **history**: Add markdown changelog formatter (`d77b58d`_) + +* **history**: Set angular parser as the default (`c2cf537`_) + +* **publish**: Add publishing of changelog to github (`74324ba`_) + +* **settings**: Add loading of current parser (`7bd0916`_) + +🪲 Bug Fixes +------------ + +* **cli**: Change output indentation on changelog (`2ca41d3`_) + +* **history**: Fix level id's in angular parser (`2918d75`_) + +* **history**: Fix regex in angular parser (`974ccda`_) + +* **history**: Support unexpected types in changelog generator (`13deacf`_) + +💥 BREAKING CHANGES +------------------- + +* **history**: The default parser is now angular. Thus, the default behavior of the commit log + evaluator will change. From now on it will use the angular commit message spec to determine the + new version. + +.. _13deacf: https://github.com/python-semantic-release/python-semantic-release/commit/13deacf5d33ed500e4e94ea702a2a16be2aa7c48 +.. _2918d75: https://github.com/python-semantic-release/python-semantic-release/commit/2918d759bf462082280ede971a5222fe01634ed8 +.. _2ca41d3: https://github.com/python-semantic-release/python-semantic-release/commit/2ca41d3bd1b8b9d9fe7e162772560e3defe2a41e +.. _336b8bc: https://github.com/python-semantic-release/python-semantic-release/commit/336b8bcc01fc1029ff37a79c92935d4b8ea69203 +.. _347f21a: https://github.com/python-semantic-release/python-semantic-release/commit/347f21a1f8d655a71a0e7d58b64d4c6bc6d0bf31 +.. _74324ba: https://github.com/python-semantic-release/python-semantic-release/commit/74324ba2749cdbbe80a92b5abbecfeab04617699 +.. _7bd0916: https://github.com/python-semantic-release/python-semantic-release/commit/7bd0916f87a1f9fe839c853eab05cae1af420cd2 +.. _91e4f0f: https://github.com/python-semantic-release/python-semantic-release/commit/91e4f0f4269d01b255efcd6d7121bbfd5a682e12 +.. _974ccda: https://github.com/python-semantic-release/python-semantic-release/commit/974ccdad392d768af5e187dabc184be9ac3e133d +.. _c2cf537: https://github.com/python-semantic-release/python-semantic-release/commit/c2cf537a42beaa60cd372c7c9f8fb45db8085917 +.. _d77b58d: https://github.com/python-semantic-release/python-semantic-release/commit/d77b58db4b66aec94200dccab94f483def4dacc9 +.. _da18795: https://github.com/python-semantic-release/python-semantic-release/commit/da187951af31f377ac57fe17462551cfd776dc6e + + +.. _changelog-v1.0.0: + +v1.0.0 (2015-08-04) +=================== + +💥 Breaking +----------- + +* Restructure helpers into history and pypi (`00f64e6`_) + +📖 Documentation +---------------- + +* Add automatic publishing documentation, resolves `#18`_ (`58076e6`_) + +.. _#18: https://github.com/python-semantic-release/python-semantic-release/issues/18 +.. _00f64e6: https://github.com/python-semantic-release/python-semantic-release/commit/00f64e623db0e21470d55488c5081e12d6c11fd3 +.. _58076e6: https://github.com/python-semantic-release/python-semantic-release/commit/58076e60bf20a5835b112b5e99a86c7425ffe7d9 + + +.. _changelog-v0.9.1: + +v0.9.1 (2015-08-04) +=================== + +🪲 Bug Fixes +------------ + +* Fix ``get_current_head_hash`` to ensure it only returns the hash (`7c28832`_) + +.. _7c28832: https://github.com/python-semantic-release/python-semantic-release/commit/7c2883209e5bf4a568de60dbdbfc3741d34f38b4 + + +.. _changelog-v0.9.0: + +v0.9.0 (2015-08-03) +=================== + +✨ Features +----------- + +* Add Python 2.7 support, resolves `#10`_ (`c05e13f`_) + +.. _#10: https://github.com/python-semantic-release/python-semantic-release/issues/10 +.. _c05e13f: https://github.com/python-semantic-release/python-semantic-release/commit/c05e13f22163237e963c493ffeda7e140f0202c6 + + +.. _changelog-v0.8.0: + +v0.8.0 (2015-08-03) +=================== + +✨ Features +----------- + +* Add ``check_build_status`` option, resolves `#5`_ (`310bb93`_) + +* Add ``get_current_head_hash`` in git helpers (`d864282`_) + +* Add git helper to get owner and name of repo (`f940b43`_) + +.. _#5: https://github.com/python-semantic-release/python-semantic-release/issues/5 +.. _310bb93: https://github.com/python-semantic-release/python-semantic-release/commit/310bb9371673fcf9b7b7be48422b89ab99753f04 +.. _d864282: https://github.com/python-semantic-release/python-semantic-release/commit/d864282c498f0025224407b3eeac69522c2a7ca0 +.. _f940b43: https://github.com/python-semantic-release/python-semantic-release/commit/f940b435537a3c93ab06170d4a57287546bd8d3b + + +.. _changelog-v0.7.0: + +v0.7.0 (2015-08-02) +=================== + +✨ Features +----------- + +* Add ``patch_without_tag`` option, resolves `#6`_ (`3734a88`_) + +📖 Documentation +---------------- + +* Set up sphinx based documentation, resolves `#1`_ (`41fba78`_) + +.. _#1: https://github.com/python-semantic-release/python-semantic-release/issues/1 +.. _#6: https://github.com/python-semantic-release/python-semantic-release/issues/6 +.. _3734a88: https://github.com/python-semantic-release/python-semantic-release/commit/3734a889f753f1b9023876e100031be6475a90d1 +.. _41fba78: https://github.com/python-semantic-release/python-semantic-release/commit/41fba78a389a8d841316946757a23a7570763c39 + + +.. _changelog-v0.6.0: + +v0.6.0 (2015-08-02) +=================== + +✨ Features +----------- + +* Add twine for uploads to pypi, resolves `#13`_ (`eec2561`_) + +.. _#13: https://github.com/python-semantic-release/python-semantic-release/issues/13 +.. _eec2561: https://github.com/python-semantic-release/python-semantic-release/commit/eec256115b28b0a18136a26d74cfc3232502f1a6 + + +.. _changelog-v0.5.4: + +v0.5.4 (2015-07-29) +=================== + +🪲 Bug Fixes +------------ + +* Add python2 not supported warning (`e84c4d8`_) + +.. _e84c4d8: https://github.com/python-semantic-release/python-semantic-release/commit/e84c4d8b6f212aec174baccd188185627b5039b6 + + +.. _changelog-v0.5.3: + +v0.5.3 (2015-07-28) +=================== + +⚙️ Build System +--------------- + +* Add ``wheel`` as a dependency (`971e479`_) + +.. _971e479: https://github.com/python-semantic-release/python-semantic-release/commit/971e4795a8b8fea371fcc02dc9221f58a0559f32 + + +.. _changelog-v0.5.2: + +v0.5.2 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix python wheel tag (`f9ac163`_) + +.. _f9ac163: https://github.com/python-semantic-release/python-semantic-release/commit/f9ac163491666022c809ad49846f3c61966e10c1 + + +.. _changelog-v0.5.1: + +v0.5.1 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix push commands (`8374ef6`_) + +.. _8374ef6: https://github.com/python-semantic-release/python-semantic-release/commit/8374ef6bd78eb564a6d846b882c99a67e116394e + + +.. _changelog-v0.5.0: + +v0.5.0 (2015-07-28) +=================== + +✨ Features +----------- + +* Add setup.py hook for the cli interface (`c363bc5`_) + +.. _c363bc5: https://github.com/python-semantic-release/python-semantic-release/commit/c363bc5d3cb9e9a113de3cd0c49dd54a5ea9cf35 + + +.. _changelog-v0.4.0: + +v0.4.0 (2015-07-28) +=================== + +✨ Features +----------- + +* Add publish command (`d8116c9`_) + +.. _d8116c9: https://github.com/python-semantic-release/python-semantic-release/commit/d8116c9dec472d0007973939363388d598697784 + + +.. _changelog-v0.3.2: + +v0.3.2 (2015-07-28) +=================== + +* No change + + +.. _changelog-v0.3.1: + +v0.3.1 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix wheel settings (`1e860e8`_) + +.. _1e860e8: https://github.com/python-semantic-release/python-semantic-release/commit/1e860e8a4d9ec580449a0b87be9660a9482fa2a4 + + +.. _changelog-v0.3.0: + +v0.3.0 (2015-07-27) +=================== + +✨ Features +----------- + +* Add support for tagging releases (`5f4736f`_) + +🪲 Bug Fixes +------------ + +* Fix issue when version should not change (`441798a`_) + +.. _441798a: https://github.com/python-semantic-release/python-semantic-release/commit/441798a223195138c0d3d2c51fc916137fef9a6c +.. _5f4736f: https://github.com/python-semantic-release/python-semantic-release/commit/5f4736f4e41bc96d36caa76ca58be0e1e7931069 + + +.. _changelog-v0.2.0: + +v0.2.0 (2015-07-27) +=================== + +✨ Features +----------- + +* added no-operation (``--noop``) mode (`44c2039`_) + +⚙️ Build System +--------------- + +* Swapped pygit2 with gitpython to avoid libgit2 dependency (`8165a2e`_) + +.. _44c2039: https://github.com/python-semantic-release/python-semantic-release/commit/44c203989aabc9366ba42ed2bc40eaccd7ac891c +.. _8165a2e: https://github.com/python-semantic-release/python-semantic-release/commit/8165a2eef2c6eea88bfa52e6db37abc7374cccba + + +.. _changelog-v0.1.1: + +v0.1.1 (2015-07-27) +=================== + +🪲 Bug Fixes +------------ + +* Fix entry point (`bd7ce7f`_) + +.. _bd7ce7f: https://github.com/python-semantic-release/python-semantic-release/commit/bd7ce7f47c49e2027767fb770024a0d4033299fa + + +.. _changelog-v0.1.0: + +v0.1.0 (2015-07-27) +=================== + +* Initial Release diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 27522ea0d..bb728da1d 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1,3 +1,5 @@ +.. _contributing_guide: + Contributing ------------ @@ -7,17 +9,21 @@ Please remember to write tests for the cool things you create or fix. Unsure about something? No worries, `open an issue`_. -.. _open an issue: https://github.com/relekang/python-semantic-release/issues/new +.. _open an issue: https://github.com/python-semantic-release/python-semantic-release/issues/new Commit messages ~~~~~~~~~~~~~~~ Since python-semantic-release is released with python-semantic-release we need the commit messages -to adhere to the `angular commit guidelines`_. If you are unsure how to describe the change correctly -just try and ask about it in your pr. If we think it should be something else or there is a -pull-request without tags we will help out in adding or changing them. +to adhere to the `Conventional Commits Specification`_. Although scopes are optional, scopes are +expected where applicable. Changes should be committed separately with the commit type they represent, +do not combine them all into one commit. + +If you are unsure how to describe the change correctly just try and ask about it in your pr. If we +think it should be something else or there is a pull-request without tags we will help out in +adding or changing them. -.. _angular commit guidelines: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits +.. _Conventional Commits Specification: https://www.conventionalcommits.org/en/v1.0.0 Releases ~~~~~~~~ diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 770236ff3..000000000 --- a/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -# This Dockerfile is only for GitHub Actions -FROM python:3.13-bookworm - -# Copy python-semantic-release source code into container -COPY . /psr - -RUN \ - # Install desired packages - apt update && apt install -y --no-install-recommends \ - # install git with git-lfs support - git git-lfs \ - # install python cmodule / binary module build utilities - python3-dev gcc make cmake cargo \ - # Configure global pip - && { \ - printf '%s\n' "[global]"; \ - printf '%s\n' "no-cache-dir = true"; \ - printf '%s\n' "disable-pip-version-check = true"; \ - } > /etc/pip.conf \ - # Create virtual environment for python-semantic-release - && python3 -m venv /psr/.venv \ - # Update core utilities in the virtual environment - && /psr/.venv/bin/pip install -U pip setuptools wheel \ - # Install psr & its dependencies from source into virtual environment - && /psr/.venv/bin/pip install /psr \ - # Cleanup - && apt clean -y - -ENV PSR_DOCKER_GITHUB_ACTION=true - -ENTRYPOINT ["/bin/bash", "-l", "/psr/action.sh"] diff --git a/MANIFEST.in b/MANIFEST.in index 9953cfd42..c6e688b9f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,5 +2,11 @@ graft src/**/data/ # include docs & testing into sdist, ignored for wheel build -graft tests/ graft docs/ +prune docs/_build/ +graft tests/ +prune tests/gh_action/ + +# Remove any generated files +prune **/__pycache__/ +prune src/*.egg-info diff --git a/README.rst b/README.rst index c8fdd9f14..6f0bbc94c 100644 --- a/README.rst +++ b/README.rst @@ -18,5 +18,5 @@ The usage information and examples for this GitHub Action is available under the `GitHub Actions section`_ of `python-semantic-release.readthedocs.io`_. .. _python-semantic-release: https://pypi.org/project/python-semantic-release/ -.. _python-semantic-release.readthedocs.io: https://python-semantic-release.readthedocs.io/en/latest/ -.. _GitHub Actions section: https://python-semantic-release.readthedocs.io/en/latest/automatic-releases/github-actions.html +.. _python-semantic-release.readthedocs.io: https://python-semantic-release.readthedocs.io/en/stable/ +.. _GitHub Actions section: https://python-semantic-release.readthedocs.io/en/stable/configuration/automatic-releases/github-actions.html diff --git a/action.yml b/action.yml index 992b5d05d..0b9137bdf 100644 --- a/action.yml +++ b/action.yml @@ -7,11 +7,14 @@ branding: color: orange inputs: - root_options: - default: "-v" + + config_file: + default: "" required: false description: | - Additional options for the main command. Example: -vv --noop + Path to a custom semantic-release configuration file. By default, an empty + string will look for a pyproject.toml file in the current directory. This is the same + as passing the `-c` or `--config` parameter to semantic-release. directory: default: "." @@ -19,64 +22,78 @@ inputs: description: Sub-directory to cd into before running semantic-release github_token: - type: string required: true description: GitHub token used to push release notes and new commits/tags git_committer_name: - type: string required: false description: The human name for the “committer” field git_committer_email: - type: string required: false description: The email address for the “committer” field + no_operation_mode: + default: "false" + required: false + description: | + If set to true, the github action will pass the `--noop` parameter to + semantic-release. This will cause semantic-release to run in "no operation" + mode. See the documentation for more information on this parameter. Note that, + this parameter will not affect the output of the action, so you will still get + the version determination decision as output values. + ssh_public_signing_key: - type: string required: false description: The ssh public key used to sign commits ssh_private_signing_key: - type: string required: false description: The ssh private key used to sign commits + strict: + default: "false" + required: false + description: | + If set to true, the github action will pass the `--strict` parameter to + semantic-release. See the documentation for more information on this parameter. + + verbosity: + default: "1" + required: false + description: | + Set the verbosity level of the output as the number of -v's to pass to + semantic-release. 0 is no extra output, 1 is info level output, 2 is + debug output, and 3 is silly debug level of output. + # `semantic-release version` command line options prerelease: - type: string required: false description: | Force the next version to be a prerelease. Set to "true" or "false". prerelease_token: - type: string required: false description: "Force the next version to use this prerelease token, if it is a prerelease" force: - type: string required: false description: | Force the next version to be a major release. Must be set to one of "prerelease", "patch", "minor", or "major". commit: - type: string required: false description: Whether or not to commit changes locally. Defaults are handled by python-semantic-release internal version command. tag: - type: string required: false description: | Whether or not to make a local version tag. Defaults are handled by python-semantic-release internal version command. push: - type: string required: false description: | Whether or not to push local commits to the Git repository. See @@ -84,39 +101,54 @@ inputs: for how the default is determined between push, tag, & commit. changelog: - type: string required: false description: | Whether or not to update the changelog. vcs_release: - type: string required: false description: | Whether or not to create a release in the remote VCS, if supported build: - type: string required: false description: | Whether or not to run the build_command for the project. Defaults are handled by python-semantic-release internal version command. build_metadata: - type: string required: false description: | Build metadata to append to the new version outputs: + commit_sha: + description: | + The commit SHA of the release if a release was made, otherwise an empty string + is_prerelease: description: | "true" if the version is a prerelease, "false" otherwise + link: + description: | + The link to the release in the remote VCS, if a release was made. If no release was made, + this will be an empty string. + + previous_version: + description: | + The previous version before the release, if a release was or will be made. If no release is detected, + this will be the current version or an empty string if no previous version exists. + released: description: | "true" if a release was made, "false" otherwise + release_notes: + description: | + The release notes generated by the release, if any. If no release was made, + this will be an empty string. + tag: description: | The Git tag corresponding to the version output @@ -127,4 +159,4 @@ outputs: runs: using: docker - image: Dockerfile + image: src/gh_action/Dockerfile diff --git a/config/release-templates/.components/changelog_1.0.0.rst.j2 b/config/release-templates/.components/changelog_1.0.0.rst.j2 new file mode 100644 index 000000000..303d6b183 --- /dev/null +++ b/config/release-templates/.components/changelog_1.0.0.rst.j2 @@ -0,0 +1,254 @@ +{# + This file overrides what would be generated normally because the commits are + not conformative to the standard commit message format. +#} +.. _changelog-v1.0.0: + +v1.0.0 (2015-08-04) +=================== + +💥 Breaking +----------- + +* Restructure helpers into history and pypi (`00f64e6`_) + +📖 Documentation +---------------- + +* Add automatic publishing documentation, resolves `#18`_ (`58076e6`_) + +.. _#18: https://github.com/python-semantic-release/python-semantic-release/issues/18 +.. _00f64e6: https://github.com/python-semantic-release/python-semantic-release/commit/00f64e623db0e21470d55488c5081e12d6c11fd3 +.. _58076e6: https://github.com/python-semantic-release/python-semantic-release/commit/58076e60bf20a5835b112b5e99a86c7425ffe7d9 + + +.. _changelog-v0.9.1: + +v0.9.1 (2015-08-04) +=================== + +🪲 Bug Fixes +------------ + +* Fix ``get_current_head_hash`` to ensure it only returns the hash (`7c28832`_) + +.. _7c28832: https://github.com/python-semantic-release/python-semantic-release/commit/7c2883209e5bf4a568de60dbdbfc3741d34f38b4 + + +.. _changelog-v0.9.0: + +v0.9.0 (2015-08-03) +=================== + +✨ Features +----------- + +* Add Python 2.7 support, resolves `#10`_ (`c05e13f`_) + +.. _#10: https://github.com/python-semantic-release/python-semantic-release/issues/10 +.. _c05e13f: https://github.com/python-semantic-release/python-semantic-release/commit/c05e13f22163237e963c493ffeda7e140f0202c6 + + +.. _changelog-v0.8.0: + +v0.8.0 (2015-08-03) +=================== + +✨ Features +----------- + +* Add ``check_build_status`` option, resolves `#5`_ (`310bb93`_) + +* Add ``get_current_head_hash`` in git helpers (`d864282`_) + +* Add git helper to get owner and name of repo (`f940b43`_) + +.. _#5: https://github.com/python-semantic-release/python-semantic-release/issues/5 +.. _310bb93: https://github.com/python-semantic-release/python-semantic-release/commit/310bb9371673fcf9b7b7be48422b89ab99753f04 +.. _d864282: https://github.com/python-semantic-release/python-semantic-release/commit/d864282c498f0025224407b3eeac69522c2a7ca0 +.. _f940b43: https://github.com/python-semantic-release/python-semantic-release/commit/f940b435537a3c93ab06170d4a57287546bd8d3b + + +.. _changelog-v0.7.0: + +v0.7.0 (2015-08-02) +=================== + +✨ Features +----------- + +* Add ``patch_without_tag`` option, resolves `#6`_ (`3734a88`_) + +📖 Documentation +---------------- + +* Set up sphinx based documentation, resolves `#1`_ (`41fba78`_) + +.. _#1: https://github.com/python-semantic-release/python-semantic-release/issues/1 +.. _#6: https://github.com/python-semantic-release/python-semantic-release/issues/6 +.. _3734a88: https://github.com/python-semantic-release/python-semantic-release/commit/3734a889f753f1b9023876e100031be6475a90d1 +.. _41fba78: https://github.com/python-semantic-release/python-semantic-release/commit/41fba78a389a8d841316946757a23a7570763c39 + + +.. _changelog-v0.6.0: + +v0.6.0 (2015-08-02) +=================== + +✨ Features +----------- + +* Add twine for uploads to pypi, resolves `#13`_ (`eec2561`_) + +.. _#13: https://github.com/python-semantic-release/python-semantic-release/issues/13 +.. _eec2561: https://github.com/python-semantic-release/python-semantic-release/commit/eec256115b28b0a18136a26d74cfc3232502f1a6 + + +.. _changelog-v0.5.4: + +v0.5.4 (2015-07-29) +=================== + +🪲 Bug Fixes +------------ + +* Add python2 not supported warning (`e84c4d8`_) + +.. _e84c4d8: https://github.com/python-semantic-release/python-semantic-release/commit/e84c4d8b6f212aec174baccd188185627b5039b6 + + +.. _changelog-v0.5.3: + +v0.5.3 (2015-07-28) +=================== + +⚙️ Build System +--------------- + +* Add ``wheel`` as a dependency (`971e479`_) + +.. _971e479: https://github.com/python-semantic-release/python-semantic-release/commit/971e4795a8b8fea371fcc02dc9221f58a0559f32 + + +.. _changelog-v0.5.2: + +v0.5.2 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix python wheel tag (`f9ac163`_) + +.. _f9ac163: https://github.com/python-semantic-release/python-semantic-release/commit/f9ac163491666022c809ad49846f3c61966e10c1 + + +.. _changelog-v0.5.1: + +v0.5.1 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix push commands (`8374ef6`_) + +.. _8374ef6: https://github.com/python-semantic-release/python-semantic-release/commit/8374ef6bd78eb564a6d846b882c99a67e116394e + + +.. _changelog-v0.5.0: + +v0.5.0 (2015-07-28) +=================== + +✨ Features +----------- + +* Add setup.py hook for the cli interface (`c363bc5`_) + +.. _c363bc5: https://github.com/python-semantic-release/python-semantic-release/commit/c363bc5d3cb9e9a113de3cd0c49dd54a5ea9cf35 + + +.. _changelog-v0.4.0: + +v0.4.0 (2015-07-28) +=================== + +✨ Features +----------- + +* Add publish command (`d8116c9`_) + +.. _d8116c9: https://github.com/python-semantic-release/python-semantic-release/commit/d8116c9dec472d0007973939363388d598697784 + + +.. _changelog-v0.3.2: + +v0.3.2 (2015-07-28) +=================== + +* No change + + +.. _changelog-v0.3.1: + +v0.3.1 (2015-07-28) +=================== + +🪲 Bug Fixes +------------ + +* Fix wheel settings (`1e860e8`_) + +.. _1e860e8: https://github.com/python-semantic-release/python-semantic-release/commit/1e860e8a4d9ec580449a0b87be9660a9482fa2a4 + + +.. _changelog-v0.3.0: + +v0.3.0 (2015-07-27) +=================== + +✨ Features +----------- + +* Add support for tagging releases (`5f4736f`_) + +🪲 Bug Fixes +------------ + +* Fix issue when version should not change (`441798a`_) + +.. _441798a: https://github.com/python-semantic-release/python-semantic-release/commit/441798a223195138c0d3d2c51fc916137fef9a6c +.. _5f4736f: https://github.com/python-semantic-release/python-semantic-release/commit/5f4736f4e41bc96d36caa76ca58be0e1e7931069 + + +.. _changelog-v0.2.0: + +v0.2.0 (2015-07-27) +=================== + +✨ Features +----------- + +* added no-operation (``--noop``) mode (`44c2039`_) + +⚙️ Build System +--------------- + +* Swapped pygit2 with gitpython to avoid libgit2 dependency (`8165a2e`_) + +.. _44c2039: https://github.com/python-semantic-release/python-semantic-release/commit/44c203989aabc9366ba42ed2bc40eaccd7ac891c +.. _8165a2e: https://github.com/python-semantic-release/python-semantic-release/commit/8165a2eef2c6eea88bfa52e6db37abc7374cccba + + +.. _changelog-v0.1.1: + +v0.1.1 (2015-07-27) +=================== + +🪲 Bug Fixes +------------ + +* Fix entry point (`bd7ce7f`_) + +.. _bd7ce7f: https://github.com/python-semantic-release/python-semantic-release/commit/bd7ce7f47c49e2027767fb770024a0d4033299fa diff --git a/config/release-templates/.components/changelog_header.rst.j2 b/config/release-templates/.components/changelog_header.rst.j2 new file mode 100644 index 000000000..829078cb0 --- /dev/null +++ b/config/release-templates/.components/changelog_header.rst.j2 @@ -0,0 +1,10 @@ +.. _changelog: + +{% if ctx.changelog_mode == "update" +%}{# # Modified insertion flag to insert a changelog header directly + # which convienently puts the insertion flag incognito when reading raw RST +#}{{ + insertion_flag ~ "\n" + +}}{% endif +%} diff --git a/config/release-templates/.components/changelog_init.rst.j2 b/config/release-templates/.components/changelog_init.rst.j2 new file mode 100644 index 000000000..5cfa3b008 --- /dev/null +++ b/config/release-templates/.components/changelog_init.rst.j2 @@ -0,0 +1,39 @@ +{# +This changelog template initializes a full changelog for the project, +it follows the following logic: + 1. Header + 2. Any Unreleased Details (uncommon) + 3. all previous releases except the very first release + 4. the first release + +#}{# + # # Header +#}{% include "changelog_header.rst.j2" +-%}{# + # # Any Unreleased Details (uncommon) +#}{% include "unreleased_changes.rst.j2" +-%}{# + # # Since this is initialization, we are generating all the previous + # # release notes per version. The very first release notes is specialized. + # # We also have non-conformative commits, so insert manual write-ups. +#}{% if releases | length > 0 +%}{% for release in releases +%}{% if loop.last +%}{{ "\n" +}}{% include "first_release.rst.j2" +-%}{{ "\n" +}}{# +#}{% elif release.version == "1.0.0" +%}{# # Append 0.1.1 through 1.0.0 non-generated changelog only once +#}{{ "\n" +}}{% include "changelog_1.0.0.rst.j2" +-%}{{ "\n\n" +}}{# +#}{% elif release.version > "1.0.0" +%}{{ "\n" +}}{% include "versioned_changes.rst.j2" +-%}{{ "\n" +}}{% endif +%}{% endfor +%}{% endif +%} diff --git a/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 b/config/release-templates/.components/changelog_update.rst.j2 similarity index 100% rename from src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 rename to config/release-templates/.components/changelog_update.rst.j2 diff --git a/config/release-templates/.components/changes.md.j2 b/config/release-templates/.components/changes.md.j2 new file mode 100644 index 000000000..6cdef2d17 --- /dev/null +++ b/config/release-templates/.components/changes.md.j2 @@ -0,0 +1,127 @@ +{% from 'macros.common.j2' import apply_alphabetical_ordering_by_brk_descriptions +%}{% from 'macros.common.j2' import apply_alphabetical_ordering_by_descriptions +%}{% from 'macros.common.j2' import apply_alphabetical_ordering_by_release_notices +%}{% from 'macros.common.j2' import emoji_map, format_breaking_changes_description +%}{% from 'macros.common.j2' import format_release_notice, section_heading_order +%}{% from 'macros.common.j2' import section_heading_translations +%}{% from 'macros.md.j2' import format_commit_summary_line +%}{# +EXAMPLE: + +### ✨ Features + +- Add new feature ([#10](https://domain.com/namespace/repo/pull/10), + [`abcdef0`](https://domain.com/namespace/repo/commit/HASH)) + +- **scope**: Add new feature ([`abcdef0`](https://domain.com/namespace/repo/commit/HASH)) + +### 🪲 Bug Fixes + +- Fix bug ([#11](https://domain.com/namespace/repo/pull/11), + [`abcdef1`](https://domain.com/namespace/repo/commit/HASH)) + +### 💥 Breaking Changes + +- With the change _____, the change causes ___ effect. Ultimately, this section + it is a more detailed description of the breaking change. With an optional + scope prefix like the commit messages above. + +- **scope**: this breaking change has a scope to identify the part of the code that + this breaking change applies to for better context. + +### 💡 Additional Release Information + +- This is a release note that provides additional information about the release + that is not a breaking change or a feature/bug fix. + +- **scope**: this release note has a scope to identify the part of the code that + this release note applies to for better context. + +#}{% set max_line_width = max_line_width | default(100) +%}{% set hanging_indent = hanging_indent | default(2) +%}{# +#}{% for type_ in section_heading_order if type_ in commit_objects +%}{# PREPROCESS COMMITS (order by description & format description line) +#}{% set ns = namespace(commits=commit_objects[type_]) +%}{% set _ = apply_alphabetical_ordering_by_descriptions(ns) +%}{# +#}{% set commit_descriptions = [] +%}{# +#}{% for commit in ns.commits +%}{# # Generate the commit summary line and format it for Markdown +#}{% set description = "- %s" | format(format_commit_summary_line(commit)) +%}{% set description = description | autofit_text_width(max_line_width, hanging_indent) +%}{% set _ = commit_descriptions.append(description) +%}{% endfor +%}{# + # # PRINT SECTION (header & commits) +#}{{ "\n" +}}{{ "### %s %s\n" | format(emoji_map[type_], type_ | title) +}}{{ "\n" +}}{{ "%s\n" | format(commit_descriptions | unique | join("\n\n")) +}}{% endfor +%}{# + # # Determine if any commits have a breaking change or release notice + # # commit_objects is a dictionary of strings to a list of commits { "features", [ParsedCommit(), ...] } +#}{% set breaking_commits = [] +%}{% set notice_commits = [] +%}{% for commits in commit_objects.values() +%}{% set valid_commits = commits | rejectattr("error", "defined") | list +%}{# # Filter out breaking change commits that have no breaking descriptions +#}{% set _ = breaking_commits.extend( + valid_commits | selectattr("breaking_descriptions.0") + ) +%}{# # Filter out ParsedCommits commits that have no release notices +#}{% set _ = notice_commits.extend( + valid_commits | selectattr("release_notices.0") + ) +%}{% endfor +%}{# +#}{% if breaking_commits | length > 0 +%}{# PREPROCESS COMMITS +#}{% set brk_ns = namespace(commits=breaking_commits) +%}{% set _ = apply_alphabetical_ordering_by_brk_descriptions(brk_ns) +%}{# +#}{% set brking_descriptions = [] +%}{# +#}{% for commit in brk_ns.commits +%}{% set full_description = "- %s" | format( + format_breaking_changes_description(commit).split("\n\n") | join("\n\n- ") + ) +%}{% set _ = brking_descriptions.append( + full_description | autofit_text_width(max_line_width, hanging_indent) + ) +%}{% endfor +%}{# + # # PRINT BREAKING CHANGE DESCRIPTIONS (header & descriptions) +#}{{ "\n" +}}{{ "### %s Breaking Changes\n" | format(emoji_map["breaking"]) +}}{{ + "\n%s\n" | format(brking_descriptions | unique | join("\n\n")) +}}{# +#}{% endif +%}{# +#}{% if notice_commits | length > 0 +%}{# PREPROCESS COMMITS +#}{% set notice_ns = namespace(commits=notice_commits) +%}{% set _ = apply_alphabetical_ordering_by_release_notices(notice_ns) +%}{# +#}{% set release_notices = [] +%}{# +#}{% for commit in notice_ns.commits +%}{% set full_description = "- %s" | format( + format_release_notice(commit).split("\n\n") | join("\n\n- ") + ) +%}{% set _ = release_notices.append( + full_description | autofit_text_width(max_line_width, hanging_indent) + ) +%}{% endfor +%}{# + # # PRINT RELEASE NOTICE INFORMATION (header & descriptions) +#}{{ "\n" +}}{{ "### %s Additional Release Information\n" | format(emoji_map["release_note"]) +}}{{ + "\n%s\n" | format(release_notices | unique | join("\n\n")) +}}{# +#}{% endif +%} diff --git a/config/release-templates/.components/changes.rst.j2 b/config/release-templates/.components/changes.rst.j2 new file mode 100644 index 000000000..9751108c2 --- /dev/null +++ b/config/release-templates/.components/changes.rst.j2 @@ -0,0 +1,174 @@ +{% from 'macros.common.j2' import apply_alphabetical_ordering_by_brk_descriptions +%}{% from 'macros.common.j2' import apply_alphabetical_ordering_by_descriptions +%}{% from 'macros.common.j2' import apply_alphabetical_ordering_by_release_notices +%}{% from 'macros.common.j2' import emoji_map, format_breaking_changes_description +%}{% from 'macros.common.j2' import format_release_notice, section_heading_order +%}{% from 'macros.common.j2' import section_heading_translations +%}{% from 'macros.rst.j2' import extract_issue_link_references, extract_pr_link_reference +%}{% from 'macros.rst.j2' import format_commit_summary_line, format_link_reference +%}{% from 'macros.rst.j2' import generate_heading_underline +%}{# + +✨ Features +----------- + +* Add new feature (`#10`_, `8a7b8ec`_) + +* **scope**: Add another feature (`abcdef0`_) + +🪲 Bug Fixes +------------ + +* Fix bug (`#11`_, `8a7b8ec`_) + +💥 Breaking Changes +------------------- + +* With the change _____, the change causes ___ effect. Ultimately, this section + it is a more detailed description of the breaking change. With an optional + scope prefix like the commit messages above. + +* **scope**: this breaking change has a scope to identify the part of the code that + this breaking change applies to for better context. + +💡 Additional Release Information +--------------------------------- + +* This is a release note that provides additional information about the release + that is not a breaking change or a feature/bug fix. + +* **scope**: this release note has a scope to identify the part of the code that + this release note applies to for better context. + +.. _8a7B8ec: https://domain.com/owner/repo/commit/8a7b8ec +.. _abcdef0: https://domain.com/owner/repo/commit/abcdef0 +.. _PR#10: https://domain.com/namespace/repo/pull/10 +.. _PR#11: https://domain.com/namespace/repo/pull/11 + +#}{% set max_line_width = max_line_width | default(100) +%}{% set hanging_indent = hanging_indent | default(2) +%}{# +#}{% set post_paragraph_links = [] +%}{# +#}{% for type_ in section_heading_order if type_ in commit_objects +%}{# # PREPARE SECTION HEADER +#}{% set section_header = "%s %s" | format( + emoji_map[type_], type_ | title + ) +%}{# + # # PREPROCESS COMMITS +#}{% set ns = namespace(commits=commit_objects[type_]) +%}{% set _ = apply_alphabetical_ordering_by_descriptions(ns) +%}{# +#}{% set commit_descriptions = [] +%}{# +#}{% for commit in ns.commits +%}{# # Extract PR/MR reference if it exists and store it for later +#}{% set pr_link_reference = extract_pr_link_reference(commit) | default("", true) +%}{% if pr_link_reference != "" +%}{% set _ = post_paragraph_links.append(pr_link_reference) +%}{% endif +%}{# + # # Extract Issue references if they exists and store it for later +#}{% set issue_urls_ns = namespace(urls=[]) +%}{% set _ = extract_issue_link_references(issue_urls_ns, commit) +%}{% set _ = post_paragraph_links.extend(issue_urls_ns.urls) +%}{# + # # Always generate a commit hash reference link and store it for later +#}{% set commit_hash_link_reference = format_link_reference( + commit.hexsha | commit_hash_url, + commit.short_hash + ) +%}{% set _ = post_paragraph_links.append(commit_hash_link_reference) +%}{# + # # Generate the commit summary line and format it for RST +#}{% set description = "* %s" | format(format_commit_summary_line(commit)) +%}{% set description = description | convert_md_to_rst +%}{% set description = description | autofit_text_width(max_line_width, hanging_indent) +%}{% set _ = commit_descriptions.append(description) +%}{% endfor +%}{# + # # PRINT SECTION (Header & Commits) + # Note: Must add an additional character to the section header when determining the underline because of + # the emoji character which can serve as 2 characters in length. +#}{{ "\n" +}}{{ section_header ~ "\n" +}}{{ generate_heading_underline(section_header ~ " ", '-') ~ "\n" +}}{{ + "\n%s\n" | format(commit_descriptions | unique | join("\n\n")) + +}}{% endfor +%}{# + # # Determine if any commits have a breaking change or release notice + # # commit_objects is a dictionary of strings to a list of commits { "features", [ParsedCommit(), ...] } +#}{% set breaking_commits = [] +%}{% set notice_commits = [] +%}{% for commits in commit_objects.values() +%}{% set valid_commits = commits | rejectattr("error", "defined") | list +%}{# # Filter out breaking change commits that have no breaking descriptions +#}{% set _ = breaking_commits.extend( + valid_commits | selectattr("breaking_descriptions.0") + ) +%}{# # Filter out ParsedCommits commits that have no release notices +#}{% set _ = notice_commits.extend( + valid_commits | selectattr("release_notices.0") + ) +%}{% endfor +%}{# +#}{% if breaking_commits | length > 0 +%}{# # PREPROCESS COMMITS +#}{% set brk_ns = namespace(commits=breaking_commits) +%}{% set _ = apply_alphabetical_ordering_by_brk_descriptions(brk_ns) +%}{# +#}{% set brking_descriptions = [] +%}{# +#}{% for commit in brk_ns.commits +%}{% set full_description = "* %s" | format( + format_breaking_changes_description(commit).split("\n\n") | join("\n\n* ") + ) +%}{% set _ = brking_descriptions.append( + full_description | convert_md_to_rst | autofit_text_width(max_line_width, hanging_indent) + ) +%}{% endfor +%}{# + # # PRINT BREAKING CHANGE DESCRIPTIONS (header & descriptions) +#}{{ "\n" +}}{{ "%s Breaking Changes\n" | format(emoji_map["breaking"]) +}}{{ '-------------------\n' +}}{{ + "\n%s\n" | format(brking_descriptions | unique | join("\n\n")) +}}{# +#}{% endif +%}{# +#}{% if notice_commits | length > 0 +%}{# PREPROCESS COMMITS +#}{% set notice_ns = namespace(commits=notice_commits) +%}{% set _ = apply_alphabetical_ordering_by_release_notices(notice_ns) +%}{# +#}{% set release_notices = [] +%}{# +#}{% for commit in notice_ns.commits +%}{% set full_description = "* %s" | format( + format_release_notice(commit).split("\n\n") | join("\n\n* ") + ) +%}{% set _ = release_notices.append( + full_description | convert_md_to_rst | autofit_text_width(max_line_width, hanging_indent) + ) +%}{% endfor +%}{# + # # PRINT RELEASE NOTICE INFORMATION (header & descriptions) +#}{{ "\n" +}}{{ "%s Additional Release Information\n" | format(emoji_map["release_note"]) +}}{{ "---------------------------------\n" +}}{{ + "\n%s\n" | format(release_notices | unique | join("\n\n")) +}}{# +#}{% endif +%}{# + # + # # PRINT POST PARAGRAPH LINKS +#}{% if post_paragraph_links | length > 0 +%}{# # Print out any PR/MR or Issue URL references that were found in the commit messages +#}{{ "\n%s\n" | format(post_paragraph_links | unique | sort | join("\n")) +}}{% endif +%} diff --git a/config/release-templates/.components/first_release.md.j2 b/config/release-templates/.components/first_release.md.j2 new file mode 100644 index 000000000..d0e44f7cc --- /dev/null +++ b/config/release-templates/.components/first_release.md.j2 @@ -0,0 +1,18 @@ +{# EXAMPLE: + +## vX.X.X (YYYY-MMM-DD) + +_This release is published under the MIT License._ # Release Notes Only + +- Initial Release + +#}{{ +"## %s (%s)\n" | format( + release.version.as_semver_tag(), + release.tagged_date.strftime("%Y-%m-%d") +) +}}{% if license_name is defined and license_name +%}{{ "\n_This release is published under the %s License._\n" | format(license_name) +}}{% endif +%} +- Initial Release diff --git a/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 b/config/release-templates/.components/first_release.rst.j2 similarity index 95% rename from src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 rename to config/release-templates/.components/first_release.rst.j2 index 15c8c5301..5c08066f7 100644 --- a/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +++ b/config/release-templates/.components/first_release.rst.j2 @@ -6,6 +6,8 @@ vX.X.X (YYYY-MMM-DD) ==================== +* Initial Release + #}{% set version_header = "%s (%s)" | format( release.version.as_semver_tag(), release.tagged_date.strftime("%Y-%m-%d") diff --git a/config/release-templates/.components/macros.common.j2 b/config/release-templates/.components/macros.common.j2 new file mode 100644 index 000000000..5ec7ff6d0 --- /dev/null +++ b/config/release-templates/.components/macros.common.j2 @@ -0,0 +1,160 @@ +{# TODO: move to configuration for user to modify #} +{% set section_heading_translations = { + 'feat': 'features', + 'fix': 'bug fixes', + 'perf': 'performance improvements', + 'docs': 'documentation', + 'build': 'build system', + 'refactor': 'refactoring', + 'test': 'testing', + 'ci': 'continuous integration', + 'chore': 'chores', + 'style': 'code style', + } +%} + +{% set section_heading_order = section_heading_translations.values() %} + +{% set emoji_map = { + 'breaking': '💥', + 'features': '✨', + 'bug fixes': '🪲', + 'performance improvements': '⚡', + 'documentation': '📖', + 'build system': '⚙️', + 'refactoring': '♻️', + 'testing': '✅', + 'continuous integration': '🤖', + 'chores': '🧹', + 'code style': '🎨', + 'unknown': '❗', + 'release_note': '💡', +} %} + + +{# + MACRO: Capitalize the first letter of a string only +#}{% macro capitalize_first_letter_only(sentence) +%}{{ (sentence[0] | upper) ~ sentence[1:] +}}{% endmacro +%} + + +{# + MACRO: format a commit descriptions list by: + - Capitalizing the first line of the description + - Adding an optional scope prefix + - Joining the rest of the descriptions with a double newline +#}{% macro format_attr_paragraphs(commit, attribute) +%}{# NOTE: requires namespace because of the way Jinja2 handles variable scoping with loops +#}{% set ns = namespace(full_description="") +%}{# +#}{% if commit.error is undefined +%}{% for paragraph in commit | attr(attribute) +%}{% if paragraph | trim | length > 0 +%}{# +#}{% set ns.full_description = [ + ns.full_description, + capitalize_first_letter_only(paragraph) | trim | safe, + ] | join("\n\n") +%}{# +#}{% endif +%}{% endfor +%}{# +#}{% set ns.full_description = ns.full_description | trim +%}{# +#}{% if commit.scope +%}{% set ns.full_description = "**%s**: %s" | format( + commit.scope, ns.full_description + ) +%}{% endif +%}{% endif +%}{# +#}{{ ns.full_description +}}{% endmacro +%} + + +{# + MACRO: format the breaking changes description by: + - Capitalizing the description + - Adding an optional scope prefix +#}{% macro format_breaking_changes_description(commit) +%}{{ format_attr_paragraphs(commit, 'breaking_descriptions') +}}{% endmacro +%} + + +{# + MACRO: format the release notice by: + - Capitalizing the description + - Adding an optional scope prefix +#}{% macro format_release_notice(commit) +%}{{ format_attr_paragraphs(commit, "release_notices") +}}{% endmacro +%} + + +{# + MACRO: order commits alphabetically by scope and attribute + - Commits are sorted based on scope and then the attribute alphabetically + - Commits without scope are placed first and sorted alphabetically by the attribute + - parameter: ns (namespace) object with a commits list + - parameter: attr (string) attribute to sort by + - returns None but modifies the ns.commits list in place +#}{% macro order_commits_alphabetically_by_scope_and_attr(ns, attr) +%}{% set ordered_commits = [] +%}{# + # # Eliminate any ParseError commits from input set +#}{% set filtered_commits = ns.commits | rejectattr("error", "defined") | list +%}{# + # # grab all commits with no scope and sort alphabetically by attr +#}{% for commit in filtered_commits | rejectattr("scope") | sort(attribute=attr) +%}{% set _ = ordered_commits.append(commit) +%}{% endfor +%}{# + # # grab all commits with a scope and sort alphabetically by the scope and then attr +#}{% for commit in filtered_commits | selectattr("scope") | sort(attribute=(['scope', attr] | join(","))) +%}{% set _ = ordered_commits.append(commit) +%}{% endfor +%}{# + # # Return the ordered commits +#}{% set ns.commits = ordered_commits +%}{% endmacro +%} + + +{# + MACRO: apply smart ordering of commits objects based on alphabetized summaries and then scopes + - Commits are sorted based on the commit type and the commit message + - Commits are grouped by the commit type + - parameter: ns (namespace) object with a commits list + - returns None but modifies the ns.commits list in place +#}{% macro apply_alphabetical_ordering_by_descriptions(ns) +%}{% set _ = order_commits_alphabetically_by_scope_and_attr(ns, 'descriptions.0') +%}{% endmacro +%} + + +{# + MACRO: apply smart ordering of commits objects based on alphabetized breaking changes and then scopes + - Commits are sorted based on the commit type and the commit message + - Commits are grouped by the commit type + - parameter: ns (namespace) object with a commits list + - returns None but modifies the ns.commits list in place +#}{% macro apply_alphabetical_ordering_by_brk_descriptions(ns) +%}{% set _ = order_commits_alphabetically_by_scope_and_attr(ns, 'breaking_descriptions.0') +%}{% endmacro +%} + + +{# + MACRO: apply smart ordering of commits objects based on alphabetized release notices and then scopes + - Commits are sorted based on the commit type and the commit message + - Commits are grouped by the commit type + - parameter: ns (namespace) object with a commits list + - returns None but modifies the ns.commits list in place +#}{% macro apply_alphabetical_ordering_by_release_notices(ns) +%}{% set _ = order_commits_alphabetically_by_scope_and_attr(ns, 'release_notices.0') +%}{% endmacro +%} diff --git a/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 b/config/release-templates/.components/macros.md.j2 similarity index 53% rename from src/semantic_release/data/templates/angular/md/.components/macros.md.j2 rename to config/release-templates/.components/macros.md.j2 index 9af829119..bbccd9c86 100644 --- a/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +++ b/config/release-templates/.components/macros.md.j2 @@ -1,3 +1,6 @@ +{% from 'macros.common.j2' import capitalize_first_letter_only %} + + {# MACRO: format a inline link reference in Markdown #}{% macro format_link(link, label) @@ -10,41 +13,43 @@ MACRO: commit message links or PR/MR links of commit #}{% macro commit_msg_links(commit) %}{% if commit.error is undefined -%}{% set commit_hash_link = format_link( - commit.hexsha | commit_hash_url, - "`%s`" | format(commit.short_hash) - ) %}{# -#}{% set summary_line = commit.descriptions[0] | safe -%}{% set summary_line = [ - summary_line.split(" ", maxsplit=1)[0] | capitalize, - summary_line.split(" ", maxsplit=1)[1] - ] | join(" ") + # # Initialize variables +#}{% set link_references = [] +%}{% set summary_line = capitalize_first_letter_only( + commit.descriptions[0] | safe + ) %}{# #}{% if commit.linked_merge_request != "" %}{# # Add PR references with a link to the PR -#}{% set pr_num = commit.linked_merge_request -%}{% set pr_link = format_link(pr_num | pull_request_url, pr_num) +#}{% set _ = link_references.append( + format_link( + commit.linked_merge_request | pull_request_url, + "PR" ~ commit.linked_merge_request + ) + ) +%}{% endif %}{# - # TODO: breaking change v10, remove summary line replacers as PSR will do it for us -#}{% set summary_line = summary_line | replace("(pull request", "(") | replace("(" ~ pr_num ~ ")", "") | trim -%}{% set summary_line = "%s (%s, %s)" | format( - summary_line, - pr_link, - commit_hash_link, + # # DEFAULT: Always include the commit hash as a link +#}{% set _ = link_references.append( + format_link( + commit.hexsha | commit_hash_url, + "`%s`" | format(commit.short_hash) ) + ) %}{# - # DEFAULT: No PR identifier found, so just append commit hash as url to the commit summary_line -#}{% else -%}{% set summary_line = "%s (%s)" | format(summary_line, commit_hash_link) +#}{% set formatted_links = "" +%}{% if link_references | length > 0 +%}{% set formatted_links = " (%s)" | format(link_references | join(", ")) %}{% endif %}{# # Return the modified summary_line -#}{{ summary_line +#}{{ summary_line ~ formatted_links }}{% endif %}{% endmacro %} + {# MACRO: format commit summary line #}{% macro format_commit_summary_line(commit) diff --git a/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 b/config/release-templates/.components/macros.rst.j2 similarity index 53% rename from src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 rename to config/release-templates/.components/macros.rst.j2 index 14ffa6d26..11c61d6de 100644 --- a/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +++ b/config/release-templates/.components/macros.rst.j2 @@ -1,3 +1,6 @@ +{% from 'macros.common.j2' import capitalize_first_letter_only %} + + {# MACRO: format a post-paragraph link reference in RST #}{% macro format_link_reference(link, label) @@ -6,6 +9,56 @@ %} +{# MACRO: generate a heading underline that matches the exact length of the header #} +{% macro generate_heading_underline(header, underline_char) +%}{% set header_underline = [] +%}{% for _ in header +%}{% set __ = header_underline.append(underline_char) +%}{% endfor +%}{# # Print out the header underline +#}{{ header_underline | join +}}{% endmacro +%} + + +{# + MACRO: formats a commit message for a non-inline RST link for a commit hash and/or PR/MR +#}{% macro commit_msg_links(commit) +%}{% if commit.error is undefined +%}{# + # # Initialize variables +#}{% set closes_statement = "" +%}{% set link_references = [] +%}{% set summary_line = capitalize_first_letter_only( + commit.descriptions[0] | safe + ) +%}{# +#}{% if commit.linked_issues | length > 0 +%}{% set closes_statement = ", closes `%s`_" | format( + commit.linked_issues | join("`_, `") + ) +%}{% endif +%}{# +#}{% if commit.linked_merge_request != "" +%}{# # Add PR references with a link to the PR +#}{% set _ = link_references.append("`PR%s`_" | format(commit.linked_merge_request)) +%}{% endif +%}{# + # DEFAULT: Always include the commit hash as a link +#}{% set _ = link_references.append("`%s`_" | format(commit.short_hash)) +%}{# +#}{% set formatted_links = "" +%}{% if link_references | length > 0 +%}{% set formatted_links = " (%s)" | format(link_references | join(", ")) +%}{% endif +%}{# + # Return the modified summary_line +#}{{ summary_line ~ closes_statement ~ formatted_links +}}{% endif +%}{% endmacro +%} + + {# MACRO: format commit summary line #}{% macro format_commit_summary_line(commit) @@ -30,6 +83,30 @@ %} +{# + MACRO: Extract issue references from a parsed commit object + - Stores the issue urls in the namespace object +#}{% macro extract_issue_link_references(ns, commit) +%}{% set issue_urls = [] +%}{# +#}{% if commit.linked_issues is defined and commit.linked_issues | length > 0 +%}{% for issue_num in commit.linked_issues +%}{# # Create an issue reference url +#}{% set _ = issue_urls.append( + format_link_reference( + issue_num | issue_url, + issue_num, + ) + ) +%}{% endfor +%}{% endif +%}{# + # # Store the issue urls in the namespace object +#}{% set ns.urls = issue_urls +%}{% endmacro +%} + + {# MACRO: Create & return an non-inline RST link from a commit message - Returns empty string if no PR/MR identifier is found @@ -41,57 +118,9 @@ %}{# # Create a PR/MR reference url #}{{ format_link_reference( commit.linked_merge_request | pull_request_url, - commit.linked_merge_request, + "PR" ~ commit.linked_merge_request, ) }}{% endif %}{% endif %}{% endmacro %} - - -{# - MACRO: formats a commit message for a non-inline RST link for a commit hash and/or PR/MR -#}{% macro commit_msg_links(commit, hvcs_type) -%}{% if commit.error is undefined -%}{% set commit_hash_link = "`%s`_" | format(commit.short_hash) -%}{# -#}{% set summary_line = commit.descriptions[0] | safe -%}{% set summary_line = [ - summary_line.split(" ", maxsplit=1)[0] | capitalize, - summary_line.split(" ", maxsplit=1)[1] - ] | join(" ") -%}{# -#}{% if commit.linked_merge_request != "" -%}{# # Add PR references with a link to the PR -#}{% set pr_link = "`%s`_" | format(commit.linked_merge_request) -%}{# - # TODO: breaking change v10, remove summary line replacers as PSR will do it for us -#}{% set summary_line = summary_line | replace("(pull request ", "(") | replace("(" ~ commit.linked_merge_request ~ ")", "") | trim -%}{% set summary_line = "%s (%s, %s)" | format( - summary_line, - pr_link, - commit_hash_link, - ) -%}{# - # DEFAULT: No PR identifier found, so just append a commit hash as url to the commit summary_line -#}{% else -%}{% set summary_line = "%s (%s)" | format(summary_line, commit_hash_link) -%}{% endif -%}{# - # Return the modified summary_line -#}{{ summary_line -}}{% endif -%}{% endmacro -%} - - -{# MACRO: generate a heading underline that matches the exact length of the header #} -{% macro generate_heading_underline(header, underline_char) -%}{% set header_underline = [] -%}{% for _ in header -%}{{ header_underline.append(underline_char) | default("", true) -}}{% endfor -%}{# # Print out the header underline -#}{{ header_underline | join -}}{% endmacro -%} diff --git a/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 b/config/release-templates/.components/unreleased_changes.rst.j2 similarity index 100% rename from src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 rename to config/release-templates/.components/unreleased_changes.rst.j2 diff --git a/config/release-templates/.components/versioned_changes.md.j2 b/config/release-templates/.components/versioned_changes.md.j2 new file mode 100644 index 000000000..f63b59961 --- /dev/null +++ b/config/release-templates/.components/versioned_changes.md.j2 @@ -0,0 +1,20 @@ +{# EXAMPLE: + +## vX.X.X (YYYY-MMM-DD) + +_This release is published under the MIT License._ # Release Notes Only + +{{ change_sections }} + +#}{{ +"## %s (%s)\n" | format( + release.version.as_semver_tag(), + release.tagged_date.strftime("%Y-%m-%d") +) +}}{% if license_name is defined and license_name +%}{{ "\n_This release is published under the %s License._\n" | format(license_name) +}}{% endif +%}{# +#}{% set commit_objects = release["elements"] +%}{% include "changes.md.j2" +-%} diff --git a/config/release-templates/.components/versioned_changes.rst.j2 b/config/release-templates/.components/versioned_changes.rst.j2 new file mode 100644 index 000000000..7ec187797 --- /dev/null +++ b/config/release-templates/.components/versioned_changes.rst.j2 @@ -0,0 +1,25 @@ +{% from 'macros.rst.j2' import generate_heading_underline %}{# + +.. _changelog-X.X.X: + +vX.X.X (YYYY-MMM-DD) +==================== + +{{ change_sections }} + +#}{% set version_header = "%s (%s)" | format( + release.version.as_semver_tag(), + release.tagged_date.strftime("%Y-%m-%d") + ) +%}{# +#}{{ + +".. _changelog-%s:" | format(release.version.as_semver_tag()) }} + +{{ version_header }} +{{ generate_heading_underline(version_header, "=") }} +{# + +#}{% set commit_objects = release["elements"] +%}{% include "changes.rst.j2" +-%} diff --git a/config/release-templates/.release_notes.md.j2 b/config/release-templates/.release_notes.md.j2 new file mode 100644 index 000000000..ee9fde4c4 --- /dev/null +++ b/config/release-templates/.release_notes.md.j2 @@ -0,0 +1,119 @@ +{% from ".components/macros.md.j2" import format_link +%}{# EXAMPLE: + +## v1.0.0 (2020-01-01) + +_This release is published under the MIT License._ + +### ✨ Features + +- Add new feature ([PR#10](https://domain.com/namespace/repo/pull/10), [`abcdef0`](https://domain.com/namespace/repo/commit/HASH)) + +- **scope**: Add new feature ([`abcdef0`](https://domain.com/namespace/repo/commit/HASH)) + +### 🪲 Bug Fixes + +- Fix bug ([PR#11](https://domain.com/namespace/repo/pull/11), [`abcdef1`](https://domain.com/namespace/repo/commit/HASH)) + +### 💥 Breaking Changes + +- With the change _____, the change causes ___ effect. Ultimately, this section it is a more detailed description of the breaking change. With an optional scope prefix like the commit messages above. + +- **scope**: this breaking change has a scope to identify the part of the code that this breaking change applies to for better context. + +### 💡 Additional Release Information + +- This is a release note that provides additional information about the release that is not a breaking change or a feature/bug fix. + +- **scope**: this release note has a scope to identify the part of the code that this release note applies to for better context. + +### ✅ Resolved Issues + +- [#000](https://domain.com/namespace/repo/issues/000): _Title_ + +--- + +**Detailed Changes**: [vX.X.X...vX.X.X](https://domain.com/namespace/repo/compare/vX.X.X...vX.X.X) + +--- + +**Installable artifacts are available from**: + +- [PyPi Registry](https://pypi.org/project/package_name/x.x.x) +- [GitHub Release Assets](https://github.com/namespace/repo/releases/tag/vX.X.X) + +#}{# # Set line width to 1000 to avoid wrapping as GitHub will handle it +#}{% set max_line_width = max_line_width | default(1000) +%}{% set hanging_indent = hanging_indent | default(2) +%}{% set license_name = license_name | default("", True) +%}{% set releases = context.history.released.values() | list +%}{% set curr_release_index = releases.index(release) +%}{# +#}{% if mask_initial_release and curr_release_index == releases | length - 1 +%}{# # On a first release, generate our special message +#}{% include ".components/first_release.md.j2" +%}{% else +%}{# # Not the first release so generate notes normally +#}{% include ".components/versioned_changes.md.j2" +-%}{# + # # If there are any commits that resolve issues, list out the issues with links +#}{% set issue_resolving_commits = [] +%}{% for commits in release["elements"].values() +%}{% set _ = issue_resolving_commits.extend( + commits | rejectattr("error", "defined") | selectattr("linked_issues") + ) +%}{% endfor +%}{% if issue_resolving_commits | length > 0 +%}{{ + "\n### ✅ Resolved Issues\n" +}}{# +#}{% set issue_numbers = [] +%}{% for linked_issues in issue_resolving_commits | map(attribute="linked_issues") +%}{% set _ = issue_numbers.extend(linked_issues) +%}{% endfor +%}{% for issue_num in issue_numbers | unique | sort_numerically +%}{{ + "\n- %s: _Title_\n" | format(format_link(issue_num | issue_url, issue_num)) +}}{# +#}{% endfor +%}{% endif +%}{# +#}{% set prev_release_index = curr_release_index + 1 +%}{# +#}{% if 'compare_url' is filter and prev_release_index < releases | length +%}{% set prev_version_tag = releases[prev_release_index].version.as_tag() +%}{% set new_version_tag = release.version.as_tag() +%}{% set version_compare_url = prev_version_tag | compare_url(new_version_tag) +%}{% set detailed_changes_link = '[{}...{}]({})'.format( + prev_version_tag, new_version_tag, version_compare_url + ) +%}{{ "\n" +}}{{ "---\n" +}}{{ "\n" +}}{{ "**Detailed Changes**: %s" | format(detailed_changes_link) +}}{{ "\n" +}}{% endif +%}{% endif +%}{# +#} +--- + +**Installable artifacts are available from**: + +{{ + "- %s" | format( + format_link( + repo_name | create_pypi_url(release.version | string), + "PyPi Registry", + ) + ) +}} + +{{ + "- %s" | format( + format_link( + release.version.as_tag() | create_release_url, + "{vcs_name} Release Assets" | format_w_official_vcs_name, + ) + ) +}} diff --git a/config/release-templates/CHANGELOG.rst.j2 b/config/release-templates/CHANGELOG.rst.j2 new file mode 100644 index 000000000..5f8553a92 --- /dev/null +++ b/config/release-templates/CHANGELOG.rst.j2 @@ -0,0 +1,22 @@ +{# + This changelog template controls which changelog creation occurs + based on which mode is provided. + + Modes: + - init: Initialize a full changelog from scratch + - update: Insert new version details where the placeholder exists in the current changelog + +#}{% set this_file = "CHANGELOG.rst" +%}{% set insertion_flag = ctx.changelog_insertion_flag +%}{% set unreleased_commits = ctx.history.unreleased +%}{% set releases = ctx.history.released.values() | list +%}{# +#}{% if ctx.changelog_mode == "init" +%}{% include ".components/changelog_init.rst.j2" +%}{# +#}{% elif ctx.changelog_mode == "update" +%}{% set prev_changelog_file = this_file +%}{% include ".components/changelog_update.rst.j2" +%}{# +#}{% endif +%} diff --git a/docs/algorithm.rst b/docs/algorithm.rst deleted file mode 100644 index b6797bb4f..000000000 --- a/docs/algorithm.rst +++ /dev/null @@ -1,205 +0,0 @@ -.. _algorithm: - -Python Semantic Release's Version Bumping Algorithm -=================================================== - -Below is a technical description of the algorithm which Python Semantic Release -uses to calculate a new version for a project. - -.. _algorithm-assumptions: - -Assumptions -~~~~~~~~~~~ - -* At runtime, we are in a Git repository with HEAD referring to a commit on - some branch of the repository (i.e. not in detached HEAD state). -* We know in advance whether we want to produce a prerelease or not (based on - the configuration and command-line flags). -* We can parse the tags of the repository into semantic versions, as we are given - the format that those Git tags should follow via configuration, but cannot - cherry-pick only tags that apply to commits on specific branches. We must parse - all tags in order to ensure we have parsed any that might apply to commits in - this branch's history. -* If we can identify a commit as a ``merge-base`` between our HEAD commit and one - or more tags, then that merge-base should be unique. -* We know ahead of time what ``prerelease_token`` to use for prereleases - e.g. - ``rc``. -* We know ahead of time whether ``major`` changes introduced by commits - should cause the new version to remain on ``0.y.z`` if the project is already - on a ``0.`` version - see :ref:`major_on_zero `. - -.. _algorithm-implementation: - -Implementation -~~~~~~~~~~~~~~ - -1. Parse all the Git tags of the repository into semantic versions, and **sort** - in descending (most recent first) order according to `semver precedence`_. - Ignore any tags which do not correspond to valid semantic vesrions according - to ``tag_format``. - - -2. Find the ``merge-base`` of HEAD and the latest tag according to the sort above. - Call this commit ``M``. - If there are no tags in the repo's history, we set ``M=HEAD``. - -3. Find the latest non-prerelease version whose tag references a commit that is - an ancestor of ``M``. We do this via a breadth-first search through the commit - lineage, starting against ``M``, and for each tag checking if the tag - corresponds to that commit. We break from the search when we find such a tag. - If no such tag is found, see 4a). - Else, suppose that tag corresponds to a commit ``L`` - goto 4b). - -4. - a. If no commit corresponding to the last non-prerelease version is found, - the entire history of the repository is considered. We parse every commit - that is an ancestor of HEAD to determine the type of change introduced - - either ``major``, ``minor``, ``patch``, ``prerelease_revision`` or - ``no_release``. We store this levels in a ``set`` as we only require - the distinct types of change that were introduced. - b. However, if we found a commit ``L`` which is the commit against which the - last non-prerelease was tagged, then we parse only the commits from HEAD - as far back as ``L``, to understand what changes have been introduced - since the previous non-prerelease. We store these levels - either - ``major``, ``minor``, ``patch``, ``prerelease_revision``, or - ``no_release``, in a set, as we only require the distinct types of change - that were introduced. - - c. We look for tags that correspond to each commit during this process, to - identify the latest pre-release that was made within HEAD's ancestry. - -5. If there have been no changes since the last non-prerelease, or all commits - since that release result in a ``no_release`` type according to the commit - parser, then we **terminate the algorithm.** - -6. If we have not exited by this point, we know the following information: - - * The latest version, by `semver precedence`_, within the whole repository. - Call this ``LV``. This might not be within the ancestry of HEAD. - * The latest version, prerelease or non-prerelease, within the whole repository. - Call this ``LVH``. This might not be within the ancestry of HEAD. - This may be the same as ``LV``. - * The latest non-prerelease version within the ancestry of HEAD. Call this - ``LVHF``. This may be the same as ``LVH``. - * The most significant type of change introduced by the commits since the - previous full release. Call this ``level`` - * Whether or not we wish to produce a prerelease from this version increment. - Call this a boolean flag, ``prerelease``. (Assumption) - * Whether or not to increment the major digit if a major change is introduced - against an existing ``0.`` version. Call this ``major_on_zero``, a boolean - flag. (Assumption) - - Using this information, the new version is decided according to the following - criteria: - - a. If ``LV`` has a major digit of ``0``, ``major_on_zero`` is ``False`` and - ``level`` is ``major``, reduce ``level`` to ``minor``. - - b. If ``prerelease=True``, then - - i. Diff ``LV`` with ``LVHF``, to understand if the ``major``, ``minor`` or - ``patch`` digits have changed. For example, diffing ``1.2.1`` and - ``1.2.0`` is a ``patch`` diff, while diffing ``2.1.1`` and ``1.17.2`` is - a ``major`` diff. Call this ``DIFF`` - - ii. If ``DIFF`` is less semantically significant than ``level``, for example - if ``DIFF=patch`` and ``level=minor``, then - - 1. Increment the digit of ``LVF`` corresponding to ``level``, for example - the minor digit if ``level=minor``, setting all less significant - digits to zero. - - 2. Add ``prerelease_token`` as a suffix result of 1., together with a - prerelease revision number of ``1``. Return this new version and - **terminate the algorithm.** - - Thus if ``DIFF=patch``, ``level=minor``, ``prerelease=True``, - ``prerelease_token="rc"``, and ``LVF=1.1.1``, - then the version returned by the algorithm is ``1.2.0-rc.1``. - - iii. If ``DIFF`` is semantically less significant than or equally - significant to ``level``, then this means that the significance - of change introduced by ``level`` is already reflected in a - prerelease version that has been created since the last full release. - For example, if ``LVHF=1.1.1``, ``LV=1.2.0-rc.1`` and ``level=minor``. - - In this case we: - - 1. If the prerelease token of ``LV`` is different from - ``prerelease_token``, take the major, minor and patch digits - of ``LV`` and construct a prerelease version using our given - ``prerelease_token`` and a prerelease revision of ``1``. We - then return this version and **terminate the algorithm.** - - For example, if ``LV=1.2.0-rc.1`` and ``prerelease_token=alpha``, - we return ``1.2.0-alpha.1``. - - 2. If the prerelease token of ``LV`` is the same as ``prerelease_token``, - we increment the revision number of ``LV``, return this version, and - - **terminate the algorithm.** - For example, if ``LV=1.2.0-rc.1`` and ``prerelease_token=rc``, - we return ``1.2.0-rc.2``. - - c. If ``prerelease=False``, then - - i. If ``LV`` is not a prerelease, then we increment the digit of ``LV`` - corresponding to ``level``, for example the minor digit if ``level=minor``, - setting all less significant digits to zero. - We return the result of this and **terminate the algorithm**. - - ii. If ``LV`` is a prerelease, then: - - 1. Diff ``LV`` with ``LVHF``, to understand if the ``major``, ``minor`` or - ``patch`` digits have changed. Call this ``DIFF`` - - 2. If ``DIFF`` is less semantically significant than ``level``, then - - i. Increment the digit of ``LV`` corresponding to ``level``, for example - the minor digit if ``level=minor``, setting all less significant - digits to zero. - - ii. Remove the prerelease token and revision number from the result of i., - ("Finalize" the result of i.) return the result and **terminate the - algorithm.** - - For example, if ``LV=1.2.2-alpha.1`` and ``level=minor``, we return - ``1.3.0``. - - 3. If ``DIFF`` is semantically less significant than or equally - significant to ``level``, then we finalize ``LV``, return the - result and **terminate the algorithm**. - -.. _semver precedence: https://semver.org/#spec-item-11 - -.. _algorithm-complexity: - -Complexity -~~~~~~~~~~ - -**Space:** - -A list of parsed tags takes ``O(number of tags)`` in space. Parsing each commit during -the breadth-first search between ``merge-base`` and the latest tag in the ancestry -of HEAD takes at worst ``O(number of commits)`` in space to track visited commits. -Therefore worst-case space complexity will be linear in the number of commits in the -repo, unless the number of tags significantly exceeds the number of commits -(in which case it will be linear in the number of tags). - -**Time:** - -Assuming using regular expression parsing of each tag is a constant-time operation, -then the following steps contribute to the time complexity of the algorithm: - -* Parsing each tag - ``O(number of tags)`` -* Sorting tags by `semver precedence`_ - - ``O(number of tags * log(number of tags))`` -* Finding the merge-base of HEAD and the latest release tag - - ``O(number of commits)`` (worst case) -* Parsing each commit and checking each tag against each commit - - ``O(number of commits) + O(number of tags * number of commits)`` - (worst case) - -Overall, assuming that the number of tags is less than or equal to the number -of commits in the repository, this would lead to a worst-case time complexity -that's quadratic in the number of commits in the repo. diff --git a/docs/commands.rst b/docs/api/commands.rst similarity index 76% rename from docs/commands.rst rename to docs/api/commands.rst index 66c01eff2..dd31a4e1a 100644 --- a/docs/commands.rst +++ b/docs/api/commands.rst @@ -1,7 +1,7 @@ .. _commands: -Commands -======== +Command Line Interface (CLI) +============================ All commands accept a ``-h/--help`` option, which displays the help text for the command and exits immediately. @@ -23,10 +23,11 @@ Correct:: semantic-release -vv --noop version --print With the exception of :ref:`cmd-main` and :ref:`cmd-generate-config`, all -commands require that you have set up your project's configuration. To help with -this step, :ref:`cmd-generate-config` can create the default configuration for you, -which will allow you to tweak it to your needs rather than write it from scratch. +commands require that you have set up your project's configuration. +To help with setting up your project configuration, :ref:`cmd-generate-config` +will print out the default configuration to the console, which +you can then modify it to match your project & environment. .. _cmd-main: @@ -95,25 +96,85 @@ pipeline, while omitting this flag would allow the pipeline to continue to run. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Detect the semantically correct next version that should be applied to your -project. +project and release it. -By default: +By default (in order): - * Write this new version to the project metadata locations - specified in the configuration file - * Build the project using :ref:`config-build_command`, if specified - * Create a new commit with these locations and any other assets configured - to be included in a release - * Tag this commit according the configured format, with a tag that uniquely - identifies the version being released - * Push the new tag and commit to the remote for the repository - * Create a release (if supported) in the remote VCS for this tag + #. Write this new version to the project metadata locations + specified in the configuration file + + #. Update the changelog file with the new version and any changes + introduced since the last release, using the configured changelog template + + #. Build the project using :ref:`config-build_command`, if specified + + #. Create a new commit with these locations and any other assets configured + to be included in a release + + #. Tag this commit according the configured format, with a tag that uniquely + identifies the version being released + + #. Push the new tag and commit to the remote for the repository + + #. Create a release in the remote VCS for this tag (if supported) + +.. note:: + + Before pushing changes to the remote (step 6), Python Semantic Release automatically + verifies that the upstream branch has not changed since the commit that triggered + the release. This prevents push conflicts when another commit was made to the + upstream branch while the release was being prepared. If the upstream branch has + changed, the command will exit with an error, and you will need to pull the latest + changes and run the command again. + + This verification only occurs when committing changes (``--commit``). If you are + running with ``--no-commit``, the verification will not be performed. + +All of these steps can be toggled on or off using the command line options +described below. Some of the steps rely on others, so some options may implicitly +disable others. Changelog generation is done identically to the way it is done in :ref:`cmd-changelog`, but this command additionally ensures the updated changelog is included in the release commit that is made. + **Common Variations** + + .. code-block:: bash + + # Print the next version that will be applied + semantic-release version --print + + # Print the next version that will be applied, including the tag prefix + semantic-release version --print-tag + + # Print the last released version + semantic-release version --print-last-released + + # Print the last released version, including the tag prefix + semantic-release version --print-last-released-tag + + # Only stamp the next version in the project metadata locations + semantic-release version --no-changelog --skip-build --no-commit --no-tag + + # Stamp the version, update the changelog, and run the build command, then stop + semantic-release version --no-commit --no-tag + + # Make all local changes but do not publish them to the remote (changelog, build, commit & tag) + semantic-release version --no-push + + # Don't ever create a changelog (but do everything else) + semantic-release version --no-changelog + + # Don't create a release in the remote VCS (but do publish the commit and tag) + semantic-release version --no-vcs-release + + # Do everything + semantic-release version + + .. seealso:: + - :ref:`Ultraviolet (uv) integration ` - :ref:`cmd-changelog` - :ref:`changelog-templates` - :ref:`config-tag_format` @@ -121,6 +182,7 @@ commit that is made. - :ref:`config-version_toml` - :ref:`config-version_variables` + .. _cmd-version-options: Options: @@ -272,8 +334,8 @@ the flag. This can be useful when making a single prerelease on a branch that would typically release normal versions. -If not specified in :ref:`cmd-version-option-prerelease-token`, the prerelease token is idenitified using the -:ref:`Multibranch Release Configuration ` +If not specified in :ref:`cmd-version-option-prerelease-token`, the prerelease token is identified +using the :ref:`Multibranch Release Configuration ` See the examples alongside :ref:`cmd-version-option-force-level` for how to use this flag. @@ -282,8 +344,9 @@ See the examples alongside :ref:`cmd-version-option-force-level` for how to use ``--prerelease-token [VALUE]`` ****************************** -Force the next version to use the value as the prerelease token. This overrides the configured value if one is -present. If not used during a release producing a prerelease version, this option has no effect. +Force the next version to use the value as the prerelease token. This overrides the configured +value if one is present. If not used during a release producing a prerelease version, this +option has no effect. .. _cmd-version-option-build-metadata: @@ -360,9 +423,9 @@ Whether or not to push new commits and/or tags to the remote repository. ``--vcs-release/--no-vcs-release`` ********************************** -Whether or not to create a "release" in the remote VCS service, if supported. Currently -releases in GitHub and Gitea remotes are supported. If releases aren't supported in a -remote VCS, this option will not cause a command failure, but will produce a warning. +Whether or not to create a "release" in the remote VCS service, if supported. If +releases aren't supported in a remote VCS, this option will not cause a command +failure, but will produce a warning. **Default:** ``--no-vcs-release`` if ``--no-push`` is supplied (including where this is implied by supplying only ``--no-commit``), otherwise ``--vcs-release`` @@ -410,16 +473,36 @@ Release corresponding to this version. Generate default configuration for semantic-release, to help you get started quickly. You can inspect the defaults, write to a file and then edit according to -your needs. -For example, to append the default configuration to your pyproject.toml -file, you can use the following command:: +your needs. For example, to append the default configuration to your ``pyproject.toml`` +file, you can use the following command (in POSIX-Compliant shells): + +.. code-block:: bash - $ semantic-release generate-config -f toml --pyproject >> pyproject.toml + semantic-release generate-config --pyproject >> pyproject.toml + +On Windows PowerShell, the redirection operators (`>`/`>>`) default to UTF-16LE, +which can introduce NUL characters. Prefer one of the following to keep UTF-8: + +.. code-block:: console + + # 2 File output Piping Options in PowerShell (Out-File or Set-Content) + + # Example for writing to pyproject.toml using Out-File: + semantic-release generate-config --pyproject | Out-File -Encoding utf8 pyproject.toml + + # Example for writing to a releaserc.toml file using Set-Content: + semantic-release generate-config -f toml | Set-Content -Encoding utf8 releaserc.toml If your project doesn't already leverage TOML files for configuration, it might better -suit your project to use JSON instead:: +suit your project to use JSON instead: + +.. code-block:: bash + + # POSIX-Compliant shell example + semantic-release generate-config -f json | tee releaserc.json - $ semantic-release generate-config -f json + # Windows PowerShell example + semantic-release generate-config -f json | Out-File -Encoding utf8 releaserc.json If you would like to add JSON configuration to a shared file, e.g. ``package.json``, you can then simply add the output from this command as a **top-level** key to the file. @@ -494,4 +577,4 @@ corresponding release is found in the remote VCS, then Python Semantic Release w attempt to create one. If using this option, the relevant authentication token *must* be supplied via the -relevant environment variable. For more information, see :ref:`index-creating-vcs-releases`. +relevant environment variable. diff --git a/docs/commit-parsing.rst b/docs/commit-parsing.rst deleted file mode 100644 index dc5d88afe..000000000 --- a/docs/commit-parsing.rst +++ /dev/null @@ -1,388 +0,0 @@ -.. _commit-parsing: - -Commit Parsing -============== - -The semver level that should be bumped on a release is determined by the -commit messages since the last release. In order to be able to decide the correct -version and generate the changelog, the content of those commit messages must -be parsed. By default this package uses a parser for the Angular commit message -style:: - - (): - - - -