From 3fc494750b83ab73d865abfd892f4490dab12416 Mon Sep 17 00:00:00 2001 From: Kurt McKee Date: Tue, 26 Sep 2023 22:41:00 -0500 Subject: [PATCH] WIP --- .github/workflows/test.yaml | 63 +++++++++++++++++++++++++++++++++++++ identify.py | 34 ++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 .github/workflows/test.yaml create mode 100644 identify.py diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..1c19b40 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,63 @@ +name: "Test" + +on: + push: + branches: + - "main" + +jobs: + test: + name: "Test on ${{ matrix.config.os-name }}" + runs-on: "${{ matrix.config.runner }}" + strategy: + matrix: + config: + - os-name: "Linux" + runner: "ubuntu-latest" + test-label: "ci-test-linux" + - os-name: "macOS" + runner: "macos-latest" + test-label: "ci-test-macos" + - os-name: "Windows" + runner: "windows-latest" + test-label: "ci-test-windows" + fail-fast: false + + steps: + - name: "Show environment (pre)" + shell: "bash" + run: env | sort + + - name: "Checkout" + uses: "actions/checkout@v4" + + - name: "Setup Python" + id: "setup-python" + uses: "actions/setup-python@v4" + with: + python-version: | + 3.9 + 3.10 + 3.11 + pypy-3.9 + allow-prereleases: true + + - name: "Show environment (post)" + shell: "bash" + run: env | sort + + - name: "Linux / macOS" + if: "runner.os != 'windows'" + shell: "bash" + run: | + find "$RUNNER_TOOL_CACHE/Python" "$RUNNER_TOOL_CACHE/PyPy" -mindepth 2 -maxdepth 2 -name 'x86' -o -name 'x64' | while read path; do + if [[ -x "${path}/bin/python" ]]; then + echo "$path" + fi + done | sort + + - name: "Windows" + if: "runner.os == 'windows'" + shell: "powershell" + run: | + Get-ChildItem -Path "$env:RUNNER_TOOL_CACHE\Python","$env:RUNNER_TOOL_CACHE\PyPy" -Filter "python.exe" -Recurse -Depth 2 diff --git a/identify.py b/identify.py new file mode 100644 index 0000000..8012db6 --- /dev/null +++ b/identify.py @@ -0,0 +1,34 @@ +from __future__ import print_function + +import sys + + +def main(): + python_version, _, _ = sys.version.partition(" ") + architecture = "x86" + if sys.maxsize > 2 ** 32: + architecture = "x64" + + # PyPy + if hasattr(sys, "pypy_version_info"): + implementation = "PyPy" + implementation_version = ".".join(str(v) for v in sys.pypy_version_info[:3]) + + print( + "Python {0} ({1}) [{2} {3}]".format( + python_version, + architecture, + implementation, + implementation_version, + ) + ) + + # CPython + else: + print("CPython {0} ({1})".format(python_version, architecture)) + + return 0 + + +if __name__ == "__main__": + sys.exit(main())