haiway 0.26.0__tar.gz → 0.26.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 (77) hide show
  1. {haiway-0.26.0 → haiway-0.26.1}/PKG-INFO +1 -1
  2. {haiway-0.26.0 → haiway-0.26.1}/junit/test-results.xml +1 -1
  3. {haiway-0.26.0 → haiway-0.26.1}/pyproject.toml +1 -1
  4. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/concurrent.py +8 -9
  5. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/files.py +4 -4
  6. {haiway-0.26.0 → haiway-0.26.1}/uv.lock +1 -1
  7. {haiway-0.26.0 → haiway-0.26.1}/.claude/settings.json +0 -0
  8. {haiway-0.26.0 → haiway-0.26.1}/.github/workflows/ci.yml +0 -0
  9. {haiway-0.26.0 → haiway-0.26.1}/.github/workflows/publish.yml +0 -0
  10. {haiway-0.26.0 → haiway-0.26.1}/.gitignore +0 -0
  11. {haiway-0.26.0 → haiway-0.26.1}/CLAUDE.md +0 -0
  12. {haiway-0.26.0 → haiway-0.26.1}/LICENSE +0 -0
  13. {haiway-0.26.0 → haiway-0.26.1}/Makefile +0 -0
  14. {haiway-0.26.0 → haiway-0.26.1}/README.md +0 -0
  15. {haiway-0.26.0 → haiway-0.26.1}/config/pre-push +0 -0
  16. {haiway-0.26.0 → haiway-0.26.1}/guidelines/functionalities.md +0 -0
  17. {haiway-0.26.0 → haiway-0.26.1}/guidelines/llms.txt +0 -0
  18. {haiway-0.26.0 → haiway-0.26.1}/guidelines/packages.md +0 -0
  19. {haiway-0.26.0 → haiway-0.26.1}/guidelines/state.md +0 -0
  20. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/__init__.py +0 -0
  21. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/__init__.py +0 -0
  22. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/access.py +0 -0
  23. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/disposables.py +0 -0
  24. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/identifier.py +0 -0
  25. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/observability.py +0 -0
  26. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/presets.py +0 -0
  27. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/state.py +0 -0
  28. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/tasks.py +0 -0
  29. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/context/types.py +0 -0
  30. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/__init__.py +0 -0
  31. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/asynchrony.py +0 -0
  32. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/caching.py +0 -0
  33. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/observability.py +0 -0
  34. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/retries.py +0 -0
  35. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/throttling.py +0 -0
  36. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/helpers/timeouting.py +0 -0
  37. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/opentelemetry/__init__.py +0 -0
  38. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/opentelemetry/observability.py +0 -0
  39. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/py.typed +0 -0
  40. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/__init__.py +0 -0
  41. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/attributes.py +0 -0
  42. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/immutable.py +0 -0
  43. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/path.py +0 -0
  44. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/requirement.py +0 -0
  45. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/structure.py +0 -0
  46. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/state/validation.py +0 -0
  47. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/types/__init__.py +0 -0
  48. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/types/default.py +0 -0
  49. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/types/missing.py +0 -0
  50. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/__init__.py +0 -0
  51. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/always.py +0 -0
  52. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/collections.py +0 -0
  53. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/env.py +0 -0
  54. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/formatting.py +0 -0
  55. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/logs.py +0 -0
  56. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/mimic.py +0 -0
  57. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/noop.py +0 -0
  58. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/queue.py +0 -0
  59. {haiway-0.26.0 → haiway-0.26.1}/src/haiway/utils/stream.py +0 -0
  60. {haiway-0.26.0 → haiway-0.26.1}/tests/__init__.py +0 -0
  61. {haiway-0.26.0 → haiway-0.26.1}/tests/test_async_queue.py +0 -0
  62. {haiway-0.26.0 → haiway-0.26.1}/tests/test_async_stream.py +0 -0
  63. {haiway-0.26.0 → haiway-0.26.1}/tests/test_attribute_path.py +0 -0
  64. {haiway-0.26.0 → haiway-0.26.1}/tests/test_attribute_requirement.py +0 -0
  65. {haiway-0.26.0 → haiway-0.26.1}/tests/test_auto_retry.py +0 -0
  66. {haiway-0.26.0 → haiway-0.26.1}/tests/test_cache.py +0 -0
  67. {haiway-0.26.0 → haiway-0.26.1}/tests/test_context.py +0 -0
  68. {haiway-0.26.0 → haiway-0.26.1}/tests/test_context_presets.py +0 -0
  69. {haiway-0.26.0 → haiway-0.26.1}/tests/test_disposables.py +0 -0
  70. {haiway-0.26.0 → haiway-0.26.1}/tests/test_execute_concurrently.py +0 -0
  71. {haiway-0.26.0 → haiway-0.26.1}/tests/test_process_concurrently.py +0 -0
  72. {haiway-0.26.0 → haiway-0.26.1}/tests/test_state.py +0 -0
  73. {haiway-0.26.0 → haiway-0.26.1}/tests/test_state_typing.py +0 -0
  74. {haiway-0.26.0 → haiway-0.26.1}/tests/test_state_validation.py +0 -0
  75. {haiway-0.26.0 → haiway-0.26.1}/tests/test_stream_concurrently.py +0 -0
  76. {haiway-0.26.0 → haiway-0.26.1}/tests/test_streaming.py +0 -0
  77. {haiway-0.26.0 → haiway-0.26.1}/tests/test_timeout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haiway
