Merge pull request #96 from D-o-d-o-x/better_versioning

Better Versioning
This commit is contained in:
Onur 2024-03-15 16:42:20 +01:00 committed by GitHub
commit 2144eff45b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 81 additions and 41 deletions

View File

@ -1,26 +0,0 @@
name: Ensure Tagged Commits on Release
on:
pull_request:
branches:
- release
jobs:
check_tag:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check if base commit of PR is tagged
run: |
BASE_COMMIT=$(jq -r .pull_request.base.sha < "$GITHUB_EVENT_PATH")
TAG=$(git tag --contains $BASE_COMMIT)
if [ -z "$TAG" ]; then
echo "Base commit of PR is not tagged. PRs onto release must be tagged with the version number."
exit 1
fi
echo "Base commit of PR is tagged. Check passed."

View File

@ -0,0 +1,52 @@
name: Ensure Version Consistency on PR to Release
on:
pull_request:
branches:
- release
jobs:
check_version_and_tag:
runs-on: ubuntu-latest
strategy:
fail-fast: true # Terminate the job immediately if any step fails
steps:
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Necessary to fetch all tags for comparison
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install toml
- name: Extract version from pyproject.toml
run: |
echo "Extracting version from pyproject.toml"
VERSION=$(python -c 'import toml; print(toml.load("pyproject.toml")["project"]["version"])')
echo "Version in pyproject.toml is $VERSION"
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Get tag for the PR's head commit
run: |
PR_HEAD_SHA=$(jq -r .pull_request.head.sha < "$GITHUB_EVENT_PATH")
TAG=$(git tag --contains $PR_HEAD_SHA)
echo "Tag on PR's head commit is $TAG"
echo "TAG=$TAG" >> $GITHUB_ENV
- name: Compare version and tag
run: |
if [ -z "$TAG" ]; then
echo "Head commit of PR is not tagged. Ensure the head commit of PRs onto release is tagged with the version number."
exit 1
elif [ "$VERSION" != "$TAG" ]; then
echo "Version in pyproject.toml ($VERSION) does not match the git tag ($TAG)."
exit 1
else
echo "Version and git tag match. Check passed."
fi

View File

@ -8,6 +8,8 @@ on:
jobs:
publish:
name: Publish to PyPI
strategy:
fail-fast: true # Terminate the job immediately if any step fails
runs-on: ubuntu-latest
steps:
- name: Check out code
@ -15,19 +17,24 @@ jobs:
with:
fetch-depth: 0 # This fetches all history for all branches and tags
- name: Check if commit is tagged
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Validate version against tag
run: |
VERSION=$(python -c 'import toml; print(toml.load("pyproject.toml")["project"]["version"])')
TAG=$(git tag --contains HEAD)
if [ -z "$TAG" ]; then
echo "Commit is not tagged. Failing the workflow."
exit 1
fi
echo "Commit is tagged. Proceeding with the workflow."
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
if [ "$VERSION" != "$TAG" ]; then
echo "Version in pyproject.toml ($VERSION) does not match the git tag ($TAG). Failing the workflow."
exit 1
fi
echo "Version and commit tag match. Proceeding with the workflow."
- name: Install pypa/build/setuptools/twine
run: >-
@ -36,9 +43,6 @@ jobs:
build setuptools twine
--user
- name: Prevent fallback onto setup.py
run: rm setup.py
- name: Build a binary wheel and a source tarball
run: python3 -m build

View File

@ -1,13 +1,17 @@
# This conf.py is in large parts inspired by the oen used by stable-baselines 3
import toml
import datetime
project = 'Fancy Gym'
author = 'Fabian Otto, Onur Celik, Dominik Roth, Hongyi Zhou'
copyright = f'2020-{datetime.date.today().year}, {author}'
release = '0.2' # The full version, including alpha/beta/rc tags
version = '0.2' # The short X.Y version
pyproject_content = toml.load("../../pyproject.toml")
proj_version = pyproject_content["project"]["version"]
release = proj_version # The full version, including alpha/beta/rc tags
version = proj_version # The short X.Y version
extensions = [
'myst_parser',
@ -50,4 +54,4 @@ html_context = {
}
def setup(app):
app.add_css_file("style.css")
app.add_css_file("style.css")

View File

@ -1,6 +1,6 @@
[project]
name = "fancy_gym"
version = "0.1.4"
version = "0.3.0"
description = "Fancy Gym: Unifying interface for various RL benchmarks with support for Black Box approaches."
readme = "README.md"
authors = [
@ -26,6 +26,7 @@ classifiers = [
]
dependencies = [
"toml",
"mp_pytorch<=0.1.3",
"mujoco==2.3.3",
"gymnasium[mujoco]>=0.26.0"

View File

@ -1,5 +1,6 @@
# We still provide a setup.py for backwards compatability.
# But the pyproject.toml should be prefered.
import toml
import itertools
from pathlib import Path
from typing import List
@ -8,6 +9,9 @@ from setuptools import setup, find_packages
print('[!] You are currently installing/building fancy_gym via setup.py. This is only provided for backwards-compatability. Please use the pyproject.toml instead.')
pyproject_content = toml.load("pyproject.toml")
project_version = pyproject_content["project"]["version"]
# Environment-specific dependencies for dmc and metaworld
extras = {
'dmc': ['shimmy[dm-control]', 'Shimmy==1.0.0'],
@ -38,7 +42,7 @@ def find_package_data(extensions_to_include: List[str]) -> List[str]:
setup(
author='Fabian Otto, Onur Celik, Dominik Roth, Hongyi Zhou',
name='fancy_gym',
version='0.1.0',
version=project_version,
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Science/Research',
@ -55,6 +59,7 @@ setup(
],
extras_require=extras,
install_requires=[
'toml',
'mp_pytorch<=0.1.3',
'mujoco==2.3.3',
'gymnasium[mujoco]>=0.26.0'