# An action for setting up poetry install with caching. # Using a custom action since the default action does not # take poetry install groups into account. # Action code from: # https://github.com/actions/setup-python/issues/505#issuecomment-1273013236 name: poetry-install-with-caching description: Poetry install with support for caching of dependency groups. inputs: python-version: description: Python version, supporting MAJOR.MINOR only required: true poetry-version: description: Poetry version required: true install-command: description: Command run for installing dependencies required: false default: poetry install cache-key: description: Cache key to use for manual handling of caching required: true working-directory: description: Directory to run install-command in required: false default: "" runs: using: composite steps: - uses: actions/setup-python@v4 with: python-version: ${{ inputs.python-version }} - uses: actions/cache@v3 id: cache-pip env: SEGMENT_DOWNLOAD_TIMEOUT_MIN: "15" with: path: | ~/.cache/pip key: pip-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }} - run: pipx install poetry==${{ inputs.poetry-version }} --python python${{ inputs.python-version }} shell: bash - uses: actions/cache@v3 id: cache-poetry env: SEGMENT_DOWNLOAD_TIMEOUT_MIN: "15" with: path: | ~/.cache/pypoetry/virtualenvs ~/.cache/pypoetry/cache ~/.cache/pypoetry/artifacts key: poetry-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }}-poetry-${{ inputs.poetry-version }}-${{ inputs.cache-key }}-${{ hashFiles('poetry.lock') }} - run: ${{ inputs.install-command }} working-directory: ${{ inputs.working-directory }} shell: bash