haiway 0.11.0__tar.gz → 0.11.1__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.
Files changed (99) hide show
  1. {haiway-0.11.0 → haiway-0.11.1}/PKG-INFO +1 -1
  2. haiway-0.11.1/junit/test-results.xml +1 -0
  3. {haiway-0.11.0 → haiway-0.11.1}/pyproject.toml +1 -1
  4. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/tracing.py +43 -18
  5. {haiway-0.11.0 → haiway-0.11.1}/uv.lock +1 -1
  6. haiway-0.11.0/junit/test-results.xml +0 -1
  7. {haiway-0.11.0 → haiway-0.11.1}/.github/workflows/ci.yml +0 -0
  8. {haiway-0.11.0 → haiway-0.11.1}/.github/workflows/publish.yml +0 -0
  9. {haiway-0.11.0 → haiway-0.11.1}/.gitignore +0 -0
  10. {haiway-0.11.0 → haiway-0.11.1}/LICENSE +0 -0
  11. {haiway-0.11.0 → haiway-0.11.1}/Makefile +0 -0
  12. {haiway-0.11.0 → haiway-0.11.1}/README.md +0 -0
  13. {haiway-0.11.0 → haiway-0.11.1}/config/pre-push +0 -0
  14. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/.dockerignore +0 -0
  15. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/Dockerfile +0 -0
  16. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/Makefile +0 -0
  17. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/README.md +0 -0
  18. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/config/.env.example +0 -0
  19. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/config/unit.json +0 -0
  20. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/docker-compose.yml +0 -0
  21. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/pyproject.toml +0 -0
  22. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/__int__.py +0 -0
  23. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/__init__.py +0 -0
  24. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/calls.py +0 -0
  25. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/config.py +0 -0
  26. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/state.py +0 -0
  27. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/types.py +0 -0
  28. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/features/todos/user_tasks.py +0 -0
  29. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/__init__.py +0 -0
  30. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/postgres/__init__.py +0 -0
  31. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/postgres/client.py +0 -0
  32. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/postgres/config.py +0 -0
  33. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/postgres/state.py +0 -0
  34. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/integrations/postgres/types.py +0 -0
  35. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/__init__.py +0 -0
  36. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/__main__.py +0 -0
  37. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/application.py +0 -0
  38. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/config.py +0 -0
  39. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/middlewares/__init__.py +0 -0
  40. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/middlewares/context.py +0 -0
  41. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/routes/__init__.py +0 -0
  42. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/routes/technical.py +0 -0
  43. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/server/routes/todos.py +0 -0
  44. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/__init__.py +0 -0
  45. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/__init__.py +0 -0
  46. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/calls.py +0 -0
  47. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/config.py +0 -0
  48. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/postgres.py +0 -0
  49. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/state.py +0 -0
  50. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/src/solutions/user_tasks/types.py +0 -0
  51. {haiway-0.11.0 → haiway-0.11.1}/examples/fastAPI/uv.lock +0 -0
  52. {haiway-0.11.0 → haiway-0.11.1}/guidelines/functionalities.md +0 -0
  53. {haiway-0.11.0 → haiway-0.11.1}/guidelines/packages.md +0 -0
  54. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/__init__.py +0 -0
  55. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/__init__.py +0 -0
  56. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/access.py +0 -0
  57. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/disposables.py +0 -0
  58. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/identifier.py +0 -0
  59. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/logging.py +0 -0
  60. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/metrics.py +0 -0
  61. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/state.py +0 -0
  62. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/tasks.py +0 -0
  63. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/context/types.py +0 -0
  64. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/__init__.py +0 -0
  65. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/asynchrony.py +0 -0
  66. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/caching.py +0 -0
  67. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/metrics.py +0 -0
  68. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/retries.py +0 -0
  69. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/throttling.py +0 -0
  70. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/helpers/timeouted.py +0 -0
  71. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/py.typed +0 -0
  72. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/__init__.py +0 -0
  73. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/attributes.py +0 -0
  74. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/path.py +0 -0
  75. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/requirement.py +0 -0
  76. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/structure.py +0 -0
  77. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/state/validation.py +0 -0
  78. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/types/__init__.py +0 -0
  79. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/types/default.py +0 -0
  80. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/types/frozen.py +0 -0
  81. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/types/missing.py +0 -0
  82. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/__init__.py +0 -0
  83. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/always.py +0 -0
  84. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/collections.py +0 -0
  85. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/env.py +0 -0
  86. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/freezing.py +0 -0
  87. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/logs.py +0 -0
  88. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/mimic.py +0 -0
  89. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/noop.py +0 -0
  90. {haiway-0.11.0 → haiway-0.11.1}/src/haiway/utils/queue.py +0 -0
  91. {haiway-0.11.0 → haiway-0.11.1}/tests/__init__.py +0 -0
  92. {haiway-0.11.0 → haiway-0.11.1}/tests/test_async_queue.py +0 -0
  93. {haiway-0.11.0 → haiway-0.11.1}/tests/test_attribute_path.py +0 -0
  94. {haiway-0.11.0 → haiway-0.11.1}/tests/test_auto_retry.py +0 -0
  95. {haiway-0.11.0 → haiway-0.11.1}/tests/test_cache.py +0 -0
  96. {haiway-0.11.0 → haiway-0.11.1}/tests/test_context.py +0 -0
  97. {haiway-0.11.0 → haiway-0.11.1}/tests/test_state.py +0 -0
  98. {haiway-0.11.0 → haiway-0.11.1}/tests/test_streaming.py +0 -0
  99. {haiway-0.11.0 → haiway-0.11.1}/tests/test_timeout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haiway
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: Framework for dependency injection and state management within structured concurrency model.
5
5
  Project-URL: Homepage, https://miquido.com
