Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0a1ade4
Updating lc image to flex
gavin-aguiar Oct 20, 2025
b8dfeee
Fixing test
gavin-aguiar Oct 20, 2025
6f777d1
Mounting proxy worker for 3.13 tests
gavin-aguiar Oct 20, 2025
8449783
Debug logging fix
gavin-aguiar Oct 20, 2025
5fb3177
Adding py314
gavin-aguiar Oct 22, 2025
bfd59ee
Updated image repo for flexconsumption
gavin-aguiar Oct 27, 2025
888f387
Merge branch 'dev' of github.com:Azure/azure-functions-python-worker …
gavin-aguiar Dec 1, 2025
7736488
Merge branch 'dev' into gaaguiar/flex_tests
gavin-aguiar Dec 1, 2025
28bc120
Token updates for flex
gavin-aguiar Dec 2, 2025
ac43611
erge branch 'gaaguiar/flex_tests' of github.com:Azure/azure-functions…
gavin-aguiar Dec 2, 2025
411c708
build: add 3.14 to tests (#1787)
hallvictoria Dec 2, 2025
715a9dc
chore: remove 3.7 & 3.8 from worker nuget (#1810)
hallvictoria Dec 8, 2025
52dd1f5
fix: Py3.13+ logging issue with operation_Name (#1811)
gavin-aguiar Dec 9, 2025
58b8aad
build: update runtimes/v2 version to 1.1.0b4 (#1812)
hallvictoria Dec 9, 2025
3533587
fix: Remove packaging library (#1816)
gavin-aguiar Dec 10, 2025
0a68393
build: update version to 4.41.2 (#1817)
hallvictoria Dec 10, 2025
69ade8e
build: add test only using worker dependencies (#1818)
hallvictoria Dec 18, 2025
8a45d8f
Fix: Update timezone in reload request (#1819)
gavin-aguiar Dec 18, 2025
fb8afd7
Updating lc image to flex
gavin-aguiar Oct 20, 2025
5530e08
Fixing test
gavin-aguiar Oct 20, 2025
fb11518
Mounting proxy worker for 3.13 tests
gavin-aguiar Oct 20, 2025
1d64690
Debug logging fix
gavin-aguiar Oct 20, 2025
25ce77c
Adding py314
gavin-aguiar Oct 22, 2025
31a0527
Updated image repo for flexconsumption
gavin-aguiar Oct 27, 2025
1ec1695
Token updates for flex
gavin-aguiar Dec 2, 2025
f963920
Flex tests
gavin-aguiar Feb 27, 2026
b6d5713
Resolved conflicts
gavin-aguiar Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .azuredevops/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Mirrored repository. We use dependabot via GitHub, not Azure DevOps.
version: 2
enable-security-updates: false
enable-campaigned-updates: false
2 changes: 1 addition & 1 deletion eng/ci/official-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ extends:
dependsOn: BuildPythonWorker
jobs:
- template: /eng/templates/official/jobs/ci-docker-dedicated-tests.yml@self
- stage: RunWorkerLinuxConsumptionTests
- stage: RunWorkerFlexConsumptionTests
dependsOn: BuildPythonWorker
jobs:
- template: /eng/templates/official/jobs/ci-lc-tests.yml@self
Expand Down
6 changes: 6 additions & 0 deletions eng/ci/public-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ extends:
PROJECT_DIRECTORY: 'workers'
# Skip the build stage for SDK and Extensions release branches. This stage will fail because pyproject.toml contains the updated (and unreleased) library version
condition: and(eq(variables.isSdkRelease, false), eq(variables.isExtensionsRelease, false), eq(variables['USETESTPYTHONSDK'], false), eq(variables['USETESTPYTHONEXTENSIONS'], false))
- stage: CheckPythonWorkerDependencies
dependsOn: BuildPythonWorker
jobs:
- template: /eng/templates/jobs/ci-dependency-check.yml@self
parameters:
PoolName: 1es-pool-azfunc-public
- stage: RunWorkerUnitTests
dependsOn: BuildPythonWorker
jobs:
Expand Down
8 changes: 0 additions & 8 deletions eng/pack/Microsoft.Azure.Functions.V4.PythonWorker.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@
<copyright>© .NET Foundation. All rights reserved.</copyright>
</metadata>
<files>
<file src="..\..\3.7_WINDOWS_X64\**" target="tools\3.7\WINDOWS\X64" />
<file src="..\..\3.7_WINDOWS_X86\**" target="tools\3.7\WINDOWS\X86" />
<file src="..\..\3.7_LINUX_X64\**" target="tools\3.7\LINUX\X64" />
<file src="..\..\3.7_OSX_X64\**" target="tools\3.7\OSX\X64" />
<file src="..\..\3.8_WINDOWS_X64\**" target="tools\3.8\WINDOWS\X64" />
<file src="..\..\3.8_WINDOWS_X86\**" target="tools\3.8\WINDOWS\X86" />
<file src="..\..\3.8_LINUX_X64\**" target="tools\3.8\LINUX\X64" />
<file src="..\..\3.8_OSX_X64\**" target="tools\3.8\OSX\X64" />
<file src="..\..\3.9_WINDOWS_X64\**" target="tools\3.9\WINDOWS\X64" />
<file src="..\..\3.9_WINDOWS_X86\**" target="tools\3.9\WINDOWS\X86" />
<file src="..\..\3.9_LINUX_X64\**" target="tools\3.9\LINUX\X64" />
Expand Down
9 changes: 1 addition & 8 deletions eng/pack/templates/macos_64_env_gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ steps:
cd workers
pip-audit -r requirements.txt
displayName: 'Run vulnerability scan'
condition: ne(variables['pythonVersion'], '3.7')
- task: CopyFiles@2
inputs:
contents: '$(workerPath)'
Expand Down Expand Up @@ -106,6 +105,7 @@ steps:
$expected = @(
".artifactignore",
"azure",
"azurefunctions",
"azure_functions_worker",
"azure_functions_worker/protos/FunctionRpc_pb2.py",
"azure_functions_worker/protos/FunctionRpc_pb2_grpc.py",
Expand All @@ -124,13 +124,6 @@ steps:
"werkzeug",
"worker.py"
)
# Add azurefunctions/ conditionally
if ("$(minorVersion)" -ne "7") {
Write-Host "Including azurefunctions/ in expected list (minorVersion=$(minorVersion))"
$expected += "azurefunctions"
} else {
Write-Host "Skipping azurefunctions/ (minorVersion=7)"
}

$missing = @()

Expand Down
9 changes: 1 addition & 8 deletions eng/pack/templates/nix_arm64_env_gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ steps:
cd workers
pip-audit -r requirements.txt
displayName: 'Run vulnerability scan'
condition: ne(variables['pythonVersion'], '3.7')
- task: CopyFiles@2
inputs:
contents: '$(workerPath)'
Expand Down Expand Up @@ -112,6 +111,7 @@ steps:
$expected = @(
".artifactignore",
"azure",
"azurefunctions",
"azure_functions_worker",
"azure_functions_worker/protos/FunctionRpc_pb2.py",
"azure_functions_worker/protos/FunctionRpc_pb2_grpc.py",
Expand All @@ -130,13 +130,6 @@ steps:
"werkzeug",
"worker.py"
)
# Add azurefunctions/ conditionally
if ("$(minorVersion)" -ne "7") {
Write-Host "Including azurefunctions/ in expected list (minorVersion=$(minorVersion))"
$expected += "azurefunctions"
} else {
Write-Host "Skipping azurefunctions/ (minorVersion=7)"
}

$missing = @()

Expand Down
9 changes: 1 addition & 8 deletions eng/pack/templates/nix_env_gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ steps:
cd workers
pip-audit -r requirements.txt
displayName: 'Run vulnerability scan'
condition: ne(variables['pythonVersion'], '3.7')
- task: CopyFiles@2
inputs:
contents: '$(workerPath)'
Expand Down Expand Up @@ -107,6 +106,7 @@ steps:
".artifactignore",
"azure",
"azure_functions_worker",
"azurefunctions",
"azure_functions_worker/protos/FunctionRpc_pb2.py",
"azure_functions_worker/protos/FunctionRpc_pb2_grpc.py",
"azure_functions_worker/protos/_src",
Expand All @@ -124,13 +124,6 @@ steps:
"werkzeug",
"worker.py"
)
# Add azurefunctions/ conditionally
if ("$(minorVersion)" -ne "7") {
Write-Host "Including azurefunctions/ in expected list (minorVersion=$(minorVersion))"
$expected += "azurefunctions"
} else {
Write-Host "Skipping azurefunctions/ (minorVersion=7)"
}

$missing = @()

Expand Down
9 changes: 1 addition & 8 deletions eng/pack/templates/win_env_gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ steps:
cd workers
pip-audit -r requirements.txt
displayName: 'Run vulnerability scan'
condition: ne(variables['pythonVersion'], '3.7')
- task: CopyFiles@2
inputs:
contents: '$(workerPath)'
Expand Down Expand Up @@ -105,6 +104,7 @@ steps:
$expected = @(
".artifactignore",
"azure",
"azurefunctions",
"azure_functions_worker",
"azure_functions_worker/protos/FunctionRpc_pb2.py",
"azure_functions_worker/protos/FunctionRpc_pb2_grpc.py",
Expand All @@ -123,13 +123,6 @@ steps:
"werkzeug",
"worker.py"
)
# Add azurefunctions/ conditionally
if ("$(minorVersion)" -ne "7") {
Write-Host "Including azurefunctions/ in expected list (minorVersion=$(minorVersion))"
$expected += "azurefunctions"
} else {
Write-Host "Skipping azurefunctions/ (minorVersion=7)"
}

$missing = @()

Expand Down
15 changes: 6 additions & 9 deletions eng/scripts/install-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,10 @@ python -m pip install -e runtimes/v1
python -m pip install -U azure-functions --pre
python -m pip install -U -e $2/[dev]

if [[ $1 != "3.7" ]]; then
python -m pip install --pre -U -e $2/[test-http-v2]
fi
if [[ $1 != "3.7" && $1 != "3.8" ]]; then
python -m pip install --pre -U -e $2/[test-deferred-bindings]
python -m pip install --pre -U -e $2/[test-http-v2]
python -m pip install --pre -U -e $2/[test-deferred-bindings]

SERVICEBUS_DIR="./servicebus_dir"
python -m pip install --pre -U --target "$SERVICEBUS_DIR" azurefunctions-extensions-bindings-servicebus==1.0.0b2
python -c "import sys; sys.path.insert(0, '$SERVICEBUS_DIR'); import azurefunctions.extensions.bindings.servicebus as sb; print('servicebus version:', sb.__version__)"

SERVICEBUS_DIR="./servicebus_dir"
python -m pip install --pre -U --target "$SERVICEBUS_DIR" azurefunctions-extensions-bindings-servicebus==1.0.0b2
python -c "import sys; sys.path.insert(0, '$SERVICEBUS_DIR'); import azurefunctions.extensions.bindings.servicebus as sb; print('servicebus version:', sb.__version__)"
fi
12 changes: 4 additions & 8 deletions eng/scripts/test-extensions.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
#!/bin/bash

python -m pip install --upgrade pip
if [[ $2 != "3.7" ]]; then
python -m pip install -e $1/PythonExtensionArtifact/$3
python -m pip install --pre -e workers/[test-http-v2]
fi
if [[ $2 != "3.7" && $2 != "3.8" ]]; then
python -m pip install -e $1/PythonExtensionArtifact/$3
python -m pip install --pre -U -e workers/[test-deferred-bindings]
fi

python -m pip install -e $1/PythonExtensionArtifact/$3
python -m pip install --pre -e workers/[test-http-v2]
python -m pip install --pre -U -e workers/[test-deferred-bindings]

python -m pip install -U -e workers/[dev]
8 changes: 2 additions & 6 deletions eng/scripts/test-sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,5 @@ python -m pip install --upgrade pip
python -m pip install -e $1/PythonSdkArtifact
python -m pip install -e workers/[dev]

if [[ $2 != "3.7" ]]; then
python -m pip install --pre -U -e workers/[test-http-v2]
fi
if [[ $2 != "3.7" && $2 != "3.8" ]]; then
python -m pip install --pre -U -e workers/[test-deferred-bindings]
fi
python -m pip install --pre -U -e workers/[test-http-v2]
python -m pip install --pre -U -e workers/[test-deferred-bindings]
81 changes: 81 additions & 0 deletions eng/templates/jobs/ci-dependency-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
jobs:
- job: "TestPython"
displayName: "Run Dependency Checks"

pool:
name: ${{ parameters.PoolName }}
image: 1es-ubuntu-22.04
os: linux

strategy:
matrix:
Python39:
PYTHON_VERSION: '3.9'
Python310:
PYTHON_VERSION: '3.10'
Python311:
PYTHON_VERSION: '3.11'
Python312:
PYTHON_VERSION: '3.12'
Python313:
PYTHON_VERSION: '3.13'
Python314:
PYTHON_VERSION: '3.14'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: $(PYTHON_VERSION)
- powershell: |
$PY_VER = "$(PYTHON_VERSION)"
Write-Host "Python version: $PY_VER"

# Extract minor version as integers
$versionParts = $PY_VER.Split('.')
$PY_MINOR = [int]$versionParts[1]
Write-Host "Minor version: $PY_MINOR"
Write-Host "##vso[task.setvariable variable=minorVersion;]$PY_MINOR"

# Set build-related variables based on Python minor version
if( $PY_MINOR -ge 13 )
{
Write-Host "##vso[task.setvariable variable=proxyWorker;]true"
}
else
{
Write-Host "##vso[task.setvariable variable=proxyWorker;]false"
}
displayName: 'Set necessary variables'
- bash: |
echo "Checking azure_functions_worker (Python < 3.13)..."
cd workers
pip install . invoke
cd tests
python -m invoke -c test_setup build-protos
cd ..
python -c "import pkgutil, importlib; [importlib.import_module(f'azure_functions_worker.{name}') for _, name, _ in pkgutil.walk_packages(['azure_functions_worker'])]"
displayName: 'Python Azure Functions Worker: check for missing dependencies'
condition: eq(variables['proxyWorker'], false)
- bash: |
echo "Checking proxy_worker (Python >= 3.13)..."
cd workers
pip install . invoke
cd tests
python -m invoke -c test_setup build-protos
cd ..
python -c "import pkgutil, importlib; [importlib.import_module(f'proxy_worker.{name}') for _, name, _ in pkgutil.walk_packages(['proxy_worker'])]"
displayName: 'Python Proxy Worker: check for missing dependencies'
condition: eq(variables['proxyWorker'], true)
- bash: |
echo "Checking V1 Library Worker (Python >= 3.13)..."
cd runtimes/v1
pip install .
python -c "import pkgutil, importlib; [importlib.import_module(f'azure_functions_runtime_v1.{name}') for _, name, _ in pkgutil.walk_packages(['azure_functions_runtime_v1'])]"
displayName: 'Python Library V1: check for missing dependencies'
condition: eq(variables['proxyWorker'], true)
- bash: |
echo "Checking V2 Library Worker (Python >= 3.13)..."
cd runtimes/v2
pip install .
python -c "import pkgutil, importlib; [importlib.import_module(f'azure_functions_runtime.{name}') for _, name, _ in pkgutil.walk_packages(['azure_functions_runtime'])]"
displayName: 'Python Library V2: check for missing dependencies'
condition: eq(variables['proxyWorker'], true)
2 changes: 2 additions & 0 deletions eng/templates/jobs/ci-emulator-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
PYTHON_VERSION: '3.12'
Python313:
PYTHON_VERSION: '3.13'
Python314:
PYTHON_VERSION: '3.14'
steps:
- task: UsePythonVersion@0
inputs:
Expand Down
2 changes: 1 addition & 1 deletion eng/templates/jobs/ci-library-unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@ jobs:
python -m pytest -q --dist loadfile --reruns 4 --instafail --cov=./${{ parameters.PROJECT_DIRECTORY }} --cov-report xml --cov-branch tests/unittests
displayName: "Running $(PYTHON_VERSION) Unit Tests"
env:
AzureWebJobsStorage: $(LinuxStorageConnectionString312)
AZURE_STORAGE_CONNECTION_STRING: $(AZURE_STORAGE_CONNECTION_STRING)
workingDirectory: $(Build.SourcesDirectory)/${{ parameters.PROJECT_DIRECTORY }}
2 changes: 2 additions & 0 deletions eng/templates/jobs/ci-unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
PYTHON_VERSION: '3.12'
Python313:
PYTHON_VERSION: '3.13'
Python314:
PYTHON_VERSION: '3.14'
steps:
- task: UsePythonVersion@0
inputs:
Expand Down
Loading