Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-greenlet for openSUSE:Factory 
checked in at 2026-02-01 22:01:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-greenlet (Old)
 and      /work/SRC/openSUSE:Factory/.python-greenlet.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-greenlet"

Sun Feb  1 22:01:51 2026 rev:57 rq:1329991 version:3.3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-greenlet/python-greenlet.changes  
2025-12-10 15:30:55.219238144 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-greenlet.new.1995/python-greenlet.changes    
    2026-02-01 22:02:32.401284113 +0100
@@ -1,0 +2,16 @@
+Thu Jan 29 08:40:10 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 3.3.1
+  * Publish Windows ARM binary wheels, where available.
+  * Fix compilation for 3.14t on Windows.
+  * Publish Windows 3.14t binary wheels for Intel.
+  * Switch from Appveyor for Windows to Github Actions.
+  * Fix compilation on MIPS with GCC 15 and binutils 2.45.
+    See PR 487 by Rosen Penev. Note that this is not a
+    platform tested by this project’s CI.
+  * Move most project metadata into the static pyproject.toml
+    file. This updates licensing information to use the modern
+    License-Expression field. See PR 480 by mrbean-bremen.
+- Update BuildRequires from pyproject.toml
+
+-------------------------------------------------------------------

Old:
----
  greenlet-3.3.0.tar.gz

New:
----
  greenlet-3.3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-greenlet.spec ++++++
--- /var/tmp/diff_new_pack.CXbutd/_old  2026-02-01 22:02:33.161315824 +0100
+++ /var/tmp/diff_new_pack.CXbutd/_new  2026-02-01 22:02:33.165315991 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-greenlet
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2010 B1 Systems GmbH, Vohburg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
@@ -22,7 +22,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-greenlet
-Version:        3.3.0
+Version:        3.3.1
 Release:        0
 Summary:        Lightweight in-process concurrent programming
 License:        MIT
@@ -30,11 +30,11 @@
 URL:            https://github.com/python-greenlet/greenlet
 Source0:        
https://files.pythonhosted.org/packages/source/g/greenlet/greenlet-%{version}.tar.gz
 Source9:        python-greenlet-rpmlintrc
-BuildRequires:  %{python_module devel >= 3.7}
+BuildRequires:  %{python_module devel >= 3.10}
 BuildRequires:  %{python_module objgraph}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module psutil}
-BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module setuptools >= 77.0.3}
 BuildRequires:  %{python_module wheel}
 %if 0%{?suse_version} < 1600
 BuildRequires:  gcc12

++++++ greenlet-3.3.0.tar.gz -> greenlet-3.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/.github/workflows/tests.yml 
new/greenlet-3.3.1/.github/workflows/tests.yml
--- old/greenlet-3.3.0/.github/workflows/tests.yml      2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/.github/workflows/tests.yml      2026-01-23 
16:28:32.000000000 +0100
@@ -30,13 +30,22 @@
           - "3.14"
           - "3.14t"
 
-        # Recall the macOS builds upload built wheels so all supported versions
+        # Recall the macOS and windows builds upload built wheels so all 
supported versions
         # need to run on mac.
         os:
           - ubuntu-latest
           - macos-latest
+          - windows-latest
+          - windows-11-arm
+        exclude:
+          # 3.10 not available for windows arm
+          - os: windows-11-arm
+            python-version: "3.10"
+          # 3.14t not available for windows arm
+          - os: windows-11-arm
+            python-version: "3.14t"
     steps:
-    - uses: actions/checkout@v5
+    - uses: actions/checkout@v6
     - name: Set up Python
       uses: actions/setup-python@v6
       with:
@@ -90,13 +99,14 @@
         ARCHFLAGS: "-arch x86_64 -arch arm64"
 
     - name: Check greenlet build
