name: Restore Python inputs: python-version: description: Python version to restore required: true type: string cache-key: description: Cache key to use required: true type: string outputs: python-version: description: Python version restored value: ${{ steps.python.outputs.python-version }} runs: using: "composite" steps: - name: Set up Python ${{ inputs.python-version }} id: python uses: actions/setup-python@v5.2.0 with: python-version: ${{ inputs.python-version }} - name: Restore Python virtual environment id: cache-venv uses: actions/cache/restore@v4.0.2 with: path: venv # yamllint disable-line rule:line-length key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ inputs.cache-key }} - name: Create Python virtual environment if: steps.cache-venv.outputs.cache-hit != 'true' && runner.os != 'Windows' shell: bash run: | python -m venv venv source venv/bin/activate python --version pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt pip install -e . - name: Create Python virtual environment if: steps.cache-venv.outputs.cache-hit != 'true' && runner.os == 'Windows' shell: bash run: | python -m venv venv ./venv/Scripts/activate python --version pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt pip install -e .