---
name: Setup PDM
description: Set up a specific version of PDM and uses a given Python version to work on
author: Frost Ming
inputs:
  python-version:
    description: 'Version range or exact version of a Python version to use, using SemVer''s version range syntax.'
  python-version-file:
    description: 'File containing the Python version to use. Example: .python-version'
  architecture:
    description: 'The target architecture (x86, x64, arm64) of the Python interpreter.'
    required: false
  allow-python-prereleases:
    description: Allow prerelease versions of Python to be installed.
    default: 'false'
    required: false
  token:
    description: Used to pull python distributions from actions/python-versions. Since there's a default, this is typically not supplied by the user.
    default: ${{ github.token }}
    required: false
  version:
    description: The version of PDM to install, or 'head' to install from the main branch.
    required: false
  prerelease:
    description: Allow prerelease versions to be installed
    default: 'false'
    required: false
  enable-pep582:
    description: Enable PEP 582 package loading globally.
    default: 'false'
    required: false
  cache:
    description: Cache PDM installation.
    default: 'false'
    required: false
  cache-dependency-path:
    description: The dependency file(s) to cache.
    default: pdm.lock
    required: false
  cache-restore-exact-match:
    description: >
      Restore cache ONLY on exact match with the primary key.
      Note: Post-installation cache will still be saved if cache is 'true'.
    default: 'false'
    required: false
  update-python:
    description: Whether to update the environment with the requested Python
    default: 'true'
outputs:
  python-version:
    description: The installed Python or PyPy version. Useful when given a version range as input.
  python-path:
    description: The absolute path to the Python or PyPy executable.
  pdm-version:
    description: The installed PDM version.
  pdm-bin:
    description: The absolute path to the PDM executable.
  cache-hit:
    description: Whether or not there was a cache hit.
runs:
  using: node20
  main: dist/setup-pdm.js
  post: dist/cache-save.js
  post-if: success()
branding:
  icon: code
  color: green
