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.
Files changed (104) hide show
  1. azure/durable_functions/__init__.py +81 -81
  2. azure/durable_functions/constants.py +9 -9
  3. azure/durable_functions/decorators/__init__.py +3 -3
  4. azure/durable_functions/decorators/durable_app.py +260 -249
  5. azure/durable_functions/decorators/metadata.py +109 -109
  6. azure/durable_functions/entity.py +129 -125
  7. azure/durable_functions/models/DurableEntityContext.py +201 -201
  8. azure/durable_functions/models/DurableHttpRequest.py +58 -58
  9. azure/durable_functions/models/DurableOrchestrationBindings.py +66 -66
  10. azure/durable_functions/models/DurableOrchestrationClient.py +812 -781
  11. azure/durable_functions/models/DurableOrchestrationContext.py +761 -707
  12. azure/durable_functions/models/DurableOrchestrationStatus.py +156 -156
  13. azure/durable_functions/models/EntityStateResponse.py +23 -23
  14. azure/durable_functions/models/FunctionContext.py +7 -7
  15. azure/durable_functions/models/OrchestrationRuntimeStatus.py +32 -32
  16. azure/durable_functions/models/OrchestratorState.py +117 -116
  17. azure/durable_functions/models/PurgeHistoryResult.py +33 -33
  18. azure/durable_functions/models/ReplaySchema.py +9 -8
  19. azure/durable_functions/models/RetryOptions.py +69 -69
  20. azure/durable_functions/models/RpcManagementOptions.py +86 -86
  21. azure/durable_functions/models/Task.py +540 -426
  22. azure/durable_functions/models/TaskOrchestrationExecutor.py +352 -336
  23. azure/durable_functions/models/TokenSource.py +56 -56
  24. azure/durable_functions/models/__init__.py +26 -24
  25. azure/durable_functions/models/actions/Action.py +23 -23
  26. azure/durable_functions/models/actions/ActionType.py +18 -18
  27. azure/durable_functions/models/actions/CallActivityAction.py +41 -41
  28. azure/durable_functions/models/actions/CallActivityWithRetryAction.py +45 -45
  29. azure/durable_functions/models/actions/CallEntityAction.py +46 -46
  30. azure/durable_functions/models/actions/CallHttpAction.py +35 -35
  31. azure/durable_functions/models/actions/CallSubOrchestratorAction.py +40 -40
  32. azure/durable_functions/models/actions/CallSubOrchestratorWithRetryAction.py +44 -44
  33. azure/durable_functions/models/actions/CompoundAction.py +35 -35
  34. azure/durable_functions/models/actions/ContinueAsNewAction.py +36 -36
  35. azure/durable_functions/models/actions/CreateTimerAction.py +48 -48
  36. azure/durable_functions/models/actions/NoOpAction.py +35 -35
  37. azure/durable_functions/models/actions/SignalEntityAction.py +47 -47
  38. azure/durable_functions/models/actions/WaitForExternalEventAction.py +63 -63
  39. azure/durable_functions/models/actions/WhenAllAction.py +14 -14
  40. azure/durable_functions/models/actions/WhenAnyAction.py +14 -14
  41. azure/durable_functions/models/actions/__init__.py +24 -24
  42. azure/durable_functions/models/entities/EntityState.py +74 -74
  43. azure/durable_functions/models/entities/OperationResult.py +94 -76
  44. azure/durable_functions/models/entities/RequestMessage.py +53 -53
  45. azure/durable_functions/models/entities/ResponseMessage.py +48 -48
  46. azure/durable_functions/models/entities/Signal.py +62 -62
  47. azure/durable_functions/models/entities/__init__.py +17 -17
  48. azure/durable_functions/models/history/HistoryEvent.py +92 -92
  49. azure/durable_functions/models/history/HistoryEventType.py +27 -27
  50. azure/durable_functions/models/history/__init__.py +8 -8
  51. azure/durable_functions/models/utils/__init__.py +7 -7
  52. azure/durable_functions/models/utils/entity_utils.py +103 -91
  53. azure/durable_functions/models/utils/http_utils.py +80 -69
  54. azure/durable_functions/models/utils/json_utils.py +96 -56
  55. azure/durable_functions/orchestrator.py +73 -71
  56. azure/durable_functions/testing/OrchestratorGeneratorWrapper.py +42 -0
  57. azure/durable_functions/testing/__init__.py +6 -0
  58. {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/LICENSE +21 -21
  59. {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/METADATA +59 -58
  60. azure_functions_durable-1.3.0.dist-info/RECORD +103 -0
  61. {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/WHEEL +1 -1
  62. tests/models/test_DecoratorMetadata.py +135 -135
  63. tests/models/test_Decorators.py +107 -107
  64. tests/models/test_DurableOrchestrationBindings.py +68 -68
  65. tests/models/test_DurableOrchestrationClient.py +730 -730
  66. tests/models/test_DurableOrchestrationContext.py +102 -102
  67. tests/models/test_DurableOrchestrationStatus.py +59 -59
  68. tests/models/test_OrchestrationState.py +28 -28
  69. tests/models/test_RpcManagementOptions.py +79 -79
  70. tests/models/test_TokenSource.py +10 -10
  71. tests/orchestrator/models/OrchestrationInstance.py +18 -18
  72. tests/orchestrator/orchestrator_test_utils.py +130 -130
  73. tests/orchestrator/schemas/OrchetrationStateSchema.py +66 -66
  74. tests/orchestrator/test_call_http.py +235 -176
  75. tests/orchestrator/test_continue_as_new.py +67 -67
  76. tests/orchestrator/test_create_timer.py +126 -126
  77. tests/orchestrator/test_entity.py +397 -395
  78. tests/orchestrator/test_external_event.py +53 -53
  79. tests/orchestrator/test_fan_out_fan_in.py +175 -175
  80. tests/orchestrator/test_is_replaying_flag.py +101 -101
  81. tests/orchestrator/test_retries.py +308 -308
  82. tests/orchestrator/test_sequential_orchestrator.py +841 -841
  83. tests/orchestrator/test_sequential_orchestrator_custom_status.py +119 -119
  84. tests/orchestrator/test_sequential_orchestrator_with_retry.py +465 -465
  85. tests/orchestrator/test_serialization.py +30 -30
  86. tests/orchestrator/test_sub_orchestrator.py +95 -95
  87. tests/orchestrator/test_sub_orchestrator_with_retry.py +129 -129
  88. tests/orchestrator/test_task_any.py +60 -60
  89. tests/tasks/tasks_test_utils.py +17 -17
  90. tests/tasks/test_long_timers.py +70 -0
  91. tests/tasks/test_new_uuid.py +34 -34
  92. tests/test_utils/ContextBuilder.py +174 -174
  93. tests/test_utils/EntityContextBuilder.py +56 -56
  94. tests/test_utils/constants.py +1 -1
  95. tests/test_utils/json_utils.py +30 -30
  96. tests/test_utils/testClasses.py +56 -56
  97. tests/utils/__init__.py +1 -0
  98. tests/utils/test_entity_utils.py +24 -0
  99. azure_functions_durable-1.2.9.data/data/_manifest/bsi.json +0 -1
  100. azure_functions_durable-1.2.9.data/data/_manifest/manifest.cat +0 -0
  101. azure_functions_durable-1.2.9.data/data/_manifest/manifest.spdx.json +0 -11985
  102. azure_functions_durable-1.2.9.data/data/_manifest/manifest.spdx.json.sha256 +0 -1
  103. azure_functions_durable-1.2.9.dist-info/RECORD +0 -102
  104. {azure_functions_durable-1.2.9.dist-info → azure_functions_durable-1.3.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,42 @@
1
+ from typing import Generator, Any, Union
2
+
3
+ from azure.durable_functions.models import TaskBase
4
+
5
+
6
+ def orchestrator_generator_wrapper(
7
+ generator: Generator[TaskBase, Any, Any]) -> Generator[Union[TaskBase, Any], None, None]:
8
+ """Wrap a user-defined orchestrator function in a way that simulates the Durable replay logic.
9
+
10
+ Parameters
11
+ ----------
12
+ generator: Generator[TaskBase, Any, Any]
13
+ Generator orchestrator as defined in the user function app. This generator is expected
14
+ to yield a series of TaskBase objects and receive the results of these tasks until
15
+ returning the result of the orchestrator.
16
+
17
+ Returns
18
+ -------
19
+ Generator[Union[TaskBase, Any], None, None]
20
+ A simplified version of the orchestrator which takes no inputs. This generator will
21
+ yield back the TaskBase objects that are yielded from the user orchestrator as well
22
+ as the final result of the orchestrator. Exception handling is also simulated here
23
+ in the same way as replay, where tasks returning exceptions are thrown back into the
24
+ orchestrator.
25
+ """
26
+ previous = next(generator)
27
+ yield previous
28
+ while True:
29
+ try:
30
+ previous_result = None
31
+ try:
32
+ previous_result = previous.result
33
+ except Exception as e:
34
+ # Simulated activity exceptions, timer interrupted exceptions,
35
+ # or anytime a task would throw.
36
+ previous = generator.throw(e)
37
+ else:
38
+ previous = generator.send(previous_result)
39
+ yield previous
40
+ except StopIteration as e:
41
+ yield e.value
42
+ return
@@ -0,0 +1,6 @@
1
+ """Unit testing utilities for Azure Durable functions."""
2
+ from .OrchestratorGeneratorWrapper import orchestrator_generator_wrapper
3
+
4
+ __all__ = [
5
+ 'orchestrator_generator_wrapper'
6
+ ]
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 Katy Shimizu
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Katy Shimizu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,58 +1,59 @@
1
- Metadata-Version: 2.1
2
- Name: azure-functions-durable
3
- Version: 1.2.9
4
- Summary: Durable Functions For Python
5
- Home-page: https://github.com/Azure/azure-functions-durable-python
6
- Author: Azure Functions team at Microsoft Corp.
7
- Author-email: azurefunctions@microsoft.com
8
- License: MIT
9
- Keywords: azure functions azurefunctions python serverless workflows durablefunctions
10
- Platform: UNKNOWN
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Operating System :: Microsoft :: Windows
15
- Classifier: Operating System :: POSIX
16
- Classifier: Operating System :: MacOS :: MacOS X
17
- Classifier: Environment :: Web Environment
18
- Classifier: Development Status :: 5 - Production/Stable
19
- Requires-Python: >=3.6,<4
20
- Description-Content-Type: text/markdown
21
- Requires-Dist: azure-functions >=1.12.0
22
- Requires-Dist: aiohttp >=3.6.2
23
- Requires-Dist: requests ==2.*
24
- Requires-Dist: python-dateutil >=2.8.0
25
- Requires-Dist: furl >=2.1.0
26
-
27
- |Branch|Status|
28
- |---|---|
29
- |main|[![Build Status](https://azfunc.visualstudio.com/Azure%20Functions/_apis/build/status/Azure.azure-functions-durable-python?branchName=main)](https://azfunc.visualstudio.com/Azure%20Functions/_build/latest?definitionId=58&branchName=main)|
30
- |dev|[![Build Status](https://azfunc.visualstudio.com/Azure%20Functions/_apis/build/status/Azure.azure-functions-durable-python?branchName=dev)](https://azfunc.visualstudio.com/Azure%20Functions/_build/latest?definitionId=58&branchName=dev)|
31
-
32
- # Durable Functions for Python
33
-
34
- [Durable Functions](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview) is an extension of [Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview) that lets you write stateful functions in a serverless compute environment. The extension lets you define stateful workflows by writing orchestrator functions and stateful entities by writing entity functions using the Azure Functions programming model. Behind the scenes, the extension manages state, checkpoints, and restarts for you, allowing you to focus on your business logic.
35
-
36
- 🐍 Find us on PyPi [here](https://pypi.org/project/azure-functions-durable/) 🐍
37
-
38
-
39
- You can find more information at the following links:
40
-
41
- * [Azure Functions overview](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview)
42
- * [Azure Functions Python developers guide](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python)
43
- * [Durable Functions overview](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=python)
44
- * [Core concepts and features overview](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-types-features-overview).
45
-
46
- > Durable Functions expects certain programming constraints to be followed. Please read the documentation linked above for more information.
47
-
48
- ## Getting Started
49
-
50
- Follow these instructions to get started with Durable Functions in Python:
51
-
52
- **🚀 [Python Durable Functions quickstart](https://docs.microsoft.com/azure/azure-functions/durable/quickstart-python-vscode)**
53
-
54
- ## Tooling
55
-
56
- * Python Durable Functions requires [Azure Functions Core Tools](https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local) version 3.0.2630 or higher.
57
-
58
-
1
+ Metadata-Version: 2.1
2
+ Name: azure-functions-durable
3
+ Version: 1.3.0
4
+ Summary: Durable Functions For Python
5
+ Home-page: https://github.com/Azure/azure-functions-durable-python
6
+ Author: Azure Functions team at Microsoft Corp.
7
+ Author-email: azurefunctions@microsoft.com
8
+ License: MIT
9
+ Keywords: azure functions azurefunctions python serverless workflows durablefunctions
10
+ Platform: UNKNOWN
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Operating System :: Microsoft :: Windows
15
+ Classifier: Operating System :: POSIX
16
+ Classifier: Operating System :: MacOS :: MacOS X
17
+ Classifier: Environment :: Web Environment
18
+ Classifier: Development Status :: 5 - Production/Stable
19
+ Requires-Python: >=3.6,<4
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: azure-functions>=1.12.0
23
+ Requires-Dist: aiohttp>=3.6.2
24
+ Requires-Dist: requests==2.*
25
+ Requires-Dist: python-dateutil>=2.8.0
26
+ Requires-Dist: furl>=2.1.0
27
+
28
+ |Branch|Status|
29
+ |---|---|
30
+ |main|[![Build Status](https://azfunc.visualstudio.com/Azure%20Functions/_apis/build/status/Azure.azure-functions-durable-python?branchName=main)](https://azfunc.visualstudio.com/Azure%20Functions/_build/latest?definitionId=58&branchName=main)|
31
+ |dev|[![Build Status](https://azfunc.visualstudio.com/Azure%20Functions/_apis/build/status/Azure.azure-functions-durable-python?branchName=dev)](https://azfunc.visualstudio.com/Azure%20Functions/_build/latest?definitionId=58&branchName=dev)|
32
+
33
+ # Durable Functions for Python
34
+
35
+ [Durable Functions](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview) is an extension of [Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview) that lets you write stateful functions in a serverless compute environment. The extension lets you define stateful workflows by writing orchestrator functions and stateful entities by writing entity functions using the Azure Functions programming model. Behind the scenes, the extension manages state, checkpoints, and restarts for you, allowing you to focus on your business logic.
36
+
37
+ 🐍 Find us on PyPi [here](https://pypi.org/project/azure-functions-durable/) 🐍
38
+
39
+
40
+ You can find more information at the following links:
41
+
42
+ * [Azure Functions overview](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview)
43
+ * [Azure Functions Python developers guide](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python)
44
+ * [Durable Functions overview](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=python)
45
+ * [Core concepts and features overview](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-types-features-overview).
46
+
47
+ > Durable Functions expects certain programming constraints to be followed. Please read the documentation linked above for more information.
48
+
49
+ ## Getting Started
50
+
51
+ Follow these instructions to get started with Durable Functions in Python:
52
+
53
+ **🚀 [Python Durable Functions quickstart](https://docs.microsoft.com/azure/azure-functions/durable/quickstart-python-vscode)**
54
+
55
+ ## Tooling
56
+
57
+ * Python Durable Functions requires [Azure Functions Core Tools](https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local) version 3.0.2630 or higher.
58
+
59
+
@@ -0,0 +1,103 @@
1
+ azure/durable_functions/__init__.py,sha256=Syz9yrT8sHREVyxqvwjg8_c_h8yMTyuBHcDMsuQs1YM,2910
2
+ azure/durable_functions/constants.py,sha256=JtknDhaVihMeo-ygY9QNofiO2KEqnQvopdfZ6Qatnik,414
3
+ azure/durable_functions/entity.py,sha256=mUUzb1BZiDrUJjvxOTlnVURnKPyDGPJ3mXXMN0DKT7M,4649
4
+ azure/durable_functions/orchestrator.py,sha256=SZni90Aweq0OZykHyMblfJpUndJ2woJmySarcsDiIK4,2554
5
+ azure/durable_functions/decorators/__init__.py,sha256=wEubgP2rUUISwidZWgKx6mmzEeGKsSnpGmetjIUi1nw,150
6
+ azure/durable_functions/decorators/durable_app.py,sha256=8K4gevZVYcDvifxXVuvTt8YzF8jx63c1PwdBBk1Vt0g,10114
7
+ azure/durable_functions/decorators/metadata.py,sha256=p91rdCe6OSRYJaKAXnrfR0QCV3PoHK7aGy1m6WAnPIE,2828
8
+ azure/durable_functions/models/DurableEntityContext.py,sha256=cyZmjjZu18oV9S4A2NpnXfjd1JQxPxp9EMmAR424UK0,5830
9
+ azure/durable_functions/models/DurableHttpRequest.py,sha256=a5kgRdg4eA0sgyDcpmQWc0dbwP-o3BwWW2Ive0BYO_Q,2021
10
+ azure/durable_functions/models/DurableOrchestrationBindings.py,sha256=_hp61WjN3bQYCqYFQuvUaDdRu7C14fPg7lFbaA9TRe4,2408
11
+ azure/durable_functions/models/DurableOrchestrationClient.py,sha256=kQBqeKugvi2mi-7dDbCxlu67r20doEhDknlchYxcLBE,33018
12
+ azure/durable_functions/models/DurableOrchestrationContext.py,sha256=mbA1Do_1NP_uuqhCUoEsegqBtlNugUB0_tdVWQ1PRoI,31849
13
+ azure/durable_functions/models/DurableOrchestrationStatus.py,sha256=BXWz9L7np4Q9k6z4NsfLX97i2U2IFh94TVeRSV2BjM4,6049
14
+ azure/durable_functions/models/EntityStateResponse.py,sha256=f48W8gmlb-D5iJw3eDyUMYVwHpmIxP6k6a7o2TRHwII,674
15
+ azure/durable_functions/models/FunctionContext.py,sha256=4gHTmIo8DZN-bZLM-hyjoQFlv-AbsfLMT1_X4WxWxqY,274
16
+ azure/durable_functions/models/OrchestrationRuntimeStatus.py,sha256=lCT31d85B9dHA12n7Twdd9gQ-ISCtt-bkEwi3TXVHoE,969
17
+ azure/durable_functions/models/OrchestratorState.py,sha256=xgoEz8Ya8V5kFO997GiS70IVS2EXhDcMZwoclVaseu0,4073
18
+ azure/durable_functions/models/PurgeHistoryResult.py,sha256=C_Ppdk7TEn0fuYZ971u3I_GHQBUqPuLqCrVyvp6YRsY,1092
19
+ azure/durable_functions/models/ReplaySchema.py,sha256=85YZD-QWgMQSfZsRQlfQfLPzK9FMITcWK241Vofw6pU,170
20
+ azure/durable_functions/models/RetryOptions.py,sha256=-rmv3mQmzQ_2utFy1d-ontqpcgP139B8MQroanfN54w,1988
21
+ azure/durable_functions/models/RpcManagementOptions.py,sha256=aEOWx_xUWl4Rwb2-7kpyml8rzTX9Vl4s71LkqYPLnHw,3482
22
+ azure/durable_functions/models/Task.py,sha256=e548_wfJkYY_UCpJkwqVVM65tyP6jchox_YNsf8SslM,19559
23
+ azure/durable_functions/models/TaskOrchestrationExecutor.py,sha256=PBbS3aEKn1JCFhvjR9oz4-WmIW_9vh6-ILzImxVN7zw,16085
24
+ azure/durable_functions/models/TokenSource.py,sha256=9uLxiOV8lcDj--3tD0XxcQnigk9AozjdOoJyskctErU,1822
25
+ azure/durable_functions/models/__init__.py,sha256=L7ynxb_mBGCvV1iEAfpJU9_b-8ubKIEJKaZa2aoqjek,999
26
+ azure/durable_functions/models/actions/Action.py,sha256=0jp-SP_12YmZWWctOXmwl48Ozw3dMMq5-crUAkK8Qk0,598
27
+ azure/durable_functions/models/actions/ActionType.py,sha256=FAQh_EPcFru7rOPYWKpYFBSbZpFEQc2-jsrapRJvFG0,507
28
+ azure/durable_functions/models/actions/CallActivityAction.py,sha256=G9O9JML-Z0_A_WWB4iTbDkvE3iNRtNkES2iNsUQ2SVc,1496
29
+ azure/durable_functions/models/actions/CallActivityWithRetryAction.py,sha256=0dG-NR1YQjiisNhbTsAxG7hCQZBwoJoD8b3B4iuQlmE,1686
30
+ azure/durable_functions/models/actions/CallEntityAction.py,sha256=rYXiWqY5cNBqQH7I4wZYjcU1FBTRrOHV-o5Kg8Ct7PE,1672
31
+ azure/durable_functions/models/actions/CallHttpAction.py,sha256=UaRTDzvO-W3MvSRj4zkxdSAWgU6qfm-0xjvPlrhPSGY,1162
32
+ azure/durable_functions/models/actions/CallSubOrchestratorAction.py,sha256=-q73TW--QhyIijfaCldF0QKQ3Ar9FbSAJCy1HBu1-mY,1541
33
+ azure/durable_functions/models/actions/CallSubOrchestratorWithRetryAction.py,sha256=S2TD8ulOZlQhi-xB6uzBhbvYEo435sUkIx3Abs6F0oo,1799
34
+ azure/durable_functions/models/actions/CompoundAction.py,sha256=qYySRtq5HuLLmOYMNFkrA0NuNlkT6RYuEeWQY7RIwvo,1117
35
+ azure/durable_functions/models/actions/ContinueAsNewAction.py,sha256=Jrj28QRqxEXHjcs4yGF3tusjtKGH00MBbo6Z5dz6J4k,1195
36
+ azure/durable_functions/models/actions/CreateTimerAction.py,sha256=pYVY4sH5iW7zecvueWljLBhVoLvXysmYdGE54URk90U,1575
37
+ azure/durable_functions/models/actions/NoOpAction.py,sha256=xJ0XwhUWp1pDevuyIYvJRikh7yQCj9drfFawGVIBN3U,1364
38
+ azure/durable_functions/models/actions/SignalEntityAction.py,sha256=A88Qs05pEUOFKA7fTyLxWUmBlv3GIlmiWM59rkjcvcU,1680
39
+ azure/durable_functions/models/actions/WaitForExternalEventAction.py,sha256=_oj9hwTnDarLI7OstKJaB8XGwLeKeKPJExi_kSDkgsw,2008
40
+ azure/durable_functions/models/actions/WhenAllAction.py,sha256=xfcvSsJ3zsRL6IbpM86WpwS_TGZsZ7dZ4em3W_U2FTQ,478
41
+ azure/durable_functions/models/actions/WhenAnyAction.py,sha256=VyKu2iv5ML2862nu4d_ZG0Cbm50546MnhJ6RZyxghso,478
42
+ azure/durable_functions/models/actions/__init__.py,sha256=q3dRJc1r7q6-IYjOGM5LJqoBPp2PkE4argVJ2SUjne4,861
43
+ azure/durable_functions/models/entities/EntityState.py,sha256=lVmkM18z7xExdt1wO1IFJc5MYliVBO3k0fiPyIcu97o,2257
44
+ azure/durable_functions/models/entities/OperationResult.py,sha256=RHGoCcLeAiMtDiZH5aYW-s4-IDuVtXArlxhktf49kWs,2766
45
+ azure/durable_functions/models/entities/RequestMessage.py,sha256=y2BG1-HQuPbN91qOh_XrFainFp27YbSk9dotA2ePOPA,1742
46
+ azure/durable_functions/models/entities/ResponseMessage.py,sha256=GC6HnD3mkIfkGptpazq4yOGJfciL2kkVxbcv1R80B7I,1588
47
+ azure/durable_functions/models/entities/Signal.py,sha256=TjyvkG9kzxyjyRGz1bItxt1MI-QN2QS2YK3e7rFP41g,1313
48
+ azure/durable_functions/models/entities/__init__.py,sha256=3-jkW0vf_2QqM_GuwZI2gc11lEgzVrxDV-W9ylFGZro,374
49
+ azure/durable_functions/models/history/HistoryEvent.py,sha256=gQd-UpUaYWct9e4fqd4GBBzcjKsMpDaOHbDYkb4cHUY,2563
50
+ azure/durable_functions/models/history/HistoryEventType.py,sha256=NdCQQrqvWFw5GiCrGsXkDK5LHEJOjcje2zl4xSkAqdE,743
51
+ azure/durable_functions/models/history/__init__.py,sha256=otJhZJN9OeGtWrW3lKbk2C1Nyf6I2wJfwuXpCZ2oxYM,237
52
+ azure/durable_functions/models/utils/__init__.py,sha256=dQ6-HRUPsCtDIqGjRJ3TA6NXSYXzhw5yLA2OP-zkm-s,221
53
+ azure/durable_functions/models/utils/entity_utils.py,sha256=TqNTtRC8VuKFtqWLq9oEAloioV-FyinjgRYVKkCldHo,2881
54
+ azure/durable_functions/models/utils/http_utils.py,sha256=AoCWjCapd_984J_4296iJ8cNJWEG8GIdhRttBPt0HnA,2551
55
+ azure/durable_functions/models/utils/json_utils.py,sha256=zUn62pm3dQw054ZlK7F4uRP-UELjQC8EmZBU1WncHMg,3811
56
+ azure/durable_functions/testing/OrchestratorGeneratorWrapper.py,sha256=cjh-HAq5rVNCoR0pIbfGrqy6cKSf4S1KMQxrBMWU1-s,1728
57
+ azure/durable_functions/testing/__init__.py,sha256=NLbltPtoPXK-0iMTwcKTKPjQlAWrEq55oDYmrhYz6vg,189
58
+ tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ tests/models/test_DecoratorMetadata.py,sha256=0PeUDszF_gAJZMZR-K-Ro7c3I1D960amOLtbT88L_dk,3918
60
+ tests/models/test_Decorators.py,sha256=y2dhoSlP74J5uAVBDY2JfFkSA-AhyagVBZO5tGi6KaQ,2925
61
+ tests/models/test_DurableOrchestrationBindings.py,sha256=pjuoKlpEc6KAIL-Nq2taoqW0HYWXoupgUxcsPwc1Psg,2961
62
+ tests/models/test_DurableOrchestrationClient.py,sha256=7htzuMMfkRU9Hf-9Gr-rYHpJXJdpnAp0WheAFpMKHNo,31791
63
+ tests/models/test_DurableOrchestrationContext.py,sha256=7fWdnvpSEces0VM4Xm11uLZmshXqGl7wtYo8ELixypc,3930
64
+ tests/models/test_DurableOrchestrationStatus.py,sha256=fnUZxrHGy771OoaD5TInELhaG836aB8XqtMdNjnEFp8,2485
65
+ tests/models/test_OrchestrationState.py,sha256=L-k8ScrqoDIZEqIUORbxXA7yCuMbVAUPr-7VmyuQkUc,1272
66
+ tests/models/test_RpcManagementOptions.py,sha256=hvDzlJED8egJloju5nFvKYusgwLgy-o_avJAY6uzfdg,3190
67
+ tests/models/test_TokenSource.py,sha256=wlRn-RPM72U6Ose4sa3Yvu2ng1VbAopDIbea90CYDjk,589
68
+ tests/orchestrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ tests/orchestrator/orchestrator_test_utils.py,sha256=ldgQGGuOVALcI98enRU08nF_VJd5ypJl-hVG-q0kH1o,5359
70
+ tests/orchestrator/test_call_http.py,sha256=CvemeCayrQLjmjl3lpB1fk_CpV-DRPgfxLgD4iNgStQ,9103
71
+ tests/orchestrator/test_continue_as_new.py,sha256=k9mS8tHE1GX9uogCgrrgXJynydxExrlAlGIpC4ojNP0,2575
72
+ tests/orchestrator/test_create_timer.py,sha256=HPaJrYYmyvWqBFqmu2jatLK911DA8knfF88GMRWMhJY,5576
73
+ tests/orchestrator/test_entity.py,sha256=fcHhh1kcLDv9GXnChMUsFwYWiRiBRXKLlFp823pooWs,13922
74
+ tests/orchestrator/test_external_event.py,sha256=DfeOFCdt2haxTwVQ1_lQtwkrdhb3EVlXsavVGo8HrmE,2534
75
+ tests/orchestrator/test_fan_out_fan_in.py,sha256=8pNPA2remGz8GLThqINAuYi5FVIMNdE1Ya5zqhXHDKc,7218
76
+ tests/orchestrator/test_is_replaying_flag.py,sha256=se8GOmI_5EP7jae8gdWFFSBEIfWbpgaQstyJwje5sdY,4386
77
+ tests/orchestrator/test_retries.py,sha256=vCKRSMOpzbWSLBRhHWHeLgCFZzAlOZFEitHYjBU83G4,11111
78
+ tests/orchestrator/test_sequential_orchestrator.py,sha256=eiiLiUQsglI7N9JNwxqR_VvnkL6ZqNmwU3Oo-Q2Xol0,32864
79
+ tests/orchestrator/test_sequential_orchestrator_custom_status.py,sha256=xQlvpxVnyGiBcAOv_N4Hth2IW2MPWo2AHIz4Fy4hVQM,4671
80
+ tests/orchestrator/test_sequential_orchestrator_with_retry.py,sha256=YciqQndDlIgPiZEM4W6LUiFwOc-XVLaZ80yyupsu2n4,18647
81
+ tests/orchestrator/test_serialization.py,sha256=V0ezb1kcA3lGKmbLkFPouudugpBmg-zkw0c1IaI7ZZA,1239
82
+ tests/orchestrator/test_sub_orchestrator.py,sha256=QUb5Q3nLcCdhFwGaEQlYdoNQLUvI8ZhAxrXtCzFMRJo,4178
83
+ tests/orchestrator/test_sub_orchestrator_with_retry.py,sha256=bfufQnteEZ9i3q7wzCvd8EwFmaOh89KPOpTPSJvlP1I,6040
84
+ tests/orchestrator/test_task_any.py,sha256=9PQalbQW-Qx7_iO4Yjl1MR2hhsBjst6k00_4veIt97g,2695
85
+ tests/orchestrator/models/OrchestrationInstance.py,sha256=CQ3qyNumjksuFNMujbESsvjadntP3b9VtTpEuI4hzaE,491
86
+ tests/orchestrator/schemas/OrchetrationStateSchema.py,sha256=EyTsDUZ3K-9mVljLIlg8f_h2zsK228E0PMvvtyEWw24,2718
87
+ tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ tests/tasks/tasks_test_utils.py,sha256=Ymc5GESJpzybBq3n2mT4IABDRNTVCerAZrlMilv0Pdk,737
89
+ tests/tasks/test_long_timers.py,sha256=KDN0AM4R1Jqaf3L1i7xUXEUIyPUzP6PFRplmD2IamlI,3494
90
+ tests/tasks/test_new_uuid.py,sha256=iaQcF5iPZdU3e1SiKSiP6vQrQeMFehUp354ShMRHE7s,1419
91
+ tests/test_utils/ContextBuilder.py,sha256=l1dDeI1FXdTaiUYwcYNPOtYiivh2c2xUfoOo_AcXgL0,7459
92
+ tests/test_utils/EntityContextBuilder.py,sha256=Gjh0ERX6ND5RZ3blCmix8z0RrmfOVfoY0xm8LuUoZGo,1939
93
+ tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
+ tests/test_utils/constants.py,sha256=JGJtzKCnMmMk6Ldt--dqZWiZxkhdEgEfVhgoqtR_tGY,54
95
+ tests/test_utils/json_utils.py,sha256=B0q3COMya7TGxbH-7sD_0ypWDSuaF4fpD4QV_oJPgGk,1411
96
+ tests/test_utils/testClasses.py,sha256=U_u5qKxC9U81SzjLo7ejjPjEn_cE5qjaqoq8edGD6l8,1521
97
+ tests/utils/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
98
+ tests/utils/test_entity_utils.py,sha256=kdk5_DV_-bFu_5q2mw9o1yjyzh8Lcxv1jo1Q7is_ukA,748
99
+ azure_functions_durable-1.3.0.dist-info/LICENSE,sha256=-VS-Izmxdykuae1Xc4vHtVUx02rNQi6SSQlONvvuYeQ,1090
100
+ azure_functions_durable-1.3.0.dist-info/METADATA,sha256=J5O8Dj6UelbQLakvfSnQdiZoIK9qJ2tg-yaAxrS1fOI,3438
101
+ azure_functions_durable-1.3.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
102
+ azure_functions_durable-1.3.0.dist-info/top_level.txt,sha256=h-L8XDVPJ9YzBbHlPvM7FVo1cqNGToNK9ix99ySGOUY,12
103
+ azure_functions_durable-1.3.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.45.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,136 +1,136 @@
1
- from azure.durable_functions.decorators.metadata import OrchestrationTrigger,\
2
- EntityTrigger, ActivityTrigger, DurableClient
3
- from azure.durable_functions.constants import ORCHESTRATION_TRIGGER, \
4
- ACTIVITY_TRIGGER, ENTITY_TRIGGER, DURABLE_CLIENT
5
- from azure.functions.decorators.core import BindingDirection
6
-
7
-
8
- def test_OrchestrationTrigger_with_full_params():
9
- trigger = OrchestrationTrigger(
10
- name="myContext",
11
- orchestration="myOrchestratorFunction"
12
- )
13
-
14
- binding_name = trigger.get_binding_name()
15
- assert binding_name == ORCHESTRATION_TRIGGER
16
-
17
- dict_repr = trigger.get_dict_repr()
18
- assert dict_repr == {
19
- "direction": BindingDirection.IN,
20
- "type": "orchestrationTrigger",
21
- "name": "myContext",
22
- "orchestration": "myOrchestratorFunction"
23
- }
24
-
25
- def test_OrchestrationTrigger_with_default_params():
26
- trigger = OrchestrationTrigger(
27
- name="myContext",
28
- )
29
-
30
- binding_name = trigger.get_binding_name()
31
- assert binding_name == ORCHESTRATION_TRIGGER
32
-
33
- dict_repr = trigger.get_dict_repr()
34
- assert dict_repr == {
35
- "direction": BindingDirection.IN,
36
- "type": "orchestrationTrigger",
37
- "name": "myContext"
38
- }
39
-
40
- def test_EntityTrigger_with_full_params():
41
- trigger = EntityTrigger(
42
- name="myContext",
43
- entity_name="myEntityFunction"
44
- )
45
-
46
- binding_name = trigger.get_binding_name()
47
- assert binding_name == ENTITY_TRIGGER
48
-
49
- dict_repr = trigger.get_dict_repr()
50
- assert dict_repr == {
51
- "direction": BindingDirection.IN,
52
- "type": "entityTrigger",
53
- "name": "myContext",
54
- "entityName": "myEntityFunction"
55
- }
56
-
57
- def test_EntityTrigger_with_default_params():
58
- trigger = EntityTrigger(
59
- name="myContext",
60
- )
61
-
62
- binding_name = trigger.get_binding_name()
63
- assert binding_name == ENTITY_TRIGGER
64
-
65
- dict_repr = trigger.get_dict_repr()
66
- assert dict_repr == {
67
- "direction": BindingDirection.IN,
68
- "type": "entityTrigger",
69
- "name": "myContext"
70
- }
71
-
72
- def test_ActivityTrigger_with_full_params():
73
- trigger = ActivityTrigger(
74
- name="myInput",
75
- activity="myActivityFunction"
76
- )
77
-
78
- binding_name = trigger.get_binding_name()
79
- assert binding_name == ACTIVITY_TRIGGER
80
-
81
- dict_repr = trigger.get_dict_repr()
82
- assert dict_repr == {
83
- "direction": BindingDirection.IN,
84
- "type": "activityTrigger",
85
- "name": "myInput",
86
- "activity": "myActivityFunction"
87
- }
88
-
89
- def test_ActivityTrigger_with_default_params():
90
- trigger = ActivityTrigger(
91
- name="myInput"
92
- )
93
-
94
- binding_name = trigger.get_binding_name()
95
- assert binding_name == ACTIVITY_TRIGGER
96
-
97
- dict_repr = trigger.get_dict_repr()
98
- assert dict_repr == {
99
- "direction": BindingDirection.IN,
100
- "type": "activityTrigger",
101
- "name": "myInput"
102
- }
103
-
104
- def test_DurableClient_with_full_params():
105
- input_binding = DurableClient(
106
- name="myClient",
107
- task_hub="myTaskHub",
108
- connection_name="myConnection"
109
- )
110
-
111
- binding_name = input_binding.get_binding_name()
112
- assert binding_name == DURABLE_CLIENT
113
-
114
- dict_repr = input_binding.get_dict_repr()
115
- assert dict_repr == {
116
- "direction": BindingDirection.IN,
117
- "type": "durableClient",
118
- "name": "myClient",
119
- "taskHub": "myTaskHub",
120
- "connectionName": "myConnection"
121
- }
122
-
123
- def test_DurableClient_with_default_params():
124
- input_binding = DurableClient(
125
- name="myClient",
126
- )
127
-
128
- binding_name = input_binding.get_binding_name()
129
- assert binding_name == DURABLE_CLIENT
130
-
131
- dict_repr = input_binding.get_dict_repr()
132
- assert dict_repr == {
133
- "direction": BindingDirection.IN,
134
- "type": "durableClient",
135
- "name": "myClient"
1
+ from azure.durable_functions.decorators.metadata import OrchestrationTrigger,\
2
+ EntityTrigger, ActivityTrigger, DurableClient
3
+ from azure.durable_functions.constants import ORCHESTRATION_TRIGGER, \
4
+ ACTIVITY_TRIGGER, ENTITY_TRIGGER, DURABLE_CLIENT
5
+ from azure.functions.decorators.core import BindingDirection
6
+
7
+
8
+ def test_OrchestrationTrigger_with_full_params():
9
+ trigger = OrchestrationTrigger(
10
+ name="myContext",
11
+ orchestration="myOrchestratorFunction"
12
+ )
13
+
14
+ binding_name = trigger.get_binding_name()
15
+ assert binding_name == ORCHESTRATION_TRIGGER
16
+
17
+ dict_repr = trigger.get_dict_repr()
18
+ assert dict_repr == {
19
+ "direction": BindingDirection.IN,
20
+ "type": "orchestrationTrigger",
21
+ "name": "myContext",
22
+ "orchestration": "myOrchestratorFunction"
23
+ }
24
+
25
+ def test_OrchestrationTrigger_with_default_params():
26
+ trigger = OrchestrationTrigger(
27
+ name="myContext",
28
+ )
29
+
30
+ binding_name = trigger.get_binding_name()
31
+ assert binding_name == ORCHESTRATION_TRIGGER
32
+
33
+ dict_repr = trigger.get_dict_repr()
34
+ assert dict_repr == {
35
+ "direction": BindingDirection.IN,
36
+ "type": "orchestrationTrigger",
37
+ "name": "myContext"
38
+ }
39
+
40
+ def test_EntityTrigger_with_full_params():
41
+ trigger = EntityTrigger(
42
+ name="myContext",
43
+ entity_name="myEntityFunction"
44
+ )
45
+
46
+ binding_name = trigger.get_binding_name()
47
+ assert binding_name == ENTITY_TRIGGER
48
+
49
+ dict_repr = trigger.get_dict_repr()
50
+ assert dict_repr == {
51
+ "direction": BindingDirection.IN,
52
+ "type": "entityTrigger",
53
+ "name": "myContext",
54
+ "entityName": "myEntityFunction"
55
+ }
56
+
57
+ def test_EntityTrigger_with_default_params():
58
+ trigger = EntityTrigger(
59
+ name="myContext",
60
+ )
61
+
62
+ binding_name = trigger.get_binding_name()
63
+ assert binding_name == ENTITY_TRIGGER
64
+
65
+ dict_repr = trigger.get_dict_repr()
66
+ assert dict_repr == {
67
+ "direction": BindingDirection.IN,
68
+ "type": "entityTrigger",
69
+ "name": "myContext"
70
+ }
71
+
72
+ def test_ActivityTrigger_with_full_params():
73
+ trigger = ActivityTrigger(
74
+ name="myInput",
75
+ activity="myActivityFunction"
76
+ )
77
+
78
+ binding_name = trigger.get_binding_name()
79
+ assert binding_name == ACTIVITY_TRIGGER
80
+
81
+ dict_repr = trigger.get_dict_repr()
82
+ assert dict_repr == {
83
+ "direction": BindingDirection.IN,
84
+ "type": "activityTrigger",
85
+ "name": "myInput",
86
+ "activity": "myActivityFunction"
87
+ }
88
+
89
+ def test_ActivityTrigger_with_default_params():
90
+ trigger = ActivityTrigger(
91
+ name="myInput"
92
+ )
93
+
94
+ binding_name = trigger.get_binding_name()
95
+ assert binding_name == ACTIVITY_TRIGGER
96
+
97
+ dict_repr = trigger.get_dict_repr()
98
+ assert dict_repr == {
99
+ "direction": BindingDirection.IN,
100
+ "type": "activityTrigger",
101
+ "name": "myInput"
102
+ }
103
+
104
+ def test_DurableClient_with_full_params():
105
+ input_binding = DurableClient(
106
+ name="myClient",
107
+ task_hub="myTaskHub",
108
+ connection_name="myConnection"
109
+ )
110
+
111
+ binding_name = input_binding.get_binding_name()
112
+ assert binding_name == DURABLE_CLIENT
113
+
114
+ dict_repr = input_binding.get_dict_repr()
115
+ assert dict_repr == {
116
+ "direction": BindingDirection.IN,
117
+ "type": "durableClient",
118
+ "name": "myClient",
119
+ "taskHub": "myTaskHub",
120
+ "connectionName": "myConnection"
121
+ }
122
+
123
+ def test_DurableClient_with_default_params():
124
+ input_binding = DurableClient(
125
+ name="myClient",
126
+ )
127
+
128
+ binding_name = input_binding.get_binding_name()
129
+ assert binding_name == DURABLE_CLIENT
130
+
131
+ dict_repr = input_binding.get_dict_repr()
132
+ assert dict_repr == {
133
+ "direction": BindingDirection.IN,
134
+ "type": "durableClient",
135
+ "name": "myClient"
136
136
  }