3
- Version: 0.26.0
3
+ Version: 0.26.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
@@ -1 +1 @@
1
- <?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="203" time="3.892" timestamp="2025-07-15T10:24:27.549791+00:00" hostname="pkrvmq0rgcvqdmg"><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_async_stream" name="test_fails_when_stream_fails" time="0.001" /><testcase classname="tests.test_async_stream" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ends_when_stream_ends" time="0.001" /><testcase classname="tests.test_async_stream" name="test_finishes_without_buffer" time="0.001" /><testcase classname="tests.test_async_stream" name="test_fails_without_buffer" time="0.001" /><testcase classname="tests.test_async_stream" name="test_delivers_updates_when_sending" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_sending_to_finished" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_sending_to_failed" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_finishing_when_finished" time="0.001" /><testcase classname="tests.test_async_stream" name="test_delivers_all_when_sending_async" 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.000" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_equal_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_not_equal_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contains_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contains_any_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contained_in_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_logical_and_or_requirements" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_filter" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_immutability" 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.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_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_context_presets" name="test_preset_creation" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_with_state" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_with_disposable" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_extended" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_static_state" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_state_factory" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_multiple_states_factory" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_multiple_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_mixed_state_and_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_registry_creation" time="0.000" /><testcase classname="tests.test_context_presets" name="test_registry_immutable" time="0.000" /><testcase classname="tests.test_context_presets" name="test_scope_with_preset" time="0.001" /><testcase classname="tests.test_context_presets" name="test_scope_preset_with_override" time="0.001" /><testcase classname="tests.test_context_presets" name="test_scope_preset_not_found" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_with_async_state_factory" time="0.021" /><testcase classname="tests.test_context_presets" name="test_preset_with_disposable_lifecycle" time="0.001" /><testcase classname="tests.test_context_presets" name="test_nested_preset_registries" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_with_mixed_state_sources" time="0.011" /><testcase classname="tests.test_context_presets" name="test_direct_preset_parameter" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_with_explicit_state_override" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_with_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_vs_registry" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_none_falls_back_to_registry" time="0.001" /><testcase classname="tests.test_disposables" name="test_empty_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_single_disposable_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_multiple_disposables_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_cannot_set_attributes" time="0.000" /><testcase classname="tests.test_disposables" name="test_cannot_delete_attributes" time="0.000" /><testcase classname="tests.test_disposables" name="test_empty_disposables_is_falsy" time="0.000" /><testcase classname="tests.test_disposables" name="test_non_empty_disposables_is_truthy" time="0.000" /><testcase classname="tests.test_disposables" name="test_setup_with_no_disposables" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_none" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_single_state" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_multiple_states" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_multiple_disposables_mixed_returns" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_sets_loop_correctly" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_no_disposables" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_successful_cleanup" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_exception_context" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_multiple_exceptions_creates_group" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_single_exception_is_risen" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_resets_loop_even_on_exception" time="0.001" /><testcase classname="tests.test_disposables" name="test_same_loop_cleanup" time="0.001" /><testcase classname="tests.test_disposables" name="test_exception_during_setup_phase" time="0.001" /><testcase classname="tests.test_disposables" name="test_assertion_on_doubleprepare" time="0.001" /><testcase classname="tests.test_disposables" name="test_assertion_on_dispose_withoutprepare" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_processes_all_elements" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_preserves_order" time="0.302" /><testcase classname="tests.test_execute_concurrently" name="test_handles_empty_collection" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_propagates_handler_exceptions" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_returns_exceptions_when_configured" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_cancels_running_tasks_on_cancellation" time="0.101" /><testcase classname="tests.test_execute_concurrently" name="test_respects_concurrency_limit" time="0.202" /><testcase classname="tests.test_execute_concurrently" name="test_works_with_different_types" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_handles_mixed_success_and_failure" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_works_with_sets_and_tuples" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_exception_details_preserved" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_processes_all_elements" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_processes_elements_concurrently" time="0.302" /><testcase classname="tests.test_process_concurrently" name="test_handles_empty_source" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_propagates_handler_exceptions" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_ignores_handler_exceptions_when_configured" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_handles_source_exception" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_cancels_running_tasks_on_cancellation" time="0.101" /><testcase classname="tests.test_process_concurrently" name="test_respects_concurrency_limit" time="0.202" /><testcase classname="tests.test_process_concurrently" name="test_processes_elements_from_queue" time="0.052" /><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_state" name="test_hash_consistency_with_missing_values" time="0.001" /><testcase classname="tests.test_state" name="test_hash_with_unhashable_attributes" time="0.001" /><testcase classname="tests.test_state" name="test_hash_with_dict_key_order_independence" time="0.000" /><testcase classname="tests.test_state" name="test_hash_with_custom_objects" time="0.000" /><testcase classname="tests.test_state" name="test_hash_performance_with_many_attributes" time="0.001" /><testcase classname="tests.test_state" name="test_hash_with_nested_unhashable_collections" time="0.001" /><testcase classname="tests.test_state" name="test_hash_stability_across_instances" time="0.000" /><testcase classname="tests.test_state" name="test_hash_excludes_missing_values" time="0.000" /><testcase classname="tests.test_state_typing" name="test_state_typing_subclass_and_instance_checks" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_basic_types" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_none_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_missing_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_literal_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_enum_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_sequence_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_set_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_mapping_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_tuple_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_union_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_callable_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_typed_dict" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_state_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_complex_types" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_recursive_state" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_generic_state" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validation_error_messages" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validation_any_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_with_defaults" time="0.000" /><testcase classname="tests.test_state_validation" name="test_attribute_validator_direct_usage" time="0.000" /><testcase classname="tests.test_state_validation" name="test_unsupported_type_annotation" time="0.000" /><testcase classname="tests.test_stream_concurrently" name="test_merges_two_streams" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_interleaves_based_on_timing" time="0.152" /><testcase classname="tests.test_stream_concurrently" name="test_handles_empty_iterators" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_handles_different_lengths" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_propagates_exceptions_from_source_a" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_propagates_exceptions_from_source_b" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_cancellation_cancels_both_sources" time="0.202" /><testcase classname="tests.test_stream_concurrently" name="test_works_with_different_types" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_immediate_yield" time="0.601" /><testcase classname="tests.test_stream_concurrently" name="test_concurrent_execution" time="0.201" /><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>
1
+ <?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="203" time="3.881" timestamp="2025-07-18T14:04:03.122940+00:00" hostname="pkrvmq0rgcvqdmg"><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_async_stream" name="test_fails_when_stream_fails" time="0.001" /><testcase classname="tests.test_async_stream" name="test_cancels_when_iteration_cancels" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ends_when_stream_ends" time="0.001" /><testcase classname="tests.test_async_stream" name="test_finishes_without_buffer" time="0.001" /><testcase classname="tests.test_async_stream" name="test_fails_without_buffer" time="0.001" /><testcase classname="tests.test_async_stream" name="test_delivers_updates_when_sending" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_sending_to_finished" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_sending_to_failed" time="0.001" /><testcase classname="tests.test_async_stream" name="test_ignores_when_finishing_when_finished" time="0.001" /><testcase classname="tests.test_async_stream" name="test_delivers_all_when_sending_async" 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.000" /><testcase classname="tests.test_attribute_path" name="test_dict_item_path_set_updates_item" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_equal_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_not_equal_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contains_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contains_any_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_contained_in_requirement" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_logical_and_or_requirements" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_filter" time="0.000" /><testcase classname="tests.test_attribute_requirement" name="test_immutability" 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.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_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_context_presets" name="test_preset_creation" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_with_state" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_with_disposable" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_extended" time="0.000" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_static_state" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_state_factory" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_multiple_states_factory" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_with_multiple_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_prepare_mixed_state_and_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_registry_creation" time="0.000" /><testcase classname="tests.test_context_presets" name="test_registry_immutable" time="0.000" /><testcase classname="tests.test_context_presets" name="test_scope_with_preset" time="0.001" /><testcase classname="tests.test_context_presets" name="test_scope_preset_with_override" time="0.001" /><testcase classname="tests.test_context_presets" name="test_scope_preset_not_found" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_with_async_state_factory" time="0.021" /><testcase classname="tests.test_context_presets" name="test_preset_with_disposable_lifecycle" time="0.001" /><testcase classname="tests.test_context_presets" name="test_nested_preset_registries" time="0.001" /><testcase classname="tests.test_context_presets" name="test_preset_with_mixed_state_sources" time="0.011" /><testcase classname="tests.test_context_presets" name="test_direct_preset_parameter" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_with_explicit_state_override" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_with_disposables" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_vs_registry" time="0.001" /><testcase classname="tests.test_context_presets" name="test_direct_preset_none_falls_back_to_registry" time="0.001" /><testcase classname="tests.test_disposables" name="test_empty_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_single_disposable_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_multiple_disposables_initialization" time="0.000" /><testcase classname="tests.test_disposables" name="test_cannot_set_attributes" time="0.000" /><testcase classname="tests.test_disposables" name="test_cannot_delete_attributes" time="0.000" /><testcase classname="tests.test_disposables" name="test_empty_disposables_is_falsy" time="0.000" /><testcase classname="tests.test_disposables" name="test_non_empty_disposables_is_truthy" time="0.000" /><testcase classname="tests.test_disposables" name="test_setup_with_no_disposables" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_none" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_single_state" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_disposable_returning_multiple_states" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_with_multiple_disposables_mixed_returns" time="0.001" /><testcase classname="tests.test_disposables" name="test_setup_sets_loop_correctly" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_no_disposables" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_successful_cleanup" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_exception_context" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_multiple_exceptions_creates_group" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_with_single_exception_is_risen" time="0.001" /><testcase classname="tests.test_disposables" name="test_dispose_resets_loop_even_on_exception" time="0.001" /><testcase classname="tests.test_disposables" name="test_same_loop_cleanup" time="0.001" /><testcase classname="tests.test_disposables" name="test_exception_during_setup_phase" time="0.001" /><testcase classname="tests.test_disposables" name="test_assertion_on_doubleprepare" time="0.001" /><testcase classname="tests.test_disposables" name="test_assertion_on_dispose_withoutprepare" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_processes_all_elements" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_preserves_order" time="0.302" /><testcase classname="tests.test_execute_concurrently" name="test_handles_empty_collection" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_propagates_handler_exceptions" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_returns_exceptions_when_configured" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_cancels_running_tasks_on_cancellation" time="0.101" /><testcase classname="tests.test_execute_concurrently" name="test_respects_concurrency_limit" time="0.202" /><testcase classname="tests.test_execute_concurrently" name="test_works_with_different_types" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_handles_mixed_success_and_failure" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_works_with_sets_and_tuples" time="0.001" /><testcase classname="tests.test_execute_concurrently" name="test_exception_details_preserved" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_processes_all_elements" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_processes_elements_concurrently" time="0.302" /><testcase classname="tests.test_process_concurrently" name="test_handles_empty_source" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_propagates_handler_exceptions" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_ignores_handler_exceptions_when_configured" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_handles_source_exception" time="0.001" /><testcase classname="tests.test_process_concurrently" name="test_cancels_running_tasks_on_cancellation" time="0.101" /><testcase classname="tests.test_process_concurrently" name="test_respects_concurrency_limit" time="0.202" /><testcase classname="tests.test_process_concurrently" name="test_processes_elements_from_queue" time="0.052" /><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_state" name="test_hash_consistency_with_missing_values" time="0.000" /><testcase classname="tests.test_state" name="test_hash_with_unhashable_attributes" time="0.001" /><testcase classname="tests.test_state" name="test_hash_with_dict_key_order_independence" time="0.000" /><testcase classname="tests.test_state" name="test_hash_with_custom_objects" time="0.000" /><testcase classname="tests.test_state" name="test_hash_performance_with_many_attributes" time="0.000" /><testcase classname="tests.test_state" name="test_hash_with_nested_unhashable_collections" time="0.000" /><testcase classname="tests.test_state" name="test_hash_stability_across_instances" time="0.000" /><testcase classname="tests.test_state" name="test_hash_excludes_missing_values" time="0.000" /><testcase classname="tests.test_state_typing" name="test_state_typing_subclass_and_instance_checks" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_basic_types" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_none_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_missing_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_literal_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_enum_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_sequence_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_set_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_mapping_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_tuple_type" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_union_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_callable_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_typed_dict" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_state_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_complex_types" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validator_recursive_state" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_generic_state" time="0.001" /><testcase classname="tests.test_state_validation" name="test_validation_error_messages" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validation_any_type" time="0.000" /><testcase classname="tests.test_state_validation" name="test_validator_with_defaults" time="0.000" /><testcase classname="tests.test_state_validation" name="test_attribute_validator_direct_usage" time="0.000" /><testcase classname="tests.test_state_validation" name="test_unsupported_type_annotation" time="0.000" /><testcase classname="tests.test_stream_concurrently" name="test_merges_two_streams" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_interleaves_based_on_timing" time="0.152" /><testcase classname="tests.test_stream_concurrently" name="test_handles_empty_iterators" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_handles_different_lengths" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_propagates_exceptions_from_source_a" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_propagates_exceptions_from_source_b" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_cancellation_cancels_both_sources" time="0.202" /><testcase classname="tests.test_stream_concurrently" name="test_works_with_different_types" time="0.001" /><testcase classname="tests.test_stream_concurrently" name="test_immediate_yield" time="0.601" /><testcase classname="tests.test_stream_concurrently" name="test_concurrent_execution" time="0.201" /><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.26.0"
8
+ version = "0.26.1"
9
9
  readme = "README.md"