+      if: ${{ ! startsWith(runner.os, 'Windows') }}
       run: |
         ls -l dist
         twine check dist/*
     - name: Store greenlet wheel
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v6
       with:
-        name: greenlet-${{ runner.os }}-${{ matrix.python-version }}.whl
+        name: greenlet-${{ matrix.os }}-${{ matrix.python-version }}.whl
         path: dist/*whl
     - name: Test
       run: |
@@ -132,7 +142,7 @@
       # We cannot 'uses: pypa/[email protected]' because
       # that's apparently a container action, and those don't run on
       # the Mac.
-      if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') 
&& startsWith(runner.os, 'Mac')
+      if: ${{ github.event_name == 'push' && startsWith(github.ref, 
'refs/tags') && (startsWith(runner.os, 'Mac') || startsWith(runner.os, 
'Windows')) }}
       env:
         TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
       run: |
@@ -144,7 +154,7 @@
       # required for all workflows
       security-events: write
     steps:
-      - uses: actions/checkout@v5
+      - uses: actions/checkout@v6
       - name: Set up Python
         uses: actions/setup-python@v6
         with:
@@ -157,7 +167,7 @@
           python -m pip install -U setuptools wheel
       # Initializes the CodeQL tools for scanning.
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@v3
+        uses: github/codeql-action/init@v4
         with:
           languages: python, cpp
       - name: Install greenlet
@@ -166,14 +176,14 @@
       # - name: Autobuild
       #   uses: github/codeql-action/autobuild@v1
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@v3
+        uses: github/codeql-action/analyze@v4
 
   riscv64:
     runs-on: ubuntu-latest
     name: RiscV 64
     steps:
       - name: checkout
-        uses: actions/checkout@v5
+        uses: actions/checkout@v6
       - name: Set up Python
         uses: actions/setup-python@v6
         with:
@@ -206,7 +216,7 @@
 
     steps:
       - name: checkout
-        uses: actions/checkout@v5
+        uses: actions/checkout@v6
       - name: Set up Python ${{ matrix.python-version }}
         uses: actions/setup-python@v6
         with:
@@ -220,7 +230,7 @@
           DOCKER_IMAGE: quay.io/pypa/${{ matrix.image }}
         run: bash ./make-manylinux
       - name: Store greenlet wheels
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v6
         with:
           path: wheelhouse/*whl
           name: ${{ matrix.image }}_wheels.zip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/.pylintrc new/greenlet-3.3.1/.pylintrc
--- old/greenlet-3.3.0/.pylintrc        2025-12-04 15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/.pylintrc        2026-01-23 16:28:32.000000000 +0100
@@ -166,7 +166,6 @@
 enable=consider-using-augmented-assign
 
 [FORMAT]
-# duplicated from setup.cfg
 max-line-length=160
 max-module-lines=1100
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/CHANGES.rst 
new/greenlet-3.3.1/CHANGES.rst
--- old/greenlet-3.3.0/CHANGES.rst      2025-12-04 15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/CHANGES.rst      2026-01-23 16:28:32.000000000 +0100
@@ -2,6 +2,22 @@
  Changes
 =========
 
+3.3.1 (2026-01-23)
+==================
+
+- Publish Windows ARM binary wheels, where available.
+- Fix compilation for 3.14t on Windows.
+- Publish Windows 3.14t binary wheels for Intel.
+- Switch from Appveyor for Windows to Github Actions.
+- Fix compilation on MIPS with GCC 15 and binutils 2.45. See `PR 487
+  by Rosen Penev
+  <https://github.com/python-greenlet/greenlet/pull/487>`_. Note that
+  this is not a platform tested by this project's CI.
+- Move most project metadata into the static ``pyproject.toml`` file.
+  This updates licensing information to use the modern
+  ``License-Expression`` field. See `PR 480 by mrbean-bremen
+  <https://github.com/python-greenlet/greenlet/pull/480/>`_.
+
 3.3.0 (2025-12-04)
 ==================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/PKG-INFO new/greenlet-3.3.1/PKG-INFO
--- old/greenlet-3.3.0/PKG-INFO 2025-12-04 15:19:48.997744800 +0100
+++ new/greenlet-3.3.1/PKG-INFO 2026-01-23 16:28:35.766325700 +0100
@@ -1,26 +1,22 @@
 Metadata-Version: 2.4
 Name: greenlet
-Version: 3.3.0
+Version: 3.3.1
 Summary: Lightweight in-process concurrent programming
-Home-page: https://greenlet.readthedocs.io/
-Author: Alexey Borzenkov
-Author-email: [email protected]
-Maintainer: Jason Madden
-Maintainer-email: [email protected]
-License: MIT AND Python-2.0
-Project-URL: Bug Tracker, https://github.com/python-greenlet/greenlet/issues
-Project-URL: Source Code, https://github.com/python-greenlet/greenlet/
-Project-URL: Documentation, https://greenlet.readthedocs.io/
-Project-URL: Changes, https://greenlet.readthedocs.io/en/latest/changes.html
-Keywords: greenlet coroutine concurrency threads cooperative
-Platform: any
+Author-email: Alexey Borzenkov <[email protected]>
+Maintainer-email: Jason Madden <[email protected]>
+License-Expression: MIT AND Python-2.0
+Project-URL: Homepage, https://greenlet.readthedocs.io
+Project-URL: Documentation, https://greenlet.readthedocs.io
+Project-URL: Repository, https://github.com/python-greenlet/greenlet
+Project-URL: Issues, https://github.com/python-greenlet/greenlet/issues
+Project-URL: Changelog, https://greenlet.readthedocs.io/en/latest/changes.html
+Keywords: greenlet,coroutine,concurrency,threads,cooperative
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: Natural Language :: English
 Classifier: Programming Language :: C
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
@@ -39,22 +35,7 @@
 Requires-Dist: objgraph; extra == "test"
 Requires-Dist: psutil; extra == "test"
 Requires-Dist: setuptools; extra == "test"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: keywords
-Dynamic: license
 Dynamic: license-file
-Dynamic: maintainer
-Dynamic: maintainer-email
-Dynamic: platform
-Dynamic: project-url
-Dynamic: provides-extra
-Dynamic: requires-python
-Dynamic: summary
 
 .. This file is included into docs/history.rst
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/appveyor/install.ps1 
new/greenlet-3.3.1/appveyor/install.ps1
--- old/greenlet-3.3.0/appveyor/install.ps1     2025-12-04 15:19:40.000000000 
+0100
+++ new/greenlet-3.3.1/appveyor/install.ps1     1970-01-01 01:00:00.000000000 
+0100
@@ -1,229 +0,0 @@
-# Sample script to install Python and pip under Windows
-# Authors: Olivier Grisel, Jonathan Helmus, Kyle Kastner, and Alex Willmer
-# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
-
-$MINICONDA_URL = "http://repo.continuum.io/miniconda/";
-$BASE_URL = "https://www.python.org/ftp/python/";
-$GET_PIP_URL = "https://bootstrap.pypa.io/get-pip.py";
-$GET_PIP_PATH = "C:\get-pip.py"
-
-$PYTHON_PRERELEASE_REGEX = @"
-(?x)
-(?<major>\d+)
-\.
-(?<minor>\d+)
-\.
-(?<micro>\d+)
-(?<prerelease>[a-z]{1,2}\d+)
-"@
-
-
-function Download ($filename, $url) {
-    $webclient = New-Object System.Net.WebClient
-
-    $basedir = $pwd.Path + "\"
-    $filepath = $basedir + $filename
-    if (Test-Path $filename) {
-        Write-Host "Reusing" $filepath
-        return $filepath
-    }
-
-    # Download and retry up to 3 times in case of network transient errors.
-    Write-Host "Downloading" $filename "from" $url
-    $retry_attempts = 2
-    for ($i = 0; $i -lt $retry_attempts; $i++) {
-        try {
-            $webclient.DownloadFile($url, $filepath)
-            break
-        }
-        Catch [Exception]{
-            Start-Sleep 1
-        }
-    }
-    if (Test-Path $filepath) {
-        Write-Host "File saved at" $filepath
-    } else {
-        # Retry once to get the error message if any at the last try
-        $webclient.DownloadFile($url, $filepath)
-    }
-    return $filepath
-}
-
-
-function ParsePythonVersion ($python_version) {
-    if ($python_version -match $PYTHON_PRERELEASE_REGEX) {
-        return ([int]$matches.major, [int]$matches.minor, [int]$matches.micro,
-                $matches.prerelease)
-    }
-    $version_obj = [version]$python_version
-    return ($version_obj.major, $version_obj.minor, $version_obj.build, "")
-}
-
-
-function DownloadPython ($python_version, $platform_suffix) {
-    $major, $minor, $micro, $prerelease = ParsePythonVersion $python_version
-
-    if (($major -le 2 -and $micro -eq 0) `
-        -or ($major -eq 3 -and $minor -le 2 -and $micro -eq 0) `
-        ) {
-        $dir = "$major.$minor"
-        $python_version = "$major.$minor$prerelease"
-    } else {
-        $dir = "$major.$minor.$micro"
-    }
-
-    if ($prerelease) {
-        if (($major -le 2) `
-            -or ($major -eq 3 -and $minor -eq 1) `
-            -or ($major -eq 3 -and $minor -eq 2) `
-            -or ($major -eq 3 -and $minor -eq 3) `
-            ) {
-            $dir = "$dir/prev"
-        }
-    }
-
-    if (($major -le 2) -or ($major -le 3 -and $minor -le 4)) {
-        $ext = "msi"
-        if ($platform_suffix) {
-            $platform_suffix = ".$platform_suffix"
-        }
-    } else {
-        $ext = "exe"
-        if ($platform_suffix) {
-            $platform_suffix = "-$platform_suffix"
-        }
-    }
-
-    $filename = "python-$python_version$platform_suffix.$ext"
-    $url = "$BASE_URL$dir/$filename"
-    $filepath = Download $filename $url
-    return $filepath
-}
-
-
-function InstallPython ($python_version, $architecture, $python_home) {
-    Write-Host "Installing Python" $python_version "for" $architecture "bit 
architecture to" $python_home
-    if (Test-Path $python_home) {
-        Write-Host $python_home "already exists, skipping."
-        return $false
-    }
-    if ($architecture -eq "32") {
-        $platform_suffix = ""
-    } else {
-        $platform_suffix = "amd64"
-    }
-    $installer_path = DownloadPython $python_version $platform_suffix
-    $installer_ext = [System.IO.Path]::GetExtension($installer_path)
-    Write-Host "Installing $installer_path to $python_home"
-    $install_log = $python_home + ".log"
-    if ($installer_ext -eq '.msi') {
-        InstallPythonMSI $installer_path $python_home $install_log
-    } else {
-        InstallPythonEXE $installer_path $python_home $install_log
-    }
-    if (Test-Path $python_home) {
-        Write-Host "Python $python_version ($architecture) installation 
complete"
-    } else {
-        Write-Host "Failed to install Python in $python_home"
-        Get-Content -Path $install_log
-        Exit 1
-    }
-}
-
-
-function InstallPythonEXE ($exepath, $python_home, $install_log) {
-    $install_args = "/quiet InstallAllUsers=1 TargetDir=$python_home"
-    RunCommand $exepath $install_args
-}
-
-
-function InstallPythonMSI ($msipath, $python_home, $install_log) {
-    $install_args = "/qn /log $install_log /i $msipath TARGETDIR=$python_home"
-    $uninstall_args = "/qn /x $msipath"
-    RunCommand "msiexec.exe" $install_args
-    if (-not(Test-Path $python_home)) {
-        Write-Host "Python seems to be installed else-where, reinstalling."
-        RunCommand "msiexec.exe" $uninstall_args
-        RunCommand "msiexec.exe" $install_args
-    }
-}
-
-function RunCommand ($command, $command_args) {
-    Write-Host $command $command_args
-    Start-Process -FilePath $command -ArgumentList $command_args -Wait 
-Passthru
-}
-
-
-function InstallPip ($python_home) {
-    $pip_path = $python_home + "\Scripts\pip.exe"
-    $python_path = $python_home + "\python.exe"
-    if (-not(Test-Path $pip_path)) {
-        Write-Host "Installing pip..."
-        $webclient = New-Object System.Net.WebClient
-        $webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH)
-        Write-Host "Executing:" $python_path $GET_PIP_PATH
-        & $python_path $GET_PIP_PATH
-    } else {
-        Write-Host "pip already installed."
-    }
-}
-
-
-function DownloadMiniconda ($python_version, $platform_suffix) {
-    if ($python_version -eq "3.4") {
-        $filename = "Miniconda3-3.5.5-Windows-" + $platform_suffix + ".exe"
-    } else {
-        $filename = "Miniconda-3.5.5-Windows-" + $platform_suffix + ".exe"
-    }
-    $url = $MINICONDA_URL + $filename
-    $filepath = Download $filename $url
-    return $filepath
-}
-
-
-function InstallMiniconda ($python_version, $architecture, $python_home) {
-    Write-Host "Installing Python" $python_version "for" $architecture "bit 
architecture to" $python_home
-    if (Test-Path $python_home) {
-        Write-Host $python_home "already exists, skipping."
-        return $false
-    }
-    if ($architecture -eq "32") {
-        $platform_suffix = "x86"
-    } else {
-        $platform_suffix = "x86_64"
-    }
-    $filepath = DownloadMiniconda $python_version $platform_suffix
-    Write-Host "Installing" $filepath "to" $python_home
-    $install_log = $python_home + ".log"
-    $args = "/S /D=$python_home"
-    Write-Host $filepath $args
-    Start-Process -FilePath $filepath -ArgumentList $args -Wait -Passthru
-    if (Test-Path $python_home) {
-        Write-Host "Python $python_version ($architecture) installation 
complete"
-    } else {
-        Write-Host "Failed to install Python in $python_home"
-        Get-Content -Path $install_log
-        Exit 1
-    }
-}
-
-
-function InstallMinicondaPip ($python_home) {
-    $pip_path = $python_home + "\Scripts\pip.exe"
-    $conda_path = $python_home + "\Scripts\conda.exe"
-    if (-not(Test-Path $pip_path)) {
-        Write-Host "Installing pip..."
-        $args = "install --yes pip"
-        Write-Host $conda_path $args
-        Start-Process -FilePath "$conda_path" -ArgumentList $args -Wait 
-Passthru
-    } else {
-        Write-Host "pip already installed."
-    }
-}
-
-function main () {
-    InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON
-    InstallPip $env:PYTHON
-}
-
-main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/appveyor/run_with_env.cmd 
new/greenlet-3.3.1/appveyor/run_with_env.cmd
--- old/greenlet-3.3.0/appveyor/run_with_env.cmd        2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/appveyor/run_with_env.cmd        1970-01-01 
01:00:00.000000000 +0100
@@ -1,88 +0,0 @@
-:: To build extensions for 64 bit Python 3, we need to configure environment
-:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
-:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
-::
-:: To build extensions for 64 bit Python 2, we need to configure environment
-:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
-:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
-::
-:: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
-:: environment configurations.
-::
-:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
-:: cmd interpreter, at least for (SDK v7.0)
-::
-:: More details at:
-:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
-:: http://stackoverflow.com/a/13751649/163740
-::
-:: Author: Olivier Grisel
-:: License: CC0 1.0 Universal: 
http://creativecommons.org/publicdomain/zero/1.0/
-::
-:: Notes about batch files for Python people:
-::
-:: Quotes in values are literally part of the values:
-::      SET FOO="bar"
-:: FOO is now five characters long: " b a r "
-:: If you don't want quotes, don't include them on the right-hand side.
-::
-:: The CALL lines at the end of this file look redundant, but if you move them
-:: outside of the IF clauses, they do not run properly in the SET_SDK_64==Y
-:: case, I don't know why.
-@ECHO OFF
-
-SET COMMAND_TO_RUN=%*
-SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
-SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
-
-:: Extract the major and minor versions, and allow for the minor version to be
-:: more than 9.  This requires the version number to have two dots in it.
-SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
-IF "%PYTHON_VERSION:~3,1%" == "." (
-    SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
-) ELSE (
-    SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
-)
-
-:: Based on the Python version, determine what SDK version to use, and whether
-:: to set the SDK for 64-bit.
-IF %MAJOR_PYTHON_VERSION% == 2 (
-    SET WINDOWS_SDK_VERSION="v7.0"
-    SET SET_SDK_64=Y
-) ELSE (
-    IF %MAJOR_PYTHON_VERSION% == 3 (
-        SET WINDOWS_SDK_VERSION="v7.1"
-        IF %MINOR_PYTHON_VERSION% LEQ 4 (
-            SET SET_SDK_64=Y
-        ) ELSE (
-            SET SET_SDK_64=N
-            IF EXIST "%WIN_WDK%" (
-                :: See: 
https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
-                REN "%WIN_WDK%" 0wdf
-            )
-        )
-    ) ELSE (
-        ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
-        EXIT 1
-    )
-)
-
-IF %PYTHON_ARCH% == 64 (
-    IF %SET_SDK_64% == Y (
-        ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python 
%MAJOR_PYTHON_VERSION% on a 64 bit architecture
-        SET DISTUTILS_USE_SDK=1
-        SET MSSdk=1
-        "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q 
-version:%WINDOWS_SDK_VERSION%
-        "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
-        ECHO Executing: %COMMAND_TO_RUN%
-        call %COMMAND_TO_RUN% || EXIT 1
-    ) ELSE (
-        ECHO Using default MSVC build environment for 64 bit architecture
-        ECHO Executing: %COMMAND_TO_RUN%
-        call %COMMAND_TO_RUN% || EXIT 1
-    )
-) ELSE (
-    ECHO Using default MSVC build environment for 32 bit architecture
-    ECHO Executing: %COMMAND_TO_RUN%
-    call %COMMAND_TO_RUN% || EXIT 1
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/appveyor.yml 
new/greenlet-3.3.1/appveyor.yml
--- old/greenlet-3.3.0/appveyor.yml     2025-12-04 15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/appveyor.yml     1970-01-01 01:00:00.000000000 +0100
@@ -1,165 +0,0 @@
-clone_depth: 50
-max_jobs: 8
-shallow_clone: true
-build:
-  parallel: true
-  verbosity: minimal
-
-image: Visual Studio 2022
-
-environment:
-  global:
-    APPVEYOR_SAVE_CACHE_ON_ERROR: "true"
-    # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
-    # /E:ON and /V:ON options are not enabled in the batch script interpreter
-    # See: http://stackoverflow.com/a/13751649/163740
-    CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd"
-    # Use a fixed hash seed for reproducibility
-    PYTHONHASHSEED: 8675309
-    PYTHONDEVMODE: 1
-    PYTHONFAULTHANDLER: 1
-    PYTHONUNBUFFERED: 1
-    # Try to avoid pulling in the C runtime, as some users won't have the
-    # right package.
-    GREENLET_STATIC_RUNTIME: "1"
-    # Don't get warnings about Python 2 support being deprecated. We
-    # know.
-    PIP_NO_PYTHON_VERSION_WARNING: 1
-    PIP_UPGRADE_STRATEGY: eager
-    # Enable this if debugging a resource leak. Otherwise
-    # it slows things down.
-    # PYTHONTRACEMALLOC: 10
-    # Upload settings for twine.
-    TWINE_USERNAME: "__token__"
-    TWINE_PASSWORD:
-      secure: 
9JKBIB2o2S18+REaEqzUrP/1g08eRdX3eEa7D/BBN5ae0XHTlrPqbvRTNJceiUa/o3r4bejFF3o0xA69ueMd+09PGKAAAfpQnwnQPInuLVkOq3mprNk4wW0GyWLFzI3WqZhYnWH7PZtmG4Kr7mNOyd6Qdi773kN3Hn7CNhvk+ik/K3zbsGerb2YYloM/KIQSJbgdEqNcIIItoqrZzg/cqiM/47Pz7ZzcGDvevD8Nx/0lVGqFVJnj8cMevwa9iDPYn7fB59Y1GEEbtBjenrWr1Q==
-
-  matrix:
-    # http://www.appveyor.com/docs/installed-software#python
-
-    # Fully supported 64-bit versions, with testing. This should be
-    # all the current (non EOL) versions.
-    # NOTE: As of 3.14.0, CPython doesn't distribute
-    # free-threaded builds, so we have no way to create those.
-    - PYTHON: "C:\\Python314-x64"
-      PYTHON_VERSION: "3.14.0"
-      PYTHON_ARCH: "64"
-      PYTHON_EXE: python
-
-    - PYTHON: "C:\\Python313-x64"
-      PYTHON_VERSION: "3.13.0"
-      PYTHON_ARCH: "64"
-      PYTHON_EXE: python
-
-
-    - PYTHON: "C:\\Python312-x64"
-      PYTHON_VERSION: "3.12.0"
-      PYTHON_ARCH: "64"
-      PYTHON_EXE: python
-
-
-    - PYTHON: "C:\\Python311-x64"
-      PYTHON_VERSION: "3.11.0"
-      PYTHON_ARCH: "64"
-      PYTHON_EXE: python
-
-
-    - PYTHON: "C:\\Python310-x64"
-      PYTHON_VERSION: "3.10.0"
-      PYTHON_ARCH: "64"
-      PYTHON_EXE: python
-
-
-    # Untested 64-bit versions. We don't expect any variance here from
-    # the other tested 64-bit versions, OR they are very EOL
-
-    # None right now.
-
-    # Untested 32-bit versions. As above, we don't expect any variance
-    # from the tested 32-bit versions, OR they are very EOL.
-
-    # None right now.
-
-
-
-cache:
-  - "%TMP%\\py\\"
-  - '%LOCALAPPDATA%\pip\Cache -> appveyor.yml,setup.py'
-
-install:
-  # If there is a newer build queued for the same PR, cancel this one.
-  # The AppVeyor 'rollout builds' option is supposed to serve the same
-  # purpose but it is problematic because it tends to cancel builds pushed
-  # directly to master instead of just PR builds (or the converse).
-  # credits: JuliaLang developers.
-  - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER 
-ne ((Invoke-RestMethod `
-        
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds
 | `
-        Where-Object pullRequestId -eq 
$env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
-          throw "There are newer queued builds for this pull request, failing 
early." }
-  ## Debugging
-  - ECHO "Filesystem root:"
-  - ps: "ls \"C:/\""
-
-  # - ECHO "Installed SDKs:"
-  # - ps: "if(Test-Path(\"C:/Program Files/Microsoft SDKs/Windows\")) {ls 
\"C:/Program Files/Microsoft SDKs/Windows\";}"
-
-  # Install Python (from the official .msi of http://python.org) and pip when
-  # not already installed.
-  # PyPy portion based on 
https://github.com/wbond/asn1crypto/blob/master/appveyor.yml
-  - ps:
-      $env:PYTMP = "${env:TMP}\py";
-      if (!(Test-Path "$env:PYTMP")) {
-        New-Item -ItemType directory -Path "$env:PYTMP" | Out-Null;
-      }
-      if ("${env:PYTHON_ID}" -eq "pypy") {
-        if (!(Test-Path "${env:PYTMP}\pypy2-v7.3.1-win32.zip")) {
-          (New-Object 
Net.WebClient).DownloadFile('https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.1-win32.zip',
 "${env:PYTMP}\pypy2-v7.3.1-win32.zip");
-        }
-        7z x -y "${env:PYTMP}\pypy2-v7.3.1-win32.zip" -oC:\ | Out-Null;
-      }
-      elseif (-not(Test-Path($env:PYTHON))) {
-        & appveyor\install.ps1;
-      }
-
-  - ps: "ls \"${env:PYTHON}\""
-  # Prepend newly installed Python to the PATH of this build (this cannot be
-  # done from inside the powershell script as it would require to restart
-  # the parent CMD process).
-  - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON%\\bin;%PATH%"
-  - "SET PYEXE=%PYTHON%\\%PYTHON_EXE%.exe"
-
-  - "python --version"
-  - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
-
-  # Upgrade to the latest version of pip to avoid it displaying warnings
-  # about it being out of date. Do this here instead of above in
-  # powershell because the annoying 'DEPRECATION:blahblahblah 2.7 blahblahblah'
-  # breaks powershell.
-  - "%CMD_IN_ENV% %PYEXE% -mensurepip -U --user"
-  - "%CMD_IN_ENV% %PYEXE% -mpip install -U --user pip"
-
-  # Install requirements for running tests and building artifacts
-  - "%CMD_IN_ENV% pip install --upgrade -r dev-requirements.txt"
-
-build_script:
-# Show any compiler warnings.
-  - "%CMD_IN_ENV% python setup.py build_ext"
-  - "%CMD_IN_ENV% python -m pip install -U -e .[test,docs]"
-  - "%CMD_IN_ENV% python -m pip install -U zope.testrunner"
-
-
-test_script:
-  -  if not "%GWHEEL_ONLY%"=="true" %PYEXE% -m zope.testrunner --test-path=src 
-vvv
-# XXX: Doctest disabled pending sphinx release for 3.10; see tests.yml.
-#  - "%CMD_IN_ENV% python -m sphinx -b doctest -d docs/_build/doctrees docs 
docs/_build/doctest"
-
-after_test:
-  - "%CMD_IN_ENV% python -mpip wheel --wheel-dir dist ."
-
-artifacts:
-  - path: dist\*
-
-deploy_script:
-  - ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine 
upload --skip-existing dist/* }
-
-deploy: on
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/pyproject.toml 
new/greenlet-3.3.1/pyproject.toml
--- old/greenlet-3.3.0/pyproject.toml   2025-12-04 15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/pyproject.toml   2026-01-23 16:28:32.000000000 +0100
@@ -1,5 +1,70 @@
 [build-system]
 build-backend = "setuptools.build_meta"
 requires = [
-     "setuptools >= 40.8.0"
+     "setuptools >= 77.0.3"
 ]
+
+[project]
+name = "greenlet"
+description = "Lightweight in-process concurrent programming"
+readme = "README.rst"
+authors = [
+    { name = "Alexey Borzenkov", email = "[email protected]" },
+]
+maintainers = [
+    { name = "Jason Madden", email = "[email protected]" }
+]
+license = "MIT AND Python-2.0"
+license-files = [
+    'LICENSE',
+    'LICENSE.PSF',
+]
+classifiers = [
+    "Development Status :: 5 - Production/Stable",
+    "Intended Audience :: Developers",
+    "Natural Language :: English",
+    "Programming Language :: C",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
+    "Operating System :: OS Independent",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+]
+keywords = [
+    "greenlet",
+    "coroutine",
+    "concurrency",
+    "threads",
+    "cooperative",
+]
+requires-python = ">=3.10"
+dynamic = ["version"]
+
+[project.urls]
+Homepage = "https://greenlet.readthedocs.io";
+Documentation = "https://greenlet.readthedocs.io";
+Repository = "https://github.com/python-greenlet/greenlet";
+Issues = "https://github.com/python-greenlet/greenlet/issues";
+Changelog = "https://greenlet.readthedocs.io/en/latest/changes.html";
+
+[project.optional-dependencies]
+docs = [
+    "Sphinx",
+    "furo",
+]
+test = [
+    "objgraph",
+    "psutil",
+    "setuptools",
+]
+
+[tool.setuptools.dynamic]
+version = {attr = "greenlet.__version__"}
+
+[tool.zest-releaser]
+python-file-with-version = "src/greenlet/__init__.py"
+create-wheel = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/setup.cfg new/greenlet-3.3.1/setup.cfg
--- old/greenlet-3.3.0/setup.cfg        2025-12-04 15:19:48.998282700 +0100
+++ new/greenlet-3.3.1/setup.cfg        2026-01-23 16:28:35.766556500 +0100
@@ -1,7 +1,3 @@
-[zest.releaser]
-python-file-with-version = src/greenlet/__init__.py
-create-wheel = no
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/setup.py new/greenlet-3.3.1/setup.py
--- old/greenlet-3.3.0/setup.py 2025-12-04 15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/setup.py 2026-01-23 16:28:32.000000000 +0100
@@ -114,10 +114,6 @@
     # this:
     cpp_compile_args.append('/std:c++20')
 
-def readfile(filename):
-    with open(filename, 'r') as f: # pylint:disable=unspecified-encoding
-        return f.read()
-
 GREENLET_SRC_DIR = 'src/greenlet/'
 GREENLET_HEADER_DIR = GREENLET_SRC_DIR
 GREENLET_HEADER = GREENLET_HEADER_DIR + 'greenlet.h'
@@ -197,72 +193,9 @@
     ]
 
 
-def get_greenlet_version():
-    with open('src/greenlet/__init__.py') as f: # 
pylint:disable=unspecified-encoding
-        looking_for = '__version__ = \''
-        for line in f:
-            if line.startswith(looking_for):
-                version = line[len(looking_for):-2]
-                return version
-    raise ValueError("Unable to find version")
-
-
 setup(
-    name="greenlet",
-    version=get_greenlet_version(),
-    description='Lightweight in-process concurrent programming',
-    long_description=readfile("README.rst"),
-    long_description_content_type="text/x-rst",
-    url="https://greenlet.readthedocs.io/";,
-    keywords="greenlet coroutine concurrency threads cooperative",
-    author="Alexey Borzenkov",
-    author_email="[email protected]",
-    maintainer='Jason Madden',
-    maintainer_email='[email protected]',
-    project_urls={
-        'Bug Tracker': 'https://github.com/python-greenlet/greenlet/issues',
-        'Source Code': 'https://github.com/python-greenlet/greenlet/',
-        'Documentation': 'https://greenlet.readthedocs.io/',
-        'Changes': 'https://greenlet.readthedocs.io/en/latest/changes.html',
-    },
-    license="MIT AND Python-2.0",
-    license_files=[
-        'LICENSE',
-        'LICENSE.PSF',
-    ],
-    platforms=['any'],
     package_dir={'': 'src'},
     packages=find_packages('src'),
-    include_package_data=True,
     headers=headers,
     ext_modules=ext_modules,
-    classifiers=[
-        "Development Status :: 5 - Production/Stable",
-        'Intended Audience :: Developers',
-        'Natural Language :: English',
-        'Programming Language :: C',
-        'Programming Language :: Python',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3 :: Only',
-        'Programming Language :: Python :: 3.10',
-        'Programming Language :: Python :: 3.11',
-        'Programming Language :: Python :: 3.12',
-        'Programming Language :: Python :: 3.13',
-        'Programming Language :: Python :: 3.14',
-        'Operating System :: OS Independent',
-        'Topic :: Software Development :: Libraries :: Python Modules'
-    ],
-    extras_require={
-        'docs': [
-            'Sphinx',
-            'furo',
-        ],
-        'test': [
-            'objgraph',
-            'psutil',
-            'setuptools',
-        ],
-    },
-    python_requires=">=3.10",
-    zip_safe=False,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet/TGreenlet.cpp 
new/greenlet-3.3.1/src/greenlet/TGreenlet.cpp
--- old/greenlet-3.3.0/src/greenlet/TGreenlet.cpp       2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet/TGreenlet.cpp       2026-01-23 
16:28:32.000000000 +0100
@@ -633,7 +633,13 @@
             // directly.  This is important since GetFrameObject might
             // lazily _create_ the frame object and we don't want the
             // interpreter to lose track of it.
+            //
+            #if !GREENLET_PY315
+            // This enum value was removed in
+            //    https://github.com/python/cpython/pull/141108
+
             assert(iframe_copy.owner != FRAME_OWNED_BY_CSTACK);
+            #endif
 
             // We really want to just write:
             //     PyFrameObject* frame = _PyFrame_GetFrameObject(iframe);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet/__init__.py 
new/greenlet-3.3.1/src/greenlet/__init__.py
--- old/greenlet-3.3.0/src/greenlet/__init__.py 2025-12-04 15:19:40.000000000 
+0100
+++ new/greenlet-3.3.1/src/greenlet/__init__.py 2026-01-23 16:28:32.000000000 
+0100
@@ -25,7 +25,7 @@
 ###
 # Metadata
 ###
-__version__ = '3.3.0'
+__version__ = '3.3.1'
 from ._greenlet import _C_API # pylint:disable=no-name-in-module
 
 ###
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/greenlet-3.3.0/src/greenlet/greenlet_cpython_compat.hpp 
new/greenlet-3.3.1/src/greenlet/greenlet_cpython_compat.hpp
--- old/greenlet-3.3.0/src/greenlet/greenlet_cpython_compat.hpp 2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet/greenlet_cpython_compat.hpp 2026-01-23 
16:28:32.000000000 +0100
@@ -67,6 +67,12 @@
 #    define GREENLET_PY314 0
 #endif
 
+#if PY_VERSION_HEX >= 0x30F0000
+#    define GREENLET_PY315 1
+#else
+#    define GREENLET_PY315 0
+#endif
+
 #ifndef Py_SET_REFCNT
 /* Py_REFCNT and Py_SIZE macros are converted to functions
 https://bugs.python.org/issue39573 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet/greenlet_msvc_compat.hpp 
new/greenlet-3.3.1/src/greenlet/greenlet_msvc_compat.hpp
--- old/greenlet-3.3.0/src/greenlet/greenlet_msvc_compat.hpp    2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet/greenlet_msvc_compat.hpp    2026-01-23 
16:28:32.000000000 +0100
@@ -32,6 +32,15 @@
 
 // pycore_code.h ----------------
 #define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
+
+#ifdef Py_GIL_DISABLED
+static inline _PyCodeArray *
+_PyCode_GetTLBCArray(PyCodeObject *co)
+{
+    return _Py_STATIC_CAST(_PyCodeArray *,
+                           _Py_atomic_load_ptr_acquire(&co->co_tlbc));
+}
+#endif
 // End pycore_code.h ----------
 
 // pycore_interpframe.h ----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/greenlet-3.3.0/src/greenlet/platform/switch_mips_unix.h 
new/greenlet-3.3.1/src/greenlet/platform/switch_mips_unix.h
--- old/greenlet-3.3.0/src/greenlet/platform/switch_mips_unix.h 2025-12-04 
15:19:40.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet/platform/switch_mips_unix.h 2026-01-23 
16:28:32.000000000 +0100
@@ -16,6 +16,7 @@
 
 #define REGS_TO_SAVE "$16", "$17", "$18", "$19", "$20", "$21", "$22", \
        "$23", "$30"
+__attribute__((nomips16))
 static int
 slp_switch(void)
 {
@@ -33,9 +34,9 @@
         SLP_SAVE_STATE(stackref, stsizediff);
         __asm__ __volatile__ (
 #ifdef __mips64
-            "daddu $29, %0\n"
+            "daddu $29, $29, %0\n"
 #else
-            "addu $29, %0\n"
+            "addu $29, $29, %0\n"
 #endif
             : /* no outputs */
             : "r" (stsizediff)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet.egg-info/PKG-INFO 
