azure-functions 1.25.0b3.dev1__tar.gz → 1.25.0b3.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {azure_functions-1.25.0b3.dev1/azure_functions.egg-info → azure_functions-1.25.0b3.dev3}/PKG-INFO +1 -1
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/__init__.py +1 -1
- azure_functions-1.25.0b3.dev3/azure/functions/decorators/durable_functions.py +45 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/function_app.py +4 -3
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/durable_functions.py +23 -17
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3/azure_functions.egg-info}/PKG-INFO +1 -1
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_durable_functions.py +38 -38
- azure_functions-1.25.0b3.dev1/azure/functions/decorators/durable_functions.py +0 -59
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/LICENSE +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/MANIFEST.in +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/README.md +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_abc.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_cosmosdb.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_durable_functions.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_eventgrid.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_eventhub.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_http.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_http_asgi.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_http_wsgi.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_jsonutils.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_kafka.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_mysql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_queue.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_servicebus.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_sql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_thirdparty/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_thirdparty/typing_inspect.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_utils.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/blob.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/cosmosdb.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/blob.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/constants.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/core.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/cosmosdb.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/dapr.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/eventgrid.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/eventhub.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/function_name.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/generic.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/http.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/kafka.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/mcp.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/mysql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/openai.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/queue.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/retry_policy.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/servicebus.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/sql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/table.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/timer.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/utils.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/warmup.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/eventgrid.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/eventhub.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/app_extension_base.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/app_extension_hooks.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/extension_hook_meta.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/extension_meta.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/extension_scope.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/func_extension_base.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/func_extension_hooks.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/extension/function_extension_exception.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/http.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/kafka.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/mcp.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/meta.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/mysql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/py.typed +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/queue.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/servicebus.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/sql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/timer.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/warmup.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure_functions.egg-info/SOURCES.txt +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure_functions.egg-info/dependency_links.txt +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure_functions.egg-info/requires.txt +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure_functions.egg-info/top_level.txt +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/pyproject.toml +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/setup.cfg +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_blob.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_core.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_cosmosdb.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_dapr.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_decorators.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_eventgrid.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_eventhub.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_function_app.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_function_name.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_generic.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_http.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_kafka.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_mcp.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_mysql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_openai.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_queue.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_retry_policy.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_servicebus.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_sql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_table.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_timer.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_utils.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_warmup.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_blob.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_code_quality.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_cosmosdb.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_eventgrid.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_eventhub.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_extension.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_http.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_http_asgi.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_http_wsgi.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_kafka.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_mcp.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_meta.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_mysql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_queue.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_servicebus.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_sql.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_timer.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_warmup.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/utils/__init__.py +0 -0
- {azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/utils/testutils.py +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
_logger = logging.getLogger('azure.functions.DurableFunctions')
|
|
6
|
+
|
|
7
|
+
df = None
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def get_durable_package():
|
|
11
|
+
"""Determines which Durable SDK is being used.
|
|
12
|
+
|
|
13
|
+
If the `azure-functions-durable` package is installed, we
|
|
14
|
+
log a warning that this legacy package
|
|
15
|
+
is deprecated.
|
|
16
|
+
|
|
17
|
+
If both the legacy and current packages are installed,
|
|
18
|
+
we log a warning and prefer the current package.
|
|
19
|
+
|
|
20
|
+
If neither package is installed, we return None.
|
|
21
|
+
"""
|
|
22
|
+
_logger.info("Attempting to import Durable Functions package.")
|
|
23
|
+
global df
|
|
24
|
+
if df:
|
|
25
|
+
_logger.info("Durable Functions package already loaded. DF: %s", df)
|
|
26
|
+
return df
|
|
27
|
+
|
|
28
|
+
# Check for azure-functions-durable package
|
|
29
|
+
try:
|
|
30
|
+
import azure.durable_functions as durable_functions # noqa
|
|
31
|
+
_logger.info("`azure.durable_functions` package found.")
|
|
32
|
+
except ImportError:
|
|
33
|
+
_logger.info("`azure.durable_functions` package not found.")
|
|
34
|
+
return None
|
|
35
|
+
|
|
36
|
+
# Check version of azure-functions-durable package
|
|
37
|
+
try:
|
|
38
|
+
if hasattr(durable_functions, 'version') and durable_functions.version.startswith("2."):
|
|
39
|
+
_logger.info("Using `azure.durable_functions` v2.x package.")
|
|
40
|
+
except Exception:
|
|
41
|
+
_logger.info("Using `azure.durable_functions` v1.x package.")
|
|
42
|
+
|
|
43
|
+
df = durable_functions
|
|
44
|
+
|
|
45
|
+
return df
|
|
@@ -58,7 +58,8 @@ from .._http_wsgi import WsgiMiddleware, Context
|
|
|
58
58
|
from azure.functions.decorators.mysql import MySqlInput, MySqlOutput, \
|
|
59
59
|
MySqlTrigger
|
|
60
60
|
|
|
61
|
-
_logger = logging.getLogger('azure.functions.
|
|
61
|
+
_logger = logging.getLogger('azure.functions.DurableFunctions')
|
|
62
|
+
|
|
62
63
|
|
|
63
64
|
class Function(object):
|
|
64
65
|
"""
|
|
@@ -357,8 +358,8 @@ class DecoratorApi(ABC):
|
|
|
357
358
|
else:
|
|
358
359
|
error_message = \
|
|
359
360
|
"Attempted to use a Durable Functions decorator, " \
|
|
360
|
-
"but the `
|
|
361
|
-
"found. Please install `
|
|
361
|
+
"but the `azure-functions-durable` SDK package could not be " \
|
|
362
|
+
"found. Please install `azure-functions-durable` to use " \
|
|
362
363
|
"Durable Functions."
|
|
363
364
|
raise Exception(error_message)
|
|
364
365
|
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/durable_functions.py
RENAMED
|
@@ -9,14 +9,15 @@ from azure.functions.decorators.durable_functions import get_durable_package
|
|
|
9
9
|
from . import meta
|
|
10
10
|
|
|
11
11
|
import logging
|
|
12
|
-
_logger = logging.getLogger('azure.functions.
|
|
12
|
+
_logger = logging.getLogger('azure.functions.DurableFunctions')
|
|
13
|
+
|
|
13
14
|
|
|
14
15
|
# ---------------- Legacy Durable Functions Converters ---------------- #
|
|
15
16
|
# Legacy Durable Function Orchestration Trigger
|
|
16
17
|
class LegacyOrchestrationTriggerConverter(meta.InConverter,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
meta.OutConverter,
|
|
19
|
+
binding=None,
|
|
20
|
+
trigger=True):
|
|
20
21
|
@classmethod
|
|
21
22
|
def check_input_type_annotation(cls, pytype):
|
|
22
23
|
return issubclass(pytype, _durable_functions.OrchestrationContext)
|
|
@@ -45,9 +46,9 @@ class LegacyOrchestrationTriggerConverter(meta.InConverter,
|
|
|
45
46
|
|
|
46
47
|
# Legacy Durable Function Entity Trigger
|
|
47
48
|
class LegacyEnitityTriggerConverter(meta.InConverter,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
meta.OutConverter,
|
|
50
|
+
binding=None,
|
|
51
|
+
trigger=True):
|
|
51
52
|
@classmethod
|
|
52
53
|
def check_input_type_annotation(cls, pytype):
|
|
53
54
|
return issubclass(pytype, _durable_functions.EntityContext)
|
|
@@ -76,9 +77,9 @@ class LegacyEnitityTriggerConverter(meta.InConverter,
|
|
|
76
77
|
|
|
77
78
|
# Legacy Durable Function Activity Trigger
|
|
78
79
|
class LegacyActivityTriggerConverter(meta.InConverter,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
meta.OutConverter,
|
|
81
|
+
binding=None,
|
|
82
|
+
trigger=True):
|
|
82
83
|
@classmethod
|
|
83
84
|
def check_input_type_annotation(cls, pytype):
|
|
84
85
|
# Activity Trigger's arguments should accept any types
|
|
@@ -133,8 +134,8 @@ class LegacyActivityTriggerConverter(meta.InConverter,
|
|
|
133
134
|
|
|
134
135
|
# Legacy Durable Functions Durable Client Bindings
|
|
135
136
|
class LegacyDurableClientConverter(meta.InConverter,
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
meta.OutConverter,
|
|
138
|
+
binding=None):
|
|
138
139
|
@classmethod
|
|
139
140
|
def has_implicit_output(cls) -> bool:
|
|
140
141
|
return False
|
|
@@ -331,7 +332,7 @@ class DurableClientConverter(meta.InConverter,
|
|
|
331
332
|
|
|
332
333
|
@classmethod
|
|
333
334
|
def check_input_type_annotation(cls, pytype: type) -> bool:
|
|
334
|
-
import
|
|
335
|
+
import azure.durable_functions as adf
|
|
335
336
|
return issubclass(pytype, (str, bytes, adf.DurableFunctionsClient))
|
|
336
337
|
|
|
337
338
|
@classmethod
|
|
@@ -363,11 +364,15 @@ class DurableClientConverter(meta.InConverter,
|
|
|
363
364
|
|
|
364
365
|
@classmethod
|
|
365
366
|
def decode(cls, data: meta.Datum, *, trigger_metadata) -> typing.Any:
|
|
366
|
-
|
|
367
|
-
return DurableFunctionsClient(data.value)
|
|
367
|
+
import azure.durable_functions as adf
|
|
368
|
+
return adf.DurableFunctionsClient(data.value)
|
|
368
369
|
|
|
369
370
|
|
|
370
371
|
def register_durable_converters():
|
|
372
|
+
"""
|
|
373
|
+
Registers the appropriate Durable Functions converters based on the
|
|
374
|
+
installed Durable Functions package.
|
|
375
|
+
"""
|
|
371
376
|
_logger.info("Registering Durable Functions converters based on ")
|
|
372
377
|
pkg = get_durable_package()
|
|
373
378
|
if pkg is None:
|
|
@@ -382,17 +387,18 @@ def register_durable_converters():
|
|
|
382
387
|
meta._ConverterMeta._bindings.pop("activityTrigger", None)
|
|
383
388
|
meta._ConverterMeta._bindings.pop("durableClient", None)
|
|
384
389
|
|
|
385
|
-
if pkg
|
|
390
|
+
if not hasattr(pkg, 'version'):
|
|
386
391
|
_logger.info("Registering Legacy Durable Functions converters.")
|
|
387
392
|
meta._ConverterMeta._bindings["orchestrationTrigger"] = LegacyOrchestrationTriggerConverter
|
|
388
393
|
meta._ConverterMeta._bindings["entityTrigger"] = LegacyEnitityTriggerConverter
|
|
389
394
|
meta._ConverterMeta._bindings["activityTrigger"] = LegacyActivityTriggerConverter
|
|
390
395
|
meta._ConverterMeta._bindings["durableClient"] = LegacyDurableClientConverter
|
|
391
|
-
|
|
396
|
+
elif hasattr(pkg, 'version') and pkg.version.startswith("2."):
|
|
392
397
|
_logger.info("Registering Durable Task Durable Functions converters.")
|
|
393
398
|
meta._ConverterMeta._bindings["orchestrationTrigger"] = OrchestrationTriggerConverter
|
|
394
399
|
meta._ConverterMeta._bindings["entityTrigger"] = EnitityTriggerConverter
|
|
395
400
|
meta._ConverterMeta._bindings["activityTrigger"] = ActivityTriggerConverter
|
|
396
401
|
meta._ConverterMeta._bindings["durableClient"] = DurableClientConverter
|
|
402
|
+
|
|
397
403
|
_logger.info("Durable Functions converters registered.")
|
|
398
404
|
_logger.info("Current bindings after registration: %s", meta._ConverterMeta._bindings)
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/test_durable_functions.py
RENAMED
|
@@ -5,10 +5,10 @@ import unittest
|
|
|
5
5
|
import json
|
|
6
6
|
|
|
7
7
|
from azure.functions.durable_functions import (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
LegacyOrchestrationTriggerConverter,
|
|
9
|
+
LegacyEnitityTriggerConverter,
|
|
10
|
+
LegacyActivityTriggerConverter,
|
|
11
|
+
LegacyDurableClientConverter
|
|
12
12
|
)
|
|
13
13
|
from azure.functions._durable_functions import (
|
|
14
14
|
OrchestrationContext,
|
|
@@ -17,7 +17,7 @@ from azure.functions._durable_functions import (
|
|
|
17
17
|
from azure.functions.meta import Datum
|
|
18
18
|
|
|
19
19
|
CONTEXT_CLASSES = [OrchestrationContext, EntityContext]
|
|
20
|
-
CONVERTERS = [
|
|
20
|
+
CONVERTERS = [LegacyOrchestrationTriggerConverter, LegacyEnitityTriggerConverter]
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class TestDurableFunctions(unittest.TestCase):
|
|
@@ -127,7 +127,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
127
127
|
]
|
|
128
128
|
|
|
129
129
|
for datum in data:
|
|
130
|
-
decoded =
|
|
130
|
+
decoded = LegacyActivityTriggerConverter.decode(
|
|
131
131
|
data=datum['input'],
|
|
132
132
|
trigger_metadata=None)
|
|
133
133
|
self.assertEqual(decoded, datum['expected_value'])
|
|
@@ -160,7 +160,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
160
160
|
]
|
|
161
161
|
|
|
162
162
|
for datum in data:
|
|
163
|
-
encoded =
|
|
163
|
+
encoded = LegacyActivityTriggerConverter.encode(
|
|
164
164
|
obj=datum['output'],
|
|
165
165
|
expected_type=type(datum['output']))
|
|
166
166
|
self.assertEqual(encoded, datum['expected_value'])
|
|
@@ -173,7 +173,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
173
173
|
data = NonEncodable()
|
|
174
174
|
|
|
175
175
|
try:
|
|
176
|
-
|
|
176
|
+
LegacyActivityTriggerConverter.encode(data, expected_type=None)
|
|
177
177
|
except ValueError as e:
|
|
178
178
|
self.assertIsNotNone(e.__cause__)
|
|
179
179
|
self.assertIsInstance(e.__cause__, TypeError)
|
|
@@ -217,7 +217,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
217
217
|
]
|
|
218
218
|
|
|
219
219
|
for datum in data:
|
|
220
|
-
decoded =
|
|
220
|
+
decoded = LegacyActivityTriggerConverter.decode(
|
|
221
221
|
data=datum['input'],
|
|
222
222
|
trigger_metadata=None)
|
|
223
223
|
self.assertEqual(decoded, datum['expected_value'])
|
|
@@ -226,7 +226,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
226
226
|
data = Datum('{"value": "bar"}', 'json')
|
|
227
227
|
|
|
228
228
|
try:
|
|
229
|
-
|
|
229
|
+
LegacyActivityTriggerConverter.decode(
|
|
230
230
|
data=data,
|
|
231
231
|
trigger_metadata=None)
|
|
232
232
|
except ValueError as e:
|
|
@@ -235,17 +235,17 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
235
235
|
|
|
236
236
|
def test_activity_trigger_has_implicit_return(self):
|
|
237
237
|
self.assertTrue(
|
|
238
|
-
|
|
238
|
+
LegacyActivityTriggerConverter.has_implicit_output()
|
|
239
239
|
)
|
|
240
240
|
|
|
241
241
|
def test_durable_client_no_implicit_return(self):
|
|
242
242
|
self.assertFalse(
|
|
243
|
-
|
|
243
|
+
LegacyDurableClientConverter.has_implicit_output()
|
|
244
244
|
)
|
|
245
245
|
|
|
246
246
|
def test_enitity_trigger_check_output_type_annotation(self):
|
|
247
247
|
self.assertTrue(
|
|
248
|
-
|
|
248
|
+
LegacyEnitityTriggerConverter.check_output_type_annotation(pytype=None)
|
|
249
249
|
)
|
|
250
250
|
|
|
251
251
|
def test_activity_trigger_converter_decode_no_implementation_exception(
|
|
@@ -254,7 +254,7 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
254
254
|
datum = Datum(value=b"dummy", type="bytes")
|
|
255
255
|
# when
|
|
256
256
|
try:
|
|
257
|
-
|
|
257
|
+
LegacyActivityTriggerConverter.decode(data=datum, trigger_metadata=None)
|
|
258
258
|
except NotImplementedError:
|
|
259
259
|
is_exception_raised = True
|
|
260
260
|
|
|
@@ -265,82 +265,82 @@ class TestDurableFunctions(unittest.TestCase):
|
|
|
265
265
|
|
|
266
266
|
data = '{"dummy_key": "dummy_value"}'
|
|
267
267
|
|
|
268
|
-
result =
|
|
268
|
+
result = LegacyEnitityTriggerConverter.encode(
|
|
269
269
|
obj=data, expected_type=None)
|
|
270
270
|
|
|
271
271
|
self.assertEqual(result.type, "json")
|
|
272
272
|
self.assertEqual(result.python_value, {'dummy_key': 'dummy_value'})
|
|
273
273
|
|
|
274
274
|
def test_durable_client_converter_has_trigger_support(self):
|
|
275
|
-
self.assertFalse(
|
|
275
|
+
self.assertFalse(LegacyDurableClientConverter.has_trigger_support())
|
|
276
276
|
|
|
277
277
|
def test_durable_client_converter_check_input_type_annotation(self):
|
|
278
|
-
self.assertTrue(
|
|
279
|
-
self.assertTrue(
|
|
280
|
-
self.assertFalse(
|
|
278
|
+
self.assertTrue(LegacyDurableClientConverter.check_input_type_annotation(str))
|
|
279
|
+
self.assertTrue(LegacyDurableClientConverter.check_input_type_annotation(bytes))
|
|
280
|
+
self.assertFalse(LegacyDurableClientConverter.check_input_type_annotation(int))
|
|
281
281
|
|
|
282
282
|
def test_durable_client_converter_check_output_type_annotation(self):
|
|
283
|
-
self.assertTrue(
|
|
284
|
-
self.assertTrue(
|
|
285
|
-
self.assertTrue(
|
|
286
|
-
self.assertFalse(
|
|
283
|
+
self.assertTrue(LegacyDurableClientConverter.check_output_type_annotation(str))
|
|
284
|
+
self.assertTrue(LegacyDurableClientConverter.check_output_type_annotation(bytes))
|
|
285
|
+
self.assertTrue(LegacyDurableClientConverter.check_output_type_annotation(bytearray))
|
|
286
|
+
self.assertFalse(LegacyDurableClientConverter.check_output_type_annotation(int))
|
|
287
287
|
|
|
288
288
|
def test_durable_client_converter_encode(self):
|
|
289
|
-
datum =
|
|
289
|
+
datum = LegacyDurableClientConverter.encode(obj="hello", expected_type=str)
|
|
290
290
|
self.assertEqual(datum.type, "string")
|
|
291
291
|
self.assertEqual(datum.value, "hello")
|
|
292
292
|
|
|
293
|
-
datum =
|
|
293
|
+
datum = LegacyDurableClientConverter.encode(obj=b"data", expected_type=bytes)
|
|
294
294
|
self.assertEqual(datum.type, "bytes")
|
|
295
295
|
self.assertEqual(datum.value, b"data")
|
|
296
296
|
|
|
297
|
-
datum =
|
|
297
|
+
datum = LegacyDurableClientConverter.encode(obj=None, expected_type=None)
|
|
298
298
|
self.assertIsNone(datum.type)
|
|
299
299
|
self.assertIsNone(datum.value)
|
|
300
300
|
|
|
301
|
-
datum =
|
|
301
|
+
datum = LegacyDurableClientConverter.encode(obj={"a": 1}, expected_type=dict)
|
|
302
302
|
self.assertEqual(datum.type, "dict")
|
|
303
303
|
self.assertEqual(datum.value, {"a": 1})
|
|
304
304
|
|
|
305
|
-
datum =
|
|
305
|
+
datum = LegacyDurableClientConverter.encode(obj=[1, 2], expected_type=list)
|
|
306
306
|
self.assertEqual(datum.type, "list")
|
|
307
307
|
self.assertEqual(datum.value, [1, 2])
|
|
308
308
|
|
|
309
|
-
datum =
|
|
309
|
+
datum = LegacyDurableClientConverter.encode(obj=42, expected_type=int)
|
|
310
310
|
self.assertEqual(datum.type, "int")
|
|
311
311
|
self.assertEqual(datum.value, 42)
|
|
312
312
|
|
|
313
|
-
datum =
|
|
313
|
+
datum = LegacyDurableClientConverter.encode(obj=3.14, expected_type=float)
|
|
314
314
|
self.assertEqual(datum.type, "double")
|
|
315
315
|
self.assertEqual(datum.value, 3.14)
|
|
316
316
|
|
|
317
|
-
datum =
|
|
317
|
+
datum = LegacyDurableClientConverter.encode(obj=True, expected_type=bool)
|
|
318
318
|
self.assertEqual(datum.type, "bool")
|
|
319
319
|
self.assertTrue(datum.value)
|
|
320
320
|
|
|
321
321
|
with self.assertRaises(NotImplementedError):
|
|
322
|
-
|
|
322
|
+
LegacyDurableClientConverter.encode(obj=set([1, 2]), expected_type=set)
|
|
323
323
|
|
|
324
324
|
def test_durable_client_converter_decode(self):
|
|
325
325
|
data = Datum(type="string", value="abc")
|
|
326
|
-
result =
|
|
326
|
+
result = LegacyDurableClientConverter.decode(data=data, trigger_metadata=None)
|
|
327
327
|
self.assertEqual(result, "abc")
|
|
328
328
|
|
|
329
329
|
data = Datum(type="bytes", value=b"123")
|
|
330
|
-
result =
|
|
330
|
+
result = LegacyDurableClientConverter.decode(data=data, trigger_metadata=None)
|
|
331
331
|
self.assertEqual(result, b"123")
|
|
332
332
|
|
|
333
333
|
data = Datum(type="json", value={"key": "val"})
|
|
334
|
-
result =
|
|
334
|
+
result = LegacyDurableClientConverter.decode(data=data, trigger_metadata=None)
|
|
335
335
|
self.assertEqual(result, {"key": "val"})
|
|
336
336
|
|
|
337
337
|
data = Datum(type=None, value=None)
|
|
338
|
-
result =
|
|
338
|
+
result = LegacyDurableClientConverter.decode(data=data, trigger_metadata=None)
|
|
339
339
|
self.assertIsNone(result)
|
|
340
340
|
|
|
341
|
-
result =
|
|
341
|
+
result = LegacyDurableClientConverter.decode(data=None, trigger_metadata=None)
|
|
342
342
|
self.assertIsNone(result)
|
|
343
343
|
|
|
344
344
|
data = Datum(type="weird", value="???")
|
|
345
345
|
with self.assertRaises(ValueError):
|
|
346
|
-
|
|
346
|
+
LegacyDurableClientConverter.decode(data=data, trigger_metadata=None)
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
-
# Licensed under the MIT License.
|
|
3
|
-
import logging
|
|
4
|
-
|
|
5
|
-
_logger = logging.getLogger('azure.functions.AsgiMiddleware')
|
|
6
|
-
|
|
7
|
-
df = None
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def get_durable_package():
|
|
11
|
-
"""Determines which Durable SDK is being used.
|
|
12
|
-
|
|
13
|
-
If the `azure-functions-durable` package is installed, we
|
|
14
|
-
log a warning that this legacy package
|
|
15
|
-
is deprecated.
|
|
16
|
-
|
|
17
|
-
If both the legacy and current packages are installed,
|
|
18
|
-
we log a warning and prefer the current package.
|
|
19
|
-
|
|
20
|
-
If neither package is installed, we return None.
|
|
21
|
-
"""
|
|
22
|
-
_logger.info("Attempting to import Durable Functions package.")
|
|
23
|
-
using_legacy = False
|
|
24
|
-
using_durable_task = False
|
|
25
|
-
global df
|
|
26
|
-
if df:
|
|
27
|
-
_logger.info("Durable Functions package already loaded. DF: %s", df)
|
|
28
|
-
return df
|
|
29
|
-
|
|
30
|
-
try:
|
|
31
|
-
import azure.durable_functions as durable_functions
|
|
32
|
-
using_legacy = True
|
|
33
|
-
_logger.warning("`durabletask-azurefunctions` is available now! " \
|
|
34
|
-
"See <AKA.MS LINK HERE> for more details.")
|
|
35
|
-
except ImportError:
|
|
36
|
-
_logger.info("`azure-functions-durable` package not found.")
|
|
37
|
-
pass
|
|
38
|
-
try:
|
|
39
|
-
import durabletask.azurefunctions as durable_functions
|
|
40
|
-
using_durable_task = True
|
|
41
|
-
except ImportError:
|
|
42
|
-
_logger.info("`durabletask-azurefunctions` package not found.")
|
|
43
|
-
pass
|
|
44
|
-
|
|
45
|
-
if using_durable_task and using_legacy:
|
|
46
|
-
# Both packages are installed; prefer `durabletask-azurefunctions`.
|
|
47
|
-
_logger.warning("Both `azure-functions-durable` and " \
|
|
48
|
-
"`durabletask-azurefunctions` packages are installed. " \
|
|
49
|
-
"This may lead to unexpected behavior. Please resolve this " \
|
|
50
|
-
"conflict by removing one of these packages from the Python " \
|
|
51
|
-
"environment. Decorators from `durabletask-azurefunctions` will " \
|
|
52
|
-
"be used.")
|
|
53
|
-
|
|
54
|
-
if not using_durable_task and not using_legacy:
|
|
55
|
-
return None
|
|
56
|
-
|
|
57
|
-
df = durable_functions
|
|
58
|
-
|
|
59
|
-
return durable_functions
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_cosmosdb.py
RENAMED
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_eventgrid.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_eventhub.py
RENAMED
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_http_asgi.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_http_wsgi.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_jsonutils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/_servicebus.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/blob.py
RENAMED
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/core.py
RENAMED
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/dapr.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/http.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/kafka.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/mcp.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/mysql.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/openai.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/sql.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/table.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/timer.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/utils.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/decorators/warmup.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/eventgrid.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure/functions/servicebus.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/azure_functions.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_blob.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_core.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_cosmosdb.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_dapr.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_decorators.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_eventgrid.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_eventhub.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_generic.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_http.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_kafka.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_mcp.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_mysql.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_openai.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_servicebus.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_sql.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_table.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_timer.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_utils.py
RENAMED
|
File without changes
|
{azure_functions-1.25.0b3.dev1 → azure_functions-1.25.0b3.dev3}/tests/decorators/test_warmup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|