10
10
  maintainers = [
11
11
  { name = "Kacper Kaliński", email = "kacper.kalinski@miquido.com" },
@@ -3,8 +3,8 @@ from collections.abc import (
3
3
  AsyncIterable,
4
4
  AsyncIterator,
5
5
  Callable,
6
- Collection,
7
6
  Coroutine,
7
+ Iterable,
8
8
  MutableSequence,
9
9
  Sequence,
10
10
  )
@@ -20,7 +20,7 @@ __all__ = (
20
20
 
21
21
 
22
22
  async def process_concurrently[Element]( # noqa: C901, PLR0912
23
- source: AsyncIterator[Element],
23
+ source: AsyncIterable[Element],
24
24
  /,
25
25
  handler: Callable[[Element], Coroutine[Any, Any, None]],
26
26
  *,
@@ -80,8 +80,7 @@ async def process_concurrently[Element]( # noqa: C901, PLR0912
80
80
  assert concurrent_tasks > 0 # nosec: B101
81
81
  running: set[Task[None]] = set()
82
82
  try:
83
- while True:
84
- element: Element = await anext(source)
83
+ async for element in source:
85
84
  running.add(ctx.spawn(handler, element))
86
85
  if len(running) < concurrent_tasks:
87
86
  continue # keep spawning tasks
@@ -132,7 +131,7 @@ async def process_concurrently[Element]( # noqa: C901, PLR0912
132
131
  async def execute_concurrently[Element, Result](
133
132
  handler: Callable[[Element], Coroutine[Any, Any, Result]],
134
133
  /,
135
- elements: Collection[Element],
134
+ elements: Iterable[Element],
136
135
  *,
137
136
  concurrent_tasks: int = 2,
138
137
  ) -> Sequence[Result]: ...
@@ -142,7 +141,7 @@ async def execute_concurrently[Element, Result](
142
141
  async def execute_concurrently[Element, Result](
143
142
  handler: Callable[[Element], Coroutine[Any, Any, Result]],
144
143
  /,
145
- elements: Collection[Element],
144
+ elements: Iterable[Element],
146
145
  *,
147
146
  concurrent_tasks: int = 2,
148
147
  return_exceptions: Literal[True],
@@ -152,7 +151,7 @@ async def execute_concurrently[Element, Result](
152
151
  async def execute_concurrently[Element, Result]( # noqa: C901
153
152
  handler: Callable[[Element], Coroutine[Any, Any, Result]],
154
153
  /,
155
- elements: Collection[Element],
154
+ elements: Iterable[Element],
156
155
  *,
157
156
  concurrent_tasks: int = 2,
158
157
  return_exceptions: bool = False,
@@ -175,8 +174,8 @@ async def execute_concurrently[Element, Result]( # noqa: C901
175
174
  ----------
176
175
  handler : Callable[[Element], Coroutine[Any, Any, Result]]
177
176
  A coroutine function that processes each element and returns a result.
178
- elements : Collection[Element]
179
- A collection of elements to process. The collection size determines
177
+ elements : Iterable[Element]
178
+ A source of elements to process. The source size determines
180
179
  the result sequence length.
181
180
  concurrent_tasks : int, default=2
182
181
  Maximum number of concurrent tasks. Must be greater than 0. Higher
@@ -188,7 +188,7 @@ class FileAccessing(Protocol):
188
188
  locking, and resource management.
189
189
  """
190
190
 
191
- async def __call__(
191
+ def __call__(
192
192
  self,
193
193
  path: Path | str,
194
194
  create: bool,
@@ -275,7 +275,7 @@ def _close_file_handle(
275
275
  os.close(file_handle)
276
276
 
277
277
 
278
- async def _file_access_context(
278
+ def _file_access_context(
279
279
  path: Path | str,
280
280
  create: bool,
281
281
  exclusive: bool,
@@ -375,7 +375,7 @@ class FileAccess(State):
375
375
  """
376
376
 
377
377
  @classmethod
378
- async def open(
378
+ def open(
379
379
  cls,
380
380
  path: Path | str,
381
381
  create: bool = False,
@@ -412,7 +412,7 @@ class FileAccess(State):
412
412
  If the file cannot be opened with the specified parameters, or if
413
413
  a file is already open in the current context scope
414
414
  """
415
- return await ctx.state(cls).accessing(
415
+ return ctx.state(cls).accessing(
416
416
  path,
417
417
  create=create,
418
418
  exclusive=exclusive,
@@ -114,7 +114,7 @@ wheels = [
114
114
 
115
115
  [[package]]
116
116
  name = "haiway"
117
- version = "0.26.0"
117
+ version = "0.26.1"
118
118
  source = { editable = "." }
119
119
 
120
120
  [package.optional-dependencies]
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