Skip to content

Commit

Permalink
Merge pull request #59 from mtzgroup/feature-update-qcop-qcio
Browse files Browse the repository at this point in the history
  • Loading branch information
coltonbh authored Jul 13, 2024
2 parents cd6c390 + 9d95b4b commit 41a3c19
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 26 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [unreleased]

### Added

- `release.py` script.

### Changed

- Updated `qcop` and `qcio`. Reverts back to `Structure.identifiers` over `Structure.ids`. Adds 10x performance gain to `xtb` by solving their overthreading issue.

## [0.8.0] - 2024-07-10

### Changed
Expand Down
50 changes: 26 additions & 24 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,27 @@ version = "0.8.0"
description = "A distributed system for scaling and parallelizing quantum chemistry calculations"
authors = ["Colton Hicks <[email protected]>"]
readme = "README.md"
repository = "https://github.com/mtzgroup/bigchem"
homepage = "https://github.com/mtzgroup/bigchem"
license = "MIT"

[tool.poetry.dependencies]
python = "^3.8.1"
celery = { version = "^5.3.4", extras = ["redis"] }
pydantic = "^2.0.0"
qcio = "^0.10.1"
qcop = "^0.7.1"
qcop = "^0.7.3"
pydantic-settings = "^2.0.3"

# A list of all of the optional dependencies, some of which are included in the below
# `extras`. They can be opted into by apps. Clients should not need to install these.
geometric = { version = "^1.0.1", optional = true }
qcengine = { version = "^0.27.0", optional = true }
xtb = { version = "^22.1", optional = true }

[tool.poetry.extras]
geometric = ["geometric"]
qcengine = ["qcengine"]
xtb = ["xtb"]

[tool.poetry.group.dev.dependencies]
black = "^24.0.0"
Expand All @@ -37,7 +39,9 @@ paramiko = "^3.0.0"
types-paramiko = "^3.0.0.4"
ruff = "^0.0.278"
geometric = ">=1.0.1"
qcengine = "^0.27.0"
xtb = "^22.1"
types-toml = "^0.10.8.20240310"


[build-system]
Expand Down
83 changes: 83 additions & 0 deletions scripts/release.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import subprocess
import sys
from datetime import datetime

import toml


def get_repo_url():
"""Get the repository URL from pyproject.toml or ask the user for it."""
try:
with open("pyproject.toml", "r") as file:
pyproject = toml.load(file)
repo_url = pyproject["tool"]["poetry"]["repository"]
return repo_url
except KeyError:
return input("Enter the repository URL (e.g., https://github.com/user/repo): ")


def update_version_with_poetry(version):
"""Update the version in pyproject.toml using Poetry."""
print("Updating version in pyproject.toml...")
subprocess.run(["poetry", "version", version], check=True)


def update_changelog(version, repo_url):
"""Update the CHANGELOG.md file with the new version and today's date."""
print("Updating CHANGELOG.md...")
with open("CHANGELOG.md", "r") as file:
lines = file.readlines()

today = datetime.today().strftime("%Y-%m-%d")
new_entry = f"\n## [{version}] - {today}\n"

# Insert the new entry after the ## [unreleased] section
for i, line in enumerate(lines):
if line.startswith("## [unreleased]"):
lines.insert(i + 1, new_entry)
break

# Update links at the bottom
unreleased_link = f"[unreleased]: {repo_url}/compare/{version}...HEAD\n"
new_version_link = f"[{version}]: {repo_url}/releases/tag/{version}\n"

# Ensure the new version link is added right after the [unreleased] link
for i, line in enumerate(lines):
if line.startswith("[unreleased]:"):
lines[i] = unreleased_link
lines.insert(i + 1, new_version_link)
break

with open("CHANGELOG.md", "w") as file:
file.writelines(lines)


def run_git_commands(version):
"""Run the git commands to commit the changes, create a new tag, and push."""
print("Running git commands...")
subprocess.run(["git", "add", "."], check=True)
subprocess.run(
["git", "commit", "-m", f"Bumped version to {version}. Updated CHANGELOG."],
check=True,
)
subprocess.run(["git", "tag", version], check=True)
subprocess.run(["git", "push", "--tags"], check=True)
subprocess.run(["git", "push"], check=True)


def main():
"""Main entry point for the script."""
if len(sys.argv) != 2:
print("Usage: release.py <version>")
sys.exit(1)

version = sys.argv[1]

repo_url = get_repo_url()
update_version_with_poetry(version)
update_changelog(version, repo_url)
run_git_commands(version)


if __name__ == "__main__":
main()

0 comments on commit 41a3c19

Please sign in to comment.