diff --git a/README.md b/README.md index 841d82a..282def2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ This action provides the following functionalities for GitHub Actions users: -- Optionally downloading and installing the requested version of Python/PyPy and adding it to the PATH +- Optionally installing and adding to PATH a version of Python that is already installed in the runner's tool cache. +- Downloading, installing and adding to PATH an available version of Python from GitHub Releases ([actions/python-versions](https://github.com/actions/python-versions/releases)) if a specific version is not available in the runner's tool cache. +- Failing if a specific version of Python is not preinstalled or available for download. - Optionally caching dependencies for pip, pipenv and poetry - Registering problem matchers for error output @@ -18,7 +20,7 @@ See [action.yml](action.yml) ```yaml steps: - uses: actions/checkout@v3 -- uses: actions/setup-python@v4 # <- v4 is a major release tag of the action: https://github.com/actions/setup-python/tags +- uses: actions/setup-python@v4 with: python-version: '3.10' - run: python my_script.py @@ -49,7 +51,7 @@ Using `architecture` input it is possible to specify the required Python/PyPy in ## Caching packages dependencies -The action has built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/toolkit/tree/main/packages/cache) under the hood for caching dependencies but requires less configuration settings. Supported package managers are `pip`, `pipenv` and `poetry`. The `cache` input is optional, and caching is turned off by default. +The action has built-in functionality for caching and restoring dependencies. It uses [toolkit/cache](https://github.com/actions/toolkit/tree/main/packages/cache) under the hood for caching dependencies but requires less configuration settings. Supported package managers are `pip`, `pipenv` and `poetry`. The `cache` input is optional, and caching is turned off by default. The action defaults to searching for a dependency file (`requirements.txt` for pip, `Pipfile.lock` for pipenv or `poetry.lock` for poetry) in the repository, and uses its hash as a part of the cache key. Input `cache-dependency-path` is used for cases when multiple dependency files are used, they are located in different subdirectories or different files for the hash that want to be used. diff --git a/action.yml b/action.yml index f6ff15c..b812444 100644 --- a/action.yml +++ b/action.yml @@ -1,33 +1,33 @@ --- -name: 'Setup Python' -description: 'Set up a specific version of Python and add the command-line tools to the PATH.' -author: 'GitHub' +name: "Setup Python" +description: "Set up a specific version of Python and add the command-line tools to the PATH." +author: "GitHub" inputs: python-version: description: "Version range or exact version of Python/PyPy to use, using SemVer's version range syntax. Reads from .python-version if unset." python-version-file: description: "File containing the Python version to use. Example: .python-version" cache: - description: 'Used to specify a package manager for caching in the default directory. Supported values: pip, pipenv, poetry.' + description: "Used to specify a package manager for caching in the default directory. Supported values: pip, pipenv, poetry." required: false architecture: description: "The target architecture (x86, x64) of the Python/PyPy interpreter." check-latest: - description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec.' + description: "Set this option if you want the action to check for the latest available version that satisfies the version spec." default: 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 }} cache-dependency-path: - description: 'Used to specify the path to dependency files. Supports wildcards or a list of file names for caching multiple dependencies.' + description: "Used to specify the path to dependency files. Supports wildcards or a list of file names for caching multiple dependencies." update-environment: - description: 'Set this option if you want the action to update environment variables.' + description: "Set this option if you want the action to update environment variables." default: true outputs: python-version: description: "The installed Python/PyPy version. Useful when given a version range as input." cache-hit: - description: 'A boolean value to indicate a cache entry was found' + description: "A boolean value to indicate a cache entry was found" python-path: description: "The absolute path to the Python/PyPy executable." runs: diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index 85d9183..c7a3a35 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -1,4 +1,4 @@ -# Table of contents +# Contents - [Using python-version input](advanced-usage.md#using-python-version-file-input) - [Specifying a Python version](advanced-usage.md#specifying-a-python-version) - [Specifying a PyPy version](advanced-usage.md#specifying-a-pypy-version) @@ -19,11 +19,9 @@ # Using python-version input -The `python-version` input is used to specify the required version of Python or PyPy. - ## Specifying a Python version -If there is a specific version of Python that you need and you don't want to worry about any potential breaking changes due to patch updates (going from `3.7.5` to `3.7.6` for example), you should specify the **exact major, minor, and patch version** (such as `3.7.5`): +If there is a specific version of Python that you need and you don't want to worry about any potential breaking changes due to patch updates (going from `3.7.5` to `3.7.6` for example), you should specify the ***exact major, minor, and patch version*** (such as `3.7.5`): ```yaml steps: @@ -36,7 +34,7 @@ steps: - The only downside to this is that set-up will take a little longer since the exact version will have to be downloaded if the exact version is not already installed on the runner due to more recent versions. - MSI installers are used on Windows for this, so runs will take a little longer to set up vs MacOS and Linux. -You can specify **only a major and minor version** if you are okay with the most recent patch version being used: +You can specify ***only a major and minor version*** if you are okay with the most recent patch version being used: ```yaml steps: @@ -50,7 +48,7 @@ steps: - The patch version that will be preinstalled, will generally be the latest and every time there is a new patch released, the older version that is preinstalled will be replaced. - Using the most recent patch version will result in a very quick setup since no downloads will be required since a locally installed version of Python on the runner will be used. -You can specify the version with **prerelease tag** to download and set up an accurate pre-release version of Python: +You can specify the version with ***prerelease tag*** to download and set up an accurate pre-release version of Python: ```yaml steps: @@ -61,7 +59,7 @@ steps: - run: python my_script.py ``` -It's also possible to use **x.y-dev syntax** to download and set up the latest patch version of Python, alpha and beta releases included. (for specified major & minor versions): +It's also possible to use ***x.y-dev syntax*** to download and set up the latest patch version of Python, alpha and beta releases included. (for specified major & minor versions): ```yaml steps: @@ -74,7 +72,7 @@ steps: You can also use several types of ranges that are specified in [semver](https://github.com/npm/node-semver#ranges), for instance: -- **[hyphen ranges](https://github.com/npm/node-semver#hyphen-ranges-xyz---abc)** to download and set up the latest available version of Python (includes both pre-release and stable versions): +- ***[hyphen ranges](https://github.com/npm/node-semver#hyphen-ranges-xyz---abc)*** to download and set up the latest available version of Python (includes both pre-release and stable versions): ```yaml steps: @@ -85,7 +83,7 @@ steps: - run: python my_script.py ``` -- **[x-ranges](https://github.com/npm/node-semver#x-ranges-12x-1x-12-)** to specify the latest stable version of Python (for specified major version): +- ***[x-ranges](https://github.com/npm/node-semver#x-ranges-12x-1x-12-)*** to specify the latest stable version of Python (for specified major version): ```yaml steps: