Compare commits

...

28 Commits

Author SHA1 Message Date
Edgar Ramírez Mondragón
990053552b Update modules removed in Python 3.15 (#361) 2025-10-15 07:42:07 -05:00
github-actions[bot]
c979aa30d9 Update versions-manifest (#360)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-10-15 07:31:17 -05:00
github-actions[bot]
d026dedcb3 Update versions-manifest (#359)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-10-09 23:51:31 -05:00
github-actions[bot]
e5cd1721c5 Update versions-manifest (#358)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-10-07 23:03:29 -05:00
github-actions[bot]
657a1a4f6d Update versions-manifest (#357)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-10-07 13:55:03 -05:00
dependabot[bot]
59e4ed0021 Bump actions/checkout from 3 to 5 (#353)
* Bump actions/checkout from 3 to 5

Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update Python version to 3.13.7 in workflow

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Haritha <73516759+HarithaVattikuti@users.noreply.github.com>
2025-09-18 14:32:36 -05:00
github-actions[bot]
205209dadf Update versions-manifest (#356)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-09-18 10:07:57 -05:00
Haritha
80e46b6494 Add Dependabot configuration for version updates (#351)
Configured Dependabot for GitHub Actions updates.
2025-09-03 12:44:06 -05:00
github-actions[bot]
209af9b943 Update versions-manifest (#350)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-08-14 22:47:39 -05:00
github-actions[bot]
43318d4f4f Update versions-manifest (#349)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-08-06 22:15:03 -05:00
Haritha
95601e8cfd changed schedule (#348) 2025-08-05 13:37:26 -05:00
github-actions[bot]
81bbab5835 Update versions-manifest (#347)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-07-23 11:19:13 -05:00
github-actions[bot]
e3b147457c Update versions-manifest (#346)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-07-08 22:55:51 -05:00
aparnajyothi-y
26223fb20b deprecate windows-2019 (#343) 2025-07-02 12:18:34 -05:00
github-actions[bot]
7406e1d9f7 Update versions-manifest (#345)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-06-18 12:21:13 -05:00
github-actions[bot]
94c566800e Update versions-manifest (#344)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-06-12 11:00:59 -05:00
github-actions[bot]
7c0308cd7d Update versions-manifest (#342)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-06-04 12:36:07 -05:00
github-actions[bot]
bcf6ecc82e Update versions-manifest (#341)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-05-28 00:12:01 -05:00
Matthieu Darbois
2eea8c8fed chore: use windows-11-arm runner instead of custom one (#338)
This allows contributors to test on GitHub hosted Windows ARM64 runners easily now that those runners are available for free for public repositories
2025-05-27 13:36:58 -05:00
Max Schmitt
56544d4840 fix(windows): verbose output on Windows (#339) 2025-05-15 22:11:05 -05:00
github-actions[bot]
96e291c21e Update versions-manifest (#340)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-05-07 23:34:45 -05:00
Hugo van Kemenade
d5e8ad6406 Remove EOL Python code, set 3.9 as base, add 3.14 stdlib module (#317)
* Remove redundant Python 2 code

* Use Python 3.2 as base version

* Use Python 3.3 as base version

* Use Python 3.4 as base version

* Use Python 3.5 as base version

* Use Python 3.6 as base version

* Use Python 3.7 as base version

* Use Python 3.8 as base version

* Use Python 3.9 as base version

* Add annotationlib for Python 3.14

* Fix syntax error
2025-04-24 15:29:21 -05:00
aparnajyothi-y
5c01d17435 Remove Ubuntu 20.04 and Update Stable and Unstable Versions for Tests (#336)
* Remove ubuntu-20.04 and updated the stable and unstable test cases

* arch update for freethreaded

* Remove duplicate 'ubuntu-latest' from matrix OS

---------

Co-authored-by: Haritha <73516759+HarithaVattikuti@users.noreply.github.com>
2025-04-16 12:06:27 -05:00
Matthieu Darbois
bc5b4d5490 chore: use ubuntu-*-arm runners instead of custom ones (#330)
This allows contributors to test on GitHub hosted Linux ARM64 runners easily now that those runners are available for free for public repositories: https://github.blog/changelog/2025-01-16-linux-arm64-hosted-runners-now-available-for-free-in-public-repositories-public-preview/
2025-04-15 14:45:36 -05:00
github-actions[bot]
a12e3a2eaa Update versions-manifest (#337)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-04-09 11:22:45 -05:00
github-actions[bot]
5ebefacc0b Update versions-manifest (#335)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-03-17 12:17:01 -05:00
github-actions[bot]
1c10cada84 Update versions-manifest (#334)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-03-10 13:40:46 -05:00
github-actions[bot]
3854fb534e Update versions-manifest (#333)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-02-24 12:29:37 -06:00
17 changed files with 3355 additions and 332 deletions

14
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
# Enable version updates for GitHub Actions
- package-ecosystem: 'github-actions'
# Workflow files stored in the default location of `.github/workflows`
# You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
directory: '/'
schedule:
interval: 'weekly'

View File

@@ -1,11 +1,11 @@
name: Build Python package name: Build Python package
run-name: Generate Python ${{ inputs.VERSION || '3.12.3' }} run-name: Generate Python ${{ inputs.VERSION || '3.13.7' }}
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
VERSION: VERSION:
description: 'Python version to build and upload' description: 'Python version to build and upload'
default: '3.12.3' default: '3.13.7'
required: true required: true
PUBLISH_RELEASES: PUBLISH_RELEASES:
description: 'Whether to publish releases' description: 'Whether to publish releases'
@@ -20,7 +20,7 @@ on:
PLATFORMS: PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)' description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true required: true
default: 'ubuntu-20.04,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13_x64,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64' default: 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13_x64,macos-14_arm64,windows-2022_x64,windows-2022_x86,windows-11_arm64'
pull_request: pull_request:
paths-ignore: paths-ignore:
- 'versions-manifest.json' - 'versions-manifest.json'
@@ -30,7 +30,7 @@ on:
- 'main' - 'main'
env: env:
VERSION: ${{ inputs.VERSION || '3.12.3' }} VERSION: ${{ inputs.VERSION || '3.13.7' }}
defaults: defaults:
run: run:
shell: pwsh shell: pwsh
@@ -44,7 +44,7 @@ jobs:
- name: Generate execution matrix - name: Generate execution matrix
id: generate-matrix id: generate-matrix
run: | run: |
[String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64' }}".Split(",").Trim() [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13,macos-14_arm64,windows-2022_x64,windows-2022_x86,windows-11_arm64' }}".Split(",").Trim()
[String[]]$buildModes = "${{ inputs.threading_build_modes || 'default' }}".Split(",").Trim() [String[]]$buildModes = "${{ inputs.threading_build_modes || 'default' }}".Split(",").Trim()
$matrix = @() $matrix = @()
@@ -54,19 +54,9 @@ jobs:
$os = $parts[0] $os = $parts[0]
$arch = if ($parts[1]) {$parts[1]} else {"x64"} $arch = if ($parts[1]) {$parts[1]} else {"x64"}
switch -wildcard ($os) { switch -wildcard ($os) {
"*ubuntu*" { $platform = $os.Replace("ubuntu","linux")} "*ubuntu*" { $platform = $os.Replace("ubuntu","linux"); if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
"*macos*" { $platform = 'darwin' } "*macos*" { $platform = 'darwin' }
"*windows*" { $platform = 'win32' } "*windows*" { $platform = 'win32'; if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
}
if ($configuration -eq "ubuntu-22.04_arm64") {
$os = "setup-actions-ubuntu-arm64-2-core"
}
elseif ($configuration -eq "ubuntu-24.04_arm64") {
$os = "setup-actions-ubuntu24-arm64-2-core"
}
elseif ($configuration -eq "windows-2019_arm64") {
$os = "setup-actions-windows-arm64-4-core"
} }
if ($buildMode -eq "freethreaded") { if ($buildMode -eq "freethreaded") {
@@ -93,34 +83,10 @@ jobs:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }} include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.13.7' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Setup Environment on Windows ARM64 Runner
if: matrix.os == 'setup-actions-windows-arm64-4-core'
shell: powershell
run: |
# Install Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install PowerShell
choco install powershell-core -y
echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install Git
choco install git -y
echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install 7-Zip
choco install 7zip -y
echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
submodules: true submodules: true
@@ -148,33 +114,10 @@ jobs:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }} include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.13.7' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Setup Environment on Windows ARM64 Runner
if: matrix.os == 'setup-actions-windows-arm64-4-core'
shell: powershell
run: |
# Install Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install PowerShell
choco install powershell-core -y
echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install Git
choco install git -y
echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
# Install 7-Zip
choco install 7zip -y
echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
submodules: true submodules: true

View File

@@ -1,7 +1,7 @@
name: Get Python versions name: Get Python versions
on: on:
schedule: schedule:
- cron: '0 3,15 * * *' - cron: '0 0,12 * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -10,4 +10,4 @@ jobs:
with: with:
tool-name: "Python" tool-name: "Python"
image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4" image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"
secrets: inherit secrets: inherit

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
submodules: true submodules: true

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v3 uses: actions/checkout@v5
- name: Trigger python workflow - name: Trigger python workflow
run: | run: |

View File

@@ -14,7 +14,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04, macos-13, ubuntu-latest] os: [macos-latest, windows-latest, ubuntu-22.04, ubuntu-latest, macos-13]
python: [3.9.13, 3.10.11, 3.11.8, 3.12.7, 3.13.0] python: [3.9.13, 3.10.11, 3.11.8, 3.12.7, 3.13.0]
steps: steps:
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}

View File

@@ -17,7 +17,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04, ubuntu-latest, macos-13] os: [macos-latest, windows-latest, ubuntu-22.04, ubuntu-latest, macos-13]
steps: steps:
- name: Setup Python ${{ github.event.inputs.version }} - name: Setup Python ${{ github.event.inputs.version }}
uses: actions/setup-python@main uses: actions/setup-python@main

View File

@@ -31,14 +31,6 @@ class macOSPythonBuilder : NixPythonBuilder {
.SYNOPSIS .SYNOPSIS
Prepare system environment by installing dependencies and required packages. Prepare system environment by installing dependencies and required packages.
#> #>
if ($this.Version -eq "3.7.17") {
# We have preinstalled ncurses and readLine on the hoster runners. But we need to install bzip2 for
# setting up an environemnt
# If we get any issues realted to ncurses or readline we can try to run this command
# brew install ncurses readline
Execute-Command -Command "brew install bzip2"
}
} }
[void] Configure() { [void] Configure() {
@@ -58,46 +50,20 @@ class macOSPythonBuilder : NixPythonBuilder {
### will never be used itself by a Github Actions runner but using a universal2 Python is the only way to build ### will never be used itself by a Github Actions runner but using a universal2 Python is the only way to build
### universal2 C extensions and wheels. This is supported by Python >= 3.10 and was backported to Python >= ### universal2 C extensions and wheels. This is supported by Python >= 3.10 and was backported to Python >=
### 3.9.1 and >= 3.8.10. ### 3.9.1 and >= 3.8.10.
### Disabled, discussion: https://github.com/actions/python-versions/pull/114
# if ($this.Version -ge "3.8.10" -and $this.Version -ne "3.8.13" -and $this.Version -ne "3.9.0" ) {
# $configureString += " --enable-universalsdk --with-universal-archs=universal2"
# }
### OS X 10.11, Apple no longer provides header files for the deprecated system version of OpenSSL. ### OS X 10.11, Apple no longer provides header files for the deprecated system version of OpenSSL.
### Solution is to install these libraries from a third-party package manager, ### Solution is to install these libraries from a third-party package manager,
### and then add the appropriate paths for the header and library files to configure command. ### and then add the appropriate paths for the header and library files to configure command.
### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies) ### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies)
if ($this.Version -lt "3.7.0") { $configureString += " --with-openssl=/usr/local/opt/openssl@3"
$env:LDFLAGS = "-L/usr/local/opt/openssl@3/lib -L/usr/local/opt/zlib/lib" $configureString += " --with-tcltk-includes='-I /usr/local/opt/tcl-tk/include/tcl-tk' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
$env:CFLAGS = "-I/usr/local/opt/openssl@3/include -I/usr/local/opt/zlib/include"
} else {
$configureString += " --with-openssl=/usr/local/opt/openssl@3"
# For Python 3.7.2 and 3.7.3 we need to provide PATH for zlib to pack it properly. Otherwise the build will fail ### Compile with support of loadable sqlite extensions.
# with the error: zipimport.ZipImportError: can't decompress data; zlib not available
if ($this.Version -eq "3.7.2" -or $this.Version -eq "3.7.3" -or $this.Version -eq "3.7.17") {
$env:LDFLAGS = "-L/usr/local/opt/zlib/lib"
$env:CFLAGS = "-I/usr/local/opt/zlib/include"
}
# if ($this.Version -gt "3.7.12") {
$configureString += " --with-tcltk-includes='-I /usr/local/opt/tcl-tk/include/tcl-tk' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
# }
if ($this.Version -eq "3.7.17") {
$env:LDFLAGS += " -L$(brew --prefix bzip2)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix ncurses)/lib"
$env:CFLAGS += " -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(brew --prefix ncurses)/include"
}
}
### Compile with support of loadable sqlite extensions. Unavailable for Python 2.*
### Link to documentation (https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension) ### Link to documentation (https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension)
if ($this.Version -ge "3.2.0") { $configureString += " --enable-loadable-sqlite-extensions"
$configureString += " --enable-loadable-sqlite-extensions" $env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib"
$env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib" $env:CFLAGS += " -I$(brew --prefix sqlite3)/include"
$env:CFLAGS += " -I$(brew --prefix sqlite3)/include" $env:CPPFLAGS += "-I$(brew --prefix sqlite3)/include"
$env:CPPFLAGS += "-I$(brew --prefix sqlite3)/include"
}
Write-Host "The passed configure options are: " Write-Host "The passed configure options are: "
Write-Host $configureString Write-Host $configureString

View File

@@ -61,8 +61,7 @@ class NixPythonBuilder : PythonBuilder {
Return name of Python binary. Return name of Python binary.
#> #>
if ($this.Version.Major -eq 2) { $pythonBinary = "python" } else { $pythonBinary = "python3" } return "python3"
return $pythonBinary
} }
[string] Download() { [string] Download() {

View File

@@ -61,8 +61,8 @@ class UbuntuPythonBuilder : NixPythonBuilder {
Prepare system environment by installing dependencies and required packages. Prepare system environment by installing dependencies and required packages.
#> #>
if ($this.Version -lt "3.5.3") { if ($this.Version -lt "3.9.0") {
Write-Host "Python versions lower than 3.5.3 are not supported" Write-Host "Python versions lower than 3.9.0 are not supported"
exit 1 exit 1
} }

View File

@@ -42,9 +42,7 @@ class WinPythonBuilder : PythonBuilder {
Return extension for required version of Python executable. Return extension for required version of Python executable.
#> #>
$extension = if ($this.Version -lt "3.5" -and $this.Version -ge "2.5") { ".msi" } else { ".exe" } return ".exe"
return $extension
} }
[string] GetArchitectureExtension() { [string] GetArchitectureExtension() {
@@ -55,11 +53,7 @@ class WinPythonBuilder : PythonBuilder {
$ArchitectureExtension = "" $ArchitectureExtension = ""
if ($this.GetHardwareArchitecture() -eq "x64") { if ($this.GetHardwareArchitecture() -eq "x64") {
if ($this.Version -ge "3.5") { $ArchitectureExtension = "-amd64"
$ArchitectureExtension = "-amd64"
} else {
$ArchitectureExtension = ".amd64"
}
} elseif ($this.GetHardwareArchitecture() -eq "arm64") { } elseif ($this.GetHardwareArchitecture() -eq "arm64") {
$ArchitectureExtension = "-arm64" $ArchitectureExtension = "-arm64"
} }

View File

@@ -11,12 +11,7 @@ function Get-RegistryVersionFilter {
) )
$archFilter = if ($Architecture -eq 'x86') { "32-bit" } else { "64-bit" } $archFilter = if ($Architecture -eq 'x86') { "32-bit" } else { "64-bit" }
### Python 2.7 x86 have no architecture postfix "Python $MajorVersion.$MinorVersion.*($archFilter)"
if (($Architecture -eq "x86") -and ($MajorVersion -eq 2)) {
"Python $MajorVersion.$MinorVersion.\d+$"
} else {
"Python $MajorVersion.$MinorVersion.*($archFilter)"
}
} }
function Remove-RegistryEntries { function Remove-RegistryEntries {
@@ -131,11 +126,6 @@ if ($LASTEXITCODE -ne 0) {
Throw "Error happened during Python installation" Throw "Error happened during Python installation"
} }
# print out all files in $PythonArchPath
Write-Host "Files in $PythonArchPath"
$files = Get-ChildItem -Path $PythonArchPath -File -Recurse
Write-Output $files
if ($IsFreeThreaded) { if ($IsFreeThreaded) {
# Delete python.exe and create a symlink to free-threaded exe # Delete python.exe and create a symlink to free-threaded exe
Remove-Item -Path "$PythonArchPath\python.exe" -Force Remove-Item -Path "$PythonArchPath\python.exe" -Force
@@ -143,9 +133,7 @@ if ($IsFreeThreaded) {
} }
Write-Host "Create `python3` symlink" Write-Host "Create `python3` symlink"
if ($MajorVersion -ne "2") { New-Item -Path "$PythonArchPath\python3.exe" -ItemType SymbolicLink -Value "$PythonArchPath\python.exe"
New-Item -Path "$PythonArchPath\python3.exe" -ItemType SymbolicLink -Value "$PythonArchPath\python.exe"
}
Write-Host "Install and upgrade Pip" Write-Host "Install and upgrade Pip"
$Env:PIP_ROOT_USER_ACTION = "ignore" $Env:PIP_ROOT_USER_ACTION = "ignore"

View File

@@ -4,19 +4,33 @@ $ConfigurationFile = Join-Path $PSScriptRoot "../config/python-manifest-config.j
$Configuration = Read-ConfigurationFile -Filepath $ConfigurationFile $Configuration = Read-ConfigurationFile -Filepath $ConfigurationFile
$stableTestCases = @( $stableTestCases = @(
@{ ReleaseName = "python-3.8.3-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} }, @{ ReleaseName = "python-3.13.0-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} }, @{ ReleaseName = "python-3.13.0-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.13.0-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} } @{ ReleaseName = "python-3.13.0-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.13.0-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} },
@{ ReleaseName = "python-3.13.0-darwin-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-linux-20.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-linux-22.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-win32-x64-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-win32-x86-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86-freethreaded"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ } ) | ForEach-Object { $_.Configuration = $Configuration; $_ }
$unstableTestCases = @( $unstableTestCases = @(
@{ ReleaseName = "python-3.9.0-alpha.2-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} }, @{ ReleaseName = "python-3.14.0-alpha.5-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-rc.4-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} }, @{ ReleaseName = "python-3.14.0-alpha.5-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.14.0-alpha.5-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} } @{ ReleaseName = "python-3.14.0-alpha.5-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} },
@{ ReleaseName = "python-3.14.0-alpha.5-darwin-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-20.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-22.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x64-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x86-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86-freethreaded"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ } ) | ForEach-Object { $_.Configuration = $Configuration; $_ }
Describe "Python manifest config" { Describe "Python manifest config" {

View File

@@ -60,7 +60,7 @@ Describe "Tests" {
# } # }
# } # }
if (($Version -ge "3.2.0") -and ($Version -lt "3.11.0") -and (($Platform -ne "darwin") -or ($HardwareArchitecture -ne "arm64"))) { if (($Version -lt "3.11.0") -and (($Platform -ne "darwin") -or ($HardwareArchitecture -ne "arm64"))) {
It "Check if sqlite3 module is installed" { It "Check if sqlite3 module is installed" {
"python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode "python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode
} }
@@ -92,16 +92,6 @@ Describe "Tests" {
} }
} }
# Pyinstaller 3.5 does not support Python 3.8.0. Check issue https://github.com/pyinstaller/pyinstaller/issues/4311
if ($Version -lt "3.8.0" -and $Version.Major -ne "2") {
It "Validate Pyinstaller" {
"pip install pyinstaller" | Should -ReturnZeroExitCode
"pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode
$distPath = [IO.Path]::Combine($pwd, "dist", "simple-test")
"$distPath" | Should -ReturnZeroExitCode
}
}
It "Check urlopen with HTTPS works" { It "Check urlopen with HTTPS works" {
"python ./sources/python-urlopen-https.py" | Should -ReturnZeroExitCode "python ./sources/python-urlopen-https.py" | Should -ReturnZeroExitCode
} }

View File

@@ -3,12 +3,10 @@ Make sure all the optional modules are installed.
This is needed for Linux since we build from source. This is needed for Linux since we build from source.
""" """
from __future__ import print_function
import importlib import importlib
import sys import sys
# The Python standard library as of Python 3.0 # The Python standard library as of Python 3.9
standard_library = [ standard_library = [
'abc', 'abc',
'aifc', 'aifc',
@@ -17,6 +15,7 @@ standard_library = [
'ast', 'ast',
'asynchat', 'asynchat',
'asyncore', 'asyncore',
'asyncio',
'base64', 'base64',
'bdb', 'bdb',
'binhex', 'binhex',
@@ -34,14 +33,17 @@ standard_library = [
'collections', 'collections',
'colorsys', 'colorsys',
'compileall', 'compileall',
'concurrent',
'configparser', 'configparser',
'contextlib', 'contextlib',
'contextvars',
'copy', 'copy',
'copyreg', 'copyreg',
'crypt', 'crypt',
'csv', 'csv',
'ctypes', 'ctypes',
'curses', 'curses',
'dataclasses',
'datetime', 'datetime',
'dbm', 'dbm',
'decimal', 'decimal',
@@ -49,9 +51,11 @@ standard_library = [
'dis', 'dis',
'distutils', 'distutils',
'doctest', 'doctest',
'dummy_threading',
'email', 'email',
'encodings', 'encodings',
'ensurepip',
'enum',
'faulthandler',
'filecmp', 'filecmp',
'fileinput', 'fileinput',
'fnmatch', 'fnmatch',
@@ -77,13 +81,14 @@ standard_library = [
'importlib', 'importlib',
'inspect', 'inspect',
'io', 'io',
'ipaddress',
'json', 'json',
'keyword', 'keyword',
'lib2to3', 'lib2to3',
'linecache', 'linecache',
'locale', 'locale',
'logging', 'logging',
'macpath', 'lzma',
'mailbox', 'mailbox',
'mailcap', 'mailcap',
'mimetypes', 'mimetypes',
@@ -98,6 +103,7 @@ standard_library = [
'operator', 'operator',
'optparse', 'optparse',
'os', 'os',
'pathlib',
'pdb', 'pdb',
'pickle', 'pickle',
'pickletools', 'pickletools',
@@ -124,6 +130,8 @@ standard_library = [
'rlcompleter', 'rlcompleter',
'runpy', 'runpy',
'sched', 'sched',
'secrets',
'selectors',
'shelve', 'shelve',
'shlex', 'shlex',
'shutil', 'shutil',
@@ -141,6 +149,7 @@ standard_library = [
'ssl', 'ssl',
'_ssl', '_ssl',
'stat', 'stat',
'statistics',
'string', 'string',
'stringprep', 'stringprep',
'struct', 'struct',
@@ -163,14 +172,17 @@ standard_library = [
'tokenize', 'tokenize',
'trace', 'trace',
'traceback', 'traceback',
'tracemalloc',
'tty', 'tty',
'turtle', 'turtle',
'turtledemo', 'turtledemo',
'types', 'types',
'typing',
'unittest', 'unittest',
'urllib', 'urllib',
'uu', 'uu',
'uuid', 'uuid',
'venv',
'warnings', 'warnings',
'wave', 'wave',
'weakref', 'weakref',
@@ -179,83 +191,12 @@ standard_library = [
'xdrlib', 'xdrlib',
'xml', 'xml',
'xmlrpc', 'xmlrpc',
'zipapp',
'zipfile' 'zipfile'
] ]
# Modules that had different names in Python 2
if sys.version_info.major == 2:
def replace(lst, old, new):
lst[lst.index(old)] = new
# Keys are the Python 2 names
# Values are the Python 3 names
renames = {
'ConfigParser': 'configparser',
'copy_reg': 'copyreg',
'HTMLParser': 'html',
'httplib': 'http',
'Queue': 'queue',
'repr': 'reprlib',
'SocketServer': 'socketserver',
'xmlrpclib': 'xmlrpc',
'Tkinter': 'tkinter'
}
# All of the Python 3 names should be in the list
for python2name, python3name in renames.items():
replace(standard_library, python3name, python2name)
# Add new modules # Add new modules
# See https://docs.python.org/3/whatsnew/index.html # See https://docs.python.org/3/whatsnew/index.html
if sys.version_info >= (3, 2):
standard_library.extend([
'concurrent',
])
if sys.version_info >= (3, 3):
standard_library.extend([
'ipaddress',
'faulthandler',
'lzma',
'venv',
])
if sys.version_info >= (3, 4):
standard_library.extend([
'asyncio',
'ensurepip',
'enum',
'pathlib',
'selectors',
'statistics',
'tracemalloc',
])
if sys.version_info >= (3, 5):
standard_library.extend([
'typing',
'zipapp',
])
if sys.version_info >= (3, 6):
standard_library.extend([
'secrets',
])
if sys.version_info >= (3, 7):
standard_library.extend([
'contextvars',
'dataclasses',
])
# 'macpath' module has been removed from Python 3.8
if sys.version_info > (3, 7):
standard_library.remove('macpath')
# 'dummy_threading' module has been removed from Python 3.9
if sys.version_info > (3, 8):
standard_library.remove('dummy_threading')
# 'symbol' and 'formatter' modules have been removed from Python 3.10 # 'symbol' and 'formatter' modules have been removed from Python 3.10
if sys.version_info >= (3, 10): if sys.version_info >= (3, 10):
standard_library.remove('symbol') standard_library.remove('symbol')
@@ -295,6 +236,17 @@ if sys.version_info >= (3, 13):
standard_library.remove('uu') standard_library.remove('uu')
standard_library.remove('xdrlib') standard_library.remove('xdrlib')
if sys.version_info >= (3, 14):
standard_library.extend([
'annotationlib',
])
# https://docs.python.org/3.15/whatsnew/3.15.html
if sys.version_info >= (3, 15):
standard_library.remove('sre_compile')
standard_library.remove('sre_constants')
standard_library.remove('sre_parse')
# Remove tkinter and Easter eggs # Remove tkinter and Easter eggs
excluded_modules = [ excluded_modules = [
'antigravity', 'antigravity',

View File

@@ -1,9 +1,5 @@
import sys import sys
from urllib.request import urlopen
if sys.version_info[0] == 2:
from urllib2 import urlopen
else:
from urllib.request import urlopen
response = urlopen("https://raw.githubusercontent.com/actions/python-versions/c641695f6a07526c18f10e374e503e649fef9427/.gitignore") response = urlopen("https://raw.githubusercontent.com/actions/python-versions/c641695f6a07526c18f10e374e503e649fef9427/.gitignore")
data = response.read() data = response.read()

File diff suppressed because it is too large Load Diff