6
6
  Project-URL: Repository, https://github.com/miquido/haiway.git
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="79" time="1.147" timestamp="2025-03-12T15:42:57.104519" hostname="fv-az1333-211"><testcase classname="tests.test_async_queue" name="test_fails_when_stream_fails" time="0.002" /><testcase classname="tests.test_async_queue" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_async_queue" name="test_ends_when_stream_ends" time="0.001" /><testcase classname="tests.test_async_queue" name="test_buffers_values_when_not_reading" time="0.001" /><testcase classname="tests.test_async_queue" name="test_delivers_buffer_when_streaming_fails" time="0.001" /><testcase classname="tests.test_async_queue" name="test_delivers_updates_when_sending" time="0.001" /><testcase classname="tests.test_async_queue" name="test_fails_when_sending_to_finished" time="0.001" /><testcase classname="tests.test_async_queue" name="test_ignores_when_finishing_when_finished" time="0.001" /><testcase classname="tests.test_attribute_path" name="test_id_path_points_to_self" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_attribute_path_points_to_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_nested_attribute_path_points_to_nested_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_recursive_attribute_path_points_to_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_list_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_tuple_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_mixed_tuple_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_id_path_set_updates_self" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_attribute_path_set_updates_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_nested_attribute_path_set_updates_nested_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_recursive_attribute_set_updates_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_list_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_tuple_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_mixed_tuple_item_set_updates_item" time="0.001" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_auto_retry" name="test_returns_value_without_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_retries_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_logs_issue_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_fails_with_exceeding_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_fails_with_cancellation" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_retries_with_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_fails_with_not_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_returns_value_without_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_retries_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_exceeding_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_cancellation" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_when_cancelled" time="0.021" /><testcase classname="tests.test_auto_retry" name="test_async_uses_delay_with_errors" time="0.102" /><testcase classname="tests.test_auto_retry" name="test_async_uses_computed_delay_with_errors" time="0.107" /><testcase classname="tests.test_auto_retry" name="test_async_logs_issue_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_retries_with_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_not_selected_errors" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_cache_value_with_same_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_different_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_limit_exceed" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_same_value_with_repeating_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_fails_with_error" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_expiration_time_exceed" time="0.021" /><testcase classname="tests.test_cache" name="test_async_returns_cache_value_with_same_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_different_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_limit_exceed" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_same_value_with_repeating_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_expiration_time_exceed" time="0.021" /><testcase classname="tests.test_cache" name="test_async_cancel_waiting_does_not_cancel_task" time="0.502" /><testcase classname="tests.test_cache" name="test_async_expiration_does_not_cancel_task" time="0.021" /><testcase classname="tests.test_cache" name="test_async_expiration_creates_new_task" time="0.041" /><testcase classname="tests.test_cache" name="test_async_fails_with_error" time="0.001" /><testcase classname="tests.test_context" name="test_state_is_available_according_to_context" time="0.001" /><testcase classname="tests.test_context" name="test_state_update_updates_local_context" time="0.001" /><testcase classname="tests.test_context" name="test_exceptions_are_propagated" time="0.001" /><testcase classname="tests.test_state" name="test_basic_initializes_with_arguments" time="0.002" /><testcase classname="tests.test_state" name="test_basic_initializes_with_defaults" time="0.001" /><testcase classname="tests.test_state" name="test_basic_equals_checks_properties" time="0.000" /><testcase classname="tests.test_state" name="test_basic_initializes_with_arguments_and_defaults" time="0.001" /><testcase classname="tests.test_state" name="test_parametrized_initializes_with_proper_parameters" time="0.000" /><testcase classname="tests.test_state" name="test_nested_initializes_with_proper_arguments" time="0.001" /><testcase classname="tests.test_state" name="test_dict_skips_missing_properties" time="0.000" /><testcase classname="tests.test_state" name="test_initialization_allows_missing_properties" time="0.000" /><testcase classname="tests.test_state" name="test_generic_subtypes_validation" time="0.002" /><testcase classname="tests.test_state" name="test_copying_leaves_same_object" time="0.000" /><testcase classname="tests.test_streaming" name="test_fails_when_generator_fails" time="0.001" /><testcase classname="tests.test_streaming" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_streaming" name="test_ends_when_generator_ends" time="0.001" /><testcase classname="tests.test_streaming" name="test_delivers_updates_when_generating" time="0.001" /><testcase classname="tests.test_streaming" name="test_streaming_context_variables_access_is_preserved" time="0.001" /><testcase classname="tests.test_streaming" name="test_nested_streaming_streams_correctly" time="0.001" /><testcase classname="tests.test_timeout" name="test_returns_result_when_returning_value" time="0.001" /><testcase classname="tests.test_timeout" name="test_raises_with_error" time="0.001" /><testcase classname="tests.test_timeout" name="test_raises_with_cancel" time="0.011" /><testcase classname="tests.test_timeout" name="test_raises_with_timeout" time="0.011" /></testsuite></testsuites>
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "haiway"
7
7
  description = "Framework for dependency injection and state management within structured concurrency model."
