feat: Fallback on prerelease like setup-python does (#35)
* feat: Fallback on prerelease like setup-python does * fixup! feat: Fallback on prerelease like setup-python does * fixup! feat: Fallback on prerelease like setup-python does * fixup! feat: Fallback on prerelease like setup-python does * fixup! feat: Fallback on prerelease like setup-python does * fixup! feat: Fallback on prerelease like setup-python does
This commit is contained in:
parent
f637ad9fac
commit
6f13d8d292
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@ -7,7 +7,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.7, 3.8, 3.9, "3.10"]
|
||||
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
|
||||
os: ["windows-latest", "ubuntu-latest", "macos-latest"]
|
||||
name: Test the action
|
||||
steps:
|
||||
@ -18,6 +18,7 @@ jobs:
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: true
|
||||
allow-python-prereleases: true
|
||||
|
||||
- name: Check output
|
||||
run: |
|
||||
|
13
README.md
13
README.md
@ -17,13 +17,14 @@ steps:
|
||||
- uses: pdm-project/setup-pdm@v3
|
||||
name: Setup PDM
|
||||
with:
|
||||
python-version: 3.9 # Version range or exact version of a Python version to use, the same as actions/setup-python
|
||||
architecture: x64 # The target architecture (x86, x64) of the Python interpreter. the same as actions/setup-python
|
||||
version: 1.4.0 # The version of PDM to install. Leave it as empty to use the latest version from PyPI, or 'head' to use the latest version from GitHub
|
||||
prerelease: true # Allow prerelease versions to be installed
|
||||
enable-pep582: true # Enable PEP 582 package loading globally
|
||||
python-version: 3.9 # Version range or exact version of a Python version to use, the same as actions/setup-python
|
||||
architecture: x64 # The target architecture (x86, x64) of the Python interpreter. the same as actions/setup-python
|
||||
version: 2.7.4 # The version of PDM to install. Leave it as empty to use the latest version from PyPI, or 'head' to use the latest version from GitHub
|
||||
prerelease: false # Allow prerelease versions of PDM to be installed
|
||||
enable-pep582: false # Enable PEP 582 package loading globally
|
||||
allow-python-prereleases: false # Allow prerelease versions of Python to be installed. For example if only 3.12-dev is available, 3.12 will fallback to 3.12-dev
|
||||
- name: Install dependencies
|
||||
run: pdm install # Then you can use pdm in the following steps.
|
||||
run: pdm install # Then you can use pdm in the following steps.
|
||||
...
|
||||
```
|
||||
|
||||
|
16015
dist/cache-save.js
vendored
16015
dist/cache-save.js
vendored
File diff suppressed because one or more lines are too long
19072
dist/setup-pdm.js
vendored
19072
dist/setup-pdm.js
vendored
File diff suppressed because one or more lines are too long
37
pdm.lock
generated
37
pdm.lock
generated
@ -1,3 +1,6 @@
|
||||
# This file is @generated by PDM.
|
||||
# It is not intended for manual editing.
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2022.6.15"
|
||||
@ -21,6 +24,18 @@ name = "pytz"
|
||||
version = "2022.1"
|
||||
summary = "World timezone definitions, modern and historical"
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "68.0.0"
|
||||
requires_python = ">=3.7"
|
||||
summary = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.16.0"
|
||||
requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
summary = "Python 2 and 3 compatibility utilities"
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "1.26.10"
|
||||
@ -28,27 +43,37 @@ requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*,
|
||||
summary = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
|
||||
[metadata]
|
||||
lock_version = "4.0"
|
||||
content_hash = "sha256:9386b3d6ac959508ef3cf75fdab7c82bd440c0a79841a0786d71c1e42a58b24d"
|
||||
lock_version = "4.2"
|
||||
cross_platform = true
|
||||
groups = ["default", "dev"]
|
||||
content_hash = "sha256:1c3bf31e6d80f6c468b7d8948c19a5eda9014342869911f0895691955e061357"
|
||||
|
||||
[metadata.files]
|
||||
"certifi 2022.6.15" = [
|
||||
{url = "https://files.pythonhosted.org/packages/e9/06/d3d367b7af6305b16f0d28ae2aaeb86154fa91f144f036c2d5002a5a202b/certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"},
|
||||
{url = "https://files.pythonhosted.org/packages/cc/85/319a8a684e8ac6d87a1193090e06b6bbb302717496380e225ee10487c888/certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"},
|
||||
{url = "https://files.pythonhosted.org/packages/e9/06/d3d367b7af6305b16f0d28ae2aaeb86154fa91f144f036c2d5002a5a202b/certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"},
|
||||
]
|
||||
"chardet 5.0.0" = [
|
||||
{url = "https://files.pythonhosted.org/packages/4c/d1/1b96dd69fa42f20b70701b5cd42a75dd5f0c7a24dc0abfef35cc146210dc/chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"},
|
||||
{url = "https://files.pythonhosted.org/packages/31/a2/12c090713b3d0e141f367236d3a8bdc3e5fca0d83ff3647af4892c16c205/chardet-5.0.0.tar.gz", hash = "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa"},
|
||||
{url = "https://files.pythonhosted.org/packages/4c/d1/1b96dd69fa42f20b70701b5cd42a75dd5f0c7a24dc0abfef35cc146210dc/chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"},
|
||||
]
|
||||
"idna 3.3" = [
|
||||
{url = "https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
|
||||
{url = "https://files.pythonhosted.org/packages/62/08/e3fc7c8161090f742f504f40b1bccbfc544d4a4e09eb774bf40aafce5436/idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
|
||||
]
|
||||
"pytz 2022.1" = [
|
||||
{url = "https://files.pythonhosted.org/packages/60/2e/dec1cc18c51b8df33c7c4d0a321b084cf38e1733b98f9d15018880fb4970/pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"},
|
||||
{url = "https://files.pythonhosted.org/packages/2f/5f/a0f653311adff905bbcaa6d3dfaf97edcf4d26138393c6ccd37a484851fb/pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"},
|
||||
{url = "https://files.pythonhosted.org/packages/60/2e/dec1cc18c51b8df33c7c4d0a321b084cf38e1733b98f9d15018880fb4970/pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"},
|
||||
]
|
||||
"setuptools 68.0.0" = [
|
||||
{url = "https://files.pythonhosted.org/packages/c7/42/be1c7bbdd83e1bfb160c94b9cafd8e25efc7400346cf7ccdbdb452c467fa/setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
|
||||
{url = "https://files.pythonhosted.org/packages/dc/98/5f896af066c128669229ff1aa81553ac14cfb3e5e74b6b44594132b8540e/setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
|
||||
]
|
||||
"six 1.16.0" = [
|
||||
{url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||
{url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
]
|
||||
"urllib3 1.26.10" = [
|
||||
{url = "https://files.pythonhosted.org/packages/68/47/93d3d28e97c7577f563903907912f4b3804054e4877a5ba6651f7182c53b/urllib3-1.26.10-py2.py3-none-any.whl", hash = "sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec"},
|
||||
{url = "https://files.pythonhosted.org/packages/25/36/f056e5f1389004cf886bb7a8514077f24224238a7534497c014a6b9ac770/urllib3-1.26.10.tar.gz", hash = "sha256:879ba4d1e89654d9769ce13121e0f94310ea32e8d2f8cf587b77c08bbcdb30d6"},
|
||||
{url = "https://files.pythonhosted.org/packages/68/47/93d3d28e97c7577f563903907912f4b3804054e4877a5ba6651f7182c53b/urllib3-1.26.10-py2.py3-none-any.whl", hash = "sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec"},
|
||||
]
|
||||
|
@ -19,7 +19,9 @@ dev = [
|
||||
"chardet; python_version=='3.7'",
|
||||
"urllib3; python_version=='3.8'",
|
||||
"certifi; python_version=='3.9'",
|
||||
"pytz; python_version=='3.10'"
|
||||
"pytz; python_version=='3.10'",
|
||||
"setuptools; python_version=='3.11'",
|
||||
"six; python_version=='3.12'",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
|
@ -29,6 +29,7 @@ async function run(): Promise<void> {
|
||||
const arch = core.getInput('architecture') || os.arch();
|
||||
const pdmVersion = core.getInput('version');
|
||||
const pythonVersion = core.getInput('python-version');
|
||||
const allowPythonPreReleases = core.getBooleanInput('allow-python-prereleases');
|
||||
const cmdArgs = ['-'];
|
||||
if (core.getBooleanInput('prerelease')) {
|
||||
cmdArgs.push('--prerelease');
|
||||
@ -49,7 +50,7 @@ async function run(): Promise<void> {
|
||||
core.exportVariable('PYTHONPATH', getPep582Path(installOutput.install_location, installOutput.install_python_version));
|
||||
}
|
||||
|
||||
const installedPython = await utils.findPythonVersion(pythonVersion, arch);
|
||||
const installedPython = await utils.findPythonVersion(pythonVersion, arch, allowPythonPreReleases);
|
||||
|
||||
if (process.platform === 'linux') {
|
||||
// See https://github.com/actions/virtual-environments/issues/2803
|
||||
|
@ -20,14 +20,15 @@ export async function fetchUrlAsBuffer(url: string): Promise<Buffer> {
|
||||
}
|
||||
|
||||
|
||||
export async function findPythonVersion(version: string, architecture: string): Promise<string> {
|
||||
export async function findPythonVersion(version: string, architecture: string, allowPreReleases: boolean): Promise<string> {
|
||||
let pythonVersion = '';
|
||||
if (isPyPyVersion(version)) {
|
||||
const installed = await findPyPyVersion(
|
||||
version,
|
||||
architecture,
|
||||
true,
|
||||
false
|
||||
false,
|
||||
allowPreReleases
|
||||
);
|
||||
pythonVersion = `${installed.resolvedPyPyVersion}-${installed.resolvedPythonVersion}`;
|
||||
core.info(
|
||||
@ -39,7 +40,8 @@ export async function findPythonVersion(version: string, architecture: string):
|
||||
version,
|
||||
architecture,
|
||||
true,
|
||||
false
|
||||
false,
|
||||
allowPreReleases
|
||||
);
|
||||
pythonVersion = installed.version;
|
||||
core.info(`Successfully set up ${installed.impl} (${pythonVersion})`);
|
||||
|
Loading…
x
Reference in New Issue
Block a user