diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock new file mode 100644 index 0000000..f42344f --- /dev/null +++ b/.github/workflows/actions.lock @@ -0,0 +1,31 @@ +# This file is machine-generated by `gh actions-lock`. +# Do not edit by hand; run `gh actions-lock` to update. +# Docs: https://gh.io/actions-lockfile +version: 'v0.0.3' +workflows: + '.github/workflows/ci.yml': + - 'actions/checkout@v7.0.1' + - 'actions/setup-python@v7.0.0' + - 'pex-tool/actions@main' + - 'pex-tool/pyenv-action@main' +dependencies: + 'actions/checkout@v7.0.1': + ref: 'v7.0.1' + commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' + owner_id: 44036562 + repo_id: 197814629 + 'actions/setup-python@v7.0.0': + ref: 'v7.0.0' + commit: 'sha1-5fda3b95a4ea91299a34e894583c3862153e4b97' + owner_id: 44036562 + repo_id: 192625525 + 'pex-tool/actions@main': + ref: 'main' + commit: 'sha1-e22fe0e0fe85e1f7eb5bbfc7674c7cbbf24ae6b5' + owner_id: 159246247 + repo_id: 891735357 + 'pex-tool/pyenv-action@main': + ref: 'main' + commit: 'sha1-dcccfcc2bb18b008eca1ee92bbb05425e7126ead' + owner_id: 159246247 + repo_id: 759510979 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30b7dae..bf5d950 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,74 +18,111 @@ jobs: steps: - name: Noop run: "true" - tests-36-38: + tests-36-38-and-316: name: (${{ matrix.os }}) Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} Tests needs: org-check runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18]] + os: [ubuntu-24.04, macos-15] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 - uses: actions/checkout@v5 - - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrade node16 -> node20: Out for review here: - # https://github.com/gabrielfalcao/pyenv-action/pull/444 - uses: pex-tool/pyenv-action@baec18679698d2f80064cc04eb9ad0c8dc5ca8f8 - env: - ENSUREPIP: no + uses: actions/checkout@v7.0.1 + - name: Install Python Build Deps + if: matrix.os == 'ubuntu-24.04' + run: | + sudo apt update + DEBIAN_FRONTEND=noninteractive sudo apt install -y \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev + - name: Install Pyenv + run: | + cd "${RUNNER_TOOL_CACHE}" + git clone https://github.com/pyenv/pyenv + ( + cd pyenv + src/configure + make -C src + ) + export PYENV_ROOT="$PWD/pyenv" + echo "PYENV_ROOT=${PYENV_ROOT}" >> "${GITHUB_ENV}" + echo "${PYENV_ROOT}/bin" >> "${GITHUB_PATH}" + - name: Setup Python ${{ join(matrix.python-version, '.') }} + run: | + pyenv install ${{ join(matrix.python-version, '.') }} + echo "${PYENV_ROOT}/versions/${{ join(matrix.python-version, '.') }}/bin" >> "${GITHUB_PATH}" + - name: Setup Tox Python + uses: actions/setup-python@v7.0.0 with: - default: "${{ join(matrix.python-version, '.') }}" - command: pip install -U tox + python-version: 3.11 - name: Run Unit Tests - run: tox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} + run: | + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs tests-39-315: name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests needs: org-check runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13, windows-2025] + os: [ubuntu-24.04, macos-15, windows-2025] steps: - name: Checkout p537 - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 - name: Setup Python 3.9 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.9" - name: Setup Python 3.10 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.10" - name: Setup Python 3.11 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.11" - name: Setup Python 3.12 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.12" - name: Setup Python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.13" - name: Setup Python 3.14 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.14" - name: Setup Python 3.15 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: - python-version: "3.15.0-alpha.1" + python-version: "3.15" - name: Run Unit Tests - uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b + uses: pex-tool/actions/run-tox@main with: tox-env: py39,py310,py311,py312,py313,py314,py315 final-status: name: Gather Final Status needs: - - tests-36-38 + - tests-36-38-and-316 - tests-39-315 runs-on: ubuntu-24.04 steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36ef0d2..c79268e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,30 +39,67 @@ jobs: echo "::error::Release tag '${RELEASE_TAG}' must match 'v\d+.\d+.\d+'." exit 1 fi - package-36-38-dists: + package-36-38-and-316-dists: name: ${{ matrix.os }} Package for Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} needs: determine-tag runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18]] + os: [ubuntu-24.04, macos-15] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrade node16 -> node20: Out for review here: - # https://github.com/gabrielfalcao/pyenv-action/pull/444 - uses: pex-tool/pyenv-action@baec18679698d2f80064cc04eb9ad0c8dc5ca8f8 - env: - ENSUREPIP: no + - name: Install Python Build Deps + if: matrix.os == 'ubuntu-24.04' + run: | + sudo apt update + DEBIAN_FRONTEND=noninteractive sudo apt install -y \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev + - name: Install Pyenv + run: | + cd "${RUNNER_TOOL_CACHE}" + git clone https://github.com/pyenv/pyenv + ( + cd pyenv + src/configure + make -C src + ) + export PYENV_ROOT="$PWD/pyenv" + echo "PYENV_ROOT=${PYENV_ROOT}" >> "${GITHUB_ENV}" + echo "${PYENV_ROOT}/bin" >> "${GITHUB_PATH}" + - name: Setup Python ${{ join(matrix.python-version, '.') }} + run: | + pyenv install ${{ join(matrix.python-version, '.') }} + echo "${PYENV_ROOT}/versions/${{ join(matrix.python-version, '.') }}/bin" >> "${GITHUB_PATH}" + - name: Setup Tox Python + uses: actions/setup-python@v7.0.0 with: - default: "${{ join(matrix.python-version, '.') }}" - command: pip install -U tox + python-version: 3.11 - name: Package ${{ needs.determine-tag.outputs.release-tag }} - run: tox -e package + run: | + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e package - name: Upload Artifact uses: actions/upload-artifact@v4 with: @@ -75,15 +112,15 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13, windows-2025] - python-version: [[3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15, "0-alpha.1"]] + os: [ubuntu-24.04, macos-15, windows-2025] + python-version: [[3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Setup Python ${{ join(matrix.python-version, '.') }} - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "${{ join(matrix.python-version, '.') }}" - name: Package ${{ needs.determine-tag.outputs.release-tag }} @@ -100,7 +137,7 @@ jobs: name: Publish sdist and wheel to PyPI needs: - determine-tag - - package-36-38-dists + - package-36-38-and-316-dists - package-39-315-dists runs-on: ubuntu-24.04 environment: Release diff --git a/setup.py b/setup.py index 0186c86..5c72977 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ def long_description(): setup( name='p537', - version='1.0.10', + version='1.0.11', author="John Sirois", author_email="john.sirois@gmail.com", description='A tiny platform-specific distribution with a console script.', @@ -33,8 +33,9 @@ def long_description(): 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: 3.15', + 'Programming Language :: Python :: 3.16', ], - python_requires=">=3.6,<3.16", + python_requires=">=3.6,<3.17", ext_modules=[ Extension('p537', sources=['p537module.c']), ], diff --git a/tox.ini b/tox.ini index c705cbf..a9f6afe 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,8 @@ [tox] minversion = 3.26.0 isolated_build = true -skip_missing_interpreters = True +skip_missing_interpreters = true + envlist = py36 py37 @@ -13,10 +14,17 @@ envlist = py313 py314 py315 + py316 [testenv] +# We need newer Pip to operate under Python 3.14. +download = true + deps = - pytest + pytest==6.2.5; python_version == "3.6" + pytest==7.4.4; python_version == "3.7" + pytest==8.3.3; python_version >= "3.8" + commands = pytest -vs [testenv:package]