8
- version = "0.11.0"
8
+ version = "0.11.1"
9
9
  readme = "README.md"
10
10
  maintainers = [
11
11
  { name = "Kacper Kaliński", email = "kacper.kalinski@miquido.com" },
@@ -1,6 +1,6 @@
1
1
  from asyncio import iscoroutinefunction
2
2
  from collections.abc import Callable, Coroutine, Mapping, Sequence
3
- from typing import Any, Self, cast
3
+ from typing import Any, Self, cast, overload
4
4
 
5
5
  from haiway.context import ctx
6
6
  from haiway.state import State
@@ -61,28 +61,53 @@ class ResultTrace(State):
61
61
  result: Any | Missing
62
62
 
63
63
 
64
+ @overload
64
65
  def traced[**Args, Result](
65
66
  function: Callable[Args, Result],
66
67
  /,
67
- ) -> Callable[Args, Result]:
68
- if __debug__:
69
- if iscoroutinefunction(function):
70
- return cast(
71
- Callable[Args, Result],
72
- _traced_async(
73
- function,
74
- label=function.__name__,
75
- ),
76
- )
68
+ ) -> Callable[Args, Result]: ...
69
+
70
+
71
+ @overload
72
+ def traced[**Args, Result](
73
+ *,
74
+ label: str,
75
+ ) -> Callable[[Callable[Args, Result]], Callable[Args, Result]]: ...
77
76
 
