azure-functions-durable 1.2.9__py3-none-any.whl → 1.3.0__py3-none-any.whl
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/durable_functions/__init__.py +81 -81
- azure/durable_functions/constants.py +9 -9
- azure/durable_functions/decorators/__init__.py +3 -3
- azure/durable_functions/decorators/durable_app.py +260 -249
- azure/durable_functions/decorators/metadata.py +109 -109
- azure/durable_functions/entity.py +129 -125
- azure/durable_functions/models/DurableEntityContext.py +201 -201
- azure/durable_functions/models/DurableHttpRequest.py +58 -58
- azure/durable_functions/models/DurableOrchestrationBindings.py +66 -66
- azure/durable_functions/models/DurableOrchestrationClient.py +812 -781
- azure/durable_functions/models/DurableOrchestrationContext.py +761 -707
- azure/durable_functions/models/DurableOrchestrationStatus.py +156 -156
- azure/durable_functions/models/EntityStateResponse.py +23 -23
- azure/durable_functions/models/FunctionContext.py +7 -7
- azure/durable_functions/models/OrchestrationRuntimeStatus.py +32 -32
- azure/durable_functions/models/OrchestratorState.py +117 -116
- azure/durable_functions/models/PurgeHistoryResult.py +33 -33
- azure/durable_functions/models/ReplaySchema.py +9 -8
- azure/durable_functions/models/RetryOptions.py +69 -69
- azure/durable_functions/models/RpcManagementOptions.py +86 -86
- azure/durable_functions/models/Task.py +540 -426
- azure/durable_functions/models/TaskOrchestrationExecutor.py +352 -336
- azure/durable_functions/models/TokenSource.py +56 -56
- azure/durable_functions/models/__init__.py +26 -24
- azure/durable_functions/models/actions/Action.py +23 -23
- azure/durable_functions/models/actions/ActionType.py +18 -18
- azure/durable_functions/models/actions/CallActivityAction.py +41 -41
- azure/durable_functions/models/actions/CallActivityWithRetryAction.py +45 -45
- azure/durable_functions/models/actions/CallEntityAction.py +46 -46
- azure/durable_functions/models/actions/CallHttpAction.py +35 -35
- azure/durable_functions/models/actions/CallSubOrchestratorAction.py +40 -40
- azure/durable_functions/models/actions/CallSubOrchestratorWithRetryAction.py +44 -44
- azure/durable_functions/models/actions/CompoundAction.py +35 -35
- azure/durable_functions/models/actions/ContinueAsNewAction.py +36 -36
- azure/durable_functions/models/actions/CreateTimerAction.py +48 -48
- azure/durable_functions/models/actions/NoOpAction.py +35 -35
- azure/durable_functions/models/actions/SignalEntityAction.py +47 -47
- azure/durable_functions/models/actions/WaitForExternalEventAction.py +63 -63
- azure/durable_functions/models/actions/WhenAllAction.py +14 -14
- azure/durable_functions/models/actions/WhenAnyAction.py +14 -14
- azure/durable_functions/models/actions/__init__.py +24 -24
- azure/durable_functions/models/entities/EntityState.py +74 -74
- azure/durable_functions/models/entities/OperationResult.py +94 -76
- azure/durable_functions/models/entities/RequestMessage.py +53 -53
- azure/durable_functions/models/entities/ResponseMessage.py +48 -48
- azure/durable_functions/models/entities/Signal.py +62 -62
- azure/durable_functions/models/entities/__init__.py +17 -17
- azure/durable_functions/models/history/HistoryEvent.py +92 -92
- azure/durable_functions/models/history/HistoryEventType.py +27 -27
- azure/durable_functions/models/history/__init__.py +8 -8
- azure/durable_functions/models/utils/__init__.py +7 -7
- azure/durable_functions/models/utils/entity_utils.py +103 -91
- azure/durable_functions/models/utils/http_utils.py +80 -69
- azure/durable_functions/models/utils/json_utils.py +96 -56
- azure/durable_functions/orchestrator.py +73 -71
- azure/durable_functions/testing/OrchestratorGeneratorWrapper.py +42 -0
- azure/durable_functions/testing/__init__.py +6 -0
- {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/LICENSE +21 -21
- {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/METADATA +59 -58
- azure_functions_durable-1.3.0.dist-info/RECORD +103 -0
- {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/WHEEL +1 -1
- tests/models/test_DecoratorMetadata.py +135 -135
- tests/models/test_Decorators.py +107 -107
- tests/models/test_DurableOrchestrationBindings.py +68 -68
- tests/models/test_DurableOrchestrationClient.py +730 -730
- tests/models/test_DurableOrchestrationContext.py +102 -102
- tests/models/test_DurableOrchestrationStatus.py +59 -59
- tests/models/test_OrchestrationState.py +28 -28
- tests/models/test_RpcManagementOptions.py +79 -79
- tests/models/test_TokenSource.py +10 -10
- tests/orchestrator/models/OrchestrationInstance.py +18 -18
- tests/orchestrator/orchestrator_test_utils.py +130 -130
- tests/orchestrator/schemas/OrchetrationStateSchema.py +66 -66
- tests/orchestrator/test_call_http.py +235 -176
- tests/orchestrator/test_continue_as_new.py +67 -67
- tests/orchestrator/test_create_timer.py +126 -126
- tests/orchestrator/test_entity.py +397 -395
- tests/orchestrator/test_external_event.py +53 -53
- tests/orchestrator/test_fan_out_fan_in.py +175 -175
- tests/orchestrator/test_is_replaying_flag.py +101 -101
- tests/orchestrator/test_retries.py +308 -308
- tests/orchestrator/test_sequential_orchestrator.py +841 -841
- tests/orchestrator/test_sequential_orchestrator_custom_status.py +119 -119
- tests/orchestrator/test_sequential_orchestrator_with_retry.py +465 -465
- tests/orchestrator/test_serialization.py +30 -30
- tests/orchestrator/test_sub_orchestrator.py +95 -95
- tests/orchestrator/test_sub_orchestrator_with_retry.py +129 -129
- tests/orchestrator/test_task_any.py +60 -60
- tests/tasks/tasks_test_utils.py +17 -17
- tests/tasks/test_long_timers.py +70 -0
- tests/tasks/test_new_uuid.py +34 -34
- tests/test_utils/ContextBuilder.py +174 -174
- tests/test_utils/EntityContextBuilder.py +56 -56
- tests/test_utils/constants.py +1 -1
- tests/test_utils/json_utils.py +30 -30
- tests/test_utils/testClasses.py +56 -56
- tests/utils/__init__.py +1 -0
- tests/utils/test_entity_utils.py +24 -0
- azure_functions_durable-1.2.9.data/data/_manifest/bsi.json +0 -1
- azure_functions_durable-1.2.9.data/data/_manifest/manifest.cat +0 -0
- azure_functions_durable-1.2.9.data/data/_manifest/manifest.spdx.json +0 -11985
- azure_functions_durable-1.2.9.data/data/_manifest/manifest.spdx.json.sha256 +0 -1
- azure_functions_durable-1.2.9.dist-info/RECORD +0 -102
- {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
"""Base module for the Python Durable functions.
|
|
2
|
-
|
|
3
|
-
Exposes the different API components intended for public consumption
|
|
4
|
-
"""
|
|
5
|
-
from .orchestrator import Orchestrator
|
|
6
|
-
from .entity import Entity
|
|
7
|
-
from .models.utils.entity_utils import EntityId
|
|
8
|
-
from .models.DurableOrchestrationClient import DurableOrchestrationClient
|
|
9
|
-
from .models.OrchestrationRuntimeStatus import OrchestrationRuntimeStatus
|
|
10
|
-
from .models.DurableOrchestrationContext import DurableOrchestrationContext
|
|
11
|
-
from .models.DurableEntityContext import DurableEntityContext
|
|
12
|
-
from .models.RetryOptions import RetryOptions
|
|
13
|
-
from .models.TokenSource import ManagedIdentityTokenSource
|
|
14
|
-
import json
|
|
15
|
-
from pathlib import Path
|
|
16
|
-
import sys
|
|
17
|
-
import warnings
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def validate_extension_bundles():
|
|
21
|
-
"""Raise a warning if host.json contains bundle-range V1.
|
|
22
|
-
|
|
23
|
-
Effects
|
|
24
|
-
------
|
|
25
|
-
Warning: Warning prompting the user to update to bundles V2
|
|
26
|
-
"""
|
|
27
|
-
# No need to validate if we're running tests
|
|
28
|
-
if "pytest" in sys.modules:
|
|
29
|
-
return
|
|
30
|
-
|
|
31
|
-
host_path = "host.json"
|
|
32
|
-
bundles_key = "extensionBundle"
|
|
33
|
-
version_key = "version"
|
|
34
|
-
host_file = Path(host_path)
|
|
35
|
-
|
|
36
|
-
if not host_file.exists():
|
|
37
|
-
# If it doesn't exist, we ignore it
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
with open(host_path) as f:
|
|
41
|
-
host_settings = json.loads(f.read())
|
|
42
|
-
try:
|
|
43
|
-
version_range = host_settings[bundles_key][version_key]
|
|
44
|
-
except Exception:
|
|
45
|
-
# If bundle info is not available, we ignore it.
|
|
46
|
-
# For example: it's possible the user is using a manual extension install
|
|
47
|
-
return
|
|
48
|
-
# We do a best-effort attempt to detect bundles V1
|
|
49
|
-
# This is the string hard-coded into the bundles V1 template in VSCode
|
|
50
|
-
if version_range == "[1.*, 2.0.0)":
|
|
51
|
-
message = "Your application is currently configured to use Extension Bundles V1."\
|
|
52
|
-
" Durable Functions for Python works best with Bundles V2,"\
|
|
53
|
-
" which provides additional features like Durable Entities, better performance,"\
|
|
54
|
-
" and is actively being developed."\
|
|
55
|
-
" Please update to Bundles V2 in your `host.json`."\
|
|
56
|
-
" You can set extensionBundles version to be: [2.*, 3.0.0)"
|
|
57
|
-
warnings.warn(message)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
# Validate that users are not in extension bundles V1
|
|
61
|
-
validate_extension_bundles()
|
|
62
|
-
|
|
63
|
-
__all__ = [
|
|
64
|
-
'Orchestrator',
|
|
65
|
-
'Entity',
|
|
66
|
-
'EntityId',
|
|
67
|
-
'DurableOrchestrationClient',
|
|
68
|
-
'DurableEntityContext',
|
|
69
|
-
'DurableOrchestrationContext',
|
|
70
|
-
'ManagedIdentityTokenSource',
|
|
71
|
-
'OrchestrationRuntimeStatus',
|
|
72
|
-
'RetryOptions'
|
|
73
|
-
]
|
|
74
|
-
|
|
75
|
-
try:
|
|
76
|
-
# disabling linter on this line because it fails to recognize the conditional export
|
|
77
|
-
from .decorators.durable_app import (DFApp, Blueprint) # noqa
|
|
78
|
-
__all__.append('DFApp')
|
|
79
|
-
__all__.append('Blueprint')
|
|
80
|
-
except ModuleNotFoundError:
|
|
81
|
-
pass
|
|
1
|
+
"""Base module for the Python Durable functions.
|
|
2
|
+
|
|
3
|
+
Exposes the different API components intended for public consumption
|
|
4
|
+
"""
|
|
5
|
+
from .orchestrator import Orchestrator
|
|
6
|
+
from .entity import Entity
|
|
7
|
+
from .models.utils.entity_utils import EntityId
|
|
8
|
+
from .models.DurableOrchestrationClient import DurableOrchestrationClient
|
|
9
|
+
from .models.OrchestrationRuntimeStatus import OrchestrationRuntimeStatus
|
|
10
|
+
from .models.DurableOrchestrationContext import DurableOrchestrationContext
|
|
11
|
+
from .models.DurableEntityContext import DurableEntityContext
|
|
12
|
+
from .models.RetryOptions import RetryOptions
|
|
13
|
+
from .models.TokenSource import ManagedIdentityTokenSource
|
|
14
|
+
import json
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
import sys
|
|
17
|
+
import warnings
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def validate_extension_bundles():
|
|
21
|
+
"""Raise a warning if host.json contains bundle-range V1.
|
|
22
|
+
|
|
23
|
+
Effects
|
|
24
|
+
------
|
|
25
|
+
Warning: Warning prompting the user to update to bundles V2
|
|
26
|
+
"""
|
|
27
|
+
# No need to validate if we're running tests
|
|
28
|
+
if "pytest" in sys.modules:
|
|
29
|
+
return
|
|
30
|
+
|
|
31
|
+
host_path = "host.json"
|
|
32
|
+
bundles_key = "extensionBundle"
|
|
33
|
+
version_key = "version"
|
|
34
|
+
host_file = Path(host_path)
|
|
35
|
+
|
|
36
|
+
if not host_file.exists():
|
|
37
|
+
# If it doesn't exist, we ignore it
|
|
38
|
+
return
|
|
39
|
+
|
|
40
|
+
with open(host_path) as f:
|
|
41
|
+
host_settings = json.loads(f.read())
|
|
42
|
+
try:
|
|
43
|
+
version_range = host_settings[bundles_key][version_key]
|
|
44
|
+
except Exception:
|
|
45
|
+
# If bundle info is not available, we ignore it.
|
|
46
|
+
# For example: it's possible the user is using a manual extension install
|
|
47
|
+
return
|
|
48
|
+
# We do a best-effort attempt to detect bundles V1
|
|
49
|
+
# This is the string hard-coded into the bundles V1 template in VSCode
|
|
50
|
+
if version_range == "[1.*, 2.0.0)":
|
|
51
|
+
message = "Your application is currently configured to use Extension Bundles V1."\
|
|
52
|
+
" Durable Functions for Python works best with Bundles V2,"\
|
|
53
|
+
" which provides additional features like Durable Entities, better performance,"\
|
|
54
|
+
" and is actively being developed."\
|
|
55
|
+
" Please update to Bundles V2 in your `host.json`."\
|
|
56
|
+
" You can set extensionBundles version to be: [2.*, 3.0.0)"
|
|
57
|
+
warnings.warn(message)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Validate that users are not in extension bundles V1
|
|
61
|
+
validate_extension_bundles()
|
|
62
|
+
|
|
63
|
+
__all__ = [
|
|
64
|
+
'Orchestrator',
|
|
65
|
+
'Entity',
|
|
66
|
+
'EntityId',
|
|
67
|
+
'DurableOrchestrationClient',
|
|
68
|
+
'DurableEntityContext',
|
|
69
|
+
'DurableOrchestrationContext',
|
|
70
|
+
'ManagedIdentityTokenSource',
|
|
71
|
+
'OrchestrationRuntimeStatus',
|
|
72
|
+
'RetryOptions'
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
try:
|
|
76
|
+
# disabling linter on this line because it fails to recognize the conditional export
|
|
77
|
+
from .decorators.durable_app import (DFApp, Blueprint) # noqa
|
|
78
|
+
__all__.append('DFApp')
|
|
79
|
+
__all__.append('Blueprint')
|
|
80
|
+
except ModuleNotFoundError:
|
|
81
|
+
pass
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"""Constants used to determine the local running context."""
|
|
2
|
-
DEFAULT_LOCAL_HOST: str = 'localhost:7071'
|
|
3
|
-
DEFAULT_LOCAL_ORIGIN: str = f'http://{DEFAULT_LOCAL_HOST}'
|
|
4
|
-
DATETIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
5
|
-
HTTP_ACTION_NAME = 'BuiltIn::HttpActivity'
|
|
6
|
-
ORCHESTRATION_TRIGGER = "orchestrationTrigger"
|
|
7
|
-
ACTIVITY_TRIGGER = "activityTrigger"
|
|
8
|
-
ENTITY_TRIGGER = "entityTrigger"
|
|
9
|
-
DURABLE_CLIENT = "durableClient"
|
|
1
|
+
"""Constants used to determine the local running context."""
|
|
2
|
+
DEFAULT_LOCAL_HOST: str = 'localhost:7071'
|
|
3
|
+
DEFAULT_LOCAL_ORIGIN: str = f'http://{DEFAULT_LOCAL_HOST}'
|
|
4
|
+
DATETIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
5
|
+
HTTP_ACTION_NAME = 'BuiltIn::HttpActivity'
|
|
6
|
+
ORCHESTRATION_TRIGGER = "orchestrationTrigger"
|
|
7
|
+
ACTIVITY_TRIGGER = "activityTrigger"
|
|
8
|
+
ENTITY_TRIGGER = "entityTrigger"
|
|
9
|
+
DURABLE_CLIENT = "durableClient"
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
-
# Licensed under the MIT License.
|
|
3
|
-
"""Decorator definitions for Durable Functions."""
|
|
1
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
"""Decorator definitions for Durable Functions."""
|