Switch to side-by-side view

--- a
+++ b/.github/workflows/pipy_release.yml
@@ -0,0 +1,153 @@
+# adapted from
+# - https://medium.com/@VersuS_/automate-pypi-releases-with-github-actions-4c5a9cfe947d
+# - https://github.com/facebookresearch/fairscale/blob/main/.github/workflows/release.yml
+name: MyoSuite PyPI Release
+
+# on: [push]
+# on:
+#  push:
+#    tags:
+#     - '*'
+on:
+  workflow_dispatch:
+    inputs:
+      name:
+        description: 'Release Type (major, minor, patch)'
+        default: 'patch'
+        required: true
+
+# # Upon running the following instructions
+# # > git tag 0.0.1 # or whatever version you want
+# # > git push origin --tags
+# # The following operations will be run
+# # 1. Update version according to major | minor | patch and use the new version as `tag name`
+# # 2. Use the `tag name` as `release version`
+# # 3. Build the PyPI package by using /myosuite/__init__.py version
+# # 4. Upload the package
+# # 5. Test Upload
+
+
+
+jobs:
+  # 1. Update version according to major | minor | patch and use the new version as `tag name`
+  get_next_version:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: checkout-repo-content
+        uses: actions/checkout@v3
+
+      - name: setup-python
+        uses: actions/setup-python@v2
+        with:
+          python-version: 3.9
+      - name: get next version and tag
+        id: get-next-version-and-tag
+        run: |
+          output=$(python3 .github/release_utils.py --release-type ${{ github.event.inputs.name }})
+          echo $output
+          new_version=$(echo $output | awk '{print $1}')
+          new_tag=$(echo $output | awk '{print $2}')
+          echo "new version is $new_version"
+          echo "new tag is $new_tag"
+          echo ::set-output name=version::$new_version
+          echo ::set-output name=tag::$new_tag
+    outputs:
+      new_version: ${{ steps.get-next-version-and-tag.outputs.version }}
+      new_tag: ${{ steps.get-next-version-and-tag.outputs.tag }}
+
+  pypi_package_build_and_release:
+    name: Build and publish PyPI wheel
+    runs-on: ubuntu-latest
+    needs: get_next_version
+    steps:
+    - name: Checkout repository and submodules
+      uses: actions/checkout@v3
+      with:
+        submodules: recursive
+
+    - name: Set up Python 3.9
+      uses: actions/setup-python@v3
+      with:
+        python-version: '3.9'
+
+    - name: Install pypa/setuptools
+      run: >-
+        python -m
+        pip install wheel
+
+    # update the version number in version.py
+    - name: update version
+      id: update-version
+      run : |
+        echo "current folder = $PWD"
+        echo "current branch = $(git branch --show-current)"
+        output=$(python3 .github/release_utils.py --release-type ${{ github.event.inputs.name }} --update-version)
+
+    # 2. Use the `tag name` as `release version`
+    # add and commit the updated version.py to main
+    - name: add and commit to main
+      uses: EndBug/add-and-commit@v7.5.0
+      with:
+        # token: ${{ secrets.REPO_TOKEN }}
+        author_name: ${{ secrets.AUTHOR_NAME }}
+        author_email: ${{ secrets.AUTHOR_EMAIL }}
+
+        branch: main
+        default_author: github_actor
+        message: '${{ needs.get_next_version.outputs.new_version }} release'
+        pathspec_error_handling: exitAtEnd
+
+        # Arguments for the git pull command. Use NO-PULL to avoid the action pulling at all.
+        # Default: '--no-rebase'
+        pull: 'NO-PULL'
+        tag: '${{ needs.get_next_version.outputs.new_tag }}'
+
+
+     # 3. Build the PyPI packeage
+    - name: Build a binary wheel
+      run: >-
+        python setup.py sdist bdist_wheel
+    # 4. Upload the package
+    - name: Publish distribution to PyPI
+      uses: pypa/gh-action-pypi-publish@master
+      with:
+        password: ${{ secrets.PYPI_API_TOKEN }}
+#     - name: Publish distribution to TestPyPI
+#       uses: pypa/gh-action-pypi-publish@release/v1
+#       with:
+#         password: ${{ secrets.TEST_PYPI_API_TOKEN }}
+#         repository-url: https://test.pypi.org/legacy/
+
+
+  test_latest_PyPI:
+    needs: pypi_package_build_and_release
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os:
+          - ubuntu-latest
+          - macos-latest
+          - windows-latest
+    steps:
+      - name: Set up Python 3.9
+        uses: actions/setup-python@v3
+        with:
+          python-version: "3.9"
+
+      - name: Prepare Linux
+        if: ${{ runner.os == 'Linux' }}
+        run: >
+          sudo apt-get install -y \
+              libgl1-mesa-dev \
+              libgl1-mesa-glx \
+              libglew-dev \
+              libosmesa6-dev \
+              software-properties-common
+          sudo apt-get install -y patchelf
+
+      - shell: bash
+        run: |
+          echo "Test MyoSuite PyPI wheel"
+          pip install -U myosuite
+          python -m myosuite.tests.test_myo