new/greenlet-3.3.1/src/greenlet.egg-info/PKG-INFO
--- old/greenlet-3.3.0/src/greenlet.egg-info/PKG-INFO   2025-12-04 
15:19:48.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet.egg-info/PKG-INFO   2026-01-23 
16:28:35.000000000 +0100
@@ -1,26 +1,22 @@
 Metadata-Version: 2.4
 Name: greenlet
-Version: 3.3.0
+Version: 3.3.1
 Summary: Lightweight in-process concurrent programming
-Home-page: https://greenlet.readthedocs.io/
-Author: Alexey Borzenkov
-Author-email: [email protected]
-Maintainer: Jason Madden
-Maintainer-email: [email protected]
-License: MIT AND Python-2.0
-Project-URL: Bug Tracker, https://github.com/python-greenlet/greenlet/issues
-Project-URL: Source Code, https://github.com/python-greenlet/greenlet/
-Project-URL: Documentation, https://greenlet.readthedocs.io/
-Project-URL: Changes, https://greenlet.readthedocs.io/en/latest/changes.html
-Keywords: greenlet coroutine concurrency threads cooperative
-Platform: any
+Author-email: Alexey Borzenkov <[email protected]>
+Maintainer-email: Jason Madden <[email protected]>
+License-Expression: MIT AND Python-2.0
+Project-URL: Homepage, https://greenlet.readthedocs.io
+Project-URL: Documentation, https://greenlet.readthedocs.io
+Project-URL: Repository, https://github.com/python-greenlet/greenlet
+Project-URL: Issues, https://github.com/python-greenlet/greenlet/issues
+Project-URL: Changelog, https://greenlet.readthedocs.io/en/latest/changes.html
+Keywords: greenlet,coroutine,concurrency,threads,cooperative
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: Natural Language :: English
 Classifier: Programming Language :: C
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
@@ -39,22 +35,7 @@
 Requires-Dist: objgraph; extra == "test"
 Requires-Dist: psutil; extra == "test"
 Requires-Dist: setuptools; extra == "test"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: keywords
