diff --git a/.github/workflows/ensure-release-tagged.yaml b/.github/workflows/ensure-release-tagged.yaml deleted file mode 100644 index e58e31e..0000000 --- a/.github/workflows/ensure-release-tagged.yaml +++ /dev/null @@ -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." - diff --git a/.github/workflows/ensure-version-consistency.yaml b/.github/workflows/ensure-version-consistency.yaml new file mode 100644 index 0000000..c3c85df --- /dev/null +++ b/.github/workflows/ensure-version-consistency.yaml @@ -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 diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index 1b5fa08..902cec5 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -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 diff --git a/README.md b/README.md index af6d2d3..73dce66 100644 --- a/README.md +++ b/README.md @@ -10,25 +10,25 @@ Built upon the foundation of [Gymnasium](https://gymnasium.farama.org) (a mainta **Key Features**: -- **New Challenging Environments**: `fancy_gym` includes several new environments ([Panda Box Pushing](https://dominik-roth.eu/fancy/envs/fancy/mujoco.html#box-pushing), [Table Tennis](https://dominik-roth.eu/fancy/envs/fancy/mujoco.html#table-tennis), [etc.](https://dominik-roth.eu/fancy/envs/fancy/index.html)) that present a higher degree of difficulty, pushing the boundaries of reinforcement learning research. +- **New Challenging Environments**: `fancy_gym` includes several new environments ([Panda Box Pushing](https://alrhub.github.io/fancy_gym/envs/fancy/mujoco.html#box-pushing), [Table Tennis](https://alrhub.github.io/fancy_gym/envs/fancy/mujoco.html#table-tennis), [etc.](https://alrhub.github.io/fancy_gym/envs/fancy/index.html)) that present a higher degree of difficulty, pushing the boundaries of reinforcement learning research. - **Support for Movement Primitives**: `fancy_gym` supports a range of movement primitives (MPs), including Dynamic Movement Primitives (DMPs), Probabilistic Movement Primitives (ProMP), and Probabilistic Dynamic Movement Primitives (ProDMP). - **Upgrade to Movement Primitives**: With our framework, it’s straightforward to transform standard Gymnasium environments into environments that support movement primitives. -- **Benchmark Suite Compatibility**: `fancy_gym` makes it easy to access renowned benchmark suites such as [DeepMind Control](dominik-roth.eu/fancy/envs/dmc.html) - and [Metaworld](https://dominik-roth.eu/fancy/envs/meta.html), whether you want to use them in the regular step-based setting or using MPs. -- **Contribute Your Own Environments**: If you’re inspired to create custom gym environments, both step-based and with movement primitives, this [guide](https://dominik-roth.eu/fancy/guide/upgrading_envs.html) will assist you. We encourage and highly appreciate submissions via PRs to integrate these environments into `fancy_gym`. +- **Benchmark Suite Compatibility**: `fancy_gym` makes it easy to access renowned benchmark suites such as [DeepMind Control](https://alrhub.github.io/fancy_gym/envs/dmc.html) + and [Metaworld](https://alrhub.github.io/fancy_gym/envs/meta.html), whether you want to use them in the regular step-based setting or using MPs. +- **Contribute Your Own Environments**: If you’re inspired to create custom gym environments, both step-based and with movement primitives, this [guide](https://alrhub.github.io/fancy_gym/guide/upgrading_envs.html) will assist you. We encourage and highly appreciate submissions via PRs to integrate these environments into `fancy_gym`. ## Quickstart Guide | ⚠ We recommend installing `fancy_gym` into a virtual environment as provided by [venv](https://docs.python.org/3/library/venv.html), [Poetry](https://python-poetry.org/) or [Conda](https://docs.conda.io/en/latest/). | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -Install via pip [or use an alternative installation method](https://dominik-roth.eu/fancy/guide/installation.html) +Install via pip [or use an alternative installation method](https://alrhub.github.io/fancy_gym/guide/installation.html) ```bash pip install 'fancy_gym[all]' ``` -Try out one of our step-based environments [or explore our other envs](https://dominik-roth.eu/fancy/envs/fancy/index.html) +Try out one of our step-based environments [or explore our other envs](https://alrhub.github.io/fancy_gym/envs/fancy/index.html) ```python import gymnasium as gym @@ -48,7 +48,7 @@ Try out one of our step-based environments [or explore our other envs](https://d observation, info = env.reset() ``` -Explore the MP-based variant [or learn more about Movement Primitives (MPs)](https://dominik-roth.eu/fancy/guide/episodic_rl.html) +Explore the MP-based variant [or learn more about Movement Primitives (MPs)](https://alrhub.github.io/fancy_gym/guide/episodic_rl.html) ```python import gymnasium as gym @@ -66,7 +66,7 @@ Explore the MP-based variant [or learn more about Movement Primitives (MPs)](htt ## Documentation -Documentation for `fancy_gym` can be found [here](https://dominik-roth.eu/fancy); Usage Examples can be found [here](https://dominik-roth.eu/fancy/examples/general.html). +Documentation for `fancy_gym` can be found [here](https://alrhub.github.io/fancy_gym/); Usage Examples can be found [here](https://alrhub.github.io/fancy_gym/examples/general.html). ## Citing the Project diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 24c61da..ae5c3a7 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/examples/dmc.doctree b/docs/build/doctrees/examples/dmc.doctree index 958cf19..21fc3d1 100644 Binary files a/docs/build/doctrees/examples/dmc.doctree and b/docs/build/doctrees/examples/dmc.doctree differ diff --git a/docs/build/doctrees/examples/general.doctree b/docs/build/doctrees/examples/general.doctree index ffba9f8..8d0f367 100644 Binary files a/docs/build/doctrees/examples/general.doctree and b/docs/build/doctrees/examples/general.doctree differ diff --git a/docs/build/doctrees/examples/metaworld.doctree b/docs/build/doctrees/examples/metaworld.doctree index 481db99..7b82b77 100644 Binary files a/docs/build/doctrees/examples/metaworld.doctree and b/docs/build/doctrees/examples/metaworld.doctree differ diff --git a/docs/build/doctrees/examples/movement_primitives.doctree b/docs/build/doctrees/examples/movement_primitives.doctree index 5f08c93..c3dae92 100644 Binary files a/docs/build/doctrees/examples/movement_primitives.doctree and b/docs/build/doctrees/examples/movement_primitives.doctree differ diff --git a/docs/build/doctrees/examples/open_ai.doctree b/docs/build/doctrees/examples/open_ai.doctree index 303687b..c1321c3 100644 Binary files a/docs/build/doctrees/examples/open_ai.doctree and b/docs/build/doctrees/examples/open_ai.doctree differ diff --git a/docs/build/doctrees/examples/replanning_envs.doctree b/docs/build/doctrees/examples/replanning_envs.doctree index 75a3f46..5a6c386 100644 Binary files a/docs/build/doctrees/examples/replanning_envs.doctree and b/docs/build/doctrees/examples/replanning_envs.doctree differ diff --git a/docs/build/doctrees/guide/installation.doctree b/docs/build/doctrees/guide/installation.doctree index d1366cd..fa389f2 100644 Binary files a/docs/build/doctrees/guide/installation.doctree and b/docs/build/doctrees/guide/installation.doctree differ diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 9b8f8aa..b5dcb4b 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 28ec069496fc0ad05c8b9641549626a6 +config: 36919d67c12a677d3f16f60d980b0313 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_modules/fancy_gym/envs/registry.html b/docs/build/html/_modules/fancy_gym/envs/registry.html index 2955545..bdf26be 100644 --- a/docs/build/html/_modules/fancy_gym/envs/registry.html +++ b/docs/build/html/_modules/fancy_gym/envs/registry.html @@ -3,7 +3,7 @@
-