mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-10-29 07:47:14 +00:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7f4fc3e22c | ||
|   | 3605726ffa | ||
|   | b64ffcaf5b | ||
|   | 8d2896179a | ||
|   | 7bc6abb01e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e8111cec9d | ||
|   | a00ea43da6 | ||
|   | 8635b1ccc5 | ||
|   | f6cc428f53 | ||
|   | 5f2af211d6 | ||
|   | 3467d92d48 | 
							
								
								
									
										22
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,10 +20,13 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|         python-version: ['3.9', 'pypy-3.7-v7.x'] | ||||
|         exclude: | ||||
|           - os: macos-13 | ||||
|             python-version: 'pypy-3.7-v7.x' | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -41,7 +44,7 @@ jobs: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         python-version: ['3.9', 'pypy-3.9-v7.x'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python | ||||
|         id: cache-pipenv | ||||
|         uses: ./ | ||||
| @@ -77,7 +80,7 @@ jobs: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         python-version: ['3.9', 'pypy-3.8'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Install poetry | ||||
|         run: pipx install poetry | ||||
|       - name: Init pyproject.toml | ||||
| @@ -88,7 +91,7 @@ jobs: | ||||
|           python-version: ${{ matrix.python-version }} | ||||
|           cache: 'poetry' | ||||
|       - name: Install dependencies | ||||
|         run: poetry install | ||||
|         run: poetry install --no-root | ||||
|  | ||||
|   python-pip-dependencies-caching-path: | ||||
|     name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}) | ||||
| @@ -96,10 +99,13 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|         python-version: ['3.9', 'pypy-3.7-v7.x'] | ||||
|         exclude: | ||||
|           - os: macos-13 | ||||
|             python-version: 'pypy-3.7-v7.x' | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -118,7 +124,7 @@ jobs: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         python-version: ['3.9', 'pypy-3.9-v7.x'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python | ||||
|         id: cache-pipenv | ||||
|         uses: ./ | ||||
|   | ||||
							
								
								
									
										45
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,23 +16,19 @@ jobs: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-20.04, windows-latest] | ||||
|         operating-system: [ubuntu-22.04, windows-latest] | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|  | ||||
|       - name: Run with setup-python 3.5 | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.5 | ||||
|       - name: Verify 3.5 | ||||
|         run: python __tests__/verify-python.py 3.5 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Run with setup-python 3.6 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.6 | ||||
|       - name: Verify 3.6 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         run: python __tests__/verify-python.py 3.6 | ||||
|  | ||||
|       - name: Run with setup-python 3.7 | ||||
| @@ -50,26 +46,50 @@ jobs: | ||||
|         run: python __tests__/verify-python.py 3.8 | ||||
|  | ||||
|       - name: Run with setup-python 3.7.5 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.7.5 | ||||
|       - name: Verify 3.7.5 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         run: python __tests__/verify-python.py 3.7.5 | ||||
|  | ||||
|       - name: Run with setup-python 3.6.7 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.6.7 | ||||
|       - name: Verify 3.6.7 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         run: python __tests__/verify-python.py 3.6.7 | ||||
|  | ||||
|       - name: Run with setup-python 3.8.1 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.8.1 | ||||
|       - name: Verify 3.8.1 | ||||
|         if: ${{ matrix.operating-system == 'windows-latest' }} | ||||
|         run: python __tests__/verify-python.py 3.8.1 | ||||
|  | ||||
|       - name: Run with setup-python 3.7.13 | ||||
|         if: ${{ matrix.operating-system == 'ubuntu-22.04' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.7.13 | ||||
|       - name: Verify 3.7.13 | ||||
|         if: ${{ matrix.operating-system == 'ubuntu-22.04' }} | ||||
|         run: python __tests__/verify-python.py 3.7.13 | ||||
|  | ||||
|       - name: Run with setup-python 3.8.12 | ||||
|         if: ${{ matrix.operating-system == 'ubuntu-22.04' }} | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: 3.8.12 | ||||
|       - name: Verify 3.8.12 | ||||
|         if: ${{ matrix.operating-system == 'ubuntu-22.04' }} | ||||
|         run: python __tests__/verify-python.py 3.8.12 | ||||
|  | ||||
|       - name: Run with setup-python 3.10 | ||||
|         id: cp310 | ||||
|         uses: ./ | ||||
| @@ -93,10 +113,3 @@ jobs: | ||||
|           python-version: '<3.11' | ||||
|       - name: Verify <3.11 | ||||
|         run: python __tests__/verify-python.py 3.10 | ||||
|  | ||||
|       - name: Run with setup-python >3.8 | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: '>3.8' | ||||
|       - name: Verify >3.8 | ||||
|         run: python __tests__/verify-python.py 3.11 | ||||
|   | ||||
							
								
								
									
										20
									
								
								.github/workflows/publish-immutable-action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/publish-immutable-action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| name: 'Publish Immutable Action Version' | ||||
|  | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
|  | ||||
| jobs: | ||||
|   publish: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|       id-token: write | ||||
|       packages: write | ||||
|  | ||||
|     steps: | ||||
|       - name: Checking out | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Publish | ||||
|         id: publish | ||||
|         uses: actions/publish-immutable-action@v0.0.4 | ||||
							
								
								
									
										116
									
								
								.github/workflows/test-graalpy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								.github/workflows/test-graalpy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,116 @@ | ||||
| name: Validate GraalPy e2e | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
|   pull_request: | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
|  | ||||
| jobs: | ||||
|   setup-graalpy: | ||||
|     name: Setup GraalPy ${{ matrix.graalpy }} ${{ matrix.os }} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, ubuntu-22.04, ubuntu-latest] | ||||
|         graalpy: | ||||
|           - 'graalpy-23.0' | ||||
|           - 'graalpy-22.3' | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.graalpy }} | ||||
|         id: setup-python | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: ${{ matrix.graalpy }} | ||||
|  | ||||
|       - name: Check python-path | ||||
|         run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | ||||
|         shell: bash | ||||
|  | ||||
|       - name: GraalPy and Python version | ||||
|         run: python --version | ||||
|  | ||||
|       - name: Run simple code | ||||
|         run: python -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
|       - name: Assert GraalPy is running | ||||
|         run: | | ||||
|           import platform | ||||
|           assert platform.python_implementation().lower() == "graalvm" | ||||
|         shell: python | ||||
|  | ||||
|       - name: Assert expected binaries (or symlinks) are present | ||||
|         run: | | ||||
|           EXECUTABLE=${{ matrix.graalpy }} | ||||
|           EXECUTABLE=${EXECUTABLE/graalpy-/graalpy}  # remove the first '-' in "graalpy-X.Y" -> "graalpyX.Y" to match executable name | ||||
|           EXECUTABLE=${EXECUTABLE%%-*}  # remove any -* suffixe | ||||
|           ${EXECUTABLE} --version | ||||
|         shell: bash | ||||
|  | ||||
|   setup-graalpy-noenv: | ||||
|     name: Setup GraalPy ${{ matrix.graalpy }} ${{ matrix.os }} (noenv) | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, ubuntu-22.04, ubuntu-latest] | ||||
|         graalpy: ['graalpy23.0', 'graalpy22.3'] | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.graalpy }} | ||||
|         id: setup-python | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: ${{ matrix.graalpy }} | ||||
|           update-environment: false | ||||
|  | ||||
|       - name: GraalPy and Python version | ||||
|         run: ${{ steps.setup-python.outputs.python-path }} --version | ||||
|  | ||||
|       - name: Run simple code | ||||
|         run: ${{ steps.setup-python.outputs.python-path }} -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
|   check-latest: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, macos-latest] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup GraalPy and check latest | ||||
|         uses: ./ | ||||
|         id: graalpy | ||||
|         with: | ||||
|           python-version: 'graalpy-23.x' | ||||
|           check-latest: true | ||||
|       - name: GraalPy and Python version | ||||
|         run: python --version | ||||
|  | ||||
|       - name: Run simple code | ||||
|         run: python -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
|       - name: Assert GraalPy is running | ||||
|         run: | | ||||
|           import platform | ||||
|           assert platform.python_implementation().lower() == "graalvm" | ||||
|         shell: python | ||||
|  | ||||
|       - name: Assert expected binaries (or symlinks) are present | ||||
|         run: | | ||||
|           EXECUTABLE='${{ steps.graalpy.outputs.python-version }}' | ||||
|           EXECUTABLE="${EXECUTABLE%.*}" | ||||
|           ${EXECUTABLE} --version | ||||
|         shell: bash | ||||
							
								
								
									
										19
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							| @@ -19,7 +19,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest] | ||||
|         pypy: | ||||
|           - 'pypy-2.7' | ||||
|           - 'pypy-3.7' | ||||
| @@ -32,10 +32,13 @@ jobs: | ||||
|           - 'pypy-2.7-v7.3.4rc1' | ||||
|           - 'pypy-3.7-nightly' | ||||
|           - 'pypy3.8-v7.3.7' | ||||
|         exclude: | ||||
|           - os: macos-13 | ||||
|             pypy: 'pypy-3.7-nightly' | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.pypy }} | ||||
|         id: setup-python | ||||
| @@ -73,12 +76,12 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest] | ||||
|         pypy: ['pypy2.7', 'pypy3.7', 'pypy3.8', 'pypy3.9-nightly'] | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.pypy }} | ||||
|         id: setup-python | ||||
| @@ -98,9 +101,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup PyPy and check latest | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -131,9 +134,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup PyPy and check latest | ||||
|         uses: ./ | ||||
|         with: | ||||
|   | ||||
							
								
								
									
										68
									
								
								.github/workflows/test-python.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/test-python.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,11 +20,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         exclude: | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.5.4 | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.6.7 | ||||
