bump version to 0.4.0
Some checks failed
Security Scan / dependency-check (pull_request) Successful in 37s
Security Scan / security (pull_request) Successful in 40s
Test Suite / lint (pull_request) Failing after 31s
Test Suite / test (3.11) (pull_request) Successful in 1m33s
Test Suite / build (pull_request) Has been skipped
Some checks failed
Security Scan / dependency-check (pull_request) Successful in 37s
Security Scan / security (pull_request) Successful in 40s
Test Suite / lint (pull_request) Failing after 31s
Test Suite / test (3.11) (pull_request) Successful in 1m33s
Test Suite / build (pull_request) Has been skipped
This commit is contained in:
133
bump_version.py
Executable file
133
bump_version.py
Executable file
@@ -0,0 +1,133 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Version bump script for EmbeddingBuddy.
|
||||||
|
Automatically updates version in pyproject.toml following semantic versioning.
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def get_current_version(pyproject_path: Path) -> str:
|
||||||
|
"""Extract current version from pyproject.toml."""
|
||||||
|
content = pyproject_path.read_text()
|
||||||
|
match = re.search(r'version\s*=\s*"([^"]+)"', content)
|
||||||
|
if not match:
|
||||||
|
raise ValueError("Could not find version in pyproject.toml")
|
||||||
|
return match.group(1)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_version(version_str: str) -> tuple[int, int, int]:
|
||||||
|
"""Parse semantic version string into major, minor, patch tuple."""
|
||||||
|
match = re.match(r'(\d+)\.(\d+)\.(\d+)', version_str)
|
||||||
|
if not match:
|
||||||
|
raise ValueError(f"Invalid version format: {version_str}")
|
||||||
|
return int(match.group(1)), int(match.group(2)), int(match.group(3))
|
||||||
|
|
||||||
|
|
||||||
|
def bump_version(current: str, bump_type: str) -> str:
|
||||||
|
"""Bump version based on type (major, minor, patch)."""
|
||||||
|
major, minor, patch = parse_version(current)
|
||||||
|
|
||||||
|
if bump_type == "major":
|
||||||
|
return f"{major + 1}.0.0"
|
||||||
|
elif bump_type == "minor":
|
||||||
|
return f"{major}.{minor + 1}.0"
|
||||||
|
elif bump_type == "patch":
|
||||||
|
return f"{major}.{minor}.{patch + 1}"
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Invalid bump type: {bump_type}")
|
||||||
|
|
||||||
|
|
||||||
|
def update_version_in_file(pyproject_path: Path, new_version: str) -> None:
|
||||||
|
"""Update version in pyproject.toml file."""
|
||||||
|
content = pyproject_path.read_text()
|
||||||
|
updated_content = re.sub(
|
||||||
|
r'version\s*=\s*"[^"]+"',
|
||||||
|
f'version = "{new_version}"',
|
||||||
|
content
|
||||||
|
)
|
||||||
|
pyproject_path.write_text(updated_content)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Main version bump function."""
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Bump version in pyproject.toml",
|
||||||
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
|
epilog="""
|
||||||
|
Examples:
|
||||||
|
python bump_version.py patch # 0.3.0 -> 0.3.1
|
||||||
|
python bump_version.py minor # 0.3.0 -> 0.4.0
|
||||||
|
python bump_version.py major # 0.3.0 -> 1.0.0
|
||||||
|
python bump_version.py --set 1.2.3 # Set specific version
|
||||||
|
|
||||||
|
Semantic versioning guide:
|
||||||
|
- patch: Bug fixes, no API changes
|
||||||
|
- minor: New features, backward compatible
|
||||||
|
- major: Breaking changes, not backward compatible
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
group = parser.add_mutually_exclusive_group(required=True)
|
||||||
|
group.add_argument(
|
||||||
|
"bump_type",
|
||||||
|
nargs="?",
|
||||||
|
choices=["major", "minor", "patch"],
|
||||||
|
help="Type of version bump"
|
||||||
|
)
|
||||||
|
group.add_argument(
|
||||||
|
"--set",
|
||||||
|
dest="set_version",
|
||||||
|
help="Set specific version (e.g., 1.2.3)"
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--dry-run",
|
||||||
|
action="store_true",
|
||||||
|
help="Show what would be changed without making changes"
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Find pyproject.toml
|
||||||
|
pyproject_path = Path("pyproject.toml")
|
||||||
|
if not pyproject_path.exists():
|
||||||
|
print("❌ pyproject.toml not found in current directory")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
current_version = get_current_version(pyproject_path)
|
||||||
|
print(f"📦 Current version: {current_version}")
|
||||||
|
|
||||||
|
if args.set_version:
|
||||||
|
# Validate the set version format
|
||||||
|
parse_version(args.set_version)
|
||||||
|
new_version = args.set_version
|
||||||
|
else:
|
||||||
|
new_version = bump_version(current_version, args.bump_type)
|
||||||
|
|
||||||
|
print(f"🚀 New version: {new_version}")
|
||||||
|
|
||||||
|
if args.dry_run:
|
||||||
|
print("🔍 Dry run - no changes made")
|
||||||
|
else:
|
||||||
|
update_version_in_file(pyproject_path, new_version)
|
||||||
|
print("✅ Version updated in pyproject.toml")
|
||||||
|
print()
|
||||||
|
print("💡 Next steps:")
|
||||||
|
print(" 1. Review changes: git diff")
|
||||||
|
print(" 2. Commit changes: git add . && git commit -m 'bump version to {}'".format(new_version))
|
||||||
|
print(" 3. Tag release: git tag v{}".format(new_version))
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
print(f"❌ Error: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ Unexpected error: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Binary file not shown.
Before Width: | Height: | Size: 339 KiB After Width: | Height: | Size: 864 KiB |
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "embeddingbuddy"
|
name = "embeddingbuddy"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
description = "A Python Dash application for interactive exploration and visualization of embedding vectors through dimensionality reduction techniques."
|
description = "A Python Dash application for interactive exploration and visualization of embedding vectors through dimensionality reduction techniques."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
Reference in New Issue
Block a user