1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
# SQLAlchemy-Utils Release Process
This document outlines the process for creating a new release of SQLAlchemy-Utils.
## Prerequisites
- Access to the GitHub repository with push permissions
- PyPI account with API token for the project
- `uv` package manager installed
- `gh` CLI tool installed (optional, for GitHub releases)
## Release Process
### 1. Prepare the Release
1. **Update CHANGES.rst**
- Move items from "Unreleased changes" section to a new version section
- Follow the existing format: `X.Y.Z (YYYY-MM-DD)`
- Add a new "Unreleased changes" section
2. **Update version in pyproject.toml**
```bash
# Edit pyproject.toml and update the version field
version = "X.Y.Z"
```
3. **Commit the changes**
```bash
git add CHANGES.rst pyproject.toml
git commit -m "Bump version to X.Y.Z"
git push origin master
```
### 2. Create Git Tag
```bash
git tag -a X.Y.Z -m "Release version X.Y.Z"
git push origin X.Y.Z
```
### 3. Build and Publish to PyPI
1. **Build the package**
```bash
uv build
```
2. **Publish to PyPI**
```bash
uv publish --token pypi-your-api-token-here
```
Alternatively, set the token as an environment variable:
```bash
export UV_PUBLISH_TOKEN="pypi-your-api-token-here"
uv publish
```
### 4. Create GitHub Release
```bash
gh release create X.Y.Z --title "X.Y.Z" --notes-from-tag
```
Or create the release manually on GitHub using the tag.
## Version Numbering
This project follows [Semantic Versioning](https://semver.org/):
- **MAJOR** version for incompatible API changes
- **MINOR** version for backwards-compatible functionality additions
- **PATCH** version for backwards-compatible bug fixes
|