|           - os: ubuntu-22.04 | ||||
| @@ -33,7 +31,7 @@ jobs: | ||||
|             python: 3.8.15 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.python }} | ||||
|         id: setup-python | ||||
| @@ -64,11 +62,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         exclude: | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.5.4 | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.6.7 | ||||
|           - os: ubuntu-22.04 | ||||
| @@ -77,7 +73,7 @@ jobs: | ||||
|             python: 3.8.15 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: build-version-file ${{ matrix.python }} | ||||
|         run: echo ${{ matrix.python }} > .python-version | ||||
| @@ -111,11 +107,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         exclude: | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.5.4 | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.6.7 | ||||
|           - os: ubuntu-22.04 | ||||
| @@ -124,7 +118,7 @@ jobs: | ||||
|             python: 3.8.15 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: build-version-file ${{ matrix.python }} | ||||
|         run: echo ${{ matrix.python }} > .python-version | ||||
| @@ -156,11 +150,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10'] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10'] | ||||
|         exclude: | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.5.4 | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.6.7 | ||||
|           - os: ubuntu-22.04 | ||||
| @@ -169,7 +161,7 @@ jobs: | ||||
|             python: 3.8.15 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: build-version-file ${{ matrix.python }} | ||||
|         run: | | ||||
| @@ -206,11 +198,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: [3.6.7, 3.7.5, 3.8.15, 3.9.13] | ||||
|         exclude: | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.5.4 | ||||
|           - os: ubuntu-22.04 | ||||
|             python: 3.6.7 | ||||
|           - os: ubuntu-22.04 | ||||
| @@ -219,7 +209,7 @@ jobs: | ||||
|             python: 3.8.15 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: build-version-file ${{ matrix.python }} | ||||
|         run: | | ||||
| @@ -251,21 +241,21 @@ jobs: | ||||
|         run: python -c 'import math; print(math.factorial(5))' | ||||
|  | ||||
|   setup-pre-release-version-from-manifest: | ||||
|     name: Setup 3.9.0-beta.4 ${{ matrix.os }} | ||||
|     name: Setup 3.11.0-beta.4 ${{ matrix.os }} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python 3.9.0-beta.4 | ||||
|       - name: setup-python 3.11.0-beta.4 | ||||
|         id: setup-python | ||||
|         uses: ./ | ||||
|         with: | ||||
|           python-version: '3.9.0-beta.4' | ||||
|           python-version: '3.11.0-beta.4' | ||||
|  | ||||
|       - name: Check python-path | ||||
|         run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | ||||
| @@ -274,8 +264,8 @@ jobs: | ||||
|       - name: Validate version | ||||
|         run: | | ||||
|           $pythonVersion = (python --version) | ||||
|           if ("Python 3.9.0b4" -ne "$pythonVersion"){ | ||||
|             Write-Host "The current version is $pythonVersion; expected version is 3.9.0b4" | ||||
|           if ("Python 3.11.0b4" -ne "$pythonVersion"){ | ||||
|             Write-Host "The current version is $pythonVersion; expected version is 3.11.0b4" | ||||
|             exit 1 | ||||
|           } | ||||
|           $pythonVersion | ||||
| @@ -293,7 +283,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python 3.9-dev | ||||
|         id: setup-python | ||||
| @@ -321,7 +311,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python 3.12 | ||||
|         id: setup-python | ||||
| @@ -347,11 +337,11 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|         python: ['3.7', '3.8', '3.9', '3.10'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: setup-python ${{ matrix.python }} | ||||
|         id: setup-python | ||||
| @@ -374,7 +364,7 @@ jobs: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         python-version: ['3.8', '3.9', '3.10'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python and check latest | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -395,9 +385,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         os: [ubuntu-22.04, windows-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Setup Python and check latest | ||||
|         uses: ./ | ||||
|         with: | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@actions/cache" | ||||
| version: 3.1.4 | ||||
| version: 4.0.3 | ||||
| type: npm | ||||
| summary: Actions cache lib | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/cache | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@actions/core" | ||||
| version: 1.10.0 | ||||
| version: 1.11.1 | ||||
| type: npm | ||||
| summary: Actions core lib | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/core | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@actions/exec" | ||||
| version: 1.1.0 | ||||
| version: 1.1.1 | ||||
| type: npm | ||||
| summary: Actions exec lib | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/exec | ||||
|   | ||||
							
								
								
									
										32
									
								
								.licenses/npm/@actions/http-client-2.2.3.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/@actions/http-client-2.2.3.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: "@actions/http-client" | ||||
| version: 2.2.3 | ||||
| type: npm | ||||
| summary: Actions Http Client | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/http-client | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     Actions Http Client for Node.js | ||||
| 
 | ||||
|     Copyright (c) GitHub, Inc. | ||||
| 
 | ||||
|     All rights reserved. | ||||
| 
 | ||||
|     MIT License | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy of this software and | ||||
|     associated documentation files (the "Software"), to deal in the Software without restriction, | ||||
|     including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
|     and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, | ||||
|     subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT | ||||
|     LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | ||||
|     NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
|     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||||
|     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										30
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| --- | ||||
| name: "@fastify/busboy" | ||||
| version: 2.1.1 | ||||
| type: npm | ||||
| summary: A streaming parser for HTML form data for node.js | ||||
| homepage: | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |- | ||||
|     Copyright Brian White. All rights reserved. | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to | ||||
|     deal in the Software without restriction, including without limitation the | ||||
|     rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||||
|     sell copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in | ||||
|     all copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||
|     IN THE SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| --- | ||||
| name: "@protobuf-ts/plugin-framework" | ||||
| version: 2.9.6 | ||||
| type: npm | ||||
| summary: framework to create protoc plugins | ||||
| homepage: https://github.com/timostamm/protobuf-ts | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |2 | ||||
|                                     Apache License | ||||
|                                Version 2.0, January 2004 | ||||
|                             http://www.apache.org/licenses/ | ||||
| 
 | ||||
|        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|        1. Definitions. | ||||
| 
 | ||||
|           "License" shall mean the terms and conditions for use, reproduction, | ||||
|           and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|           "Licensor" shall mean the copyright owner or entity authorized by | ||||
|           the copyright owner that is granting the License. | ||||
| 
 | ||||
|           "Legal Entity" shall mean the union of the acting entity and all | ||||
|           other entities that control, are controlled by, or are under common | ||||
|           control with that entity. For the purposes of this definition, | ||||
|           "control" means (i) the power, direct or indirect, to cause the | ||||
|           direction or management of such entity, whether by contract or | ||||
|           otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|           outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|           "You" (or "Your") shall mean an individual or Legal Entity | ||||
|           exercising permissions granted by this License. | ||||
| 
 | ||||
|           "Source" form shall mean the preferred form for making modifications, | ||||
|           including but not limited to software source code, documentation | ||||
|           source, and configuration files. | ||||
| 
 | ||||
|           "Object" form shall mean any form resulting from mechanical | ||||
|           transformation or translation of a Source form, including but | ||||
|           not limited to compiled object code, generated documentation, | ||||
|           and conversions to other media types. | ||||
| 
 | ||||
|           "Work" shall mean the work of authorship, whether in Source or | ||||
|           Object form, made available under the License, as indicated by a | ||||
|           copyright notice that is included in or attached to the work | ||||
|           (an example is provided in the Appendix below). | ||||
| 
 | ||||
|           "Derivative Works" shall mean any work, whether in Source or Object | ||||
|           form, that is based on (or derived from) the Work and for which the | ||||
|           editorial revisions, annotations, elaborations, or other modifications | ||||
|           represent, as a whole, an original work of authorship. For the purposes | ||||
|           of this License, Derivative Works shall not include works that remain | ||||
|           separable from, or merely link (or bind by name) to the interfaces of, | ||||
|           the Work and Derivative Works thereof. | ||||
| 
 | ||||
|           "Contribution" shall mean any work of authorship, including | ||||
|           the original version of the Work and any modifications or additions | ||||
|           to that Work or Derivative Works thereof, that is intentionally | ||||
|           submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|           or by an individual or Legal Entity authorized to submit on behalf of | ||||
|           the copyright owner. For the purposes of this definition, "submitted" | ||||
|           means any form of electronic, verbal, or written communication sent | ||||
|           to the Licensor or its representatives, including but not limited to | ||||
|           communication on electronic mailing lists, source code control systems, | ||||
|           and issue tracking systems that are managed by, or on behalf of, the | ||||
|           Licensor for the purpose of discussing and improving the Work, but | ||||
|           excluding communication that is conspicuously marked or otherwise | ||||
|           designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|           "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|           on behalf of whom a Contribution has been received by Licensor and | ||||
|           subsequently incorporated within the Work. | ||||
| 
 | ||||
|        2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           copyright license to reproduce, prepare Derivative Works of, | ||||
|           publicly display, publicly perform, sublicense, and distribute the | ||||
|           Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|        3. Grant of Patent License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           (except as stated in this section) patent license to make, have made, | ||||
|           use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|           where such license applies only to those patent claims licensable | ||||
|           by such Contributor that are necessarily infringed by their | ||||
|           Contribution(s) alone or by combination of their Contribution(s) | ||||
|           with the Work to which such Contribution(s) was submitted. If You | ||||
|           institute patent litigation against any entity (including a | ||||
|           cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|           or a Contribution incorporated within the Work constitutes direct | ||||
|           or contributory patent infringement, then any patent licenses | ||||
|           granted to You under this License for that Work shall terminate | ||||
|           as of the date such litigation is filed. | ||||
| 
 | ||||
|        4. Redistribution. You may reproduce and distribute copies of the | ||||
|           Work or Derivative Works thereof in any medium, with or without | ||||
|           modifications, and in Source or Object form, provided that You | ||||
|           meet the following conditions: | ||||
| 
 | ||||
|           (a) You must give any other recipients of the Work or | ||||
|               Derivative Works a copy of this License; and | ||||
| 
 | ||||
|           (b) You must cause any modified files to carry prominent notices | ||||
|               stating that You changed the files; and | ||||
| 
 | ||||
|           (c) You must retain, in the Source form of any Derivative Works | ||||
|               that You distribute, all copyright, patent, trademark, and | ||||
|               attribution notices from the Source form of the Work, | ||||
|               excluding those notices that do not pertain to any part of | ||||
|               the Derivative Works; and | ||||
| 
 | ||||
|           (d) If the Work includes a "NOTICE" text file as part of its | ||||
|               distribution, then any Derivative Works that You distribute must | ||||
|               include a readable copy of the attribution notices contained | ||||
|               within such NOTICE file, excluding those notices that do not | ||||
|               pertain to any part of the Derivative Works, in at least one | ||||
|               of the following places: within a NOTICE text file distributed | ||||
|               as part of the Derivative Works; within the Source form or | ||||
|               documentation, if provided along with the Derivative Works; or, | ||||
|               within a display generated by the Derivative Works, if and | ||||
|               wherever such third-party notices normally appear. The contents | ||||
|               of the NOTICE file are for informational purposes only and | ||||
|               do not modify the License. You may add Your own attribution | ||||
|               notices within Derivative Works that You distribute, alongside | ||||
|               or as an addendum to the NOTICE text from the Work, provided | ||||
|               that such additional attribution notices cannot be construed | ||||
|               as modifying the License. | ||||
| 
 | ||||
|           You may add Your own copyright statement to Your modifications and | ||||
|           may provide additional or different license terms and conditions | ||||
|           for use, reproduction, or distribution of Your modifications, or | ||||
|           for any such Derivative Works as a whole, provided Your use, | ||||
|           reproduction, and distribution of the Work otherwise complies with | ||||
|           the conditions stated in this License. | ||||
| 
 | ||||
|        5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|           any Contribution intentionally submitted for inclusion in the Work | ||||
|           by You to the Licensor shall be under the terms and conditions of | ||||
|           this License, without any additional terms or conditions. | ||||
|           Notwithstanding the above, nothing herein shall supersede or modify | ||||
|           the terms of any separate license agreement you may have executed | ||||
|           with Licensor regarding such Contributions. | ||||
| 
 | ||||
|        6. Trademarks. This License does not grant permission to use the trade | ||||
|           names, trademarks, service marks, or product names of the Licensor, | ||||
|           except as required for reasonable and customary use in describing the | ||||
|           origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|        7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|           agreed to in writing, Licensor provides the Work (and each | ||||
|           Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|           implied, including, without limitation, any warranties or conditions | ||||
|           of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|           PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|           appropriateness of using or redistributing the Work and assume any | ||||
|           risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|        8. Limitation of Liability. In no event and under no legal theory, | ||||
|           whether in tort (including negligence), contract, or otherwise, | ||||
|           unless required by applicable law (such as deliberate and grossly | ||||
|           negligent acts) or agreed to in writing, shall any Contributor be | ||||
|           liable to You for damages, including any direct, indirect, special, | ||||
|           incidental, or consequential damages of any character arising as a | ||||
|           result of this License or out of the use or inability to use the | ||||
|           Work (including but not limited to damages for loss of goodwill, | ||||
|           work stoppage, computer failure or malfunction, or any and all | ||||
|           other commercial damages or losses), even if such Contributor | ||||
|           has been advised of the possibility of such damages. | ||||
| 
 | ||||
|        9. Accepting Warranty or Additional Liability. While redistributing | ||||
|           the Work or Derivative Works thereof, You may choose to offer, | ||||
|           and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|           or other liability obligations and/or rights consistent with this | ||||
|           License. However, in accepting such obligations, You may act only | ||||
|           on Your own behalf and on Your sole responsibility, not on behalf | ||||
|           of any other Contributor, and only if You agree to indemnify, | ||||
|           defend, and hold each Contributor harmless for any liability | ||||
|           incurred by, or claims asserted against, such Contributor by reason | ||||
|           of your accepting any such warranty or additional liability. | ||||
| notices: [] | ||||
							
								
								
									
										186
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,186 @@ | ||||
| --- | ||||
| name: "@protobuf-ts/plugin" | ||||
| version: 2.9.6 | ||||
| type: npm | ||||
| summary: The protocol buffer compiler plugin "protobuf-ts" generates TypeScript, gRPC-web, | ||||
|   Twirp, and more. | ||||
| homepage: https://github.com/timostamm/protobuf-ts | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |2 | ||||
|                                     Apache License | ||||
|                                Version 2.0, January 2004 | ||||
|                             http://www.apache.org/licenses/ | ||||
| 
 | ||||
|        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|        1. Definitions. | ||||
| 
 | ||||
|           "License" shall mean the terms and conditions for use, reproduction, | ||||
|           and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|           "Licensor" shall mean the copyright owner or entity authorized by | ||||
|           the copyright owner that is granting the License. | ||||
| 
 | ||||
|           "Legal Entity" shall mean the union of the acting entity and all | ||||
|           other entities that control, are controlled by, or are under common | ||||
|           control with that entity. For the purposes of this definition, | ||||
|           "control" means (i) the power, direct or indirect, to cause the | ||||
|           direction or management of such entity, whether by contract or | ||||
|           otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|           outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|           "You" (or "Your") shall mean an individual or Legal Entity | ||||
|           exercising permissions granted by this License. | ||||
| 
 | ||||
|           "Source" form shall mean the preferred form for making modifications, | ||||
|           including but not limited to software source code, documentation | ||||
|           source, and configuration files. | ||||
| 
 | ||||
|           "Object" form shall mean any form resulting from mechanical | ||||
|           transformation or translation of a Source form, including but | ||||
|           not limited to compiled object code, generated documentation, | ||||
|           and conversions to other media types. | ||||
| 
 | ||||
|           "Work" shall mean the work of authorship, whether in Source or | ||||
|           Object form, made available under the License, as indicated by a | ||||
|           copyright notice that is included in or attached to the work | ||||
|           (an example is provided in the Appendix below). | ||||
| 
 | ||||
|           "Derivative Works" shall mean any work, whether in Source or Object | ||||
|           form, that is based on (or derived from) the Work and for which the | ||||
|           editorial revisions, annotations, elaborations, or other modifications | ||||
|           represent, as a whole, an original work of authorship. For the purposes | ||||
|           of this License, Derivative Works shall not include works that remain | ||||
|           separable from, or merely link (or bind by name) to the interfaces of, | ||||
|           the Work and Derivative Works thereof. | ||||
| 
 | ||||
|           "Contribution" shall mean any work of authorship, including | ||||
|           the original version of the Work and any modifications or additions | ||||
|           to that Work or Derivative Works thereof, that is intentionally | ||||
|           submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|           or by an individual or Legal Entity authorized to submit on behalf of | ||||
|           the copyright owner. For the purposes of this definition, "submitted" | ||||
|           means any form of electronic, verbal, or written communication sent | ||||
|           to the Licensor or its representatives, including but not limited to | ||||
|           communication on electronic mailing lists, source code control systems, | ||||
|           and issue tracking systems that are managed by, or on behalf of, the | ||||
|           Licensor for the purpose of discussing and improving the Work, but | ||||
|           excluding communication that is conspicuously marked or otherwise | ||||
|           designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|           "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|           on behalf of whom a Contribution has been received by Licensor and | ||||
|           subsequently incorporated within the Work. | ||||
| 
 | ||||
|        2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           copyright license to reproduce, prepare Derivative Works of, | ||||
|           publicly display, publicly perform, sublicense, and distribute the | ||||
|           Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|        3. Grant of Patent License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           (except as stated in this section) patent license to make, have made, | ||||
|           use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|           where such license applies only to those patent claims licensable | ||||
|           by such Contributor that are necessarily infringed by their | ||||
|           Contribution(s) alone or by combination of their Contribution(s) | ||||
|           with the Work to which such Contribution(s) was submitted. If You | ||||
|           institute patent litigation against any entity (including a | ||||
|           cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|           or a Contribution incorporated within the Work constitutes direct | ||||
|           or contributory patent infringement, then any patent licenses | ||||
|           granted to You under this License for that Work shall terminate | ||||
|           as of the date such litigation is filed. | ||||
| 
 | ||||
|        4. Redistribution. You may reproduce and distribute copies of the | ||||
|           Work or Derivative Works thereof in any medium, with or without | ||||
|           modifications, and in Source or Object form, provided that You | ||||
|           meet the following conditions: | ||||
| 
 | ||||
|           (a) You must give any other recipients of the Work or | ||||
|               Derivative Works a copy of this License; and | ||||
| 
 | ||||
|           (b) You must cause any modified files to carry prominent notices | ||||
|               stating that You changed the files; and | ||||
| 
 | ||||
|           (c) You must retain, in the Source form of any Derivative Works | ||||
|               that You distribute, all copyright, patent, trademark, and | ||||
|               attribution notices from the Source form of the Work, | ||||
|               excluding those notices that do not pertain to any part of | ||||
|               the Derivative Works; and | ||||
| 
 | ||||
|           (d) If the Work includes a "NOTICE" text file as part of its | ||||
|               distribution, then any Derivative Works that You distribute must | ||||
|               include a readable copy of the attribution notices contained | ||||
|               within such NOTICE file, excluding those notices that do not | ||||
|               pertain to any part of the Derivative Works, in at least one | ||||
|               of the following places: within a NOTICE text file distributed | ||||
|               as part of the Derivative Works; within the Source form or | ||||
|               documentation, if provided along with the Derivative Works; or, | ||||
|               within a display generated by the Derivative Works, if and | ||||
|               wherever such third-party notices normally appear. The contents | ||||
|               of the NOTICE file are for informational purposes only and | ||||
|               do not modify the License. You may add Your own attribution | ||||
|               notices within Derivative Works that You distribute, alongside | ||||
|               or as an addendum to the NOTICE text from the Work, provided | ||||
|               that such additional attribution notices cannot be construed | ||||
|               as modifying the License. | ||||
| 
 | ||||
|           You may add Your own copyright statement to Your modifications and | ||||
|           may provide additional or different license terms and conditions | ||||
|           for use, reproduction, or distribution of Your modifications, or | ||||
|           for any such Derivative Works as a whole, provided Your use, | ||||
|           reproduction, and distribution of the Work otherwise complies with | ||||
|           the conditions stated in this License. | ||||
| 
 | ||||
|        5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|           any Contribution intentionally submitted for inclusion in the Work | ||||
|           by You to the Licensor shall be under the terms and conditions of | ||||
|           this License, without any additional terms or conditions. | ||||
|           Notwithstanding the above, nothing herein shall supersede or modify | ||||
|           the terms of any separate license agreement you may have executed | ||||
|           with Licensor regarding such Contributions. | ||||
| 
 | ||||
|        6. Trademarks. This License does not grant permission to use the trade | ||||
|           names, trademarks, service marks, or product names of the Licensor, | ||||
|           except as required for reasonable and customary use in describing the | ||||
|           origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|        7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|           agreed to in writing, Licensor provides the Work (and each | ||||
|           Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|           implied, including, without limitation, any warranties or conditions | ||||
|           of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|           PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|           appropriateness of using or redistributing the Work and assume any | ||||
|           risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|        8. Limitation of Liability. In no event and under no legal theory, | ||||
|           whether in tort (including negligence), contract, or otherwise, | ||||
|           unless required by applicable law (such as deliberate and grossly | ||||
|           negligent acts) or agreed to in writing, shall any Contributor be | ||||
|           liable to You for damages, including any direct, indirect, special, | ||||
|           incidental, or consequential damages of any character arising as a | ||||
|           result of this License or out of the use or inability to use the | ||||
|           Work (including but not limited to damages for loss of goodwill, | ||||
|           work stoppage, computer failure or malfunction, or any and all | ||||
|           other commercial damages or losses), even if such Contributor | ||||
|           has been advised of the possibility of such damages. | ||||
| 
 | ||||
|        9. Accepting Warranty or Additional Liability. While redistributing | ||||
|           the Work or Derivative Works thereof, You may choose to offer, | ||||
|           and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|           or other liability obligations and/or rights consistent with this | ||||
|           License. However, in accepting such obligations, You may act only | ||||
|           on Your own behalf and on Your sole responsibility, not on behalf | ||||
|           of any other Contributor, and only if You agree to indemnify, | ||||
|           defend, and hold each Contributor harmless for any liability | ||||
|           incurred by, or claims asserted against, such Contributor by reason | ||||
|           of your accepting any such warranty or additional liability. | ||||
| notices: [] | ||||
							
								
								
									
										207
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,207 @@ | ||||
| --- | ||||
| name: "@protobuf-ts/protoc" | ||||
| version: 2.9.6 | ||||
| type: npm | ||||
| summary: Installs the protocol buffer compiler "protoc" for you. | ||||
| homepage: https://github.com/timostamm/protobuf-ts | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: Auto-generated Apache-2.0 license text | ||||
|   text: |2 | ||||
|                                      Apache License | ||||
|                                Version 2.0, January 2004 | ||||
|                             http://www.apache.org/licenses/ | ||||
| 
 | ||||
|        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|        1. Definitions. | ||||
| 
 | ||||
|           "License" shall mean the terms and conditions for use, reproduction, | ||||
|           and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|           "Licensor" shall mean the copyright owner or entity authorized by | ||||
|           the copyright owner that is granting the License. | ||||
| 
 | ||||
|           "Legal Entity" shall mean the union of the acting entity and all | ||||
|           other entities that control, are controlled by, or are under common | ||||
|           control with that entity. For the purposes of this definition, | ||||
|           "control" means (i) the power, direct or indirect, to cause the | ||||
|           direction or management of such entity, whether by contract or | ||||
|           otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|           outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|           "You" (or "Your") shall mean an individual or Legal Entity | ||||
|           exercising permissions granted by this License. | ||||
| 
 | ||||
|           "Source" form shall mean the preferred form for making modifications, | ||||
|           including but not limited to software source code, documentation | ||||
|           source, and configuration files. | ||||
| 
 | ||||
|           "Object" form shall mean any form resulting from mechanical | ||||
|           transformation or translation of a Source form, including but | ||||
|           not limited to compiled object code, generated documentation, | ||||
|           and conversions to other media types. | ||||
| 
 | ||||
|           "Work" shall mean the work of authorship, whether in Source or | ||||
|           Object form, made available under the License, as indicated by a | ||||
|           (an example is provided in the Appendix below). | ||||
| 
 | ||||
|           "Derivative Works" shall mean any work, whether in Source or Object | ||||
|           form, that is based on (or derived from) the Work and for which the | ||||
|           editorial revisions, annotations, elaborations, or other modifications | ||||
|           represent, as a whole, an original work of authorship. For the purposes | ||||
|           of this License, Derivative Works shall not include works that remain | ||||
|           separable from, or merely link (or bind by name) to the interfaces of, | ||||
|           the Work and Derivative Works thereof. | ||||
| 
 | ||||
|           "Contribution" shall mean any work of authorship, including | ||||
|           the original version of the Work and any modifications or additions | ||||
|           to that Work or Derivative Works thereof, that is intentionally | ||||
|           submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|           or by an individual or Legal Entity authorized to submit on behalf of | ||||
|           the copyright owner. For the purposes of this definition, "submitted" | ||||
|           means any form of electronic, verbal, or written communication sent | ||||
|           to the Licensor or its representatives, including but not limited to | ||||
|           communication on electronic mailing lists, source code control systems, | ||||
|           and issue tracking systems that are managed by, or on behalf of, the | ||||
|           Licensor for the purpose of discussing and improving the Work, but | ||||
|           excluding communication that is conspicuously marked or otherwise | ||||
|           designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|           "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|           on behalf of whom a Contribution has been received by Licensor and | ||||
|           subsequently incorporated within the Work. | ||||
| 
 | ||||
|        2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           publicly display, publicly perform, sublicense, and distribute the | ||||
|           Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|        3. Grant of Patent License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           (except as stated in this section) patent license to make, have made, | ||||
|           use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|           where such license applies only to those patent claims licensable | ||||
|           by such Contributor that are necessarily infringed by their | ||||
|           Contribution(s) alone or by combination of their Contribution(s) | ||||
|           with the Work to which such Contribution(s) was submitted. If You | ||||
|           institute patent litigation against any entity (including a | ||||
|           cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|           or a Contribution incorporated within the Work constitutes direct | ||||
|           or contributory patent infringement, then any patent licenses | ||||
|           granted to You under this License for that Work shall terminate | ||||
|           as of the date such litigation is filed. | ||||
| 
 | ||||
|        4. Redistribution. You may reproduce and distribute copies of the | ||||
|           Work or Derivative Works thereof in any medium, with or without | ||||
|           modifications, and in Source or Object form, provided that You | ||||
|           meet the following conditions: | ||||
| 
 | ||||
|           (a) You must give any other recipients of the Work or | ||||
|               Derivative Works a copy of this License; and | ||||
| 
 | ||||
|           (b) You must cause any modified files to carry prominent notices | ||||
|               stating that You changed the files; and | ||||
| 
 | ||||
|               that You distribute, all copyright, patent, trademark, and | ||||
|               attribution notices from the Source form of the Work, | ||||
|               excluding those notices that do not pertain to any part of | ||||
|               the Derivative Works; and | ||||
| 
 | ||||
|           (d) If the Work includes a "NOTICE" text file as part of its | ||||
|               distribution, then any Derivative Works that You distribute must | ||||
|               include a readable copy of the attribution notices contained | ||||
|               within such NOTICE file, excluding those notices that do not | ||||
|               pertain to any part of the Derivative Works, in at least one | ||||
|               of the following places: within a NOTICE text file distributed | ||||
|               as part of the Derivative Works; within the Source form or | ||||
|               documentation, if provided along with the Derivative Works; or, | ||||
|               within a display generated by the Derivative Works, if and | ||||
|               wherever such third-party notices normally appear. The contents | ||||
|               of the NOTICE file are for informational purposes only and | ||||
|               do not modify the License. You may add Your own attribution | ||||
|               notices within Derivative Works that You distribute, alongside | ||||
|               or as an addendum to the NOTICE text from the Work, provided | ||||
|               that such additional attribution notices cannot be construed | ||||
|               as modifying the License. | ||||
| 
 | ||||
|           You may add Your own copyright statement to Your modifications and | ||||
|           may provide additional or different license terms and conditions | ||||
|           for use, reproduction, or distribution of Your modifications, or | ||||
|           for any such Derivative Works as a whole, provided Your use, | ||||
|           reproduction, and distribution of the Work otherwise complies with | ||||
|           the conditions stated in this License. | ||||
| 
 | ||||
|        5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|           any Contribution intentionally submitted for inclusion in the Work | ||||
|           by You to the Licensor shall be under the terms and conditions of | ||||
|           this License, without any additional terms or conditions. | ||||
|           Notwithstanding the above, nothing herein shall supersede or modify | ||||
|           the terms of any separate license agreement you may have executed | ||||
|           with Licensor regarding such Contributions. | ||||
| 
 | ||||
|        6. Trademarks. This License does not grant permission to use the trade | ||||
|           names, trademarks, service marks, or product names of the Licensor, | ||||
|           except as required for reasonable and customary use in describing the | ||||
|           origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|        7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|           agreed to in writing, Licensor provides the Work (and each | ||||
|           Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|           implied, including, without limitation, any warranties or conditions | ||||
|           of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|           PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|           appropriateness of using or redistributing the Work and assume any | ||||
|           risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|        8. Limitation of Liability. In no event and under no legal theory, | ||||
|           whether in tort (including negligence), contract, or otherwise, | ||||
|           unless required by applicable law (such as deliberate and grossly | ||||
|           negligent acts) or agreed to in writing, shall any Contributor be | ||||
|           liable to You for damages, including any direct, indirect, special, | ||||
|           incidental, or consequential damages of any character arising as a | ||||
|           result of this License or out of the use or inability to use the | ||||
|           Work (including but not limited to damages for loss of goodwill, | ||||
|           work stoppage, computer failure or malfunction, or any and all | ||||
|           other commercial damages or losses), even if such Contributor | ||||
|           has been advised of the possibility of such damages. | ||||
| 
 | ||||
|        9. Accepting Warranty or Additional Liability. While redistributing | ||||
|           the Work or Derivative Works thereof, You may choose to offer, | ||||
|           and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|           or other liability obligations and/or rights consistent with this | ||||
|           License. However, in accepting such obligations, You may act only | ||||
|           on Your own behalf and on Your sole responsibility, not on behalf | ||||
|           of any other Contributor, and only if You agree to indemnify, | ||||
|           defend, and hold each Contributor harmless for any liability | ||||
|           incurred by, or claims asserted against, such Contributor by reason | ||||
|           of your accepting any such warranty or additional liability. | ||||
| 
 | ||||
|        END OF TERMS AND CONDITIONS | ||||
| 
 | ||||
|        APPENDIX: How to apply the Apache License to your work. | ||||
| 
 | ||||
|           To apply the Apache License to your work, attach the following | ||||
|           boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|           replaced with your own identifying information. (Don't include | ||||
|           the brackets!)  The text should be enclosed in the appropriate | ||||
|           comment syntax for the file format. We also recommend that a | ||||
|           file or class name and description of purpose be included on the | ||||
|           same "printed page" as the copyright notice for easier | ||||
|           identification within third-party archives. | ||||
| 
 | ||||
|        Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|        you may not use this file except in compliance with the License. | ||||
|        You may obtain a copy of the License at | ||||
| 
 | ||||
|            http://www.apache.org/licenses/LICENSE-2.0 | ||||
| 
 | ||||
|        Unless required by applicable law or agreed to in writing, software | ||||
|        distributed under the License is distributed on an "AS IS" BASIS, | ||||
|        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|        See the License for the specific language governing permissions and | ||||
|        limitations under the License. | ||||
| notices: [] | ||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| --- | ||||
| name: "@protobuf-ts/runtime-rpc" | ||||
| version: 2.9.6 | ||||
| type: npm | ||||
| summary: Runtime library for RPC clients generated by the protoc plugin "protobuf-ts" | ||||
| homepage: https://github.com/timostamm/protobuf-ts | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |2 | ||||
|                                     Apache License | ||||
|                                Version 2.0, January 2004 | ||||
|                             http://www.apache.org/licenses/ | ||||
| 
 | ||||
|        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|        1. Definitions. | ||||
| 
 | ||||
|           "License" shall mean the terms and conditions for use, reproduction, | ||||
|           and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|           "Licensor" shall mean the copyright owner or entity authorized by | ||||
|           the copyright owner that is granting the License. | ||||
| 
 | ||||
|           "Legal Entity" shall mean the union of the acting entity and all | ||||
|           other entities that control, are controlled by, or are under common | ||||
|           control with that entity. For the purposes of this definition, | ||||
|           "control" means (i) the power, direct or indirect, to cause the | ||||
|           direction or management of such entity, whether by contract or | ||||
|           otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|           outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|           "You" (or "Your") shall mean an individual or Legal Entity | ||||
|           exercising permissions granted by this License. | ||||
| 
 | ||||
|           "Source" form shall mean the preferred form for making modifications, | ||||
|           including but not limited to software source code, documentation | ||||
|           source, and configuration files. | ||||
| 
 | ||||
|           "Object" form shall mean any form resulting from mechanical | ||||
|           transformation or translation of a Source form, including but | ||||
|           not limited to compiled object code, generated documentation, | ||||
|           and conversions to other media types. | ||||
| 
 | ||||
|           "Work" shall mean the work of authorship, whether in Source or | ||||
|           Object form, made available under the License, as indicated by a | ||||
|           copyright notice that is included in or attached to the work | ||||
|           (an example is provided in the Appendix below). | ||||
| 
 | ||||
|           "Derivative Works" shall mean any work, whether in Source or Object | ||||
|           form, that is based on (or derived from) the Work and for which the | ||||
|           editorial revisions, annotations, elaborations, or other modifications | ||||
|           represent, as a whole, an original work of authorship. For the purposes | ||||
|           of this License, Derivative Works shall not include works that remain | ||||
|           separable from, or merely link (or bind by name) to the interfaces of, | ||||
|           the Work and Derivative Works thereof. | ||||
| 
 | ||||
|           "Contribution" shall mean any work of authorship, including | ||||
|           the original version of the Work and any modifications or additions | ||||
|           to that Work or Derivative Works thereof, that is intentionally | ||||
|           submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|           or by an individual or Legal Entity authorized to submit on behalf of | ||||
|           the copyright owner. For the purposes of this definition, "submitted" | ||||
|           means any form of electronic, verbal, or written communication sent | ||||
|           to the Licensor or its representatives, including but not limited to | ||||
|           communication on electronic mailing lists, source code control systems, | ||||
|           and issue tracking systems that are managed by, or on behalf of, the | ||||
|           Licensor for the purpose of discussing and improving the Work, but | ||||
|           excluding communication that is conspicuously marked or otherwise | ||||
|           designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|           "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|           on behalf of whom a Contribution has been received by Licensor and | ||||
|           subsequently incorporated within the Work. | ||||
| 
 | ||||
|        2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           copyright license to reproduce, prepare Derivative Works of, | ||||
|           publicly display, publicly perform, sublicense, and distribute the | ||||
|           Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|        3. Grant of Patent License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           (except as stated in this section) patent license to make, have made, | ||||
|           use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|           where such license applies only to those patent claims licensable | ||||
|           by such Contributor that are necessarily infringed by their | ||||
|           Contribution(s) alone or by combination of their Contribution(s) | ||||
|           with the Work to which such Contribution(s) was submitted. If You | ||||
|           institute patent litigation against any entity (including a | ||||
|           cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|           or a Contribution incorporated within the Work constitutes direct | ||||
|           or contributory patent infringement, then any patent licenses | ||||
|           granted to You under this License for that Work shall terminate | ||||
|           as of the date such litigation is filed. | ||||
| 
 | ||||
|        4. Redistribution. You may reproduce and distribute copies of the | ||||
|           Work or Derivative Works thereof in any medium, with or without | ||||
|           modifications, and in Source or Object form, provided that You | ||||
|           meet the following conditions: | ||||
| 
 | ||||
|           (a) You must give any other recipients of the Work or | ||||
|               Derivative Works a copy of this License; and | ||||
| 
 | ||||
|           (b) You must cause any modified files to carry prominent notices | ||||
|               stating that You changed the files; and | ||||
| 
 | ||||
|           (c) You must retain, in the Source form of any Derivative Works | ||||
|               that You distribute, all copyright, patent, trademark, and | ||||
|               attribution notices from the Source form of the Work, | ||||
|               excluding those notices that do not pertain to any part of | ||||
|               the Derivative Works; and | ||||
| 
 | ||||
|           (d) If the Work includes a "NOTICE" text file as part of its | ||||
|               distribution, then any Derivative Works that You distribute must | ||||
|               include a readable copy of the attribution notices contained | ||||
|               within such NOTICE file, excluding those notices that do not | ||||
|               pertain to any part of the Derivative Works, in at least one | ||||
|               of the following places: within a NOTICE text file distributed | ||||
|               as part of the Derivative Works; within the Source form or | ||||
|               documentation, if provided along with the Derivative Works; or, | ||||
|               within a display generated by the Derivative Works, if and | ||||
|               wherever such third-party notices normally appear. The contents | ||||
|               of the NOTICE file are for informational purposes only and | ||||
|               do not modify the License. You may add Your own attribution | ||||
|               notices within Derivative Works that You distribute, alongside | ||||
|               or as an addendum to the NOTICE text from the Work, provided | ||||
|               that such additional attribution notices cannot be construed | ||||
|               as modifying the License. | ||||
| 
 | ||||
|           You may add Your own copyright statement to Your modifications and | ||||
|           may provide additional or different license terms and conditions | ||||
|           for use, reproduction, or distribution of Your modifications, or | ||||
|           for any such Derivative Works as a whole, provided Your use, | ||||
|           reproduction, and distribution of the Work otherwise complies with | ||||
|           the conditions stated in this License. | ||||
| 
 | ||||
|        5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|           any Contribution intentionally submitted for inclusion in the Work | ||||
|           by You to the Licensor shall be under the terms and conditions of | ||||
|           this License, without any additional terms or conditions. | ||||
|           Notwithstanding the above, nothing herein shall supersede or modify | ||||
|           the terms of any separate license agreement you may have executed | ||||
|           with Licensor regarding such Contributions. | ||||
| 
 | ||||
|        6. Trademarks. This License does not grant permission to use the trade | ||||
|           names, trademarks, service marks, or product names of the Licensor, | ||||
|           except as required for reasonable and customary use in describing the | ||||
|           origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|        7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|           agreed to in writing, Licensor provides the Work (and each | ||||
|           Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|           implied, including, without limitation, any warranties or conditions | ||||
|           of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|           PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|           appropriateness of using or redistributing the Work and assume any | ||||
|           risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|        8. Limitation of Liability. In no event and under no legal theory, | ||||
|           whether in tort (including negligence), contract, or otherwise, | ||||
|           unless required by applicable law (such as deliberate and grossly | ||||
|           negligent acts) or agreed to in writing, shall any Contributor be | ||||
|           liable to You for damages, including any direct, indirect, special, | ||||
|           incidental, or consequential damages of any character arising as a | ||||
|           result of this License or out of the use or inability to use the | ||||
|           Work (including but not limited to damages for loss of goodwill, | ||||
|           work stoppage, computer failure or malfunction, or any and all | ||||
|           other commercial damages or losses), even if such Contributor | ||||
|           has been advised of the possibility of such damages. | ||||
| 
 | ||||
|        9. Accepting Warranty or Additional Liability. While redistributing | ||||
|           the Work or Derivative Works thereof, You may choose to offer, | ||||
|           and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|           or other liability obligations and/or rights consistent with this | ||||
|           License. However, in accepting such obligations, You may act only | ||||
|           on Your own behalf and on Your sole responsibility, not on behalf | ||||
|           of any other Contributor, and only if You agree to indemnify, | ||||
|           defend, and hold each Contributor harmless for any liability | ||||
|           incurred by, or claims asserted against, such Contributor by reason | ||||
|           of your accepting any such warranty or additional liability. | ||||
| notices: [] | ||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| --- | ||||
| name: "@protobuf-ts/runtime" | ||||
| version: 2.9.6 | ||||
| type: npm | ||||
| summary: Runtime library for code generated by the protoc plugin "protobuf-ts" | ||||
| homepage: https://github.com/timostamm/protobuf-ts | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |2 | ||||
|                                     Apache License | ||||
|                                Version 2.0, January 2004 | ||||
|                             http://www.apache.org/licenses/ | ||||
| 
 | ||||
|        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|        1. Definitions. | ||||
| 
 | ||||
|           "License" shall mean the terms and conditions for use, reproduction, | ||||
|           and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|           "Licensor" shall mean the copyright owner or entity authorized by | ||||
|           the copyright owner that is granting the License. | ||||
| 
 | ||||
|           "Legal Entity" shall mean the union of the acting entity and all | ||||
|           other entities that control, are controlled by, or are under common | ||||
|           control with that entity. For the purposes of this definition, | ||||
|           "control" means (i) the power, direct or indirect, to cause the | ||||
|           direction or management of such entity, whether by contract or | ||||
|           otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|           outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|           "You" (or "Your") shall mean an individual or Legal Entity | ||||
|           exercising permissions granted by this License. | ||||
| 
 | ||||
|           "Source" form shall mean the preferred form for making modifications, | ||||
|           including but not limited to software source code, documentation | ||||
|           source, and configuration files. | ||||
| 
 | ||||
|           "Object" form shall mean any form resulting from mechanical | ||||
|           transformation or translation of a Source form, including but | ||||
|           not limited to compiled object code, generated documentation, | ||||
|           and conversions to other media types. | ||||
| 
 | ||||
|           "Work" shall mean the work of authorship, whether in Source or | ||||
|           Object form, made available under the License, as indicated by a | ||||
|           copyright notice that is included in or attached to the work | ||||
|           (an example is provided in the Appendix below). | ||||
| 
 | ||||
|           "Derivative Works" shall mean any work, whether in Source or Object | ||||
|           form, that is based on (or derived from) the Work and for which the | ||||
|           editorial revisions, annotations, elaborations, or other modifications | ||||
|           represent, as a whole, an original work of authorship. For the purposes | ||||
|           of this License, Derivative Works shall not include works that remain | ||||
|           separable from, or merely link (or bind by name) to the interfaces of, | ||||
|           the Work and Derivative Works thereof. | ||||
| 
 | ||||
|           "Contribution" shall mean any work of authorship, including | ||||
|           the original version of the Work and any modifications or additions | ||||
|           to that Work or Derivative Works thereof, that is intentionally | ||||
|           submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|           or by an individual or Legal Entity authorized to submit on behalf of | ||||
|           the copyright owner. For the purposes of this definition, "submitted" | ||||
|           means any form of electronic, verbal, or written communication sent | ||||
|           to the Licensor or its representatives, including but not limited to | ||||
|           communication on electronic mailing lists, source code control systems, | ||||
|           and issue tracking systems that are managed by, or on behalf of, the | ||||
|           Licensor for the purpose of discussing and improving the Work, but | ||||
|           excluding communication that is conspicuously marked or otherwise | ||||
|           designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|           "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|           on behalf of whom a Contribution has been received by Licensor and | ||||
|           subsequently incorporated within the Work. | ||||
| 
 | ||||
|        2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           copyright license to reproduce, prepare Derivative Works of, | ||||
|           publicly display, publicly perform, sublicense, and distribute the | ||||
|           Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|        3. Grant of Patent License. Subject to the terms and conditions of | ||||
|           this License, each Contributor hereby grants to You a perpetual, | ||||
|           worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|           (except as stated in this section) patent license to make, have made, | ||||
|           use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|           where such license applies only to those patent claims licensable | ||||
|           by such Contributor that are necessarily infringed by their | ||||
|           Contribution(s) alone or by combination of their Contribution(s) | ||||
|           with the Work to which such Contribution(s) was submitted. If You | ||||
|           institute patent litigation against any entity (including a | ||||
|           cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|           or a Contribution incorporated within the Work constitutes direct | ||||
|           or contributory patent infringement, then any patent licenses | ||||
|           granted to You under this License for that Work shall terminate | ||||
|           as of the date such litigation is filed. | ||||
| 
 | ||||
|        4. Redistribution. You may reproduce and distribute copies of the | ||||
|           Work or Derivative Works thereof in any medium, with or without | ||||
|           modifications, and in Source or Object form, provided that You | ||||
|           meet the following conditions: | ||||
| 
 | ||||
|           (a) You must give any other recipients of the Work or | ||||
|               Derivative Works a copy of this License; and | ||||
| 
 | ||||
|           (b) You must cause any modified files to carry prominent notices | ||||
|               stating that You changed the files; and | ||||
| 
 | ||||
|           (c) You must retain, in the Source form of any Derivative Works | ||||
|               that You distribute, all copyright, patent, trademark, and | ||||
|               attribution notices from the Source form of the Work, | ||||
|               excluding those notices that do not pertain to any part of | ||||
|               the Derivative Works; and | ||||
| 
 | ||||
|           (d) If the Work includes a "NOTICE" text file as part of its | ||||
|               distribution, then any Derivative Works that You distribute must | ||||
|               include a readable copy of the attribution notices contained | ||||
|               within such NOTICE file, excluding those notices that do not | ||||
|               pertain to any part of the Derivative Works, in at least one | ||||
|               of the following places: within a NOTICE text file distributed | ||||
|               as part of the Derivative Works; within the Source form or | ||||
|               documentation, if provided along with the Derivative Works; or, | ||||
|               within a display generated by the Derivative Works, if and | ||||
|               wherever such third-party notices normally appear. The contents | ||||
|               of the NOTICE file are for informational purposes only and | ||||
|               do not modify the License. You may add Your own attribution | ||||
|               notices within Derivative Works that You distribute, alongside | ||||
|               or as an addendum to the NOTICE text from the Work, provided | ||||
|               that such additional attribution notices cannot be construed | ||||
|               as modifying the License. | ||||
| 
 | ||||
|           You may add Your own copyright statement to Your modifications and | ||||
|           may provide additional or different license terms and conditions | ||||
|           for use, reproduction, or distribution of Your modifications, or | ||||
|           for any such Derivative Works as a whole, provided Your use, | ||||
|           reproduction, and distribution of the Work otherwise complies with | ||||
|           the conditions stated in this License. | ||||
| 
 | ||||
|        5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|           any Contribution intentionally submitted for inclusion in the Work | ||||
|           by You to the Licensor shall be under the terms and conditions of | ||||
|           this License, without any additional terms or conditions. | ||||
|           Notwithstanding the above, nothing herein shall supersede or modify | ||||
|           the terms of any separate license agreement you may have executed | ||||
|           with Licensor regarding such Contributions. | ||||
| 
 | ||||
|        6. Trademarks. This License does not grant permission to use the trade | ||||
|           names, trademarks, service marks, or product names of the Licensor, | ||||
|           except as required for reasonable and customary use in describing the | ||||
|           origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|        7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|           agreed to in writing, Licensor provides the Work (and each | ||||
|           Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|           implied, including, without limitation, any warranties or conditions | ||||
|           of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|           PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|           appropriateness of using or redistributing the Work and assume any | ||||
|           risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|        8. Limitation of Liability. In no event and under no legal theory, | ||||
|           whether in tort (including negligence), contract, or otherwise, | ||||
|           unless required by applicable law (such as deliberate and grossly | ||||
|           negligent acts) or agreed to in writing, shall any Contributor be | ||||
|           liable to You for damages, including any direct, indirect, special, | ||||
|           incidental, or consequential damages of any character arising as a | ||||
|           result of this License or out of the use or inability to use the | ||||
|           Work (including but not limited to damages for loss of goodwill, | ||||
|           work stoppage, computer failure or malfunction, or any and all | ||||
|           other commercial damages or losses), even if such Contributor | ||||
|           has been advised of the possibility of such damages. | ||||
| 
 | ||||
|        9. Accepting Warranty or Additional Liability. While redistributing | ||||
|           the Work or Derivative Works thereof, You may choose to offer, | ||||
|           and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|           or other liability obligations and/or rights consistent with this | ||||
|           License. However, in accepting such obligations, You may act only | ||||
|           on Your own behalf and on Your sole responsibility, not on behalf | ||||
|           of any other Contributor, and only if You agree to indemnify, | ||||
|           defend, and hold each Contributor harmless for any liability | ||||
|           incurred by, or claims asserted against, such Contributor by reason | ||||
|           of your accepting any such warranty or additional liability. | ||||
| notices: [] | ||||
| @@ -1,9 +1,9 @@ | ||||
| --- | ||||
| name: semver | ||||
| version: 6.3.0 | ||||
| version: 6.3.1 | ||||
| type: npm | ||||
| summary: The semantic version parser used by npm. | ||||
| homepage: https://github.com/npm/node-semver#readme | ||||
| homepage:  | ||||
| license: isc | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
							
								
								
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,239 @@ | ||||
| --- | ||||
| name: typescript | ||||
| version: 3.9.10 | ||||
| type: npm | ||||
| summary: TypeScript is a language for application scale JavaScript development | ||||
| homepage: https://www.typescriptlang.org/ | ||||
| license: apache-2.0 | ||||
| licenses: | ||||
| - sources: LICENSE.txt | ||||
|   text: "Apache License\n\nVersion 2.0, January 2004\n\nhttp://www.apache.org/licenses/ | ||||
|     \n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" | ||||
|     shall mean the terms and conditions for use, reproduction, and distribution as | ||||
|     defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the | ||||
|     copyright owner or entity authorized by the copyright owner that is granting the | ||||
|     License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all | ||||
|     other entities that control, are controlled by, or are under common control with | ||||
|     that entity. For the purposes of this definition, \"control\" means (i) the power, | ||||
|     direct or indirect, to cause the direction or management of such entity, whether | ||||
|     by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of | ||||
|     the outstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" | ||||
|     (or \"Your\") shall mean an individual or Legal Entity exercising permissions | ||||
|     granted by this License.\n\n\"Source\" form shall mean the preferred form for | ||||
|     making modifications, including but not limited to software source code, documentation | ||||
|     source, and configuration files.\n\n\"Object\" form shall mean any form resulting | ||||
|     from mechanical transformation or translation of a Source form, including but | ||||
|     not limited to compiled object code, generated documentation, and conversions | ||||
|     to other media types.\n\n\"Work\" shall mean the work of authorship, whether in | ||||
|     Source or Object form, made available under the License, as indicated by a copyright | ||||
|     notice that is included in or attached to the work (an example is provided in | ||||
|     the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source | ||||
|     or Object form, that is based on (or derived from) the Work and for which the | ||||
|     editorial revisions, annotations, elaborations, or other modifications represent, | ||||
|     as a whole, an original work of authorship. For the purposes of this License, | ||||
|     Derivative Works shall not include works that remain separable from, or merely | ||||
|     link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" | ||||
|     shall mean any work of authorship, including the original version of the Work | ||||
|     and any modifications or additions to that Work or Derivative Works thereof, that | ||||
|     is intentionally submitted to Licensor for inclusion in the Work by the copyright | ||||
|     owner or by an individual or Legal Entity authorized to submit on behalf of the | ||||
|     copyright owner. For the purposes of this definition, \"submitted\" means any | ||||
|     form of electronic, verbal, or written communication sent to the Licensor or its | ||||
|     representatives, including but not limited to communication on electronic mailing | ||||
|     lists, source code control systems, and issue tracking systems that are managed | ||||
|     by, or on behalf of, the Licensor for the purpose of discussing and improving | ||||
|     the Work, but excluding communication that is conspicuously marked or otherwise | ||||
|     designated in writing by the copyright owner as \"Not a Contribution.\"\n\n\"Contributor\" | ||||
|     shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution | ||||
|     has been received by Licensor and subsequently incorporated within the Work.\n\n2. | ||||
|     Grant of Copyright License. Subject to the terms and conditions of this License, | ||||
|     each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, | ||||
|     royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works | ||||
|     of, publicly display, publicly perform, sublicense, and distribute the Work and | ||||
|     such Derivative Works in Source or Object form.\n\n3. Grant of Patent License. | ||||
|     Subject to the terms and conditions of this License, each Contributor hereby grants | ||||
|     to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|     (except as stated in this section) patent license to make, have made, use, offer | ||||
|     to sell, sell, import, and otherwise transfer the Work, where such license applies | ||||
|     only to those patent claims licensable by such Contributor that are necessarily | ||||
|     infringed by their Contribution(s) alone or by combination of their Contribution(s) | ||||
|     with the Work to which such Contribution(s) was submitted. If You institute patent | ||||
|     litigation against any entity (including a cross-claim or counterclaim in a lawsuit) | ||||
|     alleging that the Work or a Contribution incorporated within the Work constitutes | ||||
|     direct or contributory patent infringement, then any patent licenses granted to | ||||
|     You under this License for that Work shall terminate as of the date such litigation | ||||
|     is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the | ||||
|     Work or Derivative Works thereof in any medium, with or without modifications, | ||||
|     and in Source or Object form, provided that You meet the following conditions:\n\nYou | ||||
|     must give any other recipients of the Work or Derivative Works a copy of this | ||||
|     License; and\n\nYou must cause any modified files to carry prominent notices stating | ||||
|     that You changed the files; and\n\nYou must retain, in the Source form of any | ||||
|     Derivative Works that You distribute, all copyright, patent, trademark, and attribution | ||||
|     notices from the Source form of the Work, excluding those notices that do not | ||||
|     pertain to any part of the Derivative Works; and\n\nIf the Work includes a \"NOTICE\" | ||||
|     text file as part of its distribution, then any Derivative Works that You distribute | ||||
|     must include a readable copy of the attribution notices contained within such | ||||
|     NOTICE file, excluding those notices that do not pertain to any part of the Derivative | ||||
|     Works, in at least one of the following places: within a NOTICE text file distributed | ||||
|     as part of the Derivative Works; within the Source form or documentation, if provided | ||||
|     along with the Derivative Works; or, within a display generated by the Derivative | ||||
|     Works, if and wherever such third-party notices normally appear. The contents | ||||
|     of the NOTICE file are for informational purposes only and do not modify the License. | ||||
|     You may add Your own attribution notices within Derivative Works that You distribute, | ||||
|     alongside or as an addendum to the NOTICE text from the Work, provided that such | ||||
|     additional attribution notices cannot be construed as modifying the License. You | ||||
|     may add Your own copyright statement to Your modifications and may provide additional | ||||
|     or different license terms and conditions for use, reproduction, or distribution | ||||
|     of Your modifications, or for any such Derivative Works as a whole, provided Your | ||||
|     use, reproduction, and distribution of the Work otherwise complies with the conditions | ||||
|     stated in this License.\n\n5. Submission of Contributions. Unless You explicitly | ||||
|     state otherwise, any Contribution intentionally submitted for inclusion in the | ||||
|     Work by You to the Licensor shall be under the terms and conditions of this License, | ||||
|     without any additional terms or conditions. Notwithstanding the above, nothing | ||||
|     herein shall supersede or modify the terms of any separate license agreement you | ||||
|     may have executed with Licensor regarding such Contributions.\n\n6. Trademarks. | ||||
|     This License does not grant permission to use the trade names, trademarks, service | ||||
|     marks, or product names of the Licensor, except as required for reasonable and | ||||
|     customary use in describing the origin of the Work and reproducing the content | ||||
|     of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable | ||||
|     law or agreed to in writing, Licensor provides the Work (and each Contributor | ||||
|     provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS | ||||
|     OF ANY KIND, either express or implied, including, without limitation, any warranties | ||||
|     or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR | ||||
|     PURPOSE. You are solely responsible for determining the appropriateness of using | ||||
|     or redistributing the Work and assume any risks associated with Your exercise | ||||
|     of permissions under this License.\n\n8. Limitation of Liability. In no event | ||||
|     and under no legal theory, whether in tort (including negligence), contract, or | ||||
|     otherwise, unless required by applicable law (such as deliberate and grossly negligent | ||||
|     acts) or agreed to in writing, shall any Contributor be liable to You for damages, | ||||
|     including any direct, indirect, special, incidental, or consequential damages | ||||
|     of any character arising as a result of this License or out of the use or inability | ||||
|     to use the Work (including but not limited to damages for loss of goodwill, work | ||||
|     stoppage, computer failure or malfunction, or any and all other commercial damages | ||||
|     or losses), even if such Contributor has been advised of the possibility of such | ||||
|     damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing | ||||
|     the Work or Derivative Works thereof, You may choose to offer, and charge a fee | ||||
|     for, acceptance of support, warranty, indemnity, or other liability obligations | ||||
|     and/or rights consistent with this License. However, in accepting such obligations, | ||||
|     You may act only on Your own behalf and on Your sole responsibility, not on behalf | ||||
|     of any other Contributor, and only if You agree to indemnify, defend, and hold | ||||
|     each Contributor harmless for any liability incurred by, or claims asserted against, | ||||
|     such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND | ||||
|     OF TERMS AND CONDITIONS\n" | ||||
| notices: | ||||
| - sources: AUTHORS.md | ||||
|   text: "TypeScript is authored by:\r\n\r\n - 0verk1ll\r\n - Abubaker Bashir\r\n - | ||||
|     Adam Freidin\r\n - Adam Postma\r\n - Adi Dahiya\r\n - Aditya Daflapurkar\r\n - | ||||
|     Adnan Chowdhury\r\n - Adrian Leonhard\r\n - Adrien Gibrat\r\n - Ahmad Farid\r\n | ||||
|     - Ajay Poshak\r\n - Alan Agius\r\n - Alan Pierce\r\n - Alessandro Vergani\r\n | ||||
|     - Alex Chugaev\r\n - Alex Eagle\r\n - Alex Khomchenko\r\n - Alex Ryan\r\n - Alexander\r\n | ||||
|     - Alexander Kuvaev\r\n - Alexander Rusakov\r\n - Alexander Tarasyuk\r\n - Ali | ||||
|     Sabzevari\r\n - Aluan Haddad\r\n - amaksimovich2\r\n - Anatoly Ressin\r\n - Anders | ||||
|     Hejlsberg\r\n - Anders Kaseorg\r\n - Andre Sutherland\r\n - Andreas Martin\r\n | ||||
|     - Andrej Baran\r\n - Andrew\r\n - Andrew Branch\r\n - Andrew Casey\r\n - Andrew | ||||
|     Faulkner\r\n - Andrew Ochsner\r\n - Andrew Stegmaier\r\n - Andrew Z Allen\r\n | ||||
|     - Andrey Roenko\r\n - Andrii Dieiev\r\n - András Parditka\r\n - Andy Hanson\r\n | ||||
|     - Anil Anar\r\n - Anix\r\n - Anton Khlynovskiy\r\n - Anton Tolmachev\r\n - Anubha | ||||
|     Mathur\r\n - AnyhowStep\r\n - Armando Aguirre\r\n - Arnaud Tournier\r\n - Arnav | ||||
|     Singh\r\n - Arpad Borsos\r\n - Artem Tyurin\r\n - Arthur Ozga\r\n - Asad Saeeduddin\r\n | ||||
|     - Austin Cummings\r\n - Avery Morin\r\n - Aziz Khambati\r\n - Basarat Ali Syed\r\n | ||||
|     - @begincalendar\r\n - Ben Duffield\r\n - Ben Lichtman\r\n - Ben Mosher\r\n - | ||||
|     Benedikt Meurer\r\n - Benjamin Bock\r\n - Benjamin Lichtman\r\n - Benny Neugebauer\r\n | ||||
|     - BigAru\r\n - Bill Ticehurst\r\n - Blaine Bublitz\r\n - Blake Embrey\r\n - @bluelovers\r\n | ||||
|     - @bootstraponline\r\n - Bowden Kelly\r\n - Bowden Kenny\r\n - Brad Zacher\r\n | ||||
|     - Brandon Banks\r\n - Brandon Bloom\r\n - Brandon Slade\r\n - Brendan Kenny\r\n | ||||
|     - Brett Mayen\r\n - Brian Terlson\r\n - Bryan Forbes\r\n - Caitlin Potter\r\n | ||||
|     - Caleb Sander\r\n - Cameron Taggart\r\n - @cedvdb\r\n - Charles\r\n - Charles | ||||
|     Pierce\r\n - Charly POLY\r\n - Chris Bubernak\r\n - Chris Patterson\r\n - christian\r\n | ||||
|     - Christophe Vidal\r\n - Chuck Jazdzewski\r\n - Clay Miller\r\n - Colby Russell\r\n | ||||
|     - Colin Snover\r\n - Collins Abitekaniza\r\n - Connor Clark\r\n - Cotton Hou\r\n | ||||
|     - csigs\r\n - Cyrus Najmabadi\r\n - Dafrok Zhang\r\n - Dahan Gong\r\n - Daiki | ||||
|     Nishikawa\r\n - Dan Corder\r\n - Dan Freeman\r\n - Dan Quirk\r\n - Dan Rollo\r\n | ||||
|     - Daniel Gooss\r\n - Daniel Imms\r\n - Daniel Krom\r\n - Daniel Król\r\n - Daniel | ||||
|     Lehenbauer\r\n - Daniel Rosenwasser\r\n - David Li\r\n - David Sheldrick\r\n - | ||||
|     David Sherret\r\n - David Souther\r\n - David Staheli\r\n - Denis Nedelyaev\r\n | ||||
|     - Derek P Sifford\r\n - Dhruv Rajvanshi\r\n - Dick van den Brink\r\n - Diogo Franco | ||||
|     (Kovensky)\r\n - Dirk Bäumer\r\n - Dirk Holtwick\r\n - Dmitrijs Minajevs\r\n - | ||||
|     Dom Chen\r\n - Donald Pipowitch\r\n - Doug Ilijev\r\n - dreamran43@gmail.com\r\n | ||||
|     - @e-cloud\r\n - Ecole Keine\r\n - Eddie Jaoude\r\n - Edward Thomson\r\n - EECOLOR\r\n | ||||
|     - Eli Barzilay\r\n - Elizabeth Dinella\r\n - Ely Alamillo\r\n - Eric Grube\r\n | ||||
|     - Eric Tsang\r\n - Erik Edrosa\r\n - Erik McClenney\r\n - Esakki Raj\r\n - Ethan | ||||
|     Resnick\r\n - Ethan Rubio\r\n - Eugene Timokhov\r\n - Evan Cahill\r\n - Evan Martin\r\n | ||||
|     - Evan Sebastian\r\n - ExE Boss\r\n - Eyas Sharaiha\r\n - Fabian Cook\r\n - @falsandtru\r\n | ||||
|     - Filipe Silva\r\n - @flowmemo\r\n - Forbes Lindesay\r\n - Francois Hendriks\r\n | ||||
|     - Francois Wouts\r\n - Frank Wallis\r\n - František Žiacik\r\n - Frederico Bittencourt\r\n | ||||
|     - fullheightcoding\r\n - Gabe Moothart\r\n - Gabriel Isenberg\r\n - Gabriela Araujo | ||||
|     Britto\r\n - Gabriela Britto\r\n - gb714us\r\n - Gilad Peleg\r\n - Godfrey Chan\r\n | ||||
|     - Gorka Hernández Estomba\r\n - Graeme Wicksted\r\n - Guillaume Salles\r\n - Guy | ||||
|     Bedford\r\n - hafiz\r\n - Halasi Tamás\r\n - Hendrik Liebau\r\n - Henry Mercer\r\n | ||||
|     - Herrington Darkholme\r\n - Hoang Pham\r\n - Holger Jeromin\r\n - Homa Wong\r\n | ||||
|     - Hye Sung Jung\r\n - Iain Monro\r\n - @IdeaHunter\r\n - Igor Novozhilov\r\n - | ||||
|     Igor Oleinikov\r\n - Ika\r\n - iliashkolyar\r\n - IllusionMH\r\n - Ingvar Stepanyan\r\n | ||||
|     - Ingvar Stepanyan\r\n - Isiah Meadows\r\n - ispedals\r\n - Ivan Enderlin\r\n | ||||
|     - Ivo Gabe de Wolff\r\n - Iwata Hidetaka\r\n - Jack Bates\r\n - Jack Williams\r\n | ||||
|     - Jake Boone\r\n - Jakub Korzeniowski\r\n - Jakub Młokosiewicz\r\n - James Henry\r\n | ||||
|     - James Keane\r\n - James Whitney\r\n - Jan Melcher\r\n - Jason Freeman\r\n - | ||||
|     Jason Jarrett\r\n - Jason Killian\r\n - Jason Ramsay\r\n - JBerger\r\n - Jean | ||||
|     Pierre\r\n - Jed Mao\r\n - Jeff Wilcox\r\n - Jeffrey Morlan\r\n - Jesse Schalken\r\n | ||||
|     - Jesse Trinity\r\n - Jing Ma\r\n - Jiri Tobisek\r\n - Joe Calzaretta\r\n - Joe | ||||
|     Chung\r\n - Joel Day\r\n - Joey Watts\r\n - Johannes Rieken\r\n - John Doe\r\n | ||||
|     - John Vilk\r\n - Jonathan Bond-Caron\r\n - Jonathan Park\r\n - Jonathan Toland\r\n | ||||
|     - Jordan Harband\r\n - Jordi Oliveras Rovira\r\n - Joscha Feth\r\n - Joseph Wunderlich\r\n | ||||
|     - Josh Abernathy\r\n - Josh Goldberg\r\n - Josh Kalderimis\r\n - Josh Soref\r\n | ||||
|     - Juan Luis Boya García\r\n - Julian Williams\r\n - Justin Bay\r\n - Justin Johansson\r\n | ||||
|     - jwbay\r\n - K. Preißer\r\n - Kagami Sascha Rosylight\r\n - Kanchalai Tanglertsampan\r\n | ||||
|     - karthikkp\r\n - Kate Miháliková\r\n - Keen Yee Liau\r\n - Keith Mashinter\r\n | ||||
|     - Ken Howard\r\n - Kenji Imamula\r\n - Kerem Kat\r\n - Kevin Donnelly\r\n - Kevin | ||||
|     Gibbons\r\n - Kevin Lang\r\n - Khải\r\n - Kitson Kelly\r\n - Klaus Meinhardt\r\n | ||||
|     - Kris Zyp\r\n - Kyle Kelley\r\n - Kārlis Gaņģis\r\n - laoxiong\r\n - Leon Aves\r\n | ||||
|     - Limon Monte\r\n - Lorant Pinter\r\n - Lucien Greathouse\r\n - Luka Hartwig\r\n | ||||
|     - Lukas Elmer\r\n - M.Yoshimura\r\n - Maarten Sijm\r\n - Magnus Hiie\r\n - Magnus | ||||
|     Kulke\r\n - Manish Bansal\r\n - Manish Giri\r\n - Marcus Noble\r\n - Marin Marinov\r\n | ||||
|     - Marius Schulz\r\n - Markus Johnsson\r\n - Markus Wolf\r\n - Martin\r\n - Martin | ||||
|     Hiller\r\n - Martin Johns\r\n - Martin Probst\r\n - Martin Vseticka\r\n - Martyn | ||||
|     Janes\r\n - Masahiro Wakame\r\n - Mateusz Burzyński\r\n - Matt Bierner\r\n - Matt | ||||
|     McCutchen\r\n - Matt Mitchell\r\n - Matthew Aynalem\r\n - Matthew Miller\r\n - | ||||
|     Mattias Buelens\r\n - Max Heiber\r\n - Maxwell Paul Brickner\r\n - @meyer\r\n | ||||
|     - Micah Zoltu\r\n - @micbou\r\n - Michael\r\n - Michael Crane\r\n - Michael Henderson\r\n | ||||
|     - Michael Tamm\r\n - Michael Tang\r\n - Michal Przybys\r\n - Mike Busyrev\r\n | ||||
|     - Mike Morearty\r\n - Milosz Piechocki\r\n - Mine Starks\r\n - Minh Nguyen\r\n | ||||
|     - Mohamed Hegazy\r\n - Mohsen Azimi\r\n - Mukesh Prasad\r\n - Myles Megyesi\r\n | ||||
|     - Nathan Day\r\n - Nathan Fenner\r\n - Nathan Shively-Sanders\r\n - Nathan Yee\r\n | ||||
|     - ncoley\r\n - Nicholas Yang\r\n - Nicu Micleușanu\r\n - @nieltg\r\n - Nima Zahedi\r\n | ||||
|     - Noah Chen\r\n - Noel Varanda\r\n - Noel Yoo\r\n - Noj Vek\r\n - nrcoley\r\n | ||||
|     - Nuno Arruda\r\n - Oleg Mihailik\r\n - Oleksandr Chekhovskyi\r\n - Omer Sheikh\r\n | ||||
|     - Orta Therox\r\n - Orta Therox\r\n - Oskar Grunning\r\n - Oskar Segersva¨rd\r\n | ||||
|     - Oussama Ben Brahim\r\n - Ozair Patel\r\n - Patrick McCartney\r\n - Patrick Zhong\r\n | ||||
|     - Paul Koerbitz\r\n - Paul van Brenk\r\n - @pcbro\r\n - Pedro Maltez\r\n - Pete | ||||
|     Bacon Darwin\r\n - Peter Burns\r\n - Peter Šándor\r\n - Philip Pesca\r\n - Philippe | ||||
|     Voinov\r\n - Pi Lanningham\r\n - Piero Cangianiello\r\n - Pierre-Antoine Mills\r\n | ||||
|     - @piloopin\r\n - Pranav Senthilnathan\r\n - Prateek Goel\r\n - Prateek Nayak\r\n | ||||
|     - Prayag Verma\r\n - Priyantha Lankapura\r\n - @progre\r\n - Punya Biswal\r\n | ||||
|     - r7kamura\r\n - Rado Kirov\r\n - Raj Dosanjh\r\n - rChaser53\r\n - Reiner Dolp\r\n | ||||
|     - Remo H. Jansen\r\n - @rflorian\r\n - Rhys van der Waerden\r\n - @rhysd\r\n - | ||||
|     Ricardo N Feliciano\r\n - Richard Karmazín\r\n - Richard Knoll\r\n - Roger Spratley\r\n | ||||
|     - Ron Buckton\r\n - Rostislav Galimsky\r\n - Rowan Wyborn\r\n - rpgeeganage\r\n | ||||
|     - Ruwan Pradeep Geeganage\r\n - Ryan Cavanaugh\r\n - Ryan Clarke\r\n - Ryohei | ||||
|     Ikegami\r\n - Salisbury, Tom\r\n - Sam Bostock\r\n - Sam Drugan\r\n - Sam El-Husseini\r\n | ||||
|     - Sam Lanning\r\n - Sangmin Lee\r\n - Sanket Mishra\r\n - Sarangan Rajamanickam\r\n | ||||
|     - Sasha Joseph\r\n - Sean Barag\r\n - Sergey Rubanov\r\n - Sergey Shandar\r\n | ||||
|     - Sergey Tychinin\r\n - Sergii Bezliudnyi\r\n - Sergio Baidon\r\n - Sharon Rolel\r\n | ||||
|     - Sheetal Nandi\r\n - Shengping Zhong\r\n - Sheon Han\r\n - Shyyko Serhiy\r\n | ||||
|     - Siddharth Singh\r\n - sisisin\r\n - Slawomir Sadziak\r\n - Solal Pirelli\r\n | ||||
|     - Soo Jae Hwang\r\n - Stan Thomas\r\n - Stanislav Iliev\r\n - Stanislav Sysoev\r\n | ||||
|     - Stas Vilchik\r\n - Stephan Ginthör\r\n - Steve Lucco\r\n - @styfle\r\n - Sudheesh | ||||
|     Singanamalla\r\n - Suhas\r\n - Suhas Deshpande\r\n - superkd37\r\n - Sébastien | ||||
|     Arod\r\n - @T18970237136\r\n - @t_\r\n - Tan Li Hau\r\n - Tapan Prakash\r\n - | ||||
|     Taras Mankovski\r\n - Tarik Ozket\r\n - Tetsuharu Ohzeki\r\n - The Gitter Badger\r\n | ||||
|     - Thomas den Hollander\r\n - Thorsten Ball\r\n - Tien Hoanhtien\r\n - Tim Lancina\r\n | ||||
|     - Tim Perry\r\n - Tim Schaub\r\n - Tim Suchanek\r\n - Tim Viiding-Spader\r\n - | ||||
|     Tingan Ho\r\n - Titian Cernicova-Dragomir\r\n - tkondo\r\n - Todd Thomson\r\n | ||||
|     - togru\r\n - Tom J\r\n - Torben Fitschen\r\n - Toxyxer\r\n - @TravCav\r\n - Troy | ||||
|     Tae\r\n - TruongSinh Tran-Nguyen\r\n - Tycho Grouwstra\r\n - uhyo\r\n - Vadi Taslim\r\n | ||||
|     - Vakhurin Sergey\r\n - Valera Rozuvan\r\n - Vilic Vane\r\n - Vimal Raghubir\r\n | ||||
|     - Vladimir Kurchatkin\r\n - Vladimir Matveev\r\n - Vyacheslav Pukhanov\r\n - Wenlu | ||||
|     Wang\r\n - Wes Souza\r\n - Wesley Wigham\r\n - William Orr\r\n - Wilson Hobbs\r\n | ||||
|     - xiaofa\r\n - xl1\r\n - Yacine Hmito\r\n - Yang Cao\r\n - York Yao\r\n - @yortus\r\n | ||||
|     - Yoshiki Shibukawa\r\n - Yuichi Nukiyama\r\n - Yuval Greenfield\r\n - Yuya Tanaka\r\n | ||||
|     - Z\r\n - Zeeshan Ahmed\r\n - Zev Spitz\r\n - Zhengbo Li\r\n - Zixiang Li\r\n | ||||
|     - @Zzzen\r\n - 阿卡琳" | ||||
							
								
								
									
										34
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| --- | ||||
| name: undici | ||||
| version: 5.29.0 | ||||
| type: npm | ||||
| summary: An HTTP/1.1 client, written from scratch for Node.js | ||||
| homepage: https://undici.nodejs.org | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) Matteo Collina and Undici contributors | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| - sources: README.md | ||||
|   text: MIT | ||||
| notices: [] | ||||
| @@ -18,7 +18,7 @@ See [action.yml](action.yml) | ||||
| **Python** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.10'  | ||||
| @@ -28,7 +28,7 @@ steps: | ||||
| **PyPy** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4  | ||||
|   with: | ||||
|     python-version: 'pypy3.9'  | ||||
| @@ -62,7 +62,7 @@ The action defaults to searching for a dependency file (`requirements.txt` or `p | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.9' | ||||
|   | ||||
							
								
								
									
										5798
									
								
								__tests__/data/graalpy.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5798
									
								
								__tests__/data/graalpy.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										378
									
								
								__tests__/find-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										378
									
								
								__tests__/find-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,378 @@ | ||||
| import fs from 'fs'; | ||||
|  | ||||
| import {HttpClient} from '@actions/http-client'; | ||||
| import * as ifm from '@actions/http-client/interfaces'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import * as core from '@actions/core'; | ||||
|  | ||||
| import * as path from 'path'; | ||||
| import * as semver from 'semver'; | ||||
|  | ||||
| import * as finder from '../src/find-graalpy'; | ||||
| import {IGraalPyManifestRelease, IS_WINDOWS} from '../src/utils'; | ||||
|  | ||||
| import manifestData from './data/graalpy.json'; | ||||
|  | ||||
| const architecture = 'x64'; | ||||
|  | ||||
| const toolDir = path.join(__dirname, 'runner', 'tools'); | ||||
| const tempDir = path.join(__dirname, 'runner', 'temp'); | ||||
|  | ||||
| /* GraalPy doesn't have a windows release yet */ | ||||
| const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe; | ||||
|  | ||||
| describe('parseGraalPyVersion', () => { | ||||
|   it.each([ | ||||
|     ['graalpy-23', '23'], | ||||
|     ['graalpy-23.0', '23.0'], | ||||
|     ['graalpy23.0', '23.0'] | ||||
|   ])('%s -> %s', (input, expected) => { | ||||
|     expect(finder.parseGraalPyVersion(input)).toEqual(expected); | ||||
|   }); | ||||
|  | ||||
|   it.each(['', 'graalpy-', 'graalpy', 'p', 'notgraalpy-'])( | ||||
|     'throw on invalid input "%s"', | ||||
|     input => { | ||||
|       expect(() => finder.parseGraalPyVersion(input)).toThrow( | ||||
|         "Invalid 'version' property for GraalPy. GraalPy version should be specified as 'graalpy<python-version>' or 'graalpy-<python-version>'. See README for examples and documentation." | ||||
|       ); | ||||
|     } | ||||
|   ); | ||||
| }); | ||||
|  | ||||
| describe('findGraalPyToolCache', () => { | ||||
|   const actualGraalPyVersion = '23.0.0'; | ||||
|   const graalpyPath = path.join('GraalPy', actualGraalPyVersion, architecture); | ||||
|   let tcFind: jest.SpyInstance; | ||||
|   let infoSpy: jest.SpyInstance; | ||||
|   let warningSpy: jest.SpyInstance; | ||||
|   let debugSpy: jest.SpyInstance; | ||||
|   let addPathSpy: jest.SpyInstance; | ||||
|   let exportVariableSpy: jest.SpyInstance; | ||||
|   let setOutputSpy: jest.SpyInstance; | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     tcFind = jest.spyOn(tc, 'find'); | ||||
|     tcFind.mockImplementation((toolname: string, pythonVersion: string) => { | ||||
|       const semverVersion = new semver.Range(pythonVersion); | ||||
|       return semver.satisfies(actualGraalPyVersion, semverVersion) | ||||
|         ? graalpyPath | ||||
|         : ''; | ||||
|     }); | ||||
|  | ||||
|     infoSpy = jest.spyOn(core, 'info'); | ||||
|     infoSpy.mockImplementation(() => null); | ||||
|  | ||||
|     warningSpy = jest.spyOn(core, 'warning'); | ||||
|     warningSpy.mockImplementation(() => null); | ||||
|  | ||||
|     debugSpy = jest.spyOn(core, 'debug'); | ||||
|     debugSpy.mockImplementation(() => null); | ||||
|  | ||||
|     addPathSpy = jest.spyOn(core, 'addPath'); | ||||
|     addPathSpy.mockImplementation(() => null); | ||||
|  | ||||
|     exportVariableSpy = jest.spyOn(core, 'exportVariable'); | ||||
|     exportVariableSpy.mockImplementation(() => null); | ||||
|  | ||||
|     setOutputSpy = jest.spyOn(core, 'setOutput'); | ||||
|     setOutputSpy.mockImplementation(() => null); | ||||
|   }); | ||||
|  | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|     jest.restoreAllMocks(); | ||||
|   }); | ||||
|  | ||||
|   it('GraalPy exists on the path and versions are satisfied', () => { | ||||
|     expect(finder.findGraalPyToolCache('23.0.0', architecture)).toEqual({ | ||||
|       installDir: graalpyPath, | ||||
|       resolvedGraalPyVersion: actualGraalPyVersion | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('GraalPy exists on the path and versions are satisfied with semver', () => { | ||||
|     expect(finder.findGraalPyToolCache('23.0', architecture)).toEqual({ | ||||
|       installDir: graalpyPath, | ||||
|       resolvedGraalPyVersion: actualGraalPyVersion | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it("GraalPy exists on the path, but version doesn't match", () => { | ||||
|     expect(finder.findGraalPyToolCache('22.3', architecture)).toEqual({ | ||||
|       installDir: '', | ||||
|       resolvedGraalPyVersion: '' | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describeSkipOnWindows('findGraalPyVersion', () => { | ||||
|   let getBooleanInputSpy: jest.SpyInstance; | ||||
|   let warningSpy: jest.SpyInstance; | ||||
|   let debugSpy: jest.SpyInstance; | ||||
|   let infoSpy: jest.SpyInstance; | ||||
|   let addPathSpy: jest.SpyInstance; | ||||
|   let exportVariableSpy: jest.SpyInstance; | ||||
|   let setOutputSpy: jest.SpyInstance; | ||||
|   let tcFind: jest.SpyInstance; | ||||
|   let spyExtractZip: jest.SpyInstance; | ||||
|   let spyExtractTar: jest.SpyInstance; | ||||
|   let spyHttpClient: jest.SpyInstance; | ||||
|   let spyExistsSync: jest.SpyInstance; | ||||
|   let spyExec: jest.SpyInstance; | ||||
|   let spySymlinkSync: jest.SpyInstance; | ||||
|   let spyDownloadTool: jest.SpyInstance; | ||||
|   let spyFsReadDir: jest.SpyInstance; | ||||
|   let spyCacheDir: jest.SpyInstance; | ||||
|   let spyChmodSync: jest.SpyInstance; | ||||
|   let spyCoreAddPath: jest.SpyInstance; | ||||
|   let spyCoreExportVariable: jest.SpyInstance; | ||||
|   const env = process.env; | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     getBooleanInputSpy = jest.spyOn(core, 'getBooleanInput'); | ||||
|     getBooleanInputSpy.mockImplementation(() => false); | ||||
|  | ||||
|     infoSpy = jest.spyOn(core, 'info'); | ||||
|     infoSpy.mockImplementation(() => {}); | ||||
|  | ||||
|     warningSpy = jest.spyOn(core, 'warning'); | ||||
|     warningSpy.mockImplementation(() => null); | ||||
|  | ||||
|     debugSpy = jest.spyOn(core, 'debug'); | ||||
|     debugSpy.mockImplementation(() => null); | ||||
|  | ||||
|     addPathSpy = jest.spyOn(core, 'addPath'); | ||||
|     addPathSpy.mockImplementation(() => null); | ||||
|  | ||||
|     exportVariableSpy = jest.spyOn(core, 'exportVariable'); | ||||
|     exportVariableSpy.mockImplementation(() => null); | ||||
|  | ||||
|     setOutputSpy = jest.spyOn(core, 'setOutput'); | ||||
|     setOutputSpy.mockImplementation(() => null); | ||||
|  | ||||
|     jest.resetModules(); | ||||
|     process.env = {...env}; | ||||
|     tcFind = jest.spyOn(tc, 'find'); | ||||
|     tcFind.mockImplementation((tool: string, version: string) => { | ||||
|       const semverRange = new semver.Range(version); | ||||
|       let graalpyPath = ''; | ||||
|       if (semver.satisfies('23.0.0', semverRange)) { | ||||
|         graalpyPath = path.join(toolDir, 'GraalPy', '23.0.0', architecture); | ||||
|       } | ||||
|       return graalpyPath; | ||||
|     }); | ||||
|  | ||||
|     spyDownloadTool = jest.spyOn(tc, 'downloadTool'); | ||||
|     spyDownloadTool.mockImplementation(() => path.join(tempDir, 'GraalPy')); | ||||
|  | ||||
|     spyExtractZip = jest.spyOn(tc, 'extractZip'); | ||||
|     spyExtractZip.mockImplementation(() => tempDir); | ||||
|  | ||||
|     spyExtractTar = jest.spyOn(tc, 'extractTar'); | ||||
|     spyExtractTar.mockImplementation(() => tempDir); | ||||
|  | ||||
|     spyFsReadDir = jest.spyOn(fs, 'readdirSync'); | ||||
|     spyFsReadDir.mockImplementation((directory: string) => ['GraalPyTest']); | ||||
|  | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||
|     spyHttpClient.mockImplementation( | ||||
|       async (): Promise<ifm.ITypedResponse<IGraalPyManifestRelease[]>> => { | ||||
|         const result = JSON.stringify(manifestData); | ||||
|         return { | ||||
|           statusCode: 200, | ||||
|           headers: {}, | ||||
|           result: JSON.parse(result) as IGraalPyManifestRelease[] | ||||
|         }; | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     spyExec = jest.spyOn(exec, 'exec'); | ||||
|     spyExec.mockImplementation(() => undefined); | ||||
|  | ||||
|     spySymlinkSync = jest.spyOn(fs, 'symlinkSync'); | ||||
|     spySymlinkSync.mockImplementation(() => undefined); | ||||
|  | ||||
|     spyExistsSync = jest.spyOn(fs, 'existsSync'); | ||||
|     spyExistsSync.mockReturnValue(true); | ||||
|  | ||||
|     spyCoreAddPath = jest.spyOn(core, 'addPath'); | ||||
|  | ||||
|     spyCoreExportVariable = jest.spyOn(core, 'exportVariable'); | ||||
|   }); | ||||
|  | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|     jest.restoreAllMocks(); | ||||
|     process.env = env; | ||||
|   }); | ||||
|  | ||||
|   it('found GraalPy in toolcache', async () => { | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-23.0', | ||||
|         architecture, | ||||
|         true, | ||||
|         false, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('23.0.0'); | ||||
|     expect(spyCoreAddPath).toHaveBeenCalled(); | ||||
|     expect(spyCoreExportVariable).toHaveBeenCalledWith( | ||||
|       'pythonLocation', | ||||
|       expect.anything() | ||||
|     ); | ||||
|     expect(spyCoreExportVariable).toHaveBeenCalledWith( | ||||
|       'PKG_CONFIG_PATH', | ||||
|       expect.anything() | ||||
|     ); | ||||
|   }); | ||||
|  | ||||
|   it('throw on invalid input format', async () => { | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion('graalpy-x23', architecture, true, false, false) | ||||
|     ).rejects.toThrow(); | ||||
|   }); | ||||
|  | ||||
|   it('found and install successfully', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '23.0.0', architecture) | ||||
|     ); | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-23.0.0', | ||||
|         architecture, | ||||
|         true, | ||||
|         false, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('23.0.0'); | ||||
|     expect(spyCoreAddPath).toHaveBeenCalled(); | ||||
|     expect(spyCoreExportVariable).toHaveBeenCalledWith( | ||||
|       'pythonLocation', | ||||
|       expect.anything() | ||||
|     ); | ||||
|     expect(spyCoreExportVariable).toHaveBeenCalledWith( | ||||
|       'PKG_CONFIG_PATH', | ||||
|       expect.anything() | ||||
|     ); | ||||
|   }); | ||||
|  | ||||
|   it('found and install successfully without environment update', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '23.0.0', architecture) | ||||
|     ); | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-23.0.0', | ||||
|         architecture, | ||||
|         false, | ||||
|         false, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('23.0.0'); | ||||
|     expect(spyCoreAddPath).not.toHaveBeenCalled(); | ||||
|     expect(spyCoreExportVariable).not.toHaveBeenCalled(); | ||||
|   }); | ||||
|  | ||||
|   it('throw if release is not found', async () => { | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-19.0.0', | ||||
|         architecture, | ||||
|         true, | ||||
|         false, | ||||
|         false | ||||
|       ) | ||||
|     ).rejects.toThrow( | ||||
|       `GraalPy version 19.0.0 with arch ${architecture} not found` | ||||
|     ); | ||||
|   }); | ||||
|  | ||||
|   it('check-latest enabled version found and used from toolcache', async () => { | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-23.0.0', | ||||
|         architecture, | ||||
|         false, | ||||
|         true, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('23.0.0'); | ||||
|  | ||||
|     expect(infoSpy).toHaveBeenCalledWith('Resolved as GraalPy 23.0.0'); | ||||
|   }); | ||||
|  | ||||
|   it('check-latest enabled version found and install successfully', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '23.0.0', architecture) | ||||
|     ); | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-23.0.0', | ||||
|         architecture, | ||||
|         false, | ||||
|         true, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('23.0.0'); | ||||
|     expect(infoSpy).toHaveBeenCalledWith('Resolved as GraalPy 23.0.0'); | ||||
|   }); | ||||
|  | ||||
|   it('check-latest enabled version is not found and used from toolcache', async () => { | ||||
|     tcFind.mockImplementationOnce((tool: string, version: string) => { | ||||
|       const semverRange = new semver.Range(version); | ||||
|       let graalpyPath = ''; | ||||
|       if (semver.satisfies('22.3.4', semverRange)) { | ||||
|         graalpyPath = path.join(toolDir, 'GraalPy', '22.3.4', architecture); | ||||
|       } | ||||
|       return graalpyPath; | ||||
|     }); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy-22.3.4', | ||||
|         architecture, | ||||
|         false, | ||||
|         true, | ||||
|         false | ||||
|       ) | ||||
|     ).resolves.toEqual('22.3.4'); | ||||
|  | ||||
|     expect(infoSpy).toHaveBeenCalledWith( | ||||
|       'Failed to resolve GraalPy 22.3.4 from manifest' | ||||
|     ); | ||||
|   }); | ||||
|  | ||||
|   it('found and install successfully, pre-release fallback', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '23.1', architecture) | ||||
|     ); | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion( | ||||
|         'graalpy23.1', | ||||
|         architecture, | ||||
|         false, | ||||
|         false, | ||||
|         false | ||||
|       ) | ||||
|     ).rejects.toThrow(); | ||||
|     await expect( | ||||
|       finder.findGraalPyVersion('graalpy23.1', architecture, false, false, true) | ||||
|     ).resolves.toEqual('23.1.0-a.1'); | ||||
|   }); | ||||
| }); | ||||
							
								
								
									
										256
									
								
								__tests__/install-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								__tests__/install-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,256 @@ | ||||
| import fs from 'fs'; | ||||
|  | ||||
| import {HttpClient} from '@actions/http-client'; | ||||
| import * as ifm from '@actions/http-client/interfaces'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as path from 'path'; | ||||
|  | ||||
| import * as installer from '../src/install-graalpy'; | ||||
| import { | ||||
|   IGraalPyManifestRelease, | ||||
|   IGraalPyManifestAsset, | ||||
|   IS_WINDOWS | ||||
| } from '../src/utils'; | ||||
|  | ||||
| import manifestData from './data/graalpy.json'; | ||||
|  | ||||
| const architecture = 'x64'; | ||||
|  | ||||
| const toolDir = path.join(__dirname, 'runner', 'tools'); | ||||
| const tempDir = path.join(__dirname, 'runner', 'temp'); | ||||
|  | ||||
| /* GraalPy doesn't have a windows release yet */ | ||||
| const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe; | ||||
|  | ||||
| describe('graalpyVersionToSemantic', () => { | ||||
|   it.each([ | ||||
|     ['23.0.0a1', '23.0.0a1'], | ||||
|     ['23.0.0', '23.0.0'], | ||||
|     ['23.0.x', '23.0.x'], | ||||
|     ['23.x', '23.x'] | ||||
|   ])('%s -> %s', (input, expected) => { | ||||
|     expect(installer.graalPyTagToVersion(input)).toEqual(expected); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describeSkipOnWindows('findRelease', () => { | ||||
|   const result = JSON.stringify(manifestData); | ||||
|   const releases = JSON.parse(result) as IGraalPyManifestRelease[]; | ||||
|   const extension = 'tar.gz'; | ||||
|   const arch = installer.toGraalPyArchitecture(architecture); | ||||
|   const platform = installer.toGraalPyPlatform(process.platform); | ||||
|   const extensionName = `${platform}-${arch}.${extension}`; | ||||
|   const files: IGraalPyManifestAsset = { | ||||
|     name: `graalpython-23.0.0-${extensionName}`, | ||||
|     browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.0.0/graalpython-23.0.0-${extensionName}` | ||||
|   }; | ||||
|   const filesRC1: IGraalPyManifestAsset = { | ||||
|     name: `graalpython-23.1.0a1-${extensionName}`, | ||||
|     browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}` | ||||
|   }; | ||||
|  | ||||
|   let warningSpy: jest.SpyInstance; | ||||
|   let debugSpy: jest.SpyInstance; | ||||
|   let infoSpy: jest.SpyInstance; | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     infoSpy = jest.spyOn(core, 'info'); | ||||
|     infoSpy.mockImplementation(() => {}); | ||||
|  | ||||
|     warningSpy = jest.spyOn(core, 'warning'); | ||||
|     warningSpy.mockImplementation(() => null); | ||||
|  | ||||
|     debugSpy = jest.spyOn(core, 'debug'); | ||||
|     debugSpy.mockImplementation(() => null); | ||||
|   }); | ||||
|  | ||||
|   it("GraalPy version doesn't match", () => { | ||||
|     const graalpyVersion = '12.0.0'; | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, false) | ||||
|     ).toEqual(null); | ||||
|   }); | ||||
|  | ||||
|   it('GraalPy version matches', () => { | ||||
|     const graalpyVersion = '23.0.0'; | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, false) | ||||
|     ).toMatchObject({ | ||||
|       foundAsset: files, | ||||
|       resolvedGraalPyVersion: graalpyVersion | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('Preview version of GraalPy is found', () => { | ||||
|     const graalpyVersion = installer.graalPyTagToVersion('vm-23.1.0a1'); | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, false) | ||||
|     ).toMatchObject({ | ||||
|       foundAsset: { | ||||
|         name: `graalpython-23.1.0a1-${extensionName}`, | ||||
|         browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}` | ||||
|       }, | ||||
|       resolvedGraalPyVersion: '23.1.0-a.1' | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('Latest GraalPy is found', () => { | ||||
|     const graalpyVersion = 'x'; | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, false) | ||||
|     ).toMatchObject({ | ||||
|       foundAsset: files, | ||||
|       resolvedGraalPyVersion: '23.0.0' | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('GraalPy version matches semver (pre-release)', () => { | ||||
|     const graalpyVersion = '23.1.x'; | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, false) | ||||
|     ).toBeNull(); | ||||
|     expect( | ||||
|       installer.findRelease(releases, graalpyVersion, architecture, true) | ||||
|     ).toMatchObject({ | ||||
|       foundAsset: filesRC1, | ||||
|       resolvedGraalPyVersion: '23.1.0-a.1' | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describeSkipOnWindows('installGraalPy', () => { | ||||
|   let tcFind: jest.SpyInstance; | ||||
|   let warningSpy: jest.SpyInstance; | ||||
|   let debugSpy: jest.SpyInstance; | ||||
|   let infoSpy: jest.SpyInstance; | ||||
|   let spyExtractZip: jest.SpyInstance; | ||||
|   let spyExtractTar: jest.SpyInstance; | ||||
|   let spyFsReadDir: jest.SpyInstance; | ||||
|   let spyFsWriteFile: jest.SpyInstance; | ||||
|   let spyHttpClient: jest.SpyInstance; | ||||
|   let spyExistsSync: jest.SpyInstance; | ||||
|   let spyExec: jest.SpyInstance; | ||||
|   let spySymlinkSync: jest.SpyInstance; | ||||
|   let spyDownloadTool: jest.SpyInstance; | ||||
|   let spyCacheDir: jest.SpyInstance; | ||||
|   let spyChmodSync: jest.SpyInstance; | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     tcFind = jest.spyOn(tc, 'find'); | ||||
|     tcFind.mockImplementation(() => | ||||
|       path.join('GraalPy', '3.6.12', architecture) | ||||
|     ); | ||||
|  | ||||
|     spyDownloadTool = jest.spyOn(tc, 'downloadTool'); | ||||
|     spyDownloadTool.mockImplementation(() => path.join(tempDir, 'GraalPy')); | ||||
|  | ||||
|     spyExtractZip = jest.spyOn(tc, 'extractZip'); | ||||
|     spyExtractZip.mockImplementation(() => tempDir); | ||||
|  | ||||
|     spyExtractTar = jest.spyOn(tc, 'extractTar'); | ||||
|     spyExtractTar.mockImplementation(() => tempDir); | ||||
|  | ||||
|     infoSpy = jest.spyOn(core, 'info'); | ||||
|     infoSpy.mockImplementation(() => {}); | ||||
|  | ||||
|     warningSpy = jest.spyOn(core, 'warning'); | ||||
|     warningSpy.mockImplementation(() => null); | ||||
|  | ||||
|     debugSpy = jest.spyOn(core, 'debug'); | ||||
|     debugSpy.mockImplementation(() => null); | ||||
|  | ||||
|     spyFsReadDir = jest.spyOn(fs, 'readdirSync'); | ||||
|     spyFsReadDir.mockImplementation(() => ['GraalPyTest']); | ||||
|  | ||||
|     spyFsWriteFile = jest.spyOn(fs, 'writeFileSync'); | ||||
|     spyFsWriteFile.mockImplementation(() => undefined); | ||||
|  | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||
|     spyHttpClient.mockImplementation( | ||||
|       async (): Promise<ifm.ITypedResponse<IGraalPyManifestRelease[]>> => { | ||||
|         const result = JSON.stringify(manifestData); | ||||
|         return { | ||||
|           statusCode: 200, | ||||
|           headers: {}, | ||||
|           result: JSON.parse(result) as IGraalPyManifestRelease[] | ||||
|         }; | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     spyExec = jest.spyOn(exec, 'exec'); | ||||
|     spyExec.mockImplementation(() => undefined); | ||||
|  | ||||
|     spySymlinkSync = jest.spyOn(fs, 'symlinkSync'); | ||||
|     spySymlinkSync.mockImplementation(() => undefined); | ||||
|  | ||||
|     spyExistsSync = jest.spyOn(fs, 'existsSync'); | ||||
|     spyExistsSync.mockImplementation(() => false); | ||||
|   }); | ||||
|  | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|     jest.restoreAllMocks(); | ||||
|   }); | ||||
|  | ||||
|   it('throw if release is not found', async () => { | ||||
|     await expect( | ||||
|       installer.installGraalPy('7.3.3', architecture, false, undefined) | ||||
|     ).rejects.toThrow( | ||||
|       `GraalPy version 7.3.3 with arch ${architecture} not found` | ||||
|     ); | ||||
|  | ||||
|     expect(spyHttpClient).toHaveBeenCalled(); | ||||
|     expect(spyDownloadTool).not.toHaveBeenCalled(); | ||||
|     expect(spyExec).not.toHaveBeenCalled(); | ||||
|   }); | ||||
|  | ||||
|   it('found and install GraalPy', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '21.3.0', architecture) | ||||
|     ); | ||||
|  | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|  | ||||
|     await expect( | ||||
|       installer.installGraalPy('21.x', architecture, false, undefined) | ||||
|     ).resolves.toEqual({ | ||||
|       installDir: path.join(toolDir, 'GraalPy', '21.3.0', architecture), | ||||
|       resolvedGraalPyVersion: '21.3.0' | ||||
|     }); | ||||
|  | ||||
|     expect(spyHttpClient).toHaveBeenCalled(); | ||||
|     expect(spyDownloadTool).toHaveBeenCalled(); | ||||
|     expect(spyCacheDir).toHaveBeenCalled(); | ||||
|     expect(spyExec).toHaveBeenCalled(); | ||||
|   }); | ||||
|  | ||||
|   it('found and install GraalPy, pre-release fallback', async () => { | ||||
|     spyCacheDir = jest.spyOn(tc, 'cacheDir'); | ||||
|     spyCacheDir.mockImplementation(() => | ||||
|       path.join(toolDir, 'GraalPy', '23.1.0', architecture) | ||||
|     ); | ||||
|  | ||||
|     spyChmodSync = jest.spyOn(fs, 'chmodSync'); | ||||
|     spyChmodSync.mockImplementation(() => undefined); | ||||
|  | ||||
|     await expect( | ||||
|       installer.installGraalPy('23.1.x', architecture, false, undefined) | ||||
|     ).rejects.toThrow(); | ||||
|     await expect( | ||||
|       installer.installGraalPy('23.1.x', architecture, true, undefined) | ||||
|     ).resolves.toEqual({ | ||||
|       installDir: path.join(toolDir, 'GraalPy', '23.1.0', architecture), | ||||
|       resolvedGraalPyVersion: '23.1.0-a.1' | ||||
|     }); | ||||
|  | ||||
|     expect(spyHttpClient).toHaveBeenCalled(); | ||||
|     expect(spyDownloadTool).toHaveBeenCalled(); | ||||
|     expect(spyCacheDir).toHaveBeenCalled(); | ||||
|     expect(spyExec).toHaveBeenCalled(); | ||||
|   }); | ||||
| }); | ||||
| @@ -11,7 +11,8 @@ import { | ||||
|   isCacheFeatureAvailable, | ||||
|   getVersionInputFromFile, | ||||
|   getVersionInputFromPlainFile, | ||||
|   getVersionInputFromTomlFile | ||||
|   getVersionInputFromTomlFile, | ||||
|   getNextPageUrl | ||||
| } from '../src/utils'; | ||||
|  | ||||
| jest.mock('@actions/cache'); | ||||
| @@ -136,3 +137,25 @@ describe('Version from file test', () => { | ||||
|     } | ||||
|   ); | ||||
| }); | ||||
|  | ||||
| describe('getNextPageUrl', () => { | ||||
|   it('GitHub API pagination next page is parsed correctly', () => { | ||||
|     function generateResponse(link: string) { | ||||
|       return { | ||||
|         statusCode: 200, | ||||
|         result: null, | ||||
|         headers: { | ||||
|           link: link | ||||
|         } | ||||
|       }; | ||||
|     } | ||||
|     const page1Links = | ||||
|       '<https://api.github.com/repositories/129883600/releases?page=2>; rel="next", <https://api.github.com/repositories/129883600/releases?page=3>; rel="last"'; | ||||
|     expect(getNextPageUrl(generateResponse(page1Links))).toStrictEqual( | ||||
|       'https://api.github.com/repositories/129883600/releases?page=2' | ||||
|     ); | ||||
|     const page2Links = | ||||
|       '<https://api.github.com/repositories/129883600/releases?page=1>; rel="prev", <https://api.github.com/repositories/129883600/releases?page=1>; rel="first"'; | ||||
|     expect(getNextPageUrl(generateResponse(page2Links))).toBeNull(); | ||||
|   }); | ||||
| }); | ||||
|   | ||||
							
								
								
									
										31889
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31889
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										32572
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32572
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -30,7 +30,7 @@ If there is a specific version of Python that you need and you don't want to wor | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.7.5'  | ||||
| @@ -44,7 +44,7 @@ You can specify **only a major and minor version** if you are okay with the most | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.7'  | ||||
| @@ -58,7 +58,7 @@ You can specify the version with **prerelease tag** to download and set up an ac | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.12.0-alpha.1' | ||||
| @@ -69,7 +69,7 @@ It's also possible to use **x.y-dev syntax** to download and set up the latest p | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.12-dev' | ||||
| @@ -82,7 +82,7 @@ You can also use several types of ranges that are specified in [semver](https:// | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '>=3.9 <3.10' | ||||
| @@ -93,7 +93,7 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.12.0-alpha - 3.12.0' | ||||
| @@ -104,7 +104,7 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.x' | ||||
| @@ -117,7 +117,7 @@ The version of PyPy should be specified in the format `pypy<python_version>[-v<p | ||||
| The `-v<pypy_version>` parameter is optional and can be skipped. The latest PyPy version will be used in this case. | ||||
|  | ||||
| ``` | ||||
| pypy3.8 or pypy-3.8 # the latest available version of PyPy that supports Python 3.8 | ||||
| pypy3.9 or pypy-3.9 # the latest available version of PyPy that supports Python 3.9 | ||||
| pypy2.7 or pypy-2.7 # the latest available version of PyPy that supports Python 2.7 | ||||
| pypy3.7-v7.3.3 or pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3 | ||||
| pypy3.7-v7.x or pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x | ||||
| @@ -137,7 +137,7 @@ jobs: | ||||
|         - 'pypy3.7' # the latest available version of PyPy that supports Python 3.7 | ||||
|         - 'pypy3.7-v7.3.3' # Python 3.7 and PyPy 7.3.3 | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       with: | ||||
|         python-version: ${{ matrix.python-version }} | ||||
| @@ -155,7 +155,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       with: | ||||
|         python-version: | | ||||
| @@ -172,7 +172,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       with: | ||||
|         python-version: | | ||||
| @@ -189,7 +189,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       with: | ||||
|         python-version: | | ||||
| @@ -211,10 +211,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: [ '2.x', '3.x', 'pypy2.7', 'pypy3.7', 'pypy3.8' ] | ||||
|         python-version: [ '2.x', '3.x', 'pypy2.7', 'pypy3.8', 'pypy3.9' ] | ||||
|     name: Python ${{ matrix.python-version }} sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
| @@ -232,14 +232,14 @@ jobs: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, macos-latest, windows-latest] | ||||
|         python-version: ['2.7', '3.7', '3.8', '3.9', '3.10', 'pypy2.7', 'pypy3.8'] | ||||
|         python-version: ['2.7', '3.7', '3.8', '3.9', '3.10', 'pypy2.7', 'pypy3.9'] | ||||
|         exclude: | ||||
|           - os: macos-latest | ||||
|             python-version: '3.8' | ||||
|           - os: windows-latest | ||||
|             python-version: '3.6' | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
| @@ -256,7 +256,7 @@ jobs: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version-file: '.python-version' # Read python version from a file .python-version | ||||
| @@ -265,7 +265,7 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version-file: 'pyproject.toml' # Read python version from a file pyproject.toml | ||||
| @@ -280,7 +280,7 @@ If `check-latest` is set to `true`, the action first checks if the cached versio | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
|   - uses: actions/checkout@v3 | ||||
|   - uses: actions/checkout@v4 | ||||
|   - uses: actions/setup-python@v4 | ||||
|     with: | ||||
|       python-version: '3.7' | ||||
| @@ -295,7 +295,7 @@ steps: | ||||
| **Caching pipenv dependencies:** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.9' | ||||
| @@ -308,7 +308,7 @@ steps: | ||||
| **Caching poetry dependencies:** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - name: Install poetry | ||||
|   run: pipx install poetry | ||||
| - uses: actions/setup-python@v4 | ||||
| @@ -322,7 +322,7 @@ steps: | ||||
| **Using a list of file paths to cache dependencies** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.9' | ||||
| @@ -337,7 +337,7 @@ steps: | ||||
| **Using wildcard patterns to cache dependencies** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.9' | ||||
| @@ -349,7 +349,7 @@ steps: | ||||
| **Using a list of wildcard patterns to cache dependencies** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.10' | ||||
| @@ -364,7 +364,7 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-python@v4 | ||||
|   with: | ||||
|     python-version: '3.11' | ||||
| @@ -387,7 +387,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       id: cp310 | ||||
|       with: | ||||
| @@ -404,7 +404,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       id: cp310 | ||||
|       with: | ||||
| @@ -420,7 +420,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-python@v4 | ||||
|       id: cp310 | ||||
|       with: | ||||
| @@ -451,7 +451,7 @@ Such a requirement on side-effect could be because you don't want your composite | ||||
|  | ||||
| ```yaml | ||||
|  steps: | ||||
|    - uses: actions/checkout@v3 | ||||
|    - uses: actions/checkout@v4 | ||||
|    - uses: actions/setup-python@v4 | ||||
|      id: cp310 | ||||
|      with: | ||||
| @@ -611,7 +611,7 @@ jobs: | ||||
|         python_version: ["3.11", "3.12"] | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-python@v4 | ||||
|         with: | ||||
|           python-version: "${{ matrix.python_version }}" | ||||
|   | ||||
							
								
								
									
										7498
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7498
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							| @@ -25,7 +25,7 @@ | ||||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/cache": "^3.0.4", | ||||
|     "@actions/cache": "^4.0.3", | ||||
|     "@actions/core": "^1.10.0", | ||||
|     "@actions/exec": "^1.1.0", | ||||
|     "@actions/glob": "^0.2.0", | ||||
| @@ -36,21 +36,21 @@ | ||||
|     "semver": "^7.5.2" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^27.0.2", | ||||
|     "@types/jest": "^29.5.6", | ||||
|     "@types/node": "^16.11.25", | ||||
|     "@types/semver": "^7.1.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|     "@typescript-eslint/parser": "^5.54.0", | ||||
|     "@vercel/ncc": "^0.33.4", | ||||
|     "@vercel/ncc": "^0.38.0", | ||||
|     "eslint": "^8.35.0", | ||||
|     "eslint-config-prettier": "^8.6.0", | ||||
|     "eslint-plugin-jest": "^27.2.1", | ||||
|     "eslint-plugin-node": "^11.1.0", | ||||
|     "husky": "^7.0.2", | ||||
|     "jest": "^27.2.5", | ||||
|     "jest-circus": "^27.2.5", | ||||
|     "jest": "^29.7.0", | ||||
|     "jest-circus": "^29.7.0", | ||||
|     "prettier": "^2.8.4", | ||||
|     "ts-jest": "^27.0.5", | ||||
|     "ts-jest": "^29.1.1", | ||||
|     "typescript": "^4.2.3" | ||||
|   }, | ||||
|   "husky": { | ||||
|   | ||||
							
								
								
									
										146
									
								
								src/find-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								src/find-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
| import * as path from 'path'; | ||||
| import * as graalpyInstall from './install-graalpy'; | ||||
| import { | ||||
|   IS_WINDOWS, | ||||
|   validateVersion, | ||||
|   IGraalPyManifestRelease, | ||||
|   getBinaryDirectory | ||||
| } from './utils'; | ||||
|  | ||||
| import * as semver from 'semver'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
|  | ||||
| export async function findGraalPyVersion( | ||||
|   versionSpec: string, | ||||
|   architecture: string, | ||||
|   updateEnvironment: boolean, | ||||
|   checkLatest: boolean, | ||||
|   allowPreReleases: boolean | ||||
| ): Promise<string> { | ||||
|   let resolvedGraalPyVersion = ''; | ||||
|   let installDir: string | null; | ||||
|   let releases: IGraalPyManifestRelease[] | undefined; | ||||
|  | ||||
|   let graalpyVersionSpec = parseGraalPyVersion(versionSpec); | ||||
|  | ||||
|   if (checkLatest) { | ||||
|     releases = await graalpyInstall.getAvailableGraalPyVersions(); | ||||
|     if (releases && releases.length > 0) { | ||||
|       const releaseData = graalpyInstall.findRelease( | ||||
|         releases, | ||||
|         graalpyVersionSpec, | ||||
|         architecture, | ||||
|         false | ||||
|       ); | ||||
|  | ||||
|       if (releaseData) { | ||||
|         core.info(`Resolved as GraalPy ${releaseData.resolvedGraalPyVersion}`); | ||||
|         graalpyVersionSpec = releaseData.resolvedGraalPyVersion; | ||||
|       } else { | ||||
|         core.info( | ||||
|           `Failed to resolve GraalPy ${graalpyVersionSpec} from manifest` | ||||
|         ); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ({installDir, resolvedGraalPyVersion} = findGraalPyToolCache( | ||||
|     graalpyVersionSpec, | ||||
|     architecture | ||||
|   )); | ||||
|  | ||||
|   if (!installDir) { | ||||
|     ({installDir, resolvedGraalPyVersion} = await graalpyInstall.installGraalPy( | ||||
|       graalpyVersionSpec, | ||||
|       architecture, | ||||
|       allowPreReleases, | ||||
|       releases | ||||
|     )); | ||||
|   } | ||||
|  | ||||
|   const pipDir = IS_WINDOWS ? 'Scripts' : 'bin'; | ||||
|   const _binDir = path.join(installDir, pipDir); | ||||
|   const binaryExtension = IS_WINDOWS ? '.exe' : ''; | ||||
|   const pythonPath = path.join( | ||||
|     IS_WINDOWS ? installDir : _binDir, | ||||
|     `python${binaryExtension}` | ||||
|   ); | ||||
|   const pythonLocation = getBinaryDirectory(installDir); | ||||
|   if (updateEnvironment) { | ||||
|     core.exportVariable('pythonLocation', installDir); | ||||
|     // https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython | ||||
|     core.exportVariable('Python_ROOT_DIR', installDir); | ||||
|     // https://cmake.org/cmake/help/latest/module/FindPython2.html#module:FindPython2 | ||||
|     core.exportVariable('Python2_ROOT_DIR', installDir); | ||||
|     // https://cmake.org/cmake/help/latest/module/FindPython3.html#module:FindPython3 | ||||
|     core.exportVariable('Python3_ROOT_DIR', installDir); | ||||
|     core.exportVariable('PKG_CONFIG_PATH', pythonLocation + '/lib/pkgconfig'); | ||||
|     core.addPath(pythonLocation); | ||||
|     core.addPath(_binDir); | ||||
|   } | ||||
|   core.setOutput('python-version', 'graalpy' + resolvedGraalPyVersion); | ||||
|   core.setOutput('python-path', pythonPath); | ||||
|  | ||||
|   return resolvedGraalPyVersion; | ||||
| } | ||||
|  | ||||
| export function findGraalPyToolCache( | ||||
|   graalpyVersion: string, | ||||
|   architecture: string | ||||
| ) { | ||||
|   let resolvedGraalPyVersion = ''; | ||||
|   let installDir: string | null = tc.find( | ||||
|     'GraalPy', | ||||
|     graalpyVersion, | ||||
|     architecture | ||||
|   ); | ||||
|  | ||||
|   if (installDir) { | ||||
|     // 'tc.find' finds tool based on Python version but we also need to check | ||||
|     // whether GraalPy version satisfies requested version. | ||||
|     resolvedGraalPyVersion = path.basename(path.dirname(installDir)); | ||||
|  | ||||
|     const isGraalPyVersionSatisfies = semver.satisfies( | ||||
|       resolvedGraalPyVersion, | ||||
|       graalpyVersion | ||||
|     ); | ||||
|     if (!isGraalPyVersionSatisfies) { | ||||
|       installDir = null; | ||||
|       resolvedGraalPyVersion = ''; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!installDir) { | ||||
|     core.info( | ||||
|       `GraalPy version ${graalpyVersion} was not found in the local cache` | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   return {installDir, resolvedGraalPyVersion}; | ||||
| } | ||||
|  | ||||
| export function parseGraalPyVersion(versionSpec: string): string { | ||||
|   const versions = versionSpec.split('-').filter(item => !!item); | ||||
|  | ||||
|   if (/^(graalpy)(.+)/.test(versions[0])) { | ||||
|     const version = versions[0].replace('graalpy', ''); | ||||
|     versions.splice(0, 1, 'graalpy', version); | ||||
|   } | ||||
|  | ||||
|   if (versions.length < 2 || versions[0] != 'graalpy') { | ||||
|     throw new Error( | ||||
|       "Invalid 'version' property for GraalPy. GraalPy version should be specified as 'graalpy<python-version>' or 'graalpy-<python-version>'. See README for examples and documentation." | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   const pythonVersion = versions[1]; | ||||
|  | ||||
|   if (!validateVersion(pythonVersion)) { | ||||
|     throw new Error( | ||||
|       "Invalid 'version' property for GraalPy. GraalPy versions should satisfy SemVer notation. See README for examples and documentation." | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   return pythonVersion; | ||||
| } | ||||
| @@ -7,7 +7,8 @@ import { | ||||
|   getPyPyVersionFromPath, | ||||
|   readExactPyPyVersionFile, | ||||
|   validatePythonVersionFormatForPyPy, | ||||
|   IPyPyManifestRelease | ||||
|   IPyPyManifestRelease, | ||||
|   getBinaryDirectory | ||||
| } from './utils'; | ||||
|  | ||||
| import * as semver from 'semver'; | ||||
| @@ -82,7 +83,7 @@ export async function findPyPyVersion( | ||||
|     IS_WINDOWS ? installDir : _binDir, | ||||
|     `python${binaryExtension}` | ||||
|   ); | ||||
|   const pythonLocation = pypyInstall.getPyPyBinaryPath(installDir); | ||||
|   const pythonLocation = getBinaryDirectory(installDir); | ||||
|   if (updateEnvironment) { | ||||
|     core.exportVariable('pythonLocation', installDir); | ||||
|     // https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython | ||||
|   | ||||
							
								
								
									
										262
									
								
								src/install-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								src/install-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,262 @@ | ||||
| import * as os from 'os'; | ||||
| import * as path from 'path'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as semver from 'semver'; | ||||
| import * as httpm from '@actions/http-client'; | ||||
| import * as ifm from '@actions/http-client/interfaces'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import fs from 'fs'; | ||||
|  | ||||
| import { | ||||
|   IS_WINDOWS, | ||||
|   IGraalPyManifestRelease, | ||||
|   createSymlinkInFolder, | ||||
|   isNightlyKeyword, | ||||
|   getBinaryDirectory, | ||||
|   getNextPageUrl | ||||
| } from './utils'; | ||||
|  | ||||
| const TOKEN = core.getInput('token'); | ||||
| const AUTH = !TOKEN ? undefined : `token ${TOKEN}`; | ||||
|  | ||||
| export async function installGraalPy( | ||||
|   graalpyVersion: string, | ||||
|   architecture: string, | ||||
|   allowPreReleases: boolean, | ||||
|   releases: IGraalPyManifestRelease[] | undefined | ||||
| ) { | ||||
|   let downloadDir; | ||||
|  | ||||
|   releases = releases ?? (await getAvailableGraalPyVersions()); | ||||
|  | ||||
|   if (!releases || !releases.length) { | ||||
|     throw new Error('No release was found in GraalPy version.json'); | ||||
|   } | ||||
|  | ||||
|   let releaseData = findRelease(releases, graalpyVersion, architecture, false); | ||||
|  | ||||
|   if (allowPreReleases && (!releaseData || !releaseData.foundAsset)) { | ||||
|     // check for pre-release | ||||
|     core.info( | ||||
|       [ | ||||
|         `Stable GraalPy version ${graalpyVersion} with arch ${architecture} not found`, | ||||
|         `Trying pre-release versions` | ||||
|       ].join(os.EOL) | ||||
|     ); | ||||
|     releaseData = findRelease(releases, graalpyVersion, architecture, true); | ||||
|   } | ||||
|  | ||||
|   if (!releaseData || !releaseData.foundAsset) { | ||||
|     throw new Error( | ||||
|       `GraalPy version ${graalpyVersion} with arch ${architecture} not found` | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   const {foundAsset, resolvedGraalPyVersion} = releaseData; | ||||
|   const downloadUrl = `${foundAsset.browser_download_url}`; | ||||
|  | ||||
|   core.info(`Downloading GraalPy from "${downloadUrl}" ...`); | ||||
|  | ||||
|   try { | ||||
|     const graalpyPath = await tc.downloadTool(downloadUrl, undefined, AUTH); | ||||
|  | ||||
|     core.info('Extracting downloaded archive...'); | ||||
|     downloadDir = await tc.extractTar(graalpyPath); | ||||
|  | ||||
|     // root folder in archive can have unpredictable name so just take the first folder | ||||
|     // downloadDir is unique folder under TEMP and can't contain any other folders | ||||
|     const archiveName = fs.readdirSync(downloadDir)[0]; | ||||
|  | ||||
|     const toolDir = path.join(downloadDir, archiveName); | ||||
|     let installDir = toolDir; | ||||
|     if (!isNightlyKeyword(resolvedGraalPyVersion)) { | ||||
|       installDir = await tc.cacheDir( | ||||
|         toolDir, | ||||
|         'GraalPy', | ||||
|         resolvedGraalPyVersion, | ||||
|         architecture | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     const binaryPath = getBinaryDirectory(installDir); | ||||
|     await createGraalPySymlink(binaryPath, resolvedGraalPyVersion); | ||||
|     await installPip(binaryPath); | ||||
|  | ||||
|     return {installDir, resolvedGraalPyVersion}; | ||||
|   } catch (err) { | ||||
|     if (err instanceof Error) { | ||||
|       // Rate limit? | ||||
|       if ( | ||||
|         err instanceof tc.HTTPError && | ||||
|         (err.httpStatusCode === 403 || err.httpStatusCode === 429) | ||||
|       ) { | ||||
|         core.info( | ||||
|           `Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded` | ||||
|         ); | ||||
|       } else { | ||||
|         core.info(err.message); | ||||
|       } | ||||
|       if (err.stack !== undefined) { | ||||
|         core.debug(err.stack); | ||||
|       } | ||||
|     } | ||||
|     throw err; | ||||
|   } | ||||
| } | ||||
|  | ||||
| export async function getAvailableGraalPyVersions() { | ||||
|   const http: httpm.HttpClient = new httpm.HttpClient('tool-cache'); | ||||
|  | ||||
|   const headers: ifm.IHeaders = {}; | ||||
|   if (AUTH) { | ||||
|     headers.authorization = AUTH; | ||||
|   } | ||||
|  | ||||
|   let url: string | null = | ||||
|     'https://api.github.com/repos/oracle/graalpython/releases'; | ||||
|   const result: IGraalPyManifestRelease[] = []; | ||||
|   do { | ||||
|     const response: ifm.ITypedResponse<IGraalPyManifestRelease[]> = | ||||
|       await http.getJson(url, headers); | ||||
|     if (!response.result) { | ||||
|       throw new Error( | ||||
|         `Unable to retrieve the list of available GraalPy versions from '${url}'` | ||||
|       ); | ||||
|     } | ||||
|     result.push(...response.result); | ||||
|     url = getNextPageUrl(response); | ||||
|   } while (url); | ||||
|  | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| async function createGraalPySymlink( | ||||
|   graalpyBinaryPath: string, | ||||
|   graalpyVersion: string | ||||
| ) { | ||||
|   const version = semver.coerce(graalpyVersion)!; | ||||
|   const pythonBinaryPostfix = semver.major(version); | ||||
|   const pythonMinor = semver.minor(version); | ||||
|   const graalpyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`; | ||||
|   const binaryExtension = IS_WINDOWS ? '.exe' : ''; | ||||
|  | ||||
|   core.info('Creating symlinks...'); | ||||
|   createSymlinkInFolder( | ||||
|     graalpyBinaryPath, | ||||
|     `graalpy${binaryExtension}`, | ||||
|     `python${pythonBinaryPostfix}${binaryExtension}`, | ||||
|     true | ||||
|   ); | ||||
|  | ||||
|   createSymlinkInFolder( | ||||
|     graalpyBinaryPath, | ||||
|     `graalpy${binaryExtension}`, | ||||
|     `python${binaryExtension}`, | ||||
|     true | ||||
|   ); | ||||
|  | ||||
|   createSymlinkInFolder( | ||||
|     graalpyBinaryPath, | ||||
|     `graalpy${binaryExtension}`, | ||||
|     `graalpy${graalpyMajorMinorBinaryPostfix}${binaryExtension}`, | ||||
|     true | ||||
|   ); | ||||
| } | ||||
|  | ||||
| async function installPip(pythonLocation: string) { | ||||
|   core.info( | ||||
|     "Installing pip (GraalPy doesn't update pip because it uses a patched version of pip)" | ||||
|   ); | ||||
|   const pythonBinary = path.join(pythonLocation, 'python'); | ||||
|   await exec.exec(`${pythonBinary} -m ensurepip --default-pip`); | ||||
| } | ||||
|  | ||||
| export function graalPyTagToVersion(tag: string) { | ||||
|   const versionPattern = /.*-(\d+\.\d+\.\d+(?:\.\d+)?)((?:a|b|rc))?(\d*)?/; | ||||
|   const match = tag.match(versionPattern); | ||||
|   if (match && match[2]) { | ||||
|     return `${match[1]}-${match[2]}.${match[3]}`; | ||||
|   } else if (match) { | ||||
|     return match[1]; | ||||
|   } else { | ||||
|     return tag.replace(/.*-/, ''); | ||||
|   } | ||||
| } | ||||
|  | ||||
| export function findRelease( | ||||
|   releases: IGraalPyManifestRelease[], | ||||
|   graalpyVersion: string, | ||||
|   architecture: string, | ||||
|   includePrerelease: boolean | ||||
| ) { | ||||
|   const options = {includePrerelease: includePrerelease}; | ||||
|   const filterReleases = releases.filter(item => { | ||||
|     const isVersionSatisfied = semver.satisfies( | ||||
|       graalPyTagToVersion(item.tag_name), | ||||
|       graalpyVersion, | ||||
|       options | ||||
|     ); | ||||
|     return ( | ||||
|       isVersionSatisfied && !!findAsset(item, architecture, process.platform) | ||||
|     ); | ||||
|   }); | ||||
|  | ||||
|   if (!filterReleases.length) { | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   const sortedReleases = filterReleases.sort((previous, current) => | ||||
|     semver.compare( | ||||
|       semver.coerce(graalPyTagToVersion(current.tag_name))!, | ||||
|       semver.coerce(graalPyTagToVersion(previous.tag_name))! | ||||
|     ) | ||||
|   ); | ||||
|  | ||||
|   const foundRelease = sortedReleases[0]; | ||||
|   const foundAsset = findAsset(foundRelease, architecture, process.platform); | ||||
|  | ||||
|   return { | ||||
|     foundAsset, | ||||
|     resolvedGraalPyVersion: graalPyTagToVersion(foundRelease.tag_name) | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export function toGraalPyPlatform(platform: string) { | ||||
|   switch (platform) { | ||||
|     case 'win32': | ||||
|       return 'windows'; | ||||
|     case 'darwin': | ||||
|       return 'macos'; | ||||
|   } | ||||
|   return platform; | ||||
| } | ||||
|  | ||||
| export function toGraalPyArchitecture(architecture: string) { | ||||
|   switch (architecture) { | ||||
|     case 'x64': | ||||
|       return 'amd64'; | ||||
|     case 'arm64': | ||||
|       return 'aarch64'; | ||||
|   } | ||||
|   return architecture; | ||||
| } | ||||
|  | ||||
| export function findAsset( | ||||
|   item: IGraalPyManifestRelease, | ||||
|   architecture: string, | ||||
|   platform: string | ||||
| ) { | ||||
|   const graalpyArch = toGraalPyArchitecture(architecture); | ||||
|   const graalpyPlatform = toGraalPyPlatform(platform); | ||||
|   const found = item.assets.filter( | ||||
|     file => | ||||
|       file.name.startsWith('graalpy') && | ||||
|       file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.tar.gz`) | ||||
|   ); | ||||
|   /* | ||||
|   In the future there could be more variants of GraalPy for a single release. Pick the shortest name, that one is the most likely to be the primary variant. | ||||
|   */ | ||||
|   found.sort((f1, f2) => f1.name.length - f2.name.length); | ||||
|   return found[0]; | ||||
| } | ||||
| @@ -13,7 +13,8 @@ import { | ||||
|   IPyPyManifestRelease, | ||||
|   createSymlinkInFolder, | ||||
|   isNightlyKeyword, | ||||
|   writeExactPyPyVersionFile | ||||
|   writeExactPyPyVersionFile, | ||||
|   getBinaryDirectory | ||||
| } from './utils'; | ||||
|  | ||||
| export async function installPyPy( | ||||
| @@ -94,7 +95,7 @@ export async function installPyPy( | ||||
|  | ||||
|     writeExactPyPyVersionFile(installDir, resolvedPyPyVersion); | ||||
|  | ||||
|     const binaryPath = getPyPyBinaryPath(installDir); | ||||
|     const binaryPath = getBinaryDirectory(installDir); | ||||
|     await createPyPySymlink(binaryPath, resolvedPythonVersion); | ||||
|     await installPip(binaryPath); | ||||
|  | ||||
| @@ -237,15 +238,6 @@ export function findRelease( | ||||
|   }; | ||||
| } | ||||
|  | ||||
| /** Get PyPy binary location from the tool of installation directory | ||||
|  *  - On Linux and macOS, the Python interpreter is in 'bin'. | ||||
|  *  - On Windows, it is in the installation root. | ||||
|  */ | ||||
| export function getPyPyBinaryPath(installDir: string) { | ||||
|   const _binDir = path.join(installDir, 'bin'); | ||||
|   return IS_WINDOWS ? installDir : _binDir; | ||||
| } | ||||
|  | ||||
| export function pypyVersionToSemantic(versionSpec: string) { | ||||
|   const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc))(\d*)/g; | ||||
|   return versionSpec.replace(prereleaseVersion, '$1-$2.$3'); | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as finder from './find-python'; | ||||
| import * as finderPyPy from './find-pypy'; | ||||
| import * as finderGraalPy from './find-graalpy'; | ||||
| import * as path from 'path'; | ||||
| import * as os from 'os'; | ||||
| import fs from 'fs'; | ||||
| @@ -17,6 +18,10 @@ function isPyPyVersion(versionSpec: string) { | ||||
|   return versionSpec.startsWith('pypy'); | ||||
| } | ||||
|  | ||||
| function isGraalPyVersion(versionSpec: string) { | ||||
|   return versionSpec.startsWith('graalpy'); | ||||
| } | ||||
|  | ||||
| async function cacheDependencies(cache: string, pythonVersion: string) { | ||||
|   const cacheDependencyPath = | ||||
|     core.getInput('cache-dependency-path') || undefined; | ||||
| @@ -106,10 +111,20 @@ async function run() { | ||||
|           core.info( | ||||
|             `Successfully set up PyPy ${installed.resolvedPyPyVersion} with Python (${installed.resolvedPythonVersion})` | ||||
|           ); | ||||
|         } else if (isGraalPyVersion(version)) { | ||||
|           const installed = await finderGraalPy.findGraalPyVersion( | ||||
|             version, | ||||
|             arch, | ||||
|             updateEnvironment, | ||||
|             checkLatest, | ||||
|             allowPreReleases | ||||
|           ); | ||||
|           pythonVersion = `${installed}`; | ||||
|           core.info(`Successfully set up GraalPy ${installed}`); | ||||
|         } else { | ||||
|           if (version.startsWith('2')) { | ||||
|             core.warning( | ||||
|               'The support for python 2.7 will be removed on June 19. Related issue: https://github.com/actions/setup-python/issues/672' | ||||
|               'The support for python 2.7 was removed on June 19, 2023. Related issue: https://github.com/actions/setup-python/issues/672' | ||||
|             ); | ||||
|           } | ||||
|           const installed = await finder.useCpythonVersion( | ||||
|   | ||||
							
								
								
									
										46
									
								
								src/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								src/utils.ts
									
									
									
									
									
								
							| @@ -6,6 +6,7 @@ import * as path from 'path'; | ||||
| import * as semver from 'semver'; | ||||
| import * as toml from '@iarna/toml'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import * as ifm from '@actions/http-client/interfaces'; | ||||
|  | ||||
| export const IS_WINDOWS = process.platform === 'win32'; | ||||
| export const IS_LINUX = process.platform === 'linux'; | ||||
| @@ -29,6 +30,16 @@ export interface IPyPyManifestRelease { | ||||
|   files: IPyPyManifestAsset[]; | ||||
| } | ||||
|  | ||||
| export interface IGraalPyManifestAsset { | ||||
|   name: string; | ||||
|   browser_download_url: string; | ||||
| } | ||||
|  | ||||
| export interface IGraalPyManifestRelease { | ||||
|   tag_name: string; | ||||
|   assets: IGraalPyManifestAsset[]; | ||||
| } | ||||
|  | ||||
| /** create Symlinks for downloaded PyPy | ||||
|  *  It should be executed only for downloaded versions in runtime, because | ||||
|  *  toolcache versions have this setup. | ||||
| @@ -90,7 +101,7 @@ export function writeExactPyPyVersionFile( | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Python version should be specified explicitly like "x.y" (2.7, 3.6, 3.7) | ||||
|  * Python version should be specified explicitly like "x.y" (3.10, 3.11, etc) | ||||
|  * "3.x" or "3" are not supported | ||||
|  * because it could cause ambiguity when both PyPy version and Python version are not precise | ||||
|  */ | ||||
| @@ -251,7 +262,7 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] { | ||||
|  */ | ||||
| export function getVersionInputFromPlainFile(versionFile: string): string[] { | ||||
|   core.debug(`Trying to resolve version form ${versionFile}`); | ||||
|   const version = fs.readFileSync(versionFile, 'utf8'); | ||||
|   const version = fs.readFileSync(versionFile, 'utf8').trim(); | ||||
|   core.info(`Resolved ${versionFile} as ${version}`); | ||||
|   return [version]; | ||||
| } | ||||
| @@ -266,3 +277,34 @@ export function getVersionInputFromFile(versionFile: string): string[] { | ||||
|     return getVersionInputFromPlainFile(versionFile); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the directory containing interpreter binary from installation directory of PyPy or GraalPy | ||||
|  *  - On Linux and macOS, the Python interpreter is in 'bin'. | ||||
|  *  - On Windows, it is in the installation root. | ||||
|  */ | ||||
| export function getBinaryDirectory(installDir: string) { | ||||
|   return IS_WINDOWS ? installDir : path.join(installDir, 'bin'); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Extract next page URL from a HTTP response "link" header. Such headers are used in GitHub APIs. | ||||
|  */ | ||||
| export function getNextPageUrl<T>(response: ifm.ITypedResponse<T>) { | ||||
|   const responseHeaders = <ifm.IHeaders>response.headers; | ||||
|   const linkHeader = responseHeaders.link; | ||||
|   if (typeof linkHeader === 'string') { | ||||
|     for (const link of linkHeader.split(/\s*,\s*/)) { | ||||
|       const match = link.match(/<([^>]+)>(.*)/); | ||||
|       if (match) { | ||||
|         const url = match[1]; | ||||
|         for (const param of match[2].split(/\s*;\s*/)) { | ||||
|           if (param.match(/rel="?next"?/)) { | ||||
|             return url; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return null; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user