Skip to content

Commit

Permalink
Python 3.13-rc.3 In Platform Matrix (#37508)
Browse files Browse the repository at this point in the history
* add python 3.13 to our test matrix across all packages
* skip py313 for azure-ai-ml
* update azure-core-experimental tests to no longer fail on py313 (thanks Xiang!)
* bump the minimum version of azure-core for azure-cosmos to 1.30.0 (for mindependency only, not setup.py)

---------

Co-authored-by: Xiang Yan <xiangsjtu@gmail.com>
  • Loading branch information
scbedd and xiangyan99 authored Oct 8, 2024
1 parent b6909f0 commit 19c6330
Show file tree
Hide file tree
Showing 12 changed files with 88 additions and 41 deletions.
2 changes: 1 addition & 1 deletion eng/pipelines/templates/jobs/tests-nightly-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
displayName: Validate Release Candidate Python - Linux
variables:
skipComponentGovernanceDetection: true
PythonVersion: '3.13.0-rc.2'
PythonVersion: '3.13.0-rc.3'
TargetedPackages: ${{ parameters.TargetedPackages }}

timeoutInMinutes: 90
Expand Down
11 changes: 11 additions & 0 deletions eng/pipelines/templates/stages/platform-matrix-excluding-pypy.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,17 @@
"TestSamples": "false"
}
}
},
{
"Config": {
"Ubuntu2004_3130": {
"OSVmImage": "env:LINUXVMIMAGE",
"Pool": "env:LINUXPOOL",
"PythonVersion": "3.13.0-rc.3",
"CoverageArg": "--disablecov",
"TestSamples": "false"
}
}
}
]
}
31 changes: 0 additions & 31 deletions eng/pipelines/templates/stages/platform-matrix-no-312.json

This file was deleted.