78
- else:
79
- return _traced_sync(
80
- function,
81
- label=function.__name__,
82
- )
83
77
 
84
- else: # do not trace on non debug runs
85
- return function
78
+ def traced[**Args, Result](
79
+ function: Callable[Args, Result] | None = None,
80
+ /,
81
+ *,
82
+ label: str | None = None,
83
+ ) -> Callable[[Callable[Args, Result]], Callable[Args, Result]] | Callable[Args, Result]:
84
+ def wrap(
85
+ wrapped: Callable[Args, Result],
86
+ ) -> Callable[Args, Result]:
87
+ if __debug__:
88
+ if iscoroutinefunction(wrapped):
89
+ return cast(
90
+ Callable[Args, Result],
91
+ _traced_async(
92
+ wrapped,
93
+ label=label or wrapped.__name__,
94
+ ),
95
+ )
96
+
97
+ else:
98
+ return _traced_sync(
99
+ wrapped,
100
+ label=label or wrapped.__name__,
101
+ )
102
+
103
+ else: # do not trace on non debug runs
104
+ return wrapped
105
+
106
+ if function := function:
107
+ return wrap(wrapped=function)
108
+
109
+ else:
110
+ return wrap
86
111
 
87
112
 
88
113
  def _traced_sync[**Args, Result](
@@ -67,7 +67,7 @@ wheels = [
67
67
 
68
68
  [[package]]
69
69
  name = "haiway"
70
- version = "0.11.0"
70
+ version = "0.11.1"
71
71
  source = { editable = "." }
72
72
 
73
73
  [package.optional-dependencies]
@@ -1 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="79" time="1.147" timestamp="2025-03-11T11:25:35.484537" hostname="fv-az790-267"><testcase classname="tests.test_async_queue" name="test_fails_when_stream_fails" time="0.001" /><testcase classname="tests.test_async_queue" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_async_queue" name="test_ends_when_stream_ends" time="0.001" /><testcase classname="tests.test_async_queue" name="test_buffers_values_when_not_reading" time="0.001" /><testcase classname="tests.test_async_queue" name="test_delivers_buffer_when_streaming_fails" time="0.001" /><testcase classname="tests.test_async_queue" name="test_delivers_updates_when_sending" time="0.001" /><testcase classname="tests.test_async_queue" name="test_fails_when_sending_to_finished" time="0.001" /><testcase classname="tests.test_async_queue" name="test_ignores_when_finishing_when_finished" time="0.001" /><testcase classname="tests.test_attribute_path" name="test_id_path_points_to_self" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_attribute_path_points_to_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_nested_attribute_path_points_to_nested_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_recursive_attribute_path_points_to_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_list_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_tuple_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_mixed_tuple_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_points_to_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_id_path_set_updates_self" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_attribute_path_set_updates_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_nested_attribute_path_set_updates_nested_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_recursive_attribute_set_updates_attribute" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_list_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_tuple_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_path" name="test_mixed_tuple_item_set_updates_item" time="0.001" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_auto_retry" name="test_returns_value_without_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_retries_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_logs_issue_with_errors" time="0.002" /><testcase classname="tests.test_auto_retry" name="test_fails_with_exceeding_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_fails_with_cancellation" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_retries_with_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_fails_with_not_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_returns_value_without_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_retries_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_exceeding_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_cancellation" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_when_cancelled" time="0.021" /><testcase classname="tests.test_auto_retry" name="test_async_uses_delay_with_errors" time="0.102" /><testcase classname="tests.test_auto_retry" name="test_async_uses_computed_delay_with_errors" time="0.106" /><testcase classname="tests.test_auto_retry" name="test_async_logs_issue_with_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_retries_with_selected_errors" time="0.001" /><testcase classname="tests.test_auto_retry" name="test_async_fails_with_not_selected_errors" time="0.001" /><testcase classname="tests.test_cache" name="test_returns_cache_value_with_same_argument" time="0.000" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_different_argument" time="0.000" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_limit_exceed" time="0.000" /><testcase classname="tests.test_cache" name="test_returns_same_value_with_repeating_argument" time="0.000" /><testcase classname="tests.test_cache" name="test_fails_with_error" time="0.000" /><testcase classname="tests.test_cache" name="test_returns_fresh_value_with_expiration_time_exceed" time="0.021" /><testcase classname="tests.test_cache" name="test_async_returns_cache_value_with_same_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_different_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_limit_exceed" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_same_value_with_repeating_argument" time="0.001" /><testcase classname="tests.test_cache" name="test_async_returns_fresh_value_with_expiration_time_exceed" time="0.021" /><testcase classname="tests.test_cache" name="test_async_cancel_waiting_does_not_cancel_task" time="0.502" /><testcase classname="tests.test_cache" name="test_async_expiration_does_not_cancel_task" time="0.021" /><testcase classname="tests.test_cache" name="test_async_expiration_creates_new_task" time="0.041" /><testcase classname="tests.test_cache" name="test_async_fails_with_error" time="0.001" /><testcase classname="tests.test_context" name="test_state_is_available_according_to_context" time="0.001" /><testcase classname="tests.test_context" name="test_state_update_updates_local_context" time="0.001" /><testcase classname="tests.test_context" name="test_exceptions_are_propagated" time="0.001" /><testcase classname="tests.test_state" name="test_basic_initializes_with_arguments" time="0.002" /><testcase classname="tests.test_state" name="test_basic_initializes_with_defaults" time="0.001" /><testcase classname="tests.test_state" name="test_basic_equals_checks_properties" time="0.000" /><testcase classname="tests.test_state" name="test_basic_initializes_with_arguments_and_defaults" time="0.001" /><testcase classname="tests.test_state" name="test_parametrized_initializes_with_proper_parameters" time="0.000" /><testcase classname="tests.test_state" name="test_nested_initializes_with_proper_arguments" time="0.001" /><testcase classname="tests.test_state" name="test_dict_skips_missing_properties" time="0.000" /><testcase classname="tests.test_state" name="test_initialization_allows_missing_properties" time="0.000" /><testcase classname="tests.test_state" name="test_generic_subtypes_validation" time="0.002" /><testcase classname="tests.test_state" name="test_copying_leaves_same_object" time="0.001" /><testcase classname="tests.test_streaming" name="test_fails_when_generator_fails" time="0.001" /><testcase classname="tests.test_streaming" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_streaming" name="test_ends_when_generator_ends" time="0.001" /><testcase classname="tests.test_streaming" name="test_delivers_updates_when_generating" time="0.001" /><testcase classname="tests.test_streaming" name="test_streaming_context_variables_access_is_preserved" time="0.001" /><testcase classname="tests.test_streaming" name="test_nested_streaming_streams_correctly" time="0.001" /><testcase classname="tests.test_timeout" name="test_returns_result_when_returning_value" time="0.001" /><testcase classname="tests.test_timeout" name="test_raises_with_error" time="0.001" /><testcase classname="tests.test_timeout" name="test_raises_with_cancel" time="0.011" /><testcase classname="tests.test_timeout" name="test_raises_with_timeout" time="0.011" /></testsuite></testsuites>
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