-Dynamic: license
 Dynamic: license-file
-Dynamic: maintainer
-Dynamic: maintainer-email
-Dynamic: platform
-Dynamic: project-url
-Dynamic: provides-extra
-Dynamic: requires-python
-Dynamic: summary
 
 .. This file is included into docs/history.rst
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet.egg-info/SOURCES.txt 
new/greenlet-3.3.1/src/greenlet.egg-info/SOURCES.txt
--- old/greenlet-3.3.0/src/greenlet.egg-info/SOURCES.txt        2025-12-04 
15:19:48.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet.egg-info/SOURCES.txt        2026-01-23 
16:28:35.000000000 +0100
@@ -7,18 +7,14 @@
 LICENSE.PSF
 MANIFEST.in
 README.rst
-appveyor.yml
 dev-requirements.txt
 make-manylinux
 pyproject.toml
-setup.cfg
 setup.py
 tox.ini
 ubuntu-test
 .github/dependabot.yml
 .github/workflows/tests.yml
-appveyor/install.ps1
-appveyor/run_with_env.cmd
 benchmarks/chain.py
 docs/Makefile
 docs/api.rst
@@ -72,7 +68,6 @@
 src/greenlet.egg-info/PKG-INFO
 src/greenlet.egg-info/SOURCES.txt
 src/greenlet.egg-info/dependency_links.txt
-src/greenlet.egg-info/not-zip-safe
 src/greenlet.egg-info/requires.txt
 src/greenlet.egg-info/top_level.txt
 src/greenlet/platform/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/greenlet-3.3.0/src/greenlet.egg-info/not-zip-safe 
new/greenlet-3.3.1/src/greenlet.egg-info/not-zip-safe
--- old/greenlet-3.3.0/src/greenlet.egg-info/not-zip-safe       2025-12-04 
15:19:47.000000000 +0100
+++ new/greenlet-3.3.1/src/greenlet.egg-info/not-zip-safe       1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-

Reply via email to