41 changes: 41 additions & 0 deletions eng/pipelines/templates/stages/platform-matrix-no-313.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"displayNames": {
"--disablecov": "",
"false": "",
"true": ""
},
"matrix": {
"Agent": {
"windows-2022": { "OSVmImage": "env:WINDOWSVMIMAGE", "Pool": "env:WINDOWSPOOL" },
"ubuntu-20.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" },
"macos-latest": { "OSVmImage": "env:MACVMIMAGE", "Pool": "env:MACPOOL" }
},
"PythonVersion": [ "3.8", "pypy3.9", "3.11", "3.10"],
"CoverageArg": "--disablecov",
"TestSamples": "false"
},
"include": [
{
"CoverageConfig": {
"ubuntu2004_39_coverage": {
"OSVmImage": "env:LINUXVMIMAGE",
"Pool": "env:LINUXPOOL",
"PythonVersion": "3.9",
"CoverageArg": "",
"TestSamples": "false"
}
}
},
{
"Config": {
"Ubuntu2004_312": {
"OSVmImage": "env:LINUXVMIMAGE",
"Pool": "env:LINUXPOOL",
"PythonVersion": "3.12",
"CoverageArg": "--disablecov",
"TestSamples": "false"
}
}
}
]
}
6 changes: 3 additions & 3 deletions eng/pipelines/templates/stages/platform-matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"ubuntu-20.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" },
"macos-latest": { "OSVmImage": "env:MACVMIMAGE", "Pool": "env:MACPOOL" }
},
"PythonVersion": [ "3.8", "pypy3.9", "3.11", "3.10" ],
"PythonVersion": [ "3.8", "pypy3.9", "3.11", "3.10", "3.12" ],
"CoverageArg": "--disablecov",
"TestSamples": "false"
},
Expand All @@ -28,10 +28,10 @@
},
{
"Config": {
"Ubuntu2004_312": {
"Ubuntu2004_313": {
"OSVmImage": "env:LINUXVMIMAGE",
"Pool": "env:LINUXPOOL",
"PythonVersion": "3.12",
"PythonVersion": "3.13.0-rc.3",
"CoverageArg": "--disablecov",
"TestSamples": "false"
}
Expand Down
1 change: 1 addition & 0 deletions eng/pipelines/templates/steps/use-python-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ steps:
displayName: "Use Python ${{ parameters.versionSpec }}"
inputs:
versionSpec: ${{ parameters.versionSpec }}
allowUnstable: true
11 changes: 10 additions & 1 deletion eng/tox/install_depend_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,23 @@
"azure-identity": {"msal": "1.23.0"},
"azure-core-tracing-opentelemetry": {"azure-core": "1.28.0"},
"azure-storage-file-datalake": {"azure-storage-blob": "12.22.0"},
"azure-cosmos": {"azure-core": "1.30.0"}
}

MAXIMUM_VERSION_SPECIFIC_OVERRIDES = {}

# PLATFORM SPECIFIC OVERRIDES provide additional generic (EG not tied to the package whos dependencies are being processed)
# filtering on a _per platform_ basis. Primarily used to limit certain packages due to platform compatbility
PLATFORM_SPECIFIC_MINIMUM_OVERRIDES = {
">=3.12.0": {"azure-core": "1.23.1", "aiohttp": "3.8.6", "six": "1.16.0", "requests": "2.30.0"}
">=3.12.0": {
"azure-core": "1.23.1",
"aiohttp": "3.8.6",
"six": "1.16.0",
"requests": "2.30.0"
},
">=3.13.0": {
"typing-extensions": "4.12.0",
}
}

PLATFORM_SPECIFIC_MAXIMUM_OVERRIDES = {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def create_mock_response(self, body: bytes, headers: dict, status: int, status_t
return response_promise

@pytest.mark.asyncio
@pytest.mark.skipif(sys.version_info >= (3, 13), reason="cgi is removed in Python 3.13")
async def test_successful_send(self, mock_pyfetch, mock_pyodide_module, pipeline):
"""Test that a successful send returns the correct values."""
# setup data
Expand Down Expand Up @@ -143,6 +144,7 @@ async def test_successful_send(self, mock_pyfetch, mock_pyodide_module, pipeline
assert not kwargs["files"]

@pytest.mark.asyncio
@pytest.mark.skipif(sys.version_info >= (3, 13), reason="cgi is removed in Python 3.13")
async def test_unsuccessful_send(self, mock_pyfetch, mock_pyodide_module, pipeline):
"""Test that the pipeline is failing correctly."""
mock_pyfetch.reset_mock()
Expand All @@ -154,6 +156,7 @@ async def test_unsuccessful_send(self, mock_pyfetch, mock_pyodide_module, pipeli
# 3 retries plus the original request.
assert mock_pyfetch.call_count == retry_total + 1

@pytest.mark.skipif(sys.version_info >= (3, 13), reason="cgi is removed in Python 3.13")
def test_valid_import(self, transport):
"""Test that we can import Pyodide classes from `azure.core.pipeline.transport`
Adding the transport fixture will mock the Pyodide modules in `sys.modules`.
Expand Down
2 changes: 1 addition & 1 deletion sdk/core/azure-core-experimental/tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
# ASYNC_TRANSPORTS.append(AsyncHttpXTransport)


from azure.core.experimental.transport import PyodideTransport
# from azure.core.experimental.transport import PyodideTransport

# ASYNC_TRANSPORTS.append(PyodideTransport)

Expand Down
2 changes: 1 addition & 1 deletion sdk/core/azure-core/LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ 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.
SOFTWARE.
10 changes: 9 additions & 1 deletion sdk/cosmos/cosmos-emulator-matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,16 @@
"ACCOUNT_HOST": "https://localhost:8081/",
"ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
"Skip.Analyze": "true"
},
"Emulator Tests Python 3.13": {
"PythonVersion": "3.13.0-rc.3",
"CoverageArg": "--disablecov",
"TestSamples": "false",
"ToxTestEnv": "'whl,sdist'",
"ACCOUNT_HOST": "https://localhost:8081/",
"ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
"Skip.Analyze": "true"
}
}
}
}

9 changes: 7 additions & 2 deletions sdk/ml/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ trigger:
include:
- sdk/ml/
- scripts/
- sdk/core/
- sdk/core/

pr:
branches:
Expand All @@ -24,7 +24,7 @@ pr:
paths:
include:
- sdk/ml/
- sdk/core/
- sdk/core/

extends:
template: /eng/pipelines/templates/stages/archetype-sdk-client.yml
Expand All @@ -33,6 +33,11 @@ extends:
ValidateFormatting: true
TestTimeoutInMinutes: 75
TestProxy: true
MatrixConfigs:
- Name: ml_ci_matrix
Path: eng/pipelines/templates/stages/platform-matrix-no-313.json
Selection: sparse
GenerateVMJobs: true
# This is a short term solution to create API review for python azure-ml package only when running pipeline manually
# Long term solution should be to have different versions on main branch and release branch for python package so APIView can have different revisions for each version.
# Tracking issue: https://github.com/Azure/azure-sdk-for-python/issues/29196
Expand Down

0 comments on commit 19c6330

Please sign in to comment.